Fetching a optional/required field doesn't return the default value

Like #22, but for fields not in a oneof, fetching an optional/required field should return the default value is it hasn't been set yet.  In proto2 syntax, the default isn't the zero, so this becomes even more important.

Do you have a repro case where this isn't happening today?  There is logic in the generator to do exactly what you're describing, so it sounds like you've found a bug.

See https://github.com/apple/swift-protobuf/blob/master/Reference/google/protobuf/descriptor.pb.swift#L283, for example. Since the type of name is String?, it returns nil when not set, rather than the default value.
Have you implemented other behavior if a different explicit value is provided for the default, rather than the zero/empty value? If not, there's currently no way to get at that default if you return nil instead of that other value.
In either case, these properties should not really be Swift optionals, because they always return something; the protocol buffer spec defines that querying a field that is not set returns the default value, not nil or some other "nothing" value. While it seems at first that Swift optionals would play well here, it doesn't match protobuf user expectations.

https://github.com/apple/swift-protobuf/blob/master/Reference/google/protobuf/descriptor.pb.swift#L598-L600 is another example for non strings.

Descriptor.proto defines that field as:
message FileDescriptorProto {
  optional string name = 1;       // file name, relative to root of source tree

So it does not have a default and is exposed as a Swift Optional.
If there's an explicit default, the generated code is slightly different.   For example, further down in descriptor.proto, you can see:
  optional JSType jstype = 6 [default = JS_NORMAL];

which generates https://github.com/apple/swift-protobuf/blob/master/Reference/google/protobuf/descriptor.pb.swift#L3055
  private var _jstype: Google_Protobuf_FieldOptions.JSType? = nil
  public var jstype: Google_Protobuf_FieldOptions.JSType? {
    get {return _jstype ?? Google_Protobuf_FieldOptions.JSType.jsNormal}
    set {_jstype = newValue}
  }

You can see some of the test cases for this behavior (including verifying nil-resettability) at https://github.com/apple/swift-protobuf/blob/master/Tests/SwiftProtobufTests/Test_AllTypes.swift#L1342

It's not very intuitive to have the type, and thus the call site usage, of the property change depending on whether there is a default value or not. Worse, it also means you can't change the default value of a field (from one with to one without, or vice versa) without compile-time breakage.
Plus, all fields in protobuf have default values; it's just that if they're not explicitly defined, they are the zero/empty value for that type.

As @allevato mentions there always is a default, the difference is proto2 syntax allows a custom default (https://developers.google.com/protocol-buffers/docs/proto#optional).
It actually get more complex with proto2 syntax enums, as the "default" is the first value listed, so it doesn't have to be zero, and if you checked the C++ version of descriptor, the has bit isn't set, but fetching the value does properly return the non zero value.
This is one of those cases where the subject at hand (protos) has a concept of "optional" (and required), but it doesn't really line up with the concepts that Swift have that share the words.

I should also add, I've seen a lot of proto files where folks do:
  optional string name = 1 [default = ""];
  optional int32 age = 2 [default = 0];

Even though it was already the default.
So keying off that is going to confuse the developers that realize there always is a default.

A nit:

it also means you can't change the default value of a field (from one with to one without, or vice versa) without compile-time breakage.

You can't change it without wire breakage anyway (*), so that might even be a good thing :)
(*) (Except for adding or removing redundant [default = 0] etc.)

@jcanizales let's not derail this issue, but changing the default doesn't break the wire format.  yes, it isn't always the best thing to do, but it can be done.  If you want to chat more, hit me up outside of here.

Then we'd still have a situation where two functionally equivalent protos (one with [default=0], one without) produce code with differently typed properties. That would be strange.
I'd still argue for generated API consistency here—users expect to be able to query properties and get a default value back, even if it's zero/empty/first-enum-value.
If and when Swift introduces some notion of "resettable properties" or "property behaviors" that have been discussed on swift-evolution, there will be a much more elegant way to model this, but I'm not convinced that the current design is the right one in Swift as it is implemented today.

changing the default ... isn't always the best thing to do, but it can be done.

Compile-time breakage isn't entirely a bad thing if it points the developer to reconsider something that may have affected their code.

I've spent a good portion of today working on this. It's been a challenge, since it touched some deep logic in the generator w.r.t. whether properties are generated as optionals or not, in the storage class or not, and so forth. Then changes to the generator cause the descriptor proto to change when I generated it, so I have to update the generator to use the updated proto, and so forth 😱
I'm finally back to a place where the code generates what I want, which is:

For proto2,

All non-repeated fields, regardless of whether they are required or optional, are exposed to the user as non-optional properties and have an accompanying hasNAME property and clearNAME() method. Fetching the user-facing property returns the default value if it's not set; this is true whether or not an explicit default was provided in the .proto file, for a consistent API and to avoid breakage if it changes. The backing storage for this property is a Swift optional where nil represents unset.
Proto extensions have been augmented with the same has/clear concept.

For proto3,

All non-repeated fields are exposed to the user as non-optional properties.
Non-repeated message/group fields have hasNAME and clearNAME, because we need to distinguish when nested messages/groups are not set.
Non-repeated scalar fields do not have the extra property/method because the default is always the zero/empty value, which is easy enough for users to set on their own.
The backing storage for proto3 scalar properties are Swift non-optional properties that default to their default value, because we don't need to distinguish between unset and default here.

That's all working and all the old tests are (finally!) passing, with one exception: Test_Required. This is because there is missing functionality for proto2, which is called out in the comment at the top of that file. Specifically, serialization and deserialization should both fail if a required field is missing (unless we're doing partial serialization, but those should be separately implemented). We need a validation operation that tests whether a proto2 message is "complete" before serializing it.
From what I can tell, it would be a fairly significant burden to get these remaining tests to pass under the new design, and since they're verifying incorrect behavior anyway, I'm inclined to just disable them so that I can clean up this branch and create a PR.
Thoughts?

You don't mentioned it, but I'm hoping maps are treated the same as repeated fields from the pov of has methods.
As long as we've got issues open for the things needing fixing, I'm fine commenting out tests with pointers to the issues so they get followed up on asap.

Correct, maps are treated the same as repeated fields (no has or clear methods).

Likewise, individual oneof fields don't expose has/clear either—those can be achieved by examining or clearing the case field itself.
I filed #98 to track the required field issues.


Ink multisig milestone 1 delivery

@0xLucca Mike has been on vacation the last few weeks, but he'll take a look again soon!

Hello @HCastano, could you take a look on the corrections that the team mentioned in our last comment?

@camimancusi Hey, I've been OOO recently. Will take a look next week 🙏

The docs are very well written.
This is a NIT, but worth mentioning. In your Smart Contracts section in the docs you mention that contracts are always untrusted and anyone can deploy one. It is possible that core developers could add pallet-contracts under permissions and require a governance body to vote before a contract is accessible, or only allow certain accounts to deploy one. It is up to the core developers to decide how they will use pallet-contracts.
I see them as three categories:

No Contracts
Contracts and anyone can deploy (untrusted / the wild west)
Permissioned Contracts (trusted or untrusted)

Sorry for taking so long to review this. I appreciate that you guys have been moving forward with development beyond this milestone 🙏
The contract and basic tests look good to me. I also see that testing has already been expanded on main. For future milestones I would like to see the whole build and test pipeline included as part of CI.
I'm still not super happy with the research documents and technical specification, but I think we can make something work.
We can considering adding an additional milestone to fix the blog posts if that's necessary.
For the research documents would it be possible for you guys to clean them up and post them on Medium or equivalent? This way at least you'll have shared your work publicly and hopefully somebody can find value from them.
I'd say that for the re-entrancy post that a few code samples could be added to better demonstrate concepts to the readers. For the ink! exploration post I would tighten the scope a bit and make it a bit more focused. I don't think that the doc should be that wide in scope as I mentioned in a previous comment.
For the technical specification, I'd still like to see other approaches to smart contract multisigs added - not just a comparison to the Multisig pallet.
That said, I won't consider the blog posts blockers for acceptance of this milestone given that a) the code you've delivered so far is fine and b) you've continued to improve upon this for following milestones.

We're glad to tell you that we are already in the advanced stages of our project. Work on the front end is underway, and we are in the final stages of the smart contract development and testing. Additionally, to enhance user experience on the front end, we have integrated a subsquid for indexing blockchain data.
Regarding the articles, we value your suggestions and we will begin the process of publishing them for a wider audience. We aim to ensure that our content is both informative and accessible to all readers.
Thank you! :100:

Hey team!
Here's the form for payment details: https://forms.gle/BUCKfygkiEvpdYna6.
Once you've filled it out, please let me know and be sure to specify what it pertains to; you can include the link to this PR delivery! Further details can be provided under the section: "Please describe which Milestone you have completed and attach the link to the Milestone delivery."
Should you have any questions, don't hesitate to ask. Thank you so much!

For guidance on how to set up identity, refer to this guide.

Hey team!
Here's the form for payment details: https://forms.gle/BUCKfygkiEvpdYna6. Once you've filled it out, please let me know and be sure to specify what it pertains to; you can include the link to this PR delivery! Further details can be provided under the section: "Please describe which Milestone you have completed and attach the link to the Milestone delivery."
Should you have any questions, don't hesitate to ask. Thank you so much!
 For guidance on how to set up identity, refer to this guide.

Hi Toma! Thanks for the confirmation!

The payment sent!
https://polkadot.subsquare.io/treasury/child-bounties/19_460
You can claim it in 1 day, thank you!


build(shared code): cron job to sync azure core daily

add a cron pipeline which runs daily to download azure core shared codes, and create PR if any update is found

resolve #3042

trial run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=2197584&view=results
generated PR: https://github.com/Azure/autorest.csharp/pull/3141

Checklist
To ensure a quick review and merge, please ensure:

[ ] The PR has a understandable title and description explaining the why and what.
[ ] The PR is opened in draft if not ready for review yet.

If opened in draft, please allocate sufficient time (24 hours) after moving out of draft for review

[ ] The branch is recent enough to not have merge conflicts upon creation.

Ready to Land?

[ ] Build is completely green

Submissions with test failures require tracking issue and approval of a CODEOWNER

[ ] At least one +1 review by a CODEOWNER
[ ] All -1 reviews are confirmed resolved by the reviewer

Override/Marking reviews stale must be discussed with CODEOWNERS first

Remaining tasks:

We need to define azuresdk-github.pat for the pipeline which currently is using my personal token.
[Optional]: we should switch to use azure-sdk/autorest.csharp to push the commit and create the PR. But that repo is not synchronized to this repo. We need to enable the auto-sync between those 2 repos.

updated according to review comments

trial run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=2199286&view=results
PR created: #3150


[hotfix] ddp + manual_optimisation

What does this PR do?

Fixes #4953
SeanNaren EDIT:
There are two parts to this fix:

