What about Windows?

Windows supports Docker! There are two potential use cases here:

Linux containers. You can run Linux containers using Docker for Windows. This has some pretty seriously limitations, mostly related to working with container source code. In particular, two problems come up frequently: (1) git for Windows will check out text files using Windows line endings by default, which breaks container builds. (2) Windows can't represent the +x bit marking files as executable, which means that scripts built into the container will generally not be runnable.
Windows containers. Windows now supports Windows guests! I've never used this but it sounds interesting. But to support this, we'd need contributions from somebody who actually uses Windows containers for real projects, and we'd need to verify that docker-compose works for this scenario. If you have experience with this, please feel to chime in!

In addition to the limitations mentioned above, cage itself has one limitation that affects use case (1) significantly:

cage uses Rust's std::path type represent paths both outside and inside containers. This works fine as long as the host OS and the container OS use similar file naming conventions. But if we want to support Linux containers on a Windows system, then we'll need to figure out how to handle path names for two different OSes in a single Rust application, and convert between them as needed.

If there's demand for cage on Windows, we'd love to see it happen. But this would almost certainly require contributions from somebody who uses Docker under Windows.
Initial Windows port

[ ] Figure out https://github.com/emk/compose_yml/issues/1
[ ] Fix the starts_with("target/test_output/hello-") test failure

Wow! I'm impressed you got it to run on Windows so quickly! This is great.
Based on what I remember, MinGW is a lot better for building "normal" standalone binaries than Cygwin, so if it comes down to a choice between the two, I have a slight bias towards MinGW. But if Cygwin is much easier to get building, I'm OK with with looking at that and at least having written instructions.
If disabling backtrace makes things simpler, than I'm heavily in favor of disabling backtrace. We mostly only use backtrace to figure out why certain error messages are missing useful context, so it's not essential. I'm OK with adding Cargo "features" to cage to control backtrace support, or with submitting PRs upstream to error-chain. We can also add a flag to disable vault support, which will remove the dependency on OpenSSL.
As for automated builds, I'd prefer Travis if we can make it work using MinGW and no backtrace. I can help mess around with this some, too.
Anyway, these are just my quick scattered reactions, and I'm definitely very much open to suggestions about how to make this easier. I'll have some more time this weekend to think more about this, and maybe help out if I can. Thank you very much for taking an interest in Windows!

This looks like the upstream pull request that we would need to convince the error chain maintainers to merge if we wanted to support  MinGW without backtrace: https://github.com/brson/error-chain/pull/45

OK. I've had a few more minutes to think about this, and I'd like to propose a plan. Your feedback is very welcome! 😀
First of all, here's what I'd like to propose for minimum QA requirements for a Windows port:

[ ] The test suites pass.
[ ] The tutorial in README.md works.

If that's the goal, here's one way we could approach it:

[ ] You submit a PR containing a WINDOWS.md file explaining how to build on Windows, and make sure the tutorial works.
[ ] I try to cross compile with MinGW and see what's up with backtrace.
[ ] I make it possible to disable OpenSSL using feature flags, which will work fine for 95% of users and greatly simplify porting.

Any thoughts? Do these seem like good first steps?

The plan sounds good. In case you're wondering, I spent the last 6 hours trying to get the cygwin stuff to work on other windows setups... no good. I just started on a lucky machine. 64bit is wrecking havoc... I'm not sure why, but no matter how hard I try, the rust openssl stuff demands 32bit. I can fudge it by renaming dll's to have 32 in their names, but I'm pretty confident the code will end up blowing up and somehow I just have a new bug I discovered in the linker (who would have thought).
So... my early confidence seems remiss. I'm going to work on seeing if I can get a pure 32bit build working now... (hilariously enough, miniz-sys is fighting THAT and only wants 64bit no matter how hard I try to tell it not to. I guess the rust compiler and cargo just assume a competent toolset and don't pass along my env-vars?). If I get that up and going, most of this should be golden.
Let me know if you need any of my artifacts, as otherwise I hate to trouble you with a pile of bash/powershell scripts that are choked with distant references to anime and robot chicken (they really are awful, and my setup for getting the 64bit build to work 30% of the time is now closer to 5%. And I was pretty much just copying my bash history from docker containers for the ubuntu stuff and passing it through sed 's/f-bomb/hooray/g' ). I'm pretty sure I'll need to set up a sed script or something else to mess with the cargo lock file if we want an automated build that drops backtrace... The error that backtrace gave me was that it could not find the 'cc' command... which seemed to mean it was trying to use the standard linux tooling rather than the mingw tools.
All in all, this sounds fun! I'll see how far I get with the first three checkboxes/tasks.

so after a large run around... I find that actually, legit... openssl on rust for windows is utterly borky mccorgi... see https://github.com/sfackler/rust-openssl/issues/442
I'm currently working on a proper write-up, because after following these steps it seems like the machines are rather happy... shrug a minor miracle at this point

Yep... following their advice is working out dandy. I'll feed back in my own two cents. hooray:

because the library names actually change on windows between binary distributions... wow... I guess it makes sense to literally tell people to rename the lib files. Time for some 🍶

cargo test got interesting:
failures:
    cmd::compose::runs_docker_compose_on_all_pods
    cmd::compose::runs_docker_compose_on_named_pods_and_services
    cmd::exec::invokes_docker_exec
    cmd::exec::runs_shells
    cmd::logs::runs_docker_compose_logs
    cmd::pull::runs_docker_compose_pull_on_all_pods
    cmd::run::runs_a_single_service_pod
    cmd::run::runs_tests
    cmd::run::runs_tests_with_custom_command
    cmd::up::runs_docker_compose_up_honors_enable_in_targets
    command_runner::os_command_runner_runs_commands
    command_runner::test_command_runner_logs_commands
    hook::runs_requested_hook_scripts
    plugins::transform::abs_path::converts_relative_paths_to_absolute
    project::new_from_example_uses_example_and_target
    project::output_applies_expected_transforms
    project::output_mounts_cloned_libraries
    sources::can_be_cloned

test result: FAILED. 41 passed; 18 failed; 0 ignored; 0 measured

error: test failed

C:\Users\jwhite\Code\cage>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Okay more on this, apparently docker-compose still does not support interactive mode on windows.
BUT!
Someone got a PR in that fixes this about a month ago https://github.com/docker/compose/pull/3980
So now when the next docker-compose release comes out, there should be a chance for us to retest this and get the fellow working fully. And hopefully by then we should see rustc-openssl stabilize (or at least be a little less brittle)

OK, let's make your life a bit easier! I've added support for building without OpenSSL. Just run:
cargo build --no-default-features --features default_minimal

This will disable the Vault plugin, but it will remove the dependency on OpenSSL. Next I'm going to try to set up a MinGW cross compiler and see how far I make it.
As for the unit tests, the plugins::transform::abs_path::converts_relative_paths_to_absolute is a dead giveaway: It looks like we have some sort of pathname representation issues. This might mean that we're seeing / replaced by \, making test suites fail. If this is case, I can fix that relatively easily, so don't worry about it.
As for the rest of the test suites, let's leave that aside for now. It's too much to bite off at once. Let's start with a simpler question: Can you go through the tutorial in README.md? What works? What breaks?

OK, we have some cross-compilation progress targetting MinGW from a Linux host! Here are the basic steps.
This will get you almost there:
sudo apt install gcc-mingw-w64-x86-64
rustup target add x86_64-pc-windows-gnu
cargo build --target x86_64-pc-windows-gnu --no-default-features --feature default_minimal

But you'll get an error message as seen in https://github.com/rust-lang/rust/issues/33465. You can work around this with:
cargo rustc --bin cage --target x86_64-pc-windows-gnu --no-default-features --features default_minimal -- -C linker=x86_64-w64-mingw32-gcc

There's probably some way to set this up correctly in Cargo.toml, but I don't know it yet.
When run, this will produce a target/x86_64-pc-windows-gnu/debug/cage.exe file that I haven't tried in any way, shape or form. But it compiles (including libbacktrace), and it's pretty easy to reproduce with just a few shell commands.
I'm going to see if I can get it to use the correct linker automatically.

Thanks for the new build features. I'll try them out in a bit... and very cool that you got the windows-gnu build to work on ubuntu/debian. Sounds like travis builds will be a shoe in.
The tutorial won't work until the interactive docker-compose fix hits in their next version. I'm trying to get more details on that. Otherwise, I guess I'll do a quick writeup on how to get where I got last night, and start a new PR.

Ah, this works without errors, at least:
sudo apt install gcc-mingw-w64-x86-64
rustup target add x86_64-pc-windows-gnu
cargo build --lib --target x86_64-pc-windows-gnu --no-default-features --features default_minimal
cargo rustc --bin cage --target x86_64-pc-windows-gnu --no-default-features --features default_minimal -- -C linker=x86_64-w64-mingw32-gcc

Now, if you're compiling on Windows with a native MinGW Rust toolchain, you can probably just try:
cargo build --no-default-features --features default_minimal

...and you shouldn't need to set up cross-compilation and mess with the linker. At the very least, it's a good starting point.
By the way, we also gitter chat room. Depending on the time of day, you may be able find me online there and ask questions in real time.

The tutorial won't work until the interactive docker-compose fix hits in their next version.

How does the tutorial fail? Is it just the shell command? Or is it other stuff which breaks? If most stuff mostly works except for that bug, then we're in pretty good shape.
What I'm really curious about is cage source mount rails_hello; cage up, creating src/rails_hello/public/index.html, and reloading the page. If that works, then the essentials are there and we can deal with the other stuff later.

OK, it should now be possible to build optimized MinGW binaries using Ubuntu 16.04 as follows:
sudo apt-get install gcc-mingw-w64-x86-64
curl https://sh.rustup.rs -sSf | sh
rustup target add x86_64-pc-windows-gnu
cargo build --release --target x86_64-pc-windows-gnu --no-default-features --features default-minimal

...without any errors. I have no idea how well these binaries work.
I believe that @dudymas is trying to figure out how to get a native build under Windows using MinGW and msys.

This got closed automatically by merging the initial Windows support, but we're still not done. Re-opening!

I'm going to give you a way to build cage without OpenSSL. That means no
vault integration on Windows, but that's a pretty specialized feature
anyway.

OK, all the tests are passing on Windows! I'm going to close this tracking issue and we can file bugs if we find any specific limitations.
Many thanks to @dudymas for all his aid getting this working!


Pulling @arsenovic changes

Note this was originaly brombo/galgebra#22, with conversation:
@arsenovic commented on Sep 28, 2016

allan are you going to merge this?

@brombo commented on Sep 28, 2016

Remind me what to do. I have been distracted due to [redacted for privacy].


[WIP] Backend support for themes

Description:
Backend support for themes.

[x] Frontend support v1: Apply selected theme: https://github.com/home-assistant/home-assistant-polymer/pull/331
[ ] Frontend support v2 (not blocking): Add card allowing to select themes from the UI.
[ ] Write documentation
[ ] Write tests

