Create a new istioctl subcommand to produce control plane configuration by feature

We want a new subcommand on istioctl responsible for producing control plane configuration. This command should accept a flag that describes the set of Istio features the user wants (e.g. "auth", or "ingress,routing") and produces the (minimum) set of k8s deployments of the Istio control plane to achieve those features.
Then we can shift to using this tool to produce all of the yamls we package up in the Istio installation bundle, instead of the scripts we use to produce it today.

There's also been some suggestion to use Helm instead of scripts to generate install files. See https://github.com/istio/istio/pull/2030#issuecomment-350807429.

Cc @andraxylia who was strongly against this back in summer
On Mon, Dec 11, 2017, 11:51 AM Jason Young<EMAIL_ADDRESS>wrote:

There's also been some suggestion to use Helm instead of scripts to
generate install files. See #2030 (comment)
https://github.com/istio/istio/pull/2030#issuecomment-350807429.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/2087#issuecomment-350837645, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AJGIxjwrZ1g3ROyYcm0QefuoMlauE7iSks5s_YekgaJpZM4Q97mf
.

I am not convinced this functionality belongs to istioctl

Istoctl is a config client to the config store, not a script for install. Please create a separate tool or let's use helm if it already supports. We do need the ability to customize installation profiles.

istioctl is how the user interacts with Istio. The fact that today that only occurs via writing config is an implementation detail. It's a pretty horrendously bad UX to say "download foobar to generate the control plane configuration you want, then download istioctl to configure it".
I'm happy having such a command generate the variables required for the helm install, but until we have a blessed installation method, the same tool should be able to generate raw deployments too.

Istioctl is one way user interacts with Istio - kubectl is another, so is
using the k8s APIs from custom programs.
Istioctl is not a required for using Istio - nor should it be, most users
will use the webhooks for injection and a real
UI for configuration (and the UI will not exec istioctl ).
Helm and launcher are using templates and are checked in - not generated by
tools, I'm not aware of any other
application that is using an executable to generate configs for helm.
On Mon, Dec 11, 2017 at 1:19 PM, Zack Butcher<EMAIL_ADDRESS>wrote:

istioctl is how the user interacts with Istio. The fact that today that
only occurs via writing config is an implementation detail. It's a pretty
horrendously bad UX to say "download foobar to generate the control plane
configuration you want, then download istioctl to configure it".
I'm happy having such a command generate the variables required for the
helm install, but until we have a blessed installation method, the same
tool should be able to generate raw deployments too.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/2087#issuecomment-350861632, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAFI6luCuLIfHViGWUkvJvJ9GLTxvJcwks5s_Zx2gaJpZM4Q97mf
.

In the helm case, what we'd generate is the values.yaml file required to fill in helm template parameters. Helm would still be responsible for rendering the final configuration.

So instead of user editing a values.yaml ( with comments around each
parameter ), or using a UI that presents the options in a
nice way - they would run a native CLI ? Is it based on user feedback, and
do we expect most users will like CLI instead
of config files or UI for Istio ?
On Mon, Dec 11, 2017 at 3:44 PM, Zack Butcher<EMAIL_ADDRESS>wrote:

In the helm case, what we'd generate is the values.yaml file required to
fill in helm template parameters. Helm would still be responsible for
rendering the final configuration.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/2087#issuecomment-350895888, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAFI6oqnkYHj4PnIUrryPCPVN28nzKYAks5s_b5MgaJpZM4Q97mf
.

Also we are moving to per-service / per-namespace config - for example mTLS
already has per-service settings. Would
the per-service config use istioctl ( with kube-inject like behavior ) ? Or
different ways for service, namespace and global config
of same setting ?
On Mon, Dec 11, 2017 at 8:42 PM, Costin Manolache<EMAIL_ADDRESS>wrote:

So instead of user editing a values.yaml ( with comments around each
parameter ), or using a UI that presents the options in a
nice way - they would run a native CLI ? Is it based on user feedback, and
do we expect most users will like CLI instead
of config files or UI for Istio ?
On Mon, Dec 11, 2017 at 3:44 PM, Zack Butcher<EMAIL_ADDRESS>wrote:

In the helm case, what we'd generate is the values.yaml file required to
fill in helm template parameters. Helm would still be responsible for
rendering the final configuration.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/2087#issuecomment-350895888, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAFI6oqnkYHj4PnIUrryPCPVN28nzKYAks5s_b5MgaJpZM4Q97mf
.

istioctl would be a lot more convenient than nothing at all - specially to switch between the many options we have

If the alternative is nothing at all, istioctl is of course preferable. Go ahead and add it, it can always be split later once we have a better understanding.

Is there a strawman of the devex we want?  What is the proposed set of "features" the user can enable/disable? I care about the experience more than the underlying code :)

@smawson today the features are: "mtls", "telemetry", "routing", "ingress", "policy", "initializer". Final names TBD, we want them to match the names used in the APIs.
The experience I'm shooting for is something like:
kubectl apply -f <(istioctl gen-deployment --features telemetry,initializer)

@costinm has been pushing for a more file-based approach, where the user edits the Helm chart's values.yaml file, and we use that to render YAML in the tool. It looks something like:
kubectl apply -f <(istioctl gen-deployment --values path/to/values.yaml)

The current WIP PR supports both flags and values.yaml.
Finally, we can produce a values.yaml file based on flags, which can then be used by the tool to render final YAML, or fed to Helm directly:
istioctl gen-deployment --features mtls,routing -o helm

Some questions:

Does telemetry include installing prometheus, grafana, and service graph?
Does mtls turn on mtls, or just make it available (and rolling it out is separate)
Do we actually want to make initializer optional or instead just configure which namespaces to roll it out to?
Should we have a command that generates the deployment and installs? istioctl install --values path/to/values.yaml. If we have that, is there any difference between doing it that way vs. just using helm directly?  Maybe we hide helm and have it be istioctl install --config path/to/config.yaml where config.yaml doesn't leak helm details (maybe existing values.yaml doesn't either?).

As yet I have not touched the addon files, so no not yet. We should decide if we want that or not. The other option would be to add "prometheus", "grafana", etc "features".
Creates a deployment containing a CA and enables mTLS
The initializer still requires a non-standard k8s cluster to work so I've kept it off by default. AFAIK @louiscryan was in favor of on-by-default.
By default we spit out regular old k8s deployments, which we get by rendering our helm charts locally in the CLI. The biggest difference is that we don't require an actual helm server to be running, because Istio templates are simple enough for us to totally render on the client side. I'm not sure how feasible it is to hide helm details. I will be trying to make the values.yaml higher level than it is today, though (so it talks in terms of features too, rather than individual components like it does today).

my 2c: it would be great to have telemetry and routing by default. Routing IMHO is a pre-requisite for everything else (not rules, just basic sidecar + pilot). It's a short step to Envoy-based telemetry from there.

That's the plan: by default the tool spits out deployments for the entire control plane, ingress proxies, and enables mTLS.

If we want to expose helm templates, I think it would be best to advise to use helmc itself with its large and evolving plugin eco-system. Certain things, like helm generate or helm ksonnet, are best left to helm to implement.
If we want to encapsulate helm templates, then we should capture enough variation with tool flags, and be ready to extend as many as flags as needed to customize those templates.

mTLS is a separate feature. It's disruptive to the rest of the cluster since you cannot communicate with non-istio pods.

Sure - none of the code is checked in so feel free to comment in the PR about what the defaults actually should be. I think it'd be very reasonable to have mTLS off by default too.

We need CA even with mTLS is off to secure sidecar-pilot channel. So the
only optional pieces are mixer, ingress, and any mixer addons/plugins.
On Tue, Dec 19, 2017 at 11:38 AM Zack Butcher<EMAIL_ADDRESS>wrote:

Sure - none of the code is checked in so feel free to comment in the PR
about what the defaults actually should be. I think it'd be very reasonable
to have mTLS off by default too.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/2087#issuecomment-352864172, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AJGIxrpMa0uZnTtM-blIn6W9RcpAzLXuks5tCBCcgaJpZM4Q97mf
.

AFAIK communication works fine without CA, we just wind up with clear-text between sidecars and Pilot, so it's not strictly required, right?

It's required (non-optional). Otherwise, we need to have another set of installation templates.

@louiscryan @smawson thoughts on supporting an installation that's clear text between side cars and Pilot for a smaller install footprint in use cases where the operator doesn't want/need other Istio security features?
IMO we make the "Istio is a monolith" perception worse as we add tight couplings like "you must run CA to run Pilot".

I think Mixer should definitely require CA and probably mTLS for any
reasonably safe policy enforcement.
Depending how much we value trust between proxy/pilot, we should be careful
to make it plain-text.
To avoid monolith perception, we should look into using k8s CA instead of
shipping our own CA, or using network isolation using co-deployed pilot or
UDS.
On Tue, Dec 19, 2017 at 11:48 AM Zack Butcher<EMAIL_ADDRESS>wrote:

@louiscryan https://github.com/louiscryan @smawson
https://github.com/smawson thoughts on supporting an installation
that's clear text between side cars and Pilot for a smaller install
footprint in use cases where the operator doesn't want/need other Istio
security features?
IMO we make the "Istio is a monolith" perception worse as we add tight
couplings like "you must run CA to run Pilot".
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/2087#issuecomment-352866973, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AJGIxlwnycIAP3SmyC8aGcepVqSSQT-wks5tCBMigaJpZM4Q97mf
.

Again, it's not strictly required - we just think it's the correct default based on the security model we work in (that the network is compromised). Many users have different security models (for better or worse) that assume the network is safe, so in their mind mTLS between side-cars and Mixer is not strictly required.
We need to be very clear about the difference between the minimum viable deployment (e.g. Mixer w/o CA, clear text between sidecars and control plane), the default deployment we ship, and the deployment we recommend users run (IMO the default should be the recommended deployment).

re: enabling mtls, we should have mtls off by default, not on by default, since it is dangerous to deploy into existing cluster (will break live traffic). mtls to pilot and mixer seems reasonable. So what we really want is the default state to be auth is installed and ready, but the default is that it is off for all services, and explicitly enabled for pilot and mixer services.
I think it is reasonable to offer a mode where there is no auth installed at all, and pilot/mixer traffic are unsecured, but that shouldn't be the default.
re: installation, not sure I got an answer to whether we could offer: istioctl install --config path/to/config.yaml, which would generate the deployments and also call kubectl to install them.
Sure you can do it with a kubectl apply -f (...) but nice if we offered a simpler one-liner.
Oh we should also figure out how to make it clear that this is a kubernetes install, so something like gen-kube-deployment and install-kube rather than gen-deployment and install, since we'll also want to offer installation for other environments, ideally using the same configuration file.

I believe we have or soon will have mtls “preferred” mode so we should ship that way rather than without mtls (preferred means try mtls and fallback if it doesn’t work)

