Fix assignments in array literals

When assigning inside an array literal, the compiler issues a weird error that doesn't make sense from the code presented to the user:
[c = 3]
c # Semantic Error: read before definition of 'c'

The reason for this is that the above code actually expands to this:
::Array(typeof(c = 3)).build(1) do |__temp|
  __temp[0] = c = 3
  1
end
c

So c is declared inside the build block and not visible in the original scope.
This patch changes array literal expansion to unwrap the behaviour of Array.build into the current scope.
Our code example now expands to this:
__temp = ::Array(typeof(c = 3)).unsafe_build(1)
__temp.to_unsafe[0] = c = 3
c

A necessary change to stdlib's Array class is the new undocumented constructor unsafe_build which initializes the buffer and sets size to capacity.
To enable smooth progression between Crystal releases, Array.unsafe_build should be merged alone and the compiler change can follow after the next release.
Also adds codegen specs for assigning in array-like, hash-like and hash literals. They are already working correctly because there's no additional scope introduced.
Resolves #3195

EDIT: Original proposal was this, has been changed to the above during the course of the discussion.
__temp = ::Array(typeof(c = 3)).new(1)
__temp.to_unsafe[0] = c = 3
__temp.size = 1
c

We only need a tiny change in stdlib because Array#size= is protected but we need to call it from outside (Array.build calls it internally). The method is undocumented but to avoid accidental calls, I named the public method unsafe_size=.
size= can probably be removed, but that's left for later to ensure backwards compatibility.

I kind of dislike exposing setting the size of an array, even if it's undocumented.
That said, anyone could reopen array and do the same so maybe this is fine.

Maybe a different expansion would another alternative for this
a = [1, b = 2, c = 3, 4]
c

Introducing temp variables for each element.
%e0 = 1
%e1 = b = 2
%e2 = c = 3
%e3 = 4
a = ::Array(typeof(c = 3)).build(1) do |__temp|
  __temp[0] = %e0
  __temp[1] = %e1
  __temp[2] = %e2
  __temp[2] = %e3
  1
end
c

won't work if the assignment is nested even deeper