Pull request in home-assistant.github.io with documentation (if applicable): home-assistant/home-assistant.github.io#<home-assistant.github.io PR number goes here>
Example entry for configuration.yaml (if applicable):
frontend:
  themes:
    happy:
      primary-color: purple
      accent-color: red

Checklist:
If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated in home-assistant.github.io

If the code does not interact with devices:

[ ] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[ ] Tests have been added to verify that the new code works.

Will require a test to be written.

We should embed the default theme in template/index.html.
window.HASS_THEME = {
  'primary-color': 'pink'
}

and in the Polymer PR, do something like this before fetching the theme:
if (window.HASS_THEME) { applyTheme(window.HASS_THEME); }

Yes, it will be cached by the service worker and not useful while changing it around. However, embedded means we can load it instantly. The other one depends on a request and will cause a flash of blue before the theme kicks in.

Added theme_updated event. Now FE responds to BE change automatically.
Tests and Documentation still to be written...

@balloob I added tests, please take another look

Nice!


[BUG][TM2020] VehicleState::GetVis can return the wrong CSceneVehicleVis

In TM2020, if you open the Debug Window in the "Player States", you will see that players can have the same VehicleState values.
Note that the VehicleState::GetAllVis function works well (as you can see in the "All state" tab)

after investigating a bit, VehicleState::GetPlayerVehicleID can't find the VehicleId and returns 0 except for myself

Looks like 0x20 is 0x14 now here: https://github.com/openplanet-nl/vehiclestate/blob/3f57bdf0901e70be5e9cfd134f4d0f468edee6bd/Internal/Vehicle/VehicleNext.as#L30C98-L30C98
Tested with the 2023-12-20 update. Do you want i open a pull request for 2 characters? :sweat_smile:

Thanks! I'm taking a look now.

Is this just going to be a recurring thing, where the offset changes every now and again? I can tell you that we had this exact issue with 0x14 and 0x20 fixed it.
I haven't played in a while, so never noticed anything breaking, but I'm assuming the magic number just changed again and broke things. Maybe nadeo undid their change there and so we are back to the old offset? I have no idea.
Either way, if there are issues with the vehicle state, at least we know where to look.

Perhaps. It could also be that it's a buffer of vehicle ID's, as there are more than 1 in that range already, and we have to read the "first" in the buffer. At negative 0x20 for example there is often just 0.


v0.18.0 appears to be broken: no sbatch of jobs

Environment

Covalent version: 0.234.0rc0
Covalent-Slurm plugin version: 0.18.0
Python version: 3.10+
Operating system: Ubuntu

What is happening?
I can get the covalent-slurm-plugin to work fine with 0.16.0 but not with 0.18.0. I imagine the refactoring effort introduced a bug. Running any minimal example with the covalent-slurm-plugin yields an error akin to
scp: /global/homes/r/rosen/quacc/7f078879-ee9e-45a4-960b-98839dfdb1b8/node_0/stdout-7f078879-ee9e-45a4-960b-98839dfdb1b8-0.log: No such file or directory

with the following log
 Exception in ASGI application

