Typo: 'switches' instead of 'squishes' in question of 'Neural Networks: Activation Functions'

Describe the Issue
https://www.freecodecamp.org/learn/machine-learning-with-python/tensorflow/neural-networks-activation-functions
In the page above, a question (Which activation function switches values between -1 and 1?) uses 'switches' when the actual word should be 'squishes' (like Tim says in the video)
Affected Page
https://www.freecodecamp.org/learn/machine-learning-with-python/tensorflow/neural-networks-activation-functions
Your code
Not applicable.

Expected behavior
The question should be: Which activation function squishes values between -1 and 1?
Screenshots
No response
System

Device: Laptop
OS: Windows 10
Browser: Chrome
Version: 103.0.5060.114

Additional context
No response

@delivey please go ahead.


CASMINST-4238 include services check in preflight suite to support re…

…moval of old csi flag
Signed-off-by: Jacob Salmela<EMAIL_ADDRESS>Summary and Scope
Include the services checks in the preflight suite so they are called appropriately during deploy_management_nodes.md
Compatible with 1.2+
Issues and Related PRs
List and characterize relationship to Jira/Github issues and other pull requests. Be sure to list dependencies.

Resolves CASMINST-2348
Merge with https://github.com/Cray-HPE/docs-csm/pull/1089
Merge with https://github.com/Cray-HPE/cray-site-init/pull/132

Testing
N/A, this is just using existing tests.
Risks and Mitigations
Low
Pull Request Checklist

[ ] Version number(s) incremented, if applicable
[ ] Copyrights updated
[x] License file intact
[x] Target branch correct
[ ] CHANGELOG.md updated
[ ] Testing is appropriate and complete, if applicable
[ ] HPC Product Announcement prepared, if applicable

I'll approve but I don't necessarily agree with the not needing testing because they are existing tests.   There can be dependencies in the tests that are not available at different points in the install.

I'll approve but I don't necessarily agree with the not needing testing because they are existing tests. There can be dependencies in the tests that are not available at different points in the install.

NP.  Tested this on redbull.  It seems to work.
conman wasn't  enabled and the test caught it.  I manually enabled it and ran the tests again and it passed.


test: add load tests on encoder

[NOT READY TO MERGE] [ISSUE]
This PR introduces some "load tests" to prove the encoder does not perform correctly under load.
as you can see running the test you get empty segment playlist or uncompleted playlist.
most of the times this is the actual playlist:
 #EXTM3U
        #EXT-X-VERSION:6
        #EXT-X-PLAYLIST-TYPE:VOD
        #EXT-X-MEDIA-SEQUENCE:0
        #EXT-X-TARGETDURATION:4

and this is the expected playlist
#EXTM3U
        #EXT-X-VERSION:6
        #EXT-X-PLAYLIST-TYPE:VOD
        #EXT-X-MEDIA-SEQUENCE:0
        #EXT-X-TARGETDURATION:4
        #EXTINF:4.000,
        https://host/identifier/quality/720p_segment_0.ts
        #EXTINF:4.000,
        https://host/identifier/quality/720p_segment_1.ts
        #EXTINF:4.000,
        https://host/identifier/quality/720p_segment_2.ts
        #EXTINF:4.000,
        https://host/identifier/quality/720p_segment_3.ts
        #EXTINF:4.000,
        https://host/identifier/quality/720p_segment_4.ts
        #EXTINF:4.000,
        https://host/identifier/quality/720p_segment_5.ts
        #EXTINF:4.000,
        https://host/identifier/quality/720p_segment_6.ts
        #EXTINF:4.000,
        https://host/identifier/quality/720p_segment_7.ts
        #EXTINF:4.000,
        https://host/identifier/quality/720p_segment_8.ts
        #EXTINF:4.000,
        https://host/identifier/quality/720p_segment_9.ts
        #EXT-X-ENDLIST

Coverage increased (+0.5%) to 74.623% when pulling 2ea1910037948ed29f5a6aeec1ef39cd35e1b810 on agparadiso:load_test_encoder into 920643e7fcabbe6078c26b65e6b38ae9306f5b33 on grafov:master.

Coverage increased (+0.5%) to 74.623% when pulling 2ea1910037948ed29f5a6aeec1ef39cd35e1b810 on agparadiso:load_test_encoder into 920643e7fcabbe6078c26b65e6b38ae9306f5b33 on grafov:master.

Coverage increased (+0.5%) to 74.623% when pulling 2ea1910037948ed29f5a6aeec1ef39cd35e1b810 on agparadiso:load_test_encoder into 920643e7fcabbe6078c26b65e6b38ae9306f5b33 on grafov:master.


Consider switching synom from IResult<I, O> to Result<(I, O), ...>

Right now we use a custom result type for synom. In nom this was done to support the non-error Incomplete variant, which we don't use in syn. We don't have that need in synom, as we only have the successful and unsuccessful parse conditions. We should consider replacing our enum IResult with:
type Result<'a, O> = Result<(&'a [TokenStream], O), ParseError>

We could also make a new type instead of using the tuple on the Ok() side of the result. If we do that I would probably want to add fn parse_ok<O>(rest: &[TokenStream], val: O) -> Result<O> and fn parse_err<O>() -> Result<O> helper methods for ergonomic reasons.
For #148 I will probably change the input type from &[TokenStream] to a Cursor type.

I agree. This is long overdue.

I'll do this before #148, as it'll make that patch easier.

You are only working on this for syn/synom right? Proc-macro2 might benefit from this too https://github.com/alexcrichton/proc-macro2/issues/12.

Yes, I just started writing the patch for syn/synom. I wasn't intending to make the change to proc-macro2, but we should do it there as well.

Fixed in #152.


how to record video rgb frame and depth frame at the same time?

Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):

Consider checking out SDK examples.
Have you looked in our documentations?
Is you question a frequently asked one?
Try searching our GitHub Issues (open and closed) for a similar issue.

All users are welcomed to report bugs, ask questions, suggest or request enhancements and generally feel free to open new issue, even if they haven't followed any of the suggestions above :)

Required Info

Camera Model
L515

Firmware Version
<IP_ADDRESS>

Operating System & Version
Win 10

Kernel Version (Linux Only)

Platform
PC

SDK Version
2.47.0 }

Language
python

Segment
others

Issue Description
hello
I'm trying to record the rgb video and depth video at the same time, using L515 camera.
is it possible??
thank you

Hi @dohyeonYoon   The discussion https://github.com/IntelRealSense/librealsense/issues/8528 has a Python script for saving depth and color as .avi format video files if your goal is to record conventional video files.  It also discusses recording camera data into bag files.

I saved it in the avi file format as shown in the picture below.
After that, I captured this video and got several png files.
In this case, is there a way to get distance information for each pixel from the png file?

in addition, It has been confirmed that the viewer can get the bag file with the camera recording function.
Is there a way to get distance information for each pixel in the bag file?

PNG files are not a reliable way to get depth information, as most of the depth detail is lost when saving to PNG format.  https://github.com/IntelRealSense/librealsense/issues/4427#issuecomment-511201083
In regard to bag files, you should be able to change any RealSense script that uses live camera data to use a pre-recorded bag file as its data source instead by adding a cfg.enable_device_from_file instruction above your pipe start line.  https://github.com/IntelRealSense/librealsense/issues/3121#issuecomment-718628425 has a Python example of implementig this instruction.

Thanks for the reply!!
I noticed that depth information was lost when converting to PNG files.
Then I need to get the bag file and convert the bag file to a raw file, is there a way to get RGB frame and depth frame as a bag file in window 10 with just python code without a viewer?

You could convert a bag file to .raw without using Python by using the SDK's rs-convert tool.  In the Windows SDK you can find a pre-built executable version at C: > Program Files (x86) > Intel RealSense SDK 2.0 > Tools
https://github.com/IntelRealSense/librealsense/tree/master/tools/convert

In regard to recording a bag file containing depth and color data in Python, I hope https://github.com/IntelRealSense/librealsense/issues/3671#issuecomment-492559383 will be a helpful reference.

Hi @dohyeonYoon  Do you require further assistance with this case, please?  Thanks!

thanks for the kind explanation. I have one question left
I'm trying to  "pip install pyrealsense2" on jetson nano, but it doesn't work.
I was referring to this article #6964
It didn't work properly due to an error in make.
How can I install pyrealsense2 module on jetson nano?
os: jetpack 4.5.1 for jetson nano

My understanding is that this script is designed to save a single frame to bag.  And so whilst it is a useful Python programming reference, using this script as it is would not provide a continuous recording of camera data.
https://github.com/soarwing52/RealsensePython#data-capture
I located another script example for Python where depth and color are saved to a bag file.
https://github.com/IntelRealSense/librealsense/issues/2882

What I want is to store persistent color and depth frames in a bag file format. using python code.

Whilst there are plenty of examples of Python scripts for reading a bag file, there are few examples of recording a bag in Python and the links already mentioned in this discussion are everything that I was able to find.  So you may have to piece together a bag recording script from those.

oh I see.
It helped me a lot.
thank you so much.

Hi @dohyeonYoon  Do you require further assistance with this case, please?  Thanks!

Case closed due to no further comments received.


Re-triggering failed gradle build should run only failed tests

Is your feature request related to a problem? Please describe

Currently, majority of the build failures for OpenSearch repo are due to flaky tests.
Re-triggering the build runs all the tests again (40+ mins) and it is possible that next time build fails due to another flaky test.
This impacts contributor's productivity and slows down the feature work.
Build re-trigger also adds extra stress on the build infra and this gets amplified as we get closer to code freeze date for a release.

Describe the solution you'd like

If a build fails due to test failure, re-triggering the build should run only the failed tests from the previous run.
It would be safe to re-run only failed tests. If the change in PR is actually causing a test to fail, it would always fail.
This will help in reducing the build re-trigger time considerably.
The incremental test run should only be applicable to re-trigger of failed build. Any new change pushed to PR should run the entire build.

Describe alternatives you've considered

Alternative solution to the mentioned issue is to bring down number of flaky tests to 0.
Even though we continuously try to reduce flaky tests, with each new feature, new tests are added and it is possible that new flaky tests are introduced (this happens even with multiple runs of tests on local setup)
Tests with random wait (or assertBusy) are more susceptible to being flaky as most of the these tests do not show any symptom on local and fail when running on GitHub build system (mostly due to overloaded build servers).
We will continue our efforts to reduce flaky tests, but aiming for 0 flaky tests may take months and does not guarantee that a new flaky test will not be introduced.

Additional context
No response

Thanks for creating this issue @sachinpkale, I was thinking about creating a similar issue in OpenSearch repo to gather feedback from all the contributors of OS repo on how to tackle this problem.
While refactoring gradle-check and break it into parallel ci runs seems to be most optimal solution in the long run, we do need some mechanism to reduce the churn due to flakey test failures.
The solution I was thinking about is as follows:
Approach 1
The solution could be we catch the failure status in the existing gradle-check yml workflow file and add new steps to only retry the failing tests, if the retry passes the gradle-check would show success.  This will not require any custom action from developer side.
This will not help in genuine test failures and will extend gradle-check execution time.
Approach 2