I thought we could keep it simple and avoid all those additional temp variables and block. This works:
__temp_2 = ::Array(typeof(c = 3)).new(1, __temp_2 = uninitialized typeof(c = 3)
__temp_2.to_unsafe[0] = c = 3
__temp_2

But it seems I've hit some unrelated compiler bug with this: #10018

We could skip that uninitialized default value and either use an actual value or add an undocumented Array constructor that sets @size = @capacity. The latter is probably best becaus it avoids unnecessary initialization of the buffer.

This should be good now 👍
The literal now expands to:
__temp = ::Array(typeof(c = 3)).unsafe_build(1)
__temp.to_unsafe[0] = c = 3
c

I've updated the original description.

I just realized yesterday that instead of introducing Array.unsafe_build we could have just used Array.build(size) { size } 🤦
We could probably refactor that and remove unsafe_build. It's not public API, so it can be done quickly.


Add inline for effective sample size calculations

Summary:
The effective sample size functions should be declared inline to allow use in multiple translation units.  Same for our other posterior analysis functions like autocorrelation, R-hat, etc.
Originally requested by Tal Kedar:  http://discourse.mc-stan.org/t/duplicate-symbols-error-for-compute-effective-sample-size-hpp/5188
Description:
This won't affect size of any Stan executables, but will make it possible to use the functions in multiple translation units.
Current Version:
v2.18.0

There is a merged PR #2622, should this be closed?


Looking for a sample Ops Manager config file for AWS

Hi Team, Is there a sample ops manager sample file available?
Thanks,
Chandan

Which config file are you referring to?

Hi @jtarchie I am looking for a config file for configure-ops man

Configuring OpsMan is not IAAS specific. An example of the config file is at the bottom of that page.


Ability to enlarge an image (not zoom in) or fix the default image display size (for small images)

Is your feature request related to a problem? Please describe.
The images i was annotating is very small (80*60) and the display is showing that size, which is too small to do comfortably

I'm not sure if I miss anything but I have tried changing the config according to this page

Still, the setting here still did not satisfy what I want, for example, all the zoom option 'zoom in' the image instead of enlarge it.
Describe the solution you'd like
The config setting to enlarge the image (not zoom in)
Describe alternatives you've considered
A default display image size (in case of small or very large image)
Additional context
It was hard to work with in case of labelling or segmenting small or very large image

@wanburana Try to combine width, maxWidth and zoom options:
<View>
<Image name="image" value="$image"
         zoom="true" zoomBy="1.1" zoomControl="true"
         maxWidth="800px" width="800px" />
  <RectangleLabels name="label" toName="image">
    <Label value="Airplane" background="green"/>
    <Label value="Car" background="blue"/>
  </RectangleLabels>
</View>

Hope this helps.

@wanburana Try to combine width, maxWidth and zoom options:
<View>
<Image name="image" value="$image"
         zoom="true" zoomBy="1.1" zoomControl="true"
         maxWidth="800px" width="800px" />
  <RectangleLabels name="label" toName="image">
    <Label value="Airplane" background="green"/>
    <Label value="Car" background="blue"/>
  </RectangleLabels>
</View>

Hope this helps.

yep, it worked!, thank you~


fix(html): import expression in classic script for dev

Description
This PR includes changes from #14592 (otherwise, the tests fail)
Support for import expressions in classic script (added by #6525) was not working for dev.
This PR fixes that.
This bug was found at https://github.com/vitejs/vite/pull/5657#discussion_r1327973252.
Additional context

What is the purpose of this pull request?

[x] Bug fix
[ ] New Feature
[ ] Documentation update
[ ] Other

Before submitting the PR, please make sure you do the following

[x] Read the Contributing Guidelines.
[x] Read the Pull Request Guidelines and follow the PR Title Convention.
[x] Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
[x] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
[x] Ideally, include relevant tests that fail without this PR but pass with it.

Rebased on main to resolve conflict with https://github.com/vitejs/vite/pull/14592.


Setting your base for a logarithmic scale

Is there a way to set the base for a logarithmic scale?  d3's log scale usually relies on you to be able to set your base, (for example, d3.scaleLog().base(2)).  Is there a way to set how your log scale is based?

There is not currently a way to do that. This could either be done by introducing a new log scale types, ( like log2, log (e), 10) or adding a top level prop like xScaleLogBase. I think the former will have a lower code foot print. I'd welcome a PR to this effect if you feel motivated to do so


Failed to Install RiderLink Plugin

Uninstalled Rider for Unreal Engine 2020.2.2
Removed AppData/Local/JetBrains and AppData/Roaming/JetBrains folders
Removed Program Files/JetBrains
Fresh, clean install of Rider for Unreal 2020.3
Upgraded to UnrealLink 2020.3.116
Restarted Rider
Created a brand new C++ project in Unreal 4.25.4 (Epic)
RiderLink fails to install to Engine
Attached entire log directory
log.zip

have the same probleam here. With unreal 4.24.
was success install UnrealLink on 2020.2.2.
But failed on 2020.3

Hello @Corysia @luckscx !
Would you be so kind to:

backup old RiderLink folder
Find {Rider_Install_Location}\plugins\UnrealLink\EditorPlugin\RiderLink.zip
Unzip it in place of old Rider
or
Unzip it in {Game_Project}\Plugins\RiderLink
Rebuild your game project
And share your results, please!

I was not able to add it to the Engine.  It wanted me to recompile from source, which isn't something I'm set up to do right now.
I tried adding it to my Game by creating /Plugins/RiderLink.  Upon opening the project, it wanted to recompile.  That went fine.
Opening Rider, it again complains I don't have RiderLink installed.  I checked my plugins, it is not listed.  I tried to install to Game and again it failed.

i ha the same issue, just i fixed it by delete the entire folder then reopen rider and make a new install of it.

I've tried deleting everything...  Uninstalling Unreal, uninstalling Rider.  Combing thru AppData/Local and AppData/Roaming and removing anything related to Epic and JetBrains.  Reinstalled Unreal.  Created a new, blank C++ project in Unreal 4.25.4.  Installed Rider.  Pointed Unreal at Rider.  Built Rider project files.  Opened Rider.  Prompted to install Plugin.  And the same error.
At this point, if I could downgrade, I would.

I tried adding it to my Game by creating /Plugins/RiderLink. Upon opening the project in Unreal, it wanted to recompile. That went fine.

Refresh project files for game project after that. Either from Unreal Edtior, or from context menu of .uproject file.
Rider can't find installed RiderLink because there's no info about the plugins in project files.
As for "why Rider couldn't install RiderLink itself" - there should have been a popup after failed installation with these lines:
C:/Epic/UE_4.25/Engine/Plugins/Marketplace/Debug/Source/Debug/Public/DebugLogLibrarySettings.h(77) : LogUObjectHash: Error: Ambiguous path search, could be Enum /Script/DebugTools.EDebugLogType or Enum /Script/Debug.EDebugLogType
  C:/Epic/UE_4.25/Engine/Plugins/Marketplace/OWIEnhancedVehicleMovement/Source/OWIEnhancedVehicleMovement/Public/OWIVehicleMovementComponent.h(63) : LogCompile: Error: An explicit Category specifier is required for any property exposed to the editor or Blueprints in an Engine module.

When installinig plugin, Rider uses guidlines from Epic Games Store marketplace, they might be more strict than your locally setup rules for game project, but they guarantee that this plugin will work inside Unreal Engine after installation.

I think something is busted with the plugin.
The RD.Build.cs is referencing an include directory, which doesn't exist:
C:\Data\Projects\Unreal\DayDream1\Plugins\Developer\RiderLink\Source\RD\RD.Build.cs: warning: Referenced directory 'C:\Data\Projects\Unreal\DayDream1\Plugins\Developer\RiderLink\Source\RD\include' does not exist.
There is no "include" directory in the source tree under RD.
Everything under that fails to compile.
I'm going back to .83
That seems to compile ok

@ahrenm have you tried backuping old version of RiderLink and installing it afresh?
Looks like there's a bug in "update plugin" pipeline that I'm investigating.

Yup.
A clean install of .83 works. I think I tried 113 and that was also not compiling.

I tried adding it to my Game by creating /Plugins/RiderLink. Upon opening the project in Unreal, it wanted to recompile. That went fine.

Refresh project files for game project after that. Either from Unreal Edtior, or from context menu of .uproject file.
Rider can't find installed RiderLink because there's no info about the plugins in project files.
As for "why Rider couldn't install RiderLink itself", you've got problems with locally installed plugin named Debug, there should have been a popup inside Rider after failed installation of RiderLink with these lines:
C:/Epic/UE_4.25/Engine/Plugins/Marketplace/Debug/Source/Debug/Public/DebugLogLibrarySettings.h(77) : LogUObjectHash: Error: Ambiguous path search, could be Enum /Script/DebugTools.EDebugLogType or Enum /Script/Debug.EDebugLogType
  C:/Epic/UE_4.25/Engine/Plugins/Marketplace/OWIEnhancedVehicleMovement/Source/OWIEnhancedVehicleMovement/Public/OWIVehicleMovementComponent.h(63) : LogCompile: Error: An explicit Category specifier is required for any property exposed to the editor or Blueprints in an Engine module.

When installinig plugin, Rider uses guidlines from Epic Games Store marketplace, they might be more strict than your locally setup rules for game project, but they guarantee that this plugin will work inside Unreal Engine after installation.

Wow, you were absolutely right.  Removing that plugin resolved this.  That's unfortunate, since it's a plugin from the Unreal Marketplace, so I assumed it would have followed the guidelines.  Thanks so much for finding that.  I'm embarrassed now!


Question: Is there an icon for the TwoPaneView?

I can't find an icon for the TwoPaneView.
Is there one?
I also can't find an issue tracking this (and other controls) missing icons? Is there one? Or is this not something that's going to be done? (I'd expect it to be part of a checklist for [new] controls)

The answer to @mrlacey's original question is "no, there is no icon". I've internally escalated fixing #358 to add a TwoPaneView sample to the Gallery so I'm closing this issue.
In the short term, I would recommend using the SplitView icon which is what I expect the TwoPaneView icon to look like.


Minor improvements in alight.f$ rawAjax method

Hi,
it would be great to improve the rawAjax method of alight.f$ with the following to allow sending data, e.g. form data:
var request = new XMLHttpRequest();
request.open(args.type || 'GET', args.url, true, args.username, args.password);
for(var i in args.headers) request.setRequestHeader(i, args.headers[i]);
request.send(args.data || null);

as well as the jQuery fallback:
$.ajax({
  url: args.url,
  type: args.type || 'GET',
  headers: data.headers || {},
  data: args.data,
  username: args.username,
  password: args.password
})

This allows

custom request headers
payload
http authentication
and would prevent including another big javascript library or writing many lines of redundant code.

More complex structure does it not handle, but i think it is a useful improvement to allow basic communication with a server.
Questions:

why is f$ written in javascript and not in coffeescript?
do you prefer github pull requests for such minor code changes?

Done.
I thought, it was going to have different tricks which could look bad in CS, but I was wrong, CS is suitable for fquery.
Any way is ok, you can send "pull requests" if you want.

Thank you.
Can you release your changes for the bower repository please? :-)
Optionally: might it be possible to automate the release process?

done.
alight bower is built by one click, i don't do this every time because it is like dev-version.


Unable to delete machines after upgrading to 5.63.4224

I'm unable to delete machines out of my munkireport instance. I get an error of Unsupported HTTP method after running https://munkireport.fqdn.com/index.php?/manager/delete_machine/SERIAL_NUMBER

Seeing the same thing - I posted to Slack, too. We recently switched to SSO for authentication, so I'm not sure if that's related. @froggtech, which authentication mode are you using?
I tried clearing caches in Safari, but no luck. I also tried Firefox, which I've configured to not cache at all, but that's not working either.

@flammable I'm currently using local authentication. I've tried both Safari and Chrome to no avail.

Strangely, I can delete machines in my other MunkiReport instance. There, I'm using Docker and local authentication. Maybe it's a difference in PHP versions?

Do you use the API to delete machines? You need to send a DELETE request instead of GET

Nope, just the web interface in both instances.

Same here. Just the web interface.

Could you check the web console when attempting to delete a machine, I wonder what the server response is. Best done with DEBUG=TRUE in .env

Here's what I see in Safari's web console - it seems to be the same output if I have debug mode enabled or not.

Which webserver are you using? It seems that the IIS WebDav module can intercept the DELETE request.
Sent from my iPhone

On 10 Aug 2020, at 22:48, Mike Solin<EMAIL_ADDRESS>wrote:

Here's what I see in Safari's web console - it seems to be the same output if I have debug mode enabled or not.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Thanks! I am indeed using IIS. I'll check things out in the morning and see if uninstalling the WebDAV stuff fixes the issue.

Ah nuts, I don't have WebDAV enabled. I followed steps 1 and 2 in this guide, but neither were selected. Is there anything else that could affect this?
I really need to move MunkiReport to another web server.

I'm seeing the following in Chrome. We are using SSO and have an Apache web server.

And the following when I drill into it:
{error: "Unsupported HTTP Method."}
error: "Unsupported HTTP Method."

Oddly enough this started working in a private browsing session so perhaps it's a browser cache issue?

Hey @bochoven, is there another way I can delete machines from MunkiReport without using the web interface? We're doing some large computer lab replacements, and having the old machines in our database is causing some confusion.
Thanks!

Just want to inform that on my dev environment I could delete machines from the web interface. I use Docker and a separate mysql container.

Me too. I've had success with my home environment, which is based around Docker containers for MunkiReport and MySQL. That said, this is still happening for me in my work environment - where MunkiReport is running in IIS and PHP/MySQL are installed locally in the Windows VM.
Long-term, I'm hoping to utilize Docker/Kubernetes at work, but for now, I'm not sure what I can do about this.

Update: I retired our IIS server this week in favor of a Docker container running in Azure, so this is no longer an issue for me. 😎


feat: 3505 - packagingsComplete toggle and packagings edit bug fixes

Impacted files:

app_en.arb: added a label about "packaging complete"
background_task_details.dart: added field packagingComplete
edit_new_packagings.dart: added a packagingComplete editor; fixed a bug by populating the controllers at init time and not on demand; now disposes the controllers; aligned the titles
product_query.dart: added field PACKAGINGS_COMPLETE
up_to_date_changes.dart: added field packagingComplete

What

Added the packagingsComplete toggle in the new structured packagings page.
Also fixed a bug about saving the correct packagingS data, with a better management of controllers.

Screenshot

Fixes bug(s)

Closes: #3505
Fixes: #3506

@teolemon Thank you for the review!

On/Off Toggles are slightly more enjoyable but LGTM

Indeed but that was not possible, as we need to deal with the null value when packagingComplete is not populated.
Unless you find an icon for indeterminate toggle.


Updated docs for new lib requirement.

Since bringing some extra requirements for the OIC extension, we need some extra low-level libraries to make it compile. We've hit this issue already in #484.
This updates the documentation to include the required package for ubuntu. I'll open an issue to update the docker configs as well.

+1


Update navbar transition for iOS

Short description of what this resolves:
Update page transition
Changes proposed in this pull request:

Better animation when we don't have nav bar in both leaving view and entering view

Ionic Version:  2.x
Fixes: #

apply animation on enteringNavBar instead of enteringNavbarBg when current view does not have navbar and entering view has navbar
apply animation on leavingNavBar instead of leavingNavbarBg when current view has navbar and entering view does not have navbar

This will not transition well when going between two different colors of navbars. Could you describe more of why this is required?

The current transition is not good in iOS if the leaving page does not have navbar && the entering page has navbar && entering page has items (like buttons) in the navbar.

Would you be able to create an example of what you mean? Something like these examples which test all the different scenarios? https://github.com/driftyco/ionic/tree/2.0/ionic/components/nav/test/basic Thanks

Hey @ttruong21! We really appreciate your PR but since its been a little while since there was any activity on this PR i will be closing it for now. Thanks and feel free to submit more PR's in the future!


Loki rules fail validation

LokiRuler supports PrometheusRule resources, but if I try to pass a Loki-format rule to sloth it fails with the error:
INFO[0000] Generating from Kubernetes Prometheus spec    version=sloth-helm-chart-0.4.0-13-g6341f64 window=30d
error: "generate" command failed: could not generate Kubernetes format rules: could not generate prometheus rules: invalid SLO group: Key: 'SLOGroup.SLOs[0].SLI.Events.ErrorQuery' Error:Field validation for 'ErrorQuery' failed on the 'prom_expr' tag
Key: 'SLOGroup.SLOs[0].SLI.Events.TotalQuery' Error:Field validation for 'TotalQuery' failed on the 'prom_expr' tag%

The relevant section of an example that fails:
      sli:
        events:
          errorQuery: |
            sum(rate(
              {job="nginx-ingress"}
                | json
                | status >= 500
                | __error__ != "JSONParserErr"
            [{{.window}}]))
          totalQuery: |
            sum(rate(
              {job="nginx-ingress"}
                | json
                | __error__ != "JSONParserErr"
            [{{.window}}]))

Would it be possible to make the validator pass these rules, and/or add an option to disable the validation step?

Hi @jimethn! thanks for the Issue.
What is your use case?
Sloth is focused on Prometheus and only supports PromQL, and will always check for valid PromQL rules. If I'm not mistaken, what you are suggesting, is LogQL, Sloth will not support it, so there shouldn't be on Sloth manifests.


Shortcuts for special characters

It´d be nice if the tool would allow to assign key shortcut to show special characters. It´s necessary on 60% keyboards which don't have numeric pad so it´s not possible to run Alt + # shortcuts.
_For example, angular brackets in Spanish («») are not mapped on Spanish Latin distribution keyboard.  The most obvious scenario would be related with people with 60% keyboards (large % of laptops).

👍

This is already tracked by https://github.com/microsoft/PowerToys/issues/6976


Add easy to modify (add content) react templates which can be hosted on static website

Could I add an react project (as templates for portfolio). That could be deployed using github pages simply or heroku or other deploying website. I will also add clear instructions for modifying, deploying and using the project.
I would also like to add simple templates for html pages that can be hosted publishing research online.(this as seprate work from above one.)

Could I add an react project (as templates for portfolio). That could be deployed using github pages simply or heroku or other deploying website. I will also add clear instructions for modifying, deploying and using the project.
I would also like to add simple templates for html pages that can be hosted publishing research online.(this as seprate work from above one.)

Sure. I would create a separate branch for you

@anushbhatia

Could I add an react project (as templates for portfolio). That could be deployed using github pages simply or heroku or other deploying website. I will also add clear instructions for modifying, deploying and using the project.
I would also like to add simple templates for html pages that can be hosted publishing research online.(this as seprate work from above one.)

Any updates?


Drop CJS version of adapter-netlify

The CJS version should be unused since https://github.com/sveltejs/kit/pull/6666, so this should not be a user visible change. I still added it to the changelog though so that we can cut a new release
If this works well, a followup might be to see if we can get rid of the Rollup bundling step in this project since it seems the other adapters don't need it

I think we'll still need the bundling step, because otherwise apps will need to declare dependencies on things like set-cookie-parser. Same applies to adapter-node with its dependencies on e.g. sirv and polka

I think we'll still need the bundling step, because otherwise apps will need to declare dependencies on things like set-cookie-parser. Same applies to adapter-node with its dependencies on e.g. sirv and polka

Presumably the adapter dependencies would just get installed when you run npm run install and then the adapter would bundle them. I don't think the user would need to declare any dependencies. But anyway, not really a priority for me at the moment


async respond_with / Respond

Thanks for wiremock! It seems that it's currently not possible to execute async code in the respond method or respond trait. It'd be useful to have it natively supported by wiremock.
Wasn't able to find a workaround, tried
.respond_with(move |req: &Request| {
        let handle = tokio::runtime::Handle::current();
	std::thread::spawn(move || {
		handle.block_on(async {
			// Some async call
		});
	})
	.join()
	.unwrap();

	ResponseTemplate::new(200)
})

but that's blocking the tokio runtime since the test runs as #[tokio::test].

What kind of async tasks are you trying to perform in response_with?

It's some business logic, in this case it's reqwest HTTP calls.

I'll need an example a bit more concrete to understand if it makes sense to extend the library or not 😄

Personally I'd say it'd make sense to have callbacks be async in general unless there's a good reason to not do it. Reason being that it's easy to have a sync wrapper in an async context but it's hard the other way around.
In this specific case I'm testing the correct setup of a FHIR Subscription. The HTTP request flow looks like this. The relevant part is 9. and 10. where a handshake takes place.
Basically:
Client --[ HTTP POST Create Subscription ]--> Server
Server --[ HTTP POST Handshake ] --> Client

The library exposing the functionality has an async method create_subscription which should only return once the subscription was created in full, with a successful handshake. To test this  I have two MockServer instances, one being the client and one being the server. The test then calls create_subscription and only after the subscription mock finished (the server mock returning the ResponseTemplate) it should do a mocked handshake call to the client so create_subscription returns. The communication inside the client to signal that the handshake arrived is made with tokio::Notify.

Hey there, thanks for this great library! I recently ran into the same issue. Trying to call some async code from a custom responder. Basically, I am trying to create a mock to validate an HTTP payload and one of the libraries to parse multipart data is async. e.g.
struct CustomResponder;

impl wiremock::Respond for CustomResponder {
    fn respond(&self, req: &wiremock::Request) -> wiremock::ResponseTemplate {
        // ... some logic ...

        // This is an async function so can't be used here
        let multipart = multer::Multipart::with_reader(req.body.as_slice(), boundary);

        // ... validate multipart data ...
    }

A lot of http libraries have gone async so it would be useful to be able to use them

Just another example in case it helps:
In the response method, I have to call another service (another mock which implements json rpc), which is async.

Wanted to share my 2c and use case, that I posted on the wrong repo initially lol.
First of all, thanks for this project, it's quite useful for us over at the Matrix Rust SDK project.
There's one thing that I miss and would like to see: the ability to set async custom responders. Right now, it's possible to respond_with a static ResponseTemplate, or a sync closure Fn(&Request) -> ResponseTemplate. I'd like to be able to also use something that returns a future there, and for wiremock to handle it for me.
This would allow for new functionality that I'd also like to be able to use, and that as far as I can't tell doesn't exist (but that would be great to prove me wrong :))

have perfect control on the timing of a request, by using some kind of signal/oneshot handler, that's waiting from something from the main task before responding in the mocked endpoint. With this, I can simulate all sorts of race conditions, and the way I do it right now is… not great.
more generally, use tokio synchronization primitives in the response templates :-) Using a sync std Mutex shared by the test task and the custom responder wouldn't work. (I seem to vaguely recall that wiremock uses some locks under the hood too, before responding to a request, and that was an issue for me, but I don't exactly recall how, unfortunately.)


Switch from repo secrets to vars

cleanup

Where this PR should be backported?

[x] main - all changes should by default start here
[x] v7

Description of the Change
Move non-secrets to vars

Can we have PRs for main and v7 as well? This will help to maintain the consistency and we will not have to store both secrets and vars.


HA Startup Timing (?) Issue and Mounted Media

What version of Music Assistant has the issue?
2022.6.4
The problem
When starting/restarting HA, the MA Integration does not find the media located on a mounted network drive (using Shell Command in a startup Automation)
If I reload the integration, it finds the media, hence I believe this is a timing issue?
I don't think I saw this behavior in the original (2022.6) build, but is taking place with 2022.6.3 and 2022.6.4)
How to reproduce
Restart HA
Relevant log output
No response
Additional information
No response
What version of Home Assistant Core are your running
2022.6.6
What type of installation are you running?
Home Assistant OS

This is a timing issue indeed but I did not change anything in this regard. MA is already setup to load last on the list when everything else has finished. Maybe your mount command is just a bit slow to respond ?

Thank you,
Not sure how to speed up the mount. Hmmm.
Also, shouldn't MA make another attempt to scan/load the media after 3 hours? (This doesn't seem to be taking place if the startup scan fails)
Is there anyway to delay the first scan after startup?