We assumed that when accumulating gradients, we do not need to sync gradients across distributed processes within the training step. This is fine for automatic optimization, but where the user has complete control over all training flow in training_step we have to allow sync. Also we hard coded the behaviour to DDP, we now have custom parallel wrappers :)
In the custom DDP override, we've added training step/val step/test step into the internal forward function. The issue here is that only after we exit these calls do the reducer backward hooks get added which breaks manual optimization. The PR proposes that we allow the accelerator to add these hooks manually.

Before submitting

[x] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[x] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure your PR does only one thing, instead of bundling different changes together? Otherwise, we ask you to create a separate PR for every change.
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?
[ ] Did you verify new and existing tests pass locally with your changes?
[ ] If you made a notable change (that affects users), did you update the CHANGELOG?

PR review
Anyone in the community is free to review the PR once the tests have passed.
Before you start reviewing make sure you have read Review guidelines. In short, see the following bullet-list:

[x] Is this pull request ready for review? (if not, please submit in draft mode)
[x] Check that all items from Before submitting are resolved
[x] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified; Bugfixes should be including in bug-fix release milestones (m.f.X) and features should be included in (m.X.b) releases.

Did you have fun?
Make sure you had fun coding 🙃

Hello @tchaton! Thanks for updating this PR.

In the file tests/trainer/optimization/test_manual_optimization.py:

Line 900:121: E501 line too long (121 > 120 characters)
Line 963:34: E203 whitespace before ':'

Thanks for the review @awaelchli, I think we can reduce the priority and focus on getting this right! Seems like we need to test a lot more.

Just to put my thoughts for discussion:

The current PR adds too many edge cases of my liking. We should just do:

if manual_optimizations:
    model.add_backward_hooks()

We may not even need to worry about modifying the code too much other than defining the additional reduce hook function, for a first pass it would be good to check if calling prepare_for_backwards twice even changes any behaviour: https://github.com/pytorch/pytorch/blob/v1.4.0/torch/csrc/distributed/c10d/reducer.cpp#L496

the tests passes but loss is NaN, please check again the gradient flow in the model.

In manual optimization, we don't return the loss. Therefore, we get a loss=nan in the prob_bar. Need to take care of this. When calling self.log("train_loss", loss) it is fine :)

@awaelchli After offline discussion I think we should merge this PR as it stands, and create a followup issue to refactor the fix to be less intrusive whilst trying to sync upstream. I think over the interim it's better since currently DDP is broken with manual optim. thoughts?

hi, when can we turn off find_unused_parameters as False to use DDP when using manual_optimization?
In naive pytorch, we do not need to set this, right?

Docs

In naive pytorch, we do not need to set this, right?

If your model/optimization needs it in pytorch, it will need it in Lightning and vice versa.


Could not install package 'Xam.Plugins.Forms.RoundedBoxView <IP_ADDRESS>'

Hi,
I tried to install Xam.Plugins.Forms.RoundedBoxView <IP_ADDRESS> to Xamarin.Forms application which includes Android, iOS, WinPhone 8.1, and Windows 8.1 projects. But I have the following error in the NuGet Package Manager in my Visual Studio 2015:
"Install failed. Rolling back...
Could not install package 'Xam.Plugins.Forms.RoundedBoxView <IP_ADDRESS>'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile259', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author."
Could you help me, please? How can I install this package?
Thank you in advance!
Best Regards,
Aleksandrs

My guess is it is because the RoundedBoxView has no Win 8.1 support. Only WinPhone, so it targets a different profile. No plans at this point to add support for Win 8.1, but you can always clone the repo and retarget the projects to the different profile and add a reference in your project


Update and fix copyright headers

Updates the header according to https://docs.opensource.microsoft.com/releasing/general-guidance/copyright-headers/ and enforce it with ruff. Ref: https://docs.opensource.microsoft.com/news/2019-07-02-cela-all-rights-reserved/
Fix additional ruff lint errors due to enabling --preview rules for the copyright header lint check.

Formatting

Formatting

Any issues with formatting?


Deploye issue

Does this occur consistently?
Repro steps:

Action: appService.Deploy
Error type: 500
Error Message: An error has occurred.
Version: 0.24.7
OS: win32
OS Release: 10.0.19044
Product: Visual Studio Code
Product Version: 1.76.0
Language: en

Call Stack
new RestError extension.bundle.js:2:1709073
extension.bundle.js:2:1696547extension.bundle.js:2:1696547

Closing as a duplicate of #2405


feat(starknet_api): make executable_transaction serde

This change is

crates/starknet_api/src/executable_transaction.rs line 82 at r1 (raw file):