gradle-check fails on the PR.
The developer determines whether it is genuine failure or flakey test failures.
If flakey test, the dev adds a comment or label that says re-run failed tests or something similar.
This triggers a workflow (combination of GHA and Jenkins) which gets failing test list from the last failed gradle-check run.
Runs those tests only and publishes result back on the PR.

There will be other checks like if a new commit was published which caused a new gradle-check run and then a comment/label was added then it wouldn't run stating that a gradle-check is already in progress.
But before we go ahead and start talking about solutions, I have a question on what happens to the last failed gradle-check ci rule on the PR. For now a passing gradle-check is a must for the PR to be merged.
In the solution proposed, even if we re-run the failing tests and update on the PR that they passed, the status of gradle-check would still show failed.
Do we then relax this rule? Not required if we go with approach 1.
@reta @getsaurabh02 @prudhvigodithi @gaiksaya @dblock Thoughts?
Both approaches are in theory and need to be tested for feasibility.
Would like to hear any other ideas to tackle this problem more efficiently.

+1 for breaking the gradle-check into multiple parallel ci runs

Thanks @sachinpkale @rishabh6788 , I would also agree with @shiv0408 that breaking the Gradle check into separate tasks / phases (which could be run in parallel and retried individually) looks like a good first step, if I remember correctly, @andrross also brought this idea some time ago. Unrelated to flaky tests, it would also help with getting better test coverage reports.

If a build fails due to test failure, re-triggering the build should run only the failed tests from the previous run.

This will not work as of today (monolithic Gradle check), for example when there are failures in unit tests in any module, the build fails right away (example here [1]):
* What went wrong:
Execution failed for task ':modules:reindex:test'.
> There were failing tests. See the report at: file:///var/jenkins/workspace/gradle-check/search/modules/reindex/build/reports/tests/test/index.html

Retrying such tests would not be useful since the majority of tests weren't even run. To reliable implement such feature we need to make sure none of the test related tasks / phases  were skipped.
[1] https://build.ci.opensearch.org/job/gradle-check/47638/console

Thanks @rishabh6788 @reta @sachinpkale @shiv0408, here are some issues from past to Optimize the Gradle check
https://github.com/opensearch-project/OpenSearch/issues/1975
https://github.com/opensearch-project/OpenSearch/issues/4053
https://github.com/opensearch-project/OpenSearch/issues/12410
https://github.com/opensearch-project/OpenSearch/issues/2496
https://github.com/opensearch-project/opensearch-build/issues/4810
https://github.com/opensearch-project/opensearch-build/issues/1572
I would vote for breaking the Gradle check into separate tasks / phases which will improve the developer productivity and eventually improve the Core contributions.
I'm also ok with other approaches to run in incremental or just re-run the failed Gradle tests, but again with Gradle task graph dependencies we might eventually trigger more tests that just the targeted tests part of re-try.
As one quick fix we can update the gradle-check workflow to just run for the latest head commit and cancel all the other running jobs for the same PR, this will reduce some noise on the PR (with failing gradle check comments) and stress on infra (by cancelling the long running old commit gradle runs).
Once we split the gradle check and optimize it, down the lane (or in parallel) we can tackle the existing  and take a call if we have to mute them for short term and make them the entry criteria for the upcoming release and get them fixed. Some more thoughts here https://github.com/opensearch-project/opensearch-build/issues/4810#issuecomment-2206798742.
@cwperks You may be interested in this conversation as well.

As one quick fix we can update the gradle-check workflow to just run for the latest head commit and cancel all the other running jobs for the same PR, this will reduce some noise on the PR (with failing gradle check comments) and stress on infra (by cancelling the long running old commit gradle runs).

I have created an issue for the same to discuss potential solutions in https://github.com/opensearch-project/opensearch-build/issues/5008. @prudhvigodithi @reta appreciate your feedback and comments.


Game engine issue

Trying different game engines with Ionic https://github.com/goplaychat/elastOS.Playchat/tree/feature/game-engine
Different issues

with Phaser https://phaser.io/
I can't load any asset https://github.com/goplaychat/elastOS.Playchat/blob/feature/game-engine/src/game/TestScene.tsx
I tried with different methods (relative path for assets, require, etc...)

with Playcanvas https://playcanvas.com/
Render is broken or freeze after 6 frames rendering and stop working (it works fine when I try on web browser)
https://github.com/goplaychat/elastOS.Playchat/blob/feature/game-engine/src/pages/Game3d.tsx
More examples are available here https://github.com/playcanvas/engine/tree/master/examples

Got this, we will take a look and I'll let you know.

Phaser works well for me but I had to tweak a few things:

Load resource using assets path, not import:

this.load.image("phaser", "assets/phaser.png")

Don't call this.load.start() from inside preload(). Phaser deals with it by itself. Otherwise we are kind of stuck.
Add the preloaded image in create():

this.phaserImg = this.add.image(this.x, 300, 'phaser');

Add udpate() as a test with the following code to make sure that the game loop works:

   update() {
        console.log("update")
        this.x = (this.x+1)%100;
        this.phaserImg!.setPosition(this.x, 300);
    }

Class variables:

    cursors: Phaser.Types.Input.Keyboard.CursorKeys | undefined;
    phaserImg: Phaser.GameObjects.Image | undefined;
    x: number = 0;

For playcanvas, not easy to reproduce the problem with your existing code, but i used https://github.com/playcanvas/engine/blob/master/examples/graphics/model-box.html and i can reproduce it. The screen starts flickering after a few seconds

I'll keep investigating the playcanvas issue after a while. Though Phaser looks maybe good enough for simple 2D games to start with ?

Playcanvas android logs at the time flickering starts:
2020-02-13 22:42:00.817 4690-4797/org.elastos.trinity.runtime E/chromium: [ERROR:mailbox_manager_sync.cc(57)] eglCreateSyncKHR failed
2020-02-13 22:42:00.827 4690-4797/org.elastos.trinity.runtime W/Adreno-GSL: <gsl_ldd_control:549>: ioctl fd 398 code 0xc0200933 (IOCTL_KGSL_TIMESTAMP_EVENT) failed: errno 22 Invalid argument
2020-02-13 22:42:00.827 4690-4797/org.elastos.trinity.runtime W/Adreno-GSL: <ioctl_kgsl_syncobj_create:4395>: (18f, 15, 46098) fail 22 Invalid argument
2020-02-13 22:42:00.827 4690-4797/org.elastos.trinity.runtime W/Adreno-GSL: <gsl_ldd_control:549>: ioctl fd 398 code 0xc0200933 (IOCTL_KGSL_TIMESTAMP_EVENT) failed: errno 22 Invalid argument
2020-02-13 22:42:00.827 4690-4797/org.elastos.trinity.runtime W/Adreno-GSL: <ioctl_kgsl_syncobj_create:4395>: (18f, 15, 46098) fail 22 Invalid argument

Playcanvas issue could be related to the following things:

Running on emulator is not recommended with OpenGL stuff
Running on real device goes quite well actually, and seems to start to be messed up with instant reload from ionic when changing source code. Running --nodebug dapp, the 3D red cube demo can run well for several minutes and multiple times (app stopped/started).


Productive Microsoft 365 apps for enterprise in Visual Studio subscriptions - Eligibility/12-month trial/existing tenant

In the "Eligibility" section for "Visual Studio Enterprise (Standard)" under "Benefit" it states "12-month trial" and "Renewable?" is "No".

Does this imply the benefit is only for the first year of the subscription? The use of "trial" also contradicts other statements about this being for "productive use" without qualification, such as on this pricing page.

When activating it is also listed a trial:

Also note the instructions are for creating a new tenant, but most users will have a tenant for their organization. The above message indicates my administrators need to take some action to allow this, but doesn't say what nor does this document.
So could the follwing be clarified/added:

if this is a rolling benefit or one time per subscription? If it is one time, the various other pricing pages need to be updated too! (and "one time" clarified to be eg. per organization, per named user, etc)
how administrators can allow adding of this benefit to their tenants (and which administrators these are - M365, VS Subscriptions admins, etc)

Thanks in advance!

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

ID: 737f8499-4067-8033-6e5e-edc9eba38fcb
Version Independent ID: cf03c560-a70c-256e-fc22-f39c51b38b7e
Content: Microsoft 365 apps for enterprise in Visual Studio subscriptions
Content Source: subscriptions/microsoft-365-apps-for-enterprise.md
Product: visual-studio-family
Technology: vs-subscriptions
GitHub Login: @evanwindom
Microsoft Alias: amast

@fowl2 -- James, thank you for your detailed feedback.
@evanwindom -- Evan, please look into this issue.

@fowl2 Hi James.  Thanks for reaching out.  The benefit is provided by the M365 team, who decide that the terms of the offer are.  The subscription is indeed a trial and is designed to be used by a single user on their own tenant.  The term of the trial is 12 months so it's not available for the entire length of some of the subscriptions purchased through Volume Licensing.  If the subscription is renewed, the subscription will renew but a new tenant will be required.  The "production use" refers to how the product is licensed.  Most of the tools and services in the Visual Studio subscriptions are limited to dev/test usage, but the M365 apps for Enterprise allows the subscriber to use the apps for non-dev related work.  That doesn't change its status as a trial offer.  I know it's confusing.  I'll look for ways to bring some clarity.

I've posted a couple of updates to the article.
#please-close

@evanwindom I can see the changes, thanks!

There are various other pages, such as the pricing page I linked in my original issue,
How do we add this to our existing tenants? Are we expected to create a new tenant each year?

