Add Go CLI to OpenWhisk

Add Go CLI source code to OpenWhisk while leave Python CLI functionality intact

there are some IDE config files, it's needed to push them?
do you plan to move the work to ansible?

@lehoanganh, the plan is to first add the Go CLI in a way that it does not affect the existing CLI. That's what this pull request accomplishes. See #238 for the Ansible work.

@dubeejw Like @lehoanganh said please update top level .gitignore
to ignore all the .idea/ files in this PR

@csantanapr, @rabbah, @markusthoemmes, @psuter, anyone opposed to this pull request being merged?

Wait for two thumbs up please.

Once this is checked in, can we create a new jenkins build to test it easily?

Can we please add this at the end of tools/build/scanCode.py and make sure it's enforced:
("*.go",       [ has_block_copyright, line_checks([ no_tabs, no_trailing_spaces, eol_at_eof ]) ])

(...and adapt if necessary, e.g. currently the license header uses a slightly different format than the Java/Scala one.)

@sjfink, this pull request is just for the Go CLI source code, it does not modify the build process in anyway as we want to get some source code in ASAP. However, I have another pull request open just for the purpose of running the Go CLI against all the automation in the TravisCI build. I am currently working on getting the Jenkins builds to pass using the Go CLI.

I sat with James I did a review, here are my findings.
Things to fix in the PR to merge it in:
Add Readme.md to go-cli/README.md
Remove "BlueMix" from go-cli/go-whisk-cli/Godeps
Delete go-cli/go-whisk-cli/notes.md
Remove everything except Godeps/_worspace from go-cli/.gitignore
Add to the README.md the use of the env variable WSK_CLI_DEBUG
Move properties to config.xml

Action items outside this PR:

look into depenencies versions we are currently using (go-whiks-cli/Godeps/Godeps.json)

look into GoVersion declare (1.5)go-whiks-cli/Godeps/Godeps.json)

wsk property get doesn't return info like python cli, need to pass --all

wsk cli apihost is hardcoded to (openwhisk.ng.bluemix.net), and it should be set to the value of edge.host from whisk.properties (i.e. edge.host=<IP_ADDRESS>)

the order of the properties don't mathc the python cli output with wsk property get

Positional parameters are not documented like python cli
wsk action create   [flags]
the should be like this or similar: human description for the paramters
positional arguments:
name                  the name of the action
artifact              artifact (e.g., file name) containing action
definition

Need to print a new line after ok result when creating a new action
$ ./wsk action create myaction myaction.js
ok: created action myactionvagrant@vagrant-ubuntu-trusty-64:~/openwhisk/bin/go-cli/linux/amd64$

can't pass numbers as parameters
./wsk -v action invoke myaction --blocking --result -p foo [1,2,3]
They get pass as string array instead of number array
Req Body
{{"foo":["1","2","3"]}
}

In the python CLI it get's pass as numbers
Body sent:
{"foo": [1, 2, 3]}
In python to pass strings you need to escape the quotes
./wsk -v action invoke myaction --blocking --result -p foo ["1","2","3"]
Body sent:
{"foo": ["1", "2", "3"]}
Tips to improve later:

make env variables to only build one binary making dev cycle faster
look into implementing a watch/make task to automatically compile on source code change
upgrade version of from 1.6 to 1.7, 1.7 is GA
implement autocomplete for CLI ( we have recommendations when typos, but autocomplete will be also good to have)s

@psuter, @csantanapr, I think I got all of your suggested changes.

@dubeejw Could you open issues for the work items I list in section 2 (2. Action items outside this PR:) in my comment above https://github.com/openwhisk/openwhisk/pull/604#issuecomment-224987914
currently trying out your recent changes

I did a license check on the dependencies, and only one raises a concern: - http://github.com/go-yaml/yaml/tree/v2 the license is LGPLv3
@rabbah @dubeejw Should we resolve this before we merge this code in?

http://github.com/mattn/go-isatty

MIT

http://github.com/fatih/color

MIT

http://github.com/mattn/go-colorable

MIT

http://github.com/mitchellh/go-homedir

MIT

http://github.com/google/go-querystring/

BSD-style

http://github.com/hokaccha/go-prettyjson

MIT

http://github.com/spf13/pflag

BSD-style

http://github.com/spf13/cobra

Apache 2.0

http://github.com/spf13/viper

MIT

http://github.com/inconshreveable/mousetrap

Apache 2.0

http://github.com/cpuguy83/go-md2man

MIT

http://github.com/stretchr/testify/

MIT

http://github.com/fsnotify/fsnotify

MIT

http://github.com/mitchellh/mapstructure

MIT

http://github.com/spf13/cast

MIT

http://github.com/spf13/jwalterweatherman

MIT

http://github.com/BurntSushi/toml

DO WHAT THE F*** YOU WANT TO PUBLIC LICENSE

http://github.com/hashicorp/hcl

Mozilla Public License, version 2.0

http://github.com/magiconair/properties

MIT

http://github.com/go-check/check/tree/v1

MIT

http://github.com/go-yaml/yaml/tree/v2

LGPLv3

http://github.com/xordataexchange/crypt/

MIT

http://github.com/russross/blackfriday

Simplified BSD

http://github.com/stretchr/objx

MIT

http://github.com/davecgh/go-spew/

MIT

http://github.com/pmezard/go-difflib/

MIT

http://github.com/ernesto-jimenez/gogen/

MIT

http://github.com/coreos/go-etcd/

Apache 2.0

http://github.com/armon/consul-api

Mozilla Public License, version 2.0

http://github.com/shurcooL/sanitized_anchor_name

MIT

http://github.com/ugorji/go/

MIT

I think is safe to take the yaml (Go) as dependency, they have an exception in their  yaml (Go) License

As a special exception to the GNU Lesser General Public License version 3
("LGPL3"), the copyright holders of this Library give you permission to
convey to a third party a Combined Work that links statically or dynamically
to this Library without providing any Minimal Corresponding Source or
Minimal Application Code as set out in 4d or providing the installation
information set out in section 4e,...

I give a 👍 to merge this in.
I added new TODO in my comment above https://github.com/openwhisk/openwhisk/pull/604#issuecomment-224987914:

Pinned the versions of the dependencies, we should not have a dependency again the head/master of the git repo, relying on their repos to be available, and assume they don't do something that will break our CLI is a recipe for disaster. We can always update and refresh the dependency on a regular cadence.

I expect the code will be improved further on subsequent iterations - in the interest of expedience to get to the next step 👍.

rebase and merged bce6eb86a3cde3ab12354ea158a0ce1708ff993a


git resource silently fails to sync or checkout when directory already exists

Description
The git resource's :sync action does nothing and does not fail if the target directory already exists and is not a git repo.
Chef Version
14.1.2
Platform Version
I've reproduced this in Ubuntu & macOS. After looking at the implementation, this should reproduce anywhere the git resource is usable.
Replication Case
I generated a cookbook with a default recipe that looked like this
git 'test-repo' do
  repository 'https://github.com/brownmike/test-repo.git'
  revision 'master'
  action :sync
end

I ran kitchen converge then kitchen login to verify /test-repo matched what was in my remote. I then rm -rf /test-repo/.git and added a new file to the repo on the remote. On the next kitchen converge the output implied nothing was wrong.
Client Output

       Starting Chef Client, version 14.1.12
       resolving cookbooks for run list: ["gitissues::default"]
       Synchronizing Cookbooks:
         - gitissues (0.1.0)
       Installing Cookbook Gems:
       Compiling Cookbooks...
       Converging 1 resources
       Recipe: gitissues::default
         * git[test-repo] action sync (up to date)

       Running handlers:
       Running handlers complete
       Chef Client finished, 0/1 resources updated in 01 seconds
       Downloading files from <default-ubuntu-1604>
       Finished converging <default-ubuntu-1604> (0m4.62s).

Problematic Code
From lib/chef/provider/git.rb
In the action_sync method it first checks if we're dealing with an existing git repo. If we're not, we get redirected to the action_checkout method.
def action_sync
  if existing_git_clone?
    logger.trace "#{new_resource} current revision: #{current_resource.revision} target revision: #{target_revision}"
    unless current_revision_matches_target_revision?
      fetch_updates
      enable_submodules
      logger.info "#{new_resource} updated to revision #{target_revision}"
    end
    add_remotes
  else
    action_checkout
  end
end

In the action_checkout method if the target directory is not empty, we log a line about it but otherwise continue on normally.
def action_checkout
  if target_dir_non_existent_or_empty?
    clone
    if new_resource.enable_checkout
      checkout
    end
    enable_submodules
    add_remotes
  else
    logger.trace "#{new_resource} checkout destination #{cwd} already exists or is a non-empty directory"
  end
end

Potential Solutions

Explicitly fail when the target directory already exists
Overwrite pre-existing target directories and update the documentation to indicate this

that should fail.  probably include a force or overwrite option as well.


Security vulnerabilityCVE-2022-23540, CVE-2022-23539, CVE-2022-23541, CVE-2022-23529

The dependence jsonwebtoken-8.5.1 should be update to 9.0.0

Thanks for flagging this. We'll resolve this by https://github.com/slackapi/node-slack-sdk/pull/1575 Let me close this issue


Publishing loading indicator

should fix https://github.com/divio/django-cms/issues/5259
and speedup initialization a bit

👍

LGTM

Coverage decreased (-0.01%) to 88.042% when pulling 616144e99427aeb693fc28fa12635e5e599c0f6d on vxsx:feature/publishing-loading-indicator into 2e53fea374ecdb824bc4df18fbccdda874fa7347 on divio:develop.


Request credentials for an os-climate bucket

Requesting credentials for github user: Revanounet
Requesting credentials for the bucket: OS-Climate S3 buckets, OS-Climate S2 buckets, OS-Climate S1 buckets
Email address to send a credential download link<EMAIL_ADDRESS>Request checklist:

[X ] User can establish connection with the bucket
[ X] User can read files from the bucket
[ ] User can write files to the bucket

Hello,
Thank you for your interest in OS-Climate! Can you please let me know know what interests you about OS-Climate and what repos you would like to be a part of?
Best,
Jenn

@Revanounet Can you answer the question above?
I'm assuming you got access to the bucket through another channel, can you confirm?

Closing due to lack of response.


Error: open config.json: read-only file system Details: file(/Users/runner/work/SydneyQt/SydneyQt/config.go), line(185).

Getting this error. Any idea how I'd resolve this? Running on MacOS 14.1.1 M1 Pro

Need more investigation to resolve problems related to macOS as I do not have an Apple computer. In the meantime you may need to build it yourself referring to https://github.com/juzeon/SydneyQt#build

Need more investigation to resolve problems related to macOS as I do not have an Apple computer. In the meantime you may need to build it yourself referring to https://github.com/juzeon/SydneyQt#build

估计是将1.0的config.json放在了2.0的文件夹，直接打开有可能就会这样报错吧。我猜的，不知道是不是。

Need more investigation to resolve problems related to macOS as I do not have an Apple computer. In the meantime you may need to build it yourself referring to https://github.com/juzeon/SydneyQt#build