pub struct ClassInfo {
    // TODO: use compiled contract class.
    pub contract_class: ContractClass,

This implies this needs to be Serde as well.
Non-blocking.
Code quote:
    pub contract_class: ContractClass,


Optimize MBEDTLS configuration

-Limit number of MBEDTLS in/out buffers to 4kB instead of 16kB
-Limit number of max entropy sources to 4

@terhei , @SeppoTakalo , would you please review

No, do not merge, just rebase.


Release of libignition-sensors6

I am interesed in release of new libignition-sensors6.
What is the release process and what needs to be done in case new binary is needed?
Is there a roadmap/document that sets the expectations/requirements that need to be satisfied to release new package?

there is no fixed schedule / doc for releases. It's currently done on demand. A pre-release is being made in https://github.com/gazebosim/gz-sensors/pull/320. A stable 6.7.0 release will be made shortly afterwards.

@iche033 I can see the CI is not passing on #320 for jammy.

jammy rendering tests have been failing on github actions for some time. Something that I need to look at

@iche033 Does that disables me in getting a pre-released version?

The debbuilds failed so the release didn't go out. I created https://github.com/gazebo-release/gz-sensors6-release/pull/15 to fix the issue.


Can't change to any layout

I've built the latest master (6cd4da9e). I'm on Xubuntu 18.04 using i3. Had to sudo apt install libsigc++-2.0-dev libxkbfile-dev for a successful build.
Problem is, I can't change the layout from us to anything:
./xkb-switch -s ir
xkb-switch: /home/pooya/tools/utility/xkb-switch-i3/src/XKbSwitch.cpp:221: Condition i!=syms.end() failed. Group 'ir' is not supported by current layout. Try xkb-switch -l.
xkb-switch: layouts: [us]

de or ru also yields similar result.
./xkb-switch -l
us

Here is the script I use to change layouts:
#!/bin/bash

CURR_LANG="$(setxkbmap -query | grep layout | tr -s ' ' | cut -d ' ' -f2)"

US="us"
IR="ir"

if [[ "$CURR_LANG" == "$US" ]]
then
    setxkbmap ir
else
    setxkbmap us
fi

λ ./xkb-switch -d
[DEBUG] xkb-switch version 1.8.1
[DEBUG] layout: us
[DEBUG] variant: <empty>
us

λ ./xkb-switch -d
[DEBUG] xkb-switch version 1.8.1
[DEBUG] layout: ir
[DEBUG] variant: <empty>
ir

Am I using the program correctly?

Hi. I agree that the error message looks weird. I'll make it more human-readable.
Regarding on what could caused it.
The Xkb manual says that "You can use multi-layouts xkb configuration. What does it mean? Basically it allows to load up to four different keyboard layouts at a time". But Xkb could be reconfigured on the fly, so in fact users may use 2 approaches:

Configure Xkb once, ask it to use several layouts. Bind some key to switch those layouts.
Bind some key to switch between whole different Xkb configurations, each of them using some layout.

xkb-switch is designed for first case.. The fact that xkb-switch returns 1 layout each time makes me think that you are following the second approach instead. Could you please configure Xkb to use 2 layouts: ir and us and try once again? I think you need to call setxkbmap once  with something like  setxkbmap  ... -layout "us,ir" ....

Hi. I agree that the error message looks weird. I'll make it more human-readable.
Regarding on what could caused it.
The Xkb manual says that "You can use multi-layouts xkb configuration. What does it mean? Basically it allows to load up to four different keyboard layouts at a time". But Xkb could be reconfigured on the fly, so in fact users may use 2 approaches:

Configure Xkb once, ask it to use several layouts. Bind some key to switch those layouts.
Bind some key to switch between whole different Xkb configurations, each of them using some layout.

xkb-switch is designed for first case.. The fact that xkb-switch returns 1 layout each time makes me think that you are following the second approach instead. Could you please configure Xkb to use 2 layouts: ir and us and try once again? I think you need to call setxkbmap once  with something like  setxkbmap  ... -layout "us,ir" ....

Had to sudo apt install libsigc++-2.0-dev libxkbfile-dev for a successful build.

libxkbfile-dev is mentioned in the Readme. Could you please check how it goes with only this package installed? Previously no one reports about libsigc++2.0-dev..

Had to sudo apt install libsigc++-2.0-dev libxkbfile-dev for a successful build.

libxkbfile-dev is mentioned in the Readme. Could you please check how it goes with only this package installed? Previously no one reports about libsigc++2.0-dev..

Now, xkb-switch is designed for the first case.. The fact that xkb-switch returns 1 layout each time makes me think that you are following the second approach instead. Could you please configure Xkb to use 2 layouts: ir and us and try once again? I think you need to call setxkbmap once with something like setxkbmap ... -layout "us,ir" ....

Yeah, it seems your assessment is correct. I fixed the problem by setxkbmap -layout us,ir -option 'grp:alt_shift_toggle'. (Actually, I'm using a fork of your project from this https://github.com/Zebradil/xkb-switch-i3). Anyway, it works! Thanks.

libxkbfile-dev is mentioned in the Readme. Could you please check how it goes with only this package installed? Previously no one reports about libsigc++2.0-dev..
Sorry, that dependency was the fork I'm using (https://github.com/Zebradil/xkb-switch-i3#installation).

Now, xkb-switch is designed for the first case.. The fact that xkb-switch returns 1 layout each time makes me think that you are following the second approach instead. Could you please configure Xkb to use 2 layouts: ir and us and try once again? I think you need to call setxkbmap once with something like setxkbmap ... -layout "us,ir" ....

Yeah, it seems your assessment is correct. I fixed the problem by setxkbmap -layout us,ir -option 'grp:alt_shift_toggle'. (Actually, I'm using a fork of your project from this https://github.com/Zebradil/xkb-switch-i3). Anyway, it works! Thanks.

libxkbfile-dev is mentioned in the Readme. Could you please check how it goes with only this package installed? Previously no one reports about libsigc++2.0-dev..
Sorry, that dependency was the fork I'm using (https://github.com/Zebradil/xkb-switch-i3#installation).

OK, thats good

OK, thats good


[IA-4706, IA-4709, IA-4685] Fix 'janitor' test: Delete workspaces better

janitor => delete-orphaned-workspaces
Delete Orphaned Workspaces (nee Janitor) now:

has configurable staleness window: set timeUnits to days/hours/minutes and olderThanCount to the desired number of units.

gets all stale workspaces with the test-prefix name
for each workspace, prechecks its apps and runtimes for deletability and attempts to pre-delete them individually, aborting the attempt on failure
triggers delete once no children remain (does not wait for this delete to finish)
logs the deletes and failures together at the end of the run
It runs fairly quickly and has a high success rate.

with*Workspace cleanup step uses Delete Workspace modal
Tests that use withWorkspace and withAzureWorkspace use the new deleteWorkspaceInUi helper, which opens the delete modal as the test user, retrying until the modal registers that the workspace's children are in deletable states, then submits the delete. Blocking until the workspace is deletable substantially reduces leaked resources, since an API delete attempted before the children are ready will fail and leak the workspace. These tests may have longer runtimes in failure cases due to this cleanup, but success cases should not be slower (as resources are usually in deletable states when tests pass).
other tests wait for elements to render before calling click()
Intermittent flakes in preview-dataset, preview-drs-uri, run-catalog-filter, and catalog-utils should lessen in frequency: these tests now await findElement(<xpath>) before calling await click(<xpath>) - making sure the element is rendered before attempting the action.
new helper methods
patientlyDeleteRuntime, patientlyDeleteApp, and deleteRuntimesV2 are new helper methods (along with isResourceDeletable, which I wish I did not need - this feels like a backend responsibility and is also a duplicate of existing UI scripts/ code). retryUntil is a new util.
Jira tickets
https://broadworkbench.atlassian.net/browse/IA-4685
https://broadworkbench.atlassian.net/browse/IA-4709
https://broadworkbench.atlassian.net/browse/IA-4706

Testing strategy

[x] Run the UI integration tests several times; verify passage
[x] Check the workspaces list for UI test user Scarlett on staging; verify no leaks or the ones that are there are clean-uppable by janitor

UI integration tests passed!

Finished another flake run! arity of 50 with concurrency 10.
Tests with failures:
run-rstudio (37/50 passed)
register-user (42/50 passed)
run-analysis (46/50 passed)
import-dockstore-workflow (49/50 passed)
export-workspace-dataset-to-workspace (49/50 passed)
All results:
test-flakes results.zip
IA's environment creation tests (run-rstudio, run-analysis) are hitting Proxy errors a lot today, which is unrelated to test code. In general, none of these failures look to me like "test issues." I'm happy with the consistent performance of these changes.


VCDScopes parent dont end on a nullptr

While going through the scope hierarchy the last VCDScope* parent is not a nullptr but 0x2 and gives a segmentation fault. With the last actual scope being empty you can work around that, but it is not very nice.

Commit 642ede8ac382376767fd338578b54e87bf54457d should solve this issue.


Distance between two nodes in a Generic Tree

Description
To find the distance between any two nodes will also help to give approach to find distance between parent and child node so it is important to implement it
Domain
Data Structure
Type of Contribution
Addition
Code of Conduct

[X] I follow Contributing Guidelines & Code of conduct of LearnCPP.

/assign


Free ticket to GraphQL Summit

Hi guys,
I tagged you all because you contributed to one of APIs-guru/graphql-* repos.
I have a free ticket to GraphQL Summit on Nov 7th & 8th at San Francisco, more details here: https://summit.graphql.com/
If you are interested please leave a comment with email and I will send you a promo code.
Note: promo code is valid only until Wed Oct 31 5pm PDT
I only have one ticket so the first contributor who leaves a comment will get the ticket.

graphql-voyager: @seangransee @stekycz @brandonbyskov @mkochendorfer @cjmaio @aschepis @soneymathew @kandros @timsuchanek @tuukka @redbass @IzakMarais @LaurenceGA @steplov
graphql-faker: @JamesKyburz @peteruithoven @spawnia @securingsincity @cajames @arquio @ojczeo @amacleay @Archon- @declaneugeneleekennedy @slavik925 @wtgtybhertgeghgtwtg @DonnieWest
graphql-apis: @MikeRalphson @keithpitt @samdenty99 @gfx @jonmhong @gregology @DanielRuf @lightsprint09 @trevorblades @geraldoramos @jelz @vning93 @tuukka @nodkz @operezfuentes @raphaelcosta @mhoffman @jgcmarins
graphql-lodash: @vedmalex @mattleff @nisaacson

But I think I won't be able to travel to San Francisco, since I am from Brazil.
But I would love to receive a promo code<EMAIL_ADDRESS>
@jgcmarins Just to ensure. Do you already know a person who can and has confirmed that he/she is able to attend this conference. Right?

I have no idea how these things work, but I'll take it if it includes lodging.  Or if anyone knows of any nice cardboard boxes in San Francisco.
<EMAIL_ADDRESS>

I already have a ticket also. Thanks!

@wtgtybhertgeghgtwtg Could you please confirm that you would be able to attend?
Just don't want the promo to be wasted

Barring any unforeseen accidents, I will be able to attend.

Sorry, I can't go and I have no one to indicate

@jgcmarins NP thanks for response.
@wtgtybhertgeghgtwtg Sent you the promo code, please check your email.
@brandonbyskov @raphaelcosta Looking forward to meeting you at the event.
I will be in the hoodie with big APIs.guru logo at the front.

Ticket found it's owner 🎉 Thanks to everyone and sorry for spam.


Win11x64 STATUS_ACCESS_VIOLATION within OrtGetApiBase

I'm not sure what to think.  I am able to use the library without issue when I use the http server of the application.  When I try to use it via the directory, it gives me a (exit code: 0xc0000005, STATUS_ACCESS_VIOLATION) error.
I have used ort successfully in release and debug.  I have tried the load-dynamic feature.  I've checked all the dependencies look OK for ortruntime and it works.  but there are cases where it STATUS_ACCESS_VIOLATIONs.
Exception 0xc0000005 encountered at address 0x7ffbd9b95253: Access violation reading location 0x7ffbad5ed490

OrtGetApiBase (@OrtGetApiBase:249)
OrtSessionOptionsAppendExecutionProvider_CUDA (@OrtSessionOptionsAppendExecutionProvider_CUDA:24955)
OrtSessionOptionsAppendExecutionProvider_CUDA (@OrtSessionOptionsAppendExecutionProvider_CUDA:24955)
void ort::session::impl$5::drop(struct ort::session::SessionPointerHolder *) (c:\Users\dhorner\.cargo\registry\src\index.crates.io-6f17d22bba15001f\ort-1.16.3\src\session.rs:550)
void core::ptr::drop_in_place<ort::session::SessionPointerHolder>(struct ort::session::SessionPointerHolder *) (@core::ptr::drop_in_place<ort::session::SessionPointerHolder>:6)
void alloc::sync::Arc<ort::session::SessionPointerHolder,alloc::alloc::Global>::drop_slow<ort::session::SessionPointerHolder,alloc::alloc::Global>() (@alloc::sync::Arc<T,A>::drop_slow:10)
void alloc::sync::impl$33::drop<ort::session::SessionPointerHolder,alloc::alloc::Global>(struct alloc::sync::Arc<ort::session::SessionPointerHolder,alloc::alloc::Global> *) (@<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop:23)
void core::ptr::drop_in_place<alloc::sync::Arc<ort::session::SessionPointerHolder,alloc::alloc::Global> >(struct alloc::sync::Arc<ort::session::SessionPointerHolder,alloc::alloc::Global> *) (@core::ptr::drop_in_place<alloc::sync::Arc<ort::session::SessionPointerHolder>>:6)
void core::ptr::drop_in_place<ort::session::Session>(struct ort::session::Session *) (@core::ptr::drop_in_place<ort::session::Session>:17)
union enum2$<core::task::poll::Poll<enum2$<core::result::Result<tuple$<>,anyhow::Error> > > > rust_background_removal::main::async_block$0(struct core::pin::Pin<ref_mut$<enum2$<rust_background_removal::main::async_block_env$0> > >, struct core::task::wake::Context *) (c:\w\rust-background-removal\src\main.rs:200)
static union enum2$<core::task::poll::Poll<enum2$<core::result::Result<tuple$<>,anyhow::Error> > > > tokio::runtime::park::impl$4::block_on::closure$0<enum2$<rust_background_removal::main::async_block_env$0> >(struct tokio::runtime::park::impl$4::block_on::closure_env$0<enum2$<rust_background_removal::main::async_block_env$0> >) (c:\Users\dhorner\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.33.0\src\runtime\park.rs:282)
union enum2$<core::result::Result<enum2$<core::result::Result<tuple$<>,anyhow::Error> >,std::thread::local::AccessError> > tokio::runtime::park::CachedParkThread::block_on<enum2$<rust_background_removal::main::async_block_env$0> >(union enum2$<rust_background_removal::main::async_block_env$0>) (c:\Users\dhorner\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.33.0\src\runtime\park.rs:282)
union enum2$<core::result::Result<enum2$<core::result::Result<tuple$<>,anyhow::Error> >,std::thread::local::AccessError> > tokio::runtime::context::blocking::BlockingRegionGuard::block_on<enum2$<rust_background_removal::main::async_block_env$0> >(union enum2$<rust_background_removal::main::async_block_env$0>) (c:\Users\dhorner\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.33.0\src\runtime\context\blocking.rs:66)
tokio::runtime::scheduler::multi_thread::MultiThread::block_on::{{closure}} (c:\Users\dhorner\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.33.0\src\runtime\scheduler\multi_thread\mod.rs:87)
union enum2$<core::result::Result<tuple$<>,anyhow::Error> > tokio::runtime::context::runtime::enter_runtime<tokio::runtime::scheduler::multi_thread::impl$0::block_on::closure_env$0<enum2$<rust_background_removal::main::async_block_env$0> >,enum2$<core::result::Result<tuple$<>,anyhow::Error> > >(union enum2$<tokio::runtime::scheduler::Handle> *, bool, struct tokio::runtime::scheduler::multi_thread::impl$0::block_on::closure_env$0<enum2$<rust_background_removal::main::async_block_env$0> >, struct core::panic::location::Location *) (c:\Users\dhorner\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.33.0\src\runtime\context\runtime.rs:65)
union enum2$<core::result::Result<tuple$<>,anyhow::Error> > tokio::runtime::scheduler::multi_thread::MultiThread::block_on<enum2$<rust_background_removal::main::async_block_env$0> >(union enum2$<tokio::runtime::scheduler::Handle> *, union enum2$<rust_background_removal::main::async_block_env$0>) (c:\Users\dhorner\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.33.0\src\runtime\scheduler\multi_thread\mod.rs:86)
union enum2$<core::result::Result<tuple$<>,anyhow::Error> > tokio::runtime::runtime::Runtime::block_on<enum2$<rust_background_removal::main::async_block_env$0> >(union enum2$<rust_background_removal::main::async_block_env$0>, struct core::panic::location::Location *) (c:\Users\dhorner\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.33.0\src\runtime\runtime.rs:350)
static union enum2$<core::result::Result<tuple$<>,anyhow::Error> > rust_background_removal::main() (c:\w\rust-background-removal\src\main.rs:131)
union enum2$<core::result::Result<tuple$<>,anyhow::Error> > core::ops::function::FnOnce::call_once<enum2$<core::result::Result<tuple$<>,anyhow::Error> > (*)(),tuple$<> >( *) (@core::ops::function::FnOnce::call_once:6)
union enum2$<core::result::Result<tuple$<>,anyhow::Error> > std::sys_common::backtrace::__rust_begin_short_backtrace<enum2$<core::result::Result<tuple$<>,anyhow::Error> > (*)(),enum2$<core::result::Result<tuple$<>,anyhow::Error> > >( *) (@std::sys_common::backtrace::__rust_begin_short_backtrace:6)

https://github.com/davehorner/rust-background-removal is the code if that helps.  I know not much to go on, but I did try and capture as much detail as possible.

cargo run with that repo is working fine for me. How exactly are you using it?

The --http option runs a server and that works fine.  Just running it with no options causes it to do an access violation.  --help works fine.
I can debug and it gets to if !args.input_file.is_empty() { the next step hops to the attribute on main
#[tokio::main(worker_threads = 10)]
// #[tokio::main(flavor = "current_thread")]
//#[tokio::main(worker_threads = 1)]

which I had set to 10.  I just now tried 1 and current_thread and that did not resolve it.

I cannot reproduce this with/without CUDA, with/without --http, or with any of the configurations of tokio::main you mentioned.
Could you set the environment variable set RUST_LOG="ort=debug"? Maybe that will give some info as to what's happening.

thanks for trying!
2023-12-23T04:01:46.920168Z DEBUG ort::environment: Environment not yet initialized, creating a new one
2023-12-23T04:01:46.945897Z DEBUG ort::environment: Environment created env_ptr="0x12d4c5a3ee0"
2023-12-23T04:01:47.195056Z  INFO apply_execution_providers: ort::execution_providers: Successfully registered `CUDAExecutionProvider`
2023-12-23T04:01:47.728918Z DEBUG drop{self=Environment { env: Mutex { data: EnvironmentSingleton { name: "default", env_ptr: 0x12d4c5a3ee0 }, poisoned: false, .. }, execution_providers: [] }}: ort::environment: Dropping environment global_arc_count=2
2023-12-23T04:01:47.729263Z DEBUG drop{self=Environment { env: Mutex { data: EnvironmentSingleton { name: "default", env_ptr: 0x12d4c5a3ee0 }, poisoned: false, .. }, execution_providers: [] }}: ort::environment: Releasing environment global_arc_count=2
error: process didn't exit successfully: `target\release\rust-background-removal.exe` (exit code: 0xc0000005, STATUS_ACCESS_VIOLATION)

The environment being dropped prematurely is either the culprit or a symptom. I don't know why I'm not seeing that on my end, though.
Does it still crash if you remove ort's cuda feature from the Cargo.toml?

    Finished release [optimized] target(s) in 31.45s
     Running `target\release\rust-background-removal.exe`
2023-12-23T04:08:35.594557Z DEBUG ort::environment: Environment not yet initialized, creating a new one
2023-12-23T04:08:35.620018Z DEBUG ort::environment: Environment created env_ptr="0x1cfc99c8910"
2023-12-23T04:08:35.620428Z DEBUG apply_execution_providers: ort::execution_providers: Execution provider `CUDAExecutionProvider` was not registered because its corresponding Cargo feature is disabled.
2023-12-23T04:08:35.620818Z DEBUG apply_execution_providers: ort::execution_providers: Execution provider `CoreMLExecutionProvider` was not registered because its corresponding Cargo feature is disabled.
2023-12-23T04:08:35.621495Z  INFO apply_execution_providers: ort::execution_providers: Successfully registered `CPUExecutionProvider`
2023-12-23T04:08:35.958028Z DEBUG drop{self=Environment { env: Mutex { data: EnvironmentSingleton { name: "default", env_ptr: 0x1cfc99c8910 }, poisoned: false, .. }, execution_providers: [] }}: ort::environment: Dropping environment global_arc_count=2
2023-12-23T04:08:35.958323Z DEBUG drop{self=Environment { env: Mutex { data: EnvironmentSingleton { name: "default", env_ptr: 0x1cfc99c8910 }, poisoned: false, .. }, execution_providers: [] }}: ort::environment: Releasing environment global_arc_count=2
Error: The system cannot find the path specified. (os error 3)
error: process didn't exit successfully: `target\release\rust-background-removal.exe` (exit code: 1)

it seems cuda is the culprit.

Right, I remember running into something similar with CUDA in the past. It could be due to missing zlibwapi.dll or cuDNN, or you have CUDA 12.x installed.

was careful to install 11 only on this actually.  zlibwapi.dll would be a dependency of what?  it loads it and works fine in http, it seems to be tear down is off.  I will play here some more, now that its running under cpu its not working as I would expect...  oh fun.

zlibwapi.dll would be a dependency of what?

CUDA, for whatever godforsaken reason 😅

it loads it and works fine in http

In that case, could it be due to threading? Sessions registered with CUDA really don't like being sent across threads and can cause a STATUS_ACCESS_VIOLATION like this. Though, again, I don't know why I can't reproduce it, and it seems like if that were the case it should be the other way around (normal without, crashing with HTTP)

Well I don't think I have zlibwapi.dll available on the PATH.  It's a wild goose chase trying to figure out what I should use for that file.  I would expect to see errors about it specifically during the load and not during unload.
2023-12-23T15:05:18.542847Z DEBUG ort::environment: Environment not yet initialized, creating a new one
2023-12-23T15:05:18.567392Z DEBUG ort::environment: Environment created env_ptr="0x152d92ff920"
2023-12-23T15:05:18.877945Z  INFO apply_execution_providers: ort::execution_providers: Successfully registered `CUDAExecutionProvider`
2023-12-23T15:05:19.458356Z DEBUG drop{self=Environment { env: Mutex { data: EnvironmentSingleton { name: "default", env_ptr: 0x152d92ff920 }, poisoned: false, .. }, execution_providers: [] }}: ort::environment: Dropping environment global_arc_count=2
2023-12-23T15:05:19.458628Z DEBUG drop{self=Environment { env: Mutex { data: EnvironmentSingleton { name: "default", env_ptr: 0x152d92ff920 }, poisoned: false, .. }, execution_providers: [] }}: ort::environment: Releasing environment global_arc_count=2
error: process didn't exit successfully: `target\release\rust-background-removal.exe -I """` (exit code: 0xc0000005, STATUS_ACCESS_VIOLATION)

#[tokio::main] operates in the same manner, I thought it was the threads but I just don't know.
We can close this if you want, I don't know what else to do with it, just know its occurring.
It does work though and thank you for the software.


Add resource Good Youtube channels list under Youtube Channels Category

Request to Add category and Add resource,
Name : FreeCodeCamp
URL : https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ
Description :  In my opinion this is one the best Channel on youtube
Category : Youtube Channel
Rate plateform/tools :  10 out of 10

[ ✅ ] I've read the CONTRIBUTING.md
[ ✅ ] I've used the mentioned resource.

@hardikpnsp, @utsav00 please check this

Okay, I've added Category.
Go for it  @MananDesai54.

Okay


parser: add regex AST node

https://github.com/oxc-project/oxc/blob/afe728a73a34fc81f8e9de57bd8089f1eabc0f9e/crates/oxc_parser/src/js/expression.rs#L348-L351
This pattern node cannot be added to the AST due to not having CloneIn implemented. cc @rzvxa

@Boshen Do we want these types to be feature-gated? If so It seems this would take more time than I initially expected. It requires me to go in and refactor stuff related to our AST layout to support conditional layouts.
It would also mean that we have to distinguish between these layouts when doing AST transfer but it isn't too hard to support, It just takes more time as we need to represent conditional fields and type definitions.

@Boshen Do we want these types to be feature-gated? If so It seems this would take more time than I initially expected. It requires me to go in and refactor stuff related to our AST layout to support conditional layouts. It would also mean that we have to distinguish between these layouts when doing AST transfer but it isn't too hard to support, It just takes more time as we need to represent conditional fields and type definitions.

Welcome back ❤
No feature gate is needed, all the regular expression parsing code is really lightweight.

Welcome back ❤

Thanks Captain!⚓

No feature gate is needed, all the regular expression parsing code is really lightweight.

That's great to hear, It Simplifies the process and doesn't prevent us from adding it later on as a follow-up PR.
If you would like to feature-gate it in the future, Let me know so I can create an issue for it in the backlog.

Should we close this issue?

I'll close it since #5256 addresses this. Feel free to reopen if you think the requirements for this issue aren't met yet.


Please update lodash version to 3.10.1 like most of sails modules

Is there a good reason why it's still using 2.4.2 when almost everything else is 3.10.1?
Thanks,
Bren

done


No information is displayed when viewing some generic recipes

The normal situation is as follows

The questions are as follows

For example, the recipe for Farmer's Delight's Cooking Pot
A lot of generic recipes with markers in the upper left corner don't show any information, and there are also items that don't show any information after showing certain items while scrolling

do you have logs from when this was occurring?

From what I understood this happens when a Recipe is defined with an array of possible ingredients, instead of a tag
From the above example: Check This File

Oh I'm still troubleshooting what mod is causing this, are you guys close to figuring out the cause already?

Oh I'm still troubleshooting what mod is causing this, are you guys close to figuring out the cause already?

Check the comment above yours

Well, it looks like you found the reason. Thanks.
Then I guess I don't need to say anything.

@KuryKat please do not spread misinformation in our repo. i understand the desire to help but at-best you have repeated already known information, and at-worst you are actively getting in the way of the issue being resolved.
@Dr-WeiAL i tried to reproduce this in vanilla and failed. i think one of your mods is modifying the function of tooltips. please figure out which it is and report to them. (or send a log, like you were asked to...)

I'm sorry, didn't mean it that way :(

I found the problem, it was caused by LegendaryTooltips

Since this has been opened elsewhere and is not something EMI can fix, I'll close this issue.


Jest migration

Pull Request Test Coverage Report for Build 124

26 of 27 (96.3%)  changed or added relevant lines in 5 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-1.2%) to 90.196%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/commands/generate/generateRawClass.ts
3
4
75.0%

Totals

Change from base Build 108:
-1.2%

Covered Lines:
151

Relevant Lines:
157

💛  - Coveralls


Avoid race condition by watching simulation._id

@TristanWright This seem to fix the clone issue we have been seeing.


Support for Windows 10 on ARM64

Please support and provide a version for Windows 10 on ARM64. I'm using s Samsung Galaxy Book Go with Qualcomm Snapdragon 7 processor running the latest Windows 10. It seems that the DebugView++ 32bit works in emulation mode, but it would be nice to have a native version. The 32bit version available of DebugView++ is also older than the 64bit version.
Compiling WTL based Apps for ARM64 is also no problem anymore. I've already compiled and tested a WTL base Application on ARM64.

I can't really do anything, because I have no way to test it.

I was able to add a configuration for ARM64 to the project. The Project compiled but there is a Linker issue. The boost library 'libboost_date_time-vc141-mt-sgd-a64-1_69.lib' is not available. There are only libs for Intel x86 and x64 available.

Good work, boost needs to be compiled for the arm target, if its anything
like on the intel platform then its a fairly straightforward process.
Jan
On Fri, Aug 20, 2021, 14:56 frankh0 @.***> wrote:

I was able to add a configuration for ARM64 to the project. The Project
compiled but there is a Linker issue. The boost library
'libboost_date_time-vc141-mt-sgd-a64-1_69.lib' is not available. There are
only libs for Intel x86 and x64 available.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/CobaltFusion/DebugViewPP/issues/376#issuecomment-902673380,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABNITBGD5G3FSZJR7LUKS6DT5ZGI3ANCNFSM5B6OD3BQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email
.

now futher feedback received; I have no ARM target to develop on, if anyone wants this, please re-open the issue


Rebuild renderer to support layers

Need to rebuild the renderer to better support different layers. Should look like this:
Background sprites
Tilemap
Foreground sprites
UI
UI Sprites
All of these layers are composited at render time into the display's buffer.

This has been fixed.


Json encoding for arrays doesn't work for command line flags and environment variables

... fix coming soon...

Fixed by https://github.com/dave/blast/commit/59589bb8fc5b2c8187fcf056cf4300c39cb9e006


Docker-based Build in Deploy

Before deploying an application to the cloud, build it in a local Docker container using the base same image as the DBOS Cloud Firecracker microVMs.

A downside of the client side build approach is that it creates a dependency between cloud and client. If we upgrade or change the linux on the cloud,, we will need to do a new release of dbos-ts and clients will need to upgrade

A downside of the client side build approach is that it creates a dependency between cloud and client. If we upgrade or change the linux on the cloud,, we will need to do a new release of dbos-ts and clients will need to upgrade

This dependency will always exists because the CLI uses the cloud API to interact with DBOS.

APIs are different. And we cannot arbitrarily change APIs. They have to be kept backward compatible so that client do not break

A downside of the client side build approach is that it creates a dependency between cloud and client. If we upgrade or change the linux on the cloud,, we will need to do a new release of dbos-ts and clients will need to upgrade

This dependency will always exists because the CLI uses the cloud API to interact with DBOS.

APIs are different. And we cannot arbitrarily change APIs. They have to be kept backward compatible so that client do not break

I agree this is a downside, as it makes it harder for us to change the cloud Linux.  I don't have a good solution though. Building server-side makes build errors very hard to debug.

A downside of the client side build approach is that it creates a dependency between cloud and client. If we upgrade or change the linux on the cloud,, we will need to do a new release of dbos-ts and clients will need to upgrade

This dependency will always exists because the CLI uses the cloud API to interact with DBOS.

APIs are different. And we cannot arbitrarily change APIs. They have to be kept backward compatible so that client do not break

I agree this is a downside, as it makes it harder for us to change the cloud base image. I don't have a good solution though. Building server-side makes build errors very hard for users to debug.

What about the npx deploy command query the API to retrieve the image to use?

This is a good feature that will help reduce potential errors. But to be realistic , even if we require users to provide and run tests in the containter, they might not provide a good test. So some problems are going to leak to the cloud. So in the cloud , we still need to catch errors and report them back to client clearly -- this will be only fool proof way.


Fix EmbeddedKafka tests

Codecov Report

Merging #189 (9a92603) into main (08b5a1c) will increase coverage by 7.93%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #189      +/-   ##
==========================================
+ Coverage   60.85%   68.79%   +7.93%
==========================================
  Files         158      158
  Lines        3237     3237
  Branches       84       84
==========================================
+ Hits         1970     2227     +257
+ Misses       1267     1010     -257

Impacted Files
Coverage Δ

...StreamsUpdatePartitionsOnStateChangeListener.scala
82.85% <0.00%> (-8.58%)
:arrow_down:

...health/windows/actor/HealthSignalWindowActor.scala
93.98% <0.00%> (ø)

.../surge/kafka/streams/KafkaStreamManagerActor.scala
71.42% <0.00%> (+3.89%)
:arrow_up:

...ternal/akka/actor/ActorLifecycleManagerActor.scala
78.37% <0.00%> (+5.40%)
:arrow_up:

...a/surge/internal/domain/SurgeMessagePipeline.scala
77.77% <0.00%> (+6.17%)
:arrow_up:

...surge/internal/core/SurgePartitionRouterImpl.scala
31.25% <0.00%> (+6.25%)
:arrow_up:

.../surge/kafka/streams/SurgeStateStoreConsumer.scala
95.74% <0.00%> (+6.38%)
:arrow_up:

.../surge/internal/kafka/KafkaProducerActorImpl.scala
86.73% <0.00%> (+7.52%)
:arrow_up:

...a/surge/kafka/KafkaPartitionShardRouterActor.scala
67.78% <0.00%> (+9.39%)
:arrow_up:

...ore/commondsl/SurgeGenericBusinessLogicTrait.scala
100.00% <0.00%> (+11.11%)
:arrow_up:

... and 19 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 08b5a1c...9a92603. Read the comment docs.


Make junit tests use temporary db

Right now, the full build can't run while an instance is using the H2 database. Need to create a test application.properties that specifies a temp db

The problem is that I have a custom application.properties in the project root on my machine (with my own user passwords/etc), which the test is picking up. Probably need a custom @Configuration somewhere to ignore that for test runs.


Set application name as referrer to make it easier to troubleshoot issues

I think we should set the application name as referrer (HTTP header). Since referrer expects a URL, we could use asciidoctor/kroki.<ext>/<version> for instance: asciidoctor/kroki.js/0.12.0 and asciidoctor/kroki.rb/0.4.0.
We should also make it extensible to add additional information. For instance, when the extension is used in GitLab, we could also add the version of GitLab:
asciidoctor/kroki.rb/0.4.0?gitlab=13.10.2

Similarly, we could add the version of Antora (if available):
asciidoctor/kroki.js/0.12.0?antora=2.3.0

Alternatively, we could use a query strings:
?appName=antora&appVersion=2.3.0

?app=antora+2.3.0

I think we can use referrer

Done.

We should also make it extensible to add additional information. For instance, when the extension is used in GitLab, we could also add the version of GitLab (...)

I didn't implement this feature as we don't need it for now.


Table not created

I'm trying to create a database and table from tab fragment. My problem is the table is not created. Should database creation run on MainActivity or there is something i forgot in my code? Thank you
Version Information:

GeoPackage Android Version: mil.nga.geopackage.map:geopackage-android-map:3.0.2
GeoPackage Android Source: Central Repository
Device or Emulator: AVD

Expected Results:

The table TESTFEATURE created

Observed Results:

the database created but the table does not

Output:

No error

Steps to Reproduce:

Create a small app with two tab. Tab 1 contain map and the second contains button
Click the button
Cek the database created in /databases folder

Relevant Code:
btnCreateDB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                GeoPackageManager manager = GeoPackageFactory.getManager(getActivity());

                manager.delete("test_gpkg.gpkg");
                try {
                    manager.create("test_gpkg.gpkg");

                    GeoPackage geoPackage = manager.open("test_gpkg.gpkg");
                    if (geoPackage == null) {
                        Log.d("Error null", "Error geopackage null");
                    }
                    geoPackage.createGeometryColumnsTable();

                    SpatialReferenceSystemDao srsDao = geoPackage.getSpatialReferenceSystemDao();
                    SpatialReferenceSystem epsgSrs = srsDao.queryForId(4326l);
                    srsDao.createWebMercator();

                    GeometryColumnsDao geometryColumnsDao = geoPackage.getGeometryColumnsDao();

                    List<FeatureColumn> columns = new ArrayList<FeatureColumn>();
                    columns.add(FeatureColumn.createPrimaryKeyColumn(0, "ID"));
                    columns.add(FeatureColumn.createGeometryColumn(1, "GEOM",
                            GeometryType.MULTIPOLYGON, false, null));
                    columns.add(FeatureColumn.createColumn(2, "DESC",
                            GeoPackageDataType.TEXT, false, null));

                    FeatureTable table = new FeatureTable("TESTFEATURE", columns);
                    geoPackage.createFeatureTable(table);

                    ContentsDao contentsDao = geoPackage.getContentsDao();
                    Contents contents = new Contents();
                    contents.setTableName("TESTFEATURE");
                    contents.setDataType(ContentsDataType.FEATURES);
                    contents.setIdentifier("TESTFEATURE");
                    contents.setDescription("TEST FEATURE");
                    contents.setMinX(94d);
                    contents.setMinY(-12d);
                    contents.setMaxX(142d);
                    contents.setMaxY(7d);
                    contents.setSrs(epsgSrs);

                    contentsDao.create(contents);

                    GeometryColumns geometryColumns = new GeometryColumns();
                    geometryColumns.setContents(contents);
                    geometryColumns.setColumnName("GEOM");
                    geometryColumns.setGeometryType(GeometryType.MULTIPOLYGON);
                    geometryColumns.setSrs(contents.getSrs());
                    geometryColumns.setZ((byte) 0);
                    geometryColumns.setM((byte) 0);
                    geometryColumnsDao.create(geometryColumns);

                    Toast toast = Toast.makeText(getContext(), "Table created successfully", Toast.LENGTH_SHORT);
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();

                }
                catch (Exception ex)
                {
                    Log.d("Error",  ex.getMessage());
                    Toast toast = Toast.makeText(getContext(), ex.getMessage(), Toast.LENGTH_SHORT);
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();
                }
            }
        });

I was wondering where is the test_gpkg.gpkg located? If i add some features and show the data on top of my map, its show me correctly. but if i save the test_gpkg.gpkg from /user/0/my_app/databases/test_gpkg.gpkg (via device file explorer )
to desktop, and open it from db browser for sqlite, the table is not listed. Furthermore, qgis dont recognize it as a valid geopackage file.
Why is db bowser unable to list the table? and why is qgis dont recognize it as a valid geopackage?

I was able to duplicate your scenario and it looks like you are only missing a close statement before copying off of the the device.
geoPackage.close();
Yes the path when created internally is something like:
/data/user/0/<app_package>/databases/test_gpkg.gpkg
I copied the private app database off using
adb -d shell "run-as <app_package> cat /data/data/<app_package>/databases/test_gpkg.gpkg" > test_gpkg.gpkg
There are also methods to export the GeoPackage to an external device location, or you can perform a share with an intent / copying to cache.
Before adding the geoPackage.close()...

After adding the geoPackage.close()...

this is the second time i stumbled with geoPackage.close(). I will keep in mind that this method as important as geoPackage.open(). Thank you very much.

Today i tried to create Tile table with my classic problem. the problem is that the tile table successfully created and i'm able to open it from sqlite db browser but the file is not recognized as a valid geopackage file from qgis. Actually i just translate from my swift working version with little modification of adding tile taken from this page. Here is the code
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_exchange, container, false);
        Button btnCreateDB = (Button) rootView.findViewById(R.id.createdb);

        btnCreateDB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                GeoPackageManager manager = GeoPackageFactory.getManager(getActivity());
                manager.delete("test_gpkg.gpkg");
                try {
                    manager.create("test_gpkg.gpkg");
                    GeoPackage geoPackage = manager.open("test_gpkg.gpkg");

                    SpatialReferenceSystemDao srsDao = geoPackage.getSpatialReferenceSystemDao();
                    SpatialReferenceSystem epsgSrs = srsDao.queryForId(4326l);
                    srsDao.createWebMercator();

                    geoPackage.createGeometryColumnsTable();

                    GeometryColumnsDao geometryColumnsDao = geoPackage.getGeometryColumnsDao();
                    ContentsDao contentsDao = geoPackage.getContentsDao();

                    createBaseMap(geoPackage, contentsDao, epsgSrs);
                    geoPackage.close();

                }
                catch (Exception ex)
                {
                    Log.d("Error",  ex.getMessage());
                }
            }
        });

        return  rootView;
    }