@fowl2 Hi James,
There's a project underway right now to refresh several pages on the Visual Studio site, including the pricing page, so I'll provide feedback into that process.  (I don't own those pages...)
As far as the tenant issue is concerned -- yes, a new tenant is required each time the offer is activated.  I know that's really not optimal, but that's the way the trials are currently structured.  Incorporation into subscriptions is not a typical use for those trial offers, so the process isn't ideal.


Incorrect version (1.16-Experimental) shown for clusters created with TR that has K8s version with "latest" and override option.

Rancher Server Version - v2.3.1-rc2
Steps to reproduce the problem:
Create a Template Revision with K8s version set to Latest 1.15 (or Latest 1.13  or ``Latest 1.14) and override.  Create a cluster with this template revision with the default K8s presented to the user which 1.15.4`.
Once cluster is created successfully, go to "Edit Cluster" page.
Notice that the cluster version that get selected is always 1.16.1:

I was unable to reproduce this with the steps given. I suspect there may have been a different issue going on with this template that may have been related to rancher/rancher#23415 and I think this may prevent this issue from occurring in the future.

Available in UI tag 2.3.17

Tested with rancher v2.3.1-rc2
1.Create a Template Revision with K8s version set to Latest 1.15 and set override.
2. Once cluster is created successfully, go to "Edit Cluster" page.
The K8s version is displayed as v1.15.4 correctly


issue fixed #3783

BUGS:
#3783

Please describe the issue that you solved if its not filed.

Otherwise please mention issue #id and use comma if your PR
solves multiple issues.

For things other than bugs:

Describe that thing in very short line, word limit is 200.
Otherwise use issue #id if the issue was filed as feature request.

same as #3796

working fine


remove title form home page

Title: Remove title from

Assign me under JWOC

I think its displaying fine, and looking fine too.


Adds new connections_created statistic

With the new connections_created statistic users can know how many connections have been created by the pool.
This one is the latest PR in the series of PRs that are adding sufficient statistics to the pool that are required for monitoring and debugging systems in production.

@djc after this one maybe a new release would be deserved?

@djc after this one maybe a new release would be deserved?

Sure, can you add a separate commit that bumps the version number?

Sure, can you add a separate commit that bumps the version number?
Yeps Ill do that once this is merged


Test runner - initial version

Did you have a look whether there were any existing solutions for generic test runners with custom reporters?

Yes, I have. All of them I've seen are tightly coupled to specific framework / language, didn't allow for custom assertions or required a lot of effort to have them setup and working (usually combination of all of the above).


4b8b867

4b8b867
Originally posted by @Psoffie009 in https://github.com/Leaflet/Leaflet/pull/7671#pullrequestreview-755750579

4b8b867
Originally posted by @Psoffie009 in #7671 (review)


When search is used on more than one map, it doesn't work

I have two maps loaded, both using this plugin. When I perform a search from the second map, it doesn't actually pass the query text to the geolocator. ie: http://nominatim.openstreetmap.org/search?q=&format=json
My guess is it's pulling the value of the first address input and not the second one.

This one is not relevant anymore. Fixed by #50 among others.


Questions about generate edits

In utils/generate_edits.py, line 115
a1, a2 is sorted when generate leaving groups and the attaching ligand may be detected only when a1 not in atoms_only_in_react and a2 in atoms_only_in_react. Is there possibility that a2 not in atoms_only_in_react and a1 in atoms_only_in_react? A case:
>>>smi = '[C:2][C:1][C:3][C:4][C:5]>>[C:1][C:3][C:4][C:5]'
>>>generate_reaction_edits(smi)
ReactionData(rxn_smi='[C:1]([C:2])[C:3][C:4][C:5]>>[C:1][C:3][C:4][C:5]', edits=[('Attaching LG', '*[C]'), 'Terminate'], edits_atom=[1], rxn_class=None, rxn_id=None)

>>> smi = '[C:1][C:2][C:3][C:4][C:5]>>[C:2][C:3][C:4][C:5]'
>>> generate_reaction_edits(smi)
ReactionData(rxn_smi='[C:1][C:2][C:3][C:4][C:5]>>[C:2][C:3][C:4][C:5]', edits=['Terminate'], edits_atom=[], rxn_class=None, rxn_id=None)

I think these 2 reactions are same and the edits should not be related to map number.
Another problem is about atoms only products. Error raised in line 90 or line 97. (Detaching ligand?)
>>> smi = '[C:1][C:2][C:3][C:4][C:5]>>[C:6][C:2][C:3][C:4][C:5]'
>>> generate_reaction_edits(smi)

When preprocessing the data to genetate the edits, we first canonicalize the product SMILES by re-arranging the atom order to be the same as the canonical atom order, so the map numbers are not random. Hope this solve your problem.

Thanks. Canonicalizing solved these cases.
Here is another case from USPTO-50k whose actions seems to be incomplete. Is the result supposed?
ReactionData(rxn_smi='[NH2:11][c:12]1[cH:13][cH:14][c:15]([F:16])[cH:17][c:18]1[F:19].[O:1]=[C:2]1[C:3]2=[C:4]([CH2:5][CH2:6][CH2:7][CH2:8]2)[C:9](=[O:10])[O:20]1>>[O:1]=[C:2]1[C:3]2=[C:4]([CH2:5][CH2:6][CH2:7][CH2:8]2)[C:9](=[O:10])[N:11]1[c:12]1[cH:13][cH:14][c:15]([F:16])[cH:17][c:18]1[F:19]', edits=[('Delete Bond', (None, None)), ('Delete Bond', (None, None)), 'Terminate'], edits_atom=[[9, 11], [2, 11]], rxn_class=3, rxn_id='US04001272')


RQ-dashboard is incompatible with click>=8.0.1

I wasn't able to get the template to work until I added the following to requirements.txt:
click==7.1.2
It seems rq-dashboard is aware of the issue:
https://github.com/Parallels/rq-dashboard/pull/385

@areedee thanks a lot for mentioning! fixed the click version: https://github.com/fcakyon/flask-redis-docker/blob/master/project/requirements.txt

@areedee thanks a lot for mentioning! fixed the click version: https://github.com/fcakyon/flask-redis-docker/blob/master/project/requirements.txt


Support configuring consumers to start consuming from a specified ID

Support configuring consumers to start consuming from a specified ID

I reverted this PR due to CI failure. I fixed CI so that it will be triggered on pull requests. Could you help us create another PR? Thanks a lot!


Viewport waitForSceneCompletion does not wait for point clouds

Describe the bug
Viewport's waitForSceneCompletion API is not properly waiting for point clouds to finish loading / rendering.
To Reproduce
Steps to reproduce the behavior:

Open a point cloud using display-test-app
Navigate so it is in the process of loading points / tiles
Quickly keyin "dta save image" while tiles are still loading - this keyin internally uses waitForSceneCompletion
Observe that the image snapped contains a partially rendered point cloud scene

Expected behavior
waitForSceneCompletion should wait for point clouds to finish loading / rendering
Screenshots
TBD
Desktop (please complete the applicable information):

OS: Tested on MacOS and Windows
Browser: Electron
iTwin.js Version: 3.x

Additional context
N/A

Need to determine whether it's a problem with Orbit, PNTS 3d tiles, or both.

We have additionally observed that point cloud waiting also did not work in DPTA before the introduction of the waitForSceneCompletion API.  Unsure if it has worked before in the past.

Need to determine whether it's a problem with Orbit, PNTS 3d tiles, or both.

According to testing done by @DStradley it is both types of point clouds which exhibit the problem.

According to testing done by @DStradley it is both types of point clouds which exhibit the problem.

That is surprising. PNTS 3d tiles use the same code path as other types of 3D tiles, whereas Orbit uses a completely different code path.
Are reality mesh 3d tiles also affected?
In any case, please be more specific in repro steps than "open a point cloud".


[FR] Specify recycle bin path per category

#75 is a great addition since the Unraid Recycle Bin plugin names the directory .Recycle.Bin, so now qbit_manage can use the same one.
I would also love the ability to have multiple recycle bins, i.e. one per qBittorrent category. This would make it work with separate shares.
For example, I have one share for movies (/mnt/user/movies) and one for TV (/mnt/user/tv), which both have their own .Recycle.Bin folders.
In qBit and qbit_manage I have a Docker volume mapping like /mnt/user:/data so that qBit can then drill down to the path set for each qBit category (e.g. /data/movies).
So the whole recycle bin feature doesn't really work for this type of setup if there's only one path for it.

Thanks for the feedback! When I originally implemented the Recycle Bin feature I intentionally did not name it as .Recycle.Bin because I didn't want qbit_manage to interfere with Unraids Recycle Bin plugin. I suggest you do not combine the recycle bins as you could run into issues. Qbit manage will actually delete any files in that folder regardless of whether or not they came from Qbittorrent. So I would caution keeping them the same.
I also use the same docker volume mapping as you do and I don't see it necessary to ha e multiple recycle bin folders as each category should have its own save path and when the torrent files get moved to the recycle bin folder it keeps that save path directory. In your example the /movies and /tv directories will end up being created in your recyclebin folder making it easy to distinguish which category your files are in.
Here's an example of how my Recyclebin folder looks like:

Thanks for the feedback! When I originally implemented the Recycle Bin feature I intentionally did not name it as .Recycle.Bin because I didn't want qbit_manage to interfere with Unraids Recycle Bin plugin. I suggest you do not combine the recycle bins as you could run into issues. Qbit manage will actually delete any files in that folder regardless of whether or not they came from Qbittorrent. So I would caution keeping them the same.
I also use the same docker volume mapping as you do and I don't see it necessary to ha e multiple recycle bin folders as each category should have its own save path and when the torrent files get moved to the recycle bin folder it keeps that save path directory. In your example the /movies and /tv directories will end up being created in your recyclebin folder making it easy to distinguish which category your files are in.
Here's an example of how my Recyclebin folder looks like:

Qbit manage will actually delete any files in that folder regardless of whether or not they came from Qbittorrent. So I would caution keeping them the same.

This wouldn't be an issue since I would have qbit_manage configured to never empty the trash and just let the Unraid plugin handle it. This is what I'm doing currently with Sonarr/Radarr and the recycle bins for the movies/tv shares and it works great.

In your example the /movies and /tv directories will end up being created in your recyclebin folder making it easy to distinguish which category your files are in.

It's not so much an issue of distinguishing the files, but rather a mount/share issue.
Since /data is /mnt/user, if I specify the recycle bin path as e.g. /data/.Recycle.Bin or /data/<something>/.Recycle.Bin it would create a directory in /mnt/user, which Unraid will treat as a user share and a different filesystem, breaking hardlinks.
That's why it would be optimal if I could do:
cat:
  movies:
    path: /data/movies
    recycle_bin: /data/movies/.Recycle.Bin
  tv:
    path: /data/tv
    recycle_bin: /data/tv/.Recycle.Bin

Qbit manage will actually delete any files in that folder regardless of whether or not they came from Qbittorrent. So I would caution keeping them the same.

This wouldn't be an issue since I would have qbit_manage configured to never empty the trash and just let the Unraid plugin handle it. This is what I'm doing currently with Sonarr/Radarr and the recycle bins for the movies/tv shares and it works great.

In your example the /movies and /tv directories will end up being created in your recyclebin folder making it easy to distinguish which category your files are in.

It's not so much an issue of distinguishing the files, but rather a mount/share issue.
Since /data is /mnt/user, if I specify the recycle bin path as e.g. /data/.Recycle.Bin or /data/<something>/.Recycle.Bin it would create a directory in /mnt/user, which Unraid will treat as a user share and a different filesystem, breaking hardlinks.
That's why it would be optimal if I could do:
cat:
  movies:
    path: /data/movies
    recycle_bin: /data/movies/.Recycle.Bin
  tv:
    path: /data/tv
    recycle_bin: /data/tv/.Recycle.Bin

This wouldn't be an issue since I would have qbit_manage configured to never empty the trash and just let the Unraid plugin handle it.

Okay yes it would be fine if you aren't planning on using qbit_manage to empty the recycle bin.
In terms of implementing this, let me think about this some more and I'll get back to you.

This wouldn't be an issue since I would have qbit_manage configured to never empty the trash and just let the Unraid plugin handle it.

Okay yes it would be fine if you aren't planning on using qbit_manage to empty the recycle bin.
In terms of implementing this, let me think about this some more and I'll get back to you.

Seeing as how both @bobokun and I run unraid and both use containers for our setups. We've never run into an instance where there would be a need for a per-category recycling bin. I understand that you use a separate share for each of your movies and tv shows however this is actually sub-optimal (proven here). I'd highly suggest setting yourself up something similar to what bobo and I have set up. TRaSH's Guides has to be the most optimal setup to ensure everything runs smoothly this is what we both use.

Seeing as how both @bobokun and I run unraid and both use containers for our setups. We've never run into an instance where there would be a need for a per-category recycling bin. I understand that you use a separate share for each of your movies and tv shows however this is actually sub-optimal (proven here). I'd highly suggest setting yourself up something similar to what bobo and I have set up. TRaSH's Guides has to be the most optimal setup to ensure everything runs smoothly this is what we both use.

The reason I have separate shares is because of how Unraid's split levels work.
For movies, I've set it up so that a single movie directory and the directory it's hard-linked from, e.g. /mnt/user/movies/library/Movie Name (2022) and /mnt/user/movies/downloads/Movie.Name.2022…, are never split across multiple disks.
For TV, I have it so that a single season directory is never split. This requires two different split levels and hence two different shares.
TRaSH's guides are great but they don't account for this Unraid-specific scenario.

The reason I have separate shares is because of how Unraid's split levels work.
For movies, I've set it up so that a single movie directory and the directory it's hard-linked from, e.g. /mnt/user/movies/library/Movie Name (2022) and /mnt/user/movies/downloads/Movie.Name.2022…, are never split across multiple disks.
For TV, I have it so that a single season directory is never split. This requires two different split levels and hence two different shares.
TRaSH's guides are great but they don't account for this Unraid-specific scenario.

Okay. I can see what you're doing now. You have thought this out quite thoroughly.

I agree with @Drazzilb08 in that this seems to be a very niche feature that not many will use. I don't want to add additional complexity to the cat section of the config but I have thought of a solution that might work. How about I add something like
split_by_category: true under the recyclebin attribute and that will take whatever your save path you have defined in your category and add the base recyclebin folder (which you defined in the recycle_bin attribute under directory.

Here's one of my actual categories:
cat:
  radarr: /data/movies/dl

With your suggestion, that would create /data/movies/dl/<recycle_bin>, right?
It wouldn't be at the root of the share (/data/movies), so I can't use the recycle bin plugin, but I can live with that.

With your suggestion, that would create /data/movies/dl/<recycle_bin>, right?

Yes that's how it would work

Yeah, that would be awesome if it's not too much of a hassle.

@KnifeFed Can you please switch over to develop branch and test, let me know if you find any bugs

Hey. Sorry for the late reply, I've been away all week. Thanks so much for implementing this!
I just tested version 3.1.5 and in my config, I have:
directory:
  root_dir: /data
  recycle_bin: .Recycle.Bin
  torrents_dir: /data/appdata/binhex-qbittorrentvpn/qBittorrent/data/BT_backup
  remote_dir: /data/
  cross_seed:

...

recyclebin:
  enabled: true
  save_torrents: true
  split_by_category: true
  empty_after_x_days:

It did add a recycle bin per category path but it's named .RecycleBin so the recycle_bin option doesn't seem to do anything in this case. Also, it still created an empty .RecycleBin directory in /data (/mnt/user).

try changing your recycle_bin var to a directory like /.Recycle.Bin

I tried recycle_bin: /.Recycle.Bin and it didn't make a difference. They still get named .RecycleBin. Also, as I mentioned, an empty one is created in /data and that happens even when just running the script with --run --dry-run, i.e. no actual task.

It will automatically create the folder with the default .RecycleBin if the recycle_bin path does not exist.

That didn't help either, unfortunately. Is there a way to see where the file would have ended up when doing a dry-run? --debug --trace doesn't give any info regarding this, nor any messages alluding to there not being a recycle bin specified. It's a pretty slow process reproducing this with actual runs.

Yes --debug would tell you where the file is being moved to if you did have any unregistered torrents, it should show up in the logs. Can you do one more thing and update to the latest develop branch and try again?

Yes --debug would tell you where the file is being moved to if you did have any unregistered torrents

It doesn't do that during a dry-run. With --run --skip-recycle --rem-unregistered --dry-run --debug --trace, this is what I get:
|    Torrent Name: Torrent.Name                                                     |
|          Status: TORRENT NOT REGISTERED WITH THIS TRACKER                                                                            |
|         Tracker: https://tracker.domain.tld                                                                                |
|         Deleted .torrent AND content files.                                                                                |
|                                                                                |
| JSON: {'function': 'rem_unregistered', 'title': 'Removing Unregistered Torrents', 'torrent_name': 'Torrent.Name', 'torrent_category': '<CATEGORY_NAME>', 'torrent_status': 'TORRENT NOT REGISTERED WITH THIS TRACKER', 'torrent_tracker': 'https://tracker.domain.tld', 'notifiarr_indexer': None, 'torrents_deleted_and_contents': True, 'body': '   Torrent Name: Torrent.Name\n         Status: TORRENT NOT REGISTERED WITH THIS TRACKER\n        Tracker: https://tracker.domain.tld\n        Deleted .torrent AND content files.'} |
| Webhook: None

What should I set recycle_bin to in the dev build?

Alright, I ran the dev build with:
directory:
  root_dir: /data/
  recycle_bin: .Recycle.Bin
  torrents_dir: /data/appdata/binhex-qbittorrentvpn/qBittorrent/data/BT_backup/
  remote_dir: /data/
  cross_seed:

…and now it correctly created /category/path/.Recycle.Bin. That's great! It also created an empty .Recycle.Bin in /data though.

Okay try updating again, it shouldn't create it anymore.

Yup, now it works great! Thanks!


Allow transcription of an audio file.

Provide a command line option to allow transcription of an audio file.

Resolved in PR #80


Add special_price to vue_storefront_catalog product entity

Add migration for adding special_price field (and populating it by random data) to Product catalog
Migration documentation:
https://github.com/DivanteLtd/vue-storefront-api/blob/master/doc/1. Data schema and migrations.md

Started investigation on that

product.special_price

Is for that, and it's already synced up via mage2nosql


autoexec.cfg executes addons twice

This does not seems to be necessary. I think only executing an addon after the comfig has been loaded is the sufficient.

This was used for experimental addon, but is not used anymore. Thanks for the catch.

This was used for experimental addon, but is not used anymore. Thanks for the catch.

Alright. But executing an addon before the comfig was loaded is unnecessary. Executing an addon right after the comfig is loaded is the correct and necessary, and this also possibilities the addon to override comfig defaults.

Yes, it was used in the experimental addon to override module definitions (changing snapshots module), and then run settings to override some comfig defaults.

Yes, it was used in the experimental addon to override module definitions (changing snapshots module), and then run settings to override some comfig defaults. But now it's not used, so it should be removed.

Yes, I understood. What I have said is: you did not needed to execute the addons twice even with the experimental addon. Executing the addons right after the comfig has been executed (that is, once the comfig has been executed) would be sufficient.

Well, modules run can apply new values after comfig, and then if experimental or any other addon overrode a value in a module, then it would be overwritten by the modules run.


Fixed newline not being added to header

Fixed header tags like --disable, --client, etc. not inserting a newline on a few occasions by commenting out a condition in lua.rs. This makes it ignore if there is already a newline in the source and adds a new one anyway, but it is preferable to it not adding a newline at all and throwing a bunch of errors (which is what happened in my case).

Thanks! I will merge this change tomorrow after some testing.
I think it's finally time to introduce unit tests.


Add support for custom import statements

Currently, the import statement of the example block is inferred/derived from the actual import statement from the *.figma.tsx file. This can be altered to a certain extent through importPaths from figma.config.json.
But it's not flexible enough for more use cases.
For example, the local component file is called Button with a capital "B".
So the import is defined as import { Button } from './Button'.
But the component is distributed as a standalone package named @uikit/button, with a lowercase "b".
Defining an import path like "*": "@uikit/*" will result in import { Button } from '@uikit/Button', with the original capital "B" vs the expected lowercase "b".

Would love to see this as well.
For my use case, I'd like to be able to specify named imports, but my component code is a default export.
So in Button.figma.tsx I have something like this:
import Button from './Button';

figma.connect('Button', etc...)

Where src/components/Button/Button.jsx is:
const Button = () => {
  // ...
};

export default Button;

And src/components/Button/index.js is:
import Button from './Button';
import { BUTTON_VARIANT } from './constants';

export default Object.assign(Button, {
  VARIANT: BUTTON_VARIANT,
});

And then in figma.config.json I have:
{
  "codeConnect": {
    "include": ["src/components/**"],
    "exclude": [],
    "importPaths": {
      "*": "@acme/ui"
    }
  }
}

Unfortunately, this results in a code snippet that has this import:
import Button from '@acme/ui';

instead of:
import { Button } from '@acme/ui';

I'd like to retain my current component file structure, but provide the correct import statement for the user.

Hey! We added a way to override the import statements in the latest version (It's not yet documented in the README):
figma.connect(Button, "https://...", {
   imports: ["import Button from '@acme/ui'"]
})

Keen to hear your thoughts on this - hopefully this helps to unblock you. We'll likely revisit the autogenerated imports too in the future to make them more customizable/flexible to use


HDDS-4166. Documentation index page redirects to the wrong address

What changes were proposed in this pull request?
The server for the edge version of the documentation doesn't appear to use index.html as the default index page, but instead displays a list of directories.
If the file name of the page is index.html, it doesn't add index.html to the Permalink parameters, which seems to be hugo's style. I found similar cases on the internet. (ref. https://discourse.gohugo.io/t/ugly-urls-with-page-resources/10037)
The easiest solution is to check the permalink suffix and if it's not .html then print index.html at the end.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-4166
How was this patch tested?
Tested locally using hugo serve

Thanks @adoroszlai for your review and comments.
I re-checked the hyperlinks in the document related to "index.html".
I will update this patch to include the following changes:

Fixed ozone logo image not displaying properly and added a hyperlink to the index page.
Added "index.html" to the "Home" hyperlink in the breadcrumb.
Added "index.html" to the "Overview" hyperlink in the sidebar.

Hi! @adoroszlai
I found some broken hyperlinks and updated the patch to fix it.
It fixed the following items:

Storage Container Manager hyperlink in /zh/concept/overview.html page is not available.
kerberos keytab hyperlink in /zh/security/secureozone.htmlpage is not available.
Replacing ofs.md with a hyperlink of OFS in /zh/interface/o3fs.html.

Thanks @cxorm for the review.
I've updated the patch based on your review.

Codecov Report

Merging #1372 into master will decrease coverage by 0.23%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #1372      +/-   ##
============================================
- Coverage     75.32%   75.08%   -0.24%
+ Complexity    10502    10484      -18
============================================
  Files           990      990
  Lines         50757    50844      +87
  Branches       4951     4956       +5
============================================
- Hits          38233    38177      -56
- Misses        10158    10279     +121
- Partials       2366     2388      +22

Impacted Files
Coverage Δ
Complexity Δ

...hdds/scm/container/CloseContainerEventHandler.java
72.41% <0.00%> (-17.25%)
6.00% <0.00%> (ø%)

...hdds/scm/container/common/helpers/ExcludeList.java
86.95% <0.00%> (-13.05%)
19.00% <0.00%> (-3.00%)

.../hadoop/ozone/recon/scm/ReconContainerManager.java
84.74% <0.00%> (-11.87%)
14.00% <0.00%> (ø%)

...er/common/transport/server/GrpcXceiverService.java
70.00% <0.00%> (-10.00%)
3.00% <0.00%> (ø%)

...hadoop/ozone/recon/api/types/DatanodeMetadata.java
79.31% <0.00%> (-8.63%)
2.00% <0.00%> (-5.00%)

...on/scm/ReconIncrementalContainerReportHandler.java
60.00% <0.00%> (-7.50%)
4.00% <0.00%> (ø%)

...va/org/apache/hadoop/hdds/utils/db/RDBMetrics.java
92.85% <0.00%> (-7.15%)
14.00% <0.00%> (-1.00%)

...doop/hdds/scm/container/ContainerStateManager.java
81.67% <0.00%> (-6.88%)
32.00% <0.00%> (-3.00%)

...rg/apache/hadoop/hdds/scm/server/SCMCertStore.java
38.23% <0.00%> (-5.89%)
5.00% <0.00%> (-1.00%)

.../org/apache/hadoop/hdds/scm/XceiverClientGrpc.java
68.12% <0.00%> (-5.82%)
38.00% <0.00%> (ø%)

... and 39 more

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 d34ab29...e7c948c. Read the comment docs.

Thanks @cku328 for the improvement and @cxorm for the review.  I have confirmed that @cxorm's wording suggestion is applied, so merging now.


do not log compiler wrapper scripts

introduce an env variable to the logger to log only the execution of elf binaries (gcc, g++ are binaries)
the name of the env variable should be :8ball:
CC_LOG_BIN_ONLY
default 1

An experimental implementation in 949fecc

What is the use case of this feature? Why is it useful?

Currently the build logger logs compiler wrapper scripts also if the name matches to the names defined in the CC_LOGGER_GCC_LIKE environment variable. With this improvement the wrapper scripts will not be logged.

Won't fix.


Fix scenario outline title placeholder to work with autoBindSteps (Fixes #101)

Fixes: https://github.com/bencompton/jest-cucumber/issues/101
I don't know it it's the right way, but now outline scenarios with variables in the name are resolved correctly.

@bencompton could you take a look at this PR because in my projects this bug is blocking us a bit and this fix seems relevant to me.
Best regards.

@pplancq I rebased the fix on the current master and opened a new PR: https://github.com/bencompton/jest-cucumber/pull/142
I also pushed the built files on the dist branch in my fork as before, so you can try installing that and see if it fixes your issue.

Yes, I should have some time to look at this and other PRs later today, although I see this was closed, so not sure if there is additional work being done here.

@bencompton I have created a new PR just now, you probably missed my earlier comment while writing yours :)

@Papooch - currently getting used to the GitHub iOS app and missed your previous comment. Thanks for the new PR! LGTM and merged.


Small suggestion on the decription text 'Your shiny new Scala build tool'

Maybe it's just me, but the phrase Your shiny new Scala build tool makes mill sound like a toy project and it's just being developed for fun.
For me I am really looking forward to this tool going mature and eventually becoming a competitive replacement of sbt, so maybe the word can be less dramatic and point out some real advantages of mill over sbt. It would be great for devs to really try it out and give feedbacks/PRs. Just my two cents. Cheers

Let's continue this discussion in gitter


Revert #8 (DP-1452 fix: Fix invalid breadcrumb url due to sidebar loading)

Summary

What kind of change does this PR introduce?

For any code change,

[ ] Related documentation has been updated if needed
[ ] Related tests have been updated or tests have been added

Does this PR introduce a breaking change? (check one)

[ ] Yes
[ ] No

If yes, please describe the impact and migration path for existing applications:
Related issue, if any:

Tested in the following browsers:

[ ] Chrome
[ ] Firefox
[ ] Safari
[ ] Edge
[ ] IE

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Guard window object access for environments which don't have it

Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch<EMAIL_ADDRESS>for the project I'm working on.
I'm running turndown in a macOS app using JavaScriptCore, which is an environment without a window object. Turndown works great except for one line where it reference the window object. It was a simple fix to add a guard expression.
Here is the diff that solved my problem:
diff --git a/node_modules/turndown/dist/turndown.js b/node_modules/turndown/dist/turndown.js
index 9ea22ec..04d6a6d 100644
--- a/node_modules/turndown/dist/turndown.js
+++ b/node_modules/turndown/dist/turndown.js
@@ -609,7 +609,7 @@ var TurndownService = (function () {
     try {
       document.implementation.createHTMLDocument('').open();
     } catch (e) {
-      if (window.ActiveXObject) useActiveX = true;
+      if (typeof window !== 'undefined' && window.ActiveXObject) useActiveX = true;
     }
     return useActiveX
   }
diff --git a/node_modules/turndown/lib/turndown.browser.cjs.js b/node_modules/turndown/lib/turndown.browser.cjs.js
index a7490d3..16af063 100644
--- a/node_modules/turndown/lib/turndown.browser.cjs.js
+++ b/node_modules/turndown/lib/turndown.browser.cjs.js
@@ -608,7 +608,7 @@ function shouldUseActiveX () {
   try {
     document.implementation.createHTMLDocument('').open();
   } catch (e) {
-    if (window.ActiveXObject) useActiveX = true;
+    if (typeof window !== 'undefined' && window.ActiveXObject) useActiveX = true;
   }
   return useActiveX
 }
diff --git a/node_modules/turndown/lib/turndown.browser.es.js b/node_modules/turndown/lib/turndown.browser.es.js
index f3c118e..6d75f56 100644
--- a/node_modules/turndown/lib/turndown.browser.es.js
+++ b/node_modules/turndown/lib/turndown.browser.es.js
@@ -606,7 +606,7 @@ function shouldUseActiveX () {
   try {
     document.implementation.createHTMLDocument('').open();
   } catch (e) {
-    if (window.ActiveXObject) useActiveX = true;
+    if (typeof window !== 'undefined' && window.ActiveXObject) useActiveX = true;
   }
   return useActiveX
 }
diff --git a/node_modules/turndown/lib/turndown.browser.umd.js b/node_modules/turndown/lib/turndown.browser.umd.js
index a812101..2c6542c 100644
--- a/node_modules/turndown/lib/turndown.browser.umd.js
+++ b/node_modules/turndown/lib/turndown.browser.umd.js
@@ -612,7 +612,7 @@
     try {
       document.implementation.createHTMLDocument('').open();
     } catch (e) {
-      if (window.ActiveXObject) useActiveX = true;
+      if (typeof window !== 'undefined' && window.ActiveXObject) useActiveX = true;
     }
     return useActiveX
   }

This issue body was partially generated by patch-package.

@ccordoui would you accept a PR that fixes this single line preventing Turndown from running in web workers?

@Radiergummi it will patch the case of the undefined window, unfortunately as we don't have access to DOM in a service worker, it would need more work to be fully functional.
I ended up repeating the html to markdown process in all part of my web extension and the service worker only communicate in json.

Turndown can be used in DOM-less environments without further modification by using a DOM library such as linkedom.

Met the same issue when trying to use turndown in a service worker

I have the same issue - I had to fork the library and fix it with:
if (root.ActiveXObject) useActiveX = true;


ANCM V2 - Connection Abort Handling Issue

While ANCM V1 properly handles HttpContext.Abort() and the likes..., ANCM V2 fails and connections are not aborted.

What's the behaviour you expect vs seeing?

Expected:
Connection abort (RST/ACK).
Actual:
In-process returns empty body, out-of-process throws.

Can you provide the app func you are using? In my tests I see resets or 502s.

Just to make sure we're on the same page. This is about the latest bits shipped, which is v2.2.0-preview2 at this time.
Nonetheless, ANCM v2 in-process/out-of-process must reset the connection on abort. ANCM v1 handles it properly for out-of-process and so should ANCM v2 for both, in-process and out-of-process.
public class Startup
{
	public Startup(IHostingEnvironment env)
	{
		HostingEnvironment = env;
	}

	public void ConfigureServices(IServiceCollection services)
	{
		services.AddMvcCore()
			.AddAuthorization()
			.AddRazorPages()
			.AddRazorViewEngine()
			.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
	}
	public void Configure(IApplicationBuilder app)
	{
		app.Use((context, next) =>
		{
			context.Abort();
			return next();
		});
		app.UseMvc();
	}
}

I can't repro the issue using the code you provided. Out-of-proc reliably serves HTTP Error 502.3 - Bad Gateway. Let's see if issue reproes for you after preview3 update.

With 2.2.0-preview3-35497, in-process works, out-of-process still fails to reset the connection and returns
There is a problem with the page you are looking for, and it cannot be displayed. When the Web server (while acting as a gateway or proxy) contacted the upstream content server, it received an invalid response from the content server.```

instead. Since a connection reset is expected (and works in ANCM v1), what's the point of breaking things and serving a 502 instead?

Serving 502 is not breaking, it's a valid response in the situation when the response wasn't started by IIS yet.

@coolcsh @DamianEdwards @davidfowl, It's a breaking change because the connection is reset with ANCM v1 while ANCM v2 now returns HTTP 502. https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.httpcontext.abort clearly states 'Aborts the connection underlying this request.'

How comes it works with ANCM v1 as expected, but no longer with ANCM v2?

ANCM V1 wasn't clever enough to correctly send 502 when the response wasn't started yet.

If the application aborts the request, the expectation is that the connection is reset and no response is returned -- and, by the way, this is how ASP.NET handles it since day one.

Closing, we are not planning to fix this.


Having some problems with the ui

Library information:

Version: 2.5.4
View or Compose module: View

Question:
I am having difficulties with how the ui looks, especially because when i debug the code, everything seems to be in order. This is all the relevant code I think:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        calendarView = view.findViewById(R.id.calendarView)
        val currentMonth = YearMonth.now()
        val startMonth = currentMonth.minusMonths(12)
        val endMonth = currentMonth.plusMonths(0)
        calendarView.setup(startMonth, endMonth, DayOfWeek.MONDAY)
        calendarView.scrollToMonth(currentMonth)

        calendarView.dayBinder = object : MonthDayBinder<DayViewContainer> {
            override fun create(view: View) = DayViewContainer(view, this@CalendarFragment)

            override fun bind(container: DayViewContainer, data: CalendarDay) {
                container.day = data
                container.calendarDayText.text = data.date.dayOfMonth.toString()

                if (data.date == LocalDate.now()) {
                    Timber.d("Today: ${data.date}")
                    container.circle.setColorFilter(
                        ContextCompat.getColor(
                            requireContext(),
                            R.color.primary
                        )
                    )
                    return
                }

                //customise day based on daily streak
                lifecycleScope.launch {
                    val streak = mainViewModel.getStreakForDay(data.date)
                    if (data.position == DayPosition.MonthDate) {
                        if (streak == null) {
                            return@launch
                        }
                        Timber.d("Getting streak for day: ${data.date}")
                        if (streak.status == StreakStatus.ACHIEVED) {
                            container.circle.setImageResource(R.drawable.baseline_check_circle_24)
                            container.circle.setColorFilter(
                                ContextCompat.getColor(
                                    requireContext(),
                                    R.color.my_green2
                                )
                            )
                            container.circle.setBackgroundColor(Color.WHITE)
                        } else if (streak.status == StreakStatus.BROKEN || streak.status == StreakStatus.ONGOING) {
                            container.circle.setImageResource(R.drawable.baseline_cancel_24)
                            container.circle.setColorFilter(
                                ContextCompat.getColor(
                                    requireContext(),
                                    R.color.palet04
                                )
                            )
                            container.circle.setBackgroundColor(Color.WHITE)
                        }
                    } else {
                        container.circle.visibility = View.INVISIBLE
                        //container.calendarDayText.visibility = View.INVISIBLE
                    }
                }
            }
        }

        calendarView.monthHeaderBinder = object : MonthHeaderFooterBinder<MonthViewContainer> {
            override fun create(view: View) = MonthViewContainer(view)
            @SuppressLint("SetTextI18n")
            override fun bind(container: MonthViewContainer, data: CalendarMonth) {
                container.monthShownText.text = """${
                    data.yearMonth.month.getDisplayName(
                        TextStyle.FULL_STANDALONE,
                        Locale.getDefault()
                    )
                } ${data.yearMonth.year}"""
                if (container.titlesContainer.tag == null) {
                    container.titlesContainer.tag = data.yearMonth
                    container.titlesContainer.children.map { it as TextView }
                        .forEachIndexed { index, textView ->
                            val dayOfWeek = daysOfWeek(DayOfWeek.MONDAY)[index]
                            val title = dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.getDefault())
                            textView.text = title
                        }
                }

                container.arrowBack.setOnClickListener {
                    calendarView.smoothScrollToMonth(data.yearMonth.minusMonths(1))
                }
                container.arrowForward.setOnClickListener {
                    calendarView.smoothScrollToMonth(data.yearMonth.plusMonths(1))
                }
            }
        }
    }

