Spree 4 installation is failing

After bundle install i am executing
bundle exec rails g spree_editor:install and i got the response:
Traceback (most recent call last): bin/rails: Bootsnap::LoadPathCache::FallbackScan         48: from bin/rails:4:in '
47: from /usr/local/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:325:in require'         46: from /usr/local/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:291:in load_dependency'
45: from /usr/local/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:325:in block in require'         44: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in require'
43: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in require_with_bootsnap_lfi'         42: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in register'
41: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in block in require_with_bootsnap_lfi'         40: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in require'
39: from /usr/local/bundle/gems/railties-<IP_ADDRESS>/lib/rails/commands.rb:18:in <main>'         38: from /usr/local/bundle/gems/railties-<IP_ADDRESS>/lib/rails/command.rb:46:in invoke'
37: from /usr/local/bundle/gems/railties-<IP_ADDRESS>/lib/rails/command/base.rb:69:in perform'         36: from /usr/local/bundle/gems/thor-0.20.3/lib/thor.rb:387:in dispatch'
35: from /usr/local/bundle/gems/thor-0.20.3/lib/thor/invocation.rb:126:in invoke_command'         34: from /usr/local/bundle/gems/thor-0.20.3/lib/thor/command.rb:27:in run'
33: from /usr/local/bundle/gems/railties-<IP_ADDRESS>/lib/rails/commands/generate/generate_command.rb:21:in perform'         32: from /usr/local/bundle/gems/railties-<IP_ADDRESS>/lib/rails/command/actions.rb:14:in require_application_and_environment!'
31: from /usr/local/bundle/gems/railties-<IP_ADDRESS>/lib/rails/command/actions.rb:22:in require_application!'         30: from /usr/local/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:325:in require'
29: from /usr/local/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:291:in load_dependency'         28: from /usr/local/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:325:in block in require'
27: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in require'         26: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in require_with_bootsnap_lfi'
25: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in register'         24: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in block in require_with_bootsnap_lfi'
23: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in require'         22: from /spree/config/application.rb:7:in '
21: from /usr/local/lib/ruby/2.7.0/bundler.rb:174:in require'         20: from /usr/local/lib/ruby/2.7.0/bundler/runtime.rb:58:in require'
19: from /usr/local/lib/ruby/2.7.0/bundler/runtime.rb:58:in each'         18: from /usr/local/lib/ruby/2.7.0/bundler/runtime.rb:69:in block in require'
17: from /usr/local/lib/ruby/2.7.0/bundler/runtime.rb:69:in each'         16: from /usr/local/lib/ruby/2.7.0/bundler/runtime.rb:74:in block (2 levels) in require'
15: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in require'         14: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in require_with_bootsnap_lfi'
13: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in register'         12: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in block in require_with_bootsnap_lfi'
11: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in require'         10: from /usr/local/bundle/bundler/gems/spree_editor-58c3634918ab/lib/spree_editor.rb:4:in '
9: from /usr/local/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:325:in require'          8: from /usr/local/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:291:in load_dependency'
7: from /usr/local/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:325:in block in require'          6: from /usr/local/bundle/gems/polyglot-0.3.5/lib/polyglot.rb:65:in require'
5: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:27:in require'          4: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:41:in rescue in require'
3: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in require_with_bootsnap_lfi'          2: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:89:in register'
1: from /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in block in require_with_bootsnap_lfi' /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in require': cannot load such file -- coffee_script (LoadError)`

Can you give solution "require': cannot load such file -- coffee_script (LoadError)`"???

Can you give solution "require': cannot load such file -- coffee_script (LoadError)`"???

You can fork the repository and comment out line 4 (require 'coffee_script') from
spree_editor/lib/spree_editor.rb
I did that and it seemed to work fine.

Can you give solution "require': cannot load such file -- coffee_script (LoadError)`"???

You can fork the repository and comment out line 4 (require 'coffee_script') from
spree_editor/lib/spree_editor.rb
I did that and it seemed to work fine.

you can add this code in gemfile 👍 gem 'spree_editor', github: 'spree-contrib/spree_editor'
gem 'coffee-rails', '~> 5.0.0'


PLEASE HELP!!! Issues with Power Platform Tools

I recently installed “Power Platform Tools” into Visual Studio Code. I was able to download all of my project files and settings from my portal apps. However, when I am trying to upload the changes that I have made, I am getting this error. “ Updating table adx_webpage with record id:a77ec5d4-9236-ec11-b6e6-00224824282b FAILED due to A validation error occurred.  The length of the 'adx_summary' attribute of the 'adx_webpage' entity exceeded the maximum allowed length of '2000'. “

This error is being thrown as the maximum limit on the length of the adx_summary column is set to 2000 characters in Dataverse by deafult. The restriction can be removed by changing the maximum length of the Summary column on the entity adx_webpage.
Steps to fix this would be:

Go to make.powerapps.com
Under Data go to Tables
Select Webpage entity, click on the Summary column
On right side pane expand the advanced options and scroll down
Change the Max Length to the desired number


Add the FAQ section in the website

Is your feature request related to a problem? Please describe.
Without an FAQ section on a website, users may struggle to find quick answers to common questions, leading to increased support inquiries and a potentially frustrating user experience.
Describe the solution you'd like
The solution to the problem is to create a comprehensive FAQ section on the website, addressing frequently asked questions and providing clear and concise answers, improving user satisfaction and reducing support inquiries.
Describe alternatives you've considered
Some alternatives to consider instead of or in addition to an FAQ section are :

Implementing a live chat feature for real-time support
Offering a community forum where users can ask and answer each other's questions.
These alternatives provide additional avenues for users to find the information they need and engage with others for support.

Additional context
Here is a simple prototype of FAQ section.

I am expecting something like this :

@akshitagupta15june please assign this task to me under, @GSSOC'23


Configuration System

Original discussion was held on PR https://github.com/timmbogner/Farm-Data-Relay-System/pull/14. Moving it here so it does not get lost.
@lekrom

For my use-case, having configuration values set up at compile time is quite inconvenient and rather impractical. This portable class based library approach would suit me much better. Ideally, being able to set up the Unit mac, gateway mac and reading ID's at runtime would be much better and easier to deploy. Perhaps using an overloaded fdrs.begin() or separate functions for this purpose. This way, on bootup, the program can retrieve the appropriate settings from config files in SPIFFS (for example). These settings can potentially be user configured (via webserver or other UI).
I think there would also be value in doing something similar with the gateways. The trick would be to not sacrifice too much of the modularity / flexibility. I was thinking of defining a gateway type based on the port type to which it transmits (LoRa, ESPNow, Serial, etc.) Perhaps one can then consider creating multiple instances of such a gateway object, where each instance listens on a predefined port. This way, one can still implement a gateway in a single physical device that can handle multiple sensor types. If this makes any sense? Perhaps there is a better way of doing this?
Also, for the gateways (MQTT specifically), to have WiFi credentials hard-coded is not ideal and would be hard to deploy. I would prefer to set this up using WiFiManager or something similar. Again, having the appropriate gateway mac's configurable at run-time would make it much easier to deploy.

@timmbogner

@lekrom Thanks! I definitely see your point on compile-time vs run-time. Way back in my notes I wrote "FDRS: Field Configurable" which was to be a method of using DIP switches or jumpers to configure devices. I like the idea of keeping config data in (the filesystem formerly known as) SPIFFS. The question is how to build a lightweight method of setting/changing it. Can you think of a good way to add webserver functionality without adding much battery time at startup? I've been planning a method for sensors to send special ESP-NOW broadcast packets and receive responses about nearby gateways. These packets will be set apart from DataReading packets by being smaller than them. Perhaps this could be employed to make a remote programming device that assigns config data via ESP-NOW? Serial? Maybe just a command to send it into webserver mode?
I think I'm also seeing your concept with gateways. I'll be able to to discuss it a little better once I research classes and objects this week.
Thanks again to both of you! I'll be in touch!

@lekrom