private void createBaseMap(GeoPackage geoPackage, ContentsDao contentsDao, SpatialReferenceSystem epsgSrs)
    {
        try {
            SpatialReferenceSystemDao srsDao = geoPackage.getSpatialReferenceSystemDao();

            BoundingBox worldBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBox(0, 0, 0);
            geoPackage.createTileMatrixSetTable();
            geoPackage.createTileMatrixTable();

            Contents contents = new Contents();
            contents.setTableName("BASEMAP");
            contents.setDataType(ContentsDataType.TILES);
            contents.setIdentifier("BASEMAP");
            contents.setDescription("MY BASE MAP");
            contents.setLastChange(new Date());
            contents.setMinX(worldBoundingBox.getMinLongitude());
            contents.setMinY(worldBoundingBox.getMinLatitude());
            contents.setMaxX(worldBoundingBox.getMaxLongitude());
            contents.setMaxY(worldBoundingBox.getMaxLatitude());
            contents.setSrs(srsDao.queryForId(3857l));

            List<TileColumn> tileColumns = TileTable.createRequiredColumns();
            TileTable tileTable = new TileTable("BASEMAP", tileColumns);
            geoPackage.createTileTable(tileTable);

            contentsDao.create(contents);

            TileMatrixSetDao tileMatrixSetDao = geoPackage.getTileMatrixSetDao();
            TileMatrixSet tileMatrixSet = new TileMatrixSet();
            tileMatrixSet.setContents(contents);
            tileMatrixSet.setSrs(srsDao.queryForId(3857l));
            contents.setMinX(worldBoundingBox.getMinLongitude());
            contents.setMinY(worldBoundingBox.getMinLatitude());
            contents.setMaxX(worldBoundingBox.getMaxLongitude());
            contents.setMaxY(worldBoundingBox.getMaxLatitude());

            tileMatrixSetDao.create(tileMatrixSet);

            insertTile(geoPackage, contents, tileMatrixSet, epsgSrs);
        }
        catch (Exception ex)
        {
            Log.d("Error Tile Table", ex.getMessage());
        }
    }