This is how my september looks like:

This is all good, I only have those three days when i have any relevant data that should change the grey circle. My problem seems to only happen in 2024 april. April seems to copy September:

I debugged it and april should look completely blank, but for some reason the icons appear in a way that they should appear in september. Also until the 7th field, it seems to think that the days aren't part of april, but outdates, (also copying september). After this, if I go back to september, now the days also only appear in positions that they should in april (it seems to think that the 25th to the 29th is not part of the month):

It is all very weird, and i am very stuck. December of the 2023 is also acting weird:

All these data fields  should be blank circles, (and are blank according to my debugging), but in the ui they seem to confuse themselves with september, and the outDates are messed up as well.
Relevant logs:
Today: 2024-09-04
Getting streak for day: 2024-09-01
Getting streak for day: 2024-09-02
Getting streak for day: 2024-09-03
I would highly appreciate any kind of help. This library is great, thank you for making it!

Two things I see:

Calling lifecycleScope.launch in the bind function will likely lead to errors as these views are reused many times, you need to get all the data needed for each month (maybe using the month scroll listener) and then call notifyMonthChanged to bind the data.
Calling return in the bind method will likely also lead to errors for the same reason above. You need to undo all changes in the view before calling return as the views are reused (remember this is a recycler view). If you show data in 5th June, it is possible that the same view will be used to bind 19th December when the calendar scrolls to December, so you need to remove any decorations not relevant in the new position.