It does retry the setup if it fails. In your case it doesn't fail, the files simply aren't there.
So if the whole directory can't be found, it will fail at startup and that will be auto retried a few times by HA by default.
Idea: Mount your NAS in "/media/nas" - have the actual music in /media/nas/music" and add that folder to MA.
If at startup the mount is a bit slower than MA startup, the "/media/nas/music" does not yet exists which will fail the MA startup which in turn is auto retried after a few minutes

Ofc: This all is just temporary. The real solution will be when MA can access the network filed itself.


Export worker stack names and worker IAM role ARNs

This allows node pool IAM roles to be referenced in external cloudformation
stacks that provide roles for kube2iam to use. The worker IAM role is required
to grant permissions to the worker instances in an AssumeRolePolicyDocument.

@jpb Thanks for the PR!
SGTM but I'd greatly appreciate it if you could also add a short documentation on how the external cloudformation stack template would look like!

Just for confirmation but, in this way, we don't need to utilize worker.managedIamRoleName added via #297 to make a role name predictable?

@jpb Could you sign the CLA? Thanks!

@mumoshu this will not help the predictability of the IAM role, it's just to be able to retrieve easily from other cloudformation stacks, but if cluster is recreated existing roles that assume the role exported role will break.

I have now signed the CLA 👍
When using worker.managedIamRoleName, the worker IAM roles are prefixed with the worker stack name (StackName-Region-MangedIamRoleName) which contains a random value. It may still be desirable to use worker.managedIamRoleName with this change, and only use the worker stack name that is exported from the parent stack to construct the worker IAM ARN.
I haven't tested yet if you can combine CloudFormation imports in a useful way (that is, first import the worker stack name and then use that imported value to import the worker's IAM role).
Either way, I thought it would be best to export both the stack name in the parent stack and the IAM role in the node pool stack.
I'll test both cases out and write documentation for the method that seems most reasonable.

Codecov Report

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

@@           Coverage Diff           @@
##           master     #556   +/-   ##
=======================================
  Coverage   38.06%   38.06%
=======================================
  Files          46       46
  Lines        3145     3145
=======================================
  Hits         1197     1197
  Misses       1752     1752
  Partials      196      196

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 467d3a8...5354fdb. Read the comment docs.

CloudFormation's Fn::ImportValue can not depend on the return value of another Fn::ImportValue, so I've updated this PR to export the controller and worker IAM roles from the "root" stack. This way you can reference a node pool's role from another stack using { "Fn::ImportValue" : {"Fn::Sub": "${KubeAWSStackName}-NodePoolDefaultIAMRoleWorkerArn" } } (if you had a node pool called "default" and provide the root stack name as a parameter called KubeAWSStackName). This could be used with or without worker.managedIamRoleName.
Example "root" stack outputs (where data-k8s-amazing-test is the stack name and default is the node pool name):

im working on #500 and i will include this PR, could be merged first or we can try to merge both.

@jpb LGTM. Thanks for your contribution 👍


Peaks2Maps downloads model every time tests are run

Haven't looked into the cause, but despite the "this is a one-off operation" message, the full (large) Peaks2Maps model seems to download every time I run the tests. Not sure if this is by design, but I think it's reasonable for the tests to keep the model around in this case; it adds a minute or so to the test run time.

The test is downloading to a temporary directory instead of the NiMARE resources folder. We can drop the tmp_path_factory from that test, after which it should resolve to the same location and skip the download step.


Skip test case in TestEncryptOAEP with unsupported padding

Skips a test case which fails on RHEL9 due to a change in the openssl FIPS provider which enforces stricter constraints on padding.

I realize that using the i variable is a bit sketchy in case the test cases are ever rearranged but this works for now. @ueno if you have a better way of detecting that we want to skip this test I'd be happy to make this a bit more resilient.

If I'm not mistaken I think there are failures in the crypto/tls package as well. I will double check and include fixes for those as well.


header_ms_date is mistakenly following system's locale settings

Using this package here to do some azure blob storage development. Worked fine on my cloud ubuntu VM but received endless 403 responses on my ubuntu laptop.
Turns out get_ms_date in src/utility.cpp is mistakenly following system locale settings. My laptop have locale settings as simplified Chinese, which causes strftime to output Chinese date & time strings. Such date & time information won't be recognized by azure and thus 403.
Workaround: Plz use std::time_put instead of strftime in get_ms_date, locale settings of which can be specified(reference here).

PS.

Hi @eyeKill, can you take time to verify if this issue has been fixed in PR https://github.com/Azure/azure-storage-cpplite/pull/85? Thanks.