private void insertTile(GeoPackage geoPackage, Contents contents, TileMatrixSet tileMatrixSet, SpatialReferenceSystem epsgSrs) {

        try {
            Projection projection = epsgSrs.getProjection();

            ProjectionTransform transformTo = projection.getTransformation(3857l);
            ProjectionTransform transformFrom = epsgSrs.getTransformation(transformTo.getToProjection());

            GeometryEnvelope env4326 = new GeometryEnvelope(94d, -11d, 141d, 6d);
            GeometryEnvelope env3857 = transformTo.transform(env4326);

            TileMatrixDao tileMatrixDao = geoPackage.getTileMatrixDao();
            Integer minZoom = 3;
            Integer maxZoom = 5;
            TileGrid totalTileGrid = TileBoundingBoxUtils.getTileGrid(new BoundingBox(env3857.getMinX(), env3857.getMinY(), env3857.getMaxX(), env3857.getMaxY()), minZoom);
            BoundingBox totalBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBox(totalTileGrid, minZoom);
            TileGrid tileGrid = totalTileGrid;
            TileDao myDao = geoPackage.getTileDao("BASEMAP");

            for (int zoom = minZoom; zoom < maxZoom + 1; zoom++) {
                byte[] tileData = downloadTile(zoom, tileGrid.getMinX(), tileGrid.getMinY());

                Integer tileWidth = 256;
                Integer tileHeight = 256;
                for (Long x = tileGrid.getMinX(); x < tileGrid.getMaxX() + 1; x++) {
                    for (Long y = tileGrid.getMinY(); y < tileGrid.getMaxY() + 1; y++) {
                        tileData = downloadTile(zoom, tileGrid.getMinX(), tileGrid.getMinY());

                        TileRow newRow = myDao.newRow();
                        newRow.setZoomLevel(zoom);
                        newRow.setTileColumn(x - tileGrid.getMinX());
                        newRow.setTileRow(y - tileGrid.getMinX());
                        newRow.setTileData(tileData);

                        myDao.create(newRow);
                    }
                }

                Long matrixWidth = tileGrid.getMaxX() - tileGrid.getMinX() + 1;
                Long matrixHeight = tileGrid.getMaxY() - tileGrid.getMinY() + 1;
                Double pixelXSize = (tileMatrixSet.getMaxX() - tileMatrixSet.getMinX()) / (matrixWidth * tileWidth);
                Double pixelYSize = (tileMatrixSet.getMaxY() - tileMatrixSet.getMinY()) / (matrixHeight * tileHeight);

                TileMatrix tileMatrix = new TileMatrix();
                tileMatrix.setContents(contents);
                tileMatrix.setZoomLevel(zoom);
                tileMatrix.setMatrixWidth(matrixWidth);
                tileMatrix.setMatrixHeight(matrixHeight);
                tileMatrix.setTileWidth(tileWidth);
                tileMatrix.setTileHeight(tileHeight);
                tileMatrix.setPixelXSize(pixelXSize);
                tileMatrix.setPixelYSize(pixelYSize);
                tileMatrixDao.create(tileMatrix);

                tileGrid = TileBoundingBoxUtils.tileGridZoomIncrease(tileGrid, zoom + 1);
            }
        }
        catch (Exception ex)
        {
            Log.d("Error", ex.getMessage());
        }
    }

    protected byte[] downloadTile(int z, long x, long y) {

        byte[] bytes = null;

        String zoomUrl = String.format("https://osm.geointservices.io/osm_tiles/%1$s/%2$s/%3$s.png",String.valueOf(z), String.valueOf(x), String.valueOf(y));

        zoomUrl = URLDecoder.decode(zoomUrl);
        URL url;
        try {
            url = new URL(zoomUrl);
        } catch (Exception ex)
        {
            throw new GeoPackageException("Failed to download tile. URL: " + zoomUrl + ", z=" + z + ", x=" + x + ", y=" + y, ex);
        }

        HttpURLConnection connection = null;
        try {
            connection = (HttpURLConnection) url.openConnection();
            connection.connect();

            int responseCode = connection.getResponseCode();
            Log.d("test", String.valueOf(connection.getResponseCode()));

            if (responseCode == HttpURLConnection.HTTP_MOVED_PERM
                    || responseCode == HttpURLConnection.HTTP_MOVED_TEMP
                    || responseCode == HttpURLConnection.HTTP_SEE_OTHER) {
                String redirect = connection.getHeaderField("Location");
                connection.disconnect();
                url = new URL(redirect);
                connection = (HttpURLConnection) url.openConnection();
                connection.connect();
            }

            if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                throw new GeoPackageException("Failed to download tile. URL: "
                        + zoomUrl + ", z=" + z + ", x=" + x + ", y=" + y);
            }

            InputStream geoPackageStream = connection.getInputStream();
            bytes = GeoPackageIOUtils.streamBytes(geoPackageStream);

        } catch (IOException e) {
            throw new GeoPackageException("Failed to download tile. URL: "
                    + zoomUrl + ", z=" + z + ", x=" + x + ", y=" + y, e);
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
        }

        return bytes;
    }