Did what you said and reworked the way I handle fetching the data, and separated it from the bind method and the fragment overall. I also got rid of the returns in the binding. It works now, the icons and the dates are perfect. Thank you very much, much appreciate it!!
This is all I have in the bind now:
    monthCalendarView.dayBinder = object : MonthDayBinder<DayViewContainer> {
        override fun create(view: View) = DayViewContainer(view)
        override fun bind(container: DayViewContainer, data: CalendarDay) {
            container.day = data
            bindDate(data.date, container.textView, data.position == DayPosition.MonthDate)
        }
    }

And this is the bindDate function:
    private fun bindDate(date: LocalDate, textView: TextView, isSelectable: Boolean) {
    textView.text = date.dayOfMonth.toString()
    if (isSelectable) {
        when {
            greenDays.contains(date) -> {
                textView.setTextColorRes(R.color.grey_primary)
                textView.setBackgroundResource(R.drawable.green_circle)
            }
            today == date -> {
                textView.setTextColorRes(R.color.black)
                textView.setBackgroundResource(R.drawable.today_bg)
            }
            redDays.contains(date) -> {
                textView.setTextColorRes(R.color.grey_primary)
                textView.setBackgroundResource(R.drawable.red_circle)
            }
            else -> {
                textView.setTextColorRes(R.color.black)
                textView.background = null
            }
        }
    } else {
        textView.setTextColorRes(R.color.grey_secondary)
        textView.background = null
    }
}