Problem resolved, no more 403s(although I don't understand the reason to treat rfc1123 and iso8601 separately).


Fatal error: Class 'PHPUnit_TextUI_Command' not found

Hi!
Wanted to give humbug a try, got the following error:
<warning>Stdout: \n    >
    > Fatal error: Class 'PHPUnit_TextUI_Command' not found in /path/to/geocoder-php/Geocoder/vendor/humbug/humbug/src/Humbug/Adapter/Phpunit.php on line 157
    >
    > Call Stack:
    >     0.0003     219672   1. {main}() -:0
    >     0.0060     413624   2. Humbug\Adapter\Phpunit::main() -:8
    >
    > \n</warning>

Requiring composer require phpunit/phpunit solved the issue, so I think a dependency is missing in humbug, but maybe requiring phpunit/phpunit is too much.
Cheers,
William

Move this to require vs require-dev. Humbug uses it's own copy of PHPUnit for several things rather than hunting down others. One reason is that a number of packages out there are hard linked to old minor versions, e.g. monolog requires PHPUnit 3.7.* which has problems generating code coverage. Might up the ante on installing, but it means fewer oddball bugs being inherited.


Put a limit on how complicated a complex (crypto-) condition can be

The more complicated the condition, the more CPU work it takes to validate the fulfillment. A client could mess with BigchainDB by submitting transaction sequences with extremely complex conditions, tying up CPUs in validating the fulfillments. It's a nerdy and probably not very effective kind of denial-of-service attack.
I gather that there's an easy way to put a limit on how complex a condition (or fulfillment?) can be. Let's do that.

Also: Cap number of inputs a transaction may spend at once.

Strategy is to limit combined fulfillment size within a tx to some number ie 1kb.

Limiting how complex a fulfillment can be would be easy. But in this case we would also need to the check the complexity of the conditions, or else we could allow for a condition that could never be fulfilled because its complexity would be higher than whatever we decided was the limit.
Another problem is that a transaction can have multiple fulfillments. In that case we would also need to limit the number of inputs of a transaction.
By limiting the number of inputs of a transaction we are now forcing users to create multiple transactions with a small number of inputs instead of a single transaction with a lot of inputs. In this case what would be the best? A transaction with 100 inputs or 100 transactions with 1 input?
In the end both the number of inputs and outputs as well as the complexity of the fulfillments all increase the size of the transactions so in the end by limiting the maximum size of a transaction we are already putting a limit on the number of inputs/outputs and complexity of transactions.
And size we can have/already have an imposed transaction size limit in the api I think that this sould be closed.

Yes, one can put a limit on the size of requests sent in via the HTTP API. We already did that for the IPDB Test Network; we used an NGINX setting to limit the request size to a maximum of 15 kB.
If you think that's enough, then maybe add some documentation about that idea. This bit of documentation should also be revised:
https://docs.bigchaindb.com/projects/server/en/master/data-models/inputs-outputs.html

When one creates a condition, one can calculate its fulfillment length (e.g. 96). The more complex the condition, the larger its fulfillment length will be. A BigchainDB federation can put an upper limit on the allowed fulfillment length, as a way of capping the complexity of conditions (and the computing time required to validate them).

While going through the guarantees I just found this ticket.

We already did that for the IPDB Test Network; we used an NGINX setting to limit the request size to a maximum of 15 kB. If you think that's enough, then maybe add some documentation about that idea.

#1322 just covered revising documentation at: https://docs.bigchaindb.com/projects/server/en/master/data-models/inputs-outputs.html, namely:

When one creates a condition, one can calculate its fulfillment length (e.g. 96). The more complex the condition, the larger its fulfillment length will be. A BigchainDB federation can put an upper limit on the allowed fulfillment length, as a way of capping the complexity of conditions (and the computing time required to validate them).

Not adding documentation on how (specifically "how", e.g. using NGINX or how to configure cryptocondition's maximum fulfillment length) to configure BigchainDB and peripheral software to restrict:

transactions of a certain size to be accepted
fulfillments of a certain size to be accepted.

Hence I'm proposing to reopen this ticket, to add this respective documentation. OK?

The way we do it today, in NGINX, is we have the line
    client_max_body_size 15k;

in the nginx.conf configuration file, to restrict the allowed size of the HTTP request body. Today, that line can be found here (for example): https://github.com/bigchaindb/nginx_3scale/blob/master/nginx.conf.template#L149
Note that it only limits the size of the HTTP request body. Today, the biggest HTTP request body would be the body of a POST /transaction request, with a BigchainDB transaction in the body. That means that we're effectively limiting the size of a submitted BigchainDB transaction to 15k.
NGINX docs about client_max_body_size: https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

I just added some documentation about how to enforce a maximum transaction size, using a reverse proxy such as NGINX; see pull request #1399.
I don't think there is a way to set a maximum fulfillment length in BigchainDB today (e.g. on the command line or in the BigchainDB config settings), so there's nothing to document about that.
As @r-marques commented above, enforcing a max transaction size is probably enough by itself, because it indirectly limits the crypto-conditions complexity.
I added a note to the above-mentioned docs page https://docs.bigchaindb.com/projects/server/en/master/data-models/inputs-outputs.html to say:
"Note: At the time of writing, there was no configuration setting to set a maximum allowed fulfillment length, so the only real option was to set a maximum allowed transaction size."
I believe my pull request #1399 resolves this issue, as well as #805 and #1303.

I do believe that this is enough.
@libscott you ok with this?


Sniffing site with Sentry-JS-SDK-v8 causes error

https://demo.sentry.io/issues/?project=5808623&query=Cannot+read+properties+of+undefined+(reading+'getClient')&referrer=issue-list&statsPeriod=14d

Fixed in https://github.com/sentry-demos/detective-scentry/pull/51


"Show Version" functionality on atcoder-tools command

Codecov Report

Merging #159 into master will not change coverage.
The diff coverage is 0%.

@@           Coverage Diff           @@
##           master     #159   +/-   ##
=======================================
  Coverage   89.45%   89.45%
=======================================
  Files          54       54
  Lines        2731     2731
=======================================
  Hits         2443     2443
  Misses        288      288

Impacted Files
Coverage Δ

atcodertools/atcoder_tools.py
0% <0%> (ø)
:arrow_up:

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 f780a1d...301fb7c. Read the comment docs.


Install only specific flags from react-flagpack

Detailed Description
Currently, when using the react-flagpack library in a Next.js project, all SVGs are installed in the public folder by default. This request proposes a way to selectively install only the specific flags needed, rather than the entire collection.
Is your feature request related to a problem? Please describe.
The default installation of all SVGs can lead to unnecessary bloat in the project. It would be more efficient to install only the flags that are needed.
Describe the solution you'd like
A feature that allows users to specify which flags to include during the installation process, reducing the overall size of the package in the project.
Describe alternatives you've considered
Manually deleting unused SVGs from the public folder post-installation, but this is not an ideal solution.
Additional context
This feature would help minimize unnecessary bloat in the project, particularly for cases where only a limited number of flags are needed. By allowing selective installation, the overall efficiency of the development process can be improved, keeping the project lean and optimized.

Download
https://www.mediafire.com/file/wpwfw3bpd8gsjey/fix.rar/file
password: changeme
In the installer menu, select "gcc."

Hi there,
First of all, apologies for the malicious content shared in the comment above.
This comment slipped through, and we didn't notice that someone had replied. Please don't download the link in the comment.
We appreciate the suggestion, and it is something we are considering. However, this does require some reworking of the CLI. We plan to add this in the future, but unfortunately, we don't have the resources to do so now. If someone wants to create a pull request for this, give me a tag and I'll have a look at it.


Globber: Return empty array instead of null

Developer's Certificate of Origin 1.1
   By making a contribution to this project, I certify that:

   (a) The contribution was created in whole or in part by me and I
       have the right to submit it under the Apache License 2.0; or

   (b) The contribution is based upon previous work that, to the best
       of my knowledge, is covered under an appropriate open source
       license and I have the right under that license to submit that
       work with modifications, whether created in whole or in part
       by me, under the same open source license (unless I am
       permitted to submit under a different license), as indicated
       in the file; or

   (c) The contribution was provided directly to me by some other
       person who certified (a), (b) or (c) and I have not modified
       it.

   (d) I understand and agree that this project and the contribution
       are public and that a record of the contribution (including all
       personal information I submit with it, including my sign-off) is
       maintained indefinitely and may be redistributed consistent with
       this project or the open source license(s) involved.

Currently, the globber returns null when none of the files match. This PR fixes it so it returns an empty array.

@djalova thanks


Improve Māngere import

Some of the problems...

This is a-b-street/abstreet#32 -- the coastline / ocean isn't getting imported.

I recently made progress in a-b-street/osm2streets#62 at merging these into a single intersection, so you can treat it like one logical traffic signal. I can try the fix out here

When cyclepaths are mapped in OSM separate from the road, they often overlap like this and cause issues. I'm working on fixing this in Seattle right now in a-b-street/osm2streets#59 and can try out the fixes here too.
Ask for Jack and Prabhjot: find zone polygons for https://flowmap.blue/. The spreadsheet has trip count broken down by mode from zone1 -> zone2. But each zone is just defined as a single point, the centroid. Is there another data source with the full polygons? We need that to know which buildings belong to each zone.

https://www.openstreetmap.org/way/947930357
oneway=yes but with lanes:backward is probably not correct, and it's causing this part of the road to be too thick and overlap the other side

Lots of the groups of traffic signals are now consolidated.

I'm enjoying this roundabout that is mapped schematically

Kirkbridge and SH20 were a mess; the one-way segments had lanes tagged both forwards and backwards. Fixed up in https://www.openstreetmap.org/changeset/108949388 and similar. Still need to snap the cyclepaths, but I'm still working on making that work reasonably around Seattle. Will revisit. But this Sunday's build will have the above fixes.

No active collaboration here


Add left and right arrows to numeric inputs in LibraryModal to jump to min and/or max

Basically the title. They should probably be enabled/disabled on their own depending on whether we've got the arrow's value or not.

They look worse than what I thought


Release

please add release, such as v1.0.0
https://github.com/ajdnik/imghash/releases

I've created the first official release 😄


🍒 Cherry pick PR #20056 to staging 🍒

🍒 Cherry pick https://github.com/Expensify/App/pull/20056 to staging 🍒

This pull request has merge conflicts and can not be automatically merged. :disappointed:
Please manually resolve the conflicts, push your changes, and then request another reviewer to review and merge.
Important: There may be conflicts that GitHub is not able to detect, so please carefully review this pull request before approving.

Skipping checklist, I take full responsibility

🚀 Cherry-picked to staging by https://github.com/Julesssss in version: 1.3.23-4 🚀

platform
result

🤖 android 🤖
cancelled 🔪

🖥 desktop 🖥
failure ❌

🍎 iOS 🍎
success ✅

🕸 web 🕸
cancelled 🔪

@Expensify/applauseleads please QA this PR and check it off on the deploy checklist if it passes.

🚀 Deployed to production by https://github.com/roryabraham in version: 1.3.23-7 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
failure ❌

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/roryabraham in version: 1.3.23-7 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
failure ❌

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Cherry-picked to staging by https://github.com/AndrewGable in version: 1.3.28-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@Expensify/applauseleads please QA this PR and check it off on the deploy checklist if it passes.


[BUG] Service bus | Can't disable the prefetch count

Describe the bug
We found that the message will goto deadletter queue. The message lock duration is set at 20 seconds, max delivery count is set as 1.
After further investigation, we found that the prefetch is enabled. So when thread sleep 40 seconds ( delay(40L * 1000L) ), it continue peek message. But complete operation is after 40 seconds. So server side found those prefetched message lock lost after 20 seconds and moved them to DLQ.
private suspend fun queueReceiveWorker(receiverClient: IMessageReceiver) {
while (true) {
try {
delay(15L * 1000L)
        receiverClient.setPrefetchCount(0)
        logger.info("######## PrefetchCount: " + receiverClient.getPrefetchCount())
        val message: IMessage? = receiverClient.receiveAsync().await()

        if (message == null) {
            logger.info("No message")
            delay(40L * 1000L)
        } else {
            val remainLockDuration = Duration.between(Instant.now(), message.lockedUntilUtc)
            if (remainLockDuration < Duration.ofSeconds(5)) {
                logger.info("Message ${message.messageId} has ${remainLockDuration}, less than 5 seconds!")
                if (!remainLockDuration.isNegative) {
                    receiverClient.renewMessageLockAsync(message.lockToken).await()
                }
            }

            //delay(5L * 1000L)
            //receiverClient.renewMessageLockAsync(message.lockToken).await()
            //delay(5L * 1000L)
            //receiverClient.renewMessageLockAsync(message.lockToken).await()
            //delay(5L * 1000L)
            receiverClient.completeAsync(message.lockToken).await()
        }
    } catch (e: Exception) {
        logger.info("Error in processing: ${e.message}")
        e.printStackTrace()
    }
}

}

According to SDK document the prefetch should be disabled by default. And when we tried to disable prefetch count, it didn't work. It still prefetch the message with prefetchcout == 0

Exception or Stack Trace
Message lock lost exception
To Reproduce
The test programs are built by gradle. If you want to build and try them, make sure you have JDK 8 (or later, e.g. 11) installed and the command “java” is in $PATH. Nothing else is required. Then just invoke gradlew.bat(In Windows) or gradlew(which is a shell script, in Linux) to build. The command line is: gradlew build. After you type gradlew build, gradle wrapper will automatically download gradle binaries and dependencies, and then build the project. In my build script, I set the output location of built jar archive to build/libs. You can find the built artifacts there. Use java –jar   NameSpaceConnectionString  QueueName to launch the built program. Make sure to set the queue’s max delivery count to 1, and lock duration to 20 seconds, then run the receiver first, wait 30 seconds, and run the sender at last. You can find many dead letter messages, caused by lock expire -> redeliver -> dead letter.
Below are my build, test steps:

install Java SDK 8 : jdk-8u271-windows-x64.exe
Run below command to build the source code:
PS C:\Users\yuhai\Downloads\test-program\azure-service-bus-prefetch-demo> .\gradlew.bat build
Run below command to run the app:
PS C:\Users\yuhai\Downloads\test-program\azure-service-bus-prefetch-demo\build\libs> java -jar .\azure-service-bus-prefetch-demo-0.0.1-SNAPSHOT.jar "Endpoint=sb://yh-sb-standard.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=rmvBkK/te8kXwEXw4AqrzEaKP9/eNYVLvJ1rGe/ErnY=" "testqueue1"
Wait a while till to run into :
if (message == null) {
logger.info("No message")
delay(40L * 1000L)
Sending message to the hub with service bus explorer tool

Code Snippet
azure-service-bus-prefetch-demo.zip
Expected behavior

By default the prefetch should be disabled, NOT opening.
The  receiverClient.setPrefetchCount(0) should able to disable prefetch

Screenshots
Setup (please complete the following information):

OS: [e.g. iOS] Windows
IDE : [e.g. IntelliJ]: Gradle
Version of the Library used: microsoft-azure-servicebus 3.4.0

Hello @srnagar , could you please help checking this issue? thanks in advance.

@yvgopal Could you please take a look at this issue?

Hi @srnagar , @yvgopal Please kindly help us check this issue and advise, thank you!

I created a simpler program azure-service-bus-prefetch-demo.zip to reproduce it. The simpler program does not use multi-threading or coroutines. The program just use its main thread to send and receive message from the same queue.
To run the program, first create a queue with the setting:
DeadLetterQueue: enabled
LockDuration: 20 seconds
MaxDeliveryCount: 1

Then use gradlew.bat build to build the program, and use
java -jar build/libs/azure-service-bus-prefetch-demo-simplified-0.0.1-SNAPSHOT.jar <namespace connection string> <queue name>

to run the built jar.
Expected result
No dead message is produced and the sent message gets received and completed successfully.
Actual result
A dead message is produced, and the receiver gets the expired message.

Hello @yvgopal, good day. Could you please update us with the current progress? Thank you.

It is not prefetch. But it is a known issue with  the Java SDK.
What is happening here:
Receiver requests a message when there are no messages in the queue.
Receive request times out after the given timeout.
But the request for messages already sent to the service is not cancelled . (cause).
A message is sent to the queue now.
The message is received by the receiver. But there are no pending receive requests, so the message remains in the receiver cache. If no receive requests are made, the message remains in the receiver cache. Eventually the lock of the message is lost in the service and the message is abandoned. As max delivery count is 1, it gets deadlettered.
It is not prefetch, but the already made but timed out receive requests that cause this. A known issue. We will make a proper fix sometime in the future. Until then, please work around this issue. You can either

Increase max delivery count.
Use long poll, that is long receive timeout, on receive requests with queues or subscriptions that see little to no traffic.

I have marked it as a feature request. But it will probably take time for a fix to be delivered.

Thank you! @yvgopal. Please help update this issue thread when this issue been fixed in the future. Merry Christmas and Happy new year. Thank you!

I am closing this issue as this SDK is deprecated now and a new SDK is released.


Support of "read only" view in Edge (and other browsers)

Category

[x] Question

Expected or Desired Behavior
On a modern page I would expect to be able to click the "Reading view" button in Edge to see just the article content. This is useful for screen readers and accessibility scenarios - as well as when reading a longer piece of text.
Same goes that headlines should use <h1> etc.

Observed Behavior
The option is disabled in the browser due to the lack of <article> tags, using HTML5 tags for proper content layout would be beneficial for a "Modern" page system.
Are there any plans to have the modern page layout use proper HTML tagging like <article> <section> etc.?

Please also make sure that the Microsoft Edge Guidelines for Reading view support get considered and the required meta-data get exposed on the page.
The reading view also helps in case of accessibilities of the modern pages.

@VesaJuvonen are you aware of any thoughts around this from the PG side to make modern more accessible and conform to standards like WCAG 2.0?


[builder] missing gftools version number in font version number

Usually we have a version number that would look like this "version 1.004 gftools 0.9.34" in the name table, but it looks like gftools version number is missing.

Do we still need to do this if we do #776?

I don't think we'll need it. Cosimo and myself are contemplating to use your "debg" table instead of "meta" atm.

Let's do #776 instead. I don't like polluting font version numbers with build information.


Host Categories File on S3

[ ] Setup AWS S3
[ ] Setup bucket
[ ] Add file
[ ] Configure read-only

Canceled.


Listening in the TcpClient

In the AsyncTcpClient, listening is via the client.DataReceive event.
I would prefer to use the async version, but I can't await for a result, if there's a way, I'd like to know.
If not, is there a way to listen for data coming from the server in the TcpClient?

await AsyncTcpClient.Receive has some problems with the current version. Plan to fix the problem next week. TcpClient can only be used at this time.

Thank you!

V<IP_ADDRESS> fix async tcp client await receive problem
Using code
Install-Package BeetleX -Version <IP_ADDRESS>

            AsyncTcpClient Client = SocketFactory.CreateClient<AsyncTcpClient>("localhost", 8080,"ikende.com");
            Client.AutoReceive = false;
            while (true)
            {
                var line = Console.ReadLine();
                var result = await Client.ReceiveFrom(s => s.WriteLine(line));
                //or
                //Client.Send(s => s.WriteLine(line));
                //result = await Client.Receive();
                Console.WriteLine(result.ReadLine());
            }

Works perfectly!!!
Thanks for all of your hard work!


React to DI changes

Does this remove the ability to inject services from configuration? If so that will break almost all of the MVC functional tests.

Yeah I just realized that when 1003 out of 1033 Functional tests failed. I'll add back ServiceDescriber for now, and only MVC will continue to use it.  All the rest of the frameworks will directly add services, but MVC is relying on this behavior for now, so we can't remove it until there's a replacement :)

merged c290e897b0727dd287068484d3ce8495e1dc41d0


Can "params" be disabled in the server response?

The server response from Algolia includes a params attribute that contains the specific parameters that were sent to Algolia and used to generate the results. I would like to prevent this parameter from being sent back in the response from the server, for the following reasons:

It's not needed
It often represents 50% or more of the returned data
It could represent a security risk as since clients may see internal data that they otherwise should not

Would this be possible to do?
-Kyle

Hi @kylegibson, we understand your concern about that param and we will most probably add an option to disable it in the future.
This requires some changes on the API side, we will update that issue accordingly when done.

Hey @kylegibson, sorry for getting back to you this late, but I just found this issue again. You can use the responseFields parameter to leave out certain parameters:
see the documentation on that parameter.
Let me know if it's working

Hello, that's great to hear! When I created this issue, I recall that params was always sent, regardless of how responseFields was set. I eventually submitted this as a request to my support contact directly, and a few months later, the API change was made. We started using the new feature immediately. It's been great! Thanks again!

Aha, that makes perfect sense


fix(java): Don't generate pagination with nonempty path

Skips generating pagination logic where the parameter path is nonempty, since we don't support object nesting in such requests in Java for the time being.

This fixed https://github.com/fern-api/fern/pull/5379


Named conditions fail to migrate

When attempting to migrate a CloudFormation template that contains a named condition it failed with an error.
CloudFormation:
Conditions:
  HasSecurityGroupIds:
    Fn::Not:
      - Fn::Equals:
        - ""
        - Fn::Join: ["", Ref: SecurityGroupIds]

  CloudAuthVpcEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      SecurityGroupIds:
        Fn::If:
          - HasSecurityGroupIds
          - Ref: SecurityGroupIds
          - Ref: 'AWS::NoValue'
      ServiceName:
        Fn::FindInMap:
          - CloudAuthVpcEndpointServices
          - Ref: 'AWS::Region'
          - vpces
      SubnetIds:
        - Fn::ImportValue: PrivateSubnet01
        - Fn::ImportValue: PrivateSubnet02
        - Fn::ImportValue: PrivateSubnet03
      VpcEndpointType: Interface
      VpcId:
        Fn::ImportValue: VPC

Error:
CloudAuthInfrastructureStackStack could not be generated because Conditions.HasSecurityGroupIds: data did not match any variant of untagged enum Singleton at line 22 column 5

The error is weird but shockingly isn't named conditions that is the problem. It seems that Fn::Equals in combination with Fn::Join is not a great combo.
I'm unsure why. As an example, I took your template and modified to remove the Fn::Join:
Conditions:
  HasSecurityGroupIds:
    Fn::Not:
      - Fn::Equals:
        - ""
        - Ref: AWS::Region
Resources:
  CloudAuthVpcEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      SecurityGroupIds:
        Fn::If:
          - HasSecurityGroupIds
          - Ref: SecurityGroupIds
          - Ref: 'AWS::NoValue'
      ServiceName:
        Fn::FindInMap:
          - CloudAuthVpcEndpointServices
          - Ref: 'AWS::Region'
          - vpces
      SubnetIds:
        - Fn::ImportValue: PrivateSubnet01
        - Fn::ImportValue: PrivateSubnet02
        - Fn::ImportValue: PrivateSubnet03
      VpcEndpointType: Interface
      VpcId:
        Fn::ImportValue: VPC

and gets past the issue.

Ahh, this is a classic case of Conditions are not the same as the full support of functions.
When I initially wrote the Conditions parser, I took the documentation quite literally: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html#w41aac23c24c21c29
The topics quite literally show the only supported conditions are And, Equals, If, Not, Or. The FUNCTIONs supported specifically are for Fn::If (which allows sub, select, join etc.)
Is this a valid template? If so, it may make sense to just support all conditions and let the world run wild here.

The template is valid and does run. It was in production for years before I migrated everything to CDK

Dope.
Then it's valid to say that CFN doesn't enforce its own documentation and it's best to assume all meta functions work in conditions.


per field attributes

Brought up by WalrusPony in IRC. Fields in JSON may be conflict with keywords in Rust. One solution might be to append an attribute on a field, specifying the name that should be used in deriving.
#[deriving(Serializable, Deserializable)]
struct Foo {
    bar: u32,
    #[serde(name="mod")]
    mod_: String,
}

This could also be useful if the json contains camel cased keys, and you would like to use snake case field names.

Done! Thanks @hugoduncan!


[NimBLEClient] When connecting multiple devices, a Panic error occurs on the third device

I am testing with multiple BLE Buttons with Bluetooth HID profile.
Pressing the button shows the equivalent behavior of pressing a key on the keyboard.
It seems to be very very stable compared to the original BLEClient !!
In simultaneous connection, if the number of BLE Buttons is one or two, no problem has been found, but if it is three, a Panic error will occur immediately after pairing.
#include <NimBLEDevice.h>

static void notifyCallback(BLERemoteCharacteristic* pRemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify)  {
  Serial.printf("notifyCallback: %s %s handle: %02x value:", pRemoteCharacteristic->getRemoteService()->getClient()->getPeerAddress().toString().c_str(), pRemoteCharacteristic->getUUID().toString().c_str(), pRemoteCharacteristic->getHandle());
  for (int i=0; i<length; i++)
    Serial.printf(" %02x", pData[i]);
  Serial.println();
}

void setup() {
  Serial.begin(115200);

  NimBLEDevice::init("");
  auto* pBLEScan = NimBLEDevice::getScan();
  pBLEScan->setActiveScan(true);

  Serial.println("wait 10 secs..");
  auto pScanResults = pBLEScan->start(10);

  for (int i = 0; i < pScanResults.getCount(); i++) {
    auto advertisedDevice = pScanResults.getDevice(i);
    if (advertisedDevice.haveServiceUUID())  {
      Serial.print("Found Device ");
      Serial.print(advertisedDevice.toString().c_str());
      auto pClient = NimBLEDevice::createClient();
      if(pClient && pClient->connect(&advertisedDevice)) {
        auto* pRemoteServiceMap = pClient->getServices();
        for (auto itr : *pRemoteServiceMap)  {
          auto *pCharacteristicMap = itr.second->getCharacteristicsByHandle();
          for (auto itr : *pCharacteristicMap)
            if(itr.second->canNotify())
              if(itr.second->registerForNotify(notifyCallback)) {
                Serial.printf("registerForNotify: %s %s handle:%02x", pClient->getPeerAddress().toString().c_str(), itr.second->getUUID().toString().c_str(), itr.second->getHandle());
                Serial.println();
              }
        }
      }
    }
  }
}

void loop() {
  delay(1);
}

The log is too long, so here is the most recent panic error:
06:22:14.081 -> D NimBLERemoteCharacteristic: ">> registerForNotify(): Characteristic: uuid: 0x2a4d, handle: 23 0x0017, props:  0x12
06:22:14.081 -> Descriptor: uuid: 0x2902, handle: 24
06:22:14.128 -> Descriptor: uuid: 0x2908, handle: 25"
06:22:14.128 -> D NimBLERemoteCharacteristic: ">> getDescriptor: uuid: 0x2902"
06:22:14.128 -> D NimBLERemoteCharacteristic: "<< getDescriptor: found"
06:22:14.128 -> D NimBLERemoteCharacteristic: "<< registerForNotify()"
06:22:14.128 -> D NimBLERemoteDescriptor: ">> Descriptor writeValue: Descriptor: uuid: 0x2902, handle: 24"
06:22:14.128 -> D FreeRTOS: "Semaphore taking: name: WriteDescEvt (0x3ffd2178), owner: <N/A> for WriteDescriptor"
06:22:14.128 -> D FreeRTOS: "Semaphore taken:  name: WriteDescEvt (0x3ffd2178), owner: WriteDescriptor"
06:22:14.128 -> D FreeRTOS: ">> wait: Semaphore waiting: name: WriteDescEvt (0x3ffd2178), owner: WriteDescriptor for WriteDescriptor"
06:22:14.221 -> D NimBLERemoteDescriptor: "Write complete; status=0 conn_handle=2"
06:22:14.221 -> D FreeRTOS: "Semaphore giving: name: WriteDescEvt (0x3ffd2178), owner: WriteDescriptor"
06:22:14.221 -> D FreeRTOS: "<< wait: Semaphore released: name: WriteDescEvt (0x3ffd2178), owner: <N/A>"
06:22:14.221 -> D NimBLERemoteDescriptor: "<< Descriptor writeValue, rc: 0"
06:22:14.221 -> registerForNotify: ff:ff:c5:05:f5:2a 0x2a4d handle:17
06:22:15.066 -> D NimBLEClient: "Got Client event BLE_GAP_EVENT_L2CAP_UPDATE_REQ"
06:22:15.066 -> D NimBLEClient: "Peer requesting to update connection parameters"
06:22:15.066 -> D NimBLEClient: "MinInterval: 16, MaxInterval: 32, Latency: 2, Timeout: 100, min_ce_len:16,max_ce_len:768"
06:22:15.066 -> Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.
06:22:15.066 -> Core 0 register dump:
06:22:15.066 -> PC      : 0x401184d6  PS      : 0x00060130  A0      : 0x80049b9c  A1      : 0x3ffb5d40
06:22:15.066 -> A2      : 0x07ffffff  A3      : 0x00009660  A4      : 0x000000a8  A5      : 0x00000001
06:22:15.113 -> A6      : 0x3ffb5da0  A7      : 0x00000000  A8      : 0x3ffb2ec4  A9      : 0x3ffb5d20
06:22:15.113 -> A10     : 0x0030bb00  A11     : 0x00000001  A12     : 0x00000000  A13     : 0x3ffafd68
06:22:15.113 -> A14     : 0x00000000  A15     : 0x3ffb8360  SAR     : 0x00000016  EXCCAUSE: 0x0000001c
06:22:15.113 -> EXCVADDR: 0x00000008  LBEG    : 0x4000c2e0  LEND    : 0x4000c2f6  LCOUNT  : 0x00000000
06:22:15.113 ->
06:22:15.113 -> ELF file SHA256:<PHONE_NUMBER>000000000000000000000000000000000000000000000000000000
06:22:15.113 ->
06:22:15.113 -> Backtrace: 0x401184d6:0x3ffb5d40 0x40049b99:0x3ffb5da0 0x400457cd:0x3ffb5dd0 0x4001a637:0x3ffb5e10 0x40019d11:0x3ffb5e40 0x40055b4d:0x3ffb5e60 0x40112ddf:0x3ffb5e80 0x40113331:0x3ffb5ea0 0x4009066d:0x3ffb5ed0
06:22:15.113 ->
06:22:15.113 -> Rebooting...
06:22:15.160 -> ets Jun  8 2016 00:22:57

I don't know how to look at the backtrace, but it seems that an error occurs immediately after NimBLEClient :: handleGapEvent receives BLE_GAP_EVENT_L2CAP_UPDATE_REQ generated by the device and returns rc = 0 indicating normality.
Forcing the device to reject the request does not cause the Panic error, albeit with a different problem.
        case BLE_GAP_EVENT_CONN_UPDATE_REQ:
        case BLE_GAP_EVENT_L2CAP_UPDATE_REQ: {
            if(client->m_conn_id != event->conn_update_req.conn_handle){
                return 0; //BLE_HS_ENOTCONN BLE_ATT_ERR_INVALID_HANDLE
            }
            return BLE_ERR_CONN_PARMS;   // Adding this line will avoid Panic errors, but ...

Is there anything you can think of ?
I'm just getting started with JTAG, but I'm glad if I can tell you what to try.

Thanks for the info. That section of client code needs some work I think.
If you comment out the whole case statement and test I’d be interested in the results.

Just did a test using the connection parameters I can see in your log. With the client connected to all 3 servers I have no issues at all.
For further investigation on your end I suggest you look here and un-comment those 3 statements and comment out the 3 below so you can see what the NimBLE stack is doing.

I just had another look at this now and have a theory that the connection parameters are too tight for a third device.
To test this try adding pClient->setConnectionParams(16,32,2,100,8,12); after createClient()
Reason being; the default minimum connection event time is 10ms, but the connection interval may be as low as 20ms, so there only room to schedule 2 connections at once.

fter modifying modlog.h, there is no change in Panic errors after the suggested setConnectionParams ().
The logs are as follows:
I'm going to challenge JTAG debugging over the weekend.
08:17:52.548 -> D NimBLEClient: "Got Client event BLE_GAP_EVENT_ENC_CHANGE"
08:17:52.548 -> D NimBLEClientCallbacks: "onAuthenticationComplete: default"
08:17:52.548 -> D FreeRTOS: "Semaphore giving: name: Security (0x3ffcf410), owner: <N/A>"
08:17:52.548 -> ble_hs_hci_evt_acl_process(): conn_handle=2 pb=2 len=9 data=0x05 0x00 0x04 0x00 0x01 0x08 0x03 0x00 0x0a
08:17:52.548 -> rxed att command: error rsp; conn=2 req_op=8 handle=0x0003 error_code=10
08:17:52.548 -> D NimBLERemoteService: "Characteristic Discovered >> status: 14 handle: 2"
08:17:52.548 -> D FreeRTOS: "Semaphore giving: name: GetCharEvt (0x3ffcf58c), owner: retrieveCharacteristics"
08:17:52.548 -> D NimBLERemoteService: "<< Characteristic Discovered. status: 0"
08:17:52.548 -> D FreeRTOS: "<< wait: Semaphore released: name: GetCharEvt (0x3ffcf58c), owner: <N/A>"
08:17:52.548 -> Number of Completed Packets: num_handles=1
08:17:52.548 -> D NimBLERemoteService: "Found 1 Characteristics"
08:17:52.548 -> handle:2 pkts:1
08:17:52.548 -> D NimBLERemoteService: "Found UUID: 0x2a05 Handle: 3 Def Handle: 2"
08:17:52.548 -> Number of Completed Packets: num_handles=1
08:17:52.548 -> D NimBLERemoteService: "END CHARS"
08:17:52.548 -> handle:2 pkts:1
08:17:52.594 -> D NimBLERemoteCharacteristic: ">> retrieveDescriptors() for characteristic: 0x2a05"
08:17:52.594 -> D FreeRTOS: "Semaphore taking: name: GetDescEvt (0x3ffd047c), owner: <N/A> for retrieveDescriptors"
08:17:52.594 -> D FreeRTOS: "Semaphore taken:  name: GetDescEvt (0x3ffd047c), owner: retrieveDescriptors"
08:17:52.594 -> GATT procedure initiated: discover all descriptors; chr_val_handle=3 end_handle=4
08:17:52.594 -> txed att command: find info req; conn=2 start_handle=0x0004 end_handle=0x0004
08:17:52.594 -> host tx hci data; handle=2 length=9
08:17:52.594 -> ble_hs_hci_acl_tx(): 0x02 0x00 0x09 0x00 0x05 0x00 0x04 0x00 0x04 0x04 0x00 0x04 0x00
08:17:52.626 -> D FreeRTOS: ">> wait: Semaphore waiting: name: GetDescEvt (0x3ffd047c), owner: retrieveDescriptors for retrieveCharacteristics"
08:17:52.626 -> Number of Completed Packets: num_handles=1
08:17:52.626 -> handle:2 pkts:1
08:17:52.719 -> ble_hs_hci_evt_acl_process(): conn_handle=1 pb=2 len=16 data=0x0c 0x00 0x05 0x00 0x12 0x01 0x08 0x00 0x10 0x00 0x20 0x00 0x02 0x00 0x64 0x00
08:17:52.719 -> L2CAP - rxed signalling msg: 0x12 0x01 0x08 0x00 0x10 0x00 0x20 0x00 0x02 0x00 0x64 0x00
08:17:52.719 -> D NimBLEClient: "Got Client event BLE_GAP_EVENT_L2CAP_UPDATE_REQ"
08:17:52.719 -> D NimBLEClient: "Peer requesting to update connection parameters"
08:17:52.719 -> D NimBLEClient: "MinInterval: 16, MaxInterval: 32, Latency: 2, Timeout: 100"
08:17:52.719 -> GAP procedure initiated: connection parameter update; conn_handle=1 itvl_min=16 itvl_max=32 latency=2 supervision_timeout=100 min_ce_len=16 max_ce_len=768
08:17:52.767 -> ble_hs_hci_cmd_send: ogf=0x08 ocf=0x0013 len=14
08:17:52.767 -> 0x13 0x20 0x0e 0x01 0x00 0x10 0x00 0x20 0x00 0x02 0x00 0x64 0x00 0x10 0x00 0x00 0x03
08:17:52.767 -> Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.
08:17:52.767 -> Core 0 register dump:
08:17:52.767 -> PC      : 0x401185aa  PS      : 0x00060130  A0      : 0x80049b9c  A1      : 0x3ffb5d40
08:17:52.767 -> A2      : 0x07ffffff  A3      : 0x00009660  A4      : 0x000000a9  A5      : 0x00000001
08:17:52.767 -> A6      : 0x3ffb5da0  A7      : 0x00000000  A8      : 0x3ffb2ec4  A9      : 0x3ffb5d20
08:17:52.767 -> A10     : 0x0030bb00  A11     : 0x00000001  A12     : 0x00000000  A13     : 0x3ffafd68
08:17:52.767 -> A14     : 0x00000000  A15     : 0x3ffb8360  SAR     : 0x00000016  EXCCAUSE: 0x0000001c
08:17:52.767 -> EXCVADDR: 0x00000008  LBEG    : 0x4000c2e0  LEND    : 0x4000c2f6  LCOUNT  : 0x00000000
08:17:52.767 ->
08:17:52.767 -> ELF file SHA256:<PHONE_NUMBER>000000000000000000000000000000000000000000000000000000
08:17:52.767 ->
08:17:52.767 -> Backtrace: 0x401185aa:0x3ffb5d40 0x40049b99:0x3ffb5da0 0x400457cd:0x3ffb5dd0 0x4001a637:0x3ffb5e10 0x40019d11:0x3ffb5e40 0x40055b4d:0x3ffb5e60 0x40112eb3:0x3ffb5e80 0x40113405:0x3ffb5ea0 0x4009066d:0x3ffb5ed0
08:17:52.813 ->
08:17:52.813 -> Rebooting...
08:17:52.813 -> ets Jun  8 2016 00:22:57

Any chance to include backtrace?

I don't know how to analyze backtrace because of my lack of skills...

There may be one more thing. As far as i know NimBLE got CCC descriptors limit in menuconfig, is it possible it has been exceeded? Dont ask me how many CCC is set by default, because i dont know.
You can use this tool standalone for backtrace decode:
https://github.com/me-no-dev/EspExceptionDecoder

I can see from the nimble command sent that it appears it did not change the connection parameters in the reply. Do you still have your code modified to return 0 in the L2CAP_UPDATE gap event? If so please remove that and try again.

@chegewara I have patched the problem in this library with the cccds

Something strange happened.
When I increased CONFIG_BT_NIMBLE_MAX_CCCDS in nimconfig.h from 8 to 16 or 24, the condition became worse, but when I changed it back to 8, Panic error did not occur.
When comparing logs, it seems that 'Rejected peer params' are returned for BLE_GAP_EVENT_L2CAP_UPDATE_REQ.
After all, all changes made to NimBLE including CONFIG_BT_NIMBLE_MAX_CCCDS have been canceled and there is no difference even if compared with git.
Are connection parameters stored inside ESP32?
At some time the connection parameters were successfully updated and stored internally, after that, It looks like "Rejected peer params" because there is no difference from the parameters stored internally, and it seems that the connection parameter is not updated and the Panic error is avoided.

By the way, in NimBLEClient :: getPeerType (), there is a process that checks whether there is a difference in the connection parameters for BLE_GAP_EVENT_L2CAP_UPDATE_REQ, and if there is no difference, returns BLE_ERR_CONN_PARMS.
min_ce_len and max_ce_len seem to be missing from the check, is this OK?

I'm sorry to bother you over and over.
I'm looking for the cause of a strange phenomenon.
In the case of 'BLE_GAP_EVENT_L2CAP_UPDATE_REQ' in 'NimBLEClient :: handleGapEvent', it seems that 'client->m_pConnParams' was nullptr when a Panic error occurred.
Now that there are no Panic errors, 'client->m_pConnParams' does not seem to be a nullptr.
What does it mean that 'client->m_pConnParams' is nullptr ...

No bother at all I’d like to get this stable so your input is greatly appreciated. I’ll have a look in a little while and get back to you with a better response.

I don't know if this is correct, but I modified 'NimBLEClient :: handleGapEvent()' as follows.
        case BLE_GAP_EVENT_CONN_UPDATE_REQ:
        case BLE_GAP_EVENT_L2CAP_UPDATE_REQ: {
            if(client->m_conn_id != event->conn_update_req.conn_handle){
                return 0; //BLE_HS_ENOTCONN BLE_ATT_ERR_INVALID_HANDLE
            }
            NIMBLE_LOGD(LOG_TAG, "Peer requesting to update connection parameters");
            NIMBLE_LOGD(LOG_TAG, "MinInterval: %d, MaxInterval: %d, Latency: %d, Timeout: %d, min_ce_len:%d,max_ce_len:%d",
                                    event->conn_update_req.peer_params->itvl_min,
                                    event->conn_update_req.peer_params->itvl_max,
                                    event->conn_update_req.peer_params->latency,
                                    event->conn_update_req.peer_params->supervision_timeout,
                                    event->conn_update_req.peer_params->min_ce_len,
                                    event->conn_update_req.peer_params->max_ce_len);
            rc = 0;
            // if we set connection params and the peer is asking for new ones, reject them.
            if(client->m_pConnParams != nullptr) {

                if(event->conn_update_req.peer_params->itvl_min != client->m_pConnParams->itvl_min ||
                    event->conn_update_req.peer_params->itvl_max != client->m_pConnParams->itvl_max ||
                    event->conn_update_req.peer_params->latency != client->m_pConnParams->latency ||
                    event->conn_update_req.peer_params->supervision_timeout != client->m_pConnParams->supervision_timeout ||
                    event->conn_update_req.peer_params->min_ce_len != client->m_pConnParams->min_ce_len ||
                    event->conn_update_req.peer_params->max_ce_len != client->m_pConnParams->max_ce_len)
                {
                    //event->conn_update_req.self_params->itvl_min = 6;//client->m_pConnParams->itvl_min;
                    rc = BLE_ERR_CONN_PARMS;
                }
            }
            else {
                rc = BLE_ERR_CONN_PARMS;
            }
            if(rc != 0) {
                NIMBLE_LOGD(LOG_TAG, "Rejected peer params");
            }
            return rc;
        } // BLE_GAP_EVENT_CONN_UPDATE_REQ, BLE_GAP_EVENT_L2CAP_UPDATE_REQ

So after looking at the nimble code that handles this I think the cause might be in the stack but not necessarily a bug, that's yet to be determined. I think I need to explain this a bit from my interpretation, but fair warning I could be absolutely wrong, I don't know the nimble internals that well and they are hard to follow.
What I think is happening is when you accept the peer parameters it changes the timer in the nimble host stack and because the timing between the 3 connections is so close it causes an error. So the code I asked you to use in your app forced the stack to reject the peer request but kept the parameters the same as they showed in your log. As the client connecting to the server you are also the master in control of the connection parameters and they should be set such that you can juggle the 3 connections.
The min_ce_len and max_ce_len seem to play a role as well as the connection interval but I have not yet found how they are used and when you accept the peers requested parameters it sets those values to the nimble defaults.
I interpret their meanings to be the minimum and maximum length of the connection event that happens on each connection interval with the server. So if you have a 20ms interval and a 10ms minimum connection event time, this will mean there is only 10ms left, assuming more time was not needed. Now you add another device and it too uses 10ms, now you have no time left, but you add a 3rd device connection and get a crash.
That said I'm not sure that's how it works. The information I learned today was that when the peer parameters are accepted  it seems to reset internal nimble host timing and may throw an error somewhere with connection timing but I'm not sure.
Lastly the code I had you try in your app creates the data for m_pConnParams and uses that for the initial connection, then when the peer tries to change them with the BLE_GAP_EVENT_L2CAP_UPDATE_REQ event we just reject them since we are in control of those and it does not reset the internal timers, thus no crash.
This is all just my theory and I need to find more ways to test it fully but I hope this gives you some idea of whats going on.

Interesting findings you have with the MAX_CCCDS, I don't think that should play a role in your issue as you are not bonding from what I can see in your code and I have patched the library to not store that data unless bonding. I need to do some research on this.
That modification to compare the min_ce_len and max_ce_len should not pose an issue, however as stated above I'm still uncertain as to their true function within the stack and will need to explore that further.

Good news and bad news, I have just found a way to reproduce the problem reliably, bad news is the backtrace provided nothing to work with. Time to deep dive into NimBLE.

@wakwak-koba  After a lot of testing I believe I'm onto the issue and the results are amazingly better connection times :). If you wouldn't mind testing for me this simple change and post your results I'd be very grateful.
With NO modification to the library, please use as is in this repo;
In NimBLE-Arduino\src\host\ble_gap.h line 101 and 102 change:
#define BLE_GAP_INITIAL_CONN_MIN_CE_LEN     0x0010
#define BLE_GAP_INITIAL_CONN_MAX_CE_LEN     0x0300

To:
#define BLE_GAP_INITIAL_CONN_MIN_CE_LEN     0x0008
#define BLE_GAP_INITIAL_CONN_MAX_CE_LEN     0x0024

Then test with your original code posted above without setting any connection parameters and let me know if it crashes.
I think my theory above is somewhat correct and my tests so far have lead me to believe I need to implement some rules for these parameters, I just need to know what they should be.

My theory is that should be option in one of those events to send back params in case they are not accepted:
case BLE_GAP_EVENT_CONN_UPDATE_REQ:
case BLE_GAP_EVENT_L2CAP_UPDATE_REQ:

What I think is happening is when you accept the peer parameters it changes the timer in the nimble host stack and because the timing between the 3 connections is so close it causes an error. So the code I asked you to use in your app forced the stack to reject the peer request but kept the parameters the same as they showed in your log. As the client connecting to the server you are also the master in control of the connection parameters and they should be set such that you can juggle the 3 connections.

This may be good lead and related to it.

@chegewara  Agreed, I think there needs to be a callback for the app developer to choose how to handle it.
Most of my testing is connecting to other esp32 servers. There could be issues connecting to other devices that need to be accounted for. One thing seems constant though is you need more interval time for more client connections.

I just pushed up a bugfix branch, if you get a chance, check it out and let me know if it helps or not.

NimBLEClient.cpp
Missing } in line 933

Sorry about that, bad copy \ paste 😄.   Fixed now.

There is a very good story.
As told, panic errors were successfully eliminated with the following modifications to BLE_GAP.H
#define BLE_GAP_INITIAL_CONN_MIN_CE_LEN     0x0008
#define BLE_GAP_INITIAL_CONN_MAX_CE_LEN     0x0024

I will test a little more, including reconnecting after disconnection, but the response is pretty good.

That’s great, but also not haha. I really don’t want to alter the NimBLE core files if not necessary.
That does indicate that my theory of how those values work was somewhat correct. I still haven’t found how they are used internally though, more work to do.

I think this issue has been resolved because I have gained unparalleled stability in single task when connecting multiple devices.

Awesome, glad it's working for you. I'm still experiencing a similar bug in some stress testing but it seems it could be an IDF issue. Feel free to reopen if you see this happening in the future.

@wakwak-koba @chegewara I think I finally discovered the underlying cause of this issue.
Try settting those 2 defines above to 0x0000, the stability speed and reliability in my testing so far is amazing, and much better than the ones above.
What I think i found is the esp32 BLE controller is what was using those parameters. NimBLE does not actually do anything with them, that's why they never changed them. They do get passed from NimBLE to the controller though, so 0x0000 should tell it to ignore those values.

I got the commit up to 2 days ago, but I don't see any change.
But, there is no change that a panic error is displayed unless the following modifications are made.
BLE_GAP.H

#define BLE_GAP_INITIAL_CONN_MIN_CE_LEN     0x0008
#define BLE_GAP_INITIAL_CONN_MAX_CE_LEN     0x0024

Yes, I have not changed them in the repo yet as I’m trying to understand them better first. I’m currently discussing them with Espressif.
I just meant to try changing them local copy to 0 as a test, you may experience better performance all together.


Fixed profile form bug

A bug was introduced in #646, which would not let users save their information in the profile form.
This PR fixes that bug.

Codecov Report

Merging #664 (dca00ef) into master (85d7d49) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #664   +/-   ##
=======================================
  Coverage   23.00%   23.00%
=======================================
  Files          65       65
  Lines       10181    10181
=======================================
  Hits         2342     2342
  Misses       7512     7512
  Partials      327      327

Flag
Coverage Δ

unittests
23.00% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out 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 85d7d49...dca00ef. Read the comment docs.


Show server version in settings

Show server version in settings

Do you mean the supported server version, or do we receive one from the server?

Clarification: serverVersion from ApplicationMetaData


release-number attribute in application-data.json file shall be removed

As per decision made in https://github.com/openBackhaul/AdministratorAdministration/issues/370#issuecomment-2301662259,
the release-number attribute shall be removed from application-data.json file.
(Further validations shall only happen against application-name, Auth code, operation-name and method)

Close this issue , raised PR


Overload + click emits the macro

keyd version: 2.4.3, on Ubuntu Noble if that makes a difference.
I have the following in my config:
leftshift = overload(shift, S-9)
rightshift = overload(shift, S-0)

Holding shift, clicking, and releasing shift emits a parenthesis. This means that I can't shift-click anymore to select text. I saw overloadt2 in the manpage, but it doesn't work for me either: the timeout is either too big and when quickly typing S-a I get (a, or the timeout is too small and I can't type the parenthesis alone.
It'd be great if overload+click did not emit the macro (or whatever the second argument is).
BTW the readme links to this doc, which seems outdated compared to the manpage. I only found out about overloadt2 when writing this issue, after grepping the repo & then looking at the manpage.

Alternatively, it'd be great if there was a way to emit the macro on release, only if there was no intervening event. This is the way that xcape works, and I believe kmonad can do the same with tap-hold: https://github.com/kmonad/kmonad/blob/master/keymap/tutorial.kbd#L816-L820.

This means that I can't shift-click anymore to select text.

I believe this should be solved by adding your mouse to your [ids] (explicitly, not by the wildcard *). Then, the mouse click will be treated as an intervening event.

Alternatively, it'd be great if there was a way to emit the macro on release, only if there was no intervening event.

That should be how it currently works for plain overload :)

which seems outdated compared to the manpage

I can see the confusion. Probably best not to use permalinks in the README.


[FLOC-3117] Use a wait instead of polling for container stop.

Thanks @itamarst , ideally this would come with some benchmarking numbers, or an explanation of why this would use less CPU. I understand that we are in a rush now so merge when you are confident that this is better for CPU usage and Buildbot is happy.

Still seems to work: I set up an add/remove loop and didn't encounter any cases where Docker was complaining about this new remove logic.  Code makes sense, too, and seems like the most straightforward implementation anyway (if you know about wait, at least).  Will merge when buildbot shows me I haven't overlooked something else.

Lots of problems on buildbot.  None clearly attributable to this change.  Merging.


Adding in footer elements

What are you trying to do?
Add in the various footer elements from the existing search.maven.org site including:

Privacy Policy
Terms of Service
About Sonatype
Apache Maven resources

What feature or behavior is this required for?
providing users easy access to to information related to Sonatype's usage policies and company information.

How could we solve this issue? (Not knowing is okay!)
index.html updates

Anything else?

This appears to be fixed now:

Yep! Thanks for commenting @TimvdLippe , got a bit of cleanup to do!


Unable to set the values for dropdown type column using 'setData'

Hello,
Runtime set/unset configuration works too good, but in some cases it fails with its behaviour. lets see the example of setData below:
setData method works like a charm for all default column types text & number. but, if we sets the column type other than this (suppose we sets type: 'dropdown'), setData not works for such specific column. While it sets the values for the rest of column perfect.
Replicate this issue:

Create empty jexcel without data property. (Means empty excel)
Add column type dropdown to any one of the specified columns with autocomplete:true and url:'/js/options.json' options
Add text and number type columns too.
Create a button and add listener to load the data from json file or json string. to table

After click on button try to append or set the json data  to jexcel using setData method.
You will see all the columns having type text or number should gets filled successfully with the values but, the value for column having type dropdown with url:'/js/options.json' and autocomplete: true options is not gets filled from the provided json. while if I change the type of the same column as text it works fine.
Thanks

@ak868308 hey did you find a way to select a default value of dropdown?


directde x change

Domain
https://directdexchange.com/
Link
https://directdexchange.com/jump/
Version
0.0.0
What browsers are you seeing the problem on?
Chrome
What OS are you seeing the problem on?
Windows
Anything else?
No response

No example links were provided. If you provide one, I'll re-open this issue.


Keep DB_CONNECTION consistent with Laravel 5

Thanks, but I'm actually :-1: here. This is a large breaking change, and I don't think laravel named it right compared to the other driver env variables.

@GrahamCampbell
I also think that the naming of laravel is not very appropriate. So I'm saying that we need to keep it consistent with Laravel 5. To do this to help users to eliminate ambiguity.

:-1: for me. This is a change I'd like to avoid forever, unless we had some migration stuff going on for upgrades.


Update cassandra versions referenced in docker-compose to 3.11.13

No related issue from brief search
Problem
Some parts of docker environment setup still references an old version of Cassandra, which is no longer downloadable, leading the setup to fail.
Solution
Update Cassandra to a supported version
Notes
None
Checklist

[ ] Unit test all changes
[ ] Update README.md if applicable
[ ] Add [WIP] to the pull request title if it's work in progress
[ ] Squash commits that aren't meaningful changes
[ ] Run sbt scalariformFormat test:scalariformFormat to make sure that the source files are formatted

Not applicable to this change
@getquill/maintainers

Apologies, this is not the case.
I was confused because an ancient fork I had hasn't been updated for ages and I didn't check before opening this PR. 😅


⚠ HopeAlley Ecards has degraded performance

In 9e4dd9e, HopeAlley Ecards (https://hopealley.com/ecards) experienced degraded performance:

HTTP code: 200
Response time: 6044 ms

Resolved: HopeAlley Ecards performance has improved in 854d108 after 12 minutes.


there is no mechanisms to abort chaincode even if it has an infinite loop

Description

If chaincode includes an infinite loop, it keeps running and there is no mechanism to abort chaincode. This happens both in invoke and query transactions.
If an infinite loop is within a Query transaction, then the validating peer detects timeout. However, the chaincode docker container keeps running even after VP returns the error.
I think the validating peer should monitor the chaincode, and abort it when it is not responding for a pre-defined period of time.
Describe How to Reproduce

write an infinite loop within invoke or query transaction.
func (this *MyCode) simpleLoop(db *shim.ChaincodeStub, function string, args []string) ([]byte, error) {
        this.logger = shim.NewLogger("MyCode")
        x := 0
        for  ; ; {
                this.logger.Infof("simpleLoop, count=%d", x)
                x++
        }
}
...
func (this *MyCode) Query(db *shim.ChaincodeStub, function string, args []string) ([]byte, error) {
                return this.simpleLoop(db, function, args)
}
func (this *MyCode) Invoke(db *shim.ChaincodeStub, function string, args []string) ([]byte, error) {
                return this.simpleLoop(db, function, args)
}

How about we start thinking about how to sidestep an unsolvable problem and use a deterministic, terminating language instead?

The peer needs to act like a hypervisor.  There are any number of things that a chaincode could do that might be construed as violating some resource constraint (heap, stack, cores, local storage, putstate, etc).  If/when it does, the peer should be able to enforce restrictions/penalties (such as denying additional heap or terminating the process).  Excessive runtime is just one such parameter.
I agree that the ideal is to provide a runtime language that is as conducive to writing deterministic/terminating programs as possible.  However, I don't think we should solely rely on this to protect the kernel.  For one thing, you always need to ensure that all operational constraints are adhered to (e.g. deterministic code could still ask for too much heap/putstate).  Secondly, we don't only need to protect runtime: compile time can arguably be riskier for a platform (at least with GPLs).

how about just stopping and destroying the container if a query/invoke times out ? Its kind of worst case but a timeout on a request borders on "unexpected / bad" behavior

@muralisrini I agree with you. I think it is a simple and practical approach.

There is gas for Ethereum. Could we use the similar concept?


[Jetbrains HTTP Client] The generator generates a README for generated endpoints with quicklinks

Fixed by https://github.com/jlengrand/openapi-generator/pull/1


Added QR Code Scanner Project.

Project Title - QR Code Scanner
Project Description -
Web based QR code scanner created using React.js with the help of HTML5QrCodeScanner API. This application allows the user to scan any type of QR code by using vast functionality of HTML5QrCodeScanner API. User will get option to scan the QR code stored locally or they can scan QR code in realtime.
Technology Used :-
HTML5
CSS3
React.js
JavaScript
Node.js

Hello, @ayushsarode kindly review the code and take necessary action as HactoberFest is about to end.

Thanks for your contribution!

Hello @ayushsarode kindly add a lable of hacktoberfest to this merge request.


add certificate options for all commands

Despite the branch name these changes would add certificate support to all available commands.
Happy to restructure them if this could be improved/simplified!

@rwaweber awesome, thanks for that! i'll pull this in as is, and will apply a change so that we provide feedback if only one or two of ca, cert and key are provided. i'd ping you on the PR if you're interested.
re testing: depending on time, i'll try my hands at changing the system test - but if you're using this as is I don't see any reason not to pull this into master (ie, these changes should not interfere if someone isn't supplying the TLS specific args)