+1 for using gen-kube-deployment for this new subcommand as it is specific to Kubenetes environment.
For installation, we should have a install sub-command which is more general, which can directly install the system onto different environments.

re: installation, not sure I got an answer to whether we could offer: istioctl install --config path/to/config.yaml, which would generate the deployments and also call kubectl to install them.

Ah, I didn't understand that's what you were asking for. Yes, we can do that, and I think that's where we introduce the stuff @yusuoh's been thinking about.

+1 for using gen-kube-deployment for this new subcommand as it is specific to Kubenetes environment.
For installation, we should have a install sub-command which is more general, which can directly install the system onto different environments.

Do we expect to support more than just Kubernetes? If so, lets structure the tool so that each platform is a subcommand, i.e. istioctl gen-deploy kube. That structure works more nicely if we pull out gen-deploy into its own binary, and I think makes a nice code structure too (e.g. Istio wide flags on the gen-deploy command and kubernetes specific flags on the kube subcommand, etc).

And install can mirror the same structure, istioctl install kube ... (which is convenient for all the same reasons as gen-deploy).

So to summarize so for:

[ ] Structure command as istioctl gen-deploy kube
[ ] Command for installation will be istioctl install
- @yusuoh can you file an issue for this? IMO it's important these are two separate things, and we not conflate generating deployments with the logistics of figuring out how to do upgrades etc. in the same place.
[ ] Default installation (istioctl gen-deploy kube, no flags) will generate a deployment with the full control plane, ingress proxies, no initializer, and mTLS disabled. This mirrors the main istio.yaml Kube install we have today.
[ ] We can add configs to support simpler minimum deployments (e.g. clear-text control plane so routing can be achieved with only Pilot and sidecars, etc.)
- I think this is desirable but not really important in the short term. As I'm refactoring the helm charts to align with our existing templates, I keep an eye on making this easy, but not go out of my way to write extra config to allow it.

@ZackButcher will your gen-deploy also generate sidecar deployment files?

Don't plan to since we have kube-inject; we only use the proxy version here for the proxies that run in front of the control plane, and in configuring the initializer.

You may want to sync with Jason and the people working on 'template based
injection', for consistency (including on using the same
input file and naming).
Few comments on mtls:  right now (0.4) mtls is installed by default and is
used for pilot/mixer, and any app with the right annotation,
and for 1.0 if the P1 'transparent mtls' is implemented it will be in
'enforce' or 'allow' mode.
It is no longer 'off' or 'on', and we certainly don't want to ship an
'always on'/enforce mode until we solve the headless use case.
In addition the 'zero-vpn' requires mtls (can be in permissive mode),
currently there is no option (or plan) to allow zero-vpn without
crypto.
Finally - some of the options for zero-vpn using 3p gateway termination
will not actually use mtls - but plain tls with JWT for client(mutual) auth.
I'm not sure if what Quic uses can be called mtls either - my point is I'm
not sure if the term is future-proof.
On Wed, Dec 20, 2017 at 12:42 PM, Zack Butcher<EMAIL_ADDRESS>wrote:

Don't plan to since we have kube-inject; we only use the proxy version
here for the proxies that run in front of the control plane, and in
configuring the initializer.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/2087#issuecomment-353176969, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAFI6i7WooY6SJXgWXm6rRUZWGqsBZ-dks5tCXEcgaJpZM4Q97mf
.

The feature seems to be done - however the feature and helm part are not working and don't appear to be needed, the helm templates already have a feature system in place ( with --set), and values.yaml need to be updated.
We will need additional polish and testing - and since helm and gen-deploy are the only good way
to customize production settings I think this is a (top) P1.

For the webhook auto-inject feature, which involves cert creation and bundling CA to the template, can they also be supported by Helm? It seems easier to do those in istioctl.

@yusuoh this is a good question to which I don't have a good answer.  The helm charts today can deploy the sidecar-injector pod, however, the workflow on this page (under automatic injection):
https://istio.io/docs/setup/kubernetes/sidecar-injection.html
seem incomplete.  I'm not sure helm has sufficient workflow features to execute this work, although it may be possible to put that specific workflow in a bare-bones container, the purpose of which is to configure the sidecar injection, or as you note - use istioctl directly to execute these more complex workflows.
Cheers
-steve

I think best place to put this istio-ca - which can generate certificates and has proper permissions.
I wouldn't add another component that signs certs.
I will file a separate bug for this.


what's the meaning of ASLR?

Address Space Layout Randomization (ASLR) is a computer security technique which involves randomly positioning the base address of an executable and the position of libraries, heap, and stack, in a process's address space. The random mixing of memory addresses performed by ASLR means that an attack no longer knows at what address the required code (such as functions or ROP gadgets) is actually located. That way, rather than removing vulnerabilities from the system, ASLR attempts to make it more challenging to exploit existing vulnerabilities..
see: https://blog.morphisec.com/aslr-what-it-is-and-what-it-isnt/
ps: go编译器现在也支持ASLR

see also: http://autosysprogs.blogspot.com/2011/03/aslr-and-linux-personality-syscall.html


Check these samples and decide what we can grab from it in order to start quickly

https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/ses-examples-sending-email.html
https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/ses-examples.html

https://attacomsian.com/blog/amazon-ses-integration-nodejs
<EMAIL_ADDRESS><EMAIL_ADDRESS>https://github.com/aheckmann/node-ses
https://github.com/andrewpuch/aws-ses-node-js-examples
https://www.codexpedia.com/node-js/amazon-simple-email-service-ses-example-in-node-js/
https://jaketrent.com/post/send-email-aws-sdk-node-example/

https://github.com/MoonMail/MoonMail

cool video https://www.youtube.com/watch?v=4o6GCiUX8Xk


Feature request: call cmd.run with table arg and apply changes to file/path instead of open buffer.

Hi Vigoux,
This plugin is such a cool tool and I am studying the source now when I am learning about treesitter.
feat req
I would like to be able to apply edits with architext to a filepath instead of open buffer. My thinking is to modify the cmd.run func and make it so that you can pass a table with all necessary params, (including path = ...) so that
Do you have any recommendations on how to write the edits to a file that has not been loaded into a buffer? I see that many of you who are more proficient with treesitter and lsp use the lsp_range in order to make edits but I am not sure how to use this when writing to a file not yet loaded into buffer. Browsing through the docs myself I am not yet sure which is the more correct way of doing this?
If you could give me some guidance on how to write edits to a file, then I would like to try to make a pull request for this feature.
edit start
I have been thinking about the vim.lsp.utils.apply_text_edits function and realise that it updates all captures across the whole project and so maybe it is a requirement that one first reads the file into a buffer.
Maybe, something like vim.lsp.buf.references could be used to find references for the filepath and then you would manually update all paths that include the references?
edit end
Please tell me if you understand my idea :)
my use case
I am using doom-nvim and am working on some fun UI for the next unreleased version. If it was possible to use Architext on a filepath, then it would be quite easy to make some cool UI for doom that allows you to toggle and update config settings with eg. telescope really fast.
An example would be toggle module(s) action where I'd pipe all config modules into telescope, and then if you select module x then I would tell Architext find module name x in the module_enabled file and then comment it out and reload the config. So that one could eg. batch turn on/off all config modules in one single command with Architext.
question about the code
How does the command understand that everything after :A is the argument for the command? I read about  under the map.txt docs but I don't understand what it is that specifies this?
Cheers.

So, first of all, we can't make edits to a file that is not loaded into neovim, and thus we have to load it in a buffer.
Now to the other part of the question (if I undersand it correctly): the idea would be to make the implementation more modular in order to run the edits on other buffers.
From what I remember, the cmd.run function could take an additional bufnr as argument without too much effort.
Is that what you would need ?

Thank you for attending to my idea Vigoux!

From what I remember, the cmd.run function could take an additional bufnr as argument without too much effort.
Is that what you would need ?

Yes I believe this is exactly what I am asking for. I have a query and I want to perform the replacement to file not loaded.
Based on my reading, the following would be one way to write the changes to the path.
Does this make sense to you?
local function path_transform_with_architext(edits, path)

  local buf_prefix = "architext_replace_path_tmp_buf"
  local fd = vim.fn.readfile(path)
  local b = vim.api.nvim_create_buf(false, true)
  vim.api.nvim_buf_set_name(b, buf_prefix .. ":" .. path)
  vim.api.nvim_buf_set_text(b, 0, "$", 0, "$", fd) -- I dunno if "$" is correct for last position
  vim.lsp.util.apply_text_edits(edits, b)

  local text_to_write = vim.api.nvim_buf_get_lines(b, 0, "S")
  vim.fn.writefile(text_to_write, path)
end

I think you can also use lsp utility functions to read the file based on an URI.
I don't remember which one though... And I am away from my computer at the moment.

Allright cool! I will do some more reading on my own and add it to my codesnippet above if I figure something out for myself.

without too much effort.

Ahaa, I realise now that then this would just be a matter of an if bufnr == nil then bufnr = a.nvim_get_cur_buf() end.

The function was called vim.uri_to_bufnr.


emanote: init at <IP_ADDRESS>

Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Fun fact: For testing this I started emanote in the nixpkgs root, because that‘s where I had the build result. And that actually proved quite useful and I could read the nixpkgs docs via the emanote webserver.
Anyway, @srid I am a bet weary about the tailwindcss overrides. I have just copied them, but do you maybe have a bit of documentation for why those are needed. I looked for that in the tailwind README on hackage. I don‘t like the idea, that this is bespoke knowledge only present in your flake and nixpkgs.
Besides that I haven‘t done anything about M1, yet.

Besides that I haven‘t done anything about M1, yet.

I believe it should just work assuming we remove the "broken" flag on the aarch64-darwin package for pkgs.stork.

Testing it on M1:
❯ nix run github:maralorn/nixpkgs/emanote#emanote
error: builder for '/nix/store/wsf1bmysn8prwd03b2263nn4s71ix99x-http2-3.0.3.drv' failed with exit code 1;
       last 10 log lines:
       >
       > Frame
       >   decodeFrame and encodeFrame
       >     decodes test cases well
       >
       > Finished in 0.0403 seconds
       > 1 example, 0 failures
       > Test suite frame: PASS
       > Test suite logged to: dist/test/http2-3.0.3-frame.log
       > 2 of 3 test suites (2 of 3 test cases) passed.
       For full logs, run 'nix log /nix/store/wsf1bmysn8prwd03b2263nn4s71ix99x-http2-3.0.3.drv'.
error: 1 dependencies of derivation '/nix/store/sn2kc7kkiwjl83n3mc48j67zm34gchr2-wai-extra-<IP_ADDRESS>.drv' failed to build
error: 1 dependencies of derivation '/nix/store/fx4rfbx0crmhvgfdzrv99v0s244ghywn-warp-3.3.21.drv' failed to build
error: 1 dependencies of derivation '/nix/store/js9fr96irvg7lvrfdsphgx4nfjqpgfsd-ema-<IP_ADDRESS>.drv' failed to build
error: 1 dependencies of derivation '/nix/store/g3mw262bz6675qww3iij528ghln9k807-emanote-<IP_ADDRESS>.drv' failed to build