估计是将1.0的config.json放在了2.0的文件夹，直接打开有可能就会这样报错吧。我猜的，不知道是不是。

Nar, seems something related to the Apple filesystem, and permission things.

@juzeon  我复现了下。
安装pkg会提示不支持打卡，然后去"系统和隐私“看已经阻止的，可以运行pkg运行。
然后就是安装。
安装好了之后会出现qt.app。
运行就会出现这里的readonly 提示。

I'm facing the same issue even after building it myself on an M1 Mac

I didn't build for myself but as mentioned above it would probably give no results. I'm willing to help with testing to resolve this bug. I'm using a 2020 Macbook Pro M1 16/512.

The installer creates folder /Users/runner but doesn’t set the permissions properly. Tried chown and taking ownership in the MacOS properties dialog but no dice. Will need to make changes to have the installer make use of /Library/ApplicationSupport

Fixed in 154892c50758ccc770282034234cab438dddc8dc

Fixed in 154892c50758ccc770282034234cab438dddc8dc

Hi participants. This issue should be fixed after v2.4.3. Please give it a try :)


cmd/go: can only run "go env" in certain places

I've historically checked out my Go development trees to $HOME/go. (where it naturally falls if you do git clone https://go.googlesource.com/go without an additional argument)
That habit predates the new automatic GOPATH value of $HOME/go.
But that led to this surprising behavior on a new machine I was benchmarking:
In $HOME/go ...
[ec2-user@ip-172-31-7-89 go]$ pwd
/home/ec2-user/go
[ec2-user@ip-172-31-7-89 go]$ git remote -v
origin	https://go.googlesource.com/go (fetch)
origin	https://go.googlesource.com/go (push)

Here's $HOME/go/bin/go's  version command showing that I just built Go...
[ec2-user@ip-172-31-7-89 go]$ ./bin/go version
go version devel +198f0452b0 Thu Nov 7 02:33:31 2019 +0000 linux/arm64

And can run go env from $HOME/go too....
[ec2-user@ip-172-31-7-89 go]$ ./bin/go env
GO111MODULE=""
GOARCH="arm64"
GOBIN=""
GOCACHE="/home/ec2-user/.cache/go-build"
GOENV="/home/ec2-user/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH=""
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/ec2-user/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/ec2-user/go/pkg/tool/linux_arm64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build676408819=/tmp/go-build -gno-record-gcc-switches"

But if I cd down into src (which contains a go.mod file), I can't use the same go binary anymore to run go env (or run go tool dist test, etc):
[ec2-user@ip-172-31-7-89 go]$ cd src/
[ec2-user@ip-172-31-7-89 src]$ ../bin/go env
missing $GOPATH
[ec2-user@ip-172-31-7-89 src]$ ../bin/go tool dist test
2019/11/07 04:26:01 Error running go env CGO_ENABLED: exit status 1

Is this working as intended?
Can it be made more helpful if I'm holding it wrong?
/cc @bcmills

Duplicate of #34628


Add logging options

give the option to log to a file, log to the database, or use an external logging platform
options: https://www.loggly.com/ OR https://papertrailapp.com/
goes hand-in-hand with #68 and #69

working on this with https://github.com/Richardson-Media-House/Kirbi/issues/69
might not need external logging just yet. throwing back in the backlog


Load Correct Scene and Fix Sound on Mobile

You can also load the .npy for your control signal with this utility library:
https://github.com/aplbrain/npyjs/blob/master/index.js

Amazing, just landed on npyjs myself! Let's see how easy this is.


Wrap notifications to pin at top

:nut_and_bolt: Description: What code changed, and why?
This branch rebuilds the notification component out of stencil and into automate as an angular component.  Using an angular component allowed me to animate it as well.
The ribbons retain their same look, feel, and containment, but now they animate in and out of the page.  There is also a small UX patch that sticks them to the top of their respective window when scrolling.
:chains: Related Resources
:+1: Definition of Done
notifications for things like "new api token created" are visible even when the user is deep down the list.
tests are added that test against behavior.
:athletic_shoe: How to Build and Test the Change
build components/automate-ui-devproxy
make serve
visit various pieces of automate that have the ability to cause a notification
example:
visit: https://a2-dev.test/settings/projects
create several projects so that you have a decent list
scroll down deep - delete a project - view the notification stuck on top of the scrollable window
:white_check_mark: Checklist

[ ] I have read the CONTRIBUTING document.
[ ] Tests added/updated?
[ ] Docs added/updated?
[ ] All commits have been signed-off for the Developer Certification of Origin.

:camera: Screenshots, if applicable

@susanev - Figured I'd pause here til you have a look.  The animations are super duper easy to change now so can switch up or remove or do whatever

weird - my updates in the explanation about the PR got reverted...fixing now

@susanev We can really do any kind of animation you'd like now!  I'll put something like you're talking about together and then we can link up and fine tune it.

if a second success notification happens before the first one has dismissed, could we dismiss the first one then?

I'll make a second ticket for this.  While working on this ticket I noticed that we have different ways of showing notifications across automate.
There is a main notification center, which retains a spot in the UI across all of automate.  Then in several other files, we have notification areas that and are only present in their respective files, and the notification is triggered in that file and not through the global notification center.  I think the latter files should be rewired first so that all are using the the global notification center.  It looks to me like the latter was how Automate did things in the past, and they still need to be updated.

@susan - altered the animation, but please feel free to pick apart, change, whatever you want, all of it is pretty easily configurable.

Applying the do not merge tag so that UX can review.  There's no rush to get this in.


Strings do not have known keys associated with their indexes

TypeScript Version:  Nightly
Code
{
    const t: 't' = ("test" as const)[0];
}
{
    const t: 't' = ([ 't', 'e', 's', 't' ] as const)[0];
}

Expected behavior:
TypeScript associated keys with values for string literals.
Actual behavior:
TypeScript gives all indexes into a string the type string.
TypeScript allows out of bounds indexes into string literals.
Playground Link: https://www.typescriptlang.org/play?esModuleInterop=false&experimentalDecorators=false&emitDecoratorMetadata=false&ts=4.1.0-insiders.20201010#code/PTAEBcFMGdwLlAIirRBuCBPADpAJqAIbSgDukANhUSdgPbTQCWARhZKEwHagAqAygBpQAYzoBbbOygVMnceICu4Qmw6EuBANZc6pHoXCiJ2JuwhNxkAFBiusCDCMBeJCnCIax++DTXrIKDQABZ0ihQELByQAI6KTABuhOxcRuB0oAAUAE6QhHh0XLKgANqgAOTg5cLlkNUV0PWV5aAAugCU-nYO8BVVoK7uJQAMrX62hdB07AB0FHQA5pkuzq7N7RiBAGbJ0JDCduDZhNly6WTBhnz8oFEUTJAJMF2TRiKX2Qiw2dwLA46wEoAVjGL3s00gc0WyxwkDoW1EHwGqyQ31+iA2oG2u323iOJzOGVIlyMAlulAeT2g-gA3tZQAzvD0nP8ys0anUao0av1Wl5ur5-IymWkEM1-kNRn4AL5AA
Related Issues: https://github.com/microsoft/TypeScript/pull/19846
Strings, especially string literals, ought to be comparable to an array of characters when indexed.
When accessing a string "foo" the type should be comparable to indexing readonly [ 'f', 'o', 'o' ], especially considering that JavaScript strings are completely immutable.
I doubt anyone would be against the lengths being known too, ex: const length: 4 = "test".length;

I had an old PR for this: https://github.com/microsoft/TypeScript/pull/19846

I had an old PR for this: #19846

Oh, must have not searched well enough, adding that to the "related issues," except now this looks like a duplicate :/

When would this be useful?

When would this be useful?

Well, this can be broken up into two distinct parts:
Safety:
it's just as safe as using as const on an array of characters. How can you go wrong there? Strings are immutable, so they might as well always be as const. Knowing the exact characters at each index can only help. I'm not sure what the uses will be, but they should fall in line exactly with that of the contrasted equivalent: character arrays. It's a pretty small niche, but it's something. I was personally working on a data compression/decompression algorithm, whether I should have or not, I indexed into a "known" string, and expected "known" results, at worst, a union of the characters in the string, but instead, I was presented with string.
Bug:
All numerical accesses currently give string. There was a recent configuration flag offered for more pessimistic indexing on arrays. I am not suggesting that we make that the default here at all, but safety, as we all know, is pretty important. The problem is that all indexes yield string, whether or not those keys are "safe," or "unsafe" keys. This is even more problematic when you view strings not as character arrays, but instead as character tuples, which is what I am suggesting. It's blatantly obvious that something like "foo"[-1] is just plain wrong, and should never end up in anyone's codebase. Hopefully, TS helps prevent that from happening in the future.
Now, thinking about this, TSC might take quite a hit in performance. Every single string literal being treated as an as const. That could end poorly.

Recently saw a simple JS loading symbol created by  indexed into a string, but it went out of bounds and was getting errors, eventually I had caught what was wrong and simplified it, but it would've been great if TSC spotted it instead:
const delay = seconds => new Promise(
	resolve => {
		setTimeout(resolve, 1000 * seconds);
	}
);

// textNode: Text
// const limit: number;

for ( let iterator = 0; iterator < limit; ++iterator ) {
	await delay(1000);

	textNode.textContent = "|/-\\"[ iterator & 3 ];
}

When would this be useful?

A question on Stack Overflow for which this property would be the most obvious and clearest solution: extracting the first character of a string literal. Can be done with S extends `${infer H}${string}` ? H : never, but this is a highly non-obvious approach, much more complicated, and not well documented (the PR explains this behavior but it is not in the docs). Moreover, reaching characters that aren’t first gets quite annoying quite quickly: either you have to hard-code each index using `${string}${string}${infer Char2}${string}` for [2], or you have to use something like
type NthCharOf<S extends string, N extends number> =
  string extends S ? string :
  number extends S ? string :
  S extends `${infer H}${infer T}`
    ? [N, 0] extends [0, N]
      ? H
      : NthCharOf<T, Decrement<N>>
    : never;

type Decrement<N extends number> =
  TupleOfLengthN<N> extends [unknown, ...infer T] ? T['length'] : number;

type TupleOfLengthN<N extends number, T extends unknown[] = []> =
  [N, T['length']] extends [T['length'], N] ? T :
  TupleOfLengthN<N, [...N, unknown]>;


Include Files

Is it possible to include a single file to a project?
I created a project, containing some of my config files like .bash_profile, or httpd.conf but I don't want to include all files in a folder.
Maybe something like this:
{
    "folders":
    [
        {
            "name": "Project Folder X",
            "path": "some/path/to/project/x"
        },
        {
            "name": "Project Folder Y",
            "path": "some/path/to/project/y"
        }
    ],
    "files":
    [
        {
            "name": "File A",
            "path": "some/path/to/file/a"
        }
    ]
}

I don't think that it is possible at least under the current version of Sublime. But there is a workaround, you could create a new directory and symlink all files of interested there.

Ok, thx.


Remove comparator on mobile fair collections