Used the samples as well to structure it all better, great code, great samples!


.eh_frame: Reuse unwind context and reduce copies

of the initial context.
Improvements due to:

avoiding copies of the initial CIE instructions (bytes.Buffer -> bytes.Reader)
fewer Context object allocations
due to the above, GC pressure was considerably reduced, which was the main objective of this changes as Parca Agent's CPU budget for the GC is already too high

resulting in ~4x less allocated memory and improvements in the runtime:
$ go test -v github.com/parca-dev/parca-agent/pkg/stack/unwind -bench=. -count=30

$ benchstat /tmp/main-6ad1efd /tmp/new
name                                 old time/op    new time/op    delta
ParsingLibcUnwindInformation-12        11.5ms ±14%     3.3ms ±17%  -70.82%  (p=0.000 n=26+29)
ParsingRedpandaUnwindInformation-12    66.1ms ±22%    37.7ms ± 2%  -42.99%  (p=0.000 n=30+30)

name                                 old alloc/op   new alloc/op   delta
ParsingLibcUnwindInformation-12        4.63MB ± 0%    1.09MB ± 0%  -76.38%  (p=0.000 n=29+28)
ParsingRedpandaUnwindInformation-12    53.7MB ± 0%    14.1MB ± 0%  -73.78%  (p=0.000 n=30+29)

name                                 old allocs/op  new allocs/op  delta
ParsingLibcUnwindInformation-12         63.9k ± 0%     41.8k ± 0%  -34.58%  (p=0.000 n=30+30)
ParsingRedpandaUnwindInformation-12      783k ± 0%      527k ± 0%  -32.62%  (p=0.000 n=30+30)

Signed-off-by: Francisco Javier Honduvilla Coto<EMAIL_ADDRESS>

Request: If we really want to put those panics there, at least let's put a recover on the top level, return an error, and handle it gracefully. That way, we can have a compromise on this topic.