I thought dontCheck on http2 is required only in ghc92.

http2-3.0.3.drv' failed with exit code 1;

Okay, it worked on M1 on the second run. Looks like the http2 test is unreliable.

I think the stork problem on M1 is kinda orthogonal to this PR. I cannot test or verify it. I invite someone with darwin stakes to mark it unbroken.

Tested emanote, seems to work. The closure size is still enormous, but I guess that's generally the case with Haskell executables?
[nix-shell:~/wiki]$ nix path-info -S $(which emanote)
/nix/store/5x70pgpmbclxr4hg3npyr2lh8ml0blb8-emanote-<IP_ADDRESS><PHONE_NUMBER>

The closure size is still enormous

Yea, do we know what the standard practice on nixpkgs is to reduce the size of final Haskell packages (in pkgs.*)? I've used remove-references-to in the past but that's a somewhat manual process.
cf. https://github.com/EmaApps/emanote/issues/295

FWIW, this is what I did for neuron:
          remove-references-to -t ${self.pandoc-types} $out/bin/neuron
          remove-references-to -t ${self.warp} $out/bin/neuron
          remove-references-to -t ${self.HTTP} $out/bin/neuron
          remove-references-to -t ${self.js-jquery} $out/bin/neuron
          remove-references-to -t ${self.js-dgtable} $out/bin/neuron
          remove-references-to -t ${self.js-flot} $out/bin/neuron

Honestly, the closure size for nix builds of emanote have been blocking me from deploying it for awhile, so it would be amazing if
we could get it optimized. If you don't have time to get to it for awhile @maralorn just let me know and I can make a patch.

and.. thanks for your work on this

@edrex I would very much welcome your help! Would especially nice to get this in before branch-off on the 21st.

Ok, I'll follow up with a PR when i have a draft.

I dropped the ball on this and missed the branch-off window - been working more with a hammer than a keyboard these past weeks. Still top of queue for nix stuff.

No worries. We can also always do a backport for this. So no meet to worry about branch off.

Emanote 0.8.2 will also be soon released (with these changes) marking the official public initial release. So there is another opportunity, @edrex

Note that emanote still has a runtime dependency on nodejs via tailwindcss, which accounts for most of the remaining size.


Windows binary

Dear @skeeto,
Could you be so kind to generate .exe for the rest of us who use Windows 7 x64 w/o C?

Instead of that, here's a less direct but more general solution:

Download w64devkit, my Mingw-w64 distribution specifically designed to solve this problem. It's a single "portable" .zip file, no installers. Pre-built toolchains are under "Releases" on the right. It currently supports every Windows back to and including XP, which includes Windows 7.

Unzip w64devkit-1.21.0.zip (or whatever version you prefer) in some convenient location. Doesn't matter where.

Run w64devkit.exe to bring up a unix shell (busybox-w32). It speaks native Windows paths, and there's no virtual unix root / like msys. Navigate to the ulid-c repository.

Run make ulidgen or perhaps more sensibly make CFLAGS=-O LDFLAGS=-s ulidgen. Now you have your ulidgen.exe, a native Windows console program.

If you don't want w64devkit anymore, close the terminal then simply delete the w64devkit/ directory that you had unzipped. No uninstall required.

Oh, Christopher, it's you, the author of Enchive! Oh, 6 years passed.
Right, I managed to follow your instructions without hesitation, except for the ambiguity of how to “navigate to the repository”. In the end I downloaded your Github repository as ZIP by pressing the green button CODE and extracted it to %userprofile% where I was teleported after launching w64devkit.exe according to ls command.
ulidgen.exe was compiled without errors. Its UX leaves much to be desired (e.g. the check does not give a clear message about how it ended, the stamps are more computer-oriented than human-oriented, etc), but it works, indeed. Thank you.


Minor phrasing problem in training documentation

In the Charcoal training documentation, on the page "4. Handling Reports", under Self-Promotion, the second bullet point reads:

On sites you’re familiar with, many well-meaning users respond well a polite comment requesting the author to edit in disclosure.

I believe it is missing the word 'to' ("many well-meaning users respond well a polite comment"), or I'm misinterpreting the sentence and it requires another construction.

Thanks for pointing this out! This is now repaired. See PR #84 over on our documentation repo.


Adding net/http client instrumentor

Hi,
This PR attempts to add instrumentation for net/http client.
We do it by writing a fake tophash value (as calculating the correct one will be harder to achieve) to the first headers map bucket and writing the "traceparent" header key and value into memory.
This was tested with Go versions 1.12-1.19.
Our test environment consisted of instrumented Python application that sends a request to instrumented Go http server which in turn sends an http request to an additional instrumented Go http server.
The produced trace looks like the following:

We would love to get your feedback on this.
Thanks!

So sorry for the huge delay! I promise to finish looking on this by the end of this week

@oxeye-gal any interest in re-opening this in https://github.com/open-telemetry/opentelemetry-go-instrumentation ?

Hi @vreynolds, sure thing i'll do it later this week.

Hey @oxeye-gal - If you would like help porting this to the OTel repo, let me know -- I'm happy to help however I can.

fwiw, I was able to see this work writing traceparent headers in a test app, with a small change to how link.UprobeOptions are initialized. Looks like in the OTel repo the offsets should be passed as Address option rather than Offset


NTR: miRNA_variant

What is this request referring to?
miRNA variant
What is the name you would like SO to give the term?
miRNA_variant
What is the definition that you would like for this term?
A variant occurring within a miRNA gene.
Synonyms
Parent Term
Relevant Publications
Cingolani P, Platts A, Wang le L, Coon M, Nguyen T, Wang L, Land SJ, Lu X, Ruden DM. A program for annotating and predicting the effects of single nucleotide polymorphisms, SnpEff: SNPs in the genome of Drosophila melanogaster strain w1118; iso-2; iso-3. Fly (Austin). 2012 Apr-Jun;6(2):80-92. doi: 10.4161/fly.19695. PMID: 22728672; PMCID: PMC3679285.

Please specify the parent term you'd like associated with this term.


Add support for extra curl parameters

This is super useful if you want to send extra headers to the Rain Gauge server.

Verified that @tonybruess has signed the CLA. Thanks for the pull request!


Add Account Linking Functionality

A System Integrator i started working with, which we are working at an opp with, stated that WSO2 IS misses some functionalities that can lead it to become a true CIAM tool. One of this is Account Linking:

from the User Portal it should be possible to link to external IdP (specially social sites like Facebook) and start the sign up process logging in to the external IdP and importing user data; moreover it should be possible to complete the account registration with further data
the same as 1 should be possible from an app (SP) directly, without going to the user portal.

Hi @stefanonegri,
As you are talking about sign-up process, user won't be able to login in to the user portal in the first place..
When user try to access user portal, user will get the login page similar to the below one.

Then user will be able to click on register link in that UI and start the self registration process.
In the default self registration form, as of now, it only have the option of direct registration (without utilizing any external IDP).
But the product is capable of start the sign up process logging in to the external IdP, use the information retrieved by the external IdP to fill information required in the registration process and only request additional information to complete the registration process. In order to get this capability to the registration form, its need to customize only the registration UI as of now.
In the customized registration form, you just need to add a "idp initiated login link" to the social IDP you wish to enable during the registration. As the product is capable of JIT provision users in the login flow, the rest of the user on-boarding process will be work as you mentioned above..
Thanks,

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


GetRandom.Url is not unique when using CreateListOfSize(..).

When trying to return a list of YourCustomClass using CreateListOfSize(..) ... and one of the properties of YourCustomClass is a string but is randomized using GetRandom.Url() .. then results are all the same.
e.g. (working repo code)
    public class GetRandomTests
    {
        [Fact]
        public void RandomGenerator_GetUrl_ReturnsUniqueUrls()
        {
            // Arrange.
            const int listSize = 10;

            // Act.
            var urls = Builder<MyClass>.CreateListOfSize(listSize)
                                       .All()
                                       .With(x => x.StringOne, GetRandom.Url())
                                       .Build();

            // Assert.
            urls.DistinctBy(x => x.StringOne)
                .Count()
                .ShouldBe(listSize);
        }
    }

In the example above, I'm asking to create list of 10x MyClass. In it, I'm asking that the property StringOne is randomized to be some random Url. Great! What's happening though, is that each instance of MyClass.StringOne all have the same value, instead of 10 unique values, per instance.
Why?
This nasty line which creates ONE static RandomGenerator. This means, the same seed for any code that calls that RandomGenerator ... and .. if this happens really quickly .. then ru-roh ... the same result.
So what to do?
I'm going to see if by removing the static helps. Basically, each time a GetRandom.XXX method is called, a new random generator is instantiated. Is this 'more expensive'? Yep. Does it mean we can get more unique values. YEP.
I'm not too sure how, but I would love to know how to get some timings on my test before/after to compare the 'cost' of this.