Traceback (most recent call last):

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 404, in run_asgi

    result = await app(  # type: ignore[func-returns-value]

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__

    return await self.app(scope, receive, send)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/fastapi/applications.py", line 1054, in __call__

    await super().__call__(scope, receive, send)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/applications.py", line 123, in __call__

    await self.middleware_stack(scope, receive, send)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/middleware/errors.py", line 186, in __call__

    raise exc

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/middleware/errors.py", line 164, in __call__

    await self.app(scope, receive, _send)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/middleware/cors.py", line 83, in __call__

    await self.app(scope, receive, send)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 62, in __call__

    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app

    raise exc

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app

    await app(scope, receive, sender)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/routing.py", line 758, in __call__

    await self.middleware_stack(scope, receive, send)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/routing.py", line 778, in app

    await route.handle(scope, receive, send)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/routing.py", line 299, in handle

    await self.app(scope, receive, send)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/routing.py", line 79, in app

    await wrap_app_handling_exceptions(app, request)(scope, receive, send)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app

    raise exc

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app

    await app(scope, receive, sender)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/routing.py", line 74, in app

    response = await func(request)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/fastapi/routing.py", line 278, in app

    raw_response = await run_endpoint_function(

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/fastapi/routing.py", line 193, in run_endpoint_function

    return await run_in_threadpool(dependant.call, **values)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/starlette/concurrency.py", line 42, in run_in_threadpool

    return await anyio.to_thread.run_sync(func, *args)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/anyio/to_thread.py", line 56, in run_sync

    return await get_async_backend().run_sync_in_worker_thread(

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 2144, in run_sync_in_worker_thread

    return await future

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 851, in run

    result = context.run(func, *args)

  File "/home/rosen/software/miniconda/envs/covalent/lib/python3.10/site-packages/covalent_ui/api/v1/routes/end_points/electron_routes.py", line 216, in get_electron_file

    response, python_object = handler.read_from_serialized(result["results_filename"])

TypeError: cannot unpack non-iterable NoneType object

How can we reproduce the issue?
Use covalent-slurm-plugin==0.18.0 and submit any minimal example like that in the README.
This was my setup for what it's worth:

n_nodes = 1
n_cores_per_node = 1

executor = ct.executor.SlurmExecutor(
    username="rosen",
    address="perlmutter-p1.nersc.gov",
    ssh_key_file="/home/rosen/.ssh/nersc",
    cert_file="/home/rosen/.ssh/nersc-cert.pub",
    conda_env="quacc",
    options={
        "nodes": f"{n_nodes}",
        "qos": "debug",
        "constraint": "cpu",
        "account": "matgen",
        "job-name": "quacc",
        "time": "00:10:00",
    },
    remote_workdir="/pscratch/sd/r/rosen/quacc",
    create_unique_workdir=True,
    use_srun=False,
    cleanup=False,
)

What should happen?
The job should be submitted to the queue. In reality, it never is submitted.
Any suggestions?
No response

Closing this to make a better reproduction of my issue.


import openstack image

Chore(openstack): qemu guest agent
Chore(openstack): replace nova cli with openstack

@tormath1 ok, have a look. Writing is hard.


[Hunter] Arcane Shot is ignored in custom rotation

Describe the bug
Hunter sim - Custom rotation ignores Arcane Shot and proceeds to cast lower priority skill instead (Steady Shot).
To Reproduce
Steps to reproduce the behavior:

Select Hunter
Select Survival talents (if not selected already)
Go to Settings
Select Rotation - Custom
Make sure that Arcane Shot is higher than Steady Shot
Simulate
Go to Detailed Results
See that no Arcane Shot is used
Go to Timeline
See that Steady Shot is used often, and not a single use of Arcane Shot

Expected behavior
Arcane Shot appearing in the Timeline results instead of Steady Shot casts each time after Arcane Shot is off cooldown.
Sim Links and Screenshots
Rotation - Custom:

https://wowsims.github.io/wotlk/hunter/#eJztUr9rE2EYvuf50vbLSeVTRM4sprcYhMJdjoBxuWunDA4F/4E62MmhuPhjKuKgdXHULBV0EDTgVIxt1dKARpSUFBJNTQchkqFDx276frnJzaFuPvC89/58vvvuXjenaRjwAuY4j0XeA1+B28AQmJ3UyLOABDfxHDjp5N6N3cH43LUrt65e1zDMvYVrTH2dXmuP/vjqFleadLPm8Dt9Zd1JsybFD1JUG6/parOzRq9XUzK116XX3JUp6bO146b3hl5DMhkJHfeY6ctot6Z8OKLTXqV3/6VKdYx5IDo/X8i0hJ1fVnkg3UNRzpjlOsVW163d37C2/812NGRma5euI/6m+K1N+lozgNw9c/4hnf/4A7e1/cceF3HxhjtTYYEnRvlkJZnNu9RjwglhVqiFrlAJKURYfWxRj8vRCDuxrE8gu3Y2d1osZKtURT0C3kN9BL4CU+mpB3H5y2eL/biAZZybDsJSFJTCIJwuBYKoaB9WMihFxTCSYhiF4Q94+kmL5umA3rMB8902C5/aDDptDpE5wEQVTg+O32d2dMzSQpLexjmVnEnftRmX08x2PLUwQicu1pi/7Ol/vh13k6NQWWo2jkTnb5B+q0v9ZCaND+MK5vEbexuPEQ==

Desktop (please complete the following information):

OS: Windows 10
Browser: Firefox
Version: 106.0.2 (64-bit)

Additional context
I suppose Arcane Shot does more damage on average than Steady Shot (in regards to same amount of casts).

My bad, Explosive Shot shares cooldown with Arcane Shot.


Updated to biorbd 1.2.9

Codecov Report

Merging #132 into master will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master     #132   +/-   ##
=======================================
  Coverage   86.86%   86.86%
=======================================
  Files          15       15
  Lines        2086     2086
=======================================
  Hits         1812     1812
  Misses        274      274

Impacted Files
Coverage Δ

biorbd_optim/dynamics.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


chore: adds github ci actions

https://buganizer.corp.google.com/issues/188896992

Thanks for the review! And sorry about needing to "come into the office" tomorrow... I'll be around for a little bit, too :stuck_out_tongue_closed_eyes:


Damper and inertia effect calulator!

Damper: value[i] is position Velocity (which is the Normalize Value for Velocity value in [0..1] )
Inertia: value[i] is position Acceleration (which is the Normalize Value for Acceleration value in [0..1] )

Normalize  with max Velocity  and max Acceleration


/static/.htaccess changes not detected by hugo -w but seen by hugo

This is on Linux with hugo 0.72 compiled from master about a week ago. I placed a .htaccess file in /static/.htaccess. I have a hugo -w process running which is working fine to detect all changes made to .md, .css or other files.
If I make changes to this .htaccess file in /static then hugo -w doestn't detect any changes. However, if I kill the hugo -w process and then launch it again (or launch it without -w) then the changed .htaccess is pushed to /public.
Sounds like a bug rather than expected behavior. Perhaps it's ignoring files whose name start with . when it shouldn't?

+1
I've just experienced this same issue. It appears that Hugo doesn't watch for changes to dot files like .htaccess

In what scenario would the Hugo development server require to watch .htaccess files?

I'm running a Hugo site with site.js, which has built-in deployment sync support. Since I'm running my generated content on an Apache server, I use static/.htaccess to ensure that my generated content syncs my changes to .htaccess to my production server.

So, in the change watcher I think we ignore changes to . files, mostly for a good reason (we could probably be smarter about this). But I'm pretty sure they're still copied to /public, which is what you want.

Both hugo server and hugo -w copy the .htaccess file to the public directory as expected.
Neither hugo server nor hugo -w detects changes to the .htaccess file. This is intentional.


fix(gio-badge): remove text-transform

Issue
N.A.
Description
In gio-badge, the text is transformed with capitalize. But this component is often used as a readonly viewer for gio-form-tags-input where no text transformation is applied.
To be more consistent, we remove the text transformation on gio-badge

Gravitee.io Automatic Deployment
A prerelease version of this package has been published! 🚀
To use it in your project run the following lines:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

Gravitee.io Automatic Deployment
A prerelease version of this package has been published! 🚀
To use it in your project run the following lines:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

Hi @loriepisicchio, I don't know if the badge is used in other cases, but if it is, it would be better to add a breaking change to force the next update by other projects to manually set text-transform. WDYT ?

@gcusnieux yep you're right I will change the commit message

Gravitee.io Automatic Deployment
A prerelease version of this package has been published! 🚀
To use it in your project run the following lines:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

I'm not 💯  sure it's a good thing to remove this as it has been set after a discussion with the UI/UX team, to enforce consistency.
The use case you're describing makes me think of a simple mat-chip usage instead of tweaking the gio-badge
as they don't have the same height or icon handling for instance. Do you have some figma mockup showing this behavior?

Ok... it looks like from the latest components available in figma we don't want this behavior anymore 🙃

Don't know what to think as it's changing every month...

Oups, misclicked 🙈

@gaetanmaisse this has been discussed between @ibahloul and @audrey-tlm
Here is the corresponding mockup : https://www.figma.com/proto/sDRGgAlXUMcmy7RTRKEXbi/MVP_Cockpit?node-id=1763%3A6697&scaling=min-zoom&page-id=260%3A2419


refactor config module

Closes #320
Break up the config module into one submodule per configuration option. This commit also changes the default configuration with the new options system to be varint (the old system still uses fixint to preserve backwards compatibility).

Codecov Report

Merging #323 into master will increase coverage by 0.56%.
The diff coverage is 46.66%.

@@            Coverage Diff             @@
##           master     #323      +/-   ##
==========================================
+ Coverage   60.77%   61.33%   +0.56%
==========================================
  Files           7       10       +3
  Lines         803      807       +4
==========================================
+ Hits          488      495       +7
+ Misses        315      312       -3

Impacted Files
Coverage Δ

src/config/legacy.rs
0.00% <0.00%> (ø)

src/config/mod.rs
40.00% <40.00%> (ø)

src/config/limit.rs
45.45% <45.45%> (ø)

src/config/int.rs
55.10% <55.10%> (ø)

src/lib.rs
75.00% <77.77%> (-8.34%)
:arrow_down:

src/error.rs
4.54% <0.00%> (-4.55%)
:arrow_down:

Continue to review full report at Codecov.

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


add macro to loadimage_bfd.hh, easier to build.

Prevents potential bfd compile issue: "error: config.h must be included before this header"

Similar to #792.  Can you please explain when this issue arises?

Adding the macro enables compilation on my phone via termux. Presumably this should help other platforms as well.

Yes they address the same issue.

Ok.  We plan on accepting one of these.  The other PR reads a little simpler.  Is there an advantage to the technique you used in this PR?

Ok.  We plan on accepting one of these.  The other PR reads a little simpler.  Is there an advantage to the technique you used in this PR?

No I agree the other one is better. I would go with theirs. Thanks for the consideration!

Ok I will reopen it and close this.  thanks!


NavigationBar not showing

Describe your new feature:
if I add a navigationbar (at the bottom of the screen),  and when I navigate to a second page, the navigationbar won't show ( I want to keep the same bar)  .  Maybe add an option to show/not show/add a new one.   Thanks
Additional:
...

You can use template with PageData::set_appbar
Take a look at this example:
def app_navbar(pg: PageData, args: Arguments) -> None:
    # Your NavigationBar code..

def main_page(pg: PageData) -> None:
    template(app_navbar, pg)

    # Other main page code..

def second_page(pg: PageData) -> None:
    template(app_navbar, pg)

    # Other second page code..

You can transfer arguments from page to template if your NavigationBar needs data from pages.
Is it fixed your problem?

seems to work. I will do more testing later , especially changing app bar and Navi bar's parameters in different pages. Thanks a lot.

Happy to help!


Edit gender

I don't know why, but there is no option to change gender at this moment. Add this feature

Hi, I would like to work on this issue if possible :)

@RubenVercaemst that would be lovely!


Secure Private Key Synchronization (RFC)

Hi,
Tankred from Whiteout here. Me, Werner Koch, @koto and other PGP projects discussed a secure way to synchronize a user's private key between devices during the OpenPGP summit in April. The goal was to formalize and hopefully standardize a very simple protocol that allows interoperability between mail user agents.
We've already gotten feedback from other vendors using OpenPGP.js such
as 1&1 (GMX/Web.de) that use Mailvelope, and we would also like to hear what the End-to-End
community has to say about it. Here is our current proposal:
https://github.com/whiteout-io/mail-html5/wiki/Secure-OpenPGP-Key-Pair-Synchronization-via-IMAP
Thanks for any feedback!

thanks tankred. closing this as I assume we discussed this on the second summit

Yeah. I think you mentioned generating the user's key from a backup code in a deterministic way.


How to convert 8-bit grayscale png to same jxl?

Hi. When converting 8-bit grayscale images to jpeg xl output is 32-bit. How to make 8-bit grayscale jxl?

What output are you talking about?

.jxl image, and bit depth checked in XnView MP. However, ImageMagick identify command says 8-bit sRGB. Also, where can I download jxlinfo.exe?

Beware that xnview may upconvert images losing their source information, see https://newsgroup.xnview.com/viewtopic.php?f=36&t=43205

To be more precise - created image is 32-bit (8-bit RGB + alpha?) when using cjxl. I also tried converting in XnView MP and output image is 24-bit (8-bit RGB without alpha).

sorry, cjxl output is marked 24-bit too in xnview, I just converted earlier version of image which was 32-bit. Images attached, but in jxl .txt is added because github doesn't allow .jxl
`E:\Pobrane\jxl-x64-windows-static>cjxl E:\Obrazy\ActKey\ScanToApplication1\Czas_przestrzen_kwanty\przekonwertowane\Application1(2022-3-28)0005.PNG E:\Obrazy\ActKey\ScanToApplication1\Czas_przestrzen_kwanty\jpeg_xl\test.jxl
JPEG XL encoder v0.6.1 a205468 [AVX2,SSE4,Scalar]
Read 5388x4094 image, 63.7 MP/s
Encoding [VarDCT, d1.000, squirrel], 4 threads.
Compressed to 3735524 bytes (1.355 bpp).
5388 x 4094, 5.30 MP/s [5.30, 5.30], 1 reps, 4 threads.
E:\Pobrane\jxl-x64-windows-static>cjxl -d 0 E:\Obrazy\ActKey\ScanToApplication1\Czas_przestrzen_kwanty\przekonwertowane\Application1(2022-3-28)0005.PNG E:\Obrazy\ActKey\ScanToApplication1\Czas_przestrzen_kwanty\jpeg_xl\test_lossless.jxl
JPEG XL encoder v0.6.1 a205468 [AVX2,SSE4,Scalar]
Read 5388x4094 image, 63.6 MP/s
Encoding [Modular, lossless, squirrel], 4 threads.
Compressed to 9809711 bytes (3.558 bpp).
5388 x 4094, 0.71 MP/s [0.71, 0.71], 1 reps, 4 threads.
E:\Pobrane\jxl-x64-windows-static>identify E:\Obrazy\ActKey\ScanToApplication1\Czas_przestrzen_kwanty\jpeg_xl\test.jxl
E:\Obrazy\ActKey\ScanToApplication1\Czas_przestrzen_kwanty\jpeg_xl\test.jxl JXL 5388x4094 5388x4094+0+0 8-bit sRGB 3.56247MiB 0.047u 0:00.035
E:\Pobrane\jxl-x64-windows-static>identify E:\Obrazy\ActKey\ScanToApplication1\Czas_przestrzen_kwanty\jpeg_xl\test_lossless.jxl
E:\Obrazy\ActKey\ScanToApplication1\Czas_przestrzen_kwanty\jpeg_xl\test_lossless.jxl JXL 5388x4094 5388x4094+0+0 8-bit sRGB 9.35527MiB 0.047u 0:00.035
E:\Pobrane\jxl-x64-windows-static>identify E:\Obrazy\ActKey\ScanToApplication1\Czas_przestrzen_kwanty\jpeg_xl\test_xn.jxl
E:\Obrazy\ActKey\ScanToApplication1\Czas_przestrzen_kwanty\jpeg_xl\test_xn.jxl JXL 5388x4094 5388x4094+0+0 8-bit sRGB 9.35517MiB 0.031u 0:00.035`

test.jxl.txt

Looks like a bug in identify then. Best to file a bug report at the ImageMagick repo.
The jxl you shared, as well as the one currently produced by latest git cjxl, is in fact 8-bit grayscale, as it should be:
$ jxlinfo test.jxl.txt
JPEG XL image, 2549x4094, (possibly) lossless, 8-bit Grayscale
Color space: Grayscale, D65, sRGB transfer function, rendering intent: Relative

Ok, thanks for figuring where the problem is.

One more question: Is there cjxl setting that creates .jxl always in grayscale?

No, cjxl just encodes whatever the input is.
If you want to force grayscale, you can always do something like convert input.png gray.pgm and encode that.


Broken layout when there are no active instances

On Safari Version 10.1 (126<IP_ADDRESS>.34) and Chrome Version 56.0.2924.87 (64-bit)

!!/blame

It’s @j-f1’s fault.

The <li> needs the bot-instance-li class. I’ll do a refactor to remove the need for that.


fotografde/cakephp-sms

We've developed a CakePHP library to send SMS out. We basically copied the code for CakeEmail and adjusted it to telephone short messaging requirements.

Any update on my initial question? Why this justifies an own subpoint? Could just go into the linked section @ https://github.com/FriendsOfCake/awesome-cakephp/pull/98

I am not totally convinced of the "telephone calls" part ;) But unless someone else has a better sentence, merging.

Not keen on 'Telephone'. How about 'Transports'? And how about just making 'Transports (email, sms, etc.)'?

We could probably summarize those as Transports indeed.


Unpinned requirement warning does not give filename context

safety version: 1.6.1
Python version: Python 3.6.1
Operating System: Windows 10

Description

safety check multiple requirements, e.g.:

 safety check --full-report -r requirements/main.txt -r requirements/example-testing.txt -r requirements/unit-testing.txt -r requirements/deployment.txt -r requirements/versioning.txt -r requirements/static-testing.txt

What I Did

Received warning about unpinned requirements without the context of which file

Warning: unpinned requirement 'numpy' found, unable to check.
Warning: unpinned requirement 'typing' found, unable to check.

Warnings are popped from here: https://github.com/pyupio/safety/blob/76a6e68f17199a8997b61c51a11d20274cf3c34b/safety/util.py#L79-L83

I am facing this warming. I would like to know if it is okay?
Warning: unpinned requirement 'setuptools' found in requirements.txt, unable to check.
Warning: unpinned requirement 'requests' found in requirements.txt, unable to check.
Warning: unpinned requirement 'wheel' found in requirements.txt, unable to check.
Warning: unpinned requirement 'flask' found in requirements.txt, unable to check.


esp_system: Add reset reasons for USB_UART and USB_JTAG

ESP32 C3, C6, H2, H4 and S3 all have an SOC reset reason for USB UART and USB JTAG resets, but as these are not available in esp_reset_reason_t, ESP_RST_UNKNOWN is set instead. This is particularly unintuitive during development when it is one of the most common reset reasons.
This PR adds these to esp_reset_reason_t. There may be other reset reasons that should also be added, but these seem like a priority to me.

Hi @nebkat I noticed this PR includes a change in the nimble submodule, should we revert it?

Apologies @suda-morris missed that somehow, have now force pushed with nimble submodule changes removed.

sha=b48750d0549c6c38a8a75d3757302125d68512c0

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


E2E test flakes: Additional output formats

/kind flake
This PR is part of the larger flaky e2e test initiative.
The AdditionalOutputFormat e2e tests are regularly featured in the periodic e2e testing as failing or flaky. testgid.
I was able to reliably replicate the AdditionalOutputFormats e2e test flakes locally. I did this by setting up the e2e kind cluster and dependencies, then running the following in 2 separate terminals simultaneously with the -untilItFails flag set on ginkgo. This forces the cert-manager controller to come under load and queue workers, which subsequently surfaces the raciness in the tests which cause test failures
make e2e GINKGO_FOCUS='AdditionalCertificateOutputFormats'

To remove the raciness, I have wrapped API calls which UPDATE the test target Certificate with "retry on conflict". This does not change the correctness of the test, since these calls are made only to setup the thing we actually want to test, on not the behavior we actually are testing.
After reliably getting test failures after 2-3 test runs on both ginkgo processes, I no longer get any test failures after running them for about 5 mins.
/cherry-pick release-1.9
So these changes can improve the v1.9 e2e test periodic.
NONE

/cherry-pick release-1.9


Is this Python Library being Maintained for ArcadeDB

I recently looked at ArcadeDB as a possible option for a Graph Database but would need to leverage access via python. This library is recommended but I haven't seen any updates since November.
Please advise.

@adaros92 @ExtReMLapin

Use my fork, we use it daily at the office

Correction, use this one : https://github.com/ExtReMLapin/pyarcade


improve handling of changelog processing for backports

This PR fixes handling of backporting the changelog when the only listed change for a version is not applicable for the older targeted release.
Merge / deployment checklist

[x] Confirm this change is backwards compatible with existing workflows.
[x] Confirm the readme has been updated if necessary.
[x] Confirm the changelog has been updated if necessary.

Yeah, I started doing that and then decided it was overkill. But then had to work pretty hard to make this approach even vaguely grokkable. 😅
I think I'll leave it with this approach, and if/when it gets more complicated then refactor it 'properly'. 😄


Warning when doing ssr

I'm using remix but the warning persist

How can i fix it?

I found how to fix it thanks 👍

I am seeing same warning in next.js app.
Fixed that by putting the Toaster component inside HOC which renders children only in client-side

I found how to fix it thanks 👍

@veritem  I am facing the same issue for Remix JS project. What was the solution?

@shubhenducw  you need to import <Toaster> in root.tsx and add it bellow <Outlet/> in your root component

Fixed it in Remix.run by using <ClientOnly /> from remix-utils:
          <Outlet />
          <ClientOnly fallback={
Loading...
}>
            {() => (
              <Toaster
                toastOptions={{
                  success: {
                    style: {
                      background: "black",
                      color: "white",
                    },
                  },
                }}
              />
            )}
          </ClientOnly>
          <ScrollRestoration />


re.error: bad escape \p at position 2

When ii tried to import the library i receive the follow error:
python3
Python 3.8.2 (default, Apr 27 2020, 15:53:34)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from newspaper import Article
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/fabioluciano/.local/lib/python3.8/site-packages/newspaper/__init__.py", line 10, in <module>
    from .article import Article, ArticleException
  File "/home/fabioluciano/.local/lib/python3.8/site-packages/newspaper/article.py", line 13, in <module>
    from . import network
  File "/home/fabioluciano/.local/lib/python3.8/site-packages/newspaper/network.py", line 14, in <module>
    from .configuration import Configuration
  File "/home/fabioluciano/.local/lib/python3.8/site-packages/newspaper/configuration.py", line 15, in <module>
    from .parsers import Parser
  File "/home/fabioluciano/.local/lib/python3.8/site-packages/newspaper/parsers.py", line 19, in <module>
    from . import text
  File "/home/fabioluciano/.local/lib/python3.8/site-packages/newspaper/text.py", line 59, in <module>
    class StopWords(object):
  File "/home/fabioluciano/.local/lib/python3.8/site-packages/newspaper/text.py", line 61, in StopWords
    PUNCTUATION = re.compile(
  File "/usr/lib/python3.8/re.py", line 250, in compile
    return _compile(pattern, flags)
  File "/usr/lib/python3.8/re.py", line 302, in _compile
    p = sre_compile.compile(pattern, flags)
  File "/usr/lib/python3.8/sre_compile.py", line 764, in compile
    p = sre_parse.parse(p, flags)
  File "/usr/lib/python3.8/sre_parse.py", line 948, in parse
    p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
  File "/usr/lib/python3.8/sre_parse.py", line 443, in _parse_sub
    itemsappend(_parse(source, state, verbose, nested + 1,
  File "/usr/lib/python3.8/sre_parse.py", line 554, in _parse
    code1 = _class_escape(source, this)
  File "/usr/lib/python3.8/sre_parse.py", line 349, in _class_escape
    raise source.error('bad escape %s' % escape, len(escape))
re.error: bad escape \p at position 2

Have you installed the correct version of newspaper? If you are using python 3 you have to install newspaper3k not newspaper. So: pip3 install newspaper3k instead of pip3 install newspaper.


Adding algebraic identities

I would like to add all the useful algebraic identities under the linear algebra section so that the user can find all the identities at one place.
Please assign this issue to me.

Feel free to ask your doubts, if any
Deadline 24 March,2021 (11:59 PM IST)


feat(Angular 7 release)

Release of library against Angular 7

Coverage remained the same at 100.0% when pulling bcd5753b2df2d668334cda133b945a7a36ea0c33 on release/7.0.0 into 5aa71ee4e50591ff84dfae8c66f7cb411147168b on master.


Java examples for receiving audio

Hello and many thanks for your project.
I have been using your library to provide the B4J platform with a wrapper. B4J is a "basic-language" and is using JavaFX under the hood. This is a project I am doing with another user, @bdunkleysmith, who started it all for B4J and who has already asked you a few questions.
That said, I am new to the world of NDI and broadcasting and have a lot to learn. Also I am not a Java Expert.
The B4J wrapper is now more or less complete. I will shortly publish it here on GitHub with sources and I will of course credit you and link to your project.
I am now starting to use it in B4J and all your java examples are running nicely. I also managed to get a NDI feed of a YouTube video, using the VLC plugin, and showing the video without hardly any drops of frames in my B4J app. The only thing I cannot get to work is to get the audio from the VLC feed - so far it is only video with no audio - and play it together with the video. I wrote a java wrapper class, AudioPlayer, adapted for B4J which (should) let me play the audio. See this pastebin:
In my B4J method, I get the AudioFrame, fill it into a ByteBuffer and then return a ByteArray which I feed my AudioPlayer java class with. However, I always get an "Exit java.lang.IllegalArgumentException" similar to : "No line matching interface SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 1024 bit, stereo, 256 bytes/frame, little-endian is supported". So I believe I am not passing on a correct formatted ByteArray or arguments to my AudioPlayer class.
This is the code in B4J which should be quite readable also for Java users:
`
Case Rx1.AUDIO
Log("Audio data received (" & audioframe.getSamples & ", " & audioframe.getChannelStride & ").")
			//'just some logging
			Log(audioframe.GetChannels) '2
			Log(audioframe.GetSampleRate) '44100
			Log(audioframe.GetSamples) '1024
			Log(audioframe.GetChannelStride)
			Log((audioframe.GetChannelStride * audioframe.GetChannels)/8)

			Dim audiodata As ByteBuffer
			'Wondering how this should be set up?
			'audiodata.Initialize(audioframe.GetSampleRate * audioframe.GetChannels)
			'audiodata.Initialize((audioframe.GetSampleRate * audioframe.GetChannels * 32) / 8)
			'audiodata.Initialize(audioframe.GetSampleRate * audioframe.GetChannels * 4)
			audiodata.Initialize((audioframe.GetChannelStride * audioframe.GetChannels)/8)
			audiodata=audioframe.GetData

			Dim byteArray(audiodata.Capacity) As Byte
			byteArray = Devv.getByteArrayFromByteBuffer(audiodata) 'uses ByteBuffer.Remaining. Seems the fastest way.

			'starting player
			'NOTE: This will crash the app unless the correct format is found.
			'once found, the player *should" work
			'if you want to work only with video, remove this part
			ap.Initialize(audioframe.GetSampleRate, audioframe.GetSamples, audioframe.GetChannels, True, False)
			ap.Start(byteArray) 'starts the audioplayer in its own thread

			audioframe.close
			Dim audioframe As DevolayAudioFrame
			audioframe.Initialize`

This is a screenshot of the codec-information from VLC of the YouTube I am using as a test:

So, me and @bdunkleysmith are both stuck on getting the audio along with the video.
Do you have any ideas about what I am doing wrong?
Alternatively, if you could write a java example of how to receive audio, perhaps together with video, that would be amazing.
I had a look at your other repository where you receive audio with DisCord but don't think that was something I could apply to this.
Once again, many thanks for your Java wrapper and your great work.
Rgds,
Mike

I'm sorry for the delay in responding, you've caught me in a bit of a bad spot due to the holidays. I'll be able to get back to you with a better answer in a few days (with an example, hopefully), but from what I can see it looks like you may need to manually transform the audio into a format with a supported SourceDataLine? I've never worked with this API, but I'll be able to go through and get more specific help when I get back.
Again, I apologise for the wait and this hastily written message, and hopefully I'll be able to get back to you soon.

No need to apologise; it's important that you have some holiday time. So enjoy that and @moster67 and myself will look forward to anything you can come up with.
Looking at the NewTek Managed NDI Receive example which includes audio playback, I note they use one of the methods included in Utilities to "Convert from float planar to float interleaved audio".
Also in NewTek's SDK documentation I see they mention using the "frame synchronizer" object to effectively convert the incomimg ausio signal to a "requested sample rate, channel count and number of samples".
But as I said to @moster67 in a separate conversation, I am much closer to achieving the objective of my application using NDI than I ever thought I'd be at this time.

Thank you @WalkerKnapp for your reply. As @bdunkleysmith wrote, there is no rush and no obligation of course. Enjoy your holidays and come back to it if you feel for it and when you have free time.
About the API I used, it was based on samples I found. I am not aware of any other way but perhaps there are better solutions to play audio.
From the SDK examples, we have seen that NDI uses some utility methods to convert audio. Like these ones:

// Convert To interleaved 16bpp
'                PROCESSINGNDILIB_API
'                void NDIlib_util_audio_to_interleaved_16s_v2(const NDIlib_audio_frame_v2_t* p_src, NDIlib_audio_frame_interleaved_16s_t* p_dst);
'
'                // Convert from interleaved 16bpp
'                PROCESSINGNDILIB_API
'                void NDIlib_util_audio_from_interleaved_16s_v2(const NDIlib_audio_frame_interleaved_16s_t* p_src, NDIlib_audio_frame_v2_t* p_dst);
'
'                // Convert To interleaved 32bpp
'                PROCESSINGNDILIB_API
'                void NDIlib_util_audio_to_interleaved_32s_v2(const NDIlib_audio_frame_v2_t* p_src, NDIlib_audio_frame_interleaved_32s_t* p_dst);
'
'                // Convert from interleaved 32bpp
'                PROCESSINGNDILIB_API
'                void NDIlib_util_audio_from_interleaved_32s_v2(const NDIlib_audio_frame_interleaved_32s_t* p_src, NDIlib_audio_frame_v2_t* p_dst);

I tried to poke around and see the original code of those methods but could not find them. If they are to be used in Java, I guess they must be exposed through your wrapper. But my knowledge is to say the least, not the best and there may be much better ways.
Thank you.

Thanks for the patience, I finally had the chance to go through and implement everything needed for this. As far as I know, you are right about needing to use a frame-synchronizer and a planarity conversion to properly receive audio like this, but I hadn't implemented it before since personally I've been using mostly the send api and hadn't noticed it
I just released 1.2.0, which implements all the NDIlib_util functions in DevolayUtilities, and NDIlib_framesync in DevolayFrameSync. The examples FrameSyncExample and MonitorExample use them. I based MonitorExample on using AudioSystem to monitor audio, so hopefully, it'll be especially useful here.
Let me know if you can get your system working, and thank you for the issue!

Many thanks for your update! You've been really busy in the last days. Much appreciated.
I will in the coming days go over my B4J-wrapper and adapt it with your latest updates and additions and then test it.
Either me or @bdunkleysmith will publish our results here but I am pretty sure it will be fine now.
Thanks.
Mike


Should use pop-up to warn when closing tab

There's a feature that many sites use to avoid accidental tab closing; I think it's JavaScript's beforeunload event.  BesoGo should use this to generate a pop-up and give the user one last chance to avoid lost work.

I think another way to handle the underlying issue (of avoiding lost work) would be to cache the game tree state (maybe just dumped into SGF format) into local storage.

It's easy to do it yourself. Add
window.onbeforeunload = function() {
	return true;
};

to besogo.js
But I noticed that it only disturb because I never accidentally click on close.


Wrong translations

After module installation in a defined language (not English), all translations of CustomerPersonalData page stills in English.
FIX: in "modules/psgdr/translation/ : terms "customerpersonaldata17" and "customerpersonaldata16" must be replaced by "customerpersonaldata" and merged.

Yes! Your fix is working. Thank you very much. I couldn't find a solution for so long.

Fixed by https://github.com/PrestaShop/psgdpr/pull/76


Retry the eviction on delete page file failures

What changes are proposed in this pull request?
Retry the eviction when the deletion of the victim page file failed (it has been deleted by others)
Why are the changes needed?
Please clarify why the changes are needed. For instance,
As FB team shared with us, we might see a spike of page put failures if we delete all the page files on the disk.  I think this one might also occur when there is a race on delete the same page file.   So add a retry might help the put operation get through in case the victim file has been deleted by some one else.
Does this PR introduce any user facing changes?
No

alluxio-bot, merge this please.


DS-2701 Sword v1 and v2

This is purely to get the two modules to compile. There are no unit tests for either module and I haven't done any local tests.

Thanks a lot for the review @KevinVdV! I'll make the changes you suggest tomorrow (or on the weekend if tomorrow gets away from me).

I think this is as far as it can go without being able to run end-to-end tests. I've added a final commit to re-format everything according to the official DSpace coding conventions but I'm happy to take that commit back out if people think it makes review too hard.
So from my point of view this can be merged -- @KevinVdV (or anyone else), is there anything more you'd like to see in this PR first?

Almost there, just a few more fixes on the workflow side & this is ready to merge !

Excellent, thanks a lot @KevinVdV, I hadn't spotted the workflow related methods. Makes perfect sense to have one that's smart enough to figure out which type of workflow is actually being used. I hope I can get to the changes this week, but it may have to be the weekend.

All done with the workflow I think -- there are now no references to basic/xml workflow in either of the sword modules (just references to the generic workflow), which is great.
Done from my point of view (still with the caveat of not having run any tests).

Took a quick look around & couldn't find any more blockers. Haven't tested it though, but I assume that testing will occur once all the modules compile.


Strip key, secret and token from root config options on aws clients

Fixes #44977
Related to https://github.com/aws/aws-sdk-php/issues/2567

I'm super scared that this will break apps on older versions of the AWS PHP SDK. Is there any way we can verify this on a range of AWS PHP SDK versions?

AFAIK the credentials have always only been inside the credentials key. They were also supplied at root level, and ignored by the sdk as they were not valid keys. Until now.

Hi there :)
Here from the PHP SDK- 'key' and 'secret' shouldn't be an issue, just 'token'; some new services are adding it as an authentication scheme this week, so we need to give customers some way of passing in their own.  There's no valid reason that I could think of right now where we would need you to remove the 'key' and 'secret' from the base level.  Shouldn't harm anything either though since those values would just be ignored right now.

Thanks @SamRemis. If there's also no reason to keep them then we might be able to just accept the entire PR. Thanks @georgeboot for looking into it.

@driesvints revert last commit if you want

I'm super scared that this will break apps on older versions of the AWS PHP SDK. Is there any way we can verify this on a range of AWS PHP SDK versions?

It's used here in V2 of the SDK as a nested array, and that's quite old.  I can look into the history of it later today to confirm, but it'll take some time.  If it is, then we can definitely push out something to fix this.

@SamRemis how big is the chance that key or secret ever get added as parameters and this becomes an issue again?
The only use case I can see for this is if for some reason customers start asking for it.  There's no reason I can think of that either of these would become a valid base level config value, but I don't have a crystal ball.

It's used here in V2 of the SDK

We only allow v3 in Laravel v9 so that should be okay.

@SamRemis just found another issue with the token PR on aws php sdk. Left a comment on it: https://github.com/aws/aws-sdk-php/pull/2517

Would be nice to have a patch for V8.
For live production systems running serverless we're not going to constantly be upgrading our major Laravel version, but still might want to do updates to pull in security or bugfixes across libraries.

There's no need to upgrade constantly. Laravel 8 security fixes were supported 2-3 years. Big fixes ended half a year ago.

@georgeboot I'm experiencing this issue using the DynamoDB Cache driver - which I note when I look at the Illuminate\Support\Cache\CacheManager class I see a method newDynamodbClient() which appears to want to pass in a token value into the constructor of a new DynamoDbClient (which extends AwsClient)
    protected function newDynamodbClient(array $config)
    {
        $dynamoConfig = [
            'region' => $config['region'],
            'version' => 'latest',
            'endpoint' => $config['endpoint'] ?? null,
        ];

        if (isset($config['key'], $config['secret'])) {
            $dynamoConfig['credentials'] = Arr::only(
                $config, ['key', 'secret', 'token']
            );
        }

        return new DynamoDbClient($dynamoConfig);
    }

I could be reading this wrong, but I believe that 'token' should be removed from this array?
for ref: I'm on Laravel v9.52.10

Hey @mmehmet I tried removing key and secret from cache config for dynamodb and Im still getting the same error. Did you had to do anything more to make it work ?

Hey @mmehmet I tried removing key and secret from cache config for dynamodb and Im still getting the same error. Did you had to do anything more to make it work ?

@anuragnandan sorry I should have clarified, this was for an AWS instance - so authentication happens via IAM and credentials are unused/ignored, within the AWS-to-AWS ecosystem
if you actually do need to authenticate using credentials (eg from an instance running on a dev machine and not within AWS) then this will not work - since you do actually need a key and secret...
in that case, I would recommend building your own client, which extends the above or at least also extends an AwsClient - and just leave out the token value in your implementation:
        if (isset($config['key'], $config['secret'])) {             $dynamoConfig['credentials'] = Arr::only(                 $config, ['key', 'secret']             );         }

@mmehmet  I'm having an issue running the app on a Lambda which uses AWS Role. It seems to have started when https://github.com/laravel/framework/commit/909ea24597b86cfc7a49ce41074280d0347bf6a3 was merged and we upgraded our framework. I have tried removing key and secret from cache.stores.dynamodb but it didnt seem to work as you suggested.

did you only remove key and secret - as in you did not also remove token?
because the code will try to use that if it finds one
if (! empty($config['token'])) {
    $dynamoConfig['credentials']['token'] = $config['token'];
}

Yes, I tried removing just key and secret first and then key, secret and token from config and have the same issue.

@mmehmet Nothing seem to work on Lambda, Im applying below patch to make it work for now. Let me know if I can try anything else.
--- vendor/laravel/framework/src/Illuminate/Cache/CacheManager.php	2023-09-19 15:25:04.000000000 +0000
+++ CacheManager.php	2023-11-01 20:02:45.693625146 +0000
@@ -92,7 +92,7 @@
             return $this->callCustomCreator($config);
         }

-        $driverMethod = 'create'.ucfirst($config['driver']).'Driver';
+        $driverMethod = 'create' . ucfirst($config['driver']) . 'Driver';

         if (method_exists($this, $driverMethod)) {
             return $this->{$driverMethod}($config);
@@ -260,14 +260,11 @@

         if (! empty($config['key']) && ! empty($config['secret'])) {
             $dynamoConfig['credentials'] = Arr::only(
-                $config, ['key', 'secret']
+                $config,
+                ['key', 'secret', 'token']
             );
         }

-        if (! empty($config['token'])) {
-            $dynamoConfig['credentials']['token'] = $config['token'];
-        }
-
         return new DynamoDbClient($dynamoConfig);
     }


Next steps ideas

Description
This issue is listing next steps that we may take to consider more complexity in Nevergrad optimization pipeline inputs.
Idea boxes
Short term (for eeia project)

Cartography: consists in  generating a cartography for Benin showing how well rice culture performs depending the geographical location all over the country.
Explicative analysis: consists in deep analysis to find out which variables are explaining the most culture performances.
d-dimensional Optimization: consists in fixing all the parameters except one and give the optimal irrigation planning for that  variable parameter. Then, switch to a space of two variables, etc..
Time Series Modelling: consists in modelling the time series represented by the Leaf Area Index (LAI) as a function of the SM (humidity index).

Mid/Long Term

Sowing strategy as input: consists in not assuming that the crops are already sowed before the optimization task. For example, let's consider that we have cereals $C$  whose sowing season is summer, let's say $4$ months. In our current optimization problem, we assume that all the cereals are cultivated at the beginning of the 4 months. But in practice, it may be interesting not to sow everything at the beginning but rather have a sowing strategy over the 4 months. Thus, we may try to see if we can inject sowing strategy information in the Nevergrad optimization approach here.

Stochastic resources as inputs: consists in considering that some of the parameters impacting the optimized cultures are not deterministic at the beginning and are being available stochastically throughout the culture period. For example, we may suppose that there is no predefined quantity of water at the beginning of the cultures but a quantity $X$ of water is available (through rainfall) everyday with probability $p$.

@akouete-kpakpo @Ethel2003

thanks for summarizing @abiolaTresor


java.lang.NoClassDefFoundError: org/apache/spark/internal/Logging$class

Getting java.lang.NoClassDefFoundError: org/apache/spark/internal/Logging$class while trying to read from Azure SQL

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

ID: b01f2068-8e50-ce91-ef4b-c99c61b63b1b
Version Independent ID: a596f7df-c80e-5b97-21c0-a1eeed1829f0
Content: Apache Spark connector for SQL Server - SQL Server
Content Source: docs/connect/spark/connector.md
Product: sql
Technology: connectivity
GitHub Login: @rajmera3
Microsoft Alias: raajmera

@hiteshtulsani -- thank you for your feedback.  Please provide additional details about your task.  Meanwhile, consider these resources:

SQL Server on Microsoft Q&A
DBA Stack Exchange
Stack Overflow

@hiteshtulsani Please visit https://github.com/microsoft/sql-spark-connector for help from the community regarding issues like this.
This may be addressed in the Commonly Faced Issues section

@rajmera3 -- Rahul, thank you for that additional information.
I am closing this issue now.  You are welcome to @ mention me for any followup.
We hope to hear from you again.

Yup, the cluster runtime was v7. THanks


Keep workflows active

Github will disable workflows for inactive projects, and a project goes inactive after 60 days with no commits.
This will stop smoke tests from detecting breaking changes from upstream package updates.
One solution (which I don't like, but I'm just leaving here to show there are automated solutions): https://github.com/marketplace/actions/keepalive-workflow
Alternatively, you have to pay attention to the github notifications and re-activate workflows each time you get an alert that they're being de-activated.  From @DinoBektesevic:

Every 60 days or so without a commit, you just have to go to the actions tab and press "Enable worfklow" again. The issue I have with the automatic disable isn't that it happens it's that the notifications are by default enabled just for the person that made the workflow - not all "admins" or "maintainers" of the repo. This is how sometimes these things go by unnoticed unfortunately because people don't subscribe or watch the action (which I don't think you can do). There's an email GA that can be used as a replacement I believe.

Long term maintainability is one of the selling points for using the Python Project Template. We should really try to find a way to keep the smoke test active in the long term.

https://docs.github.com/en/actions/using-workflows/disabling-and-enabling-a-workflow?tool=webui

I've looked around, and it seems like the correct path forward that would allow users to be pretty long term hands off would be use a github action that pushes an empty commit to the repo.
The github action mentioned in the first comment seems to be the most popular one that I've been able to find after searching around in the marketplace. Though to be fair, it's hard to find anything there.
I've run some tests in my personal repo, and it seems ok. It does require the user to set a particular repository setting, which is just one more thing that a user has to do to get up and running.
Aside from that though, inserting it into the smoke-test.yml file would be fairly straightforward.
name: Unit test smoke test

on:

  # Runs this workflow automatically
  schedule:
    - cron: 45 6 * * *

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.8', '3.9', '3.10']

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v4
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        sudo apt-get update
        python -m pip install --upgrade pip
        pip install .
        pip install .[dev]
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
    - name: List dependencies
      run: |
        pip list
    - name: Run unit tests with pytest
      run: |
        python -m pytest
    - uses: gautamkrishnar/keepalive-workflow
      with:
        commit_message: Keeping project active with empty commit
        committer_username: keep-alive-bot
        committer_email: {user_email} # taken from the copier answers

GitHub sends an email before disabling smoke tests, and this email has a big green link to a page with "Continue running workflow" button. Of course it is still easy to miss the email, but I believe it is not as bad as we expected it to be


responseSlot accepts QVariant

Download:
Environment: QT=5.12, ARCH=32, PYTHON_PATH=C:\Python35
Environment: QT=5.12, ARCH=64, PYTHON_PATH=C:\Python35-x64


npm run production missing "webpackJsonp"

Running "npm run watch" all works
but running "npm run production" I get blank page and on console only this error:
app.js:1 Uncaught ReferenceError: webpackJsonp is not defined
    at app.js:1
(anonymous) @ app.js:1

solved with:
APP_ENV=production
on .env
sorry

Still, it is goofy that production setting must be used to development...


Team weekly meeting

@nabilschear @jetwhiz @frozencemetery @leonjia0112 @mbestavros
It would be good to have a short and to the point meeting online (gitter.im) once a week (we can push out to 2 weeks if excessive).
please indicate a time that would work for you, don't worry if you cannot make next week specifically, this would be as an ongoing thing. if anytime on a Wednesday does not work, let me know and I can shift it to another day.
https://doodle.com/poll/fz3sap7iubufbstt

Submitted :+1:

I will let this run until Friday and then go with the highest approved time on the doodle poll. We can then have our first meeting on Wednesday the 13th of March!

So the most popular time is 15:00 to 15:30 UTC time. Our first meeting will be on 13th March and repeating weekly. I will set up an agenda shortly.
Closing this issue now.


Unify multi-condition filtering

Always use all? semantic when applying metadata conditions for filtering.
Previously all? was only used for hooks, and any? was used for everything else (module inclusions, shared example group inclusion, define derived metadata).
Before this change MyModule would be included to example groups defining any of foo: true or bar: true:
RSpec.configure do |c|
  c.include MyModule, :foo => true, :bar => true
end

After the change the same any? behaviour is achievable splitting into two statements:
RSpec.configure do |c|
  c.include MyModule, :foo => true
  c.include MyModule, :bar => true
end

MyModule will only be included in groups with both :foo => true AND :bar => true
RSpec.configure do |c|
  c.include MyModule, :foo => true, :bar => true
end

Fixes #1821
Depends on:

~https://github.com/rspec/rspec-rails/pull/2468~
https://github.com/rspec/rspec-rails/pull/2469

The failure is due to https://github.com/alexrothenberg/ammeter/blob/master/lib/ammeter/rspec/generator/example.rb#L14 expecting any? semantic.
I'll send a PR.

Green!

This is finally the last one change on the TODO list for 4.0, please take a look. :begger:
What's left is to add deprecation warnings for what we've changed/removed in 4.9 to 3.x.
I've made several attempts of removing WithKeywordsWhenNeeded with no luck removing any. I can keep bashing my head against it, or we can release 4.0 and deal with kwargs after. Up to you to decide, @JonRowe


Ref: Dockerfile

Please advise which dir inside the container is used to store npm modules ?
Best Regards
Hareem Haque

I'm not sure this image still works, since it's more than 3 years old.
If I remember correctly, they are stored directly in CouchDB. The Dockerfile has a volume to /usr/local/var/lib/couchdb, so they would be stored somewhere in there (in whatever format CouchDB uses, of course).


Silly question - Is there a windows version?

Can't find any mentioning in docs.  bin also appears not meant for windows.
So just making sure it doesn't.

Hey @boomsta,
Splash should work fine in Windows if executed in a Docker container; install instructions should be the same. See https://docs.docker.com/engine/installation/windows/ for info on how to install Docker on Windows.

Hi Mike!
Thanks for answering!
I have a follow up question:
I'm want to use Splash as a way of integrating a JS into my C++ application.  (i.e:  not for testing purposes).
Is there a way for me get/create a Splash build for windows - that's not a part of a docker image/container?    Like, can I just build Splash as an .exe?

@boomsta hm, a good question. I think it should be possible, but it won't be straightforward. As you said, you will need to install Splash without Docker. Splash itself is just a Python package, but it has some dependencies (QT, PyQT, Lua, re2, etc) which are less straightforward. If you get them working on Windows it may be possible to package the result using cx_Freeze or PyInstaller, but I have zero experience with that.

You need to get these Python packages working: https://github.com/scrapinghub/splash/blob/master/requirements.txt; if they are all available Splash should work.

Another way to do that is to just use Qt C++ API, without using Splash.

@kmike
Thanks again!
My script makes use of web session management.  That's why I was interested in running the script in a headless browser. I assumed that Splash manages sessions - is that true?
I'm afraid that integrating my script directly to my C++ app would require me to write session management/cookies/etc code which i was hoping to avoid.
I'll try building Splash as an executable.  As backup, do you happen to know any other headless browser with http api ?

Hey @kmike, why don't you use phantomjs.org?
Also check this: Headless Browsers.

Hey @mosynaq,
Yeah, there is a lot of alternatives, and no one is clearly the best. Our reasons to create Splash are mostly explained here.
Currently Splash uses a more recent WebKit version than latest PhantomJS, and also provides some features which are not possible in PhantomJS (e.g. changing proxies per-request, not only per-webpage).

hi, @kmike
I'm trying to use splash without docker on windows. and I found that the twisted version splash require is <16.3, which is a pretty old version and I can't find a binary download of that.
is there possible that splash can unlock the version require?  because https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted only provide the last version though, sadly

@kmike also, twisted < 16.3.0 is 16.2.0 which only has py2.7_amd64 version.
is it possible to update the requirements.txt?

@NewUserHa see https://github.com/scrapinghub/splash/issues/497. It could be possible to update Twisted now, though we still need to check that the issue we had with twisted >= 16.3 is solved.

@kmike ModuleNotFoundError: No module named 'resource'

@kmike is it possible to have a windows version, to work with scrapy?

I made a patch for splash 3.4.1 to support windows.
But I'm not a python expert. So, someone should review this code.
Requirements:

Python 3.7
PyQtWebkit(currently supports 3.7<=Python and 5.13.1<=PyQt5)
PyQtWebEngine
Lupa
pywin32

Instruction:

Install Python 3.7

Update pip
> python -m pip install --upgrade pip

Install PyQt5 5.13.1, PyQtWebkit 5.13.1, PyQtWebEngine 5.13.1
> pip install pyqt5==5.13.1 pyqtwebkit==5.13.1 pyqtwebengine==5.13.1

Check is package version valid
> pip list

Install Lupa, pywin32, Splash
> pip install lupa pywin32 splash

Download Har Viewer and copy to "C:\Your Python Installation Path\Lib\site-packages\splash\vendor\harviewer" (Your should create 'vendor' directory)
[Example] C:\Your Python Installation Path\Lib\site-packages\splash\vendor\harviewer\webapp\css\harViewer.css

Download splash341_win.patch and copy to "C:\Your Python Installation Path\Lib\site-packages\splash341_win.patch"
[Example] C:\Your Python Installation Path\Lib\site-packages\splash341_win.patch

Patch following files using 'splash341_win.patch' (Windows patch.exe binary is available from git 'git\usr\bin\patch.exe')

lua_runtime.py
qtrender_lua.py
resources.py
server.py
utils.py

C:\Your Python Installation Path\Lib\site-packages>patch.exe -p0 < splash341_win.patch
(Stripping trailing CRs from patch; use --binary to disable.)
patching file 'splash\lua_runtime.py'
(Stripping trailing CRs from patch; use --binary to disable.)
patching file 'splash\qtrender_lua.py'
(Stripping trailing CRs from patch; use --binary to disable.)
patching file 'splash\resources.py'
(Stripping trailing CRs from patch; use --binary to disable.)
patching file 'splash\server.py'
(Stripping trailing CRs from patch; use --binary to disable.)
patching file 'splash\utils.py'

Create Splash Server executable

splash_server.bat
C:\Your Python Installation Path\python.exe C:\Your Python Installation Path\Lib\site-packages\splash\server.py

Run Splash Server(execute 'splash_server.bat')

Done! You can connect http://<IP_ADDRESS>:8085

splash341_win.patch
diff -urN splash\lua_runtime.py splash_win\lua_runtime.py
--- splash\lua_runtime.py	Sat Feb 22 08:43:39 2020
+++ splash_win\lua_runtime.py	Fri Feb 21 13:51:08 2020
@@ -117,7 +117,11 @@
             packages_path = ";".join([default_path, lua_package_path])
         else:
             packages_path = default_path
-
+
+        # 20200220 modified by naong(support windows)
+        if os.name == 'nt':
+            packages_path = packages_path.replace("\\", "\\\\")
+
         lua.execute("""
         package.path = "{packages_path};" .. package.path
         """.format(packages_path=packages_path))
diff -urN splash\qtrender_lua.py splash_win\qtrender_lua.py
--- splash\qtrender_lua.py	Sat Feb 22 08:43:39 2020
+++ splash_win\qtrender_lua.py	Sat Feb 22 10:14:44 2020
@@ -2,7 +2,15 @@
 import json
 import base64
 import functools
-import resource
+
+# 20200220 modified by naong(support windows)
+import os
+if os.name != 'nt':
+    import resource
+else:
+    import psutil
+
+
 import contextlib
 import time
 import sys
@@ -1235,7 +1243,14 @@
     @command()
     def get_perf_stats(self):
         """ Return performance-related statistics. """
-        rusage = resource.getrusage(resource.RUSAGE_SELF)
+        # 20200220 modified by naong(support windows)
+        #rusage = resource.getrusage(resource.RUSAGE_SELF)
+        rusage = None
+        if os.name != 'nt':
+            rusage = resource.getrusage(resource.RUSAGE_SELF)
+        else:
+            rusage = psutil.Process(os.getpid()).memory_info().rss
+
         # on Mac OS X ru_maxrss is in bytes, on Linux it is in KB
         rss_mul = 1 if sys.platform == 'darwin' else 1024
         return {'maxrss': rusage.ru_maxrss * rss_mul,
diff -urN splash\resources.py splash_win\resources.py
--- splash\resources.py	Sat Feb 22 08:43:39 2020
+++ splash_win\resources.py	Fri Feb 21 07:52:58 2020
@@ -6,7 +6,15 @@
 import gc
 import time
 import json
-import resource
+
+# 20200220 modified by naong(support windows)
+import os
+if os.name != 'nt':
+    import resource
+else:
+    import psutil
+
+
 from typing import List

 from twisted.internet.base import DelayedCall
@@ -166,7 +174,9 @@

     def _request_failed(self, _, pool_d, timer):
         log.msg("Client disconnected: %s" % _.value)
-        timer.cancel()
+        # 20200221 modified by naong
+        if not timer.cancelled:
+            timer.cancel()
         pool_d.cancel()

     def _write_output(self, data, request, content_type=None):
@@ -223,13 +233,25 @@
             key: self._value_for_logging(key, value)
             for key, value in options.items()
         }
+        # 20200220 modified by naong(support windows)
+        rss = None
+        load = None
+        if os.name != 'nt':
+            rss = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
+            load = os.getloadavg()
+        else:
+            rss = psutil.Process(os.getpid()).memory_info().rss
+            load = psutil.getloadavg()
+
         msg = {
             # Anything we retrieve from Twisted request object contains bytes.
             # We have to convert it to unicode first for json.dump to succeed.
             "path": request.path.decode('utf-8'),
             "rendertime": time.time() - request.starttime,
-            "maxrss": resource.getrusage(resource.RUSAGE_SELF).ru_maxrss,
-            "load": os.getloadavg(),
+            # 20200220 modified by naong(support windows)
+            #"maxrss": resource.getrusage(resource.RUSAGE_SELF).ru_maxrss,
+            "maxrss": rss,
+            "load": load,
             "fds": get_num_fds(),
             "active": len(self.pool.active),
             "qsize": len(self.pool.queue.pending),
@@ -418,11 +440,21 @@

     def render_GET(self, request):
         request.setHeader(b"content-type", b"application/json")
+
+        # 20200220 modified by naong(support windows)
+        rss = None
+        if os.name != 'nt':
+            rss = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
+        else:
+            rss = psutil.Process(os.getpid()).memory_info().rss
+
         info = {
             "leaks": get_leaks(),
             "active": [self.get_repr(r) for r in self.pool.active],
             "qsize": len(self.pool.queue.pending),
-            "maxrss": resource.getrusage(resource.RUSAGE_SELF).ru_maxrss,
+            # 20200220 modified by naong(support windows)
+            #"maxrss": resource.getrusage(resource.RUSAGE_SELF).ru_maxrss,
+            "maxrss": rss,
             "fds": get_num_fds(),
             "argcache": len(self.argument_cache)
         }
@@ -463,11 +495,20 @@

     def render_GET(self, request):
         request.setHeader(b"content-type", b"application/json")
+
+        # 20200220 modified by naong(support windows)
+        rss = None
+        if os.name != 'nt':
+            rss = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
+        else:
+            rss = psutil.Process(os.getpid()).memory_info().rss
+
         return (json.dumps({
             "status": "ok",
-            "maxrss": get_ru_maxrss(),
+            # 20200220 modified by naong(support windows)
+            #"maxrss": get_ru_maxrss(),
+            "maxrss": rss,
         }, sort_keys=True)).encode('utf-8')
-

 HARVIEWER_PATH = 'harviewer-2.0.17a' # Change to invalidate cache when updating harviewer
diff -urN splash\server.py splash_win\server.py
--- splash\server.py	Sat Feb 22 08:43:39 2020
+++ splash_win\server.py	Fri Feb 21 07:07:28 2020
@@ -1,7 +1,14 @@
 import os
 import sys
 import optparse
-import resource
+
+# 20200220 modified by naong(support windows)
+import os
+if os.name != 'nt':
+    import resource
+else:
+    import psutil
+
 import traceback
 import signal
 import functools
@@ -143,17 +150,22 @@

 def bump_nofile_limit():
     from twisted.python import log
-    log.msg("Open files limit: %d" % resource.getrlimit(resource.RLIMIT_NOFILE)[0])
-    soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
-    values_to_try = [v for v in [hard, 100000, 10000] if v > soft]
-    for new_soft in values_to_try:
-        try:
-            resource.setrlimit(resource.RLIMIT_NOFILE, (new_soft, hard))
-        except ValueError:
-            continue
+
+    # 20200220 modified by naong(support windows)
+    if os.name != 'nt':
+        log.msg("Open files limit: %d" % resource.getrlimit(resource.RLIMIT_NOFILE)[0])
+        soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
+        values_to_try = [v for v in [hard, 100000, 10000] if v > soft]
+        for new_soft in values_to_try:
+            try:
+                resource.setrlimit(resource.RLIMIT_NOFILE, (new_soft, hard))
+            except ValueError:
+                continue
+            else:
+                log.msg("Open files limit increased from %d to %d" % (soft, new_soft))
+                break
         else:
-            log.msg("Open files limit increased from %d to %d" % (soft, new_soft))
-            break
+            log.msg("Can't bump open files limit")
     else:
         log.msg("Can't bump open files limit")

@@ -433,7 +445,11 @@
             browser_engines_enabled=opts.browser_engines,
             dont_log_args=set(opts.dont_log_args),
         )
-        signal.signal(signal.SIGUSR1, lambda s, f: traceback.print_stack(f))
+        # 20200220 modified by naong(support windows)
+        if os.name != 'nt':
+            signal.signal(signal.SIGUSR1, lambda s, f: traceback.print_stack(f))
+        else:
+            pass

         if not jupyter:
             from twisted.internet import reactor
diff -urN splash\utils.py splash_win\utils.py
--- splash\utils.py	Sat Feb 22 08:43:39 2020
+++ splash_win\utils.py	Sat Feb 22 10:18:12 2020
@@ -6,7 +6,14 @@
 import json
 import base64
 import inspect
-import resource
+
+# 20200220 modified by naong(support windows)
+import os
+if os.name != 'nt':
+    import resource
+else:
+    import psutil
+
 from collections import defaultdict
 import functools
 import psutil
@@ -75,7 +82,11 @@
     try:
         return proc.num_fds()
     except AttributeError:  # psutil < 2.0
-        return proc.get_num_fds()
+        # 20200220 modified by naong(support windows)
+        try:
+            return proc.get_num_fds()
+        except:
+            return proc.num_handles()

 def get_alive():
@@ -134,7 +145,13 @@

 def get_ru_maxrss():
     """ Return max RSS usage (in bytes) """
-    size = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
+    # 20200220 modified by naong(support windows)
+    size = None
+    if os.name != 'nt':
+        size = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
+    else:
+        size = psutil.Process(os.getpid()).memory_info().rss
+
     if sys.platform != 'darwin':
         # on Mac OS X ru_maxrss is in bytes, on Linux it is in KB
         size *= 1024


Redesigning meeting cards for landing pages in the MeetingCard.jsx component. (Done for both mobile devices and laptop devices)

Before :-

After :-

Please attach screenshot @anuragnegi000

@thecuriousteam Screenshots uploaded sir, kindly check

Can you change some more, this is our old design @anuragnegi000

@thecuriousteam Sure what specific do you want, do you have any demo?

Definitely you can check some other sample and add your own style @anuragnegi000

@thecuriousteam okay cool, gimme some time


Wont work when bluetooth is started

Everything works great until I start
pServer = BLEDevice::createServer();
I can include the files
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
and it works unless I start bluetooth.
There is some kind of conflict but i haven't been able to figure it out.
I am using partition min sips with OTA and I am only 88%. Its not crashes I see the message about web hits but there are errors starting ssl

Hi,
could you please provide some infos about your environment (Arduino
IDE/Platform IO) and the versions of the tools you're using?
And if you're using PlatformIO, could you please enable full logging on
DEBUG (see bottom of the repo's readme file) and attach the output?
jmiranda7777<EMAIL_ADDRESS>schrieb am Di., 12. Nov. 2019,
18:35:

Everything works great until I start
pServer = BLEDevice::createServer();
I can include the files
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
and it works unless I start bluetooth.
There is some kind of conflict but i haven't been able to figure it out.
I am using partition min sips with OTA and I am only 88%. Its not crashes
I see the message about web hits but there are errors starting ssl
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/fhessel/esp32_https_server/issues/56?email_source=notifications&email_token=AD7IVUZGOOUJXRBRME77XKDQTLSPJA5CNFSM4JMGXU2KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HYYOSXA,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD7IVU3QKNA24MLDQHWAUWTQTLSPJANCNFSM4JMGXU2A
.

arduino ide 1.8.9
board nano32s
partition min spiff
I haven't done much
Here is the Arduino code see if it reproduces the issue for you
min32SSL.zip

It's a memory issue. Every TLS connection needs roughly 40-50k of large blocks on the heap, which isn't free after initializing Bluetooth. I tested a minimal example on the WROOM-32 (the common DevBoard) and on a custom board with a WROVER chip. You'll find the sketch and the output below. I think, the results will be similar for your project, even though I used PIO.
Project Files

main.cpp
#include <Arduino.h>

#define WIFI_SSID "..."
#define WIFI_PSK "..."

#include "cert.h"
#include "private_key.h"
#include "favicon.h"

#include <WiFi.h>

#include <HTTPSServer.hpp>
#include <SSLCert.hpp>
#include <HTTPRequest.hpp>
#include <HTTPResponse.hpp>

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>

using namespace httpsserver;

SSLCert cert = SSLCert(
  example_crt_DER, example_crt_DER_len,
  example_key_DER, example_key_DER_len
);

HTTPSServer secureServer = HTTPSServer(&cert);

void handleRoot(HTTPRequest * req, HTTPResponse * res);
void handleFavicon(HTTPRequest * req, HTTPResponse * res);
void handle404(HTTPRequest * req, HTTPResponse * res);

unsigned long lastReconnect = 0;

void setup() {
  // For logging
  Serial.begin(115200);

  // Connect to WiFi
  Serial.println("Setting up WiFi");
  WiFi.begin(WIFI_SSID, WIFI_PSK);
  while (WiFi.status() != WL_CONNECTED) {
    if (millis()-lastReconnect > 10000) {
      lastReconnect = millis();
      WiFi.disconnect();
      delay(500);
      Serial.print(":");
      WiFi.begin(WIFI_SSID, WIFI_PSK);
    } else {
      delay(500);
      Serial.print(".");
    }
  }
  Serial.print("Connected. IP=");
  Serial.println(WiFi.localIP());

  ResourceNode * nodeRoot    = new ResourceNode("/", "GET", &handleRoot);
  ResourceNode * nodeFavicon = new ResourceNode("/favicon.ico", "GET", &handleFavicon);
  ResourceNode * node404     = new ResourceNode("", "GET", &handle404);
  secureServer.registerNode(nodeRoot);
  secureServer.registerNode(nodeFavicon);
  secureServer.setDefaultNode(node404);

  Serial.println("Starting server...");
  secureServer.start();
  if (secureServer.isRunning()) {
	  Serial.println("Server ready.");
  }
}

BLEServer *pServer;
unsigned long lastTimestamp = 0;

void loop() {
  secureServer.loop();

  if (lastTimestamp + 1000 < millis()) {
    Serial.printf("Timestamp: %lu ms\n", millis());
    Serial.printf("Free Heap: %u bytes\n", esp_get_free_heap_size());
    lastTimestamp = millis();
  }

  if (WiFi.status() != WL_CONNECTED) {
    if (millis()-lastReconnect > 10000) {
      Serial.println("Connection lost, reconnecting...");
      WiFi.disconnect();
      delay(500);
      WiFi.begin(WIFI_SSID, WIFI_PSK);
      lastReconnect = millis();
    }
  }

  if(Serial.available() && Serial.read()=='b' && pServer==NULL) {
    Serial.println("Starting BT...");
    BLEDevice::init("myESP");
    pServer = BLEDevice::createServer();
    Serial.println("Started BT...");
  }
}

void handleRoot(HTTPRequest * req, HTTPResponse * res) {
  // see "Static Page" example
}

void handleFavicon(HTTPRequest * req, HTTPResponse * res) {
  // see "Static Page" example
}

void handle404(HTTPRequest * req, HTTPResponse * res) {
  // see "Static Page" example
}

platform.ini
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
upload_speed = 921600
monitor_speed = 115200
board_build.partitions = partitions_custom.csv
build_flags =
  -DBOARD_HAS_PSRAM ; <- only for WROVER
  -DHTTPS_LOGLEVEL=3
  -DHTTPS_LOGTIMESTAMP

partitions_custom.csv
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
otadata,  data, ota,     0xe000,  0x2000,
app0,     app,  ota_0,   0x10000, 0x1E0000,
app1,     app,  ota_1,   0x1F0000,0x1E0000,
spiffs,   data, spiffs,  0x3D0000,0x30000,

Log Output

ESP32 WROOM with built-in RAM
Free Heap: 145828 bytes
[HTTPS:I:      8359] New connection. Socket FID=55
Free Heap: 103316 bytes
[HTTPS:I:     10052] Request: GET / (FID=55)
[HTTPS:I:     10063] Connection closed. Socket FID=55
Free Heap: 144628 bytes
Free Heap: 144628 bytes
Starting BT...
Started BT...
Free Heap: 52380 bytes
[HTTPS:I:     18904] New connection. Socket FID=56
[HTTPS:E:     19412] SSL_accept failed. Aborting handshake. FID=56
[HTTPS:I:     19413] Connection closed. Socket FID=56
Free Heap: 51356 bytes

ESP32 WROVER with 4MB extenral PSRAM and BOARD_HAS_PSRAM set
Free Heap: 4339764 bytes
[HTTPS:I:      9615] New connection. Socket FID=55
Timestamp: 11234 ms
Free Heap: 4297584 bytes
[HTTPS:I:     11283] Request: GET / (FID=55)
[HTTPS:I:     11296] Connection closed. Socket FID=55
Free Heap: 4338552 bytes
Starting BT...
Started BT...
Free Heap: 4246292 bytes
[HTTPS:I:     17702] New connection. Socket FID=56
Free Heap: 4204760 bytes
[HTTPS:I:     19971] Request: GET / (FID=56)
[HTTPS:I:     19984] Connection closed. Socket FID=56
Free Heap: 4245748 bytes

As it's clearly visible, on the WROOM, only 51356 bytes of heap memory remain after initializing BLE. That's not sufficient to do the TLS handshake, and there is nothing I can do about it, as it's an atomic call to the openSSL implementation of the underlying esp-idf.
You also can see that enabling PSRAM solves that problem on the WROVER.
What you can do:

Use HTTPServer instead of HTTPSServer, but you don't have encryption and authentication then.
Try smaller certificates (maybe I also give that a try later on), but you most likely won't get over a single "concurrent" connection.
Use another ESP32 module. If you're designing custom hardware, you usually replace your DevBoard with a custom PCB at some time, so you can just pick an ESP module with additional RAM (and maybe also flash, to circumvent the problem with the huge BLE library). Meanwhile, you'll also find DevBoards with more memory, look for "PSRAM".

I know that answer's not very satisfying, so I you have another idea to discuss here, let me know. Otherwise I'd close the issue, as I cannot act on it meaningfully.

You can close the bug.
Thank you so much for the answer I will look for a Dev Board with more working memory.
The SSL works really well. The bluetooth on the chip needs a lot of work its way too heavy.
Thank you for all your support.
Jorge


Dockerize

Enough people run into issues getting it up and running I need to look into running it via Docker in a smart way that lets you take advantage of all the commands, not just drawing a network diagram like the previous PR's have focused on.

Looks like somehow numpy version 1.16.1 get's installed even though the Pipfile specifically requires 1.15.1.   Trying to run cloudmappy results in the error:
ImportError: Something is wrong with the numpy installation. While importing we detected an older version of numpy in ['.../virtualenvs/cloudmapper-M_tGLtdm/lib/python3.7/site-packages/numpy']. One method of fixing this is to repeatedly uninstall numpy until none is found, then reinstall this version.

So looks like I need to focus more on ensuring exactly what I've requested is installed, probably using sha hashes.  I was not expecting dependencies to be this much of a problem for this project.

Doing pip uninstall numpy seems to fix this issue for me as somehow the correct version of numpy is also installed, and that uninstall command only removes the 1.16.1 version.  This is a mess.

Hi. Just saw this issue after trying to run the demo from a Docker container. Currently I am able to get "CloudMapper serving on <IP_ADDRESS>:8000" but when I access it from the browser I get a "localhost didn't send any data". Any advice? Thanks

In a quick skim, this looks incorrect @Salihan04 https://gist.github.com/Salihan04/b500ba06627f36d1fa0993c87bcb047a#file-docker-compose-yml-L9
Until there is an official docker image for this though, docker related issues are going to be out of scope for what I'm willing to support questions on as too many things can go wrong with people's own docker configs.

@Salihan04 Are you attempting to access it on port 9000 in your browser?

@Salihan04 Are you accessing it via port 9000 in your browser?

@Salihan04 Are you attempting to access it on port 9000 in your browser?

yes

@Salihan04 Are you accessing it via port 9000 in your browser?

yes

PRs for where Docker support was added include #54 and #27, and apparent fix for something in #106.  Removed docker support in #153.  PR that tried to add it back in #221

Docckerfile added back in #494.  I expect how this is used to change in the future, as the primary use case is for #483


Windows 10 client fires ChangeType.UUIDs when client is unpaired

ChangeType.UUIDs trigger when the Windows 10 client is unpaired.
Hence, change the example for the pairing event.

Change type to Paired from UUIDs
https://github.com/exendahal/dotnet_bluez_server/commit/56a9e1424d59743eb56e77b0ae3be3911d1b68ff
Resolves #4


[code disscussion] the use of threadlocal variabe in evenly distributed message logic?

https://github.com/apache/rocketmq/blob/81e3648e3fcb1995897db3960a4561d6047b696c/client/src/main/java/org/apache/rocketmq/client/common/ThreadLocalIndex.java#L23-L35
this threadLocal variable threadLocalIndex is used in many places and used to evenly distributed the message.
IMO,I think threadlocal variable may not be a good idea,  a global variable(or a class variable) should be more suitable to ensure the messages were distributed evenly globally.
the threadlocal variable will has no problem especially when distibuting a large amount of message,the resulted message will be evenly distributed . But when the messages amount is small and messagequeue is a little bigger , there would be a chance to see the message is unevenly distributed.

I'm not very familiar with the distibution logic , so plz correct me if I'm wrong.

It is indeed uneven distribution when the number of messages is low. But it doesn't matter. IMO, only the uneven distribution of a large number of messages will have an impact on consumption. It may be a better choice to achieve eventual balance with less cost rather than absolute balance with complex consistency logic.

agreed ,
another point is that the threadlocal can be replaced with a class variable. anyway it is not a big deal.


HOW TO RUN DGSTGCN

i run with this :
python demo/demo_skeleton.py demo/ntu_sample.avi demo/demo.mp4 --config configs/dgstgcn/ntu120_xset_3dkp/b.py --checkpoint http://download.openmmlab.com/mmaction/pyskl/ckpt/dgstgcn/ntu120_xset_3dkp/b.pth
but i got error:
File "demo/demo_skeleton.py", line 243, in main
GCN_nperson = format_op['num_person']
File "D:\Anaconda3\envs\action_recognition\lib\site-packages\mmcv\utils\config.py", line 37, in missing
raise KeyError(name)
KeyError: 'num_person'
Can you provide the right demo script to run DGSTGCN?

Hi, jeffreyking23,
That's problem is due to the missing of default value of num_person, I have fixed it in #128