Glad to assist. I came across a tecnique on the 8266 where a double reset triggers a simple webserver. The device checks on bootup if the reset button was recently pressed twice. This is used on the iSpindel device ( an esp based tilting hydrometer uses to monitor beer fermentarion. https://github.com/universam1/iSpindel
Could maybe do something like that. Also, it uses WiFiManager, a library that handles wifi login and credential storage for you. The library can be used to store additional config values. This is often used to store mqqt stuff and sonetimes blynk tokens for example. Should be useful here for gateway macs and the like. Could also maybe trigger "config mode" by sending a command msg.

The WiFiManager library has some nice examples for custom setting fields. It also shows how to trigger the config portal "on demand" using a pushbutton. https://github.com/tzapu/WiFiManager

@timmbogner Mind adding a label to this as a enhancement.

I would suggest doing the configuration via UART. This will have the advantage of not locking the platform in a single line of MCUs. This becomes relevant when other transport layers get implemented like ethernet, nRF24L01, 4G LTE, and E5 LoRa. Not everything has Wifi but just about everything as a serial port.
The on the fly gateway mac and reading ID configuration can be done with a set/get pair of function. Just about any no-volatile storage  can be used to store the config.

That's a really good point, UART should always be kept as an option.  Configurability via WiFi would be a big asset, though.  I think that rather than depending on WiFi Manager I'd prefer to make a lighter version: just an AP with a captive portal that gives you a page with options, and then sets them using our set/get functions. I'm not sure if the non-ESP Arduino WiFi boards have AP capability but if so, the functionality could be extended to them too.  @Devilbinder do you think triggering it with double-reset would be portable enough?
Being honest, It will be rare that I'm not using an ESP, so I don't mind adding an extra feature for it.  I just don't want to break other compatibilities.  I don't even have a LoRa board without an ESP attached, so I have never tested AVR compatibility. I just know it compiles.

Having a way of changing the config parameters via a function provided by the library, should be flexible enough for the purpose of the library. We could play with different implementations in the examples. That way, users can implement their own way of dealing with the config based on their use-case and hardware choice. Doing too many fancy stuff in the library will undoubtedly add a lot of bloat.
I will try to setup a few tests and start looking at some examples to this effect. I should hopefully get to it this weekend.

Gotcha, that makes sense.  The new library is working now in the "dev" branch.
Node Red is fairly easy to set up, but if you want to test a system without it: watch the serial monitor on the UART gateway that is feeding the MQTT gateway (#4 in the examples) and you should see all of the DataReadings being sent in JSON format.
I would swear that my floats didn't used to add precision the way they do now (21.0345 becomes 21.03450012) but I've come to understand that this is just why floats aren't ideal.

Thanks. I will see if I can get a node-red instance fired up. I want to learn it any case so a good opportunity there. In the meanwhile, I was also thinking of testing with the serial monitor on a gateway. Should be easy enough...

@timmbogner I have somewhat given up on the idea of not locking the project into the esp. I like having RTOS available if I need it. Already have seen a stuff with the serial gateway that will cause issues. That will be simple to solve by using a RTOS thread (task).

On second though only the Gateway's need to be locked into ESP platform. The sensor can be whatever.

@Devilbinder This has been my outlook for a while, though for a few smaller reasons. In the sensor sketch I only had to make ESP-NOW optional and suddenly it was AVR compatible (I actually have to fix this a little bit... noticed a bug with spi yesterday).
The gateway on the other hand needed a lot more to make it hardware independent, so I never tried.
It seems like an acceptable limitation for the time being.
The avr dudes will just have to chill 😎

I agree. A "no infrastructure wireless network" without wireless capability does not make much sense.


add support for server-chosen connection IDs

It's not obvious to me how to validate that the server just changes the connection ID once. The spec says that only the first Handshake packet may contain a server-chosen connection ID, but at the same time, this packet has a randomized packet number.
It looks like packet number randomization might be changed once the WG agrees on a greasing-scheme for header values (to save bytes in the encoding of the ACK frame), so it makes sense to wait with fixing this issue until a decision has been made.

I just implemented the connection ID change for Handshake packets.
The Retry mechanism will likely change soon, if the proposal by the Stream 0 Design Team is accepted:
Currently the Retry packet is passed to the session, has be be unpacked (and authenticated), and the contents fed into mint. Once this is done, the session closes with handshake.ErrCloseSessionForRetry. With the new proposal, the Retry packet is not encrypted, and contains an opaque payload, that the client has to echo with the next Initial packet. It's therefore not necessary to pass the packet to the session, and wait for it to close with a specific error code. All processing can happen in the client.
I'm therefore splitting this issue, and will deal with the connection ID change triggered by Retry packets once the WG made a decision.


std.math: 80-bit exp() tests are marginally wrong when returning subnormals

ibuclaw (@ibuclaw) reported this on 2015-11-19T20:47:03Z
Transfered from https://issues.dlang.org/show_bug.cgi?id=15365
CC List

ibuclaw (@ibuclaw)

Description
When comparing the DMD-style inline assembler path vs. the generic cephes implementation, observed the following.

These test points:

(1):
[ 0x1.1p+13L,     0x1.29aeffefc8ec645p+12557L  ], // near overflow
http://www.wolframalpha.com/input/?i=exp%288704%29
1.256523125474349284688509465050423995871881189122581533e3780L

feqrel(cephes, iasm) = 52
feqrel(iasm, wolfram) = 52
feqrel(cephes, wolfram) = 64

=========

(2):
[-0x1.18p+13L,    0x1.5e4bf54b4806db9p-12927L  ], // near underflow
http://www.wolframalpha.com/input/?i=exp%28-8960%29
5.26553067155989234457558352116540147577224389983906948e-3892L

feqrel(cephes, iasm) = 51
feqrel(iasm, wolfram) = 51
feqrel(cephes, wolfram) = 64

=========

(3):
[-0x1.625p+13L,   0x1.a6bd68a39d11f35cp-16358L ], // ditto
http://www.wolframalpha.com/input/?i=exp%28-11338%29
9.31459938556868263111811562594117020130237890448547800e-4925L

feqrel(cephes, iasm) = 53
feqrel(iasm, wolfram) = 53
feqrel(cephes, wolfram) = 64

=========

(4):
[-0x1.62dafp+13L, 0x1.96c53d30277021dp-16383L  ], // near underflow - subnormal
http://www.wolframalpha.com/input/?i=exp%28-11355.4%29
2.58487886630776605706860595662918121578535663781714980e-4932L

feqrel(cephes, iasm) = 54
feqrel(iasm, wolfram) = 5
feqrel(cephes, wolfram) = 5

=========

In (1), (2), and (3) the generic version is more accurate than the IASM version, matching bit-for-bit the result given from wolfram.

What is interesting is that in each case, they share up to double precision in common.  This suggests that whatever the IASM branch does (I assume this happens in L_subnormal) it truncates or rounds the value to double.

Test (4) is simply way off the mark for both IASM and generic, and should probably be scrapped as it's clear we can't guarantee any reasonable level of accuracy with any lower number.  If I understand the documentation correctly, the domain that the exp() function has been tested with is +-10000.

clugdbug commented on 2015-11-20T15:53:43Z
Note that these errors occur only in the slow path of the asm exp(). Thus, a more accurate, slower calculation can be added with no impact on speed.

Clearly, there is a loss of precision bug. I am not certain, but the problem may be in the extraction of the integer part, which is obviously limited to 64 bits.
I need to look into this.

This title of this bug report is a bit alarmist though, it's not very generous to describe 52 bit accurate as "utterly wrong". :)

ibuclaw (@ibuclaw) commented on 2015-11-22T10:56:44Z
Stepped through the path dmd code uses for exp().

(1) 0x1.1p13L       - Uses L_normal path
(2) -0x1.18p+13L    - Uses L_normal path
(3) -0x1.625p+13L   - Uses L_normal path
(4) -0x1.62dafp+13L - Uses L_normal path

Interestingly, the last test exp(-11398) uses the L_subnormal path, and returns results that are correct to wolfram in at least the bits that can be represented.

Also tried exp(-11370) and exp(-11387.4), and on the surface it looks like any near underflow/subnormal that represents a decimal will only be correct up to double precision.

Also tested the first iteration of exp() and it returns the same results.

ibuclaw (@ibuclaw) commented on 2015-11-20T16:13:38Z
(In reply to Don from comment #1)
> Note that these errors occur only in the slow path of the asm exp(). Thus, a
> more accurate, slower calculation can be added with no impact on speed.
>
> Clearly, there is a loss of precision bug. I am not certain, but the problem
> may be in the extraction of the integer part, which is obviously limited to
> 64 bits.
> I need to look into this.
>
> This title of this bug report is a bit alarmist though, it's not very
> generous to describe 52 bit accurate as "utterly wrong". :)

What about 5 bit accuracy? :-P


MudDrawer: Disable Overlay Not Working on Mini-Drawer

Bug type
Component
Component name
MudDrawer
What happened?
When you set DisableOverlay="true" and<EMAIL_ADDRESS>the content will still push to the right instead of the drawer overlaying.  Changing the variant to temporary will get it to work.
<MudDrawer @bind-Open="drawerOpen" ClipMode="DrawerClipMode.Always" Elevation="0"<EMAIL_ADDRESS>OpenMiniOnHover="true" DisableOverlay="true">         <NavMenu />     </MudDrawer>
Expected behavior
The drawer menu expands out over the content on the site.
Reproduction link
https://try.mudblazor.com/snippet/wOcFluaPJwfboSxk
Reproduction steps

Hover over the drawer.

Relevant log output
No response
Version (bug)
5.1.5
Version (working)
No response
What browsers are you seeing the problem on?
Chrome, Microsoft Edge
(It does appear to work on iOS)
On what operating system are you experiencing the issue?
Windows
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

[X] I agree to follow this project's Code of Conduct

I think this is not a bug. The DisableOverlay prop removes the gray backdrop on small devices:

https://try.mudblazor.com/snippet/maGbvOamcIUozdZQ
If you want the drawer to expand over the content of the site, you should set the Breakpoint to something bigger. Like Breakpoint.Xl:
https://try.mudblazor.com/snippet/QOmbPEucGyMkywmU
I hope I understood what you meant correctly

Got it.  Thanks.  Not a bug.

Got it.  Thanks.  Not a bug.


Room directory protocol listing fails

The logging shows a 404, so it feels like something isn't hooked properly:
Mar-15 02:08:05.631 [DiscordAS] verbose: matrix-appservice-bridge ::1 - - [15/Mar/2019:01:08:05 +0000] "GET /_matrix/app/unstable/thirdparty/protocol/discord HTTP/1.1" 404 187 "-" "Synapse/0.99.2"

Does this issue prevent the bridge to work ? I'm trying to set it up and I see this error. I am not able to join #discord* rooms but I'm not sure it is linked to this issue.

@Skealz No, this only affects the third-party protocol list in the room directory.

So, I am still supposed to be able to join rooms through the Room directory ? if not, how do I join them ?

Just to update this issue it seems that this bug now also causes the whole Room Directory function in Element to completely colapse upon it self.


updated for list check bug in predict/predict_on_batch

i think this will do it

ref: #2551 #2580

Looks good to me. Thanks!


sick_safetyscanners2_interfaces: 1.0.0-2 in 'humble/distribution.yaml' [bloom]

Increasing version of package(s) in repository sick_safetyscanners2_interfaces to 1.0.0-2:

upstream repository: https://github.com/SICKAG/sick_safetyscanners2_interfaces.git
release repository: https://github.com/SICKAG/sick_safetyscanners2_interfaces-release.git
distro file: humble/distribution.yaml
bloom version: 0.11.1
previous version for package: null

sick_safetyscanners2_interfaces
* Initial Release

@puck-fzi thank you!


Invalid chars in ARM Template

Jira Description
When Cy was running the PS deploy script, he was running into an error during the Azure component deployment.
  Can you try running this again?
Commenter: Dan Malagari


raidboss: the_tower_at_pardigm_breach fr

added missing translations fr

It's ok for merged. Thank you @mooondark


Buil Failed on server (Webmin 1.630 on lamp (Debian Linux 7))

Hi,
Im having this error when I try to build with  ./build.py --jobs 1
I have upgrade the ram to 4G,
Build log:

I've followed the guide here : http://phantomjs.org/build.html , installed all dependencies ,and googled about this error but got nothing that fix my issue.
did someone ever have the same error of know how to fix it ?
Many thanks!
PS : I have stopped the build in the middle the first time because the server didn't have enought ram ( only (256 MB)

How can i do a Clean Build ?

I Fix my problem by erasing completely the phantomjs folder, pull the git,and run the buil.py again !  IT It was probably causes by the interuption in the build :D THX work perfectly now


Added eslint

I think all the modules should have a linter, I added it here but do you think it should be added to the rest of the modules?

I am very skeptical against linters ... I am for the least amount of rules. Can you explain what this preset impose? I mostly hate stubborn linters and I don't want to debate against stubborn linters rules.
Thanks for clarifying about this

Hey @yotamN mind changing the eslint config as such?
{
  "extends": "eslint:recommended",
  "globals": {
    "Promise": true,
    "imports": true
  },
  "rules": {
    "no-case-declarations": 0,
    "no-fallthrough": 0
  }
}

this seems to be way more reasonable than airbnb bloated set of stubborn rules, IMO.
Thanks

actually, never mind. I've pushed the default .eslintrc to all repositories in here so please remove your file from this PR, thanks.

I have changed the eslint config, there are other changes in the pull request, fixed a function that was missing a commit from the previous pull request

hey @yotamN I've published this as 0.0.1 and added to cgjs latest version.
Even if incomplete, it's now usable for what it offers via cgjs, thanks again!


Adds CLI API to execute commands. Closes #2996

Adds CLI API to execute commands. Closes #2996

Merged manually


add template Bug Issue

What about template for feature request? E.g., something like https://github.com/dbt-labs/dbt-spark/blob/main/.github/ISSUE_TEMPLATE/feature-request.yml

looks good but will need to cook it right for us
maybe I'll make it a separate ticket


disregard

[Enter feedback here]
disregard
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 26925ef6-ef21-2c7a-3576-608e6b5fb9c8
Version Independent ID: 4911e9f9-7299-f411-cd90-bcfe550bd17d
Content: Migrate Azure HDInsight 3.6 Hive workloads to HDInsight 4.0
Content Source: articles/hdinsight/interactive-query/apache-hive-migrate-workloads.md
Service: hdinsight
GitHub Login: @kevxmsft
Microsoft Alias: kevx

disregard, wrong place

dadrag,   No worries. Thanks for leveraging Azure docs feedback channel to raise this question and follow-up with an update.


python3Packages.starfish: disable due to incompatible dependencies

Motivation for this change
isn't compatible with latest python-dateutil or scikit-image
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers
cc @

Instead of marking it broken does pushing it to a newer version fix the issue? I see that 0.1.10 was released 3 days ago.

I tried that, but it does not

specifically, this line
scikit-image >= 0.14.0, != 0.16.0.*, != 0.16.1.*, != 0.16.2.*

from https://github.com/spacetx/starfish/blob/185faa6bcdb413cea8370a5ca84c8c0cd13d1989/REQUIREMENTS.txt#L17

Yeup I'm trying to build it right now had to remove the pin on scikit-image and python-dateutil. I'll keep you updated if I do/do not get it working.

Yea, but this line scares me:
# 0.16.[012] are excluded because https://github.com/scikit-image/scikit-image/pull/3984 introduced
# a bug into max peak finder.  0.16.3 presumably will have the fix from
# https://github.com/scikit-image/scikit-image/pull/4263.

to me it says, this package is in an invalid state until 0.16.3 is released

Yeah that is a good point. So brings up the question we mark broken=true and in the future when 0.16.3 is release we attempt to rebuild the package?

I'm thinking that is the correct course of action, it's just that starfish currently fails to build in a lot of my reviews

disabling until it's compatible with the rest of python-modules
python-dateutil I feel fine patching, as that seems more to be a low upper-bound issue. scikit-image, i think is a blocker for this package.

Makes sense. Since I contributed this package. Any tips for being reminded about updating these packages in the future (right now I have a ton of noise on nixpkgs and I don't have as much time as I had in the future to work on these packages)? I really appreciate all the work that you have been doing in keeping pythonPackages all compatible with one another.

you can put nixpkgs as mention only, when a PR is opened that you maintain, you will be mentioned as a reviewer

For the future when this package is built. These are the failing tests that I got without disabling any tests. Should make it easier to disable tests later.
starfish/core/codebook/test/test_approximate_nearest_code.py .           [  0%]
starfish/core/codebook/test/test_code_length.py .                        [  0%]
starfish/core/codebook/test/test_from_code_array.py .......              [  2%]
starfish/core/codebook/test/test_metric_decode.py ..                     [  3%]
starfish/core/codebook/test/test_normalize_code_traces.py ....ss         [  4%]
starfish/core/codebook/test/test_per_round_max_decode.py ......          [  6%]
starfish/core/codebook/test/test_synthetic_one_hot_codebook.py ...       [  7%]
starfish/core/codebook/test/test_to_json.py ..                           [  7%]
starfish/core/config/test/test_config.py ...........FFF.....             [ 13%]
starfish/core/experiment/builder/test/test_inplace.py .                  [ 13%]
starfish/core/experiment/builder/test/test_orderediterator.py ..         [ 14%]
starfish/core/experiment/builder/test/test_small_axis.py ......          [ 15%]
starfish/core/experiment/builder/test/structured_formatter/test_multiple_fov.py . [ 16%]
                                                                         [ 16%]
starfish/core/experiment/builder/test/structured_formatter/test_single_fov.py . [ 16%]
....                                                                     [ 17%]
starfish/core/experiment/builder/test/structured_formatter/test_tilepath.py . [ 17%]
.                                                                        [ 18%]
starfish/core/experiment/test/test_experiment.py .F..                    [ 19%]
starfish/core/experiment/test/test_version.py ..                         [ 19%]
starfish/core/expression_matrix/test/test_concatenate.py .               [ 20%]
starfish/core/expression_matrix/test/test_serialization.py .             [ 20%]
starfish/core/image/Filter/test/test_api_contract.py .............       [ 24%]
starfish/core/image/Filter/test/test_call_bases.py ....                  [ 25%]
starfish/core/image/Filter/test/test_filter.py .......                   [ 27%]
starfish/core/image/Filter/test/test_histogram_matching.py .             [ 27%]
starfish/core/image/Filter/test/test_linear_unmixing.py .                [ 27%]
starfish/core/image/Filter/test/test_map.py .                            [ 28%]
starfish/core/image/Filter/test/test_reduce.py .......F                  [ 30%]
starfish/core/image/Filter/test/test_white_tophat.py ..                  [ 30%]
starfish/core/image/Filter/test/test_zero_by_channel_magnitude.py .      [ 31%]
starfish/core/image/_registration/ApplyTransform/test/test_warp.py F     [ 31%]
starfish/core/image/_registration/LearnTransform/test/test_translation.py F [ 31%]
F                                                                        [ 32%]
starfish/core/image/_registration/test/test_transforms_list.py F         [ 32%]
starfish/core/imagestack/test/test_apply.py .......                      [ 34%]
starfish/core/imagestack/test/test_coordinates.py ...                    [ 35%]
starfish/core/imagestack/test/test_cropped_load.py ..                    [ 35%]
starfish/core/imagestack/test/test_export.py ..                          [ 36%]
starfish/core/imagestack/test/test_from_numpy_array.py ...               [ 37%]
starfish/core/imagestack/test/test_index.py .......                      [ 39%]
starfish/core/imagestack/test/test_labeled_indices.py .....              [ 40%]
starfish/core/imagestack/test/test_max_proj.py .F                        [ 41%]
starfish/core/imagestack/test/test_metadata.py ...                       [ 42%]
starfish/core/imagestack/test/test_physical_coordinate_calculator.py .   [ 42%]
starfish/core/imagestack/test/test_slice_ops.py .......                  [ 44%]
starfish/core/imagestack/test/test_slicedimage_dtype.py .....            [ 45%]
starfish/core/intensity_table/test/test_concatenate.py .                 [ 46%]
starfish/core/intensity_table/test/test_empty_intensity_table.py ..      [ 46%]
starfish/core/intensity_table/test/test_from_imagestack.py ....          [ 47%]
starfish/core/intensity_table/test/test_from_spot_data.py ....           [ 48%]
starfish/core/intensity_table/test/test_intensity_table_coords.py ..     [ 49%]
starfish/core/intensity_table/test/test_intensity_table_serialization.py . [ 49%]
                                                                         [ 49%]
starfish/core/intensity_table/test/test_overlap.py .....                 [ 51%]
starfish/core/intensity_table/test/test_stack_intensity_table_reshaping.py . [ 51%]
                                                                         [ 51%]
starfish/core/intensity_table/test/test_synthetic_intensities.py .       [ 51%]
starfish/core/intensity_table/test/test_to_mermaid.py .                  [ 51%]
starfish/core/morphology/Binarize/test/test_threshold.py ......          [ 53%]
starfish/core/morphology/Filter/test/test_areafilter.py ...              [ 54%]
starfish/core/morphology/Filter/test/test_map.py .                       [ 54%]
starfish/core/morphology/binary_mask/test/test_binary_mask.py .......    [ 56%]
starfish/core/morphology/binary_mask/test/test_expand.py ....            [ 57%]
starfish/core/morphology/binary_mask/test/test_from_binary_arrays_and_ticks.py . [ 58%]
........                                                                 [ 60%]
starfish/core/morphology/binary_mask/test/test_from_label_array_and_ticks.py . [ 60%]
......                                                                   [ 62%]
starfish/core/morphology/label_image/test/test_label_image.py .......    [ 64%]
starfish/core/spacetx_format/test_codebook.py .....                      [ 65%]
starfish/core/spacetx_format/test_coordinates.py ........                [ 68%]
starfish/core/spacetx_format/test_experiment.py .....                    [ 69%]
starfish/core/spacetx_format/test_field_of_view.py ......                [ 71%]
starfish/core/spacetx_format/test_fov_manifest.py ..                     [ 71%]
starfish/core/spacetx_format/test_fuzz.py ...                            [ 72%]
starfish/core/spacetx_format/test/test_validate.py F                     [ 73%]
starfish/core/spots/DecodeSpots/test/test_composite_codebook.py ...      [ 73%]
starfish/core/spots/DecodeSpots/test/test_decoding_without_spots.py ..   [ 74%]
starfish/core/spots/DecodeSpots/test/test_nearest_neighbor_trace_builder.py . [ 74%]
...                                                                      [ 75%]
starfish/core/spots/DecodeSpots/test/test_trace_builders.py ............ [ 78%]
                                                                         [ 78%]
starfish/core/spots/DetectPixels/test/test_calculate_mean_pixel_traces.py F [ 79%]
                                                                         [ 79%]
starfish/core/spots/DetectPixels/test/test_create_spot_attributes.py .   [ 79%]
starfish/core/spots/DetectPixels/test/test_intensities_to_decoded_image.py . [ 79%]
.                                                                        [ 80%]
starfish/core/spots/DetectPixels/test/test_targets_map.py .              [ 80%]
starfish/core/spots/FindSpots/test/test_spot_detection.py ...........F.. [ 84%]
F..F..                                                                   [ 86%]
starfish/core/spots/FindSpots/test/test_synthetic_data.py ..             [ 86%]
starfish/core/test/test_display.py FFFFFFFF                              [ 88%]
starfish/core/test/test_multiprocessing_workflow.py .                    [ 89%]
starfish/core/test/test_synthetic_spot_creation.py ..                    [ 89%]
starfish/core/types/test/test_decoded_spots.py .                         [ 90%]
starfish/core/util/test/test_levels.py ................                  [ 94%]
starfish/core/util/test/test_preserve_float_range.py ..............      [ 98%]
starfish/test/full_pipelines/api/test_allen_smFISH.py s                  [ 98%]
starfish/test/full_pipelines/api/test_dartfish.py F                      [ 99%]
starfish/test/full_pipelines/api/test_iss_api.py F                       [ 99%]
starfish/test/full_pipelines/api/test_iss_doc_pipeline.py F              [ 99%]
starfish/test/full_pipelines/api/test_merfish.py F                       [100%]


Fixed pulseaudio max-volume configuration

Fixed issue where volume stepping would cause the max volume to go above the max and never reach 0.

Thanks!


Adding additional servers results in an error.

When I add a custom Laravel JSON:API server to the 'additional_servers' config, I get this error:
Call to undefined method App\JsonApi\V1\Server::getSchemas()

I believe this is because the getSchemas function does not exist on the LaravelJsonApi\Core\Server\Server class. However, allSchemas does exist. See also: https://github.com/dystcz/lunar-api/blob/d9c94efeec8e291538ba69f60deb2b41ecc68dc8/src/Domain/JsonApi/Servers/Server.php#L44

I see this is already fixed in the main branch.


Add http_cache configuration

This PR adds the http_cache options to fix #114.
I'm very sorry for not adding a proper tests to this but my ruby skills are almost none .

I'm closing due to inactivity for request for help on #114.


Coverity fixes for 2021-03-28

A jumble of fixes for new things Coverity has located.

[ ] documentation is added or updated
[x] tests are added or updated

This pull request is ready to merge


Support dynamic generation of classes

Maybe a broader question as it could apply to several repos, but what do people think of using postcss plugins like postcss-for to make the generation of some of these classes dynamic?
I have done this in my own projects, and think it would likely be too much of a can of worms to include here, but thought I'd start the discussion.

I wouldn't be against the idea, but it does quickly move SUIT out of the 'future facing CSS' realm.
Would be nice to be able to configure this to use 12, 16, 24 etc though.

Maybe theres an alternative -

We could have an alternate include with the generation stuff.
The main css files in the repo would be built using that with the default values
Then you could either include the defaults as you do now, or include the "generator" directly

Something to think about at least.

I see, so each package would contain the output of the postcss tools? Could work.
Might also give more weight to moving the packages into a single repo to facilitate this.


feat: bug demonstration

Please read contributing guidelines and remove this line.

#7458  👈
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @benesjan and the rest of your teammates on  Graphite


More than one Resource Provider per FHIR Resource type

Hi,
We have the challenge where the data for our resources may be contributed by multiple systems. E.g. for Observations, we have three systems that surface:

Consumer vitals / observations
Clinical vitals
Lab results

Can you only ever have one Resource Provider for Observation, or if we provider for each system will HAPI aggregate across the 3 and surface up the results as a single result?

Hi there, to be honest I'm not sure what HAPI would do if you created multiple resource providers with the same resource type.
From the FHIR perspective, the problem you're solving is tricky. I know this because we have tried to solve it too at UHN with a few resource types that are backed by multiple solutions. The problem is that FHIR expects yu to be able to read a resource by ID (e.g. Observation/123) so if there are two sources of observations, the resourceprovider needs to know which source to look in for "123".
We have solved this by using a prefix, e.g. in our read method "Observation/A100" looks in one database and "Observation/B100" looks in another. Our search method searches both databases. The only was we could make this work is to have a single resource provider that delegates to code querying one or both backing databases depending on the operation.
That aggregation kind of needs to be manual though, I don't think I see a way that HAPI could do it automatically. If you have ideas I'm certainly not opposed though...


Add CH performance metric tests

This PR is raised to add cloud hypervisor performance metrics testscases. It will list down all the testcases at the runtime and run those one by one and collect the results.

@microsoft-github-policy-service agree [company="Microsoft}"]

@microsoft-github-policy-service agree [company="{your company}"]

@microsoft-github-policy-service agree [company="Microsoft"]

@smit-gardhariya please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]

Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.
(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

Contributor License Agreement

@microsoft-github-policy-service agree [company="Microsoft"]

Please fix the CI errors to get it in.

@smit-gardhariya please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]

Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.
(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

Contributor License Agreement

@smit-gardhariya please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]

Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.
(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

Contributor License Agreement

@microsoft-github-policy-service agree [company="{Microsoft}"]

@smit-gardhariya please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]

Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.
(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

Contributor License Agreement

@microsoft-github-policy-service agree [company="Microsoft"]

@smit-gardhariya please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]

Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.
(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

Contributor License Agreement

@microsoft-github-policy-service agree company="Microsoft"


Eps prev

separate eps and eps prev (see arcos4py for more details), requires new version of arcos4py

integraded already in 0.0.7


[E000292] Rep. William Enyart

Rep. William Enyart:
http://enyart.house.gov
Likely contact form URL to start with:
http://enyart.house.gov/contact/email-me

YAML file lost. I am working on it.


AVPro players cannot play "vroxy links" without a SSL certificate other than Let's encrypt without downloading optional certificates.

https://help.vrchat.com/hc/en-us/articles/4408619131795-Video-Players-failing-with-CERTIFICATE-VERIFY-FAILED-in-output-logs
Installing these files it required for making Let's encrypt certificates work on PC on AVPro players with this version of Unity.
Not sure if Quest has the same issue, wasn't tested.
It should be added to the documentation that to have a universally useful resolver one needs a SSL certificate other than Let's encrypt.
A solution I figured out is that you can use Cloudflare's proxy to get a valid SSL certificate, since their Universal SSL replaces your server's SSL certificate with their own.

can confirm, this is an issue. This, as far as I know, is only a problem for PC, however I may be incorrect. I am using the same workaround, and this workaround should be added to the readme

I will add, cloudflare isnt a complete solution, as without paying, there is a change that the certificate it picks for your web URL will be a letsencrypt one anyway, and it is only possible to specify non-letsencrypt certs if you pay for the feature
https://developers.cloudflare.com/ssl/reference/certificate-authorities/

I will add, cloudflare isnt a complete solution, as without paying, there is a chance that the certificate it picks for your web URL will be a letsencrypt one anyway, and it is only possible to specify non-letsencrypt certs if you pay for the feature
https://developers.cloudflare.com/ssl/reference/certificate-authorities/

Yeah, that is not ideal.
It is a double edged sword, but good thing the certificates stay around for 3 months (according to my dashboard) and has a specific date when it renews, allows us to keep track, can even get them to email you.
It isn't entirely clear if there is any way to force a reissue, but potentially turning off universal SSL for a few hours and then back on might cause a reissue, although that could annoy Cloudflare if it worked, so probably doesn't.


No gather interface for async_write

This is a request for confirmation, but if confirmed, it would be a nice feature request.
At the Boost.Asio TCP level we have a "gather" interface which makes it possible to async_write data from multiple buffers at once - see Scatter/Gather here:
https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/reference/buffer.html
However, at the WS level, there doesn't seem to be a way to do this. The WS async_write takes a ConstBufferSequence which may contain one message payload scattered across multiple buffers, is there a way to pass multiple message payloads in one function call? Apols if I am missing it.

Great question.
No, there's no way to scatter/gather at the message level.
I'm not sure how we'd define that interface.
There's nothing to stop you writing a composed operation that would do this, using asio::async_compose and asio::coroutine would make it fairly straightforward (there are some examples in beast code).
However, some design questions:
what do you return for "bytes_transferred" if only half the messages are sent?
do you need to pass in a "results" object that can collect the results of each individual send?
How to express the frames to send? a vector of one buffer per frame, or a vector of vector-of-buffers per frame?
I imagine you can see why we didn't want to open this can of worms in a public-facing library :)

Totally agree. I admit, I have not thought about a suitable interface.
But at the very least, the present completion handler doesn't suffice. Neither does text/binary designation, which would need to pe per-message (although an acceptable compromise would be to require uniformity among messages sent).
My inclination would be to disallow partial writes of the array of messages, just like partial writes when gathering cannot happen (or maybe they can? not enough experience). In that case the interface would merely need to separate among the N payloads, in order to do the framing (?) - again, an assumption.
cheers for the awesome reply. I don't know enough about composed writes to understand that part.

basically a loop expressed as a coroutine.

OK but that doesn't sound like having the potential to be doing one gather (one call to writev).
(I realise that's a lot to ask)

Here's a very simplified example:
https://godbolt.org/z/Y6q93W
#include <boost/asio.hpp>
#include <boost/asio/coroutine.hpp>
#include <boost/beast/websocket.hpp>
#include <vector>
#include <string>
#include <memory>
#include <iostream>

using frame_vector = std::vector<std::string>;
using websock = boost::beast::websocket::stream<boost::asio::ip::tcp::socket>;

struct write_frames_op
{
    write_frames_op(websock& ws, frame_vector const& frames)
    : ws_(ws)
    , frames_(frames)
    {}

    websock& ws_;
    frame_vector frames_;
};

template<class NextLayer, class CompletionToken>
auto async_write_frames(
    boost::beast::websocket::stream<NextLayer>& ws,
    frame_vector const& frames,
    CompletionToken&& tok)
{
    auto op = [&ws, &frames, iter = frames.begin(), coro = boost::asio::coroutine()]
        (auto& self,
         boost::beast::error_code ec = {},
         std::size_t = 0) mutable
    {
        BOOST_ASIO_CORO_REENTER(coro)
        for(;;)
        {
            if (iter == frames.end())
                return self.complete(ec);

            BOOST_ASIO_CORO_YIELD
            ws.async_write(boost::asio::buffer(*iter), std::move(self));

            if (ec)
                return self.complete(ec);

            ++iter;
        }
    };

    return boost::asio::async_compose<
        CompletionToken,
        void(boost::beast::error_code)>(
            std::move(op),
            tok,
            ws);
}

void test(websock& ws, std::shared_ptr<frame_vector> pframes)
{
    async_write_frames(ws, *pframes, [pframes](boost::beast::error_code ec)
    {
        if (ec)
            std::cout << "not all written\n";
        else
            std::cout << "all written\n";
    });
}

*nb frames is a buffer containing the data to send. It must outlive the composed op, which is why I capture it via shared_ptr in the completion handler.

Good point over the single writev. It wouldn't help you with WSS in any case. OpenSSL doesn't support scatter/gather.
In addition, websocket protocol is a framing protocol, with the length of the frame segment in the header, so this defeats scatter/gather for the entire protocol even unencrypted.
We mitigate this by trying to read as much as possible at a time before decoding the frame.

You can't write multiple messages at once, but I agree that this is a feature that would be useful. The compromise is that the API will require that each message is in a single contiguous buffer. So in effect we would have a range of T where T is convertible to net::const_buffer.

@madmongo1 about the framing - as far as I can imagine, the implementation could add up to-gather buffer sizes to obtain the total, even in the case where framing is imposed to be of a certain size. Then again, I don't know enough about the protocol, it's pure imagination. Interesting point about OpenSSL.
@vinniefalco single buffer per message sounds good. My design is that there is a queue of buffers waiting to be async_write (only one outstanding async_write possible) so when draining the queue, that would be the opportunity to gather. I think this queueing design is quite popular

My design is that there is a queue of buffers

Yes exactly. If you have say, a game sending X,Y,Z coordinate updates then you might want to batch them and send them efficiently in a single I/O.

I'm not sure this helps with websocket. Remember that intermediate routers are allowed to re-frame the data en-route.
There's nothing high performance about the websocket protocol at all.
If your game needs performance, it'll most likely use a custom UDP-based protocol (or at a push a lean TCP protocol).

It definitely helps and several browser games use this technique. There are no "intermediate routers" in the gaming use-case.

Consider the case where a multi-threaded application is producing "updates" which need to be sent as individual websocket messages. If the websocket is busy writing, these updates have to be queued. By the time the current write is complete, there may be more than 1 message queued up. Because asynchronous calls are very expensive, you want to do as much work as possible. With multiple messages in the queue, the best solution is to send all the queued messages in a single I/O. This is why batched websocket writes are helpful.

I'd like to second @vinniefalco here
A way to have an (async_)write_many method which takes a range with message-per-buffer would be great
I've added websocket support to a low-level game networking library and the performance (non-ssl) compared to raw tcp is pretty bad since there's no way to group many messages into a single call
For the moment I've added a "buffered write stream" in-between the websocket and tcp stream, which buffers up writes and once the buffer is full enough or a timeout is reached, the buffer is flushed to the underlying tcp stream - that increased throughput 4x, but moved the bottleneck from write syscalls to async call overhead (if anyone's got any less hacky suggestions I'd be happy to hear those aswell)
And yeah, in an ideal world we'd batch multiple "messages" into one websocket message before it reaches the network code, but I (and likely many other people) have to work with the constraints they're given

Something like this
template< class FwdIt >
void websocket::write_v( FwdIt first, FwdIt last, error_code& ec );

Where std::is_convertible< typename std::iterator_traits<FwdIt>::value_type, net::const_buffer >::value == true

Just to be sure I know what everyone is asking for here:
Are we looking for a function which will write a batch of websocket messages? Or are we actually looking for a websocket object which can just be given messages to send in arbitrary order and they will be sent as soon as possible?

write_v (and async_write_v) is an alternative to write. In other words it counts as a write operation. But instead of sending one message provided as a ConstBufferSequence, it sends zero or more messages where each message is in a const_buffer. In other words, each message has to be in a single buffer. It is not a queue. The implementation would have to allocate a single large buffer internally to compose the frame headers, frame payloads, and possibly apply compression.

I see. The intention is to save on syscalls at the expense of an allocation.
Shouldn’t be a major issue. I expect there’s a lot of code from the synchronous path that can be reused here internally.

Did anything get done with this?  We have a bridge between UDP and web sockets.  We are using null_buffers and recvmmsg to get the UDP packets.  We then forward the UDP on to connected websocket clients.  Very often recvmmsg returns more than one message so it would be great to be able to write them all at once to the websockets using one syscall per client connected.  this is an internal application so we are not using WSS so any openssl considerations are moot.
BTW thank you for creating beast it is awesome.

We didn't go any further with it at the time.
However if it's compelling I'm happy to work on it.
Do you have any idea of:
1 - how many syscalls we are likely to save
2 - Average size of each frame
3 - number of frames being sent at a time
4 - Now that io_uring is enabled in the underlying Asio code on enabled systems, are we gaining much?

This is obviously very specific to our use case, and I am an application developer so my system knowledge is limited so please forgive my ignorance here.

see 3.  my understanding is that each websocket write_async call could result in a syscall lower down but my knowledge here is vague because I guess it depends on the lower layers and potential buffering.

Around 350 bytes of data in this case.

Here is a sample.  It is very rare that we want to write just one message.  Mostly it is 2 messages and then as bursts arrive we can potentially write order of 10's of messages in one go.

count   nummsgs
78 1
3789331 2
793933 3
258335 4
87479 5
41321 6
19922 7
11219 8
6446 9
3930 10
2407 11
1633 12
1057 13
758 14
515 15
353 16
236 17
187 18
129 19
102 20
72 21
49 22
38 23
33 24
26 25
17 26
16 27
15 28
14 29
10 30
.. truncated

I don't know much about io_uring so I will investigate this but regardless of lower layer implementation details having a batch send interface for beast websocket would be nice IMHO.

Vinnie's comment above certainly applies to our use case where once we have one write outstanding we will start to queue other incoming messages so the next write we could send a batch but we also have the case where up front we have received multiple packets in one return from recvmmsg so even if no write is outstanding we have a batch to send.
We could  also tcp cork the connection whilst we know we have more data so that we can be more optimal in sending full wire packets.   But I don't know how under asio/beast we would tell the lower layers to cork.
We could implement our own framing so we write multiple UDP packets into one websocket message but it is preferable to retain the message boundaries.
If we know we have two or more messages to send the vast majority of the time it would make sense to be able to send those with one write syscall so the OS at least has the opportunity to put the data in one packet.
Thanks

Ok, so quite a few multi-message sends.
Well ok, let’s try it. I’ll implement it on a branch and we can see if it helps.

Just to be sure I know what everyone is asking for here:
Are we looking for a function which will write a batch of websocket messages? Or are we actually looking for a websocket object which can just be given messages to send in arbitrary order and they will be sent as soon as possible?

And also in response to this we need to retain ordering so it would be a function interface to send a sequence of messages.
Also seeing as we have an incoming sequence of mmsghdr/iovec from recvmmsg and writev takes an iovec could we not just put the websocket headers in separate iovec entries so this could be a zero copy interface in the case of no per-message deflate and no SSL.  If some kind of MessageSequence concept existed that we could actually adapt over the top of struct mmsghdr * and the associated iovecs we could have an extremely efficient zero copy interface to go from UDP to websockets.   I have no idea about the internals here so maybe this is not possible and it maybe an optimization for a very rare use case.

struct iovec is very similar to asio::const_buffer and asio::mutable_buffer. The readv library call takes a pointer to an array of struct iovec, which in asio is a model of a BufferSequence concept.
I think this will be fairly easy to make compatible.

could we not just put the websocket headers in separate iovec entries so this could be a zero copy interface in the case of no per-message deflate and no SSL.

Possibly when transmitting from client to server, but when transmitting the other way, all data in the message is encrypted (by  XOR with a pre-negotiated key). Thus a copy, or at least a transform, is required.
Websocket is not an efficient protocol by any means.

Yes, so on this note re readv it would also be awesome to be able to read batches of messages from a websocket if the underlying layer delivers up buffers that have multiple parseable full websockets messages then handing them to the client in one go as a sequence of messages could have performance benefits too.  So in my case where we are usually sending 2-3 messages in one go, the client on the other end could benefit from being handed these messages as a sequence in one call to their async_read_multiple (?) completion handler.  Again not sure how feasible/useful in the general case this is.

could we not just put the websocket headers in separate iovec entries so this could be a zero copy interface in the case of no per-message deflate and no SSL.

Possibly when transmitting from client to server, but when transmitting the other way, all data in the message is encrypted (by XOR with a pre-negotiated key). Thus a copy, or at least a transform, is required.
Websocket is not an efficient protocol by any means.

ah yes this is a good point.  if we are not allowed to mutate the incoming buffer then copy is needed.  in our case we don't care if the incoming buffer is mutated but maybe some users would care.

although actually now I think about it we cannot mutate because in the case of broadcasting the same data to many clients who have different XOR keys we cannot reuse the same buffers for each client if we are mutating it.  That is a nuisance.  It seems like a common thing to do with websockets as well which is broadcast the same message to many connected clients.

I'm not an expert on the origins of Websocket, but my impression is that it was invented as a hack to allow web browsers to defeat corporate firewalls when creating persistent connections to external servers, rather than an efficient internet transport mechanism.

XOR

The client sends masked messages to the server, not the other way around.

Vinnie's comment above certainly applies to our use case where once we have one write outstanding we will start to queue other incoming messages so the next write we could send a batch

We too are facing a similar use case where we have a queue of messages to send per client & before we can write them all, fresh set of messages come in as a result of which the queue size keeps increasing.
I feel scheduling one async_write per queue item is hurting us and being able to test a "large" write with the entire queue contents would be good.
@madmongo1 Did you get around to implement this?
If not, what is the currently suggested approach here?
Tangentially related, I found this SO Answer which uses scatter-gather async_write over a TCP stream, which looks like what we want. But over websockets!


The number of features in the code is not the same as in the paper.

In the paper, a window has 23 features, but in the code（netStat.py）, a window has only 20 features.

In this version, redundant features have been removed. For example, w.
On Wed, Jan 6, 2021, 09:43 ella-collins<EMAIL_ADDRESS>wrote:

In the paper, a window has 23 features, but in the code（netStat.py）, a
window has only 20 features.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ymirsky/Kitsune-py/issues/12, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACYEV26GW37UOA7C2ZM5DTTSYRZHVANCNFSM4VXT64EA
.

In this version, redundant features have been removed. For example, w.
On Wed, Jan 6, 2021, 09:43 ella-collins<EMAIL_ADDRESS>wrote:

In the paper, a window has 23 features, but in the code（netStat.py）, a
window has only 20 features.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ymirsky/Kitsune-py/issues/12, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACYEV26GW37UOA7C2ZM5DTTSYRZHVANCNFSM4VXT64EA
.

Thanks for your answer.

Thanks for your answer.


Please supply a valid name.

My Product model has a required name field and an optional description field.
The error is encountered when adding an item without description value.
After some debugging, I found out that Cart::add() assigns description value to the name parameters:
like this:
Collection {#234 ▼
  #items: array:1 [▼
    "11fa7e0f86fee31bb75ec64267fa19b9" => CartItem {#235 ▼
      +rowId: "11fa7e0f86fee31bb75ec64267fa19b9"
      +id: 2
      +qty: "1"
      +name: "Description Value"
      +price: 59.0
      +options: CartItemOptions {#236 ▶}
      -associatedModel: "App\Product"
      -taxRate: 1
    }
  ]
}

Controller:
		$product = Product::find($id);

		$cart_item =  Cart::add($product, $qty, ['device' => $device]);

Product:
  #attributes: array:9 [▼
    "id" => 2
    "created_at" => "2017-04-04 01:08:38"
    "updated_at" => "2017-04-04 01:14:18"
    "image_path" => "public/uploads/58e2c7e6c05141491257318.png"
    "name" => "Name"
    "description" => "Description Value"
    "design_number" => "230"
    "price" => 59
    "active" => 1

I appreciate any help

I found my mistake.
	public function getBuyableDescription($options = null) {
		return $this->description; // This should return name
	}

I believe I was confused by the function's name;

public function getBuyableDescription($options = null) {
return $this->description; // This should return name
}


Indexing bug

carbon_data = dataset("C-SYNTH-1M")
indices = np.arange(len(carbon_data))
permutation = np.random.RandomState(seed=42).permutation(indices)
shuffled_structs = [carbon_data[i] for i in permutation]
print(shuffled_structs)

TypeError: object of type 'Atom' has no len()

This bug was fixed as of version 0.0.8.
However, it would be nice to do something like:
shuffled_data = carbon_data[permutation]

i.e. passing the numpy index array directly. Implementing that now in #26.


zig build always panics

I'm unsure how to properly diagnose this issue, but since it didn't happen on Asahi Fedora (at least I don't think it did, I switched to NixOS so I don't have Fedora installed anymore to test), I assume it happens because of something related to Nix.
When I try to compile any project with Zig, I always get the following error:
$ mkdir test
$ cd test
$ zig init-exe
$ zig build
thread 2800 panic: reached unreachable code
Panicked during a panic. Aborting.
error: the following build command crashed:
/home/suteki/Documents/test/zig-cache/o/5e10d47150793eea1c581cd99721be79/build /nix/store/kvsk07n6bxdzzznl48ksdqnajnry1jkh-zig-0.11.0/bin/zig /home/suteki/Documents/test /home/suteki/Documents/test/zig-cache /home/suteki/.cache/zig run

Using zig build-exe works fine, it's only zig build with a build.zig that does not work. I tried using the zig binary installed by the zig Nix package, as well as one downloaded from the Zig website. I also tried compiling the bootstrap compiler myself, but it unfortunately had the same result.

FWIW, your instructions work fine for me with zig installed from nixpkgs-23.05 on my m2 air. Is there any error in dmsg?

Very strange, I'm also running an M2 Air.
dmesg gave me these errors:
[    0.359054] macsmc-rtkit 23e400000.smc: Failed to create device link (0x180) with 23d714000.spmi:pmu@e:rtc_nvmem@f800
[    0.360306] macsmc-rtkit 23e400000.smc: Failed to create device link (0x180) with 23d714000.spmi:pmu@e:rtc_nvmem@f800
[    0.361553] macsmc-rtkit 23e400000.smc: Failed to create device link (0x180) with 23d714000.spmi:pmu@e:legacy_nvmem@f700
[    1.152425] apple-dcp 231c00000.dcp: dcp_poweron() starting
[    1.436563] pcie-apple 690000000.pcie: invalid resource (null)
[    3.510231] ieee80211 phy0: brcmf_p2p_set_firmware: failed to update device address ret -52
[    3.513002] ieee80211 phy0: brcmf_p2p_create_p2pdev: set p2p_disc error
[    3.514245] ieee80211 phy0: brcmf_cfg80211_add_iface: add iface p2p-dev-wlp1s0f type 10 failed: err=-52

All of which were there before running zig.
I doubt it's related, but I found my generation selection on boot to look wrong as well, maybe there is something borked with my install?

This is my current configuration.nix:
{ config, lib, pkgs, ... }:

{
  imports =
      /etc/nixos/hardware-configuration.nix
      /etc/nixos/apple-silicon-support
    ];

  boot.extraModprobeConfig = ''
    options hid_apple swap_fn_leftctrl=1
    options hid_apple swap_opt_cmd=1
    options hid_apple fnmode=2
  '';

  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = false;

  hardware.asahi.peripheralFirmwareDirectory = /etc/nixos/firmware;
  hardware.asahi.useExperimentalGPUDriver = true;

  networking.hostName = "houjicha";
  networking.networkmanager.enable = true;

  time.timeZone = "Europe/Berlin";
  services.ntp.enable = true;

  services.xserver.enable = true;
  # Display Manager
  services.greetd = {
    enable = true;
    settings = {
      default_session = {
        command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland --asterisks --user-menu";
        user = "greeter";
      };
    };
  };
  # Window Manager
  programs.hyprland.enable = true;
  programs.waybar.enable = true;
  services.xserver.displayManager.sessionPackages = with pkgs; [
    river
  ];
  xdg.portal.enable = true;
  xdg.portal.wlr.enable = true;
  xdg.portal.extraPortals = with pkgs; [
    xdg-desktop-portal-gtk
  ];
  environment.sessionVariables = rec {
    XDG_CACHE_HOME  = "$HOME/.cache";
    XDG_CONFIG_HOME = "$HOME/.config";
    XDG_DATA_HOME   = "$HOME/.local/share";
    XDG_STATE_HOME  = "$HOME/.local/state";
    XDG_BIN_HOME    = "$HOME/.local/bin";
    PATH = [
      "${XDG_BIN_HOME}"
    ];
  };

  # Enable touchpad support
  services.xserver.libinput.enable = true;

  users.users.thomas = {
    isNormalUser = true;
    extraGroups = [ "video" "networkmanager" "wheel" ];
    packages = with pkgs; [];
    shell = pkgs.fish;
  };

  environment.systemPackages = with pkgs; [
    # CLI
    gnumake
    just
    git
    wget
    vim
    neovim
    helix
    gcc
    gdb
    clang
    rustup
    julia
    zig
    zls
    texlive.combined.scheme-full
    (python3.withPackages (ps: [ps.dbus-python ps.pygments]))

    # GUI
    wezterm
    alacritty
    firefox
    gnome.gnome-tweaks
    sublime4
    sublime-merge
    vscode
    inkscape
    pcmanfm
    lxappearance

    # THEMES
    numix-cursor-theme
    papirus-icon-theme
    rose-pine-gtk-theme
    rose-pine-icon-theme

    # MISC
    greetd.tuigreet
    river
    wofi
    hyprpaper
    swaylock-effects
    isabelle
    wl-clipboard
    pinentry
    pinentry-gnome
    dbus
  ];

  fonts.packages = with pkgs; [
    (nerdfonts.override { fonts = [ "JetBrainsMono" "FiraCode" ]; })
    dejavu_fonts
    jetbrains-mono
    fira-code
    roboto
    roboto-slab
    roboto-mono
    roboto-serif
  ];
  fonts.fontDir.enable = true;

  programs.gnupg.agent = {
    enable = true;
    enableSSHSupport = true;
    pinentryFlavor = "gnome3";
  };
  programs.light.enable = true;
  programs.fish.enable = true;

  nix.settings.experimental-features = [ "nix-command" "flakes" ];

  nixpkgs.config.allowUnfree = true;
  nixpkgs.config.permittedInsecurePackages = [
    # required for sublime4
    "openssl-1.1.1w"
  ];

  system.stateVersion = "23.11";
}

The bootloader looking wrong is normal and unrelated. So are the dmesg entries.
I can replicate your issue on my M1 Max using the store path you used. This looks like it's something within Zig itself, or some interaction with nixpkgs. 23.05 has Zig 0.10.1 and using that on nixpkgs master (zig_0_10) works while Zig 0.11.0 (zig) crashes.
I can't really offer any further assistance debugging and it seems unrelated to Apple Silicon specifically.

This does not crash on a VM under macOS, nor on another aarch64 board. I'm guessing it's a page size issue then.
I'll keep this open since it's at least Apple Silicon induced but I don't have resources to debug this further.

Hey so I am actually the developer of the runtime page size PR for Zig and @tpwrules is right that it is indeed this issue. My PR is nearing completion and I expect to have it in by Zig 0.12 is released.
PR: https://github.com/ziglang/zig/pull/17382
Fork: https://github.com/ExpidusOS/zig/tree/fix/linux-page-size

@RossComputerGuy looks like that PR never happened? I'm still seeing this problem in zig 0.13 on a mac running nixos. Is there a patch we should apply on the nixpkgs side maybe?

https://patch-diff.githubusercontent.com/raw/ziglang/zig/pull/20511.patch 🤔


Issue with vectorised conf.rpz

Now that the protection zone is a per-aircraft specification, conf.rpz is in vector format. However, some parts of the code were not adapted for this. I get the following error when I try to use MVP as a resolution method:
  File "bluesky\traffic\asas\mvp.py", line 316, in MVP
    if (conf.rpz * self.resofach) < dist and dabsH < dist:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

I also found the same thing in resolution.py, conf.rpz is used without an index a couple of times in resumenav.

The same errors appear with conf.dtlookahead, conf.hpz in MVP and more locations in Bluesky.

An issue related to this is that, in Statebased.py, rpz is taken as a diameter instead of a radius. An easy fix entails creating a new variable called "dpz = rpz * 2".

Hi Andrei,
I think that if you follow the equations in statebased.py you'll find that RPZ is used correctly, not as a diameter. (I think it's only used in a comparison with dCPA, dcpa2 < R2).

Hi Joost,
Then the problem might be somewhere else then (either in statebased or in the drawing and interpretation of RPZ).
In the Bluesky settings.cfg file, I set the following value:
asas_pzr = 0.00863930885529 [nm]
Which is equivalent to 16 m. Thus, because this is a radius, I expect that the minimum separation between two aircraft to be 32 meters.
x <------- 32m -------> x
But then I run the following scenario with two aircraft heading towards each other with a small offset:
00:00:00.00>HOLD
00:00:00.00>ASAS ON
00:00:00.00>PAN 41.142025 -75.069111
00:00:00.00>ZOOM 40
00:00:00.00>CRE DRON1 M600 41.141908 -75.07811 270 50 30
00:00:00.00>CRE DRON2 M600 41.142068 -75.08011 90 50 30

The minimum distance between these two aircraft is approximately 18 metres, and their separation bubbles intersect, but no conflict is detected, which I think is due to the fact that statebased takes "rpz" as the required separation, not as half the required separation.

The circles indeed intersect: they also have RPZ as radius. Only when an aircraft falls inside another circle, a loss of separation occurs. If you want touching circles to indicate a LoS, the circle radius should be half the rpz. However, with variable (uneven) RPZ this doesn't make sense.

Oh I understand now.
So then, if I want 32m separation between two drones, I need to set asas_pzr as the equivalent to 32m.
Thanks for the clarifications!

Fixed in https://github.com/TUDelft-CNS-ATM/bluesky/commit/4d11c391ef310229cf3ce06ac1c8672642ffdb63.


Another issue created from Issues section

Closing this issue as nothing more is required to be done here.


[Bug] Can't install plugins.

Before Reporting

[X] I found no existing issues matching my bug
[ ] My issue is not caused by a plugin or theme

Describe the Bug
I've installed betterdiscord, then I downloaded the plugins in JS format. But when I moved them to the plugins folder, it didn't pop up that suggested a plugin that would help to make them work. Now the plugins are in the plugins folder, but they are not recognized by betterdiscord. I restarted the device, but it didn't help.
Expected Behavior
To make plugins work.
Steps To Reproduce

Move plugins to betterdiscord's plugins folder
Reload discord
Plugins not installed

Operating System
MacOS
Discord Version
Stable
BetterDiscord Version
1.9.6
Anything else?
https://github.com/BetterDiscord/BetterDiscord/assets/114720383/0f1f4a3a-da04-4dcc-a58e-7f17b2632573

Renaming .js > .plugin.js helped.

Where did you even find these plugins? They should already be renamed to *.plugin.js before downloading.

https://betterdiscord.app/plugin/ServerHider
https://betterdiscord.app/plugin/AutoIdleOnAFK

It seems your browser/download method messed with the file names, you'll unfortunately need to fix them manually


🔑 Fix Join Key Setup

Issue
Fixes #128
Description
This fixes the joint key setup wizard so you can now complete it from beginning to end and it will create a key.  It also:

Reworks the UI to make it feel clean and simple
Removes one of the two confirmation pages
Populates the assign guardians datagrid with a list of users from the back-end API
Solves bearer auth with the back-end endpoints that require it (get users)
Detects 401 token expiration requests and redirects the user to the login screen when they occur
Fixes the back buttons so that data is preserved

Testing

Log in
Click Setup Joint Keys

Expected: a page like this:

Fill in some data and click Next

Expected: Users in the system should be listed

Select some

Expected: they should select like this;

Click Next

Expected: you should see a confirmation page with your choices like this:

Click Submit
Setup Election and go to step 2

Your new key should be on the dropdown list:

Found a bug where if you click back it forgets key information, going to fix it and make it follow the pattern from ElectionSetupWizard


python312Packages.m3u8: 4.0.0 -> 4.1.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python312Packages.m3u8 is: Python m3u8 parser
meta.homepage for python312Packages.m3u8 is: https://github.com/globocom/m3u8
meta.changelog for python312Packages.m3u8 is: https://github.com/globocom/m3u8/releases/tag//4.1.0
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 4.1.0 with grep in /nix/store/kpdsy9qrb5q53im4bz2p2l4ymbxbjlvk-python3.12-m3u8-4.1.0
found 4.1.0 in filename of file in /nix/store/kpdsy9qrb5q53im4bz2p2l4ymbxbjlvk-python3.12-m3u8-4.1.0

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)

4 package rebuild(s)

First fifty rebuilds by attrpath
python311Packages.m3u8
python312Packages.m3u8
qarte
twitch-dl

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/kpdsy9qrb5q53im4bz2p2l4ymbxbjlvk-python3.12-m3u8-4.1.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python312Packages.m3u8 https://github.com/r-ryantm/nixpkgs/archive/75a6351055b27839f34ff018bcdbd1c19ea7452a.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/75a6351055b27839f34ff018bcdbd1c19ea7452a#python312Packages.m3u8

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/kpdsy9qrb5q53im4bz2p2l4ymbxbjlvk-python3.12-m3u8-4.1.0
ls -la /nix/store/kpdsy9qrb5q53im4bz2p2l4ymbxbjlvk-python3.12-m3u8-4.1.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

7 packages built:

python311Packages.m3u8
python311Packages.m3u8.dist
python312Packages.m3u8
python312Packages.m3u8.dist
qarte
twitch-dl
twitch-dl.dist

Maintainer pings
cc @Scriptkiddi for testing.

Result of nixpkgs-review pr 300857 run on x86_64-linux 1

7 packages built:

python311Packages.m3u8
python311Packages.m3u8.dist
python312Packages.m3u8
python312Packages.m3u8.dist
qarte
twitch-dl
twitch-dl.dist


Show info to server admins in UI if new update is available

Show a banner in the UI to server admins with the info that they can / should update the server. Add link to migration guide and release page.

related to #345


Abandoned Cart Package

Abandoned Cart e-mails have very high conversion rates, which is why a lot of e-commerce stores use it.
I have created a package that creates/schedules and sends abandoned cart emails.
https://github.com/webhapp/community_store_abandoned_cart
I have tested it on Community Store version 1.2.2 . The package is not active on a live website...
The mail is added on checkout, when the visitor has clicked the next-button on the billing-step. (so right after the e-mail address is filled in or the registered users has shown an interest in some products.)
Settings can be found at Dashboard -> Store -> Settings -> Abandoned Cart

Wow, this sounds awesome.
If it's not hard to explain, how are you saving down the carts when they are something that are stored in sessions?

It's actually quite easy, although i'm not sure if it is the best or most correct process ...
Inshort, the cart is stored in the database in a seperate 'abandoned cart' table.
When the user presses the next button in the checkout , the cart (session variable) is retrieved and put in a variable .
Example of 1 item in a cart =
pID = 10
qty = 2
object = product object (.....)
So I loop over every product in the cart, en unset the product object.
Then I save the result json_encoded in the database.
(I unset the product object, to keep the json_encode fairly small)
To retrieve the cart , there are 2 variables in the URL :

id
hash

Both of these should match in the database. If they match : the stored cart is json_decoded and looped again to add the product objects.
When all items are looped, the cart-session-variable is set and the user is redirected to the cart-page.

I wouldn't call that exactly easy, sounds great.
The point where you save the cart, where the user hits the checkout, would you benefit from an event hook that fires when a customer moves to the checkout?  (have we already got one??)

Now the cart is saved when the user hits the first next button at the checkout (billing step -> next ) .
Not when the user goes to the checkout page.
When a user goes to the checkout , we have their e-mail address only if they are logged in.
However if the user is not logged in... then we only get the e-mail address when they fill it in at the billing step.  (and the customer object is created.)
So I don't think this package would benefit from an event when the user goes to the checkout.
Now, that you mentoin events, I have also added events to the package. I'll list them asap in the readme.
Important to keep in mind with this package is what happens when choosing to mail 'everyone'.
Example :
I go to a community store as a guest. I go to the checkout and fill in my email at the billing step, I hit next , next , next, but for some reason I do not complete the order.
Even though I do not have an account, I will receive an abondened cart mail.
As far as legality... since the abandoned cart mail is send only once... A person should not opt-in to receive the mail. (As far as I know, opt-in is only required for newsletters / mailings.)

quick update... new link to the package :
https://github.com/Jozzeh/community_store_abandoned_cart
I'm willing to transfer the package to community store (if that would be easier, and then we could close this 'issue') .

Yep, I'm happy for you to transfer this in.


Create a helper for fetching values from AWS Secrets Manager

AWS Secrets Manager is a simple secrets manager that uses existing IAM credentials for authentication making it relatively easy to get started for AWS users. We should support fetching secrets from AWS Secrets Manager since all the auth is handled by IAM permission policies on the node. This should be relatively straightforward with the AWS SDK.
See the Amazon FAQ on the service: https://aws.amazon.com/secrets-manager/faqs/
Definition of Done

Helper method for accessing secrets in aws secrets manager
Documentation on docs.chef.io
Helpers included in the chef vscode plugin via the method -> YARD -> vscode automation

@mbaitelman pointed out that we could potentially just use the parameter store helper here with a different path since there's a passthru functionality:
https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html
We'll want to test if we can do that with just the single param store gem


[bug] aiohttp.post is broken

python version: 3.4.3
aiohttp==0.17.1
Hi, the post method is broken because it can't include data parameter, here is my test code and result:
import asyncio
import aiohttp

url = 'http://<IP_ADDRESS>:1234'
data = {'a': '11111'}

loop = asyncio.get_event_loop()

loop.run_until_complete(asyncio.wait([aiohttp.post(url, data=data)]))

Result(using nc -l 1234):
POST / HTTP/1.1
ACCEPT: */*
ACCEPT-ENCODING: gzip, deflate
HOST: <IP_ADDRESS>:1234
CONTENT-LENGTH: 0
CONTENT-TYPE: application/octet-stream
CONNECTION: keep-alive
USER-AGENT: Python/3.4 aiohttp/0.17.1

if I use request instead of post, the result is OK:
POST / HTTP/1.1
ACCEPT: */*
ACCEPT-ENCODING: gzip, deflate
HOST: <IP_ADDRESS>:1234
CONTENT-TYPE: application/x-www-form-urlencoded
CONTENT-LENGTH: 7
CONNECTION: keep-alive
USER-AGENT: Python/3.4 aiohttp/0.17.1

a=11111

I guess put, delete and patch are broken as well. data argument eventually forgot to be passed forward.

Fixed. Will be published as part of 0.17.2


chore: bump rsmt2d to v0.11.0

Bump to https://github.com/celestiaorg/rsmt2d/releases/tag/v0.11.0

the race detector is getting hit by TestQGB. kinda related to #2303

@rootulp I think its okay to just add that exception in this PR

Codecov Report

Merging #2304 (a5eed2a) into main (299a2e4) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #2304   +/-   ##
=======================================
  Coverage   20.77%   20.77%
=======================================
  Files         136      136
  Lines       15398    15398
=======================================
  Hits         3199     3199
  Misses      11891    11891
  Partials      308      308


Nested popovers cause problems on Safari and Firefox

Bug report
I'm using this in a project with shadcn and the Calendar component which in turn is using radix ui which in turn is using react day picker
Tried to debug this as deep as I could, but it's way too complex for me to grasp.
I've created a repro case which exhibits a very similar situation as to what I see in my actual project. Slight difference is that here the day picker will actually show for a fraction of the second while in my project it doesn't show at all.
As I said, debugging this on Chrome vs Safari and Firefox, realised that isPositioned from useFloating only updates to true on Chrome to trigger the layout effect. Do you have any idea as to why that might happen?
Much appreciated
Current Behavior
Calendar doesn't show show on safari and firefox
Expected behavior
correctly display the popup
Reproducible example
Go to https://codesandbox.io/p/devbox/thirsty-stallman-s437k5?file=%2Fapp%2Fpage.tsx%3A21%2C44
Open the calendar
Click the Pick a date button
Suggested solution

Additional context
https://github.com/shadcn-ui/ui/issues/3516
Your environment

Software
Name(s)
Version

Radix Package(s)

React
n/a

Browser

Assistive tech

Node
n/a

npm/yarn

Operating System

Getting the same issue

Thx @praveenaj tried that didn't work

@cenobitedk That works indeed for clicking on the trigger, but it doesn't restore the whole UX, since e.g. handling outside click would require onOpenChange, which is triggered twice on Safari and Firefox with the values true and false.

@yss14 I added refs to the contents inside of the PopoverTrigger and added a useEffect to listen to outside click events like so
<PopoverTrigger                       asChild                       onClick={() => setNextChargeDateOpen(!nextChargeDateOpen)}                     >                       <Button                         ref={nextChargeDateButtonRef}                         ...
`// Add this useEffect
useEffect(() => {
function handleClickOutside(event) {
if (
nextChargeDateButtonRef.current &&
!nextChargeDateButtonRef.current.contains(event.target)
) {
setNextChargeDateOpen(false); // whatever state you want to close goes here
}
}
// Bind the event listener
document.addEventListener("mousedown", handleClickOutside);

// Cleanup
return () => {
  document.removeEventListener("mousedown", handleClickOutside);
};

}, []);`

still having this issue on the latest version of popover


Functions questionably needing mutable strings

Some functions that I'm using are asking for a mutable string where it doesn't make a lot of sense, I'm not sure whether this is a bug. Take for example:
        let mut filter: Vec<u16> = "(&(objectCategory=Person)(sAMAccountName=jsmith))".encode_utf16().collect();
        filter.push(0);

        let a: Vec<u16> = "description".encode_utf16().collect();
        a.push(0);
        let mut attr = [a];
        let mut hsearch: isize = 0;

        let dsearcher: IDirectorySearch = dsearcher.unwrap();

        let hr = dsearcher.ExecuteSearch(
            filter.as_mut_ptr(),
            attr.as_mut_ptr() as _,
            1,
            &mut hsearch
        );

        let mut col = ads_search_column::default();

        dsearcher.GetNextRow(hsearch).ok()?;
        dsearcher.GetColumn(
            hsearch,
            a.as_mut_ptr(),
            &mut col
        );

I don't think the method is going to modify those strings or the pointers. However, if it has to be that way, I initially was using HString::as_wide() which yields a borrowed value, so it can't be used here as it can't be made into .as_mut_ptr(), thus I went back to using &str::encode_utf16(). So could we get maybe an HString::into_wide() to yield an owned null terminated u16?

Transferring to the win32metadata repo. The ExecuteSearch method's in/out flags appear to be incorrect.


How to prevent URL updating?

onPageClick() will always update the URL. How to prevent it?

latest pull into master gives an option to turn it off.

Tried this out. When setting onPageClick, it needs a little modification like this:
onPageClick(page, e) {
    // your code to handle page change
    e.preventDefault();
},


[Tooling] Intermittent inconsistent behaviour in VSCode error notifications

Description:
I have tried the query given in the example [1], and VSCode shown a invalid error message. I had to restart the VSCode to recover from this (and to show correct results).

[1] https://ballerina.io/swan-lake/learn/by-example/query-expression-to-stream.html

This issue has been fixed with the internal locking implementation in language server. Hence closing this issue. If this issue can be still reproduced, please reopen.

This issue has been fixed with the internal locking implementation in language server. Hence closing this issue. If this issue can be still reproduced, please reopen.


Add streaming support

Add streaming support for anchored features.
Example:

Define streaming input source on Kafka
Define input data schema:

 schema = AvroJsonSchema(schemaStr="""
    {
        "type": "record",
        "name": "DriverTrips",
        "fields": [
            {"name": "driver_id", "type": "long"},
            {"name": "trips_today", "type": "int"},
            {
                "name": "datetime",
                "type": {"type": "long", "logicalType": "timestamp-micros"}
            }
        ]
    }
    """)
stream_source = KafKaSource(name="kafkaStreamingSource",
                              kafkaConfig=KafkaConfig(brokers=["feathrazureci.servicebus.windows.net:9093"],
                                                      topics=["feathrcieventhub"],
                                                      schema=schema)
                              )

Define feature definition with the Kafka source

  driver_id = TypedKey(key_column="driver_id",
                          key_column_type=ValueType.INT64,
                          description="driver id",
                          full_name="nyc driver id")

    kafkaAnchor = FeatureAnchor(name="kafkaAnchor",
                                      source=stream_source,
                                      features=[Feature(name="f_modified_streaming_count",
                                                        feature_type=INT32,
                                                        transform="trips_today + 1",
                                                        key=driver_id),
                                                Feature(name="f_modified_streaming_count2",
                                                        feature_type=INT32,
                                                        transform="trips_today + 2",
                                                        key=driver_id)]
                                      )

Start streaming job

 redisSink = RedisSink(table_name="kafkaSampleDemoFeature", streaming=True, streamingTimeoutMs=10000)
    settings = MaterializationSettings(name="kafkaSampleDemo",
                                   sinks=[redisSink],
                                   feature_names=['f_modified_streaming_count']
                                   )
    client.materialize_features(settings)  // Will streaming for 10 seconds since streamingTimeoutMs is 10000

Is schema required? can it work without schema like frame-offline?

Yes. I believe it is. Kafka returns a bytes array of any type, so we have to rely on the schema to create a decoder.

Another bug while testing: We should make this kafka thing optional if the config does not have a kafka section, it will fail:
    self.kafka_endpoint = envutils.get_environment_variable_with_default(
  File "c:\users\xiaoyzhu\documents\github\feathr\feathr_project\feathr\_envvariableutil.py", line 43, in get_environment_variable_with_default
    yaml_layer = yaml_layer[arg]
KeyError: 'kafka'

Discussed offline. Ideally we want users to define features without schema as well so it's aligned with offline and online. But seems Kafka doesn't provide such capability by itself yet. So instead, we will ask users to provide a schema.
In the future, if there is interface to allow kafka read without schema, we can make the schema optional.

Could you add a dev guide as well for future devs?

How do we support other streaming sources, like Flink?
Maybe we should do:
stream_source = StreamingSource(name="kafkaStreamingSource",
                              kafkaConfig=KafkaConfig(brokers=["feathrazureci.servicebus.windows.net:9093"],
                                                      topics=["feathrcieventhub"],
                                                      schema=schema)
                              )

How do we support other streaming sources, like Flink?
Maybe we should do:
stream_source = StreamingSource(name="kafkaStreamingSource",
                              kafkaConfig=KafkaConfig(brokers=["feathrazureci.servicebus.windows.net:9093"],
                                                      topics=["feathrcieventhub"],
                                                      schema=schema)
                              )

Discussed offline. The current syntax just work so no need to introduce anohter layer.


Physics not working (Tutorial?)

Hello, i'm trying to make a simple example of grabbing a box that has physics. So if you grab it from the ground and leave it in the air it has to go down. The super-hands component lets me grab and scale objects (that works fine) and then I'm using the aframe-physics-system which also works because if I place a box (manually from the code, not using superhands) in the air it collapses to the ground. The thing is when I try to combine physics and superhands. I can't grab the box that is in the ground that technically has physics. It lets me scale it in the ground but not lift it.
I'm a bit new in this world so if anyone could help me, or at least provide me with a simple example of superhands working with physics it would be awesome.
Thank you.

Nevermind, I was missing the tag static-body on the hands component. Now it works well.
This question in StackOverflow (https://stackoverflow.com/q/64902347) help me look in the right direction. I'll leave it here for anyone that has the same problem

Also check out this tutorial from @kylebakerio : https://github.com/wmurphyrd/aframe-super-hands-component/blob/master/getting-started.md


Disable HTTP2 in webhooks

Also bumps golang.org/x/net to v0.17.0
Jira: OSPRH-468

/test ansibleee-operator-build-deploy-kuttl


fix: Using createAction permission on datasource during crud page instead of edit datasource permission

Fixes #26738

/ok-to-test