Urgh. Closing this. During my fix - it was still experiencing the same problem :(
So I reviewed how I was setting this value:
// Act.
var urls = Builder<MyClass>.CreateListOfSize(listSize)
                           .All()
                           .With(x => x.StringOne, GetRandom.Url())
                           .Build();

I think this means the following:
.With(x => x.StringOne, GetRandom.Url())
For all of the x.StringOne properties, use THIS SINGLE/ONE-TIME COMPUTED value: GetRandom.Url(). Which means, GetRandom.Url() is called 1x only and reused 9x.
vs
.With(x => x.StringOne = GetRandom.Url())
For each time you set the  x.StringOne property, call the method GetRandom.Url(). Which means, GetRandom.Url() is called 10x.
Doh!


Rust CSV consumer test is failing

The CSV consumer test in rust is failing to load the plugin. It seems it cannot communicate to the plugin server, or perhaps just read the stdout:
➜  csv-consumer-rust git:(main) ✗ LOG_LEVEL=debug RUST_LOG=debug cargo test -- --nocapture
warning: struct is never constructed: `CsvClient`
 --> src/lib.rs:5:8
  |
5 | struct CsvClient {
  |        ^^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: associated function is never used: `new`
  --> src/lib.rs:10:10
   |
10 |   pub fn new<S>(url: S) -> CsvClient where S: Into<Url> {
   |          ^^^

warning: associated function is never used: `fetch`
  --> src/lib.rs:16:16
   |
16 |   pub async fn fetch(&self, report: &str) -> anyhow::Result<String> {
   |                ^^^^^

warning: associated function is never used: `save`
  --> src/lib.rs:22:16
   |
22 |   pub async fn save(&self, report: &str, data: &Vec<Vec<String>>) -> anyhow::Result<bool> {
   |                ^^^^

warning: `csv-consumer-rust` (lib) generated 4 warnings
    Finished test [unoptimized + debuginfo] target(s) in 2.25s
     Running unittests (target/debug/deps/csv_consumer_rust-89d8d8ee55776822)

running 2 tests
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::catalogue_manager] Updated catalogue entries:
    core/content-generator/binary
    core/content-generator/json
    core/content-matcher/json
    core/content-matcher/multipart-form-data
    core/content-matcher/text
    core/content-matcher/xml
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::catalogue_manager] Updated catalogue entries:
    core/matcher/v1-equality
    core/matcher/v2-max-type
    core/matcher/v2-min-type
    core/matcher/v2-minmax-type
    core/matcher/v2-regex
    core/matcher/v2-type
    core/matcher/v3-content-type
    core/matcher/v3-date
    core/matcher/v3-datetime
    core/matcher/v3-decimal-type
    core/matcher/v3-includes
    core/matcher/v3-integer-type
    core/matcher/v3-null
    core/matcher/v3-number-type
    core/matcher/v3-time
    core/matcher/v4-array-contains
    core/matcher/v4-equals-ignore-order
    core/matcher/v4-max-equals-ignore-order
    core/matcher/v4-min-equals-ignore-order
    core/matcher/v4-minmax-equals-ignore-order
    core/matcher/v4-not-empty
    core/matcher/v4-semver
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::catalogue_manager] Updated catalogue entries:
    core/interaction/http
    core/interaction/https
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::plugin_manager] Loading plugin PluginDependency { name: "csv", version: None, dependency_type: Plugin }
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::plugin_manager] Loading plugin PluginDependency { name: "csv", version: None, dependency_type: Plugin }
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::plugin_manager] Did not find plugin, will start it
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::plugin_manager] Loading plugin manifest for plugin PluginDependency { name: "csv", version: None, dependency_type: Plugin }
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::plugin_manager] Looking for plugin in "/Users/matthewfellows/.pact/plugins"
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::plugin_manager] Found plugin manifest: "/Users/matthewfellows/.pact/plugins/csv-0.0.0/pact-plugin.json"
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::plugin_manager] Starting plugin with manifest PactPluginManifest { plugin_dir: "/Users/matthewfellows/.pact/plugins/csv-0.0.0", plugin_interface_version: 1, name: "csv", version: "0.0.0", executable_type: "exec", minimum_required_version: None, entry_point: "pact-plugin-csv", entry_points: {}, dependencies: None }
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::plugin_manager] Detected OS: Mac OS 10.15.7 [64-bit]
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::plugin_manager] Starting plugin using "/Users/matthewfellows/.pact/plugins/csv-0.0.0/pact-plugin-csv"
[2021-12-06T03:21:44Z DEBUG pact_plugin_driver::plugin_manager] Plugin csv started with PID 97516
test tests::test_csv_client has been running for over 60 seconds
test tests::test_post_csv has been running for over 60 seconds
[2021-12-06T03:22:44Z ERROR pact_plugin_driver::child_process] Timeout waiting to get plugin startup info: timed out waiting on channel
thread 'tests::test_post_csv' panicked at 'Could not load plugin - Plugin process did not output the correct startup message in 60 seconds: timed out waiting on channel', /Users/matthewfellows/.cargo/registry/src/github.com-1ecc6299db9ec823/pact_consumer-0.8.1/src/builders/pact_builder.rs:119:21
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[2021-12-06T03:22:44Z DEBUG pact_plugin_driver::plugin_manager] Did not find plugin, will start it
[2021-12-06T03:22:44Z DEBUG pact_plugin_driver::plugin_manager] Loading plugin manifest for plugin PluginDependency { name: "csv", version: None, dependency_type: Plugin }
[2021-12-06T03:22:44Z DEBUG pact_plugin_driver::plugin_manager] Starting plugin with manifest PactPluginManifest { plugin_dir: "/Users/matthewfellows/.pact/plugins/csv-0.0.0", plugin_interface_version: 1, name: "csv", version: "0.0.0", executable_type: "exec", minimum_required_version: None, entry_point: "pact-plugin-csv", entry_points: {}, dependencies: None }
test tests::test_post_csv ... FAILED

I am able to start the plugin manually and then telnet to it:
➜  csv-consumer-rust git:(main) ✗ ~/.pact/plugins/csv-0.0.0/pact-plugin-csv
{"port":51891, "serverKey":"febb62a5-ce58-41c6-9edd-18cbe36fdc25"}

The Java test works as expected.
I'm wondering if

Just noting that I get the same issue running the protobufs one, and I am also able to start that manually also.
The provider verification side also works from an external process (via the CLI), which leads me to wonder if perhaps there is some process or thread lock happening that means it can't access stdout yet because the process itself is blocked from reading it?

CSV examples are not running on CI: https://github.com/pact-foundation/pact-plugins/actions/runs/3012880725


Validation rule: time

Would it be interesting to implement a validation rule that would check if the input can be parsed to a time.
The following would return true:

8
20
8:00
08:00

I can submit a PR if this is something you would be willing to add.

Why not just use date_format:H:i?

Thanks, but we don't process proposal issues as described in our docs.


Change include_section() macro to load file contents itself, and require full filename

The current implementation of the include_section() macro attempts to load page contents from the in-memory cache of already-loaded pages provided by the mkdocs environment.
However, mkdocs seems to load and process files breadth-first, so there is no guarantee the target page contents will be accessible from wherever this macro is called. For example, given the following directory structure:
- docs/
  - folder/
    - bar.md
  - foo.md

If foo.md attempts to use include_section() with a target of folder/bar.md, it will fail -- because while the Page will exist in env.variables['navigation'].pages, its markdown will be None because it has not been processed yet.
I came across this issue when I was attempting to add a section to docs/reference/index.md explaining how to instantiate Service classes in each language, which failed because I was trying to include the ServiceOptions protobuf object, which exists in docs/reference/proto/index.md -- which had not yet been loaded.
This PR makes the following changes:

file_name argument of include_section() must now be a full path with extension, instead of a relative URL that is matched against Page URLs

Example: reference/proto/ -> reference/proto/index.md

include_section() will now load the contents of the specified file itself, instead of looking for it in env.variables['navigation'].pages
Updated wallet-service.md to use proto_obj() in two instances

Good catch! Not opposed to this option, the other method is to change the @env target to be a post-load macro or something like that. I don't remember off the top of my head.


Getting NoMethodError (undefined method `new' for Flamegraph:Module)

Found a bug? Please fill out the sections below! 👍
Issue Summary
Got the following error when hitting the first request
NoMethodError (undefined method `new' for Flamegraph:Module):

Looks like this update can fix the problem https://github.com/hschne/rails-mini-profiler/pull/19
Steps to Reproduce

Do all thing from installation
Hit the first request to the Rails app

Any other relevant information. For example, why do you consider this a bug and what did you expect to happen instead?
Technical details

Rails version: 6.0.4
Ruby version: 2.7.2

Interesting :thinking: Do you by any chance have some module 'Flamegraph' in your application? Or possibly is it added by another third-party-gem?
Already looking at your pull request, by the way, thank you so much for submitting a fix so quickly! :bow:

If you have a public repository that exhibits that issue that would be awesome

I can only reproduce it in my private repo 😭
But I believe this error is related to flamegraph gem. After I remove flamegraph gem then rails-mini-profiler works fine. The NoMethodError error is raised from the Flamegraph module from flamegraph gem.
I've tried to create a new Rails project using the same version as my private repo but still can't reproduce it.  Kind of weird maybe I will find out in the future 🤣

Rails version: 6.0.4
Ruby version: 2.7.2
rails-mini-profiler: 0.1.1
flamegraph: 0.9.5
stackprof: 0.2.15


Separate EvaluationDetails from ResolutionDetails

As mentioned here, these should be different objects. It's a minor issue, but the EvaluationDetails should be a subset of the EvaluationDetails, as mentioned here. There's no need for the provider to be setting the flag key when the SDK can do that.
See: https://openfeature.dev/specification/types/#resolution-details
Definition of Done:

[ ] New ResolutionDetails type is added as per spec
[ ] Provider interface updated to return this type

Hey @toddbaert , I'd like to work on this :)


Implement Arbitrary for Transaction

Implement Arbitrary for Transaction and its child types

Pull Request Test Coverage Report for Build<PHONE_NUMBER>5
Details

0 of 39 (0.0%)  changed or added relevant lines in 5 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.1%) to 82.624%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

bitcoin/src/blockdata/witness.rs
0
4
0.0%

primitives/src/locktime/absolute.rs
0
4
0.0%

primitives/src/sequence.rs
0
4
0.0%

primitives/src/transaction.rs
0
9
0.0%

bitcoin/src/blockdata/transaction.rs
0
18
0.0%

Totals

Change from base Build<PHONE_NUMBER>5:
-0.1%

Covered Lines:
18930

Relevant Lines:
22911

💛  - Coveralls

The tests are passing locally, so it looks like you configured Cargo.toml correctly, however I think you want to add arbitrary to primitives/contrib/test_vars.sh so that CI will signal a failure if arbitrary isn't configured.  I'm actually curious now why we don't just use the --all-features flag.

I'd be happy to accept this. On another iteration we probably want to tighten a few things:

In Version we should prefer the normal version numbers rather than just using arbitrary i32s
In Sequence we should prefer the various constants that are in common use (0, maximum, max - 1, max height-based locktime, min time-based locktime, etc)
In Witness we should try to make things that look like witness scripts, things that look like taproot sigs and annexes, control blocks, etc.
In TxIn we want to prefer inputs where either the scriptsig or the witness is empty.
In TxOut we should try to make things that look like common output templates, and especially we should try to do OP_RETURNs using all of the "push only" opcodes including RESERVED to try to break parsers for those

But we can do these piecemeal and work on them in parallel with actually using these impls for proptests and fuzz tests.
There is also a more general problem with arbitrary which is that when you ask it to generate byte vectors it does so very inefficiently: it'll consume a byte, then consume a bit to see whether it should keep going, and repeat. With fuzzers this encourages the production of super long vectors (and then wastefully running out of data and needing to restart/backtrack).
My "solution" elsewhere has been to use length limits and small fixed templates for things like scripts and witnesses. But then this fails to test super-long objects (which we do want to test) and also the nontrivial mapping between input data and output data may confuse the fuzzer. A more principled solution would be for e.g. TxIn's impl to choose some ratios, look at u.len() and somehow cap the allowed set of data for its children. But the existing Arbitrary API does not make this easy to do.

Makes sense. It doesn't seem like too much work, just need to figure out the right ratio of "normal" to fully-arbitrary values. Created #3366 to track

LGTM

@tcharding heads up that your ack is out of date.

Legend, you moved the arbitrary impls - thanks man, appreciate it!


Default kernel -> current conda environment?

