sassc is very slow to compile and install

When doing a bundle install for a new Rails 6 app, I noticed most of the time is spent compiling sassc (libsass really).
This takes easily up to 2 minutes on Linux, which feels really slow for one gem.
A bit of a Nokogiri-like experience if you see what I mean.
Speaking of Nokogiri, they now have a prerelease gem installing in just 1 second, maybe we can use a similar approach?
$ ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
$ time gem install sassc
Building native extensions. This could take a while...
Successfully installed sassc-2.2.1
1 gem installed
89.75s user 5.43s system 99% cpu 1:36.12 total

I'm not sure what's the best way to address this but here are some ideas:

Use the Makefile of libsass to build libsass as a shared library, and just link the C extension to it (as it used to be).
Use make parallelism automatically, e.g., by setting MAKEFLAGS
Distribute a binary gem on Linux and macOS. This requires having an easy workaround for non-glibc (e.g., alpine) to install from source, or not depending on on glibc (by linking the libc statically?).
Changes in libsass so it compiles faster, such as #132.
I thought the -flto might slow things down but actually it seems to speed up compilation with g++ 8.3.1! time gem install sassc -- --disable-lto takes 113.71s user 6.01s system 99% cpu 2:00.70 total.
Disabling all flags gives: time gem install sassc -- --disable-lto --disable-march-tune-native --disable-static-stdlib => 109.80s user 5.63s system 99% cpu 1:56.12 total.

Use the Makefile of libsass to build libsass as a shared library

That already builds quite a bit faster:
$ time BUILD=shared make
...
70.53s user 3.94s system 99% cpu 1:14.93 total

I would think the main gain there is that's compiled with -O2:
g++ -Wall -O2 -DLIBSASS_VERSION="3.6.1" -std=c++11 -I /home/eregon/code/libsass/include -fPIC -c -o src/remove_placeholders.o src/remove_placeholders.cpp

instead of (with gem install sassc):
g++ -I. -I/home/eregon/.rubies/ruby-2.6.5/include/ruby-2.6.0/x86_64-linux -I/home/eregon/.rubies/ruby-2.6.5/include/ruby-2.6.0/ruby/backward -I/home/eregon/.rubies/ruby-2.6.5/include/ruby-2.6.0 -I. -I./libsass/include -fPIC -O3 -ggdb3 -std=c++11 -march=native -mtune=native -flto -DLIBSASS_VERSION="3.6.1" -o remove_placeholders.o -c ./libsass/src/remove_placeholders.cpp

We can also parallelize it (I have 4 cores + 4 hyperthreads, i7-7700HQ CPU @ 2.80GHz):
$ time BUILD=shared MAKEFLAGS=-j4 make
81.15s user 4.51s system 387% cpu 22.132 total

That's a reasonable install time!
Using just the MAKEFLAGS approach with gem install is not quite enough:
time MAKEFLAGS=-j4 gem install sassc
Building native extensions. This could take a while...
Successfully installed sassc-2.2.1
1 gem installed
95.47s user 5.63s system 180% cpu 55.870 total

cc @bolandrm @glebm
Relates to #132

For comparison, nokogiri 1.10.9 takes 30 seconds to compile:
$ time gem install nokogiri
Building native extensions. This could take a while...
Successfully installed nokogiri-1.10.9
1 gem installed
gem install nokogiri  24.42s user 7.26s system 102% cpu 30.846 total

libxml2 is a much larger library than libsass (200k C SLOC vs 22k C++ SLOC), but probably part of why it compiles faster is it's C instead of C++.

@bolandrm @glebm Thoughts on this?
Which approaches do you we could use to speed up the installation of this gem?

@eregon Enable parallel compilation or do a unity bulid

See https://github.com/sparklemotion/nokogiri/issues/1983#issuecomment-605657240 regarding what nokogiri does. I'm not sure what they do to deal with alpine but the binary gem seems to work with alpine/musl.
@glebm Could you clarify the main issue(s) with having precompiled gems for linux/macos for sassc?

@eregon The main issue is libc. RubyGems does not allow targeting different versions of libc. This is a deficiency in RubyGems. A libc cannot be linked statically for this project, one of the reasons being that plugins are loaded using dlopen.

Right. It seems for Nokogiri they just dynamically link to glibc (the default) and apparently in that case it seems binary compatible with musl (I checked with ldd and require-ing+using Nokogiri in both environments). I guess that's not a guarantee though and might not always work?

That's undefined behaviour, and won't work for sure with ucLibc or even older glibc. There is an open PR in the Nokogiri repo that removes the use of sprintf because sprintf segfaults on musl with the precompiled gem (1571).