Fixes issue where fair dates are occasionally displayed incorrectly on mobile but not on desktop. The root issue is a comparator on the mobile fairs collection that sorts fairs based on banner image size, overriding any other sort order passed to /fairs. Incidentally fixes a related issue where fairs in the "Previous Fairs" tab on mobile might show in a jumbled order.

Removes comparator in mobile fairs collection that sorts
Explicitly sorts fairs in chronological order based on start_at
Formats fair dates using formatDates instead of subtitle
Includes update to yarn.lock setting CoffeeScript version

          1 Warning

:warning:
Please assign someone to your PR

  Generated by :no_entry_sign: Danger

Alright, going to merge this. We can follow up with more improvements!

Thanks for reviewing @starsirius!


Include Jekyll version information

This can sometimes help with debugging, and is currently done on both the official Jekyll site and the Jekyll site template
The other option would be to include the version number of this plugin. :sheep:

Makes sense. Thanks @pathawks! :camel:


[Beta] Regression in Tiny Soccer Cars - soccer ball vibrates rapidly

In beta only: in the game Tiny Soccer Cars, the soccer ball rapidly vibrates up and down. This does not occur in the latest release.
Game:
https://arcade.makecode.com/32925-95037-89550-06105
Visual:

(vibration is too rapid to capture in a gif)

This was a game engine breaking change we made that we don't intend to walk back, only affects a limited number of old games. @jwunderl gave the author instructions on how to fix it.


4th Example is not correct.

On the 4th Example, the Which string is incorrect.
Which seems to have NO spaces in it  (Which := 'This';), however description shows that "f T, h, s, i, or space is the first character in String, the function deletes them."
For this to happen, Which must be 'This ' (with a space on it).

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: ebe0cff4-3147-eaf7-5b4e-f4bd7fb95a96
Version Independent ID: b063389a-095d-3253-1f0a-92982f58c309
Content: DELCHR Function (Code, Text) - Dynamics NAV
Content Source: dynamics-nav/DELCHR-Function--Code--Text-.md
Product: dynamics-nav-2018
GitHub Login: @jswymer

Hello, thanks for your feedback. That is correct and it will be fixed with the next doc refresh.


fix docstring of HeytingAlgebra.himp_bot

fix docstring of HeytingAlgebra.himp_bot

Thanks!
bors d+

@YaelDillies It's already delegated.

bors merge


Feat launch type

We also need to change the template here: https://github.com/Flux7Labs/ecs-workshop-lz/blob/master/cf-templates/service/service-manager.yml#L136  to invoke the script to create/update service catalog product

 ECS-Workshop: Create Service Catalog products for microservice deployment pipeline

 ECS-Workshop: Create Service Catalog products for microservice deployment pipeline


kubectl describe should be using resource.Builder so you can describe multiple things

For debugging it would be useful to be able to
$ kubectl describe pods --all

or
$ kubectl describe pods,services -s mylabel=value

Just needs to support resource.Builder

This has been fixed I believe, @kargakis right?

Should be fixed by #7467, but the fixes/closes notes weren't put in the PR description.


Issue an error on push/pop call on fixed-length lists

Purpose
Push/Pop functions do not natively support annotation or a way to declare that they will change the length of the list. This is not allowed in fixed-length arrays.
Fixes #18662
Approach
push and pop names are hardcoded and checked against invocations on fixed-length arrays and tuples without rest parameters to identify the invalid calls on compile time.
Samples
Code
int[1] fixedLengthArray = [1];
fixedLengthArray.push(4);

Output
error: .::filename.bal:<line>:<column>: cannot call 'push' on fixed length array 'int[1]'

Remarks

Some other functions like setLength and removeAll also eligible for an compile-time check but spec does not specifically request a compile-time check.
Spec issue # 345 may provide a way to implement this elegantly in the future.

Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[x] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Codecov Report

Merging #22318 into master will not change coverage by %.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #22318   +/-   ##
=======================================
  Coverage   14.59%   14.59%
=======================================
  Files          51       51
  Lines        1411     1411
  Branches      219      219
=======================================
  Hits          206      206
  Misses       1189     1189
  Partials       16       16

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 87ade9f...5155196. Read the comment docs.

Need to incorporate discussion: https://github.com/ballerina-platform/ballerina-spec/issues/472

Do we have positive/negative runtime tests for modification attempts on unions with combinations of arrays, tuples, and arrays and tuples, where at least one member has a fixed length?
e.g.,
int[4]|int[]

[string, string...]|[string, int]

int[4]|[string...] // also is the resultant type only `string` here?
int[]|[string, boolean]

And also tests for shift() on non-fixed length tuple that may or may not succeed.
e.g.,
public function main() {
    // Case I
    [int, int...] i = [0, 1];
    int x = i.shift();

    // Case II
    [int, int...] i = [0];
    int x = i.shift();
}

I have added test cases and created issues.

I have added a few test cases by https://github.com/ballerina-platform/ballerina-lang/pull/22318/commits/c2cb9ab44b3c92610eb1049865be003fec253a28. I also fixed the logic by https://github.com/ballerina-platform/ballerina-lang/pull/22318/commits/3daa2b17c60d926b53c07da535dd7bed59c16228. Created issues for existing problems.
https://github.com/ballerina-platform/ballerina-lang/issues/22771 : Union of same basic types should resolve to valid lang.lib method at compile time
This blocks
int[4]|[string...] // also is the resultant type only `string` here?
int[]|[string, boolean]

https://github.com/ballerina-platform/ballerina-lang/issues/22765: Bad Sad Error for shift operation on same type union of lists
This blocks
int[4]|int[]

https://github.com/ballerina-platform/ballerina-lang/issues/22769: Tuple with same basic type and rest parameter should allow shift in some scenarios
This issue blocks case I and case II.


Dynamic tag not updated after scheduled_auto_updates request

Summary:
This issue reports that dynamic tags are not being updated after the scheduled_auto_updates function is called, even though the next_run parameter has passed. The potential cause might be related to the scheduling_status parameter not transitioning to the expected READY state.
Details:
We expect that creating a Dynamic Tag Table configuration with the Refresh Mode set to AUTO and then calling scheduled_auto_updates would update the tags based on the configuration. However, no tag updates were implemented.
The reason for this is that the scheduling_status parameter does not transition to the expected READY state.
The reason for this is as follows.
Looking at the source code, it says that the scheduling_status parameter must be READY as a condition for updating.
https://github.com/GoogleCloudPlatform/datacatalog-tag-engine/blob/b64520a4780e66e72215efd5cf530e3f87b61059/TagEngineStoreHandler.py#L1340-L1349
However, looking at the source code, if I create a Dynamic Tag Table configuration with Refresh Mode set to AUTO, the scheduling_status is set to ACTIVE. In fact, the tags were not updated when I ran the scheduled_auto_updates function.
https://github.com/GoogleCloudPlatform/datacatalog-tag-engine/blob/b64520a4780e66e72215efd5cf530e3f87b61059/TagEngineStoreHandler.py#L495-L499
If there are additional steps required for the update to happen with Refresh Mode set to AUTO, we would appreciate clarification.
Call to action:

Please advise if there are additional steps required for the update to occur with Refresh Mode set to AUTO.
If this is a bug, please advise on the next steps or potential workarounds.

Thanks for letting me know, this sounds like a bug. Out of curiosity, how were you calling /scheduled_auto_updates? Was it from Cloud Scheduler?

With the environment variables set, I used the following command to call /scheduled_auto_updates. I didn't use Cloud Scheduler, because I considered that if a direct call with the curl command doesn't work, it won't work with cloud scheduler.
curl -i -X POST $TAG_ENGINE_URL/scheduled_auto_updates \
  -H "Authorization: Bearer $IAM_TOKEN" \
  -d @examples/configs/dynamic_table/dynamic_table_auto.json

@HarukaIzumisawa apologies for the long delay. This issue has been fixed in v2.2.9
Please note that you need to call the scheduled_auto_updates method as follows:
export IAM_TOKEN=$(gcloud auth print-identity-token)

curl -X POST $TAG_ENGINE_URL/scheduled_auto_updates \
  -H "Authorization: Bearer $IAM_TOKEN"

The expected output looks similar to:
curl -X POST $TAG_ENGINE_URL/scheduled_auto_updates  \
  -H "Authorization: Bearer $IAM_TOKEN"
{"job_ids":"[\"20380bf6340d11ef8ea942004e494300\"]","success":true}

This means that Tag Engine found one config that needed to be run and created a job for it.
When no ready configs are found, the expected output looks like this instead:
curl -X POST $TAG_ENGINE_URL/scheduled_auto_updates   \
  -H "Authorization: Bearer $IAM_TOKEN"
{"job_ids":"[]","success":true}


[BUG] ast_test.py::test_X[(String, True)][DATAGEN_SEED=1700205785] failed assertion in spark 332 + 340

Describe the bug
failed nightly build at commit 30c3df35ab7e87f71ecd84789529d25d9a289848, rapids_integration-scala213-dev-github, build ID: 15
failures list
[2023-11-17T08:50:24.100Z] FAILED ../../src/main/python/ast_test.py::test_eq[(String, True)][DATAGEN_SEED=1700205785] - AssertionError: GPU and CPU boolean values are different at [0, '(a = CAST(ÍDøñ\x06A7\x92DèY¥~\x88\x95~DP.Ù\x05×\x15p\x07Çw¨çh AS STRING))']
[2023-11-17T08:50:24.100Z] FAILED ../../src/main/python/ast_test.py::test_ne[(String, True)][DATAGEN_SEED=1700205785] - AssertionError: GPU and CPU boolean values are different at [0, '(NOT (a = CAST(ÍDøñ\x06A7\x92DèY¥~\x88\x95~DP.Ù\x05×\x15p\x07Çw¨çh AS STRING)))']
[2023-11-17T08:50:24.100Z] FAILED ../../src/main/python/ast_test.py::test_lt[(String, True)][DATAGEN_SEED=1700205785] - AssertionError: GPU and CPU boolean values are different at [1, '(a < CAST(ÍDøñ\x06A7\x92DèY¥~\x88\x95~DP.Ù\x05×\x15p\x07Çw¨çh AS STRING))']
[2023-11-17T08:50:24.100Z] FAILED ../../src/main/python/ast_test.py::test_lte[(String, True)][DATAGEN_SEED_OVERRIDE=0] - AssertionError: GPU and CPU boolean values are different at [0, '(a <= CAST(øË\x82âæb÷(´úBH^:\t]/4kª\x94Uãç\x05\x82Â\x08L\xad AS STRING))']
[2023-11-17T08:50:24.100Z] FAILED ../../src/main/python/ast_test.py::test_gt[(String, True)][DATAGEN_SEED=1700205785, INJECT_OOM] - AssertionError: GPU and CPU boolean values are different at [0, '(a > CAST(øË\x82âæb÷(´úBH^:\t]/4kª\x94Uãç\x05\x82Â\x08L\xad AS STRING))']
[2023-11-17T08:50:24.100Z] FAILED ../../src/main/python/ast_test.py::test_gte[(String, True)][DATAGEN_SEED=1700205785] - AssertionError: GPU and CPU boolean values are different at [0, '(CAST(0\x8dÁ|by#Æa/H&\x86s#§q\x1a\x813(v7ëÜÙèz\x16\x14 AS STRING) >= b)']