Here is error in qgis

Thank you

Can you attach or link your GeoPackage?

Attached my geopackage contains tilefeature only. It can be opened by sqlite db browser but qgis.
https://www.dropbox.com/s/ita013u88gf47qk/test_gpkg.gpkg?dl=0
Thank you

There are at least a few errors with the code.  The end GeoPackage result does not contain any tile matrix or tile rows.
The first issue appears to be performing network operations on the main thread.  Downloading tiles would need to be done off the main thread, such as in an AsyncTask.
I changed your downloadTile method to return empty bytes to see if that was the only issue.  This resulted in tile rows (w/ empty tiles) but no tile matrix rows.
The second issue looks like the min and max x/y bounds are being set on the Contents once again, and not the TileMatrixSet.  So later when pixel sizes are calculated, they are set to 0 which is invalid.
The last issue I noticed is the call to tileGridZoomIncrease is increasing the zoom level by zoom + 1 when it should be just 1.
After those changes, the resulting GeoPackage contains a Tile Matrix Set row, Tile Matrix rows, and Tile rows (empty images).  The GeoPackage opens in QGIS 3.
You probably want to verify you are not catching, logging, and continuing with errors before exporting the GeoPackage.

thank you very much. it getting fixed now. I learn a lot today. However, i'm facing problem when showing featuretile on fragment now. I think previously i have similar problem. It was solved by put geopackage.close() on maploaded events. But now, i have tab fragment. First fragment contain map and the second contain data preparation (including create database, import tiles, etc). On the map tab, i have a button to load database onto the map. the button is set visible on mapready event. if i commenting out geopackage.close() i can see the featuretiles. But i believe it is unsafe. my question is where to put geopackage.close() command? thank you

A GeoPackage is nothing more that a SQLite database file.  So treat it like you would an active database connection.  The connection needs to remain open while you are reading from or writing to it.  This includes if you have a tile overlay adding images to the map.  When the data is no longer "active", the app is closed, or the GeoPackage is going to be exported, you'd want to close the GeoPackage / database connection.

You can use the GeoPackageCache (and GeoPackageCoreCache) as an easy way to maintain open connections and close them later.