Adding more data about the impact of this: I came to realise that Jekyll depends on saasc indirectly (via jekyll-sass-converter, which is a hard dependency).
This makes Jekyll (fairly popular) quite slow to deploy on platforms like Netlify (see https://community.netlify.com/t/ruby-gems-cache-seems-to-be-ineffective/14821 for an example, the install times is above 3 minutes. Caching is another problem ^_^).
I've opened an issue at https://github.com/jekyll/jekyll/issues/8184 to evaluate if sassc be made a soft dependency, but still wanted to provide this feedback: the impact of this is probably quite large on a number of projects.
Not sure what can be done and how I could help either yet, so for now just providing this data.

If anyone finds this helpful, here is where it actually takes 2 minutes (I installed ffi separately because it's a dependency and for comparison w/time):

gns@gns-mac1 ~ % docker run -it ruby:latest /bin/bash
root@4f4bf2280063:/# time gem install ffi
Building native extensions. This could take a while...
 This could take a while...
current directory: /usr/local/bundle/gems/sassc-2.4.0/ext
["/usr/local/bin/ruby", "-I", "/usr/local/lib/ruby/2.7.0", "-r", "./siteconf20200712-167-n5du3e.rb", "extconf.rb"]
creating Makefile
current directory: /usr/local/bundle/gems/sassc-2.4.0/ext
"make \"DESTDIR=\" clean"

current directory: /usr/local/bundle/gems/sassc-2.4.0/ext
"make \"DESTDIR=\""

This is where it took ~2 minutes.

compiling ./libsass/src/ast.cpp
compiling ./libsass/src/ast2c.cpp
compiling ./libsass/src/ast_fwd_decl.cpp
compiling ./libsass/src/ast_sel_cmp.cpp
compiling ./libsass/src/ast_sel_super.cpp
compiling ./libsass/src/ast_sel_unify.cpp
compiling ./libsass/src/ast_sel_weave.cpp
compiling ./libsass/src/ast_selectors.cpp
compiling ./libsass/src/ast_supports.cpp
compiling ./libsass/src/ast_values.cpp
compiling ./libsass/src/backtrace.cpp
compiling ./libsass/src/base64vlq.cpp
compiling ./libsass/src/bind.cpp
compiling ./libsass/src/c2ast.cpp
compiling ./libsass/src/c99func.c
compiling ./libsass/src/cencode.c
compiling ./libsass/src/check_nesting.cpp
compiling ./libsass/src/color_maps.cpp
compiling ./libsass/src/constants.cpp
compiling ./libsass/src/context.cpp
compiling ./libsass/src/cssize.cpp
compiling ./libsass/src/emitter.cpp
compiling ./libsass/src/environment.cpp
compiling ./libsass/src/error_handling.cpp
compiling ./libsass/src/eval.cpp
compiling ./libsass/src/eval_selectors.cpp
compiling ./libsass/src/expand.cpp
compiling ./libsass/src/extender.cpp
compiling ./libsass/src/extension.cpp
compiling ./libsass/src/file.cpp
compiling ./libsass/src/fn_colors.cpp
compiling ./libsass/src/fn_lists.cpp
compiling ./libsass/src/fn_maps.cpp
compiling ./libsass/src/fn_miscs.cpp
compiling ./libsass/src/fn_numbers.cpp
compiling ./libsass/src/fn_selectors.cpp
compiling ./libsass/src/fn_strings.cpp
compiling ./libsass/src/fn_utils.cpp
compiling ./libsass/src/inspect.cpp
compiling ./libsass/src/json.cpp
compiling ./libsass/src/lexer.cpp
compiling ./libsass/src/listize.cpp
compiling ./libsass/src/memory/allocator.cpp
compiling ./libsass/src/memory/shared_ptr.cpp
compiling ./libsass/src/operators.cpp
compiling ./libsass/src/output.cpp
compiling ./libsass/src/parser.cpp
compiling ./libsass/src/parser_selectors.cpp
compiling ./libsass/src/plugins.cpp
compiling ./libsass/src/position.cpp
compiling ./libsass/src/prelexer.cpp
compiling ./libsass/src/remove_placeholders.cpp
compiling ./libsass/src/sass.cpp
compiling ./libsass/src/sass2scss.cpp
compiling ./libsass/src/sass_context.cpp
compiling ./libsass/src/sass_functions.cpp
compiling ./libsass/src/sass_values.cpp
compiling ./libsass/src/source.cpp
compiling ./libsass/src/source_map.cpp
compiling ./libsass/src/stylesheet.cpp
compiling ./libsass/src/to_value.cpp
compiling ./libsass/src/units.cpp
compiling ./libsass/src/utf8_string.cpp
compiling ./libsass/src/util.cpp
compiling ./libsass/src/util_string.cpp
compiling ./libsass/src/values.cpp
linking shared-object sassc/libsass.so
current directory: /usr/local/bundle/gems/sassc-2.4.0/ext
"make \"DESTDIR=\" install"
/usr/bin/install -c -m 0755 libsass.so ./.gem.20200712-167-sm6aue/sassc
current directory: /usr/local/bundle/gems/sassc-2.4.0/ext
/usr/local/bin/ruby -I /usr/local/lib/ruby/2.7.0 -r ./siteconf20200712-167-n5du3e.rb extconf.rb
current directory: /usr/local/bundle/gems/sassc-2.4.0/ext
make "DESTDIR=" clean
current directory: /usr/local/bundle/gems/sassc-2.4.0/ext
make "DESTDIR="
current directory: /usr/local/bundle/gems/sassc-2.4.0/ext
make "DESTDIR=" install
Successfully installed sassc-2.4.0
1 gem installed

real	2m21.017s
user	2m11.993s
sys	0m8.384s

This has always taken a lot of time to install, however, for some reason, lately this started taking over 10 minutes to install in Travis, which makes it cancel the build completely. Although I can work around this, it's odd that this should really take over 10 minutes to install. It also wasn't a one-off thing, travis quit when attempting to install sassc 10+ times in a row now.
Are there any more clever work arounds than increasing Travis' timeout limit?

Turns out that it's only bloody slow when it is installing with "native extensions". 🤔

Got the same issue on netlify, took 5-10 minutes to install sassc 2.4.0.

same case here, it takes more than 9 minutes to install causing the cancelation of the bundle install :/

Similar story here, our build time is clocking in at 13mins at the moment which is mostly spent compiling sassc (with native extensions)

Up to version 2.1.0, sassc shipped precompiled Linux binaries, but as of 2.2.0, the only precompiled versions are for mingw32.
The problem, apparently (#141) was that on Alpine Linux (common in Docker images) rubygems would download the "Linux" version, precompiled with libc (not available on Alpine, which uses musl instead to keep the image size down).
Other gems (Nokogiri is one I've noticed in particular) seem to get around this somehow, though, using the precompiled version on Debian and RedHat and other glibc systems, while compiling from source on Alpine. I'm not sure why or how — as a mostly macOS and Docker/Alpine user, I only just noticed the existence of precompiled gems a few weeks ago when I noticed that bundle install in a Debian-based container was going much faster than my previous Alpine-based builds. 🙂  But it might be worth looking into.
In the meantime, a workaround might be to pin sassc-ruby to version 2.1.0.

Regarding precompiled binaries, see https://github.com/sass/sassc-ruby/issues/189#issuecomment-605687236 and before.
In short, it seems musl does not guarantee to be binary compatible with glibc. Nokogiri seems to be lucky enough to only use libc functions which are compatible (except sprintf which was worked around), but I guess that's much less feasible for a C++ codebase like libsass.

A good way forward would be to consider the libc in RubyGems when checking for precompiled gems.
That would be useful beyond just sassc.
It seems there is already some support for it actually, see https://github.com/rubygems/rubygems/pull/2922 but seems there is some issue: https://github.com/rubygems/rubygems/issues/3174.
Anyone interested to fix that?
Essentially, we'd need a way that alpine users would not download the glibc-precompiled gems, because that's generally not going to work. Ideally it'd be possible to upload alpine-precompiled gems to RubyGems too.

A workaround until then could be to use separate release versions for "precompiled" and "not", like libv8 does.

I guess that's not a guarantee though and might not always work?

It's definitely not a guarantee enough, see my comment over here.
From experience maintaining a mini_racer fork over a couple of years just for the purpose of adding more platforms, it's immeasurably better to just consider -linux to be equal to -linux-glibc and -linux-musl (or -linux-uclibc) to be entirely distinct.
We have another binary gem, called libsqreen. That C++ one we control entirely and build with, link against, and package together with LLVM C++ libs. It results in a hefty package but that's the only other solution we found.

Other gems (Nokogiri is one I've noticed in particular) seem to get around this somehow, though, using the precompiled version on Debian and RedHat and other glibc systems, while compiling from source on Alpine. I'm not sure why or how

IIRC the reason is that on some Alpine systems, Ruby ends up being set up to pick the non-binary gems only, and so never reaches to the -linux binary one. Indeed, alpine:3.12 ruby has Gem.platforms be only [:ruby], which is not the case for ruby:2.7-alpine, returning ["ruby", #<Gem::Platform:0x000055fc7e52a730 @cpu="x86_64", @os="linux", @version="musl" @cpu="x86_64", @os="linux", @version="musl">]. Note how there even the gem platform is wrong and @version is nil on ruby:2.6-alpine and below, being ["ruby", #<Gem::Platform:0x0000557454d74330 @cpu="x86_64", @os="linux", @version=nil @cpu="x86_64", @os="linux", @version=nil>] (which IIRC has more to do with the bundled rubygems version that ruby's).

Hi there, we had this issue and found some others already mentioned by @lloeki.  We avoid rebuilding binary gems altogether by hosting our own gem repo with geminabox and gem-compiler, but due to https://github.com/rubygems/rubygems/issues/3174 the repo can only host binary gems built for musl (and a single musl version at that).
here's a relevant report at alpine

This is still an ongoing issue on new installs for me as well.

This is still an ongoing issue on new installs for me as well.

Are there plans to address this, specifically shipping pre-compiled binaries for Debian or other popular distros?

Are there plans to address this, specifically shipping pre-compiled binaries for Debian or other popular distros?

If anyone finds this helpful, here is where it actually takes 2 minutes (I installed ffi separately because it's a dependency and for comparison w/time):
gns@gns-mac1 ~ % docker run -it ruby:latest /bin/bash
root@4f4bf2280063:/# time gem install ffi
Building native extensions. This could take a while...
Successfully installed ffi-1.13.1
1 gem installed
real	0m7.137s
user	0m5.407s
sys	0m1.055s
root@4f4bf2280063:/# time gem install sassc --verbose
...
This is where it took ~2 minutes.
...
real	2m21.017s
user	2m11.993s
sys	0m8.384s

For me it took longer, but it worked perfectly.

I'm not sure if this is any use, but the wkhtmltopdf-binary gem includes precompiled binaries for a numbers of platforms, and will just pick the most appropriate one at runtime.
This of course trades disk space for cpu cycles, but it could be a nice option to offer? I know I'd take it.

Holy cow...this took over 13 mins to install

:(

For those dealing with this issue in their Rails app(s), I was able to replace this gem with https://github.com/rails/cssbundling-rails by following this helpful article: https://dev.to/kolide/how-to-migrate-a-rails-6-app-from-sass-rails-to-cssbundling-rails-4l41

This is still an issue, it takes about 20 minutes on my docker machine.

Still an issue

Yes this is horrible, cannot believe it's still not fixed

I think the damage this issue is doing to the adoption of RoR and Ruby and contributing to the downfall of these tools is underestimated. Unfortunately I don't have enough knowledge to collaborate on a solution. It's pitiful...

@Pablushka @dancingmonkey @aamejia @h0jeZvgoxFepBQ2C
*** ATTENTION ***
LibSass is deprecated. SASSC-RUBY depends on LibSass. Ruby on Rails has moved away from using this gem. You should not be using this gem.
*** WHAT TO DO ***
Most people have experienced this issue during an upgrade. Most gems and apps that previously required or depended on this library are now using a new library. Consider updating any gems or apps that depend on this library to a newer version and it will likely no longer require this gem.
Updating your various required gems or Rails version is often enough to fix this issue as the new versions shouldn't be requiring or referencing this gem.
Sometimes just commenting out the "sassc-ruby" or "sassc" gem requirements in your Gemfile may be enough, although this may cause other errors to then trace and resolve.
Dart Sass is a new implementation of Sass if you want to look into it. https://github.com/rails/dartsass-rails
Note: This advice is provided without any warranties or represenations of any kind.

The problem is that we are using the sass-rails gem, which is dependent on sassc-rails.
As far as I know, there is no alternative?

@Pablushka @dancingmonkey @aamejia @h0jeZvgoxFepBQ2C
*** ATTENTION ***
LibSass is deprecated. SASSC-RUBY depends on LibSass. Ruby on Rails has moved away from using this gem. You should not be using this gem.
*** WHAT TO DO ***
Most people have experienced this issue during an upgrade. Most gems and apps that previously required or depended on this library are now using a new library. Consider updating any gems or apps that depend on this library to a newer version and it will likely no longer require this gem.
Updating your various required gems or Rails version is often enough to fix this issue as the new versions shouldn't be requiring or referencing this gem.
Sometimes just commenting out the "sassc-ruby" or "sassc" gem requirements in your Gemfile may be enough, although this may cause other errors to then trace and resolve.
Dart Sass is a new implementation of Sass if you want to look into it. https://github.com/rails/dartsass-rails
Note: This advice is provided without any warranties or represenations of any kind.

But Jekyll depends on this aswell

also you can use gem-compiler to build sassc an prevent this and other
binary gems to build every time.

It looks like there is a lot of interest in this issue, can we come up with a solution as a community? What needs to be done here, what can I do?

@arianitu TBH since libsass is deprecated, I think the direction people are going is to stop using sassc at all, see #220.
If you have Sprockets or other libraries that still depend on sassc, there is a fork of sassc that removes libsass and replaces it with sass-embedded using a shim — see docs there.

the only maintainer of this gem is silent for 3 years, so I don't really expect any solution. The only option would be to fork the gem.
or use an alternative. Even if it isn't 100% compatible https://github.com/ntkme/sass-embedded-host-ruby does work with sprockets or standalone. It shouldn't take much effort to migrate a legacy project, it works with all ruby implementations and the installation is quick because it's precompiled, see https://github.com/sass/sassc-ruby/issues/220
there's also https://github.com/ElMassimo/vite_ruby that could also be configured to use dart-sass, but the migration isn't really straightforward, especially if you aren't familiar with the npm world.

FWIW, here are numbers from today on my Linux machine on CRuby 3.1.3:
$ echo $MAKEFLAGS
-j8
$ ruby -v && time gem i sassc:2.4.0
ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]
gem i sassc:2.4.0  41.21s user 4.66s system 595% cpu 7.707 total

$ unset MAKEFLAGS
$ ruby -v && time gem i sassc:2.4.0
ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]
gem i sassc:2.4.0  36.93s user 4.44s system 98% cpu 42.044 total

So setting MAKEFLAGS to the CPU count helps a lot there.

When doing a bundle install for a new Rails 6 app, I noticed most of the time is spent compiling sassc (libsass really).

For an older app, we were spending ~8 mins on sassc in our Docker installs. It was painful because any Gemfile change invalidated the Docker layer for the bundle install
Since this gem feels unlikely to get a new release, we took the lowest lift approach here and are doing a RUN gem install sassc:2.4.0 before our RUN bundle install line.
This means the sassc install is cached in its own layer and the bundle install uses the sassc gem on disk. While the flag changes suggested here save real time, having the install cached means future builds spend zero seconds on sassc.
I wrote about this in more detail here.

Thanks this is a really great hint! ❤

Thank you @semanticart

A lot of time has passed, and things have gotten better in the toolchain.
rake-compiler-dock v1.5.0 supports first-class musl builds (as distinct from gnu libc builds), and rubygems/bundler support this distinction as well (with some caveats noted in the rake-compiler-dock readme).
(Note that the sqlite3 gem also had issues with musl support and now we ship distinct gnu and musl precompiled gems.)
It may be worth giving precompiled builds another try, I'd be happy to help if this is still interesting to the maintainers.

@glebm A lot of time has passed, and things have gotten better in the toolchain.
rake-compiler-dock v1.5.0 supports first-class musl builds (as distinct from gnu libc builds), and rubygems/bundler support this distinction as well (with some caveats noted in the rake-compiler-dock readme).
(Note that the sqlite3 gem also had issues with musl support and now we ship distinct gnu and musl precompiled gems.)
It may be worth giving precompiled builds another try, I'd be happy to help if this is still interesting to the maintainers.


Assert hit when selecting "Recommendations based on wishlist"

I started a new arc with "Show Claire's wishlist": https://polymerlabs.github.io/arcs-live/shell/apps/web/?arc=-LFQGLKDD698yxU47ZYJ
Clicking on the "Recommendations" popup hits an assert with "The instantiated plan doesn't appear in the current plans, but an identical plan does":
assert (assert-web.js:10)
_onPlanInstantiated (planificator.js:244)
_instantiatePlanCallbacks.forEach.callback (arc.js:420)
instantiate (arc.js:420)
_instantiatePlan (arc-planner.js:77)
_update (arc-planner.js:58)
_doUpdate (xen-base.js:36)
_doUpdate (xen.js:75)
_validate (xen-state.js:117)
...

I can repro locally with steps as:

become Walt
from launcher choose 'Show post list', you may need to select it again on the new arc page

  create as handle0 // [Post {Number createdTimestamp, Text message, Text author, URL image, Number imageWidth, Number imageHeight, Text renderRecipe, Text renderParticleSpec, Text owner, Text arcKey, Number rank}]
  map 'BOXED_posts' #BOXED_posts as handle1 // [Post {Number createdTimestamp, Text message, Text author, URL image, Number imageWidth, Number imageHeight, Text renderRecipe, Text renderParticleSpec, Text owner, Text arcKey, Number rank}]
  slot 'rootslotid-root' #root as slot1
  PostList as particle0
    items <- handle0
    consume root as slot1
      provide action as slot2
      provide item as slot0
  PostMuxer as particle1
    list <- handle0
    consume item as slot0
  PostTimeRanker as particle2
    input <- handle1
    output -> handle0) doesn't appear in the current plans, but an identical plan does"```


Local config.json

Hi,
Is this possible to have local config.json in the directory I'm running nukeeper?
Also, please rename config.json to something more specific (e.g. nukeeper.json or nukeeper.config.json).
P.S. Thanks for a great work done on nukeeper!

Hi
We're currently working on revamping settings, and the config file. These are good ideas, thanks.

Command-line args are all different in version 0.6. Config file support might come back in some form, but probably using names identical to the "long name" of command line args. Which options would you use from file?

Hi Anthony,

package sources;
age;
include / exclude masks;
verbosity;
label;
api endpoint configuration;

I am having a look at reading settings from a nukeeper.config.json file in the current directory.
I am starting with Include and Exclude regexs, and will also look at max changes etc.
I do not see that putting pakage sources in this file is  necessary: by default, NuKeeper will read the NuGet.config file of the target code and take settings from there, as the build also does.

All the fields of this DTO are now settings that can come from the file nukeeper.config.json in release 0.7:
https://github.com/NuKeeperDotNet/NuKeeper/blob/master/NuKeeper/Configuration/FileSettings.cs
And will work as the same-named commandline option.
This covers all the options listed above, with the exception of package sources. These should come from NuGet.config instead.
Better docs will follow in the next few days.

Thanks a lot, works for me


sg-agent necessary changes

This PR adds necessary changes required by sg-aget to work correctly.

possibility for application plugins to emit events in internal event bus.
possibility to register custom configuration validators

This is rotting here for a long time already.dfdfdf


[Bug] Inline suggestion interaction with empty autocomplete broke after 0.41

Reproducible in vscode.dev or in VS Code Desktop?

[x] Not reproducible in vscode.dev or VS Code Desktop

Reproducible in the monaco editor playground?

[ ] Not reproducible in the monaco editor playground

Monaco Editor Playground Link
https://microsoft.github.io/monaco-editor/playground.html?source=v0.41.0#XQAAAAJRAwAAAAAAAABBqQkHQ5NjdMjwa-jY7SIQ9S7DNlzs5W-mwj0fe1ZCDRFc9ws9XQE0SJE1jc2VKxhaLFIw9vEWSxW3yscw4FRrCnGBGpWlpVktocO7_BJCkQTDFxvol36GvVmJLcE84C3knSa45xr2hL4V0Vd8zV6Ld144gL7NITm3WKlHwmiyD-4SVFQYQgvxqbpgmWbogQr5-7RHNWr3xYmY6BU_QqN8DOWwRxMFTKMcoT6kDUNKC9LlS0acSs08_34w0guFIJNMWi1reKkVSN9_-O91boq-2hlVbhlVgLbxXTyFxVJoG5f5Hmfd87Yi8NZqpNJcrfxPSDMUHpJEjwVTMtiEkheggJmhg9OY5OGOHeWaME8tkfP2n6g5OO5khv5VpA0VN5II6Xl1woHMQLMyIlY7DZppuNoBFTJQ6_siBAslXYAAfv74U9SzXwifTzCWnfreweIqDr1k__AlzJOSVXMDSaT-zTedXXtUAcMaRqsWOL4cUpH0gCqviU008p_89pj_qi1TTg
Monaco Editor Playground Code
monaco.languages.registerInlineCompletionsProvider("json", {
	provideInlineCompletions: function (model, position, context, token) {
		console.log('Provide new completion', position, context, token)
		return {items: [
                    {
                        insertText: 'chenfan'
                    },
                    {
                        insertText: 'hello world'
                    }
                ]};
	},
	freeInlineCompletions: function (completions) {
		console.log(completions);
	},
});
monaco.languages.registerCompletionItemProvider('json', {
    provideCompletionItems: () => {
        return {
            suggestions: [
            ]
        };
    }
});

monaco.editor.create(document.getElementById("container"), {
	value: '',
	language: "json",
});

Reproduction Steps
See the video
Actual (Problematic) Behavior
Cannot accept the inline suggestion when an empty suggest list shows
Expected Behavior
Can accept inline suggest if the auto compelte suggest list is not empty
Additional Context
https://github.com/user-attachments/assets/362d8322-93df-426a-806d-84da8632dc0c

I have solved this problem. It seems that the monaco editor has a default matching rule. Just match the content of insertText with the prefix of the content in front of the model cursor, and the completed content will be displayed without entering spaces or line breaks
DEMO：
background


Provide an HttpClient trait

Is your feature request related to a problem? Please describe.
I've implemented a library to interact with WebDav (rfc3744) servers.
This library provides a WebDavClient, which would ideally have a generic HttpClient parameter: a the client that us used for the underlying http requests. This would allow consumers to supply their HttpClient of choice which can implement any necessary middleware, authentication, etc.
Pretty much any library that uses HTTP as a transport would benefit from this design: allow consumers to provide their own HttpClient type which handles any custom transport requirements, authentication, logging, etc.
Describe the solution you'd like
An HttpClient trait, which is essentially of hyper::service::Service<Response=hyper::Response>.
By providing this trait upstream, different client implementation can impl this trait. hyper_util::client::legacy::Client and some future/non-legacy/third-party client can implement this trait.
Describe alternatives you've considered
My WebDavClient type currently uses the hyper_util::client::legacy::Client type directly. This doesn't let a consumer provide a different type (for example, one that adds a custom header to all requests).
I could define this HttpClient trait downstream, but due to the orphan rule, consumers need to create a newtype wrapper around existing clients. This could work as a short-term workaround, but is not an ideal direction for the ecosystem.
Additional context
Perhaps this isn't the perfect approach, but I'd at least like to start a discussion on the topic. I'm happy to hear of other alternative approaches.

So far, I've recommended that people be generic over tower::Service. That's what I would continue to recommend, for now.

Would you take a patch that implements tower::Service<Response=hyper::Response> for hyper_util::client::legacy::Client?
Tentatively, a library which takes tower::Service<Response=hyper::Response> as input could be used with the legacy client now, and with a future non-legacy client when we have one.

Right, I somehow missed that when checking the docs.
I'm trying to use this implementation, the compiler thinks that Client doesn't implement Service<Request>:
error[E0277]: the trait bound `hyper_util::client::legacy::Client<HttpsConnector<HttpConnector>, _>: hyper::service::service::Service<http::Request<String>>` is not satisfied
   --> examples/find_calendars.rs:54:52
    |
54  |     let webdav = WebDavClient::new(base_url, auth, https_client);
    |                  -----------------                 ^^^^^^^^^^^^ the trait `hyper::service::service::Service<http::Request<String>>` is not implemented for `hyper_util::client::legacy::Client<HttpsConnector<HttpConnector>, _>`
    |                  |
    |                  required by a bound introduced by this call
    |
    = help: the following other types implement trait `hyper::service::service::Service<Request>`:
              `&S` implements `hyper::service::service::Service<Request>`
              `&mut S` implements `hyper::service::service::Service<Request>`
              `Arc<S>` implements `hyper::service::service::Service<Request>`
              `Box<S>` implements `hyper::service::service::Service<Request>`
              `Rc<S>` implements `hyper::service::service::Service<Request>`
              `hyper::service::util::ServiceFn<F, ReqBody>` implements `hyper::service::service::Service<http::Request<ReqBody>>`
note: required by a bound in `WebDavClient::<C>::new`
   --> /home/hugo/src/git.sr.ht/~whynothugo/libdav/src/dav.rs:136:8
    |
136 |     C: Service<http::Request<String>, Response = Response<Incoming>>
    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `WebDavClient::<C>::new`
...
147 |     pub fn new(base_url: Uri, auth: Auth, http_client: C) -> WebDavClient<C> {
    |            --- required by a bound in this associated function

Am I missing something obvious here?

Perhaps that tower::Service and hyper::service::Service are two separate traits. The hyper one is only meant for the server, and had to be separate since hyper 1.0 couldn't depend on tower publicly (not yet 1.0).

Thanks for the clarification. I guess that downstream consumers will have depend on the unstable tower::Service until upstream stabilised it.
I do have one final question with regards to tower_service::Service::call. Given the this takes a &mut self, does this mean that the client can only handle a single concurrent request?

Given the this takes a &mut self, does this mean that the client can only handle a single concurrent request?

No, because the lifetime of the returned future does not capture &mut self.
It was originally made &mut because we thought people may want to update their service as it processes requests. But I believe we settled on that not really being necessary, or if it is, most applications include some synchronization anyways, so requiring &mut self tends to just be worse. It will likely change to &self before Tower is stabilized.


Serialize Binary and LargeBinary as HEX with JSON Writer

Is your feature request related to a problem or challenge? Please describe what you are trying to do.

Binary and LargeBinary types are not currently supported by the JSON writer, while they are serialized as HEX in the standard Arrow formatter.
Describe the solution you'd like

I would like to have Binary and LargeBinary data types serialized by the JSON writer as HEX. This would follow the behaviour for FixedSizeBinary (see https://github.com/apache/arrow-rs/issues/5620).
Describe alternatives you've considered

Have not considered any alternatives at the moment.
Additional context

The encoding of Binary and LargeBinary may resemble that of, or share the implementation of, FixedSizeBinary, which is here: https://github.com/apache/arrow-rs/blob/a126d5097b71273428fba68d1c430f3d4beee684/arrow-json/src/writer/encoder.rs#L512-L529

Some tricks from https://github.com/nervosnetwork/faster-hex could be useful.

@v1gnesh perhaps (if this proposal is accepted) that should be addressed in a follow-on issue?
First let's make it do the thing, then we can make it go fast, if necessary.


Ryan M: Watch huntingorbit.com

Ryan M requests the watch of the watch_keyword huntingorbit\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

huntingorbit\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Mast in Charcoal HQ


Nox Scans

Source information
Nox Scans 1.4.30
Source language
turkish
Steps to reproduce

I open the application
2- Open Any Manhwa from Nox Scans Extension
3- When I Try to Read, It Gives a Page Not Found Error

Expected behavior
page not found
Actual behavior
It opens the page in web view, but in the application it gives a page not found error.
Mihon/Tachiyomi version
Tachiyomi 0.15.3
Android version
android 10
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I have updated the app to version 0.15.3.
[X] I have updated all installed extensions.
[X] I have tried the troubleshooting guide.
[X] If this is an issue with the app itself, I should be opening an issue in the app repository.
[X] I will fill out all of the requested information in this form.

Are you able to view said chapter in WebView on your own browser?
I am unable to see any chapter's pages in WebView, not sure if it's a region thing. But if you are unable to see pages as well, then it's a source-related issue at the moment, no extension-related.

In web view, the sections are opened in the browser, but when I open it in the application, it cannot find the section.

I have the same problem. I view it in webview, enter the chapter and click verify. The chapter opens, then I enter from Mihon and get the page not found error.

Same problem here. I don't think so it's a regional thing becasue I tried with a vpn and pages still loading normally in webview.

@Smol-Ame  doğrulama istediği için sanırım açılmıyor çünkü webviewde robot olmadığını doğrulamanı istiyor


Allow mouse rebindings, to e.g., match JOSM

There is no way to make JOSM mouse bindings match iD,
https://josm.openstreetmap.de/ticket/18186
https://josm.openstreetmap.de/ticket/4760
So I hope iD doesn't make the same mistake hardwiring them so deep down that there is no way
a former JOSM user could rebind them to match what he is used to.

I've been thinking it might be a nice accessibility feature to let people re-map the keyboard shortcuts. I'm not sure about the mouse buttons though, that might be too advanced. It'd take some work to implement but probably isn't impossible.

Yes these should use proper https://en.wikipedia.org/wiki/Abstraction_layer and avoid https://en.wikipedia.org/wiki/Hard_coding left/right handedness.

Avoiding a handedness bias sounds beneficial. I think the current English accelerator keys were optimized for the left hand (assuming the right hand is for the mouse) on an English keyboard.
Just to set expectations, even though it seems feasible to make the key bindings customizable, JOSM key bindings might not be 100% faithful to JOSM. For example, on the Mac, Ctrl-clicking opens the context menu, and I’m not sure if there’s a way to prevent that from happening in a Web application in order to allow for Ctrl-dragging on that platform. On top of that, few Web applications override shortcuts like CtrlT. I’d imagine even JOSM fans would expect that shortcut to open a new tab rather than something analogous to the batch tag editor.
iD already allows localizations to map the accelerator keys (the shortcuts without modifier keys) to operations that match mnemonics in the current language. This is good for learnability, for the same reason that S for straighten and W for wireframe is good for learnability in English. As far as I know, JOSM doesn’t tie key bindings to languages, so I guess any JOSM key binding feature would be mutually exclusive with the localized accelerator keys.

(All I know is  I grew up with Emacs in the 1980s. With all its layers of keyboard maps I don't think there would be a way to hardware a binding even if one tried. (They had already fixed this problem of programs from the 70s.))

(Anyway these million dollar airplanes shouldn't be made unflyable due to the lack of a simple right/left mode switch.)

What if the airplane is flying inside a wind tunnel that has its own rules? :wink:

(I'm thinking of those one-seater over expensive military models, with
all controls, say, having right/left physical symmetry, but alas with
the symmetry "permanently stuck one way" via software.)


ignore coverage.out for git submit

coverage.out should be ignored when git submitting as well.
Signed-off-by: xiekeyang<EMAIL_ADDRESS>

Codecov Report

Merging #741 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #741   +/-   ##
=======================================
  Coverage   62.46%   62.46%
=======================================
  Files           5        5
  Lines         682      682
=======================================
  Hits          426      426
  Misses        160      160
  Partials       96       96

Continue to review full report at Codecov.

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

LGTM


@zag-js/svelte peerDependencies is misconfigured

🐛 Bug report
The peerDependencis in the @zag-js/svelte package specifies the following:
  "peerDependencies": {
    "svelte": ">=5.0.0"
  },

This is not correct as Svelte 5 is not out yet.
I know the svelte package is technically not officially public but so far it's been working very well.
💥 Steps to reproduce

Go to the package.json of @zag-js/svelte
Go down to the peerDependencies field
View the wrongly configured svelte version

💻 Link to reproduction
Not Relevant
🧐 Expected behavior
It should be configured correctly until Svelte releases 5.0.0
🧭 Possible Solution
Since Svelte 5 is currently still in RC it uses next versioning, so the peerDependencies should actually be:
  "peerDependencies": {
    "svelte": "^5.0.0-next.1"
  },

🌍 System information

Software
Version(s)

Zag Version
0.65.0

Browser
n/a

Operating System
n/a

📝 Additional information
It causes npm warnings:

Good catch @Hugos68.
Feel free to open a PR. Will file a release once it's merged.

Submitted a PR: #1785


Adding Google Authentication

I can add google and github authentication in the login section . Please assign me this issue under GSSOC'23.

i can add google , jwt , twitter & facebook auths , assign me this issue for GSSOC'23

i have some work to do and sorry for that.. if you want then you can assign to someone else ...

Sure!

anyone up for it?? and also check https://github.com/amupedia2021/Project-Amupedia/discussions/249

close
no update


(WIP) a better version of enhancement and separation downstream

Hi @leo19941227 , I am making the pull request for a better version of enhancement and separation downstream. In this pull request, I

Add two new configs which have a much smaller model size and better performance
Made some small changes to the code, including (1) modifying the loss function, supporting L1 loss, and computing loss in log domain (for smaller input scale and more stable training) (2) removing the original postprocess function. Originally, I found there are some issues when I am using librosa.istft, and I am using the postprocess function to remove the impulse at the end of the signal.  Now, I have found a better way to deal with this issue.

These two figures are comparisons of previous and new config. The top figure is for pesq value for enhancement task, and the bottom figure is for si-sdri value for the separation task. For enhancement, I think the previous config is not good due to mask type and activation function. The updated version is much better.

Detail changes for enhancement:

remove total training steps from 150000 to 100000 (model generally converges with 100000 iterations)
adjust the learning rate from 1e-4 to 1e-3 (compare different learning rates and 1e-3 is slightly better)
adjust the win_length of STFT from 512 to 400 (a small change doesn't change the result, 400 is more usually used for ASR 25ms)
reduce the model size from 896 to 256 (I found the influence of model size on pesq is extremely small)
reduce the dropout rate from 0.5 to 0.1 (a small change that has little improvement)
change the loss type from L2 to L1 (a small change that has little improvement)
change the mask activation from relu to sigmoid and change the mask type from PSM to AM (the combination of mask type and activation function is the main reason for the improvement)

Detail changes for separation:

adjust the learning rate from 1e-4 to 1e-3 (compare different learning rates and 1e-3 is better ~0.5dB improvement)
adjust n_fft and window_size of STFT from 512 to 1024 (for separation task, it seems a larger window size gives better performance)
reduce the model size from 896 to 256 (I haven't done experiments related to model size but I think a larger model size will have better performance, but following the principle of SUPERB, we should use a smaller model size)
reduce the dropout rate from 0.5 to 0.1 (a small change that has little improvement)
change the mask activation from relu to sigmoid (~0.6dB improvement)

Hey @HuangZiliAndy !
Thanks for the great PR! The performance improvement is huge!
I briefly look into it and I found there are quite some logic changes might be hard to make sure the backward compatibility. Do you think it is possible for you to create two new folders for the new better setting? So that we can always have the exactly same old setting, and the users won't be confused. We can use the folder names like enhancement_stft2 or else.
What do you think?

Hi @leo19941227 , I agree with that. I think we need to add to README that enhancement_stft/enhancement_stft2 are working on the same datasets but with different configurations (also some tiny implementation differences).

Hey @HuangZiliAndy,
I can successfully run it. However, I find that you did not include any README in this PR. Would you like to merge it first or add the README before merging this PR?

Hi Leo, I will add a README this weekend before merging. Thanks!

Cool, thanks!

Hey @HuangZiliAndy !
You don't need to spend time solving this CI issue. All the PRs are now experiencing this issue and I am fixing this. You are facing this CI error since you merge the latest main so you are now using the latest github action. Anyway, I believe this PR can be smoothly merged after I fix the CI error.

Hi @leo19941227 , I have added the README. Could you please check if there is anything missing? Thanks!

LGTM. Thanks @HuangZiliAndy , I am merging this.


Implement the music player

Implement the Simba C music player in Python.
https://github.com/eerimoq/simba/tree/master/examples/music_player
Requires: Issue #2 and issue #3

Postponed. Lack of interest.


[NFC] Fix typo: workspce -> workspace.

Upon adding a workspace parameter to MLIR solver I spotted this typo. Proposing to fix it in this PR.

Thanks, @whchung !

@whchung Formatting must be fixed. I can do it for you, if necessary.

@atamazov I ran git clang-format locally but didn't find anything to be fixed. Could you help me on this? Thanks!

I am quite puzzled by the clang format complaints too:
http://micimaster.amd.com/blue/organizations/jenkins/MLLibs%2FMIOpen/detail/fix-workspce-typo/3/pipeline

I am quite puzzled by the clang format complaints too...

Search for > of --- in the log.

@whchung

@atamazov I ran git clang-format locally but didn't find anything to be fixed. Could you help me on this? Thanks!

No problem, will do. For the future: https://github.com/ROCmSoftwarePlatform/MIOpen/wiki/How-to-format-code


Update website for 1.17.1

Signed-off-by: Michael Payne<EMAIL_ADDRESS>

Netlify's stack is... old. Amazed this runs and it's likely totally insecure
12:21:29 PM: Now using node v8.17.0 (npm v6.13.4)
12:21:32 PM: Using ruby version 2.4.3
12:21:32 PM: Using PHP version 5.6
12:21:34 PM: Installing Go version 1.10


Key presentation compiler by unamanged source directories instead of sources

Currently, you must re-run scalametaEnableCompletions every time a new file is created. If we key the compiler by sourceDirectories instead of sources then we can pick the right PC for new files.

Fixed in #135, the server first looks a compiler by sources and if there is no match it tries to find a compilerconfig with unmanagedSourceDirectories that contains an open buffer.


Change login screen to include a back button

Changes the login screen to be both closeable, and includes a new back button which closes the screen.

Thanks!


URGENT! PRF stage isn't rendered

Pubid::Iso::Identifier.parse('ISO 7029:2017/PRF Amd 1').to_s
=> "ISO 7029:2017/Amd 1"

Pubid::Iso::Identifier.parse('ISO 7029:2017/PRF Amd 1').to_s
=> "ISO 7029:2017/Amd 1"

"PRF" stage is not rendered by default, see https://github.com/metanorma/pubid-iso/issues/106

"PRF" stage is not rendered by default, see #106

@mico what is the way to render PRF?
BTW it seems the examples in the doc are incorrect. The pubid.to_s(:ref_num_short) doesn't work. Shouldn't it be pubid.to_s(format: :ref_num_short)?

I think it's pubid.to_s(with_prf: true)?

I think it's pubid.to_s(with_prf: true)?

@ronaldtse there is no such option. @mico explain how to render "PRF" please

I think it's pubid.to_s(with_prf: true)?

@ronaldtse there is no such option. @mico explain how to render "PRF" please

@andrew2net
https://github.com/metanorma/pubid-iso/blob/ed3c5674ba757d0d296df487ba856b86f7c029ec/spec/pubid_iso/identifier/create_new_identifier_spec.rb#L120-L124

@mico why it doesn't work for me?
> Pubid::Iso::Identifier.parse('ISO 7029:2017/PRF Amd 1').to_s with_prf: true
 => "ISO 7029:2017/Amd 1"

I use supplement-empty-publisher branch.

Is it because Supplements don't support PRF yet?


Have you thought about doing a presentation in emacsconf2020?

It'd be super cool to see this project shown there!
https://emacsconf.org/2020/cfp/
Cheers!

I'm still thinking about it. The schedule is a bit late in the evening for my timezone.

mm... IIRC some talks last year were prerecorded. At least the lightning talks were for sure.
Maybe this would be an affordable middleground? and if in the end you can be there at that time, you just sit and answer chat questions :).
Anyway, thanks for considering it! I think there's quite a bit of interest in the community wrt the state of emacs tree sitter and where to help/test.

@kidd commented on September 21, 2020 9:07 AM:

I think there's quite a bit of interest in the community wrt the state of emacs tree sitter and where to help/test.

I second this!  I think this project is extremely significant within the emacs ecosystem :sunglasses:

I've submitted a talk proposal. I'm waiting for the response.

Nice!!!
I'm sure it'll drive adoption and awareness to the project.
thanks!

The proposal has been accepted.


2.0 - Scheduler Variables

Each scheduler needs to populate a set of test config variables that the rest of the config can use in its strings. This is essentially the super-set of all variables any scheduler might consider setting.

Variable Name
Meaning
Values/Type

num_nodes
The number of nodes on which the test will run. Zero denotes that it is executed on a front-end (schedulers need not support this).
Integer >= 0.

procs_per_node
The number of ranks per node on which the test will run.
Integer > 0

qos
The job's 'Quality of Service'.
string (possibly empty)

reservation
The job's reservation.
string (possibly empty)

partition
The job's partition
string (possibly empty)

account
The job's account
string (possibly empty)

down_nodes
The number of down nodes at run time.
integer >= 0

unused_nodes
The number of nodes that weren't used for this test.
integer >= 0

busy_nodes
The number of nodes that would have been acquired, but couldn't be because of other jobs.
integer >= 0

chunk_size
The number of nodes per job chunk, for when we can't reasonably schedule a test across an entire cluster in a single job.
Integer >= 0, typically equal to num_nodes

Feel free to add any more that you can think of. I made up a few I think will be useful for result logging.

It occurs to me that num_nodes might be better as a string that can be parsed to be:

A number that can be directly cast to an integer for a precise number of nodes.  0 can still denote the front-end node or 'current' node.
A range denoted by the presence of a hyphen in any position other than the first or last.
A minimum number of nodes denoted by the presence of a hyphen in the first position of the string.

This can be useful for the automated/continuous testing efforts to provide more flexibility in the demands.  As I understand it, Slurm is capable of handing analogues to all of these use-cases.  Presumably other schedulers are as well.
Thoughts, @pflarr ?

It's up to the scheduler to interpret these values. They're always handled
as strings.
On Mon, Nov 26, 2018 at 1:02 PM Nicholas Sly<EMAIL_ADDRESS>wrote:

It occurs to me that num_nodes might be better as a string that can be
parsed to be:

A number that can be directly cast to an integer for a precise
number of nodes. 0 can still denote the front-end node or 'current' node.
A range denoted by the presence of a hyphen in any position other
than the first or last.
A minimum number of nodes denoted by the presence of a hyphen in
the first position of the string.

This can be useful for the automated/continuous testing efforts to provide
more flexibility in the demands. As I understand it, Slurm is capable of
handing analogues to all of these use-cases. Presumably other schedulers
are as well.
Thoughts, @pflarr https://github.com/pflarr ?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/lanl/Pavilion/issues/65#issuecomment-441778063, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AADFpRAFfojxdmbF6o_Ddz966DIQkl2qks5uzEjWgaJpZM4X6eoH
.

--
Paul Ferrell
<EMAIL_ADDRESS>


Add setting to disable by default

As more sites have their own dark mode now, one may want to have the dark mode disabled by default and only enable it on certain pages.

I don't mind to add a new settings to control whether the extension is enabled or disabled by default. Additionally, there would be no reason to enable it only when system is in dark mode.
However, I'm not sure when I can find some time for this to implement it


CS GPTs and issues addressed

Addressing Issues: #31, #32, #35
Adding cybersecurity related GPTs

thanks @aryankhanna475


mempool: Refactor + bug fix

Light restructuring of mempool supporting structures to pave the way for orphan mempool transactions
Also fixes a bug where mempool transaction creation timestamps were lost upon a reorg.

Looks good, just maybe TxEntry inside TxMempoolEntry could be named tx_entry, to avoid entry.entry.?

Yea I son't know. The field is private and not supposed to be used directly. In addition to that, either could be called tx_entry, not sure it's really an improvement.


Using Xray Id generator does not work

I'm using the X-Ray Id generator in my tracing config, but the generated id are still not compatible with the X-Ray trace id spec, but instead they're just random strings as generated by open telemetry
This is my tracing.js file
const tracerConfig = {
  idGenerator: new AWSXRayIdGenerator(),
  instrumentations: [getNodeAutoInstrumentations()],
  resources: Resource.default().merge(
    new Resource({
      [SemanticResourceAttributes.SERVICE_NAME]: 'backend',
    }),
  ),
};

const provider = new NodeTracerProvider({ tracerConfig });

const exporter = new OTLPTraceExporter({
  url: `http://localhost:4318/v1/traces`,
});

provider.addSpanProcessor(new SimpleSpanProcessor(exporter));
provider.register({
  propagator: new AWSXRayPropagator(),
});

and this is the otel-config file for aws otel collector
extensions:
  health_check:
  pprof:
    endpoint: <IP_ADDRESS>:1777

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: <IP_ADDRESS>:4317
      http:
        endpoint: <IP_ADDRESS>:4318

processors:
  batch:

exporters:
  logging:
    loglevel: debug
  awsxray:
    region: "us-east-1"
  awsemf:
    region: "us-east-1"

service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [awsxray, logging]
    metrics:
      receivers: [otlp]
      exporters: [awsemf]

  extensions: [pprof]
  telemetry:
    logs:
      level: debug

When i run the application, i get the following logs where trace id is just random string
{"level":"INFO","logger":"root","message":"my log message","service.name":"backend","span_id":"3d5882bfbb0b3c80","timestamp":"2022-06-17T05:45:11.638Z","trace_flags":"01","trace_id":"26bbc3411267031fb55ebb03fcbcc4b7"}

And the following error message form the otel collector
2022-06-17T05:48:53.201Z	debug	awsxrayexporter@v0.51.0/awsxray.go:99	Error translating span.	{"kind": "exporter", "name": "awsxray", "error": "invalid xray traceid: 26bbc3411267031fb55ebb03fcbcc4b7"}

Hi @kushal-ti, in our integration tests, it appears the ID generator is working.
Can you please provide the version of all your opentelemetry JS SDK packages are, including the ID generator?

"@opentelemetry/api": "^1.1.0",
"@opentelemetry/auto-instrumentations-node": "^0.30.0",
"@opentelemetry/context-async-hooks": "^1.3.1",
"@opentelemetry/exporter-trace-otlp-http": "^0.29.2",
"@opentelemetry/id-generator-aws-xray": "^1.1.0",
"@opentelemetry/instrumentation": "^0.29.2",
"@opentelemetry/instrumentation-http": "^0.29.2",
"@opentelemetry/propagator-aws-xray": "^1.1.0",
"@opentelemetry/resources": "^1.3.1",
"@opentelemetry/sdk-node": "^0.29.2",
"@opentelemetry/sdk-trace-base": "^1.3.1",
"@opentelemetry/semantic-conventions": "^1.3.1",

For what it's worth, I checked the http requests being sent out by my application when i intrumented it with the xray propagator and the xray trace id and it did indeed have an x-amz-trace-id header which had an id that looked compatible with the x-ray trace id spec, but this trace id was not being injected into my logs or in the spans that were being exported by the application

Hi @kushal-ti,
Trace ID injection into logs is not yet supported out of the box for the OpenTelemetry JS SDK.

or in the spans that were being exported by the application

Are you sure that the span ID referenced in the x-amzn-trace-id header was not in any of the spans you saw on the X-Ray console? Can you provide a sample trace and the corresponding trace header you saw?


Support for temperature sensors

I would like to read the reading of temperature sensors with Thola. Many devices support specific OIDs for temperature sensors.
Alas the correspondig component ist missing in Thola.

The idea would be great. Furthermore, it would be cool to be able to read out other things besides temperatures. I manage several industrial switches which also offer redundant connections. These states would also be interesting. Some things would be:
aca - backup config on usb stick in sync with nvram
config - config in sync with nvram
mrp - redundancy available
...
If something like this were available as a kind of module, thola would be superior. For example thole check aca


mark edit/unedit functionality as deprecated

motivation: edit/unedit functionality was put in place prior to the ability to do local overrides, making it redundant. it also add signfincant complexity to the code which could be good to remove
changes:

mark the public edit/unedit API as deprecated
emit deprecation warning on the edit/unedit CLI commands

@swift-ci please smoke test


[DOC] Find good images for examples docs

Describe the issue linked to the documentation
our examples are presented in blocks with an image,
https://www.aeon-toolkit.org/en/stable/examples.html
it would be nice to populate it with relevant images (which we have permission to use)
The documents are stored in aeon/examples (e.g. aeon/examples/classification/img) and linked into the docs in docs/examples.md, e.g
Classification
::::{grid} 2 3 4 4
:gutter: 1
:::{grid-item-card}
:img-top: examples/classification/img/tsc.png
:class-img-top: aeon-card-image-m
:link: /examples/classification/classification.ipynb
:link-type: ref
:text-align: center
Suggest a potential alternative/fix
No response

I would like to work on this

Thanks, let us know if you need any help.


Helsingborg, Sweden

Municipality of Helsingborg, Sweden. REST server, sometimes the street name has additional qualifiers, I tried to remove them with regex. Alternatively can parse "ADDRESSLABEL" into street and number.

The sample produced by the machine seems fine. Maybe there is some issue with the regex, could you check it out? Basically some streets follow the pattern "Streetname | Qualifier", so I was trying to remove everything starting with " |".

That worked, thanks!

Data looks good. There was one minor thing I noticed which is postcode formatting. This source uses 5-digit postcodes e.g. "12345" whereas Sweden typically uses "123 45". This should work to add the space:
"postcode": {
    "function": "regexp",
    "field": "POSTCODE",
    "pattern": "^([\\d]{3})([\\d]{2})$",
    "replace": "$1 $2"
}


chore(main): release 0.0.4

:robot: I have created a release beep boop
0.0.4 (2023-12-07)
Features

CRD validation for rule name uniqueness (#60) (132f303)

Bug Fixes

deps: update golang.org/x/exp digest to f3f8817 (#43) (e8edd19)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/spectrocloud-labs/validator-plugin-azure/releases/tag/v0.0.4 :sunflower:


Bulk Action - Change Redactions in Bulk via Comments Panel

As an IAO user
I want to be able to change multiple redactions with a single action
so that I can work more efficiently

Assumptions & Scope
This is a branch-off from 4130. It was discussed it may be easier to just include the edit redaction button in the comment panel to make multiple changes easy to do within the comment panel
For Scenario 4, when a user has selected one or more redaction (using the multi-select feature) in the Comments pane, and selects the 'Edit' icon (which opens the FOIPPA modal), the FOIPPA modal should have no FOIPPA sections selected.
What is IN scope?
Changes to the comment panel to include the edit feature
Updating redactions in bulk through selections in the comment log
What is NOT in scope?
Acceptance Criteria
Scenario 1: Comments Panel – Edit Symbol

GIVEN an IAO user is in the redaction app
AND they have the comments panel open
WHEN they click on multi-select
THEN the edit button will appear in addition to the other options
AND the edit button will be inactive

Scenario 2: Comments Panel – Edit Symbol - Active

GIVEN an IAO user is in the redaction app
AND they have the comments panel open
WHEN they filter to just redactions
THEN the edit button will become active

Scenario 3 – Comments Panel – Activate Edit

GIVEN an IAO user has selected one or more redactions from the comment panel
AND the edit button is active
WHEN they click on the edit button
THEN the FOIPPA modal will appear

Scenario 4 – Make FOIPPA Selection

GIVEN an IAO user has selected one or more redactions from the comment panel
AND they are in the FOIPPA modal after clicking edit
WHEN they make a new selection of codes
AND click select codes
THEN the previous redaction codes will disappear
AND the new redaction codes will appear

Dependencies? What is the impact of this dependency? (If so, link dependency in the ticket, make it visible in a team´s backlog)
Validation Rules? (If yes, list here)
Design
@xxx - please link the Design here
Definition of Ready

[ ] Is there a well articulated User Story?
[ ] Is there Acceptance Criteria that covers all scenarios (happy/sad paths)?
[ ] If there is a user interface, is there a design?
[ ] Does the user story need user research/validation?
[ ] Does this User Story needs stakeholder approval?
[ ] Design / Solution accepted by Product Owner
[ ] Is this user story small enough to be completed in a Sprint? Should it be split?
[ ] Are the dependencies known/ understood? (technical, business, regulatory/policy)
[ ] Has the story been estimated?

Definition of Done

[ ] Passes developer unit tests
[ ] Passes peer code review
[ ] If there's a user interface, passes UX assurance
[ ] Passes QA of Acceptance Criteria with verification in Dev and Test
[ ] Confirm Test cases built and succeeding
[ ] No regression test failures
[ ] Test coverage acceptable by Product Owner
[ ] Ticket ready to be merged to master or story branch
[ ] Developer to list Config changes/ Update documents and designs
[ ] Can be demoed in Sprint Review
[ ] Tagged as part of a Release
[ ] Feature flagged if required
[ ] Change Management activities done?

Question 1
How do we want to handle when a user multi-selects a redaction box, but also selects a non-redaction (e.g., annotation, FOIPPA section text, etc.) along with it?
For example, in the image below a redaction box has been selected, but a highlight annotation and FOIPPA section text has also been selected:

Should we disable the edit icon when a non-redaction is multi-selected? Or allow it, but just ignore them, and still present the FOIPPA section modal if >=1 redaction has been multi-selected?
Question 2
Also, are we requiring users to multi-select redaction boxes in order to change the FOIPPA section, or do we also want them to be able to select the FOIPPA section text annotation to change the FOIPPA section number?
For example, should they be able to multi-select this to change the FOIPPA section?

Or must they select an actual redaction to change the FOIPPA section?

Question 3
Do we want the edit icon to be called "Edit FOIPPA Section(s)"? Or just "Edit"? Having it called "Edit" may be misleading, as editing of redactions and annotations can be done through other mechanisms.

Good flags, Kyle.
I wonder if #4193 could address the issue you raise in question 2 - if not, we may need to be more proscriptive in terms of how you can change multiple redactions.... which leads me back to question 1 - good catch. I think we have to be somewhat deliberate to avoid issues... like if a highlight or comment is selected, it should grey out the edit feature.  It might be a little annoying for users, but will avoid trouble when wrong objects are selected.
Perhaps something the devs can discuss and raise for us in refinement

Note: add validation - will require filter to just redaction region to enable edit via multi-select. And include that FOIPPA modal will be fresh (ie no boxes will be pre-checked based on selections)

Ctrl+click → edit multiple redaction? - no need to over complicate

I am putting this ticket on hold until we get a response from pdftron support team. reference tickets.
support ticket - https://support.apryse.com/support/tickets/58575
pdftron forum - https://discord.com/channels/1083135872427376670/1083788813421260900/threads/1136715516237586493
Issue:
When clicking on individual annotations from the NotesPanel, the "annotationSelected" event is successfully triggered. However, clicking on the checkbox does not trigger any events, leading to the inability to retrieve the selectedAnnotations. In case pdftron does not provide the "annotationSelected" event, we will have to manage this using a custom event trigger. Consequently, during the upgrade to the latest version, it will be essential to thoroughly review and verify this functionality.

Created another ticket with PDFTron related to the auto-selection of grouped annotations.
ticket reference: https://support.apryse.com/support/tickets/59019
https://discord.com/channels/1083135872427376670/1083788813421260900/threads/1138928780388356126

As discussed in the standup, after performing a multi-edit for a set of redactions, click on the multi-select button or the close button to clear the current selection. Then, proceed to perform the multi-edit again for another set of redactions. Do not continue with the current selection.
cc. @m-prodan

@divyav-aot I noticed that after we search some content on the search tab and switch back to comment panel and try to multiselect two redactions for editing, then  edit option is not appearing. Could you please check? Private Zenhub Image

Needs to confirm one thing with business. When we edit redaction section from the main page previous section will be selected as default, but when we select just one redaction (using multiselect)  previous selection wont be selected by default on FOIPPA modal. Is it ok? @m-prodan
cc @divyav-aot
Private Zenhub Image

Check if #4376 occurs when back in Ready for QA

Moved back to "Review" as pdftron version upgrade has fixed the auto select of grouped annotations in the comments panel. This need an addition code change to remove/update certain code.

discuss with business on Ctrl+click edit

As discussed in the standup, created a low priority bug related to ctrl + click.
https://app.zenhub.com/workspaces/foi-flow-607f0ab6ae54b700111dc733/issues/gh/bcgov/foi-flow/4457

Increased the effort to incorporate the apryse ticket fixes.

I noticed some issues on bulk action. They are the following

When we do bulk "status" update 'status' option not working

Private Zenhub Image
Also 'Group ' button enabled when bulk select two redactions
Private Zenhub Image

Per decision at standup - we will disable the grouping option as it could cause problems. We will ignore the status button as we are not training users on it nor is it a feature we expect them to use. Lastly - the multi-select redaction issue is noted in another ticket, and will not be priority for 9,0 release

@nimya-aot  as discussed, groupbutton has been disabled. Please clear the cache and check again.

working as expected, so closing


Adding custom videoTags

Is it possible to either have a
config = {
videoTags: autoplay loop muted,
....
or a way to add the muted and loop variable ?
similar to the way you do autoplay: true,

Hey @Aanerud , I'd rather not rely too heavily on the default behavior of the HTML5 video element, mainly because these kind of features need to be compatible with any possible player module. This is also the reason why autoplay is not handled by the video element but by the player (it does check if autoplay is allowed, and performs a play() action.
This would also break in combination with the GoogleIMAExtension and FreeWheelExtension which are responsible for ads. You don't want content looping when there is an adbreak that has to be played at the end of the video.
The API is fairly strict and handles these kind of cases for you (eg: ended is only called at the end of the video or video+last ad).
I've set up a small pin that does the following:
https://codepen.io/matvp91/pen/bJWzQg

loop: At the end of the video (or video+last ad), player.play() is triggered again.
muted: When the player is ready, setVolume(0) is called which mutes the player (& I've added player.play() afterwards in order to autoplay).

What are your two cents?

Well, the issue is that the Autoplay feature will work, on Safari, IOS, and Chrome ;
if the video is muted, this is for "all" autoplay methods.
https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
"
Chrome's autoplay policies are simple:
Muted autoplay is always allowed.
"
https://webkit.org/blog/6784/new-video-policies-for-ios/
"
 elements will also be allowed to autoplay without a user gesture.
"
So, the loop tag you can ignore, as its nothing to do with Autoplay,
but ** muted** should be something you can turn on and off.

Calling play() after setVolume(0) as in the codepen should autoplay the video in muted state. See https://github.com/matvp91/indigo-player/blob/master/src/player/HTML5Player/HTML5Player.ts#L112
Meanwhile I'll look into adding a volume config variable that would allow you to set the video in muted state before autoplay kicks in.

@Aanerud 1.3.5 is released with the possibility to provide an initial volume: https://matvp91.github.io/indigo-player/#/Configuration?id=initial-volume-amp-position

Hey @matvp91
Did test now,
https://video-ad-platform-aanerud.firebaseapp.com
and its not working, looks like the muted variable must be passed.
Tested on Chrome and Safari.
Firefox works like an charm :)

The files are cached on jsdelivr CDN for ~24h, you're at v1.3.4 but the initial volume change is at v1.3.5.

Can you quickly switch to<EMAIL_ADDRESS>Although, once jsdelivr serves this version, it's best to switch back to indigo-player@1 (which subscribes to the major version only).

Works like a charm!
removed image ;)


when i enter password zzzzzzzz to rpi-config-app wifi network within my android phone. It always show obtaining IP address

As soon as you enter the password, it should immediately store this info on the Pi and reboot. The UI will probably not update but the Pi should now be connected to your Wifi.

I have the same problem. The problem is that i never get an IP, so this is related to the DHCP-server

When i do ip addr show dev wlan0 i get:wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000     link/ether a0:2c:36:89:2d:1d brd ff:ff:ff:ff:ff:ff
So no ip is set on the wlan0 interface

Oh interesting. Could you post what type of network adapter you are using for wifi? Could it be that wlan1 or wlan2 are active?

No, i only have wlan0
`
<EMAIL_ADDRESS>start /home/chip/raspberry-wifi-conf
node server.js
/home/chip/raspberry-wifi-conf/app/wifi_manager.js:136
info["hw_addr"].toLowerCase() == info["ap_addr"].toLowerCase() &&
^
TypeError: Cannot call method 'toLowerCase' of undefined
at _is_ap_enabled_sync (/home/chip/raspberry-wifi-conf/app/wifi_manager.js:136:62)
at _is_wifi_enabled_sync (/home/chip/raspberry-wifi-conf/app/wifi_manager.js:115:28)
at /home/chip/raspberry-wifi-conf/app/wifi_manager.js:126:35
at /home/chip/raspberry-wifi-conf/app/wifi_manager.js:90:20
at /home/chip/raspberry-wifi-conf/node_modules/async/lib/async.js:251:17
at /home/chip/raspberry-wifi-conf/node_modules/async/lib/async.js:154:25
at /home/chip/raspberry-wifi-conf/node_modules/async/lib/async.js:248:21
at /home/chip/raspberry-wifi-conf/node_modules/async/lib/async.js:612:34
at /home/chip/raspberry-wifi-conf/app/wifi_manager.js:76:17
at ChildProcess.exithandler (child_process.js:645:7)
`
I use Realtek 8723DS, which is functionally the same as Realtek 8723BS

I think in the event that the AP is not enabled yet - this crash could occur since the _get_wifi_info() method only creates sane defaults for the hw_addr, inet_addr and unassocated fields, and ignores the ap_addr which does not (yet) exist.

Please check out the latest version with this commit: https://github.com/sabhiram/raspberry-wifi-conf/commit/a719c76294cd13c49a49979a35b28a0ffc18c737

Still no DHCP:
sudo npm start

><EMAIL_ADDRESS>start /home/pi/raspberry-wifi-conf
> node server.js

Wifi is not enabled, Enabling AP for self-configure

Force reconfigure enabled - reset AP
... hostapd restarted!
... AP Enable Success!

wlan0     Link encap:Ethernet  HWaddr a0:2c:36:89:2d:1d
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:378 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:42900 (41.8 KiB)  TX bytes:4038 (3.9 KiB)

AP works and i can connect, but no dhcp.

Try this in a command line after the AP is up: service isc-dhcp-server restart
This should in theory update and restart the DHCP service. I wonder if maybe the template that was written to the file is missing. I wish I had more time to dig into this, but my startup has me putting in crazy hours as evidenced by my public commit logs recently (the last 2 years).

This is the output from service isc-dhcp-server restart
● isc-dhcp-server.service - LSB: DHCP server
   Loaded: loaded (/etc/init.d/isc-dhcp-server)
   Active: failed (Result: exit-code) since Sat 2017-03-18 13:12:13 UTC; 1min 30s ago
  Process: 461 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=1/FAILURE)

Mar 18 13:12:11 pi dhcpd[468]:
Mar 18 13:12:11 pi dhcpd[468]: No subnet declaration for wlan0 (no IPv4 addresses).
Mar 18 13:12:11 pi dhcpd[468]: ** Ignoring requests on wlan0.  If this is not what
Mar 18 13:12:11 pi dhcpd[468]: you want, please write a subnet declaration
Mar 18 13:12:11 pi dhcpd[468]: in your dhcpd.conf file for the network segment
Mar 18 13:12:13 pi isc-dhcp-server[461]: Starting ISC DHCP server: dhcpdcheck syslog for diagnostics. ... failed!
Mar 18 13:12:13 pi isc-dhcp-server[461]: failed!
Mar 18 13:12:13 pi systemd[1]: isc-dhcp-server.service: control process exited, code=exited status=1
Mar 18 13:12:13 pi systemd[1]: Failed to start LSB: DHCP server.
Mar 18 13:12:13 pi systemd[1]: Unit isc-dhcp-server.service entered failed state.

Thank you for all your help in troubleshooting this!

No problem, lets see if we can get to the bottom of this :)
Can you go through the Gotchas section of the readme (https://github.com/sabhiram/raspberry-wifi-conf/blob/6b5949d052af7703b20c87033ff087c149b0573f/README.md#gotchas) and let me know if your adapter is behaving? You might have to update the hostapd binary. You probably already read that, but just making sure ;)

Yes, i have done that, but the correct driver is nl80211, so it does not work if i update the hostapd with the rtl871xdrv driver


gen_snaphot packaging

This issue is around packaging runtime dependencies with flutter engine SDK.
Moving gen_snapshot to different runtime environments may require a regressed interpreter to be installed.
Ideally we package the runtime deps used to link gen_snapshot, and include these in flutter engine SDK.

This is for case where you run gen_snapshot in an environment other than a custom generated SDK.
Chroot is to SYSTEM_NATIVE + ldd to determine package list.  Add to flutter-engine-sdk.  Wrap gen_snapshot with script that sets LD_LIBRARY_PATH.

Engine debug build On Fedora:
$ ldd gen_snapshot
	linux-vdso.so.1 (0x00007ffdc37a0000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f8cfe080000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8cfe07b000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f8cfd71f000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f8cfd53d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f8cfe0af000)


typo fix in index_.md

Good catch @IvanRainbolt, thanks! 🚀

Hi @IvanRainbolt, I just realized this fix isn't permanent because the file this pull request modifies is auto-generated from source code every time I publish a new ScottPlot version
If you're free to fix this typo in the source code, I added additional information in https://github.com/ScottPlot/ScottPlot/issues/3011 and I would be happy to merge it in!
If you're too busy or decide not to fuss with it, I'm sure someone else will be able to get to it before the next release. Thanks again for spotting this typo!

Sure, let me give it a try


Display human-readable descriptions for signal types in crash handlers

Follow-up to https://github.com/godotengine/godot/pull/33505 and https://github.com/godotengine/godot/pull/61906.

Previously, only the signal number was displayed:
handle_crash: Program crashed with signal 4

Now, the signal code and description are shown:
handle_crash: Program crashed with signal 4 (SIGILL) - Illegal instruction

This only affects Linux and macOS, not Windows.

Should we add a description for them all?

The signal handler is only registered for SIGSEGV, SIGFPE, and SIGILL, so the other cases are dead anyways.
https://github.com/godotengine/godot/blob/9b3f13dee8c6215f86d2a3f9aabc67d2f7af2950/platform/linuxbsd/crash_handler_linuxbsd.cpp#L189-L193

I don't think we should add more signals to the crash handler, so I think it's best to remove the extra cases I added.


Added Counter Effect, Fixed styles on home

1.Number Counter animation added in level.js
2.Fixed styles and alignment issues on home.js
3.Table header centered in table.js
4.Changed .Home class in App.css
for counter effect install ::
npm install react-countup

@Srinivas-Guni You created new files with the changes. So the PR does not work.

@Srinivas-Guni You created new files with the changes. So the PR does not work.

Yes i am gonna re-create pull request with the changes


'source' is confusing terminology in the tables

'source' is a confusing term in the tables that illustrate route tables.  Shouldn't it be 'creator' or some indication that this doesn't refer to a route is sourcing traffic but rather an refers to who created the route?  (user vs azure).  yes, it's clear from reading the line by line descriptions, but it isn't actually explained.  'source' and 'destination' otherwise have specific semantics in the context of route tables.

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

ID: 38bd69ac-a1b5-a401-184d-37b55188a7c4
Version Independent ID: ef976d45-36eb-8a32-4b29-ae03412165d2
Content: Azure virtual network traffic routing
Content Source: articles/virtual-network/virtual-networks-udr-overview.md
Service: virtual-network
GitHub Login: @KumudD
Microsoft Alias: aldomel

@christiankuhtz Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

@christiankuhtz and I have discussed offline. I'll be opening a PR with the relevant changes.

@christiankuhtz for the Docs, we're going to keep this as-is for now, to match the use of the term "Source" as displayed in the effective routes view:

@please-close

#please-close


Add Node#sexp to pretty-print nodes

An alternative to tree-sitter's ts_node_string, which prints the sexp on a single line.
TODO:

[x] Add support to tree-stand
[x] Implement tree-stand's pp with Oppen

Eventually yes, this is what I want to do, but oppen is missing some things to print what you have exactly.
I will do what you suggested when done.

So I removed Utils::Printer, and that's to show you how it would look like. If you're not OK with it, I can revert.
I think this representation is a bit cleaner because we only print terminal named nodes. Other terminal unnamed ones are already in the structure, so why repeat them?

@DerekStride I am having issue with Sorbet/Tapioca.
Typechecking is complaining:
❯ just tc
bundle exec srb tc
lib/tree_sitter/node.rb:221: Unable to resolve constant Oppen https://srb.help/5002
     221 |      out ||= Oppen::Wadler.new(width: width)
                        ^^^^^
  Did you mean Open3? Use -a to autocorrect
    lib/tree_sitter/node.rb:221: Replace with Open3
     221 |      out ||= Oppen::Wadler.new(width: width)
                        ^^^^^
    https://github.com/sorbet/sorbet/tree/e40c7a24ddcb27b695bbf6742f5fd19729bdea18/rbi/stdlib/open3.rbi#L31: Open3 defined here
    31 |module Open3
        ^^^^^^^^^^^^
Errors: 1
error: Recipe `tc` failed on line 116 with exit code 100

And my attempt to generate an rbi for oppen also fails miserably:
❯ bin/tapioca gems oppen
Source locally installed gems is ignoring #<Bundler::StubSpecification name=ruby_tree_sitter version=1.10.0 platform=ruby> because it is missing extensions
/Users/firas/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bundler-2.6.2/lib/bundler/spec_set.rb:143:in 'Bundler::SpecSet#missing_specs': undefined method 'flat_map' for nil (NoMethodError)

      @materializations.flat_map(&:completely_missing_specs)
                       ^^^^^^^^^
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/tapioca-0.16.5/lib/tapioca/gemfile.rb:71:in 'Tapioca::Gemfile#materialize_deps'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11708/lib/types/private/methods/_methods.rb:279:in 'UnboundMethod#bind_call'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11708/lib/types/private/methods/_methods.rb:279:in 'block in Tapioca::Gemfile#_on_method_added'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/tapioca-0.16.5/lib/tapioca/gemfile.rb:58:in 'Tapioca::Gemfile#load_dependencies'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11708/lib/types/private/methods/_methods.rb:279:in 'UnboundMethod#bind_call'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11708/lib/types/private/methods/_methods.rb:279:in 'block in Tapioca::Gemfile#_on_method_added'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/tapioca-0.16.5/lib/tapioca/gemfile.rb:33:in 'Tapioca::Gemfile#initialize'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11708/lib/types/private/methods/_methods.rb:279:in 'UnboundMethod#bind_call'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11708/lib/types/private/methods/_methods.rb:279:in 'block in Tapioca::Gemfile#_on_method_added'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/tapioca-0.16.5/lib/tapioca/commands/abstract_gem.rb:65:in 'Class#new'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/tapioca-0.16.5/lib/tapioca/commands/abstract_gem.rb:65:in 'Tapioca::Commands::AbstractGem#initialize'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11708/lib/types/private/methods/_methods.rb:279:in 'UnboundMethod#bind_call'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11708/lib/types/private/methods/_methods.rb:279:in 'block in Tapioca::Commands::AbstractGem#_on_method_added'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11708/lib/types/private/abstract/declare.rb:37:in 'Class#new'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11708/lib/types/private/abstract/declare.rb:37:in 'block in Tapioca::Commands::Command.declare_abstract'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11708/lib/types/private/abstract/declare.rb:37:in 'block in Tapioca::Commands::AbstractGem.declare_abstract'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/tapioca-0.16.5/lib/tapioca/cli.rb:308:in 'Tapioca::Cli#gem'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/thor-1.3.2/lib/thor/command.rb:28:in 'Thor::Command#run'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/thor-1.3.2/lib/thor/invocation.rb:127:in 'Thor::Invocation#invoke_command'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/thor-1.3.2/lib/thor.rb:538:in 'Thor.dispatch'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/thor-1.3.2/lib/thor/base.rb:584:in 'Thor::Base::ClassMethods#start'
        from /Users/firas/src/github/grenadier/vendor/ruby/3.4.0/gems/tapioca-0.16.5/exe/tapioca:30:in '<top (required)>'
        from bin/tapioca:27:in 'Kernel#load'
        from bin/tapioca:27:in '<main>'

I couldn't figure it out from online resources. Do you have an idea on how to attack this?
PS: I now added printing for all terminals on the margin. Makes more sense, and actually looks like a token stream. No need to review if you don't have the time. Thanks in advance!


prometheus fail to start because rules-configmap-reloader hits memory limit

What kind of request is this (question/bug/enhancement/feature request):
bug
Prometheus fail to start
Steps to reproduce (least amount of steps as possible):
I'm hitting this issue https://github.com/coreos/prometheus-operator/issues/2364
Result:
Prometheus fail to start because rules-configmap-reloader fail to start (both on project-level monitoring and cluster level monitoring)
Environment:information

Rancher version:

Component
Version

Rancher
v2.2.0-rc2

Use (Interface
v2/HA):.2.3

Helm
v2.10.0-rancher9

Machine
v0.15.0-r: cher4-1

Installation option: single install

Cluster information

Cluster type: Imported (from managed digitalocean k8s)
Machines: 3* cheap 10$ DigitalOcean
Kubernetes version (use kubectl version):

Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:38:32Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.1", GitCommit:"eec55b9ba98609a46fee712359c7b5b365bdd920", GitTreeState:"clean", BuildDate:"2018-12-13T10:31:33Z", GoVersion:"go1.11.2", Compiler:"gc", Platform:"linux/amd64"}

Docker version (use docker version):

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 03:42:13 2019
  OS/Arch:          linux/amd64
  Experimental:     false

@rvion , a similar issue for this,  https://github.com/rancher/rancher/issues/17997. I think we can update the Prometheus Operator version to v0.29.0 to fix this.
cc @loganhz , @orangedeng , @cjellick .

The bug fix is validated.
check this issue for detailed testing steps and results: https://github.com/rancher/rancher/issues/17997#issuecomment-468024851


Bugfix: project add return value

First off, the /api/v2/project/add endpoint returns "project_upload_token", not "upload_token", so the Connection.projects.add method always returns None since it wasn't pulling in the right value.  I then realized that the add endpoint returns the serialized project in full, so there's no need to re-fetch the project details.

Coverage remained the same at 83.372% when pulling 8f5377c2506c793282cc0f6b90b9c3c7e43dd2ca on bugfix/project_add_return_value into 9e9c8085d62c51a8e670f251250005ff605e3fa4 on master.

Coverage remained the same at 83.372% when pulling f225401ffecb8c0ce3f65a6210a9e3666fd16222 on bugfix/project_add_return_value into 9e9c8085d62c51a8e670f251250005ff605e3fa4 on master.

LGTM, I ran a quick search for self.get to make sure we don't recycle this pattern anywhere else.


NM - Validate PMG test files

Work with NM to validate sample test files from PMG

@jbiskie noted timeout errors when attempting to deliver files to NM SFTP.
NM now checking internally on this issues, and the need to whitelist IP address from CDC.

Checking to see if we can send the files to NM via secure email.

Files delivered to NM after getting IP whitelisted

Heard back from NM. PMG had some changes to make. Changes made last week and PMG sent over new test files.  @jbiskie Will forward to NM this week.

Second batch was sent to NM. NM is having contract issues with the contractor who handles these.  Joel notified PMG.  Hoping to check in today to see if we can make more progress on this.

8/1: @sarahnw will look into and flesh out details

We had to put PMG on hold for NM because of contract issues between NM and their vendor, Syncronys. These have been resolved, so they are ready to start validating again.
This is the latest from David at Syncronys, and it appears they have just 1 potential issue in the file. No feedback yet from Pear on how this looks in NMEDSS.

We’re back working on onboarding! I ran an analysis of the file you sent and found the following:
Examined files PREMIERMG-Lab-TEST-20220216-PREMIER-ELR-TEST-20220215222701.hl7 through
PREMIERMG-Lab-TEST-20220216-PREMIER-ELR-TEST-20220215222701.hl7
There were 9 messages.
            OBX.18.1 is type EI and is missing required subfields. The (sub)Field contains BD Veritor Plus System_Becton Dickinson^^MNI for 9 segments. Example ControlIDs: b5000c0b-5030-4847-96d1-9c07ff6fcfe2, 22353370-d50b-46d7-96cd-5e1bd7ebfeac

As you can see, the only issue from a structural perspective is the OBX.18. I’ve asked Pear at NMDOH to try running it into their NMEDSS system to see if this causes a problem for them. If so, it’ll need to be fixed.
On the notes above regarding whitelisting - they wanted us to send the test files to their sFTP and whitelisted my IP to allow that to happen. If you need to send more test files to them, I may have to do the upload since my IP is the one that they've whitelisted other than our production environment. (Presuming my IP hasn't changed in the last 7 months!)

Hi @jbiskie -- @sarahnw says this would be a good ticket for you to continue on now that you're back. Let us know if you have any questions!

NM has validated and is ready for data. I emailed PMG to coordinate a date/time to turn on the feed to NM.

NM is ready. Contact made with PMG to turn on NM as soon as they're ready.
*Also sent list of new + in progress states to PMG per their request.

PMG feed to NM is turned on as of 9/12/22.

@jbiskie Email from David today:
Hi Joel,
I can’t find any Premier files in the feed. Have you actually sent anything?


Wild guess at fixing palindromo function

without knowing anything about telegram bots =)

This option does not work, because in the message, the command /palindromo is included. It works, but not as it should be. Thanks anyway :D


how to enable all the modules

is there a way to enable all features under modules?
modules: {
    appearance: ['responsive'],
    backgroundAttachment: ['responsive'],
    backgroundColors: ['responsive', 'hover'],
    backgroundPosition: ['responsive'],
    backgroundRepeat: ['responsive'],
    // ...
  },

Can not find this in the Docs

You can just set modules to 'all' and it will generate classes for all variants:
https://github.com/tailwindcss/tailwindcss/blob/7a0a0a8bd7d0ead66cd95d9e307d01c778a5e842/__tests__/mergeConfigWithDefaults.test.js#L56

You should expect a very large css file and long compilation.
btw it is indeed undocumented.

@hacknug Wooo, thank you, it's really good to know.

@tlgreg yes I know, it's going to be very very big, I just want to play around with it. It's not going to be in the production lol


[Issue] No baseline for 15.1.845.36

There is no baseline file for 15.1.845.36 available, which results in numerous "NoHashMatch" entries in the result CSV when executing CompareExchangeHashes.ps1

Created a single task for tracking all missing baselines, please follow: https://github.com/microsoft/CSS-Exchange/issues/313


Env_Zoom and better point_viewcontrol entities for cutscenes needs to be added.

From a sample easy way to re-add env_zoom functionality in multiplayer I wrote some time last year:
entities/entities/env_zoom/init.lua
AddCSLuaFile( "cl_init.lua" )
AddCSLuaFile( "shared.lua" )

include('shared.lua')

function ENT:KeyValue(key, value)
	if (key:lower() == "fov") then
		self.fov = value
	elseif (key:lower() == "rate") then
		self.rate = value
	elseif (key:lower() == "allplayers") then
		self.allply = value
	end
end

function ENT:Initialize()
	self.allply = 1
end

function ENT:Use( activator, caller )
end

function ENT:Think()
end

function ENT:AcceptInput(inputName, activator, called, data)

	if (inputName == "Zoom") then

		--print("Setting ply fov to: "..self.fov.." at a rate of: "..self.rate)
		if (self.allply == 0) then
			activator:SetFOV(self.fov, self.rate)
		elseif ((self.allply == 1) or (self.allply == nil) or (self.allply == '')) then
			for k,ply in pairs(player.GetAll()) do
				ply:SetFOV(self.fov, self.rate)
			end
		end

	elseif (inputName == "UnZoom") then

		if (self.allply == 0) then
			activator:SetFOV(self.fov, self.rate)
		elseif ((self.allply == 1) or (self.allply == nil) or (self.allply == '')) then
			for k,ply in pairs(player.GetAll()) do
				ply:SetFOV(90, self.rate)
			end
		end
	end
end

shared.lua:
ENT.Type = "point"
ENT.Base = "base_point"

cl_init.lua:
include('shared.lua')

The point_viewcontrol remake is a bit more problematic, but still functional as this:
entities/entities/point_viewcontrol/init.lua
AddCSLuaFile( "cl_init.lua" )
AddCSLuaFile( "shared.lua" )

include('shared.lua')

function ENT:KeyValue(key, value)
	if (key:lower() == "angles") then
		self.ang = value
	elseif (key:lower() == "wait") then
		self.holdtime = value
	elseif (key:lower() == "allplayers") then
		self.allply = value
	end
end

function ENT:Initialize()
	self.allply = 1
	entsusing = {}
end

function ENT:Use( activator, caller )
end

function ENT:Think()
end

function ENT:AcceptInput(inputName, activator, called, data)

	if (inputName:lower() == "enable") then

		if ((self.viewent == nil) or (self.viewent == '') or (!IsValid( self.viewent ))) then
			local ent = ents.Create( "prop_physics" )
			ent:SetModel( "models/hunter/misc/sphere025x025.mdl" )
			ent:SetPos( self:GetPos() )
			--Tried EyeAngles, EyePos, GetAngles
			ent:SetAngles( Angle(self.ang) )
			ent:SetKeyValue("parentname", self:GetName())
			ent:Spawn()
			ent:SetMoveType(MOVETYPE_FLY)
			ent:SetRenderMode(RENDERMODE_NONE)
			self.viewent = ent
		end
		--[[
		if (!self:HasSpawnFlags(8)) then
			print("Removing view ent after: "..self.holdtime)
			timer.Simple(self.holdtime, function() ent:Remove() end )
		else --For now, just remove after 60 seconds maybe?
			timer.Simple(60, function() ent:Remove() end )
		end
		--View self.viewent removed on disable
		]]

		if (self.allply == 0) then
			local curfov = activator:GetFOV()
			activator:Spectate( OBS_MODE_IN_EYE )
			activator:SpectateEntity( self.viewent )
			activator:SetFOV(curfov, 0.0)
			if (!table.HasValue( entsusing, activator )) then
				entsusing.insert(activator)
			end
		elseif ((self.allply == 1) or (self.allply == nil) or (self.allply == '')) then
			for _, ply in pairs( player.GetHumans() ) do
				local curfov = ply:GetFOV()
				ply:Spectate( OBS_MODE_IN_EYE )
				ply:SpectateEntity( self.viewent )
				ply:SetFOV(curfov, 0.0)
			end
		end

	elseif (inputName:lower() == "disable") then

		if (self.allply == 0) then
			activator:UnSpectate()
			activator:Spawn()
			for k, v in ipairs(entsusing) do
				if ((v == activator) or (!v:IsConnected())) then
					table.RemoveByValue( entsusing, v )
				end
			end
			if (#entsusing < 1) then
				self.viewent:Fire( "kill" )
				self.viewent = nil
			end
		elseif ((self.allply == 1) or (self.allply == nil) or (self.allply == '')) then
			for k, ply in pairs( player.GetHumans() ) do
				ply:UnSpectate()
				ply:Spawn()
			end
			self.viewent:Fire( "kill" )
		end

	end
end

Remember that I wrote this about a year ago, and there may be better ways of doing these things, but this has been an issue that has bugged me for Lambda and I want this fixed.
Edited for allplayers key, default to on, but can be turned off for both env_zoom and point_viewcontrol.

Your workaround comes with other problems, you can't assume that whenever "Enable" is fired that every player should be affected. There are some binoculars in the coast and prison maps, so when one player would use them everyone would be affected. But I'll have a look into this, thanks for pointing this out.

Could try adding a spawnflag for all players vs one player maybe, or a keyvalue. Not sure if it should be one that is on by default, then using the map scripts, set for one player or not.

I've been thinking that if the activator is the player it should only affect the player otherwise its meant to be global? I need to run some tests on this first, it will also take a while to properly backport it as some lua entity.

Might have to do that as well for the point_viewcontrol, but almost all of them should be active for all players, there are some (like the one on the coast) that should also be just activator.

It would be nice if you could open a PR and base this on lambda_entity, there are functions for keyvalues and inputs already.

I'm aware, currently I'm trying to see why it would never take the angles from the point_viewcontrol.

There is the kv for angles, but that is just for the initial angles and I don't think it takes in to account if it has changed by looking at a target or moving to a path_track. The initial angles might be enough to go on though.

Good catch, I haven't tested this with multiple people yet. I'll have a look at some point.

Gotta close this as its implemented.


only register input event in input type text and textarea

WHY
BEFORE - What was wrong? What was happening before this PR?
I was having a hard time figuring out why select_multiple was triggering multiple times the change event, turns out that it was because the event was registered twice, on input and on change.
AFTER - What is happening after this PR?
The event is only registered once for non text/textarea inputs.
HOW
How did you achieve that, in technical terms?
conditional checking!

Good catch @pxpm . See my inline comment please.


need to repeat 'wis2box metadata station publish-collection' to see data after first observation received

A user currently needs to rerun 'wis2box metadata station publish-collection' to see data in the wis2box-ui after first observation is received for that data. Is there anyway to automate this process?
There is also currently nothing that alerts the users that this step needs to be taken due to missing links?

@tomkralidis
I noted that if I run data ingest before having manually executed 'wis2box metadata station publish-collection' the data notifications go out while the API is not updated. Maybe it would be better if there was a process internally to ensure the file metadata/station/station_list.csv and the api-endpoint oapi/collections/stations are in sync. Such a process could at least be run at container-startup and perhaps also run periodically   ?

FYI #413 implements station publishing on startup as well as every 10 minutes.  The sync is needed so as to link incoming observations to stations, which is then utilized by the UI.  Note that this will change once a station metadata UI is implemented as part of a future sprint/release.