This package allowed me to access my conda environments in Jupyter Notebook / Labs, which is wonderful.
Is it possible to have Jupyter select / suggest the currently activated conda environment by default? That would be the ultimate convenience for me.

I think you're right, and that the default "Python 3" environment is actually not the built-in system default python (i.e. the one that comes bundled with e.g. macOS), but the actual system default python according to the PATH env variable. It's been a while now, but that's how it is as far as I remember, which means there's actually no problem 🙂


EndpointGroup design issues

It seems like some users have the following concerns with the current EndpointGroup and EndpointGroupRegistry API:

Using a 'string' as a way to specify a target endpoint group makes it hard to build a clear dependency between an EndpointGroup and a Client.
There's no clear unified contract for the life cycle of an EndpointGroup, which complicates the user application shutdown process.

While digging into endpoint groups, I came to a feeling that EndpointGroup should be tied to ClientFactory instead of a static registry. The main reason for this is HttpHealthCheckedEndpointGroup is tied to a ClientFactory - it doesn't seem to make sense for this to be accessible from different factories through the static registry and is hard for me to reason about. Also, using custom ClientFactory is somewhat advanced - I think these users would generally expect registering endpoints to their custom, awesome ClientFactory. Normal usage could still use a static method to register to the default ClientFactory.

One advantage of keeping EndpointGroups in a ClientFactory is that they can be closed automatically when their ClientFactory is closed.

In https://github.com/openzipkin/zipkin/issues/2699 I found that even after configuring a http health checked endpoint group with our customized client factory, I was still missing the fact that DnsEndpointGroup should be using that factory's event loop group, not common pools, to keep everything together. So not just HttpHealthCheckedEndpointGroup, but also DnsEndpointGroup and any other type of endpoint group that uses armeria / netty inside it will be easier to set up in a consistent way if a client factory is involved in initialization.

@anuraaga wrote:
Realized this idea was proposed in the issue already but didn't think enough until now - I'm not sure this is all that much better since it means creating the client before registering the endpoint group.
HttpClient client = HttpClient.of("https://group:foobar/");
HealthCheckedEndpointGroup foobar = HealthCheckedEndpointGroup.builder(...)
  .options(client.options())
  .build();
EndpointGroupRegistry.register("foobar", foobar, ROUND_ROBIN);