i put it at the end of code but doesn't work
GeoPackageManager manager = GeoPackageFactory.getManager(getActivity());
geoPackage = manager.open("test_gpkg.gpkg");

List<String> tileTables = geoPackage.getTileTables();
TileDao tileDao = geoPackage.getTileDao(tileTables.get(tileTables.indexOf("PETADASAR")));
TileProvider overlay = GeoPackageOverlayFactory.getTileProvider(tileDao);
final TileOverlayOptions overlayOptions = new TileOverlayOptions();
overlayOptions.tileProvider(overlay);
overlayOptions.zIndex(-2.0f);
gMap.addTileOverlay(overlayOptions);
geoPackage.close();

Right... closing a database connection there will prevent the tile overlay from reading the tiles from the closed database.

is there an event that we can catch when reading tiles from database is complete?

It would be "complete" only when the user is done looking at the tiles on the map.  When the map is scrolled, zoomed, etc, new tiles are read from the GeoPackage which needs to remain open.  This is an app specific decision.
You need to maintain an open GeoPackage as long as you expect to get tiles from it on the map in a tile overlay.
You can check out MapCache as an example of this.
Basically maintain a collection of open GeoPackages in static memory or using the Cache I mentioned above while they are being viewed on the map.  When the data is no longer needed, app is closed, or you plan to manually copy the database off of the phone, you should close them.

i tried to modify my app so then user need to open and close geopackage on their own needs. So the geopackage is never closed until the user close it. But in the middle of activity, android often complain about database is not closed but at the end it fix again.
D/DragAndDrop: Dragging
W/System: A resource failed to call close.
W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/id.co.meetbit.dev.petakerja/databases/geopackage_metadata' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System: A resource failed to call close.
A resource failed to call close.
W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/id.co.meetbit.dev.petakerja/databases/geopackage_metadata' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System: A resource failed to call close.
W/System: A resource failed to call close.
W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/id.co.meetbit.dev.petakerja/databases/geopackage_metadata' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System: A resource failed to call close.
W/System: A resource failed to call close.
W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/id.co.meetbit.dev.petakerja/databases/geopackage_metadata' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System: A resource failed to call close.
W/System: A resource failed to call close.
W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/id.co.meetbit.dev.petakerja/databases/geopackage_metadata' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System: A resource failed to call close.
W/System: A resource failed to call close.
W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/id.co.meetbit.dev.petakerja/databases/geopackage_metadata' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System: A resource failed to call close.
W/System: A resource failed to call close.
W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/id.co.meetbit.dev.petakerja/databases/geopackage_metadata' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System: A resource failed to call close.
W/System: A resource failed to call close.
W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/id.co.meetbit.dev.petakerja/databases/geopackage_metadata' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System: A resource failed to call close.
W/System: A resource failed to call close.
W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/id.co.meetbit.dev.petakerja/databases/geopackage_metadata' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System: A resource failed to call close.
W/System: A resource failed to call close.
W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/id.co.meetbit.dev.petakerja/databases/geopackage_metadata' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System: A resource failed to call close.
W/System: A resource failed to call close.
W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/id.co.meetbit.dev.petakerja/databases/geopackage_metadata' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System: A resource failed to call close.
I/chatty: uid=10091(id.co.meetbit.dev.petakerja) FinalizerDaemon identical 11 lines
W/System: A resource failed to call close.
D/TESST: 1
What i'm doing during the session is doing querying feature which is FeatureIndexResults myRes  = myQuery.queryFeatures(myBB); myRes.close(); What is other object need to close? thank you


rbxmultiple

a option to turn off the prompt stoping you from running roblox if its already open, this would be helpfull for rbxmultiple users

I've just released v1.4.4, which should now allow for this. Let me know if it works.

working wonderfully, and can confirm it works flawlessly with rbxmultiple. if you wanted to keep a "dont open new instance" option you could have the popup instead be "there is already a instance of roblox running, do you want to launch a new one?"

I probably won't add that as an official feature, especially since Multiple RBX already exists, but great to know that it works!


SOV-4108: Display pool price on pool overview

Resolves https://sovryn.atlassian.net/browse/SOV-4108

Will be done in a different PR.


Update docs to reflect latest repo architecture.

Remove files in fiftyfive-util-js from NOTICE.
Update readme to point at fiftyfive-util-js and recent Rails 3.1 + Compass blog post.

Technically this repository still does contain all the JS libraries (they have been copied in via vendorer), so we should either keep those notices or provide a link to the NOTICE file in fiftyfive-util-js.


Create ShaymesAerospace-PSS.netkan

fix an issue with the filename

@Shaymes I don't know what your intention was here. Closing, but feel free to comment if you have more information.

i had problems to insert the file and i want prevent double posts, the correct file is in patch 1 branch

I had a quick look at what you're trying to add. d6ac2fe won't work because the github repo you're referring to doesn't have any releases of the mod.

im so confused about github and the ckan manual, i have just texture files that have to add into texturereplacer and a cfg file to add in a different folder, in the manual i read i dont need a download url inside the .netkan but if i try to compile to test it it says required download missing so i  added it and it takes a lot of time to translate all the github and ckan manual stuff. i realy need a simple exlain what i have to do on my reffering site and what ckan needs

We can generate the .netkan file for you, but I'll need the KSP forum thread link, and the link to wherever users are supposed to download your mod.

texture replacer is not my mod and its already released, i only made textures for this mod,
{
"spec_version"   : 1,
"name"           : "Portrait Stats Space Suites",
"abstract"       : "Add Class/Level based Space Suites (Pilot, Engineer, Scientist, Tourist) for TextureReplacer - delete manual installed versions",
"identifier"     : "ShaymesAerospace-PSS",
"author"         : "Shaymes",
"license"        : "MIT",
"$kref"          : "#/ckan/github/Shaymes/KSP-Portrait-Stats-Suites",
"download"       : "https://github.com/Shaymes/KSP-Portrait-Stats-Suites/raw/master/Archive/060.zip",
"version"        : "0.6.0",
"release_status" : "stable",
"ksp_version"    : "any",
"resources" : {
    "homepage"     : "https://github.com/Shaymes",
    "repository"   : "https://github.com/Shaymes/KSP-Portrait-Stats-Suites"
},
"install" : [
    {
        "file"       : "GameData/Suits",
        "install_to" : "GameData/TextureReplacer"
    },
    {
        "file"       : "GameData/ShaymesAerospace",
        "install_to" : "GameData"
    }
],
"depends" : [
    { "name" : "TextureReplacer", "min_version" : "2.4.9" }
],
"recommends" : [
    { "name" : "PortraitStats", "min_version" : "6.0" }
]

}

For examples of other texture packs and how to pack/host them see:
https://kerbalstuff.com/mod/767
https://kerbalstuff.com/mod/803
and
https://kerbalstuff.com/mod/1025


P1: Mandatory Privacy manifest for App store release from May 1 onwards.

Hi team,
Starting with Spring 2024 Apple requires third-party SDKs to add a Privacy Manifest file.
https://developer.apple.com/support/third-party-SDK-requirements/
https://developer.apple.com/documentation/bundleresources/privacy_manifest_files
Does this SDK need a privacy manifest? If yes, is there any plans to add a privacy manifest?
Thanks,
Harikrishnan

moya不更新了吗

+1

Hi, I used the latest version (15.0.3) with Swift Package Manager and it works for me.

Hi, I used the latest version (15.0.3) with Swift Package Manager and it works for me.

Hey @hojatdelfan  do you know if that version works on cocoapods too?


Introduce command line usage for default command

I would like to show command line usage when user type just
./bacard
So I add command-line-usage package for generate usage contents
and then add implement usage in default.
After this patch user can see like below :
jakeMacAir:bacardi jakeyoon$ ./bacardi
[22:17:23] Requiring external module ts-node/register
[22:17:24] Using gulpfile ~/Workspace/yjaeseok/bacardi/gulpfile.ts
[22:17:24] Starting 'default'...

Bacardi

  Bacardi project is an effort to provide multi-language binding for Node.js
  native layer.

Synopsis

  $ bacardi <command>

Available Commands

  build            Builds bacardi project
  build_electron   Builds bacardi project as electron
  electron         Runs bacardi project as electron
  test             Runs Unit test bacardi project
[22:17:24] Finished 'default' after 6.99 ms
jakeMacAir:bacardi jakeyoon$

It's good to me but will be better seperate it to another file likepolymer-cli :-).

@nadongguri Ofcourse I refer to Polymer CLI
But... this patch is for just introduce !!
So I would like to discuss about this today :)

%s/bacard/bacardi/g (in your commit description)

I updated it :)


Terminal Broken

Summary
Attempting to open multiple terminal tabs via the + icon of the terminal (create new terminal session) is not working.
Expected behavior
A new terminal tab should open.
Actual behavior
A popup error is presented with the following message: "Can't Open Local Terminal"
Steps to reproduce

Open WebStorm
Open the terminal tool window
Attempt to open a multiple terminal tabs/sessions

Environment
Material Theme UI EAP Version: 0.9.0
WebStorm 2017.2.1
Build #WS-172.3544.34, built on July 31, 2017
Licensed to Jason Bacchetta
Subscription is active until November 30, 2017
JRE: 1.8.0_152-release-915-b6 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.12.6

Can you try with version 0.8.1 and tell me if it's happening?

Yes, it was working fine in the previous version.

"Can't open local terminal" Also when I hove click on anything under "Editor > Code Style" in preference tap, the iDE will stuck. Very laggy. I disabled it altogether.

Finally got access to my computer.
I didn't remove the feature in the end, just replaced uppercase to "spaced uppercase" and set it to false by default. And fixed the issue with the settings not saved.
Please tell me if there are other issues.


a script for collecting the results

@pavel-collab
We need to collect results in special way. There are some stages I had when collected first results:

build the project
get objdump files of simple and vectorized elfs
get start and final addresses of "interesting" functions (which are provided in results)
launch simple and vectorized with the Spike simulator with -g option (collection of PCs histogram)
calculate the number of executed "interesting" PCs
build a graph

The approximate example:
$ cmake --build build
$ riscv64-unknown-elf-objdump -d build/bin/simple > sim_dis
$ riscv64-unknown-elf-objdump -d build/bin/vectorized > vec_dis
$ spike -g --isa=rv64gcv pk ./build/bin/simple testsuite/1.test generation/key >& sim_stat
$ spike -g --isa=rv64gcv pk ./build/bin/vectorized testsuite/1.test generation/key >& vec_stat
$ ./script < sim_stat
apply_ls :<PHONE_NUMBER>
$ ./script < vec_stat
apply_ls : 534964122

The example of my naive script:
#include <vector>
#include <iostream>
#include <utility>
#include <algorithm>