We currently use panics in table.go in places where a hard assertion makes sense, for example, when we know that some condition is impossible and should never happen.
Tried adding error handling which should probably be done at the iterator level, as it's where we continue parsing DWARF instructions and we may panic:
-func (ici *InstructionContextIterator) Next() *InstructionContext {
+func (ici *InstructionContextIterator) Next() (*InstructionContext, error) {
+       var theError error
+       defer func() {
+               if err := recover(); err != nil {
+                       theError = fmt.Errorf("panic occurred: %v", err)
+               }
+       }()
        for ici.ctx.buf.Len() > 0 {

Unfortunately the added function calls result in a significant regression:
[javierhonduco@fedora parca-agent]$ benchstat  /tmp/new  /tmp/new-catch-panics
name                                 old time/op    new time/op    delta
ParsingLibcUnwindInformation-12        3.34ms ±17%    4.06ms ± 9%  +21.59%  (p=0.000 n=29+30)
ParsingRedpandaUnwindInformation-12    37.7ms ± 2%    57.4ms ±11%  +52.48%  (p=0.000 n=30+30)

name                                 old alloc/op   new alloc/op   delta
ParsingLibcUnwindInformation-12        1.09MB ± 0%    1.09MB ± 0%   +0.00%  (p=0.000 n=28+29)
ParsingRedpandaUnwindInformation-12    14.1MB ± 0%    14.1MB ± 0%   +0.00%  (p=0.000 n=29+30)

name                                 old allocs/op  new allocs/op  delta
ParsingLibcUnwindInformation-12         41.8k ± 0%     41.8k ± 0%     ~     (all equal)
ParsingRedpandaUnwindInformation-12      527k ± 0%      527k ± 0%     ~     (all equal)

A possibility would be moving the recover outside of the parser. We'll have to make sure that we add it in the right places before we call the iterator in a loop. By reducing the cost of defer+ anonymous function to recover + recover() we won't have a regression compared to the original changeset in this PR. What do you think?

Request: If we really want to put those panics there, at least let's put a recover on the top level, return an error, and handle it gracefully. That way, we can have a compromise on this topic.

We currently use panics in table.go in places where a hard assertion makes sense, for example, when we know that some condition is impossible and should never happen.
Tried adding error handling which should probably be done at the iterator level, as it's where we continue parsing DWARF instructions and we may panic:
-func (ici *InstructionContextIterator) Next() *InstructionContext {
+func (ici *InstructionContextIterator) Next() (*InstructionContext, error) {
+       var theError error
+       defer func() {
+               if err := recover(); err != nil {
+                       theError = fmt.Errorf("panic occurred: %v", err)
+               }
+       }()
        for ici.ctx.buf.Len() > 0 {

Unfortunately the added function calls result in a significant regression:
[javierhonduco@fedora parca-agent]$ benchstat  /tmp/new  /tmp/new-catch-panics
name                                 old time/op    new time/op    delta
ParsingLibcUnwindInformation-12        3.34ms ±17%    4.06ms ± 9%  +21.59%  (p=0.000 n=29+30)
ParsingRedpandaUnwindInformation-12    37.7ms ± 2%    57.4ms ±11%  +52.48%  (p=0.000 n=30+30)

name                                 old alloc/op   new alloc/op   delta
ParsingLibcUnwindInformation-12        1.09MB ± 0%    1.09MB ± 0%   +0.00%  (p=0.000 n=28+29)
ParsingRedpandaUnwindInformation-12    14.1MB ± 0%    14.1MB ± 0%   +0.00%  (p=0.000 n=29+30)

name                                 old allocs/op  new allocs/op  delta
ParsingLibcUnwindInformation-12         41.8k ± 0%     41.8k ± 0%     ~     (all equal)
ParsingRedpandaUnwindInformation-12      527k ± 0%      527k ± 0%     ~     (all equal)

A possibility would be moving the recover outside of the parser. We'll have to make sure that we add it in the right places before we call the iterator in a loop. By reducing the cost of defer+ anonymous function to recover + recover() we won't have a regression compared to the original changeset in this PR. What do you think?

💯 Yes, this could be outside the parser itself. Unhandled panics can bring down the whole app, and I don't see a point in stopping the operation for a possibly faulty ELF file. panics are not designed for error handling (they are not exceptions). If a panic occurs, it should be for a stop-the-world scenario. I understand it's very convenient here, so I'm happy to compromise and recover on the call side and let the agent continue profiling the rest of the binaries on the host system.

All seems good:
[javierhonduco@fedora parca-agent]$ benchstat /tmp/main-6ad1efd /tmp/recover
name                                 old time/op    new time/op    delta
ParsingLibcUnwindInformation-12        11.5ms ±14%     3.2ms ±22%  -72.33%  (p=0.000 n=26+30)
ParsingRedpandaUnwindInformation-12    66.1ms ±22%    37.2ms ± 1%  -43.73%  (p=0.000 n=30+26)

name                                 old alloc/op   new alloc/op   delta
ParsingLibcUnwindInformation-12        4.63MB ± 0%    1.09MB ± 0%  -76.38%  (p=0.000 n=29+30)
ParsingRedpandaUnwindInformation-12    53.7MB ± 0%    14.1MB ± 0%  -73.78%  (p=0.000 n=30+29)

name                                 old allocs/op  new allocs/op  delta
ParsingLibcUnwindInformation-12         63.9k ± 0%     41.8k ± 0%  -34.58%  (p=0.000 n=30+30)
ParsingRedpandaUnwindInformation-12      783k ± 0%      527k ± 0%  -32.62%  (p=0.000 n=30+30)


Invalid session value in Tls-Session-Info header

Hi,
I am using mutual TLS (TLS v1.3) authentication with client certificates for one of my pekko http server routes and encounter occasional failures when using Tls-Session-Info header.
For some client connections it returns an invalid session value - Session(1707843603849|SSL_NULL_WITH_NULL_NULL) instead of  Session(1707843600698|TLS_AES_256_GCM_SHA384), so client certificate details can not be extracted for the use in my application.
Here is the simplified route that I am using for the test purposes

    val route =
      headerValueByType [`Tls-Session-Info`](`Tls-Session-Info`) { tlsInfo =>
        path("tls") {
          get {
            println(s"TLS info -${tlsInfo.toString}")
            complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, s"Client certificate - ${tlsInfo.session.getPeerCertificates.head.toString}"))
          }
        }
      }

Log entry for successful connections (200 Status code)
18:13:54.582 [my-system-pekko.actor.default-dispatcher-13] DEBUG org.apache.pekko.io.TcpListener -- New connection accepted
TLS info -Tls-Session-Info: Session(1707844434606|TLS_AES_256_GCM_SHA384)

Log entry for failed connections (500 Status code)
18:16:26.729 [my-system-pekko.actor.default-dispatcher-13] DEBUG org.apache.pekko.io.TcpListener -- New connection accepted
TLS info -Tls-Session-Info: Session(1707844586732|SSL_NULL_WITH_NULL_NULL)
18:16:26.868 [my-system-pekko.actor.default-dispatcher-19] ERROR org.apache.pekko.actor.ActorSystemImpl -- Error during processing of request: 'peer not authenticated'. Completing with 500 Internal Server Error response. To change default exception handling behavior, provide a custom ExceptionHandler.
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
	at java.base/sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:560)

Pekko http client is used as client.
Versions of software used:
pekko-http - 1.0.1
pekko-actor-typed - 1.0.2
pekko-stream - 1.0.2
scala - 2.13.12
openjdk - 11.0.22

This looks like https://github.com/akka/akka-http/issues/3920
Unfortunately, the fix was committed to akka-http after they made their license change. We may need to do a clean room change because we can't copy akka-http changes that are made to releases that are not Apache licensed.

@randomkoder Thanks for reporting this. Is there any chance that you can could try using TLS v1.2 to see if things are more stable there? We will look at this issue but we may not be able to get a fix out for a few weeks.

Thanks for your quick response! I've tried with TLS v1.2 (explicitly enabling it both on client and server sides) and could not reproduce the issue.

We have a change in pekko-stream jar - v1.1.0-M1 - that should fix this.


Generated HarfBuzz API is not idiomatic C#

The generated types are still in C coding style (snake case) convert them to use pascal case.

HarfBuzz is not an idiomatic gir file in itself as for example records are named in snake case. Trying to fix this would not be worthwhile as we just use the type names provided in the gir file.
Fixing this would be part of the HarfBuzz project as they could generate a gir file which adheres to the common naming guidelines of GObject.


can't download image from link

Good afternoon dear friends!
I’m trying to create a session, but using an open link on Yandex or Google Drive, your service does not download the image, how can I solve this problem?
400 Bad Request: "{"statusCode":400,"message":"Invalid status: current status is upload_failed","data":{}}"

https://docs.csm.ai/Image-to-3d/1_Create_Session

issue unrelated to nextra


terminating, wrongly, after 5 minutes

not all the requests are being performed... it stops at 5minutes
(I used the latest binary 2.0.0-rc1x available at https://github.com/goadapp/goad/releases )
$ ~/Downloads/goad -n 1000000 https://<removed>/
Regional results

Region: us-east-1
   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
     10327     420 MB     0.086s      34.42 1401038.50
   Slowest    Fastest   Timeouts  TotErrors
    0.540s     0.075s          0          0
Region: eu-west-1
   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
      9999     407 MB     0.088s      33.23 1352875.75
   Slowest    Fastest   Timeouts  TotErrors
    0.570s     0.078s          0          0
Region: ap-northeast-1
   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
     10497     427 MB     0.084s      34.96 1423353.75
   Slowest    Fastest   Timeouts  TotErrors
    1.177s     0.073s          0          0

Overall

   TotReqs   TotBytes    AvgTime   AvgReq/s  AvgKbps/s
     30823     1.3 GB     0.086s     102.61 4177268.00
   Slowest    Fastest   Timeouts  TotErrors
    1.177s     0.073s          0          0
HTTPStatus   Requests
       200      30823

@zeph have you checked the IAM role in your account? I'm just running the specified version of goad for more then 10 minutes without any trouble, still receiving data from the lambda functions.
Also note that if you're experiencing connection losses or spikes of more then 15 seconds the cli aborts.

Ah it seems like it's not working when we launch the lambda function for the second time at the 10 minute barrier... That's rare...

seems still occurring
$ time ~/Downloads/goad -n 100000 https://<url>/
Regional results

Region: ap-northeast-1
   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
     10517     428 MB     0.084s      35.06     1.4 MB/s
   Slowest    Fastest   Timeouts  TotErrors
    1.172s     0.077s          0          0
Region: eu-west-1
   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
     10416     424 MB     0.085s      34.61     1.4 MB/s
   Slowest    Fastest   Timeouts  TotErrors
    0.559s     0.078s          0          0
Region: us-east-1
   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
     10267     418 MB     0.086s      34.14     1.4 MB/s
   Slowest    Fastest   Timeouts  TotErrors
    0.574s     0.074s          0          0

Overall

   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
     31200     1.3 GB     0.085s     103.81     4.2 MB/s
   Slowest    Fastest   Timeouts  TotErrors
    1.172s     0.074s          0          0
HTTPStatus   Requests
       200      31200

real	5m35.390s
user	0m3.855s
sys	0m0.545s

@cwaltken-edrans IAM updated but... count != total
$ time ~/Downloads/goad -n 100000 https://<url>
Regional results

Region: ap-northeast-1
   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
     17143     698 MB     0.159s      25.33     1.0 MB/s
   Slowest    Fastest   Timeouts  TotErrors
    1.519s     0.074s          0          0
Region: eu-west-1
   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
     33333     1.4 GB     0.031s     325.14      13 MB/s
   Slowest    Fastest   Timeouts  TotErrors
    0.584s     0.003s          0          0
Region: us-east-1
   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
     31544     1.3 GB     0.087s      33.99     1.4 MB/s
   Slowest    Fastest   Timeouts  TotErrors
    0.622s     0.074s          0          0

Overall

   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
     82020     3.3 GB     0.079s     384.47      16 MB/s
   Slowest    Fastest   Timeouts  TotErrors
    1.519s     0.003s          0          0
HTTPStatus   Requests
       200      82020

real	25m0.538s
user	0m1.859s
sys	0m0.467s

p.s. I left it running while I left the workstation, might be also terminating due to the laptop going in freeze (it shouldn't do it.. but ok... )

closing
$ time ~/Downloads/goad -n 100000 https://<url>/
Regional results

Region: eu-west-1
   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
     33333     1.4 GB     0.031s     291.91      12 MB/s
   Slowest    Fastest   Timeouts  TotErrors
    1.051s     0.003s          0          0
Region: ap-northeast-1
   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
     33334     1.4 GB     0.212s      17.90     728 kB/s
   Slowest    Fastest   Timeouts  TotErrors
    1.582s     0.069s          0          1
Region: us-east-1
   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
     33333     1.4 GB     0.085s      34.77     1.4 MB/s
   Slowest    Fastest   Timeouts  TotErrors
    1.213s     0.069s          0          0

Overall

   TotReqs   TotBytes    AvgTime    AvgReq/s  AvgBytes/s
    100000     4.1 GB     0.109s     344.57      14 MB/s
   Slowest    Fastest   Timeouts  TotErrors
    1.582s     0.003s          0          1
HTTPStatus   Requests
       200      99999
       408          1

real	40m33.286s
user	0m3.980s
sys	0m0.870s

I'm seeing a similar issue.  The application continues to function beyond the 5 minute window, but starts receiving 401 errors at the 5 minute mark (every test).  I'm passing an authorization header (-H 'Authorization: bearer <>' on the command line.  It works for 5 minutes, then starts failing with 401.  It seems like it no longer sends the header token after this amount of time.  Do you have any thoughts regarding this issue?

Might be that the authorization header is not passed correctly to the
invoked lambda function.
Lambda functions have a maximum lifetime of 5 minutes. To circumvent that
goad launches a followup lambda function when reaching the time-limit. The
error is probably located there and should be easy to fix.
On Thu, Aug 23, 2018 at 4:29 PM Craig Kennedy<EMAIL_ADDRESS>wrote:

I'm seeing a similar issue. The application continues to function beyond
the 5 minute window, but starts receiving 401 errors at the 5 minute mark
(every test). I'm passing an authorization header (-H 'Authorization:
bearer <>' on the command line. It works for 5 minutes, then starts failing
with 401. It seems like it no longer sends the header token after this
amount of time. Do you have any thoughts regarding this issue?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/goadapp/goad/issues/142#issuecomment-415542540, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AaaDsSP-Yvh56rE7EI8fPgTDe5rI7VgFks5uTwKwgaJpZM4OVW0N
.

--
Dipl. Inf. Clemens Wältken
Software Engineering - www.edrans.com


Planning state events

Currently no external hooks/callbacks for this.

Was previously under 'Custom goal selection strategy'; the intention here was to emit events to give more controls to the user - be it for customizing the integration, or maybe to build statistics


Viewport Texture generate mipmaps ignored

Note: This issue has been confirmed several times already. No need to confirm it further.

Not sure if that's expected behavior but Im using the viewport texture on sprite and I tried to use textureLod(...) so I could get blurry version of that and it doesn't work. Setting flags in editor doesn't help either.
Any workarounds to force generating Lods from Viewport Texture? something like in SCREEN_TEXTURE that has Lods

Which Godot version and (if 3.1) renderer?

it's 3.1 and gles3

Imho this would be expected. The viewport is a render buffer to which you render an output. You can't just add mipmaps to it without breaking the render buffer. I could be wrong though :)
A work around would be to extract the image data to create a new image and add mipmaps to that. Something like:
var source_image = $viewport.get_texture().$get_data()
var copied_image = Image().copy_from(source_image)
copied_image.generate_mipmap()
var new_texture = TextureImage.create_from_image(copied_image)

there are probably typos in the above but hopefully it'll point you into the right direction

I'm trying to get mipmaps to work on a viewport texture as well, I'm rendering to a large Image and scaling it down, but there is the usual pixel artefacts due to nearest neighbour.
Would be nice if there's a way to generate mipmaps without creating an Image and reading it's texture every frame.

A work around would be to extract the image data to create a new image and add mipmaps to that. Something like:
var source_image = $viewport.get_texture().$get_data()
var copied_image = Image().copy_from(source_image)
copied_image.generate_mipmap()
var new_texture = ImageTexture.create_from_image(copied_image)

there are probably typos in the above but hopefully it'll point you into the right direction

It seems to be enough to create an Image texture from the source image:
new_texture = ImageTexture.new()
new_texture.create_from_image(viewport.get_texture().get_data())

But this is not a really a practicable solution for frequent updates because as expected it's super slow even with a small texture and things like update when visible also doesn't work.
Would nice to have a solution/option for that, viewports  are useful for many purposes like the procedural ripples above.

reduz has said that we won't be adding mipmaps to SCREEN_TEXTURE here: https://github.com/godotengine/godot/pull/26044. I think the same reasoning probably applies to adding mip maps to viewport textures.

+1 this is needed for many custom post processing effects (if implemented as per the method here: https://docs.godotengine.org/en/3.1/tutorials/viewports/custom_postprocessing.html )
Examples of such effects:

Auto HDR / auto white balance
Anything with blurs (DOF, bloom etc. etc.)

In my mind I'd like to see a "generate_mips" checkbox on the viewport node so we can control if they are generated or not.
I'd also like to see the option to sample viewport textures with something other than GL_NEAREST

Just ran into this. Using mipmaps for a quick and dirty glow effect that runs super fast on crappy old laptops (unlike the built-in glow, which drops my frame rate to single digits when in full screen).
Let me add a little wrinkle to it: clicking the "Mipmaps" checkbox on and off causes it to work, but only in GLES2 and in the editor (3.1.1, macOS)... it's still broken when I launch the game.
(Took me forever to find out why the exported game looked different than the editor!)

By the way, the related bugs seem to imply that viewport mipmaps work in GLES 3, but not 2. That's not the case, I can't get them to work consistently either way (GLES 2 works in the editor, but not standalone. GLES 3 doesn't work either way).
I don't care much if in the end it doesn't work in GLES2, but I feel it should work as expected for GLES3.
Thanks!

Can anyone still reproduce this bug in Godot 3.2.3 or any later release?
If yes, please ensure that an up-to-date Minimal Reproduction Project (MRP) is included in this report (a MRP is a zipped Godot project with the minimal elements necessary to reliably trigger the bug). You can upload ZIP files in an issue comment with a drag and drop.

@KoBeWi I can confirm the bug persists in 3.2.3. I'm "working-arounding" it by reading the screen texture but it would be totally unnecessary and probably will not fix every case of use for this.
It's very important to many post process effects and FX. Thanks for the interest in fix it.
Here's a reproductible project.
GodotBug.zip

This most likely can't be fixed in the 3.2 branch, only in master with some kind of fast filtering implementation (as is already used in sky shaders): https://github.com/godotengine/godot/issues/23417#issuecomment-471230124

This most likely can't be fixed in the 3.2 branch, only in master with some kind of fast filtering implementation (as is already used in sky shaders): #23417 (comment)

Hi @Calinou.
The pointed problem is that SCREEN_TEXTURE don't have mipmaps in OpenGL2.0 (it has is OpenGL3.0 and it's working as you can check in the demo i posted above) this thread is about access mipmaps in viewport textures in OpenGL 3.0. How those are related?

A work around would be to extract the image data to create a new image and add mipmaps to that.

This doesn't work in func _ready() (although it does work when called in a button handler). I verified this by saving the extracted Image to a png and viewing it in Gimp. Is it that the viewport gets added to the tree (and _ready() is called) before the Viewport is rendered? If that's the case, how would you go about solving this chicken and egg problem?

This doesn't work in func _ready() (although it does work when called in a button handler). I verified this by saving the extracted Image to a png and viewing it in Gimp.

It will probably work if you defer this by one frame using call_deferred() or yield(get_tree(), "idle_frame") (then placing your code after that yield()).

It's possible that you may even need to defer this by two frames by calling yield() twice in succession.

I had to wait two frames, yeah.
func _ready():
    #call_deferred("tex_stuff")         # didn't work
    yield(get_tree(), "idle_frame")     # didn't work with a single yield
    yield(get_tree(), "idle_frame")     # double yield worked
    tex_stuff()

Confirmed in v3.4.3 estable

Not wanting to beat on dead horses... but this is still a very annoying issue for all kind of vfx.

@RPicster Please don't bump issues without contributing significant new information. Use the :+1: reaction button on the first post instead.

Sorry to bump such an old issue, but even today in v4.3.stable.mono.official [77dcf97d8] I'm still encountering this issue. Trying to use a ViewportTexture on a Sprite3D node and I can't seem to get mipmaps no matter what settings I modify. The above workaround is way too slow for practical use.

Something like https://github.com/godotengine/godot-proposals/issues/10096 should improve the appearance of ViewportTextures without mipmaps significantly, especially at intermediate distances. Proper mipmaps are still preferable at far distances still.

Something like godotengine/godot-proposals#10096 should improve the appearance of ViewportTextures without mipmaps significantly, especially at intermediate distances. Proper mipmaps are still preferable at far distances still.
Using TAA or FSR2 will also improve the appearance of textures without mipmaps (with or without texture supersampling), as the temporal nature of these antialiasing algorithms works out nicely here.
This can already be implemented with a custom shader by converting a BaseMaterial3D to a ShaderMaterial and using the RGSS sampling code from Calinou@basematerial3d-add-rgss.

For me personally, the mipmaps are mostly needed for vfx/shaders, e.g. using it for a blur.


Suggestion : enhance plugin with file upload support

For my project I added some lines to support file upload:
. first check if 'FormData' is supported
. if supported : use specific request definition (contentType has to be set to 'false')
. if not supported : use original request definition (contentType can not be set to 'false')
if(typeof FormData === 'function'){
	// file upload supported
    var request = {
    	url: $form.prop('action'),
        data: new FormData($form[0]),
        type: $form.prop('method'),
        async: false,
        cache: false,
        contentType: false,
        enctype: 'multipart/form-data',
        processData: false
    };
}else{
	// file upload not supported
    var request = {
        url: $form.prop('action'),
        data: $form.serialize(),
        type: $form.prop('method')
    };
}

If someone is aware of existing issues for this implementation, I would be glad to hear.

I just tried this as well and it seems to work. Are there any issues that come with this? Otherwise how about a pull request @VD17593 ?


Reduce onboarding complexity by replacing dependency on yarn

Describe the bug
This issue reflects some conversation on our support thread and with @dbjorge
yarn is a an undocumented dependency of the Azure DevOps extension task. This is because the task installs its dependencies at runtime using the yarn package manager. While Microsoft hosted pool agents include yarn by default, some build environments don't have yarn installed. This increases onboarding complexity because users need to debug the error and add yarn to their pipeline themselves.
Users also need node >= 10.x. This is because the puppeteer install script (and perhaps others) run 'node install.js'. The ADO task execution handler runs node10 but installing node6 for example, may prefix the PATH and fail - puppeteer uses async syntax which isn't supported until 10.x.
Constraints
We install dependencies at runtime instead of pre-building them for a few reasons:

VSIX files have a maximum size limit of 50 MB. The documentation suggests a mitigation: "Fetch things at runtime or during install time rather than providing it within the package."
Some deps like puppeteer have different postinstall steps based on the OS platform; we might need to create and maintain several bundles

Current approach
We maintain a yarn.lock file that represents the required runtime dependencies. We assume yarn exists on the build agent and invoke yarn install towards the beginning of task execution.
Possible improvements

[ ] #1123
ADO documentation also suggests "Consider using the tool installer lib to pull tool dependencies at runtime. Using the lib offers benefits where the tool is cached by version so for private agents, it won't get downloaded every build. We made it a lib so it can be used outside of tool installer tasks. But, the task won't work in disconnected scenarios (no internet), which should be in the description / docs for the task." See if leveraging the tool installer lib (sample here) would help us.
Switch from yarn to npm for runtime-installation since npm will exist more often in node environments than yarn will. We don't use npm for our own local development yet because of issues like https://github.com/npm/cli/issues/4232#issuecomment-1034240038 - we need override behavior. If we take this approach, Dan suggests converting our yarn.lock file to package-lock.json using something like https://github.com/imsnif/synp.
...others?

We split this into 2 issues to track adding documentation as an initial 'go-do' task Add the yarn tooling requirement to our documentation (easy to do) #1123.
Second, we flagged this original thread as "await community interest" to track if this yarn-dependency is prevalent across other teams trying to onboard.

I'm moving this from "await community interest" back to "ready for triage" based on several recent support threads that were challenging to debug which occurred because of this issue. Besides increasing the amount of steps required to onboard, it makes it easy to introduce very confusing issues - for example, mis-ordering a yarn install vs node install step can cause different parts of the task to end up using different node versions in ways that aren't obvious.

To add another observation, windows-latest and ubuntu-latest are now on Node v18. This means we have also seen more users needing to add the NodeTool step to target Node 16. Since Node often comes packaged with npm, I'm curious if the option to switch from yarn to node would help reduce onboarding complexity.


Is it possible to programmatically create "Implicit" deep links?

I have researched a lot and explored API as well but just can't make it work. The situation, I have is that we have dynamic schemes so I can't make it hardcoded in the graph xml.
Is it possible to programmatically define those implicit deep links for each destination?
I know it is easy to do so for explicit ones. Also, noticed that addDeeplink(String uriPattern) was added in latest alpha version. Is it something that can be used?
A sample code could be very helpful especially using nav controller and destination.

Thanks for reporting this and the feedback!
I'm closing this issue because this forum is for issues with the codelab. I see you also reported in the issue tracker  - that is the correct place to give this kind of feedback. If you didn't see, this was marked as a dup of https://issuetracker.google.com/issues/110237825