Creating an HttpClient that references a group that doesn't exist yet seems quite awkward. There's a bit less code but semantically this doesn't seem quite right to me.
Though as mentioned in the issue, it seems hard to solve in a great way so maybe this is still the best we can do.
(Copied from https://github.com/line/armeria/pull/2019#pullrequestreview-278938806)

I had a chance to think about this issue lately and realized that it is not possible to tie an EndpointGroupRegistry into a ClientFactory because a user might want to use a different ClientFactory for EndpointGroups. For example, a user may want to use separate set of event loops for health checks or DNS queries.
However, it would be still nice if EndpointGroups are closed automatically when their ClientFactorys are closed. Perhaps we could provide an abstract EndpointGroup class so that all EndpointGroup implementations that extent it automatically registers themselves to their ClientFactory?

Using a 'string' as a way to specify a target endpoint group makes it hard to build a clear dependency between an EndpointGroup and a Client.

We current have Clients.newClient(), Clients.builder() and WebClient.builder() that accept a host Endpoint. Similarly, perhaps we could let a user specify an EndpointGroup and EndpointSelectionStrategy?

Similarly, perhaps we could let a user specify an EndpointGroup and EndpointSelectionStrategy?

How about integrating EndpointSelectionStrategy into EndpointGroup, e.g.
Endpoint endpoint =
    HealthCheckedEndpointGroup.builder(...)
                              .strategy(...)
                              .build();

MyStub stub = Clients.newClient("gproto+http", endpoint, MyStub.class);

...? No need to overload more methods in Clients and things look cleaner.

If there's no objection, I'll give it a shot next week after #2177 is merged. /cc @monorisk

SGTM

:+1:

There's no clear unified contract for the life cycle of an EndpointGroup, which complicates the user application shutdown process.

Thinking of allowing an EndpointGroup implementation to add a listener to a ClientFactory so that it can close itself when the ClientFactory is closed. What do you think?


How to hide the forward and backward buttons in the UI ??

How to hide the forward and backward buttons in the UI ??

This is not supported for while :/

@jeancsanchez
any update on this ticket?

I didn't make any change for this issue, but I can suggest you follow this code (not properly tested):
player = (JcPlayerView) findViewById(R.id.jcplayer);
ImageButton btnNext = (ImageButton) player.findViewById(R.id.btn_next);
ImageButton btnPrev  = (ImageButton) player.findViewById(R.id.btn_prev);

btnNext.setVisibility(View.INVISIBLE);
btnPrev.setVisibility(View.INVISIBLE);


[CI] Run C++ tests on Linux

@1u0 - the CI tests are failing after this merge. See this: https://dev.azure.com/ms/FASTER/_build/results?buildId=48979

It is failing intermittently. A couple passed, now another failure:
https://dev.azure.com/ms/FASTER/_build/results?buildId=49011

I'll look into it. I have opened a tracking issue: #203.


Display Private Key Upon Site Creation

Feature Request:
Optionally display the dat/site private key upon creation/fork. This let's the user manage an alternative backup storage for it without digging into beaker app storage and pulling it out.

Yeah we're going to try to hit this in 0.8

Still not comfortable with it?

Yeah not until we have a solution hypercore split-recovery.


Objects in hidden schema appear on information_schema in JDBC based connector

After filtering sys in MySqlClient.listSchemas.
presto> show schemas in mysql;
       Schema
--------------------
 information_schema
 performance_schema
 tpch
(3 rows)

presto> select * from mysql.information_schema.tables where table_schema = 'sys';
 table_catalog | table_schema |                  table_name                   | table_type
---------------+--------------+-----------------------------------------------+------------
 mysql         | sys          | sys_config                                    | BASE TABLE
 mysql         | sys          | host_summary                                  | BASE TABLE
...

Even after filtering Oracle internal schemas in #3784, the TestOracleIntegrationSmokeTest.testSelectInformationSchemaColumns will take about 10min due to many system tables.

Even after filtering Oracle internal schemas in #3784, the TestOracleIntegrationSmokeTest.testSelectInformationSchemaColumns will take about 10min due to many system tables.

This is insufficiency in that PR, not engine thing. I will comment there.


Issue #36386

/easycla

Hello @YashPimple, please amend the commit & retitle PR with the right message. We do not accept issue numbers in the title/commit messages & this typically needs to be included in the description of the PR.
Additionally, please address comments by @tengqm

/hold
with https://github.com/kubernetes/website/pull/36458#issuecomment-1233822803 in mind. OK to unhold once the PR title and commit message are updated.
@YashPimple it's OK to ask for help with making those changes.

@sftim In which format   do i need to name the branch?

@YashPimple : Please amend the title + the commit message to what exactly you're fixing without mentioning the issue number. The issue number can be mentioned within the description.

/unhold

/hold
The PR title isn't right. @YashPimple, please wait for a reviewer to check it's OK to unhold.

The PR author have opened another PR instead.

#36592

/close


Option to specify file name for esbuild-plugin-html output

Currently it's not possible for me to use my dev script for esbuild with this as each time a change is made I'll need to open up a new page since the hash changed. An option to omit the hash would solve this.

Agree, I'm not sure the hash in the generated HTML file is necessary anyway.
The HTML plugin works great, but the hash in the HTML filename makes it harder to serve.

Hello @ChildishGiant and @Thiht, thanks for the feedback! I have published the 0.7.0 version that should respect esbuild configuration for assetNames, chunkNames and entryNames. Let me know if this fix the issue.

Hi there, I'm brand new to esbuild but loving it so far, and running into this issue with trying to figure out the best practice for this... Since the entrypoint is the html file, it's weird that it's treated as an asset, and thus hashed as the rest. Because of this, if I set assetNames to just [name] then ALL assets are not hashed, which means cache-busting isn't as easy.
With my build config modified with:
  ...,
  entryPoints: ['./src/index.html'],
  assetNames: 'ASSETNAME[name]',
  entryNames: 'ENTRYNAME[name]',
  chunkNames: 'CHUNKNAME[name]',
  ...

I get the following build output:
./dist/
./dist/CHUNKNAME2.js.map
./dist/ASSETNAMEfavicon-16x16.png
./dist/ASSETNAMEfavicon-32x32.png
./dist/ASSETNAMEnavConnect.png
./dist/ASSETNAMEapple-touch-icon.png
./dist/ASSETNAMEfavicon-196x196.png
./dist/CHUNKNAME2.js
./dist/css
./dist/css/CHUNKNAME1.css
./dist/css/CHUNKNAME1.css.map
./dist/ASSETNAMEapple-touch-icon-ipad.png
./dist/ASSETNAMEnavSub.png
./dist/ASSETNAMEfavicon-48x48.png
./dist/ASSETNAMElogo.png
./dist/ASSETNAMEindex.html

Notice how my index.html is prefixed with ASSETNAME, where I'd fully expect it to say ENTRYNAME, allowing me to properly target index.html to serve, and still have hashed assets for images, css, and js.
Am I misunderstanding this, or is this a bug?

Just saw 0.15.3 release and this commit https://github.com/chialab/rna/commit/e7c73d4a29ff7a8a705b5193750644a40a962ae0
Looks pretty much like what I was doing 😅
One caveat/input I'd say is the auto-gen bundle that you create I think should be treated as an asset, and NOT and entry.
But otherwise, thanks for the update!


Add custom umask to install commands

Problem
There is no possibility to set the usmask during installation.
Solution
The install commands now have a default umask of 022 and the possibility to overwrite this by using the 'custom_umask' variable

@Rickmarges this is a great idea.
However the PR has some of the indentation's wrong.
I also removed some of the old code "refactor folder".
Can you either update the PR or maybe easier to do a new one.
//Kimmo

I will create a new pull request


Type Description for half float OpenEXR and full float OpenEXR by reported as oiio.FLOAT

Using the python API the image.format() call returns oiio.FLOAT for both 16bit half float EXR files and 32bit float EXR files.
Version:
OpenImageIO 1.4.16
Python 2.7.5

Can you be more specific about which API call you're talking about? Which class?

The code I'm using is:
image = oiio.ImageBuf(filename)
type_desc = image.spec().format
type_desc seems to be equivalent to oiio.TypeDesc(oiio.FLOAT) for both half and full float EXRs

Going through old tickets...
This seems to be fixed in master, and will therefore be in 1.6 when it's branched into a stable release (hopefully in the next several weeks).
Meanwhile, it turns out that in 1.5, the issue is really that half values are promoted to float in the underlying ImageCache that backs an ImageBuf. In the current master, some other deep structural changes made it possible to have ImageCache to store half pixels, so it will report as such.
If you are ok with the internal storage being promoted to float, and merely want to know what the original file was, you can get that by using nativespec() rather than spec().
If you also need the actual in-memory storage to be half, you may need to upgrade to master or wait for 1.6.

Fixed in 1.6. Closing.


modificationType instead of restrictionType

https://github.com/nemtech/nem2-sdk-typescript-javascript/blob/4d22d6fec1e4e722849b19480b843e8bd08f85be/src/model/transaction/AccountRestrictionModification.ts#L26
I think it should be restrictionType instead of modificationType here.
I'm testing on Elephant 2, MODIFY_ACCOUNT_RESTRICTION_ADDRESS transaction
Transaction returned by the SDK

Transaction returned by the API

Same comment for mosaics:

was this returned from ws listener or rest api calls?
which env you were using?

I am working on it right now anyway

Using accountHttp on C2

Using accountHttp on C2

try use local bootstrap, rest on c2 is not up to date

confirmed this is rest issue, I will report 👍

Going to close this one as issue reported to the rest team.
https://github.com/nemtech/catapult-rest/issues/69
Thanks very much for reporting 👍

cool! my pleasure!
Jean-Luc
Le mar. 6 août 2019 à 23:04, Steven Liu<EMAIL_ADDRESS>a écrit :

Going to close this one as issue reported to the rest team.
nemtech/catapult-rest#69
https://github.com/nemtech/catapult-rest/issues/69
Thanks very much for reporting 👍
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/nemtech/nem2-sdk-typescript-javascript/issues/220?email_source=notifications&email_token=AIWPBPYTL3RJZBHO7YMSZHDQDGHGLA5CNFSM4IJCWJK2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3VOFRA#issuecomment-518709956,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AIWPBP4UG4ULW6GVM5SJIHDQDGHGLANCNFSM4IJCWJKQ
.


Adding technocite.be and technocite.onmicrosoft.com as a school

This request is to teach the use of your software for our students at technocite A.S.B.L.
We are a learning center in belgium and one of our teachers uses your product to teach in our classes.
Our students in this case are learning Java, and some other software and they will be eligible for a job at Atos Worldwide, so it can be really interesting for them to use your software.
Thank you

@tunisiano187 Please provide us with an URL of a page on the official website where an IT-related long-term (>1 year) course is offered by the school. Thank you!

@tunisiano187 You might miss my previous comment. Please react.

@tunisiano187 I am sorry, this request remains unanswered for a while. I have to close it without merging. Please reopen and comment if you have an update regarding the aforementioned issue. Thank you for the understanding!


fixes issue 103 by trimming whitespace

fixed at https://github.com/openziti/sdk-golang/pull/53/files which is a better place for it


test: Skip offline DRM tests on Android

The offline DRM tests have begun failing on Android at a rate of 80% or more.  This was eventually determined to be related to https://crbug.com/1108158 and the timeout workaround in DrmEngine.
When close() hangs and we time out and move on, we leave sessions open that consume hardware resources at the OEMCrypto level in Android.  This eventually leads to failures like Failed to execute 'createMediaKeys' on 'MediaKeySystemAccess': MediaDrmBridge creation failed.  Logs from adb logcat show that 17 sessions are open when this fails, which likely means our lab device has a limit of 16 open sessions.
Initially, delays between these offline DRM test cases were found to be an effective workaround, but full test runs showed this to be ineffective after all.
The only recourse, until Chrome and Widevine fix their bug, is to skip these tests on Android.

@shaka-bot please test


Class methods' full source path is shown instead of the identifier used for it

Describe the bug
I have a library where I import temporian.implementation.numpy.data.event_set.EventSet in my root __init__, which enables me to write identifiers such as ::: temporian.EventSet.begin and have it find the begin() method in the EventSet class.
However, although with the ::: temporian.EventSet identifier the root heading of the page is rendered as temporian.EventSet (see https://temporian--206.org.readthedocs.build/en/206/reference/temporian/EventSet/), if I use the ::: temporian.EventSet.begin identifier it gets rendered to temporian.implementation.numpy.data.event_set.EventSet.begin (see https://temporian--206.org.readthedocs.build/en/206/reference/temporian/operators/begin/).
To Reproduce
Steps to reproduce the behavior:
A. Clone my library's repo (this branch which has the begin method in the EventSet class), install poetry env with poetry install, and run mkdocs serve -f docs/mkdocs.yml.
B. Should probably be able to reproduce this with a minimal example by doing what I describe, importing a class from a deeper path from root __init__, and using the class' root identifier vs. one of its methods'.
Expected behavior
::: temporian.EventSet.begin method's header gets rendered to temporian.EventSet.begin instead of temporian.implementation.numpy.data.event_set.EventSet.begin.
Screenshots
Class heading rendered correctly:

Method heading rendered incorrectly:

System (please complete the following information):

mkdocstrings-python version: 1.2.1
Python version: 3.9.10
OS: MacOS/Linux (same behavior when building locally in mac and in readthedocs in linux)

Additional context
Thanks in advance for any help or pointers to a solution/hack if there's any! I tried just hiding the heading with show_root_heading: false, but that also hides the method's signature, which I'd like to keep.

Note that I have a custom gen_ref_pages script that fills any empty markdown files with ::: temporian.[file_name], so the empty file that renders the EventSet class' docs gets filled with ::: temporian.EventSet.

Good catch, tough problem :upside_down_face:
We store imported members as "aliases" that point to the actual objects. Aliases have their own path, but then aliases' members are the real objects, and so they only have their real path which is computed thanks to their actual parent (and not the alias). I don't really see a way to have aliases' members use the alias path yet. I'll have to think about it.
Thanks for reporting :slightly_smiling_face:

Thanks for the quick response (as always) :)
In that case I believe I'd run into this issue https://github.com/mkdocstrings/python/issues/79, which is that the class name is not shown, so users don't know if being belongs in temporian.begin or temporian.EventSet.begin (which is the case). Maybe the sweet spot is to disable show_root_full_path + manually adding a # temporian.EventSet.begin.


docs: add descriptions to the example codes in "FEATURES"

Split a whole block of example code and add explanations for different input
parameters to improve the readability.

Task linked: CU-2gh5pf4 所有样例代码增加不同输入参数的打印结果和描述


Failing to parse rustdoc format v28

Zerocopy's CI jobs started failing yesterday, e.g. here. In total, we've seen this issue on PRs https://github.com/google/zerocopy/pull/749 and https://github.com/google/zerocopy/pull/750. The relevant error seems to be:
/home/runner/.cargo/bin/cargo semver-checks check-release --package zerocopy --all-features
     Parsing zerocopy v0.8.0-alpha.1 (current)
Error: rustdoc format v28 for file /home/runner/work/zerocopy/zerocopy/semver-checks/target/semver-checks/target/doc/zerocopy.json is not supported
Error: The process '/home/runner/.cargo/bin/cargo' failed with exit code 1

The PR most recently merged into main is https://github.com/google/zerocopy/pull/748, and its CI tests passed, so I don't believe this is caused by a change in zerocopy's codebase.

New nightly has a new rustdoc format. It's already supported on HEAD, I
just need to find some time to cut a new release.
On Mon, Dec 25, 2023, 7:33 AM Joshua Liebow-Feeser @.***>
wrote:

Zerocopy's CI jobs started failing yesterday, e.g. here
https://github.com/google/zerocopy/actions/runs/7315752855/job/19929732539?pr=750.
In total, we've seen this issue on PRs google/zerocopy#749
https://github.com/google/zerocopy/pull/749 and google/zerocopy#750
https://github.com/google/zerocopy/pull/750. The relevant error seems
to be:
/home/runner/.cargo/bin/cargo semver-checks check-release --package zerocopy --all-features
Parsing zerocopy v0.8.0-alpha.1 (current)
Error: rustdoc format v28 for file /home/runner/work/zerocopy/zerocopy/semver-checks/target/semver-checks/target/doc/zerocopy.json is not supported
Error: The process '/home/runner/.cargo/bin/cargo' failed with exit code 1
The PR most recently merged into main is google/zerocopy#748
https://github.com/google/zerocopy/pull/748, and its CI tests passed,
so I don't believe this is caused by a change in zerocopy's codebase.
—
Reply to this email directly, view it on GitHub
https://github.com/obi1kenobi/cargo-semver-checks-action/issues/61, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAR5MSR4XNBAZUR2EYEAHMLYLFXC7AVCNFSM6AAAAABBCKOMCGVHI2DSMVQWIX3LMV43ASLTON2WKOZSGA2TKNRWGA2TCMQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

cargo-semver-checks main branch HEAD, not this repo
On Mon, Dec 25, 2023, 8:29 AM Predrag Gruevski @.***>
wrote:

New nightly has a new rustdoc format. It's already supported on HEAD, I
just need to find some time to cut a new release.
On Mon, Dec 25, 2023, 7:33 AM Joshua Liebow-Feeser <
@.***> wrote:

Zerocopy's CI jobs started failing yesterday, e.g. here
https://github.com/google/zerocopy/actions/runs/7315752855/job/19929732539?pr=750.
In total, we've seen this issue on PRs google/zerocopy#749
https://github.com/google/zerocopy/pull/749 and google/zerocopy#750
https://github.com/google/zerocopy/pull/750. The relevant error seems
to be:
/home/runner/.cargo/bin/cargo semver-checks check-release --package zerocopy --all-features
Parsing zerocopy v0.8.0-alpha.1 (current)
Error: rustdoc format v28 for file /home/runner/work/zerocopy/zerocopy/semver-checks/target/semver-checks/target/doc/zerocopy.json is not supported
Error: The process '/home/runner/.cargo/bin/cargo' failed with exit code 1
The PR most recently merged into main is google/zerocopy#748
https://github.com/google/zerocopy/pull/748, and its CI tests passed,
so I don't believe this is caused by a change in zerocopy's codebase.
—
Reply to this email directly, view it on GitHub
https://github.com/obi1kenobi/cargo-semver-checks-action/issues/61, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAR5MSR4XNBAZUR2EYEAHMLYLFXC7AVCNFSM6AAAAABBCKOMCGVHI2DSMVQWIX3LMV43ASLTON2WKOZSGA2TKNRWGA2TCMQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Sounds good, thanks! Whenever that happens, could you comment here so I know that these PRs are unblocked? No rush on our side - we're not getting a lot done right now because of the holidays.

Update: we were able to work around this by using our pinned nightly toolchain for cargo-semver-checks in https://github.com/google/zerocopy/pull/753.

https://github.com/google/zerocopy/pull/753 is a good idea.
If you or others would like an SLA for supporting new nightly releases, or extended support for specific Rust versions or rustdoc formats, I'm happy to offer that under a commercial support contract. Please reach out to me over email, which you can find in the cargo-semver-checks project's Cargo.toml.
Otherwise, I aim to support the most recent few stable releases. The exact number of releases left unspecified since it's a function of rustdoc format changes and/or discovered bugs in rustdoc that affect semver-checking. I don't promise any timeline or SLA whatsoever on supporting new nightly releases.
I may also drop support for rustdoc formats that never made it into any stable Rust even though older stable formats may still be supported. For example, cargo-semver-checks v0.24 supported rustdoc formats v24, v26, and v27, and did not support rustdoc v25 because that format was never used in a stable Rust release and was only part of a few nightly Rust versions before being superseded by v26. It's possible that your pinned nightly as in https://github.com/google/zerocopy/pull/753 may occasionally fall on such an "unlucky" format — in such situations, I'd recommend either:

choosing a different nightly to pin to, or
setting up a support and reciprocal access contract with me so I know to continue supporting those versions.

In the case of Google, I know that the company has signed support and reciprocal access contracts with other open-source maintainers so that'd be something I'd be interested in as well, if you're open to looking into it internally!

The new release is building now and should be available shortly. It will get used automatically once the build completes.
https://github.com/obi1kenobi/cargo-semver-checks/actions/runs/7349612629


Add temporary shell script for automated pages/range selection

The shell script added lets you specify a range of pages on a target profile to scrape. It's not anything crazy but kinda useful when going through 17+ pages of stuff.

Thanks for the contribution! I would prefer your wrapper script and usage instructions be moved to a subdirectory, so that the primary usage remain platform agnostic. Something along the lines of this:
wrappers/
│
├─ debian/
│    ├─ runner_script.sh
│    └─ README.md
│
└─ windows/
     ├─ runner_script.bat
     └─ README.md

You don't need to include the Windows wrapper in this pull request, but please move what you've developed into a subdirectory as described and I'll get it merged in.

Okay, reedited it and put stuff into the sub directory. Thought about adding come more script for doing downloads in parallel by calling the python program with different URLS at the same time, but it might hammer the severs a bit too hard idk.

Thanks, I accept your changes!
Yes, there are sleeps in the Python code to prevent the servers from being unhappy with too much traffic; running multiple instances of the script would most likely cause a failure after several connections. I would like to experiment with orchestrating multiple threads to download more media at once in the future, but there's a fine balance between speed and getting blocked.


Feat: Add SimulateXX queries

Add queries to simulate all dex operations. Allows for easier CW interaction with the dex.
Also added a couple extra fields to the normal Dex message responses
This is a more comprehensive PR replacing the earlier version: https://github.com/neutron-org/neutron/pull/543
Related PRs
https://github.com/neutron-org/neutron-sdk/pull/162
https://github.com/neutron-org/neutron-dev-contracts/pull/63
https://github.com/neutron-org/neutron-integration-tests/pull/344

https://github.com/neutron-org/neutron-tests/actions/runs/10677779510

https://github.com/neutron-org/neutron-tests/actions/runs/10677779510

please discuss with @pr0n00gler the wasmbindings situation

https://github.com/neutron-org/neutron-tests/actions/runs/10677779510

https://github.com/neutron-org/neutron-tests/actions/runs/10677779510


Hash table and Linear probe Resolution method for Customer Details

Related Issue

#1374

Proposed Changes

Added a file for Hash Table of Customer details
Updated the Readme accordingly

Additional Info

The code was tested well and the results are in well manner.

To store a customer details and search them in well manner, we use a Hash Table. In Hash table we enter the data in Linear hashing method and search them based on the same method. if we encounter any collision, we resolve it by using a Linaer probe resolution method.
The customer details contain :

Customer name
Customer Id
customer phone

The functions used in the program :

insert() : To insert a data into the HashTable
search() : To search whether a data is present in the hash table
display() : To dispaly the Hash Table

Checklist

[x] ✅ My code follows the code style of this project.
[x] 📝 My change requires a change to the README.
[x] 🎀 I have updated the README accordingly.
[x] 👀 I have read the CONTRIBUTING document.
[x] ✨ I have added tests to cover my changes.
[x] 🚩 All new and existing tests passed.
[x] 🌟 ed the repo

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Output Screenshots

Screenshot #1

@Mrjoy832 Please review my pr
This is my third pr. My first two successful pr's are :

#1046
#1152

Keep a short name od CPP file

@Mrjoy832 renamed the cpp file succesfully

@Mrjoy832 renamed the cpp file succesfully

check imp-announcement in LearnCPP Discord channel

@Mrjoy832 done the changes sir

Good Contribution .


fix p2p flake

sometimes the unit-tests under comm fail due to timeouts in bootstrapping the libp2p network.
To avoid such a failure, we can give up to three chance to initialise the network properly.

it is an FSC issue


feat: allow custom time formatting in templates

Allows for a timeformat function in templates.
Example usage:
{{ .startdate | timeformat "January 2006" }}

I'm using this because the JSON Resume spec requires YYYY-MM-DD format in the JSON, but I'd prefer a more natural format in the HTML/PDF.
(PR from branch on my fork this time to avoid other changes)

Thank you! 🙏


CI is failing for all recent commits

Hi, we sometimes use the last green HEAD for certain features not yet in the latest release. The status report from CI is the only green signal I can capture without pulling the repo and run the test first.  That's why I believe this should be either fixed or removed until it's giving useful signals.

Understood. I’m trying to cover the build on HEAD case.
I’m now using the HEAD to log with source location as I don’t want wait another 2 weeks for the next release and it’s unrealos to cherrypick the commit into the last release with Bazel repo rules. Now, without the green signal I’ll be forced to run all the tests myself.
I think as Github’s status api is the standard way of saying if a commit is good for something that’s hosted on Github, it should mean something.  If that’s something internal only, please make it so.

I've submitted https://code-review.googlesource.com/c/gocloud/+/30130 to start a conversation; we may remove the perpetually failing appveyor.

Done - as of e8da4c3f9c7cb69cb60c9a9d302f9c8e7e4603fd we should be green.


after installing the icon picker package and using the icon picker input

Declaration of Guava\FilamentIconPicker\Forms\IconPicker::relationship(Closure|string|null $name, Closure|string|null $titleAttribute, ?Closure $modifyQueryUsing = null): static must be compatible with Filament\Forms\Components\Select::relationship(Closure|string|null $name = null, Closure|string|null $titleAttribute = null, ?Closure $modifyQueryUsing = null, bool $ignoreRecord = false): static

Hello @hussainabuhajjaj Please make sure you use the latest version of icon picker, you seem to use an older version.


Youtube-dl is down?

Checklist

[x] I'm asking a question
[x] I've looked through the README and FAQ for similar questions
[x] I've searched the bugtracker for similar questions including closed ones

Question

The site https://youtube-dl.org/ is down? impossible to update youtube-dl

aries.uberspace.de is being moved to Uberspace 7. This will take some hours of downtime.
From https://is.uberspace.online/:

aries.uberspace.de Host aries is being migrated to Uberspace 7
6 hours ago
This host will move to U7, causing a downtime of multiple hours today.

Good luck guys! love you all
Thank you


Upgrade the GKE end-to-end guide

Upgrading the GKE end-to-end guide to use Kubeflow v0.4.1 and the updated MNIST example in the Kubeflow Examples repo (rather than the MNIST from the codelab repo).

This change is

/cc @DanSanche
@DanSanche Please would you review and LGTM when you're happy with the updated content.
Fixed https://github.com/kubeflow/website/issues/261
This tutorial upgrade is now ready for review.
Preview: https://deploy-preview-456--competent-brattain-de2d6d.netlify.com/docs/gke/gcp-e2e/

Thanks for the review @aikidave !

Thanks for the review @DanSanche ! PTAL.

/approve

/lgtm


machine-controller-manager-provider-local node image build fails

What happened:
machine-controller-manager-provider-local node image build fails with:
#10 [linux/amd64 2/9] RUN apt-get update -yq &&     apt-get install -yq --no-install-recommends wget apparmor apparmor-utils jq
#0 0.193 Ign:1 http://security.ubuntu.com/ubuntu impish-security InRelease
#0 0.210 Err:2 http://security.ubuntu.com/ubuntu impish-security Release
#0 0.210   404  Not Found [IP: <IP_ADDRESS> 80]
#0 0.318 Ign:3 http://archive.ubuntu.com/ubuntu impish InRelease
#0 0.396 Ign:4 http://archive.ubuntu.com/ubuntu impish-updates InRelease
...
#0 0.711 Err:8 http://archive.ubuntu.com/ubuntu impish-backports Release
#0 0.712   404  Not Found [IP: <IP_ADDRESS> 80]
#0 0.719 Reading package lists...
#0 0.725 E: The repository 'http://security.ubuntu.com/ubuntu impish-security Release' does not have a Release file.
#0 0.726 E: The repository 'http://archive.ubuntu.com/ubuntu impish Release' does not have a Release file.
#0 0.728 E: The repository 'http://archive.ubuntu.com/ubuntu impish-updates Release' does not have a Release file.
#0 0.728 E: The repository 'http://archive.ubuntu.com/ubuntu impish-backports Release' does not have a Release file.
#10 ERROR: process "/bin/sh -c apt-get update -yq &&     apt-get install -yq --no-install-recommends wget apparmor apparmor-utils jq" did not complete successfully: exit code: 100
------

Ref
This is due to https://github.com/kubernetes-sigs/kind/issues/2863, and it is fixed in the kindest/node:v1.25.0 image but we cannot use this yet because of https://github.com/gardener/gardener/issues/5325
What you expected to happen:
Node image build to be successful.
How to reproduce it (as minimally and precisely as possible):
Run docker build -t test:v1 ./node/. locally with the current kind image (https://github.com/gardener/machine-controller-manager-provider-local/blob/c85c4eaf942d87fa1cb694d6df79016c5ffe28e2/node/Dockerfile#L1).
and see it fail on step:
https://github.com/gardener/machine-controller-manager-provider-local/blob/c85c4eaf942d87fa1cb694d6df79016c5ffe28e2/node/Dockerfile#L6-L7
with the above error.
Run again with kindest/node:v1.25.0 and see it passes.
Anything else we need to know:
Environment:

This is fixed meanwhile.


Grounddb only keeps the newest sub

Hello,
First thanks to @raix for his package, absolutely necessary for making offline Meteor apps.
I have a collection called worksheets. When one asks for an URL the server sends him only worksheets that the URL has asked for (if url = foo.bar/10, the server sends worksheets with category 10).
Concretely : this.autorun(() => Meteor.subscribe(`worksheets.${FlowRouter.getRouteName()}`));
The problem is that each time there's a new subscription EVERY SINGLE WORKSHEETS that have not the category of the url (for instance the category 10) ARE DELETED from the cache of my app (indexeddb), even tough I do not use the .keep() method !
So : how to keep multiple subsets of a collection in one grounded collection OR how to always add data when there's a new sub without deleting old ones in my grounded collection ?

I was doing more test to see if I could change the behavior but I still have the same problem as described above.

I think I will change the whole collection by creating fields for different kind of categories.

Finally I didn't succeed to put worksheet in documents which were supposed to respresent categories. Anyway, I'm not sure it was a good idea.
So how make grounddb keeping all different sub for a single collection ??

@raix I so need your help.

should be possible using v2 of ground db - it lets you observe and keep a subset of a meteor collection

I use latest V2 RC5.
  Tracker.autorun(() => Meteor.subscribe('worksheets', { type: FlowRouter.getRouteName() }));

There are two patterns, I think the last pattern of the two will suite your case - if I understand you correctly:
export const Worksheets = new Mongo.Collection('worksheets');
export let localWorksheets;

if (Meteor.isClient) {
  localWorksheets = new RGround('worksheets');
  localWorksheets.observeSource(Worksheets.find());

  Tracker.autorun(() => {
    const sub = Meteor.subscribe('worksheets', { type: FlowRouter.getRouteName() });
    // When subscription data is ready, keep the most important
    Tracker.autorun(() => {
      if (sub.ready()) {
        c.stop();
        localWorksheets.keep(Worksheets.find(someSubSetToKeep));
      }
    });
  });
}

or
export const Worksheets = new Mongo.Collection('worksheets');
export let localWorksheets;

if (Meteor.isClient) {
  localWorksheets = new RGround('worksheets');

  Tracker.autorun(() => {
    Meteor.subscribe('worksheets', { type: FlowRouter.getRouteName() });
    // The previous source observer will be stopped and the new one will be used:
    localWorksheets.observeSource(Worksheets.find(someSubSetToKeep));
  });
}

I'll try later on, thanks @Raix.

Actually I had to remove ground:db which was causing all kind of bug since weeks/months (waste of hundreds of hours because I wasn't smart enough to understand the problem), I first taught it was Meteor who had problem but finally it's probably kernel:dispatcher so I wait a fix for that so I can continue coding and try your ideas. Thanks in any way for your great support @raix 👍

Damn it's weird but it's fully working. I had to recreate an observeSource() when I subscribe to a new sub but please note that I had also to .find({ category: specificCategory }) a specific subset not just to recreate an observeSource as @raix told me to do. I didn't know that ground:db is getting the context of the .find() to differentiate subsets, I mean it's logical I have to say 'I give you only those docs with categories so docs with other categories are probably still on the server, don't delete'em' But I didn't know how to do it and I didn't know that ground:db can know the parameters I used in .find().

Hello, I was using the second pattern otherwise now I want the grounded collection to remove docs with a certain category (let's call this category X) which are not on the latest sub.
So I came up with sthg like that :
    localWorksheets.observeSource(Worksheets.originalFind());
  this.autorun(() => {
    let sub;
    if (FlowRouter.getRouteName()) sub = Meteor.subscribe('worksheets', FlowRouter.getRouteName());

    Tracker.autorun(() => {
      if (sub.ready()) {
// originalFind is my custom bind to Worksheets.find() as I use .find() to be localWorksheets.find() on the client
        localWorksheets.keep(Worksheets.originalFind({
          category: categories.findIdCategory(FlowRouter.getRouteName()),
        }));
      }
    });
  });

What do I want ?
Each time I change the URL I want localWorksheets to keep to the localStorage worksheets with the category X (depends of the URL) in the sub but NOT deleting at all worksheets belonging to categories different than X.

There might be different ways of doing this:
you can pass in multiple cursors for keep,
  localWorksheets.keep(originalFind(a), originalFind(b));

you could also track an array of categories to track and use the $in: categoriesToKeep maybe have categoriesToKeep be reactive


Angular google maps: Google map component not being recognized even though its module has been added to app module

Is this a regression?

[ ] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was
No response
Description
I keep getting an error: error NG8001: 'google-map' is not a known element. I have added the GoogleMapsModule to the app.module.ts file. I suspected the issue might be from the version of the packages I installed. I updated angular to angular 15 (latest now), and updated all the packages I had installed. I run npm cache verify to ensure that it was not a caching problem. I restarted the angular server several times, but I still kept getting the error NG8001: 'google-map' is not a known element.
Error: app/components/home/home.component.html:3:3 - error NG8001: 'google-map' is not a known element:
If 'google-map' is an Angular component, then verify that it is part of this module.
If 'google-map' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the<EMAIL_ADDRESS>of this component to suppress this message.
app.module.ts
`import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';
import { MatLegacySnackBarModule as MatSnackBarModule } from '@angular/material/legacy-snack-bar';
import { MatLegacyDialogModule as MatDialogModule, MAT_LEGACY_DIALOG_DEFAULT_OPTIONS as MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/legacy-dialog';
import { ReactiveFormsModule } from '@angular/forms';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { ChooseDestinationComponent } from './components/choose-destination/choose-destination.component';
import { GooglePlaceModule } from 'ngx-google-places-autocomplete';
import { AwaitingComponent } from './components/awaiting/awaiting.component';
import { DiverHomeComponent } from './components/driver-components/diver-home/diver-home.component';
import { OngoingRideComponent } from './components/ongoing-ride/ongoing-ride.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { ConfirmDialogComponent } from './components/dialogs/confirm-dialog/confirm-dialog.component';
import { initializeApp, provideFirebaseApp } from '@angular/fire/app';
import { environment } from '../environments/environment';
import { provideAnalytics, getAnalytics, ScreenTrackingService, UserTrackingService } from '@angular/fire/analytics';
import { provideAuth, getAuth } from '@angular/fire/auth';
import { provideDatabase, getDatabase } from '@angular/fire/database';
import { AngularFireDatabase } from '@angular/fire/compat/database';
import { DatabaseService } from './services/database.service';
import { AngularFireModule } from '@angular/fire/compat';
import { CallNumber } from '@awesome-cordova-plugins/call-number/ngx';
import { StartTripComponent } from './components/dialogs/start-trip/start-trip.component';
import { AuthService } from './services/auth.service';
import { DriverCardComponent } from './components/driver-card/driver-card.component';
import { SignUpComponent } from './components/sign-up/sign-up.component';
import { SignInComponent } from './components/sign-in/sign-in.component';
import { AuthGuardService } from './services/auth-guard.service';
import { GoogleMapsModule } from '@angular/google-maps';
@NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [
AppComponent,
ChooseDestinationComponent,
AwaitingComponent,
DiverHomeComponent,
OngoingRideComponent,
ConfirmDialogComponent,
StartTripComponent,
DriverCardComponent,
SignUpComponent,
SignInComponent,
],
imports: [
GoogleMapsModule,
BrowserModule,
AppRoutingModule,
ReactiveFormsModule,
AngularFireModule.initializeApp(environment.firebase),
HttpClientModule,
GooglePlaceModule,
BrowserAnimationsModule,
MatSnackBarModule,
MatDialogModule,
provideFirebaseApp(() => initializeApp(environment.firebase)),
provideAnalytics(() => getAnalytics()),
provideAuth(() => getAuth()),
provideDatabase(() => getDatabase()),
],
providers: [{ provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { hasBackdrop: false } },
ScreenTrackingService,
UserTrackingService,
AngularFireDatabase,
DatabaseService,
AuthService,
CallNumber,
AuthGuardService
],
bootstrap: [AppComponent]
})
export class AppModule { }
`
package.json
{   "name": "lorley",   "version": "0.0.0",   "scripts": {     "ng": "ng",     "start": "ng serve",     "build": "ng build",     "watch": "ng build --watch --configuration development",     "test": "ng test"   },   "private": true,   "dependencies": {     "@angular/animations": "^15.1.4",     "@angular/cdk": "^15.1.4",     "@angular/common": "^15.1.4",     "@angular/compiler": "^15.1.4",     "@angular/core": "^15.1.4",     "@angular/fire": "^7.5.0",     "@angular/forms": "^15.1.4",     "@angular/google-maps": "^15.1.4",     "@angular/material": "^15.1.4",     "@angular/platform-browser": "^15.1.4",     "@angular/platform-browser-dynamic": "^15.1.4",     "@angular/router": "^15.1.4",     "@awesome-cordova-plugins/call-number": "^5.46.0",     "@capacitor-community/capacitor-googlemaps-native": "^1.2.0",     "@capacitor/android": "^4.0.1",     "@capacitor/core": "^4.6.1",     "@capacitor/geolocation": "^4.0.1",     "@capacitor/google-maps": "^4.0.1",     "@capacitor/ios": "^4.0.1",     "@capacitor/preferences": "^4.0.2",     "call-number": "^1.0.1",     "ngx-google-places-autocomplete": "^2.0.5",     "rxjs": "~7.4.0",     "tslib": "^2.3.0",     "zone.js": "~0.11.4"   },   "devDependencies": {     "@angular-devkit/build-angular": "^15.1.5",     "@angular/cli": "^15.1.5",     "@angular/compiler-cli": "^15.1.4",     "@capacitor/cli": "^4.6.1",     "@types/jasmine": "~3.10.0",     "@types/node": "^12.11.1",     "jasmine-core": "~3.10.0",     "karma": "~6.3.0",     "karma-chrome-launcher": "~3.1.0",     "karma-coverage": "~2.0.3",     "karma-jasmine": "~4.0.0",     "karma-jasmine-html-reporter": "~1.7.0",     "typescript": "~4.8.4"   } }
home component:
`import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from '@angular/core';
// import { GoogleMap } from '@capacitor/google-maps';
import { Geolocation, Position } from '@capacitor/geolocation';
import { environment } from 'src/environments/environment';
import { Router } from '@angular/router';
import { AuthService } from 'src/app/services/auth.service';
import { UserService } from 'src/app/services/user.service';
import { HttpClient } from '@angular/common/http';
import { catchError, map, Observable, of } from 'rxjs';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit, AfterViewInit {
@ViewChild('map')
mapRef!: ElementRef;
// newMap!: GoogleMap;
apiLoaded: Observable;
constructor(private router: Router, private authService: AuthService, private userService:UserService, private httpClient:HttpClient) {
this.apiLoaded = httpClient.jsonp('https://maps.googleapis.com/maps/api/js?key=', 'callback')
.pipe(
map(() => true),
catchError(() => of(false)),
);
}
async getCurrentPosition() {
return Geolocation.getCurrentPosition();
};
chooseDestination() {
this.router.navigate(['choose-destination']);
}
}
`
home component html
`<div *ngIf="apiLoaded | async">

`
Reproduction
Steps to reproduce:

Update angular to version 15.1.5
Run npm install @angular/google-maps
Add the google maps module to imports of app.module.ts
Add the google-map component to a component in your application.

Expected Behavior
The google map is expected to be displayed
Actual Behavior

Environment

Angular: v.15
CDK/Material:
Browser(s): Google chrome, Brave
Operating System (e.g. Windows, macOS, Ubuntu):

HomeComponent was not part of the declarations array in app.module.ts. I think because of that, it was not seeing the GoogleMapsModule.