int main() {
    std::vector<std::pair<size_t, size_t>> vec;
    unsigned num;
    std::cin >> num;

    size_t start, fin;
    std::cin >> std::hex >> start >> std::hex >> fin;

    for (int i = 0; i < num; ++i) {
        size_t tmp_1, tmp_2;
        std::cin >> std::hex >> tmp_1 >> tmp_2;

        if (tmp_1 >= start && tmp_1 <= fin) {
            vec.emplace_back(tmp_1, tmp_2);
        }
    }

    size_t res = 0;
    for (auto &&pair) {
        res += pair.second;
    }
    std::cout << "res : " << res << std::endl;
}

I want to mention that we should monitor the instruction number of non-vectorized functions and the whole program too. This way we are able to understand that vectorization doesn't worse the other functions

Related with https://github.com/Exactlywb/grasshopper_riscv/issues/8

Closed with https://github.com/Exactlywb/grasshopper_riscv/commit/db5367e823baccbe52bbea1b6eefe0610dd4b468


⚠ Turnos 24x7 has degraded performance

In 2645569, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 4631 ms

Resolved: Turnos 24x7 performance has improved in 2ca744d.


Remove useless dont_clobber_environment.patch for Godot

Motivation for this change

It will break and prevent building
If this patch is really necessary it should be done upstream

Partly reverts #34971.
Things done

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

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

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

Notify maintainers
cc @Twey

The patch exists to unbreak building. This effectively prevents Godot from adding a bunch of global paths to the environment, which breaks non-sandboxed builds.
Not in disagreement that it should be upstreamed, though!

How does it do it though?
I'm no python expert but from what I can tell the patch effectively does nothing, it just changes the way environment variables are passed through.
The patch adds env vars in a loop when before it does it sequentially.

The looping thing is a trivial refactor… the important part is that the patch assigns where the original appends. Environment comes with a PATH and PKG_CONFIG_PATH that include global paths, so using an append here effectively prepends global paths to the user's path before proceeding with the build. This patch ensures that the user's paths are passed through verbatim.
I'm curious as to how you think it breaks the build. This package has of course passed tests!

I'm curious as to why you think it breaks the build. This package has of course passed tests!

What I mean by "break", is that like any patch, if the original file is changed upstream, the patch might fail to be applied.

Actually the patch does fail which is the reason I did this PR. Sorry, I did this 2 months ago, I totally forgot about it:
$ patchPhase
applying patch /nix/store/apfyhds62va8l0ddabdrzfhflfvhjk0a-pkg_config_additions.patch
patching file platform/x11/detect.py
Hunk #1 succeeded at 201 with fuzz 2 (offset 26 lines).
Hunk #2 succeeded at 295 with fuzz 2 (offset 26 lines).
applying patch /nix/store/ja5b801bk42vyrdydv92hh6bcg48y5y0-dont_clobber_environment.patch
patching file SConstruct
Hunk #1 FAILED at 63.
1 out of 1 hunk FAILED -- saving rejects to file SConstruct.rej
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   platform/x11/detect.py

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	SConstruct.orig
	SConstruct.rej
	platform/x11/detect.py.orig

no changes added to commit (use "git add" and/or "git commit -a")

Closing due to inactivity from author.


on start block does not work with jacdac modules?

Describe the bug
Jacdac code placed in on start does not run, presumably because jacdac hasn't started up!
Repro MakeCode program:
modules.led1.animate(0xffff00, 100)

could be many things, like led1 is not role-bound yet

right... but what should the behaviour be?
CC @tballmsft

For register, we remember and set the value when the device connects but commands are lost at the moment. You should pause until connected really

From: James Devine @.>
Sent: Thursday, September 16, 2021 11:07:37 AM
To: microsoft/jacdac @.>
Cc: Peli de Halleux @.>; Assign @.>
Subject: Re: [microsoft/jacdac] on start block does not work with jacdac modules? (#619)
right... but what should the behaviour be?
CC @tballmsfthttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftballmsft&data=04|01|jhalleux%40microsoft.com|81cf8d8504b94a706c2b08d9793cddf1|72f988bf86f141af91ab2d7cd011db47|1|0|637674124596919496|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=zgmSqsLRbPwUS69tpBDVvlQwNxQQXALyKFmHSDdx4MA%3D&reserved=0
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fjacdac%2Fissues%2F619%23issuecomment-921125381&data=04|01|jhalleux%40microsoft.com|81cf8d8504b94a706c2b08d9793cddf1|72f988bf86f141af91ab2d7cd011db47|1|0|637674124596919496|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=N2Nlo7UlLqg2eC4eb8mbKO7Zwh9a8TMASxlIslHdpJk%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAA73QKIS5AHQBZJD6NNRDSLUCIW6TANCNFSM5DZVHIIA&data=04|01|jhalleux%40microsoft.com|81cf8d8504b94a706c2b08d9793cddf1|72f988bf86f141af91ab2d7cd011db47|1|0|637674124596929491|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=Zq5ka8KD6XEMqJrnyedQo%2B1tVR4LccSBHIUQhI9rbC0%3D&reserved=0.

tell peple to use on connected

got it. we need to document those APIs too


.github: add Threading implementation code owners

Per a discussion offline, Alastair Houghton is a code owner of lib/Threading and include/swift/Threading.

@swift-ci please smoke test

@swift-ci please test and merge


feat: Enable "tap-to-click" for GDM

This complements "tab-to-click" setting (for a user session) found in commit 9c3604d
Based on:

https://help.gnome.org/admin/system-admin-guide/3.38/login.html.en#appearance
"GDM Settings" app

Since the dconf defaults are set at the system level, the GDM user already inherits them, so this does effectively nothing.

Since the dconf defaults are set at the system level, the gdm user already inherits them, so this does effectively nothing.

Without changes from this commit "tab-to-click" on GDM screen doesn't work.
I've actually tested in on multiple machines and different distros (Fedora 38 with GNOME 44, Debian 12 with GNOME 43; Ubuntu 22.04 with GNOME 42)

@xalt7x in Beyond, the dconf settings are set as the defaults at a system level, so they apply to every user. I'm using a fresh Beyond install and can confirm that tap to click works in GDM.
When you change the setting per-user, you're right, that does not change the settings for the gdm user—that's something that should be fixed upstream in GNOME (and GNOME is aware of and looking into!), but that's outside the scope of this repo. But that's part of why we set it as the system-wide default in Beyond: to ensure it is the default in gdm as well.

@cassidyjames

I'm using a fresh Beyond install and can confirm that tap to click works in GDM.

I can confirm that now it really works (tried to rebase Fedora Silverblue 38 to "Beyond") . For
But 2 things bugs me:

When I'm rebasing back to Silverblue 38 or Silverblue 37 and clear settings, tap-to-click still works
Commands to clear settings I've used:

sudo rm -r /etc/dconf
sudo cp -r /usr/etc/dconf /etc/
sudo dconf update
dconf reset -f /

/usr/etc/dconf/profile/user
has such lines

user-db:user
system-db:local
system-db:site
system-db:distro

And it's not only my system, if we look at the dconf package structure and RPM package build we would see the same content
So override from this and other UBlue repositories is probably obsolete.


Modules into plugin file: "export 'default' (imported as 'plugin0') was not found in 'plugin0'

I'm trying to implement custom filters with a filter.js file in the plugins folder, and importing that with the nuxt config file with plugins: ['~plugins/filters']. If i insert a simple console.log test into this file it seems to work fine, but if I try to import anything like Vue I get the following error:
 warning  in ./.nuxt/index.js

99:25-32 "export 'default' (imported as 'plugin0') was not found in 'plugin0'

 warning  in ./.nuxt/index.js

105:19-26 "export 'default' (imported as 'plugin0') was not found in 'plugin0'

I also get a Hot Reload Loop.
How can I get this working?
(Also, thanks for the great framework!)

try upgrade to ^1.0.0-rc3


Allow folding in sub-inspectors in Array and Dictionary editors

Fixes https://github.com/godotengine/godot/issues/23759
Allows folding sections in resource sub-inspectors within the Array and Dictionary editors.

Before
After

Thanks!

Cherry-picked for 3.5.


Replace falling tile Vector indexes with a 3 * 3 Array

By using a array that has a set size instead of a vector, we can avoid some allocating on the heap. Should increase performance and maybe even lighter memory footprint (might also increase it).

We can also avoid having to allocate this array when we need a new tile set, we can simply reset it


template/generic instantiation of class from here

template/generic instantiation of class from here
Unable to create a class without that error

Could you post the entire code snippet of the class you are trying to create?

I assume this issue is resolved, closing this for now...

I assume this issue is resolved, closing this for now...

I'm seeing this as well.
~/project/foo.nim(4, 7) template/generic instantiation of `class` from here
~/.nimble/pkgs/classes-0.2.0/classes.nim(87, 16) Warning: use {.base.} for base methods; baseless methods are deprecated [UseBase]
~/project/foo.nim(4, 7) template/generic instantiation of `class` from here
~/.nimble/pkgs/classes-0.2.0/classes.nim(321, 20) Warning: use {.base.} for base methods; baseless methods are deprecated [UseBase]

Here's my basic code:
import classes

class Foo:
  var foo = true

I executed test.nim inside ~/.nimble/pkgs/classes-0.2.0 and got this output:
https://pastebin.com/raw/jgxEujff

Hi @aleclarson - fyi this is just a warning and should not prevent the app from compiling... In the logs you posted it compiled fine and all tests were passing.
I have also pushed a new version now which should fix the warning, please try it out. I don't really understand why Nim needs methods to be explicitly marked as "base" anyway...

@jjv360 Works great, thanks!

👍


pdf download link broken

The link that should allow us to download a PDF version of the Microsoft Azure GxP Guidelines is broken.
Steps to reproduce the behavior:

Go to https://gallery.technet.microsoft.com/Azure-GxP-Guidelines-ab1b98d9
Click on 'Download Microsoft Azure GxP Guidelines (April 2018).pdf'
License Terms of Use notice appears.
Scroll to bottom of Terms of Use
Click on 'I agree'
Terms of Use notice closes and page reloads.
No file is downloaded

Expected behavior
A downloadable file should appear.
Desktop:
I've tried using Windows 10, Windows 2016, Microsoft Edge, Internet Explorer, Google Chrome (and sundry other operating systems and network sites :) )

@misterpeel Is this still an issue? I've tested this on chrome and edge on windows 10 and android 9. In all of those combinations the pdf downloaded after I clicked agree.


IE11 or Edge support?

Is there support for IE11 or Edge? It doesn't seem to work for me, or on the github demo. Thanks!

the library does not support IE11. For Edge, I found an error that caused the incorrect scrolling behavior (getBoundingClientRect (). x is not supported by all browsers). I will release update later today.
Thanks!

Amazing. Thank you so much!


Update DEVELOPERS.md

I found some Improper word choice as well as Improper formatting for that I have made changes and corrected that so, now It will be easier for everyone to read.
Please merge this
accordproject/techdocs#226

No activity on this. I'm closing the PR.