data_descr = (String, True)

    @pytest.mark.parametrize('data_descr', ast_comparable_descrs, ids=idfn)
    def test_eq(data_descr):
        (s1, s2) = with_cpu_session(lambda spark: gen_scalars(data_descr[0], 2))
>       assert_binary_ast(data_descr,
            lambda df: df.select(
                f.col('a') == s1,
                s2 == f.col('b'),
                f.col('a') == f.col('b')))

../../src/main/python/ast_test.py:237:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../src/main/python/ast_test.py:70: in assert_binary_ast
    assert_gpu_ast(is_supported, lambda spark: func(binary_op_df(spark, data_gen)), conf=conf)
../../src/main/python/ast_test.py:58: in assert_gpu_ast
    assert_cpu_and_gpu_are_equal_collect_with_capture(
../../src/main/python/asserts.py:402: in assert_cpu_and_gpu_are_equal_collect_with_capture
    assert_equal(from_cpu, from_gpu)
../../src/main/python/asserts.py:107: in assert_equal
    _assert_equal(cpu, gpu, float_check=get_float_check(), path=[])
../../src/main/python/asserts.py:43: in _assert_equal
    _assert_equal(cpu[index], gpu[index], float_check, path + [index])
../../src/main/python/asserts.py:36: in _assert_equal
    _assert_equal(cpu[field], gpu[field], float_check, path + [field])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

cpu = True, gpu = False
float_check = <function get_float_check.<locals>.<lambda> at 0x7f30633245e0>
path = [0, '(a = CAST(ÍDøñ\x06A7\x92DèY¥~\x88\x95~DP.Ù\x05×\x15p\x07Çw¨çh AS STRING))']

    def _assert_equal(cpu, gpu, float_check, path):
        t = type(cpu)
        if (t is Row):
            assert len(cpu) == len(gpu), "CPU and GPU row have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))
            if hasattr(cpu, "__fields__") and hasattr(gpu, "__fields__"):
                assert cpu.__fields__ == gpu.__fields__, "CPU and GPU row have different fields at {} CPU: {} GPU: {}".format(path, cpu.__fields__, gpu.__fields__)
                for field in cpu.__fields__:
                    _assert_equal(cpu[field], gpu[field], float_check, path + [field])
            else:
                for index in range(len(cpu)):
                    _assert_equal(cpu[index], gpu[index], float_check, path + [index])
        elif (t is list):
            assert len(cpu) == len(gpu), "CPU and GPU list have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))
            for index in range(len(cpu)):
                _assert_equal(cpu[index], gpu[index], float_check, path + [index])
        elif (t is tuple):
            assert len(cpu) == len(gpu), "CPU and GPU list have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))
            for index in range(len(cpu)):
                _assert_equal(cpu[index], gpu[index], float_check, path + [index])
        elif (t is pytypes.GeneratorType):
            index = 0
            # generator has no zip :( so we have to do this the hard way
            done = False
            while not done:
                sub_cpu = None
                sub_gpu = None
                try:
                    sub_cpu = next(cpu)
                except StopIteration:
                    done = True

                try:
                    sub_gpu = next(gpu)
                except StopIteration:
                    done = True

                if done:
                    assert sub_cpu == sub_gpu and sub_cpu == None, "CPU and GPU generators have different lengths at {}".format(path)
                else:
                    _assert_equal(sub_cpu, sub_gpu, float_check, path + [index])

                index = index + 1
        elif (t is dict):
            # The order of key/values is not guaranteed in python dicts, nor are they guaranteed by Spark
            # so sort the items to do our best with ignoring the order of dicts
            cpu_items = list(cpu.items()).sort(key=_RowCmp)
            gpu_items = list(gpu.items()).sort(key=_RowCmp)
            _assert_equal(cpu_items, gpu_items, float_check, path + ["map"])
        elif (t is int):
            assert cpu == gpu, "GPU and CPU int values are different at {}".format(path)
        elif (t is float):
            if (math.isnan(cpu)):
                assert math.isnan(gpu), "GPU and CPU float values are different at {}".format(path)
            else:
                assert float_check(cpu, gpu), "GPU and CPU float values are different {}".format(path)
        elif isinstance(cpu, str):
            assert cpu == gpu, "GPU and CPU string values are different at {}".format(path)
        elif isinstance(cpu, datetime):
            assert cpu == gpu, "GPU and CPU timestamp values are different at {}".format(path)
        elif isinstance(cpu, date):
            assert cpu == gpu, "GPU and CPU date values are different at {}".format(path)
        elif isinstance(cpu, bool):
>           assert cpu == gpu, "GPU and CPU boolean values are different at {}".format(path)
E           AssertionError: GPU and CPU boolean values are different at [0, '(a = CAST(ÍDøñ\x06A7\x92DèY¥~\x88\x95~DP.Ù\x05×\x15p\x07Çw¨çh AS STRING))']

../../src/main/python/asserts.py:91: AssertionError

Steps/Code to reproduce bug
Please provide a list of steps or a code sample to reproduce the issue.
Avoid posting private or sensitive data.
Expected behavior
A clear and concise description of what you expected to happen.
Environment details (please complete the following information)

Environment location: [Standalone, YARN, Kubernetes, Cloud(specify cloud provider)]
Spark configuration settings related to the issue

Additional context
Add any other context about the problem here.

there could be more ENVs having the same issue after tonight's runs.

related fix at https://github.com/NVIDIA/spark-rapids/pull/9780

#9780 is specific to floating point and will not fix this.  I xfailed the AST string tests in #9795.
I am unable to reproduce the AST string test failures on my desktop, and it's not failing in premerge (which explains how the change was able to commit).

#9780 is specific to floating point and will not fix this. I xfailed the AST string tests in #9795.
I am unable to reproduce the AST string test failures on my desktop, and it's not failing in premerge (which explains how the change was able to commit).

I just got a stable repro by setting 'LC_ALL=C' for testing locally,
for our test image the default is not UTF8 (we only enable UTF8 for specific case)
https://github.com/NVIDIA/spark-rapids/blob/branch-23.12/jenkins/Dockerfile-blossom.integration.ubuntu#L76

#9780 is specific to floating point and will not fix this. I xfailed the AST string tests in #9795.
I am unable to reproduce the AST string test failures on my desktop, and it's not failing in premerge (which explains how the change was able to commit).

I just got a stable repro by setting LC_ALL=C for testing locally, for the locale default in cuda image is not UTF8 (we only enable UTF8 for specific case) https://github.com/NVIDIA/spark-rapids/blob/branch-23.12/jenkins/Dockerfile-blossom.integration.ubuntu#L76

@pxLi I am thinking whether we can change pre-merge LC_ALL=C as well. This can help expose such problems. Thoughts?

From https://github.com/NVIDIA/spark-rapids/blob/branch-23.12/jenkins/spark-premerge-build.sh#L77C13-L77C16, it will run with UTF8 environment variable. So that may be the problem why we can see that issue only in nightly.


Add CRD manifests for consumers scheduling and scaling

Part of #1537
Proposed Changes

Add CRDs manifests for consumers scheduling and scaling
(No need to have any open API schema for this CRD)

Release Note

None

Docs

None

/test pull-knative-sandbox-eventing-kafka-broker-integration-tests


added Alzheimers Detection

Fixes #244

@Atharv714 Kindly add the labels. It's not being reflected in the leaderboard. Thanks.


Published metadata doesn't show up until refresh

I created some metadata for a layer (Longline Fishing Effort in the FSM project) and published the layers. Returning to the project to view it in the map viewer, the metadata was blank:

Refreshing the page fixed the problem:

Note - the Table of Contents does not update at all after a publish until the browser is refreshed.


windows  is python and not python3

To Reproduce
Steps to reproduce the behaviour:

just installed  Source-all  v 1.12.8  on windows 11
setup-dev.bat  file is specifically made for Windows terminal users  yet it calls for python3 and not python
on  Windows installs, all python will be  simply python  and not "python3" which does not exist
only way I can get this  script to work is to manually  remove the "3" from all locations in the script.
this might be the real reason a lot of people are having issues getting Pinesam to run,  not the install of python on windows but that the setup-dev.bat  is calling for a  command that does not exists.

Issues with script are highlighted

Alias's can be made in  windows to point python3 names to python but making users do that it's a lot of extra work and confusing steps for windows users. also  if they don't do it certain way then it's not persistent, it's really easier to just call it Python and not python3 (since python3 does not exist in Windows).
see screenshot,  on Windows Python will be installed as simply "python"   the Terminal Powershell and also Command will not know what "python3"  is since this  command does not exist.

After  removing all the  "3"  from the setup-dev.bat  and running it again in Windows Powershell terminal, it's actually  correctly checks for python things now but still has a couple warnings and errors  ( a lot less after I removed all the "python3" references).

There might be a solution  for Windows and   access denied   to esbuild.exe  at the bottom of this page:
https://elixirforum.com/t/cant-execute-esbuild-permission-denied-on-windows-10/42271/8

For the Sourcemap  error message,  requesting to change to newer version in my Terminal output, I found this.  perhaps this could help if PineSAM switched to this one in the code?
https://www.npmjs.com/package/@jridgewell/sourcemap-codec

Closed as fixed with update  https://github.com/builder555/PineSAM/pull/128


Include version in error reports for easier triage

Now that lorri is on nixpkgs (https://github.com/NixOS/nixpkgs/pull/72889), people can download and run it from there and we may get bug reports this way.
To be able to pinpoint the version of lorri that had the bug, we should include a version in the error messages.
One way of setting a version would be to change Cargo.toml in the build process in the nixpkgs package declaration. I'm sure there are other ways too. And then we need to make sure that the version string is actually included in error messages.
Outcome:

From looking at an error message reported by users who got lorri from nixpkgs, we can easily infer which commit that version of lorri was built from.

There already is some infrastructure set up for version numbers:
$ git grep BUILD_REV_COUNT
build.rs:    println!("cargo:rerun-if-env-changed=BUILD_REV_COUNT");
build.rs:    let rev_count = env::var("BUILD_REV_COUNT")
build.rs:        .expect("BUILD_REV_COUNT not set, please reload nix-shell")
build.rs:        .expect("BUILD_REV_COUNT should be parsable as usize");
default.nix:      BUILD_REV_COUNT = src.revCount or 1;
shell.nix:  BUILD_REV_COUNT = 1;
shell.nix:    inherit BUILD_REV_COUNT RUN_TIME_CLOSURE;

At the top-level, BUILD_REV_COUNT for nixpkgs releases is set here: https://github.com/NixOS/nixpkgs/blob/7fafd45ad758fcb3d24b1da38039c4e73d5d8902/pkgs/tools/misc/lorri/default.nix#L37.
{ #...
  BUILD_REV_COUNT = src.revCount or 1;
}

Explanation: https://github.com/target/lorri/blob/c315a4357c0cea91be280fbe68042bc0a0367560/default.nix#L14-L19
The problem is that the nixpkgs default.nix uses fetchFromGitHub (https://github.com/NixOS/nixpkgs/blob/7fafd45ad758fcb3d24b1da38039c4e73d5d8902/pkgs/tools/misc/lorri/default.nix#L26), which internally uses fetchzip (https://github.com/NixOS/nixpkgs/blob/7fafd45ad758fcb3d24b1da38039c4e73d5d8902/pkgs/build-support/fetchgithub/default.nix#L14), which does not appear to set "revCount".
I see the following options:

Use fetchGit instead of fetchFromGitHub to get revCount
Patch fetchFromGitHub to set revCount
Use rev instead of revCount in the version string.

With
-  src = fetchFromGitHub {
-    owner = "target";
-    repo = pname;
+  src = builtins.fetchGit {
+    url = "https://github.com/target/lorri.git";
+    name = pname;
     # Run `eval $(nix-build -A lorri.updater)` after updating the revision!
     rev = "03f10395943449b1fc5026d3386ab8c94c520ee3";
-    sha256 = "0fcl79ndaziwd8d74mk1lsijz34p2inn64b4b4am3wsyk184brzq";
   };

I get
$ nix-build . -A lorri --show-trace
fatal: not a tree object: 03f10395943449b1fc5026d3386ab8c94c520ee3
error: while evaluating the attribute 'BUILD_REV_COUNT' of the derivation 'lorri-unstable-2019-10-30' at /home/leo/Code/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:191:11:
program 'git' failed with exit code 128

Even though the commit exists: https://github.com/target/lorri/commit/03f10395943449b1fc5026d3386ab8c94c520ee3

Option (C) won't work just like that either because the upgrade command assumes VERSION_BUILD_REV to be a number that can be compared with changelog entry versions.

https://github.com/NixOS/nixpkgs/pull/77198 uses another approach (D): now the updater script determines the rev count and patches the nix file.

Somewhat related: https://github.com/target/lorri/issues/219

What happened to this? I think we are asking people to submit lorri info output, which includes the version number.

I think this can be closed: released version now have MAJOR.MINOR in the lorri info output.


no autofill selecting dropdown in cellular component annotation

@djow2019 I noticed that as well, but when I tried it for a gene (can't remember which one) it remembered my choice as I went further along with the submit window.

Ah you are right. There should be a button that is displayed below your choice in green (that is not displaying)


'PQueueMod' only refers to a type, but is being used as a namespace here.

I cannot build on my Mac M1 machine using node v17.9.1 and 8.11.0 due to this error. I've just submitted a PR to fix it..
https://github.com/hwchase17/langchainjs/pull/673
node_modules/langchain/dist/util/async_caller.d.ts:30:22 - error TS2702: 'PQueueMod' only refers to a type, but is being used as a namespace here.
30     protected queue: PQueueMod.default;

@ashburnham LangChainJS only works with "node": ">=18".
Check out the package.json:
https://github.com/hwchase17/langchainjs/blob/main/package.json#L5

Resolved in #673 thanks @ashburnham for reporting


Document decision points and tradeoffs on AWS

This is mostly an investigation / documentation issue that came out of some customer PoCs.  AWS has a ton of surface area and decision points, and we should guide users through the decision points so that they can make the right decision.  Even experienced Kubernetes users are going to get fatigued with all the possible options the large cloud providers offer here, so a document like "we tried this and this is why we like it" would smooth things over greatly.
Some things specifically:

Storage and storage classes.  AWS has many volume types available -- which should the user use for each type of storage (pfs cache, object storage, postgres, etcd), and what are the tradeoffs?  For example, we recommend gp3 for etcd in 1.x, but that requires some modifications to EKS clusters in order to use.  We think it's worth it, but we should explain the procedure so that users aren't forced to see a PV that won't provision, and then debug it on their own.

RDS instance types.  We should benchmark various RDS types so we can make a recommendation for users based on the size of their workloads.

Load balancer recommendations.  EKS has many options here -- a fully-GRPC-aware ALB, or a simple TCP ELB.  We should try both and document the tradeoffs either way.

TLS certificate provisioning recommendations.  Depending on the selected load balancer, AWS might provision TLS, or it might be up to the user.  Different users will want different things here, but we should have a preferred solution.   (TLS on the pachd side and port-forwarding don't interact too well.  mTLS with an in-cluster CA is also untested, as far as I know.)

Suggestions around resource sizing.  What machine types are best?  What resources should pachd and the sidecars get?  What special machine features are necessary (GPUs, Local SSDs), etc.  Under what circumstances are burstable instance types acceptable?  How can one debug the impact of a sub-optimal instance type choice?

Suggestions around Kubernetes.  There are many vendors that offer AWS "self-hosted" clusters, and there is EKS.  We should identify which self-hosted versions we care about, and see if our suggestions and instructions apply to those or not.  We should suggest an EKS version, update strategy, etc.  Many users are seeing Kubernetes for the first time, and are building the cluster around Pachyderm.  And, some people use Kubernetes already, and Pachyderm will have to fit into that infrastructure.  We should make sure there is a comfortable path for both types of users.

What sort of IAM rules are necessary?  How are the credentials conveyed to pachd and workers?  How does Amazon IAM integrate with Pachyderm auth?

What sort of impacts are expected during cluster maintenance?  Is there a configuration that improves availability through cluster maintenance?

What tools should operators use to monitor Pachyderm?  Where should logs be sent?  How can you look at metrics?  What metrics do we have, and which are important to operators?

What kind of autoscaling works well?  Do we like the cluster node autoscaler?  Do we like vertical pod autoscaling?  (This is less specific to Amazon; VPA is available in all k8s clusters.)  Can we apply VPA to both pachd and user code, or one, or neither?

For context, we've changed the default back to GP2 to reduce friction here

FWIW, I also really like the idea of a recommended TLS setup

For 1 (Gp3) the chart default is now gp2 with a high disk size for required IOPS.


Is the library async

If there is a request that is taking time to finish, and another app doing another request, will the other request take long time to get response? I couldnt test so im asking

Yes, it can handle multiple requests at once. If I recall correctly every incoming request is given a dedicated thread.

Thx


[.Net][Issue]: How to communicate with multi-agent through API

Describe the issue
Viewing demos using console output
How should I obtain messages from multiple agents when using GroupAgent?
Is there an example, as well as the input to the console? If I want to use the interface for interaction, how can I implement it
Steps to reproduce
       var userProxyAgent = new UserProxyAgent(
             name: "user",
             humanInputMode: HumanInputMode.ALWAYS)
           .RegisterPrintMessage();

Does RegisterPrintMessage have methods such as events to retrieve messages
Screenshots and logs
No response
Additional Information
No response

Yes, RegisterPrintMessage does all the trick for getting reply from an agent and print it to console. It also streaming the output if the agent is an IStreamingAgent.
The code for RegisterPrintMessage is here

Yes, RegisterPrintMessage does all the trick for getting reply from an agent and print it to console. It also streaming the output if the agent is an IStreamingAgent.
The code for RegisterPrintMessage is here
Also, can you put a title in the issue, thanks!
This is not what I want. After testing the console, I hope to develop an API to interact with the user UI.
How should I correctly receive messages and pass them to the UI layer, and how should users send messages to the agent through the UI? I am currently using RegisterMiddleware to receive messages and display them to the UI, but I am not sure how users should send messages in the UserProxyAgent. I have a simple implementation now, but I don't think it's a good method

https://github.com/xuzeyu91/EasyAgent/blob/main/src/EasyAgent/Pages/Chat/Chat.razor.cs
This is my code. I am currently waiting in the RegisterMiddleware of the UserProxyAgent until the user enters text before continuing. This is not very good, and I hope there is a better way to handle it

@xuzeyu91 Thanks for your reply.
In your OnSendAsync function, you don't return the result until the group chat is end. So you need to collect user input in the middle of a group chat and that's where the waiting in the RegisterMiddleware comes from. My comment on this is it's not too bad because that's also what will happen in UserProxyAgent when it's waiting for input from console. Even if you wrap the blocking function in a nicer way, under the hood the intrinsic is still the same.
My suggestion here is to update your OnSendAsync to exit group chat either when it's terminated, or user proxy agent is selected as next agent to speak. And resume the conversation the next time the OnSendAsync is called. In that situation you no longer need to wait for input from user in the middle of group chat conversation.
Here is the pesude code.
// in OnSendAsync function
ChatMessage[] chatHistory;
GroupChat groupChat;
// in userProxyAgent, set input mode to never and a default reply message so it always return "wait for user input" when it's selected.
IAgent userProxyAgent = new UserProxyAgent(humanInputMode: HumanInputMode.NEVER, defaultReply: "wait for user input")
string userInputContent; // suppose this is the latest user message
while (true)
{
    // add latest user input to chatHistory
   chatHistory.Add(userInputContent);
   // continue group chat
   // set maxTurn to 1 so it stop after one round
   var newMessages = await groupChat.SendAsync(chatHistory: chatHistory, maxTurn: 1);
   // check if the newMessages[0] comes from user
   if (newMessages[0].From == "user")
   {
      // exit to wait for user input
     return;
   }
   else
   {
      // carry on the conversation by add new messages to history and continue
      chatHistory.AddRange(newMessages);
   }
}

thank you


unable to create flutter app using command prompt

Flutter crash report; please file at https://github.com/flutter/flutter/issues.
command
flutter create flutter_app1
exception
TemplateException: Value was missing for variable tag: macosIdentifier. (11:29)
PRODUCT_BUNDLE_IDENTIFIER = {{macosIdentifier}}
^
#0      Renderer.visitVariable (package:mustache/src/renderer.dart:101:9)
#1      VariableNode.accept (package:mustache/src/node.dart:45:43)
#2      Renderer.render.<anonymous closure> (package:mustache/src/renderer.dart:58:30)
#3      List.forEach (dart:core/runtime/libgrowable_array.dart:278:8)
#4      Renderer.render (package:mustache/src/renderer.dart:58:13)
#5      Template.render (package:mustache/src/template.dart:40:14)
#6      Template.renderString (package:mustache/src/template.dart:33:5)
#7      Template.render.<anonymous closure> (package:flutter_tools/src/template.dart:157:77)
#8      __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.forEach (dart:collection/runtime/libcompact_hash.dart:367:8)
#9      Template.render (package:flutter_tools/src/template.dart:109:24)
#10     CreateCommand._renderTemplate (package:flutter_tools/src/commands/create.dart:541:21)
#11     CreateCommand._generateApp (package:flutter_tools/src/commands/create.dart:468:23)
<asynchronous suspension>
#12     CreateCommand.runCommand (package:flutter_tools/src/commands/create.dart:319:37)
<asynchronous suspension>
#13     FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:545:18)
#14     _asyncThenWrapperHelper.<anonymous closure> (dart:async/runtime/libasync_patch.dart:77:64)
#15     _rootRunUnary (dart:async/zone.dart:1132:38)
#16     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#17     _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
#18     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
#19     Future._propagateToListeners (dart:async/future_impl.dart:668:32)
#20     Future._complete (dart:async/future_impl.dart:473:7)
#21     _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#22     _AsyncAwaitCompleter.complete.<anonymous closure> (dart:async/runtime/libasync_patch.dart:33:20)
#23     _rootRun (dart:async/zone.dart:1124:13)
#24     _CustomZone.run (dart:async/zone.dart:1021:19)
#25     _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:947:23)
#26     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#27     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#28     _runPendingImmediateCallback (dart:isolate/runtime/libisolate_patch.dart:115:13)
#29     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:172:5)

flutter doctor
[✓] Flutter (Channel stable, v1.2.1, on Microsoft Windows [Version 10.0.18362.535], locale en-IN)
    • Flutter version 1.2.1 at D:\flutter\flutter
    • Framework revision 8661d8aecd (10 months ago), 2019-02-14 19:19:53 -0800
    • Engine revision 3757390fa4
    • Dart version 2.1.2 (build 2.1.2-dev.0.0 0a7dcf17eb)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at C:\Users\AmanK\AppData\Local\Android\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 28.0.3
    • Java binary at: D:\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
    • All Android licenses accepted.

[✓] Android Studio (version 3.5)
    • Android Studio at D:\Android Studio
    • Flutter plugin version 42.1.1
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)

[✓] Connected device (1 available)
    • Android SDK built for x86 • emulator-5554 • android-x86 • Android 10 (API 29) (emulator)

• No issues found!

Channel stable, v1.2.1

1.2.1 is quite old at this point. Your tree is partially on an old version, and partially on a recent version, which is not a supported configuration.
Duplicate of https://github.com/flutter/flutter/issues/43734


plac_tk is importable in Python 3

In Python 3, the Queue module was renamed to queue. This imports that module such that it will work on Python 2 and 3.

Thanks for your contribution!


Serialize recursively placing all nested objects in the 'included' array

Added functionality that recursively serializes a model, placing all nested objects in the included array. This conforms to the JSON API spec, which states:
http://jsonapi.org/format/#document-top-level
A document MAY contain any of these top-level members:

jsonapi: an object describing the server’s implementation
links: a links object related to the primary data.
included: an array of resource objects that are related to the primary data and/or each other (“included resources”).

Thanks a lot for doing this! I will review your changes this weekend and hopefully publish a new pre-release.


[Bug] Midnight is outside of container

To get set sunset to midnight you have to drag the moon outside of the container. However, sunrise midnight is still in the container.
Not sure if this is an actual bug or just an odd visual issue

Yeah this is currently expected, as I had to shrink the size of the container to fit within the new Settings layout, and making all the child elements adjust accordingly wasn't worth the effort (yet). I'll keep this open as a reminder that I'll need to address this eventually tho.

Fixed in 1.16.6


Fix PropertyGrid Flags DropDown Height

When opening a dropdown menu from a Flags enum in the PropertyGrid, its size appears to be miscalculated, so the dropdown ends up just slightly too small - resulting in an unnecessary scrollbar.
This should be fixed.

Fixed in AdamsLair.WinForms, now awaiting a library update to fix it in Duality.

Binary release in progress, check back for package updates in about 30 minutes.


Download doesn't extract all the words

Hello -
thank you a lot for this code! I've releasied that this code doesn't extract all the 119376 due to the following case:

(1288/119376) on/off switch
Exception in thread Thread-7:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "", line 18, in run
download_mp3(word, url, self.dir_path)
File "", line 4, in download_mp3
with open(filename, 'wb') as file:
FileNotFoundError: [Errno 2] No such file or directory: 'download/on/off switch.mp3'
Kind regards,
AM

For sure it's not the best option, but will help:

to avoid download of the existing files in case of the 2nd run
solve the issue above
def download_mp3(word, url, dir_path):
filename = os.path.join(dir_path, word + MP3_FILENAME_EXTENSION)
filename = filename.replace("/", "")  ## Added
if os.path.isfile(filename) == False: ## Added
with open(filename, 'wb') as file:
file.write(requests.get(url).content)

Actually this repository was not maintained in the past year so I'm not sure whether the links found last year still work now. I'll try getting some spare time to check it soon.

Hi! This code worked with exceptions but when it had reached above 500 words program stopped working, so I changed one of the methods to catch and ignore exceptions and now it works fine:
def download_mp3(word, url, dir_path):     filename = os.path.join(dir_path, word + MP3_FILENAME_EXTENSION)     try:         with open(filename, 'wb') as file:             file.write(requests.get(url).content)     except Exception:         pass

Some files are corrupted though (


Fix generics of isOfType to follow RxJS convention

fixed https://github.com/thebrodmann/deox/pull/133#issuecomment-563021509

:tada: This PR is included in version 3.2.0 :tada:
The release is available on:

GitHub release
npm package (@next dist-tag)

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 3.2.0 :tada:
The release is available on:

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Maintanance Mode / Servers Down

As the main problem on the system the scanner servers seem to be it would be nice to have any way to notify users on frontend, that scanning is not possible at the moment.
Right now on this DDOS fail of the hoster we don't get any response we could use to handle such a message without blocking the user from automatically get informed when its working again.
Im thinking about, what we could do but i dont get a good idea without creating lag.
One way would be to ask for servers up before asking for a scan ... or may be ask every 10 minutes if servers are up and stop scanning if they arnt ...

I could make a ping server a javascript would call it every 30s to see if service are up, thanks for suggestion

i wonder if a ping server could get "ddos"ed by the regular clients by asking to often for the service. but if that would be the best way to make this happen. :)

is this project dead? still no changes commited to live site?


Refactoring of include directive of header files

#include "alm.h" were removed from most of header files. Instead more include directives were written for respective Class definitions.

typedef std::vector<std::map<unsigned int, double>> ConstraintSparseForm; in constraint.h was removed. There is duplicate typedef in fcs.h, which is included in constant.h now and rref.h as well. I wanted to preserved that in constrain.h but it was not possible due to the header file dependency. Maybe this typedef will be moved some other header file that contains utility definitions like constants.h.

Note that this pull request also includes the change corresponding to #9 with replacing get_cell by get_supercell.

The new version #10 works when used as API but crashes when used via the command line as
$ alm < ALM.in > ALM.out
This bug can be fixed by adding the following line in System::init:
set_cell(lavec, nat, nkd, kd, xcoord);

Can you fix it? I'll merge the PR when this issue is resolved.

Thanks. After adding set_cell, I got another segmentation fault. I could not solve this issue quickly. Instead I am now working on InputSetter and InputParser to more decoulple from other classes. Could you test this branch, https://github.com/atztogo/ALM/tree/modify-System? If this works (it semms working for suggest), I will make another pull request by closing this pull request. The design direction of InputSetter and InputParser is to access ALM only via API though currently they touch almost directly internal variables (mind that this was made by me, sorry!), which is dangerous and less easy to control.

The modify-System branch version works correctly both via API and command line! Thank you.

Thank you. I've merged it.


Check tables from Regionalstatistik that have Gemeinden at the beginning

@pmayd From what I understood, https://github.com/CorrelAid/pystatis/pull/99 resolved this, right? Should we close the issue?

Ths was fixed in https://github.com/CorrelAid/pystatis/pull/99.


Scaling label text?

Hi,
I might just be missing something, but is it possible to modify the label text on the QR Codes? I printed 2 labels, one with a short name and one with a long name and the text on the later is far smaller when i would prefer it larger but for the label to simply be wider.
apologies if this is already configurable, I don't see an option in the example
Thanks!

Hi @quantumzedno ! Currently it's not available for configure.


My install is prompting no extractors found error when playing any file

Description
My install is prompting no extractors found error when playing any file
Provider
Sflix main provider
Reproduction steps
My install is prompting no extractors found error when playing any file using sflix provider.. Tmdb seems to work.. this has been the last like 10 updates for me
Operating system
Chrome cast with google tv
Logs
No response
Please confirm the following

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open issue.
[X] If related to a provider, I have checked the site and it works, but not the app.

After a fresh install it's still the same but upcloud shows a 404 errors on some streams but still won't play

Duplicate of #181

I recommend you to use an other provider for now


C#: Get singleton instances using the Core name

Followup to https://github.com/godotengine/godot/pull/73882
Fixes https://github.com/godotengine/godot/issues/74270

Now that this is using the native name, it would be more appropriate to use the NativeName field and update godotsharp_engine_get_singleton to use StringName. But we can't do the latter without breaking compat (we could add a new native call, but it's not worth for this), so it will have to be in Godot 5.
itype.name and itype.cname are the same, but the former is a String and the latter StringName.

Thanks!

Cherry-picked for 4.0.1.


Adding MeanMetricWrapper, MeanSquaredError metric classes, Metric framework changes and correctness tests.

Summary
Adding MeanMetricWrapper, MeanSquaredError metric classes, Metric framework changes and correctness tests.
Related Issues
n/a
PR Overview

[y] This PR requires new unit tests [y/n] (make sure tests are included)
[n] This PR requires to update the documentation [y/n] (make sure the docs are up-to-date)
[n] This PR is backwards compatible [y/n]
[n] This PR changes the current API [y/n] (all API changes need to be approved by fchollet)

Thank you for the PR. I merged (after updating the integration tests).

Thank you!


Have you tried using non-ImageNet-pretrained backbones?

E.g. resnet50-swav?

I did not try the unsupervised or self-supervised backbones. It could be an interesting work.


Fixed your dev dependencies. Out of date.

Thanks for the contribution. 👍

+1

@cvrebert any chance to review and merge this PR for the dependencies to be up to date?
Build passes just fine.
Thanks!

This is obsolete already. I started working on this and I'll make a PR tomorrow.

@XhmikosR what do you mean obsolete? that newer packages have since then been released?

That and the fact that it's not so simple. See the pull request I opened.
On Mar 7, 2016 23:57, "Liran Tal"<EMAIL_ADDRESS>wrote:

@XhmikosR https://github.com/XhmikosR what do you mean obsolete? that
newer packages have since then been released?
—
Reply to this email directly or view it on GitHub
https://github.com/twbs/bootlint/pull/355#issuecomment-193473689.

@XhmikosR that's just rude to hi-jack someone else's PR.
Your eslint updates could be made in their own PR, that's fine. And with regards to the versions update you could just help out in this thread and suggest to update the commit with the update versions.
If your PR won't be merged for a month and new versions will be out I could also argue that it is obsolete and open a new PR. that doesn't sound too good, right?

Not really no. Your PR was wrong. It's so simple/
I can merge my PR anytime I want.

Once again, rude.
It's about collaboration, if you spotted an issue why not comment and suggest how to update?

Rude or not, I'd rather do something myself right that spending time commenting.
Better luck the next time.


Connecting two blocks that are already on the workspace.

Two blocks can be connected by selecting the first connection, selecting another block and its connection, then hitting enter.


ActiveHash::Relation: Allow chaining multiples scopes

Closes https://github.com/active-hash/active_hash/issues/247

@kbrock Yeah, I used method_missing because I was out of other ideas on how to implement that.
If anyone has a suggestion, let me know. But this was probably the way to do it.

Nice work @andreynering
I agree that scopes should be chainable so the interface is more consistent with ActiveRecord.
I don't have a better suggestion than what you've done with method missing.  I'm happy to merge this.

Hi @adampal,
Thanks for accepting my contribution! ❤
I'd just like to remind you that you should probably push a new release soon so users can actually use this and other improvements made since the last release, which was a long time ago, about 2 and half years ago.

Hey @andreynering no worries, I'll publish a new release shortly. Just wanting to finalise a couple of other pieces first.
I think we'll have the new release ready to go within a week or so.

thanks for the backup review


Emote/user tab completion completes using wrong word

Describe your issue
Tab completion of emotes/usernames can also complete when moving to prior word.
Steps to reproduce

Type a single word
Type another word and tab complete to an emote/user
Press left arrow until you are at the last character of the first word
Press tab again

Expected behaviour
Previous word tries to complete using the word
Observed behaviour
Previous word thinks it's the second word so tried to complete using those characters
Screenshots
https://user-images.githubusercontent.com/4962764/127768320-e14afc52-4b84-4ff3-ab03-c604c6f248e0.mp4
OS and Chatterino Version
Arch Linux (N/A), Chatterino 2.3.3 (commit ae9f92de)
This is a hard one to explain (and title), hope the vid does it justice.

Can reproduce on ae9f92de

can also reproduce on 3cb1e51

I did some investigation and it looks like the completer doesn't respect changing the cursor.
This happens as well if the cursor is changed with the mouse or the entire content of the textbox with up-arrow/down-arrow.
This issue could probably be solved by adding a check inside of ResizingTextEdit::keyPressEvent for those specific events.


'Calling unknown method: yii\console\Application::getSession()'

What steps will reproduce the problem?
Add behavior to any ActiveRecord onValidate for update field "update_by" like
$this->post_update_by = Yii::$app->user->id;
Add components user and session to console config
Add  fake auth in command :
Yii::$app->user->login(\app\models\User::findIdentity(1));
What is the expected result?
'Calling unknown method: yii\console\Application::getSession()' on line where i'll try make login
What do you get instead?
Additional info
I'm need make auth users by some credentials in console app - but can't understed right way - standart component user is not work

Q
A

Yii version
<IP_ADDRESS>

PHP version
5.6

Operating system
Debian 7

Ok found solution like this:
private function authAs($email) {
/**
* Make auth
/
$userModel = \app\models\User::find()
->where(['=', 'user_email', $email])
->active()
->orderBy(['user_id'=>SORT_ASC])
->one();
/*
* Fake auth @todo add exception on real user list
*/
if(empty($userModel)) {
$userModel::findOne(1);
}
    Yii::$app->user->setIdentity($userModel);
}

now i'm no need check app instance in models behaviors


Add a basics tutorial to show how to use this crate

Although there are examples and tests already, it would be better to have a tutorial just like https://grpc.io/docs/ lists.

Yes, we should add it ASAP.

Unless someone is already working on this issue, I'd like to run with it. I tend to prefer the mdBook style over other documentation methods like github wikis or just markdown files in the repo. Using mdbook would require some additional consideration for hosting/infrastructure though. I'd like to get some input from others before committing to a particular documentation format/system. Until then, I'll work on general guides and examples.

No, IIRC there's nobody working on this currently.
We'll appreciate your contribution.


Autoload Driver Object Names

Updated loader to autoload drivers with object names the same as autoloading libraries.

What's the point? Only cache uses this.

I'm using a package that has a name conflict with one of my controllers which means I'm unable to use the driver from that package.

What package?

It's an internal package used across several projects and clients.

You've actually developed a package based on CI_Driver? You're probably one of 5 people to ever want to do that. :)
Seriously, I'd rather discourage CI_Driver usage and this enhancement would be the opposite of that. If CI_Cache didn't use it, it would've been gone by now.

Yes, I've actually developed 2 driver libraries; one for authentication, and one for storage which works with the local file system, Amazon Web Services, etc…
Why would you discourage CI_Driver usage? It seems like a good concept to me?

Libraries using adapters for different platforms is a good concept, CI_Driver is not that good of a concept. :)
It puts more limits on you than it helps and you don't really need a library called "Driver" to write libraries that have drivers/adapters. It's also largely undocumented and hard to understand - even I don't know exactly how it works, I'm impressed you've managed to put it into use.

I suppose I always just thought of drivers similar to the database library and use it in much similar way too which is different to what I think drivers were intended for, but it works. I could show you an example if you'd like?

No, I don't really care to see it. You know what? I don't really care that much about this either, so I'll merge it.

Or rather, I'll merge it after you fix the syntax error on line 699. Please don't submit patches that you didn't test ...

Please leave a comment next time, commits don't issue notifications.

Sorry, didn't realise, thanks for merging.


[FEATURE] Obsoleting the Harvester configuration "no_data_partition"

Is your feature request related to a problem? Please describe.
This configuration was provided to users who have multiple disks and want to use one of them as the VM data disk, so they might not want to create a dedicated VM data partition in the OS disk. Now we are adding the functionality to choose a different disk as the default disk during installation, this config should no longer be required.
Describe the solution you'd like
Remove the Harvester configuration no_data_partition to reduce system complexity.
Describe alternatives you've considered
None.
Additional context
Related: https://github.com/harvester/harvester/issues/1728

Can not verify this because upgrade is not ready yet.
@guangbochen is it ok to keep this one in testing pipeline?

Verified this feature has been implemented.

Test Information

Environment: qemu/KVM 2 nodes
Harvester Version: v1.0.0 to v1.0.1-rc2
ui-source Option: Auto

Verify Steps:

Follow the case in https://github.com/harvester/tests/issues/225#issue-1163575155

this completely forgot about the existence of SATA  DOMs, which should only hold the base but nothing else.


[BUG] Laravel mix issues

Describe the bug
Following the rules given to us here Other Configuration, I discovered that this doesn't load any of the plugins like datatables, date picker etc...
Is there something that was omitted there or should we just create pull request adding plugins after linking to the app.js file which per my testing works., or somehow find a way to import the enabled plugins to the js files
Expected behavior
No console errors
Actual behaviour
Inability to initialize plugins
Screenshots
If applicable, add screenshots to help explain your problem or to shown the issue.

Please, provide more details on how you are trying to load the plugins (datatable, date picker). However, take into consideration that when you are using Laravel Mix, all plugins should be included using it, you can't use the plugins configuration section of the adminlte.php file anymore.
For further details, check how the enabled_laravel_mix option impacts on the master.blade.php file.
Also, you may check this issue https://github.com/jeroennoten/Laravel-AdminLTE/issues/1030

Yes issue #1030 sums it up
When you use mix, no plugins are loaded which is not the intended behaviour
I believe adding the plugins in the master.php file under the if block would solve this problem and prevent others from having this issue and opening PRs
Would you love me to do that for you
And keep up the good work maintaining this lovely package

I'm not sure, I always believed the idea of using Laravel Mix is to include all plugins into compiled files, so your blade views will only include one JS and one CSS file... I have never used Laravel Mix, but I think that code was created that way for some reason...

Yes, it's for building up all assets into one file
But in this case, there is no way we can include some without including all plugin files which would lead to a very huge file
It would be possible if we include all plugin files and find a way to purge unused styles and scripts
This would be similar to tailwind just-in-time compilation but the build step would always be necessary which is not a problem

Yes, it's for building up all assets into one file
But in this case, there is no way we can include some plugins without including all plugin files which would lead to a very huge CSS and js file
It would be possible if we include all plugin files and find a way to purge unused styles and scripts
This would be similar to tailwind just-in-time compilation but the build step would always be necessary which is not a problem for any dev that would be using laravel mix

Ok, you may create a PR for this, but I will have to learn how Laravel Mix works before merging it (just to sure...). The other alternative is to use the workaround mentioned on the issue #1030 ...

The workaround requires you to add the CSS and js on all pages
Maybe explaining Mix briefly would do for you, because learning webpack and mix takes a decent amount of time
Mix uses webpack to compile and bundle defences to form static assets
Eg if I require bootstrap in my app.js file, Webpack creates the corresponding file in public/js/app.js that is using the default laravel mix configuration but no need for that now
Now what is going on here is that there is no non-hacky way to include to add the plugin js files without including each and every one
That is you'd have to require each plugin
Consider this example in app.js
`
//although not technically true imagine this is us linking all these scripts using a script tag with the src attribute
require('overlayscrollbars');
require('bootstrap');
require('../../vendor/almasaeed2010/adminlte/
`
We have loaded what adminlte itself requires.
Now for datatables, sweet alerts etc to work, you'd have to add some of the following
//you'll do this for all plugins require('path-to-datatables-js') require('path-to-select2-js')
Now since we are adding the contents of these scripts into the app.js file, it would become huge
I'm talking around 6 to 15 mib. In this case, it's not worth using Mix since in a real sense we cannot selectively load what plugins we would use
That's why we just use a regular script tag to load assets like this
Now the proposed solution
In master.blade.php
{{-- Base Scripts --}}
    @if(!config('adminlte.enabled_laravel_mix'))
        <script src="{{ asset('vendor/jquery/jquery.min.js') }}"></script>
        <script src="{{ asset('vendor/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
        <script src="{{ asset('vendor/overlayScrollbars/js/jquery.overlayScrollbars.min.js') }}"></script>

        {{-- Configured Scripts --}}
        @include('adminlte::plugins', ['type' => 'js'])

        <script src="{{ asset('vendor/adminlte/dist/js/adminlte.min.js') }}"></script>
    @else
        <script src="{{ mix(config('adminlte.laravel_mix_js_path', 'js/app.js')) }}"></script>
    @endif

This says if the laravel mix option is enabled link only the app.js file that mix created, but remember that we cannot add the plugin scripts into app.js therefore, we have to link it the regular way using
@include('adminlte::plugins', ['type' => 'js'])
Now the solution is simple
Remove the plugin include from the if block so it loads plugins in all cases

Ok @yungifez I understood the problem you are facing when using mix. You may create a PR for this, but I will maintain order of plugins when not using Laravel Mix, just to be sure nothing is broken, like this:
{{-- Base Scripts --}}
@if(!config('adminlte.enabled_laravel_mix'))
    <script src="{{ asset('vendor/jquery/jquery.min.js') }}"></script>
    <script src="{{ asset('vendor/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
    <script src="{{ asset('vendor/overlayScrollbars/js/jquery.overlayScrollbars.min.js') }}"></script>

    {{-- Configured Scripts --}}
    @include('adminlte::plugins', ['type' => 'js'])

    <script src="{{ asset('vendor/adminlte/dist/js/adminlte.min.js') }}"></script>
@else
    <script src="{{ mix(config('adminlte.laravel_mix_js_path', 'js/app.js')) }}"></script>

    {{-- Configured Scripts --}}
    @include('adminlte::plugins', ['type' => 'js'])
@endif

And applying the same idea for the css...

It's better if the scripts go down so that features like the menu works before all enabled plugins.
Putting the same condition twice in if and else is considered bad practice though ( but who cares in the real world ).
You can review the pr and edit to your taste

Yeah, but I'm not sure if order matters and plugins should be before adminlte.min.js. I will try the changes locally just to be sure...

Okay
Happy testing 😊

Hello after doing a bit of research, I found out that the order of scripts does indeed affect the order of execution
To get the menu working before all plugins, we need to link the plugin scripts after the adminlte scripts
This would help the menu to become interactive faster and all other header components
Happy coding

Thanks for the information @yungifez , I will test these changes on a local environment when I get some time... Probably, as you say, it should work without problems, but we need to be sure...


.NET Core performance few times slower compared to .NET Framework for Read & Write to File using BinaryFormatter with Mutex

Hardware specification
Windows Server 2016 Standard
.NET Core 2.1
4 Cores
12 GB RAM
I noticed that the performance for .NET Core is much worst than .NET Framework when i want to achieve thread synchronization while read and write to a file. The following code snippet demonstrate what I want to achieve. Which is at any one time only 1 thread can read the file, change the value and write it back to the file.
`
var mutex = default(Mutex);
var isExistingMutex = false;
        try
        {
            isExistingMutex = Mutex.TryOpenExisting(@"Global\somemutexname", out mutex);
        }
        catch (IOException)
        {
            // expected
        }

        if (!isExistingMutex)
        {
            var createdNew = false;

            mutex = new Mutex(false, @"Global\somemutexname", out createdNew);
        }

        try
        {
            mutex.WaitOne();
        }
        catch (AbandonedMutexException)
        {
            // expected
        }

        var result = default(TestClass);

        using (var fs = new FileStream(@"E:\TestFile.txt", FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite))
        {
            var formatter = new BinaryFormatter();
            result = (TestClass)formatter.Deserialize(fs);
        }

        result.Value2 = new Random().Next();

        using (var fs = new FileStream(@"E:\TestFile.txt", FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite))
        {
            var formatter = new BinaryFormatter();
            formatter.Serialize(fs, result);
        }

        mutex.ReleaseMutex();
        mutex.Dispose();`

        [Serializable]     public class TestClass     {         public string Value1 { get; set; }         public int Value2 { get; set; }         public long Value3 { get; set; }         public long Value4 { get; set; }         public long Value5 { get; set; }         public long Value6 { get; set; }         public byte Value7 { get; set; }     }
The same code is used in .NET Core and .NET Framework. This is the result i get for .NET Core and .NET Framework.
Console - Tested using Stopwatch class. Parallel Loop 2,000.
[Framework] 2358 milliseconds (average)
[Core] 7710 milliseconds (average)
Kestrel (Web API) vs .NET Framework (Web API) - Tested using Visual Studio Load Test, run for 1 minute.
[Framework] 2128 request per second (average)
[Core] 774 request per second (average)
Based on the request, can see that .NET Framework outperform .NET Core. So I would like to know is this the expected result in .NET Core? or I have to write it differently compared to .NET Framework? or is it due to Serialization?

Moved to https://github.com/dotnet/corefx/issues/30752


[T4A3][W10-A4] Wang Ming Rui

Ready for review

Generally ok, but please keep your PR clean in future.
Ack by closing PR.


Fix combine to osv deployment

Fixes #1399
combine-to-osv image was pretending to be the alpine image instead.

Thank you :)


SAM template with custom name does not deploy node_modules

Description:
If your SAM template is called something else (james.yaml) and using NPM packages, when you run sam build and then sam deploy, it doesn't deploy the node_modules with the Lambda function. You have to rename the file to template.yaml for it to deploy properly.
Steps to reproduce the issue:

Start with a SAM template called something else (test.yaml). Ensure you have a package.json file using some NPM packages.
Run:
sam build --template test.yaml
sam deploy --template test.yaml --guided
Run the deployed Lambda function and it will fail because the node_modules are not deployed.
Do the whole thing again but rename the yaml file to template.yaml and it will work.

Observed result:
Node errors in Lambda.
Expected result:
Run without errors.

Did pointing to the built template.yaml file during deploy get it to deploy properly?
sam deploy --template .aws-sam/build/template.yaml --guided

Did pointing to the built template.yaml file during deploy get it to deploy properly?
sam deploy --template .aws-sam/build/template.yaml --guided

Hi Sriram, yes, I can confirm that this works.

@jbesw Awesome!
So sam deploy automatically looks for the built template file.
so sam deploy --guided should work directly as well.
Reason:
sam build operates on the base template
sam deploy operates on the built template (template where the codeuri is replaced with the built path directory)


Issue 5 , adding a way to show fellows contributions

Please, go through these steps before you submit a PR.

[x] My Pod Leader knows I'm working on this Pull Request
[x] I've explained what the Pull Request is adding.
[x] I've explained why this is important.

I addressed the feature of adding the a count for the contribution , however , I think the styling may need some work


Gsoc 2021

@wbrunette I have made a commit c1fab9995f81fa69b64bae63956b66e1e513993a to the gsoc-2021 branch. All tests have passed


how to send an end event beforeunload?

I want to send an end event like this:
window.addEventListener('unload',() => {
    store.dispatch({
        type: 'WEB_CHAT/SEND_EVENT',
        payload: {
          name: 'EndOfConversation'
        }
      });
});

but it didn't work for me. As i know,unload will block xhr request,is there other way to resolve this problem?

Hi @zp1112.
Although W3C HTML standard on page unload does not specifically disable network traffic, as you observed, browser may opt to disable network traffic after these unload event, maybe due to privacy concern.
You can consider sending heartbeat/ping to the bot. But they could still be false positive due to network interruption.
I think there are no reliable ways to send any network traffic after the user decided to close the browser.

@zp1112, I have found the following to work for me. Place it in your page where the Web Chat store is accessible. In my case, I'm persisting conversations which is how I'm able to see the posted message in Web Chat.
I can't say that it will work in every situation for every browser or version (I'm using Chrome and have run successfully on a multitude of versions), but it's a jumping off point, at least. @compulim could speak more to that, if more is needed to be said than what he posted above.
window.addEventListener( 'sendMessageActivity', ( { data } ) => {
  store.dispatch( {
    type: 'WEB_CHAT/SEND_MESSAGE',
    payload: {
      text: data
    }
} );

window.onbeforeunload = function() {
  const eventSendMessage = new Event( 'sendMessageActivity' );
  eventSendMessage.data = 'User left conversation';
  window.dispatchEvent( eventSendMessage );
}

Message received by bot
File Transcript Activity >> {
  direction: 'incoming',
  activity: {
    callerId: 'urn:botframework:azure',
    channelData: {
      clientActivityID: '15898261515331cqv08r1lb5',
      clientTimestamp: '2020-05-18T18:22:31.533Z'
    },
    channelId: 'directline',
    conversation: { id: 'JmXdzwRkQtE6ekG53YK95p-o' },
    from: {
      id: 'dl_15898261456610.9zj0c8ysgp',
      name: 'Lord Voldemort',
      role: 'user'
    },
    id: 'JmXdzwRkQtE6ekG53YK95p-o|0000003',
    locale: 'en-US',
    rawTimestamp: '2020-05-18T18:22:31.5733129Z',
    recipient: { id: 'b***g@QaeuoeEamLg', name: 'R***e Bot' },
    serviceUrl: 'https://directline.botframework.com/',
    text: 'User left conversation',         <============ Text sent from Web Chat
    textFormat: 'plain',
    timestamp: 2020-05-18T18:22:31.573Z,
    type: 'message'
  }
}

Web Chat activity

Hope of help!!

Closing again as resolved.

@stevkan Thanks! It works!

this method doesn't work. yes the message is added to the chat window, but newest version of chrome disables the request. "Send failure" is the result.


Minor updates

Minor updates to information including updated service name and URLs. Updated date site was last updated. Biggest change is the change of service id for the Flood Forecasting service. Current ID (109) is shared with another service causing the main page to redirect incorrectly when FFS link is clicked.

Looks good to me.


Bootstrap command equivalent for release-it in a mono repo setting?

Any way to run bootstrap that does symlinking of local packages in a mono repo?

You could use the scripts.beforeStart script hook.

@webpro thanks for the help. What's to be inside beforeStart?
I'm thinking of replacing lerna where you could bootstrap and release each of the packages independently.

release-it doesn't support to release multiple packages in a single run. But maybe you could approach it the other way around: create a script that runs release-it in every package dir.

Single release per package is fine. I'll close this issue for now. Will need to experiment with the scripts.


Table: Context Menu-Only Row Actions

Prerequisites

[X] I have searched for duplicate or closed feature requests
[X] I have read the Modus style guidelines

Proposal
The current table component displays a number of row actions inline within a designated column. Once the inline space is exhausted, additional actions are placed within a context menu dropdown. This feature request proposes the ability to move all row actions to the context menu dropdown, removing them from the inline display entirely.
Requirements:

Context Menu-Only Actions:

Provide an option to configure the table so that all row actions are placed within the context menu dropdown, with none displayed inline.

Icons in Context Menu:

Ensure that icons can be displayed next to individual row actions within the context menu.
Allow customization of icon colors within the context menu to give the consumer more control.

Motivation and context
No response
What is the issue regarding ?
@trimble-oss/modus-web-components
Priority
Medium
What product/project are you using Modus Components for ?
Trimble Viewpoint applications
What is your team/division name ?
Trimble Viewpoint
Are you willing to contribute ?
None
Are you using Modus Web Components in production ?
No response

@enowak1031 We may want to escalate this one as it's behaving differently than the majority of design doc requirements. Can this be bumped closer to the front of the review queue?

@enowak1031 We may want to escalate this one as it's behaving differently than the majority of design doc requirements. Can this be bumped closer to the front of the review queue? I am willing to implement the feature

@ryan-henness-trimble Your proposal has been reviewed and accepted by the design team. We would gladly accept your contributions.
PS: Icons in context menu - The modus-list component is used in the dropdown and currently accepts left icon as prop, if your requirement is to show icons on the right side which is one of the variants as per Figma, then we need to change the selected state as well.


Select Multiple Rows Issue

Issue Type: Bug
I can't use Ctrl+Alt hotkey anymore nowtimes.
So I can't select multiple rows easy way.
Please fix it asap if it's possible.
VS Code version: Code 1.49.1 (58bb7b2331731bf72587010e943852e13e6fd3cf, 2020-09-16T23:27:51.792Z)
OS version: Windows_NT x64 10.0.18363

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz (12 x 3192)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onoop_rasterization: disabled_offopengl: enabled_onprotected_video_decode: unavailable_offrasterization: enabledskia_renderer: disabled_off_okvideo_decode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
15.80GB (9.18GB free)

Process Argv
--crash-reporter-id 69ccbcda-e4f9-4118-9561-369886ac89c7

Screen Reader
no

VM
21%

Extensions (5)

Extension
Author (truncated)
Version

vscode-ionic-snippets
fiv
2.2.2

vue-snippets
hol
0.1.12

remote-wsl
ms-
0.44.5

vetur
oct
0.27.3

laravel-blade
one
1.24.0

@heping1108 There has been an update to an Intel Driver that adds ctrl+alt+up and ctrl+alt+down as hotkeys in Windows. This driver "steals" all such keybindings from all Windows applications. Please try to configure it and remove those keybindings.