v5 API support

PR Overview
This PR will address the following Issue/Feature:
https://github.com/fivetran/dbt_pinterest_source/issues/24
This PR will result in the following new package version: v0.8.0

Removal of deprecated fields
Please detail what change(s) this PR introduces and any additional information that should be known during the review of this PR:

Following Pinterest Ads deprecating the v4 API on June 30, 2023 in place of v5, the Pinterest Ads Fivetran connector now leverages the Pinterest v5 API. The following fields have been deprecated/ introduced:

Model
Removed
New

pinterest_ads__advertiser_report
billing_type, status

In the v5 upgrade, advertiser_id has been replaced by ad_account_id. However, to keep our Pinterest Ads package standard with our other ad packages, we have kept it as advertiser_id.

PR Checklist
Basic Validation
Please acknowledge that you have successfully performed the following commands locally:

[x] dbt compile
[x] dbt run –full-refresh
[x] dbt run
[x] dbt test
[n/a] dbt run –vars (if applicable)

Before marking this PR as "ready for review" the following have been applied:

[x] The appropriate issue has been linked and tagged
[x] You are assigned to the corresponding issue and this PR
[ n/a] BuildKite integration tests are passing

Detailed Validation
Please acknowledge that the following validation checks have been performed prior to marking this PR as "ready for review":

[x] You have validated these changes and assure this PR will address the respective Issue/Feature.
[x] You are reasonably confident these changes will not impact any other components of this package or any dependent packages.
[x] You have provided details below around the validation steps performed to gain confidence in these changes.

dbt run and review github docs to ensure fields have been removed
Standard Updates
Please acknowledge that your PR contains the following standard updates:

Package versioning has been appropriately indexed in the following locations:

[x] indexed within dbt_project.yml
[x] indexed within integration_tests/dbt_project.yml

[x] CHANGELOG has individual entries for each respective change in this PR

[ n/a] README updates have been applied (if applicable)

[ n/a] DECISIONLOG updates have been updated (if applicable)
[x] Appropriate yml documentation has been added (if applicable)

dbt Docs
Please acknowledge that after the above were all completed the below were applied to your branch:

[x] docs were regenerated (unless this PR does not include any code or yml updates)

If you had to summarize this PR in an emoji, which would it be?

:dancer:

I think the reason buildkite is failing is because we don't have the new data, therefore I haven't replaced the seed data used for integration testing. Which means on the joins to advertiser_id (which is the ad_account_id in source tables), are null

holding off on docs regen til PR is complete

@fivetran-reneeli I just have a few comments to be applied before this is good to go.
Additionally, I wanted to get your thoughts on possibly leveraging the advertiser_id (what is ad_account_id in the source) in the transform model joins. For example, in the pin_promotion_report we currently bring in the advertiser details via a connections from the pin_promotion_report -> campaigns -> advertiser.
In theory, we could leverage this new advertiser_id brought in from the source to perform the joins for the advertiser table. However, I am a bit wary to do this as we do not currently have data to fully validate. Therefore, I am a bit hesitant to make this update although it may be more optimized. What are your thoughts?

Hey @fivetran-joemarkiewicz I think I see what you mean-- now that ad group history and pin promotion history have advertiser_id, it would make more sense to bring it in through those tables as opposed to from the advertiser_history table. Since advertiser_history is joined in a more roundabout way than x_report and x_history.
While we don't have the data to test this, I think this makes the more logical sense, so I'm happy with making the change


Test the container

@nzmoore Do you want to give this a try now.
You should be able to do:
npm run build
npm run dev
if the container runs successfully you should be able to go to:
localhost:8080

Jean-Marcel
The build succeeds and the containers start without error.
I can reach localhost:8080 and the page shows a list of users.
The menu links and remove buttons don’t do anything but I think that is as you expect.
Regards Bill Moore
<EMAIL_ADDRESS>
On Jul 21, 2017, at 8:33 AM, Jean-Marcel Belmont<EMAIL_ADDRESS>wrote:
@nzmoore https://github.com/nzmoore Do you want to give this a try now.
You should be able to do:
npm run build
npm run dev
if the container runs successfully you should be able to go to:
localhost:8080
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/jbelmont/containerized-golang-and-vuejs/issues/1, or mute the thread https://github.com/notifications/unsubscribe-auth/AAv256esoK2wqiWCidkrH_pII16pDzcsks5sQJqdgaJpZM4OfWC7.

Awesome thanks Bill. Yeah the button and links aren't hooked up yet

On Jul 21, 2017, at 2:33 PM, Bill Moore<EMAIL_ADDRESS>wrote:
Jean-Marcel
The build succeeds and the containers start without error.
I can reach localhost:8080 and the page shows a list of users.
The menu links and remove buttons don’t do anything but I think that is as you expect.
Regards Bill Moore
<EMAIL_ADDRESS>
On Jul 21, 2017, at 8:33 AM, Jean-Marcel Belmont<EMAIL_ADDRESS>wrote:
@nzmoore https://github.com/nzmoore Do you want to give this a try now.
You should be able to do:
npm run build
npm run dev
if the container runs successfully you should be able to go to:
localhost:8080
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/jbelmont/containerized-golang-and-vuejs/issues/1, or mute the thread https://github.com/notifications/unsubscribe-auth/AAv256esoK2wqiWCidkrH_pII16pDzcsks5sQJqdgaJpZM4OfWC7.

—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub, or mute the thread.


Third security header profile doesn't contain Strict-Transport-Security

Need to paste it in again. Also it is missing # HTTP Security Headers. So two lines are wrongfully left out.

Fixed during https://github.com/nozel-org/freebsd-apache-sparry/commit/ce5574a4a0652b88ffeb308ed6b8a5ba8f2a0dca.


[BUG] Terms of Service and Privacy Policy links not working in SIGN UP

Description of the bug
Terms of Service and Privacy Policy links not redirecting/working in the SIGN UP window
Please add screenshots (if applicable)

Add any other context about the problem here
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Please assign me the issue as I would do the required changes for it to work. [Contributor - GSSoC'23]

can i do this ?

hey @Ayan-M-Dev what do you plan to add in the terms and services/privacy policy section?

Hey @J-Harsh Well for there are is a list of things that would be there for both of the section.
For 'Terms and Services'

Acceptance of Terms: Users should explicitly agree to the terms and conditions before using the website or accessing any services.
Description of Service: Clearly explain the purpose of Vibey as a web app to find online conferences and events for developers.
There are 6 more but out that these two would be at the top
For 'Privacy Policy'
Information Collection: Detail the types of personal information collected from users, such as names, email addresses, and any additional information necessary for the functioning of the web app.
Use of Information: Explain how the collected information will be used, such as for user authentication, communication, improvement of services, or aggregated analytics. If applicable, mention any targeted advertising or user profiling practices.
There are 6 more for this also but out that these two would be at the top

@Ayan-M-Dev do you want to still work on this issue?

@Deepu178 Was waiting to get assigned so that i could work on the issue.

Are you contributing under GSSoC?

Yes

I have assigned the issue you can start working on this. Good luck


Fixes 3930: speed up slow rpm searching

Summary
Adds pg_trgm extension and new index on rpm names to speed up slow search rpm queries.
It looks like this solution makes the search rpms query about 10x faster (6ms vs 60ms locally) when there is a more selective filter on rpm name.
Some caveats:

Index creation took a bit of time for me locally (fluctuated between 1 and 7 seconds)
Index size is twice the size of the b-tree index that already exists on rpms.name
Less selective filters on an rpm name (1 or 2 characters) are less efficient than the original search (70ms vs 60ms)

References:
https://www.postgresql.org/docs/current/pgtrgm.html#PGTRGM-INDEX
https://www.depesz.com/2011/02/19/waiting-for-9-1-faster-likeilike/
Testing steps

Run the migration to add the new extension and index (for QE, migration happens on deployment)
Make a request to /rpms/names with a search term like 3proxy, should be faster than before
Verify introspection takes about the same time with or without the index (for me it was about a 1 ms difference)

Checklist

[ ] Tested with snapshotting feature disabled and pulp server URL not configured if appropriate

/retest

lgtm !
deployment is successfully done!
2024-04-30 08:18:16 [    INFO] [          MainThread] successfully deployed to namespace ephemeral-derewx 2024-04-30 08:18:16 [    INFO] [          MainThread] successful deployment
and
I see the mentioned pod running in it
content-sources-backend-task-worker-6d85c65c46-gm2g7             1/1     Running     0             13m

Logs of the same pod also confirm that migration is done successfully.
(new_env) [mlahane@ibm-p8-kvm-01-fsp iqe-content-sources-plugin]$ oc logs content-sources-backend-task-worker-6d85c65c46-gm2g7 -c db-migrate-init
{"level":"warn","time":"2024-04-30T12:13:38Z","message":"config.yaml file not loaded: Config File \"config.yaml\" Not Found in \"[/configs]\""}
{"level":"debug","platform.content-sources.template":"platform.content-sources.template","time":"2024-04-30T12:13:38Z","message":"internalToReal"}
{"level":"debug","platform.content-sources.template":"platform.content-sources.template","time":"2024-04-30T12:13:38Z","message":"realToInternal"}
{"level":"debug","platform.notifications.ingress":"platform.notifications.ingress","time":"2024-04-30T12:13:38Z","message":"internalToReal"}
{"level":"debug","platform.notifications.ingress":"platform.notifications.ingress","time":"2024-04-30T12:13:38Z","message":"realToInternal"}
{"level":"error","error":"no RDS available","time":"2024-04-30T12:13:38Z","message":"Cannot read RDS CA cert"}
{"level":"warn","time":"2024-04-30T12:13:38Z","message":"Bucket name: content-sources-central-pulp-s3"}
0xc000396570
{"level":"debug","time":"2024-04-30T12:13:39Z","message":"Successfully migrated up"}


[ios_platform_images] Ignore ImageProvider.load deprecation.

We need to ignore this deprecation notice, that is incoming here:

https://github.com/flutter/flutter/pull/103496

This PR ensures that the one above can be landed without breaking the Linux flutter_plugins check.
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the relevant style guides and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/plugins repo does use dart format.)
[x] I signed the CLA.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[~] I listed at least one issue that this PR fixes in the description above.
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.
[x] I updated CHANGELOG.md to add a description of the change, following repository CHANGELOG style.
[ ] I updated/added relevant documentation (doc comments with ///).
[ ] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Adding @jmagman to reviewers, FYI (closest CODEOWNER for this).


Adding wasm type conversion ops

f32.convert_s/i64
f32.convert_u/i64
f64.convert_s/i64
f64.convert_u/i64
Fixes:
https://github.com/Microsoft/ChakraCore/issues/1866
https://github.com/Microsoft/ChakraCore/issues/1867
https://github.com/Microsoft/ChakraCore/issues/1868
https://github.com/Microsoft/ChakraCore/issues/1869

@Cellule please review.

I merged your change with some minor fixes

Thanks!


Add thumbnails production deployment

Fixes

Related to https://github.com/WordPress/openverse-infrastructure/issues/541 by @sarayourfriend
Description

Deploy the production API thumbnails service alongside the regular API deployment in Release app workflow.
Both services deploy the same images and everything, so we don't need distinct changelogs or anything else special for the thumbnails.
Testing Instructions

Make sure I got the workflow dispatch correct. I copy/pasted from the existing step and just made it only run for when API is the app and to dispatch the api_thumbnails event specifically rather than api event.
Checklist

[x] My pull request has a descriptive title (not a vague title likeUpdate index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[N/A] I added or updated tests for the changes I made (if applicable).
[N/A] I added or updated documentation (if applicable).
[N/A] I tried running the project locally and verified that there are no visible errors.
[N/A] I ran the DAG documentation generator (if applicable).

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

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

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

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

Merging with one review so that I can test the production deployment and make sure it works in case we need to deploy the API urgently at any point.


nms3d support pytorch version?

Hi @lindahua, did nms3d code support pytorch >= 1.6.0?

The NMS implementation of  this codebase is based on C++/CUDA, and it could support PyTorch from 1.1 to 1.10.


[Bug] [flink] Flink Task Standalone Mode Task Submission DS No Response

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
Task stand-alone mode Task submission DS does not respond, Flink version 1.13, DS version 3.1.3. When the Flink service is not turned off, submission DS does not respond. When the Flink service is turned off, DS tasks start scheduling, but the Flink service is turned off, and submission fails，Flink and DolphinScheduler are both stand-alone versions
What you expected to happen
DS has no response，flink has no response
How to reproduce
task stand-alone mode Task submission DS
Anything else
No response
Version
3.1.x
Are you willing to submit PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Hi, @LKK1535977706 , can you provide some detailed logs?


Network: Fixes inconsistency between normal bridge and fan bridge default ipv4.nat value

Normal bridge (and docs) say if unset, the default is false, however the fan bridge was defaulting to true if unset.
Signed-off-by: Thomas Parrott<EMAIL_ADDRESS>

@stgraber tested with:

lxc network create lxdfan0 bridge.mode=fan.
lxd init - accepting defaults.
with an existing fan network and applying the patch.


error when creating a workflow with a phrase trigger

The following command is returning an error from the server:
relay workflow:create:phrase --name=hellophrase --uri=wss://redacted.herokuapp.com --trigger="hello"
Working with the server team they noticed an unexpected inbound payload from the CLI. What they are seeing is (focusing just on the trigger phrase):
,"on_phrase":["hello"]}
but they are expecting
,"on_phrase":"hello"}
or
,"on_phrases":["hello"]}
So in the server the payload is failing the JSON validation.

Closed by #11


Puppeteer just hangs with default Chrome installation

Steps to reproduce
Tell us about your environment:

Puppeteer version: 1.11.0
Platform / OS version: Linux Ubuntu 14.04 x86_64
URLs (if applicable):
Node.js version: 10.14.1

What steps will reproduce the problem?
const puppeteer = require('puppeteer');
(async() => {
   const browser = await puppeteer.launch();
   const page = await browser.newPage();
   await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
   await page.setViewport({width:960,height:768});
   await page.goto('https://google.com/', {timeout: 40000, waitUntil: 'domcontentloaded'});
   await page.screenshot({ fullPage: true, path: 'screenshot.jpg' });
   await browser.close();
})();

Install puppeteer with npm i puppeteer command .
Run this code sample with node make-screenshot.js command to make a screenshot of webpage.

What is the expected result?
Puppeteer should save screenshot as expected.
What happens instead?
Puppeteer just hangs, timeout doesn't work.
How to fix it now?
I solved it by installing chromium-browser separately:
sudo apt update
sudo apt install -y chromium-browser
chromium-browser --version
And then we have to change executable path in the code example to make it work:
const puppeteer = require('puppeteer');
(async() => {
   const browser = await puppeteer.launch({executablePath: 'chromium-browser'}); // <- set path for chromium browser
   const page = await browser.newPage();
   await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
   await page.setViewport({width:960,height:768});
   await page.goto('https://google.com/', {timeout: 40000, waitUntil: 'domcontentloaded'});
   await page.screenshot({ fullPage: true, path: 'screenshot.jpg' });
   await browser.close();
})();

Now it works fine for me.
So that puppeteer-core and chromium-browser should be installed insted of just puppeteer.

I was facing this problem in v1.10, then downgraded to v1.9.0 and things were smooth.

@lumenier1 @Tamal You should pick the right Puppeteer version to drive Chromium. Please see our compatibility table at https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md.

@aslushnikov that doesn't seem right. Chromium is packaged with Puppeteer, we don't control the version of Chromium separately. When we do an npm install, Puppeteer automatically chooses the Chromium version it wants via a script. Puppeteer v1.10.0 specifies to use Chromium revision 599821:
https://github.com/GoogleChrome/puppeteer/blob/v1.10.0/package.json#L11
Shouldn't Puppeteer specify a version of Chromium it's compatible with?

Steps to reproduce
Tell us about your environment:

Puppeteer version: 1.11.0
Platform / OS version: Linux Ubuntu 14.04 x86_64
URLs (if applicable):
Node.js version: 10.14.1

What steps will reproduce the problem?
const puppeteer = require('puppeteer');
(async() => {
   const browser = await puppeteer.launch();
   const page = await browser.newPage();
   await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
   await page.setViewport({width:960,height:768});
   await page.goto('https://google.com/', {timeout: 40000, waitUntil: 'domcontentloaded'});
   await page.screenshot({ fullPage: true, path: 'screenshot.jpg' });
   await browser.close();
})();

Install puppeteer with npm i puppeteer command .
Run this code sample with node make-screenshot.js command to make a screenshot of webpage.

What is the expected result?
Puppeteer should save screenshot as expected.
What happens instead?
Puppeteer just hangs, timeout doesn't work.
How to fix it now?
I solved it by installing chromium-browser separately:
sudo apt update
sudo apt install -y chromium-browser
chromium-browser --version
And then we have to change executable path in the code example to make it work:
const puppeteer = require('puppeteer');
(async() => {
   const browser = await puppeteer.launch({executablePath: 'chromium-browser'}); // <- set path for chromium browser
   const page = await browser.newPage();
   await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
   await page.setViewport({width:960,height:768});
   await page.goto('https://google.com/', {timeout: 40000, waitUntil: 'domcontentloaded'});
   await page.screenshot({ fullPage: true, path: 'screenshot.jpg' });
   await browser.close();
})();

Now it works fine for me.
So that puppeteer-core and chromium-browser should be installed insted of just puppeteer.

where the puppet-core usage anyway?


Update Better Flame Particles version to 1.20.1

Better Flame Particles 1.20.1 version is currently made for 1.19, so it complains about a version mismatch.
Curse Forge page

Updated the file on Curse Forge 👍
Thanks for using my project in the modpack 🎉

Great, thank you for the update!


Tone.Reverb not working properly in Chrome

Playing the Reverb Example on Chrome (version 69.0.3497.100),
I get the following error when I change the delay time and re-generate the reverb:
Uncaught (in promise) DOMException: Failed to set the 'buffer' property on 'ConvolverNode': Cannot set buffer to non-null after it has been already been set to a non-null buffer
I don't get the error in Firefox.
I'm wondering if the prevention of resetting the buffer is something new in the Web Audio spec.
Several months ago I didn't have any errors with Tone.Reverb or Tone.Convolver on Chrome.

i noticed this too with the latest version of chrome. i guess it must be a new thing in the spec.
i'll update Reverb or Convolver so that it generates a new ConvolverNode each time you want to change the buffer to make this browser discrepancy invisible to the user.

Thanks, sounds great!

@tambien If you haven't had a chance to take care of this yet, I'm happy to pick it up.

Looking at Reverb.js, I'm tempted to approach this using ES6 set delay() {} syntax. I've implemented this for a Delay like so:
class DelayNode {
  constructor(context) {
    this.context = context;
    this.node = context.createDelay(0.5); // default to 0.5 second delay
    this.input = context.createChannelMerger();
    this.output = context.createChannelSplitter();
    this.input.connect(this.node);
    this.node.connect(this.output);
  }
  set delay(to) {
    const newNode = this.context.createDelay(to);
    this.input.disconnect(this.node);
    newNode.connect(this.output);
    this.input.connect(newNode);
    this.node.disconnect(this.output);
    this.node = newNode;
  }
}

Granted, the this.input / this.output syntax will be out of place, but I'm curious if you're attached to ES5 syntax for any particular reason.

@spencerudnick i'm planning to upgrade all modules to es6 syntax eventually


If only edge based CH is prepared no error should be thrown

When a route is done the 'edge_based' url parameter should not be required. Currently you get:
Caused by: java.lang.IllegalArgumentException: Cannot find CH RoutingAlgorithmFactory for weighting map {weighting=fastest, vehicle=car} in entries: [fastest|car|edge, faste .... The 'edge_based' url parameter is missing or does not fit the weightings. Its value was: 'false'
        at com.graphhopper.routing.ch.CHAlgoFactoryDecorator.getPreparation(CHAlgoFactoryDecorator.java:266)
        at com.graphhopper.routing.ch.CHAlgoFactoryDecorator.getDecoratedAlgorithmFactory(CHAlgoFactoryDecorator.java:246)
        at com.graphhopper.GraphHopper.getAlgorithmFactory(GraphHopper.java:760)

@easbar Yes, maybe we can:

always fall back to edge based if there really is only one edge-based CH and no node based CH (for any weighting)

add a config value that changes the default value of edge_based

GraphHopper already has a traversalMode field that is used as default for routing requests. I think this is also what it should be called: defaultTraversalMode, so this is what I will call it here. It can be set via setTraversalMode() and is automatically set by setEncodingManager() if the EncodingManager needs turn cost support.
The default can be overwritten on a per-request basis by the edge_based parameter, but also by the traversal_mode parameter (traversal_mode is overwritten by edge_based):
https://github.com/graphhopper/graphhopper/blob/bf0c7b40fa5694672f79c835244f29c0e369f04b/core/src/main/java/com/graphhopper/GraphHopper.java#L977-L980
The traversal_mode parameter definitely seems redundant (at least after #1640). Can we remove it ? I did not find documentation for it either.
To me it also seems a bit strange that the default traversalMode is edge-based as soon as encodingManager.needsTurnCostSupport() == true (so as soon as one encoder needs turn cost support).
Would it not be much more obvious to check if the encoder that is selected by the vehicle parameter supports turn costs and if yes use edge-based routing (unless edge_based is given explicitly with the request) ? I mean here:
https://github.com/graphhopper/graphhopper/blob/bf0c7b40fa5694672f79c835244f29c0e369f04b/core/src/main/java/com/graphhopper/GraphHopper.java#L982
For CH it is again different because the tMode variable in the first snippet above is ignored (it is not passed to the hints map here):
https://github.com/graphhopper/graphhopper/blob/bf0c7b40fa5694672f79c835244f29c0e369f04b/core/src/main/java/com/graphhopper/GraphHopper.java#L1020
Instead, at the moment the traversal mode for CH is solely chosen based on the edge_based request parameter (hence the error this issue was opened for). I think this is partly because if we want edge-based and node-based routing we cannot specify graph.flag_encoders=car,car|turn_costs=true, but instead we have to specify graph.flag_encoders=car|turn_costs=true and prepare.ch.edge_based: edge_and_node (because there can not be two flag encoders for car). So determining the traversal mode by FlagEncoder.supports(TurnWeighting.class) as we do for non-CH is not possible in this case.
So regarding the previous suggestions:

always fall back to edge based if there really is only one edge-based CH and no node based CH (for any weighting)

this should work

add a config value that changes the default value of edge_based

considering the complexity that is already there (for such a 'simple' thing as choosing one of two traversal modes) I am a bit hesitant to add another way to do this. Or maybe we use this config value only for CH (routing.ch.edge_based_by_default=false) ?

Maybe the situation would be improved with #1023, #493


Add Cordova support to Mill & SBT plugins

Off the back of the excellent work by @laurensdv in issue: #52
I have issues testing Cordova (boring personal computer problems) so I've only included the platforms I think I can test for now, i.e. Browser, Electron, iOS, and at a stretch OSX.
I'm also not a Cordova expert, the hope is to lay the foundations for Cordova support that hopefully others can improve on - or I will as my own needs arise.
Worth noting that I haven't finished testing this yet.

I have tested Browser, (Cordova's) Electron, and iOS and they all work fine.
I've removed OSX. Spent several hours trying to get OSX on Cordova to run WWW from a localhost (as we did with iOS) without success, and then it hit me: Why would you ever mess about with Cordova for Windows or OSX when you can just use Electron - which works perfectly! - either standalone (as in the indigoRun output folder) or from the Cordova build.
So the only real omission is Android. I haven't added Android as I'm having issues testing but hopefully someone else will do that at some point. Or I'll do it when I work out a build environment.

To use cordova here, you need to have cordova installed:
npm install -g cordova
and electron
npm install -g electron
Then do (with Mill, SBT very similar):
mill mygame.fastOpt
mill mygame.indigoCordovaBuild

Navigate to out/indigoCordovaBuild/dest/ and do:
cordova platform add ios
cordova platform add browser
cordova platform add electron
cordova prepare

...and then hopefully one of:
cordova run ios
cordova run browser
cordova run electron

Hello @davesmith00000
The cordova build works for me as well.
Had to update sbt plugin to 1.2.0 and change all references now to 0.3.1-SNAPSHOT for indigo.
StartupErrors in setup; and Keys.SPACE (in favour of SPACE in Constants) seem deprecated.
Some remarks when building with sbt:
<PROJECT HOME>/out/mygame/indigoCordovaBuild/dest/
is
<PROJECT HOME>/target/indigoCordovaBuild (no dest folder)
Then cordova build ios puts everything in
<PROJECT HOME>/platforms/ios (somehow I was expecting something inside target, but it could be expected behaviour)
Not sure if it is required for stability for cordova apps that the indigo game launch should wait for the device ready event of Cordova.js or not... (https://cordova.apache.org/docs/en/latest/cordova/events/events.html)
See also:
https://github.com/laurensdv/helloworldindigo/blob/f34312207aa41ac10e4a81b7b827f17daf8bb1a2/index-dev.html#L100
To enable the fullscreen (resize), I guess I have to configure something more in the GameConfig, viewport settings or in another place?

Then cordova build ios puts everything in
<PROJECT HOME>/platforms/ios (somehow I was expecting something inside target, but it could be expected behaviour)

Resolved by removing config.xml and package.json at <PROJECT_HOME>

To enable the fullscreen (resize), I guess I have to configure something more in the GameConfig, viewport settings or in another place?

Note that the app seems to resize the canvas, but that the web gl content is still drawn in original size in the top left corner.

All you notes at the top look accurate, and reflect some changes in 0.3.1-SNAPSHOT (like startup errors and Keys).

Then cordova build ios puts everything in <PROJECT HOME>/platforms/ios

I've been cding into the target/indigoCordovaBuild directory before doing all the cordova prepare type stuff.

Not sure if it is required for stability for cordova apps that the indigo game launch should wait for the device ready event of Cordova.js or not...

I was wondering about that... happy to be advised. I see this as a getting started point, not a definitive solution. If you (by which I mean anyone wanting to use Indigo with Cordova) want to publish via Cordova you are definitely going to have to roll up your sleeves, read the docs and work on your integration code I think. Although of course if there is just "a good way" to do all this stuff I'm delighted to get PRs that improve the basic set up.
Fullscreen has an open issue I'm planning to work on next. The ticket does point out that you don't need Indigo to do this, as such, in your embed code you can just tell the canvas to go into fullscreen mode. https://github.com/PurpleKingdomGames/indigo/issues/49

Note that the app seems to resize the canvas, but that the web gl content is still drawn in original size in the top left corner.

I'll need to look into it further. My gut instinct is that it's probably doing the right thing based on what it knows at the time, but maybe as you said, we need to wait for the device ready event? Oh! Also, in this version by default we pass the height and width into the game as flags, but you need to actually use them, might help?
https://github.com/PurpleKingdomGames/indigo/blob/94560f3af1981b4faff3ed170b18a3aa9280440b/indigo/sandbox/src/main/scala/com/example/sandbox/SandboxGame.scala#L23

On your last remark:
indeed this should be the case:
https://github.com/laurensdv/helloworldindigo/blob/f34312207aa41ac10e4a81b7b827f17daf8bb1a2/src/main/scala/config/MyGameConfig.scala#L13-L16
https://github.com/laurensdv/helloworldindigo/blob/f34312207aa41ac10e4a81b7b827f17daf8bb1a2/src/main/scala/MyGame.scala#L24-L27
However the screensize set in the viewport doesn't match the screensize of the iOS device.
I think it is a matter of expectation, I was expecting that it would resize to fullscreen with the canvas.
Not that in safari debug, the canvas is resize properly to the max of the screen including the black background, however, the viewport (or the content in the viewport?) is not resized with it.

However I noted in the startup logs in the console:
ViewPoint [412, 896]
Not sure if this has anything to do with the display size of the elements within the canvas.

Some additional remarks:
Replacing my code with the flags more explictly like your example has no impact
val gameViewport =
      (flags.get("width"), flags.get("height")) match {
        case (Some(w), Some(h)) =>
          GameViewport(w.toInt, h.toInt)

        case _ =>
          GameViewport(MyGameConfig.width, MyGameConfig.height)
      }
    BootResult
      .configOnly(MyGameConfig.config.withViewport(gameViewport))
      .withAssets(MyAssets.assets)
      .withAnimations(MyAssets.animations)
      .withFonts(MyAssets.fontInfo)
      .withSubSystems(Set(FPSCounter(MyAssets.fontKey, Point(5, 5), 60)))

I also noted, after in depth looking, that initially the canvas size is wrong,
then it is resized, then the that the first (couple of) frame(s), elements within the canvas are sized correctly before going back to the wrong size.
See below slowed animation:

Right, good stuff, let's go through it:
First, you're symlink is going to target/indigoBuild but it should go to target/indigoCordovaBuild in order to get the resizing behaviour and initial flags. The HTML/JS output is a little different between indigoBuild and indigoCordovaBuild (actually it's based on the HTML/JS generated for indigoRun).
Let's break down what's happening in that slowed down animation (which is very helpful by the way), I think what's happening is:

The game is initially loaded at the size dictated by the config - I don't think it's getting the flags?
Then the canvas is resized
Then when it renders "correctly" that is actually a glitch where the buffer is just being scaled up to meet the canvas before the renderer produces the next frame. I need to find a good work around for that. It could be done in JS/CSS I think (hide the element during resize and show it again once it's finished - or something).
Indigo catches up and renders it actually correctly i.e. no stretch/scale just a bigger window area.

The idea here was to resize the game without deforming graphics through arbitrary scaling. In your case you're scaling a game with the correct dimensions so the scale up looks ok, but if you had changed the aspect ratio it would be awful.
The make the game scale the way you want, you have two options:

Don't use the scaling method provided! You can get the effect you want with CSS (that was where I started by accident). :-)
The intention was that the developer - knowing the dimensions at boot time - could write code to render things correctly at different resolutions and aspect ratios - even render a different view entirely. In your specific case, I think all you need is to calculate a new magnification and Indigo will do the rest, i.e. it looks twice as big, so multiply your magnification by 2 and see how it looks...

Is there also a use case for "scale to fit"? Maybe. We used to have that in the days of Flash but I didn't know a Flash dev worth anything who used it because it only looked ok in the most simplistic of cases. Often you'd see off screen elements being drawn because the dimensions of the animation didn't fit the aspect of the window it was being drawn in.
Here is the sandbox running Cordova iOS, not that it hasn't been scaled up either:

Does that help?

Yes it helps, certainly! I was expecting a full screen render, but it is just being rendered in a bigger canvas.
Some comments:

Your remark about the symlink & flags. This old link is still in my repo, but I am not using it anymore.

However, you are right about the flags not being taken into account. This was because I only did the sbt indigoCordovaBuild, but didn't recompile and build the project as a while using the sbt buildGame shortcut.
Doing all the steps correctly results in, the same view, however this time the viewpoint is correctly set and I did a println on the flags just to be sure:

This approach is perfect when the screensize ( & rotation: landscape or portrait) of the target of the advice is known...
If not, then I guess you're right a CSS approach and tweaking the index.html is probably a better choice (bearing in mind your remark of the old flash developments)
I investigated this and came across a few 'boundary' cases, that may or may not be so boundary, depending on the platforms targeted (browser, mobile...)

https://www.sitepoint.com/modernize-your-html5-canvas-game/
If you check the following file, it should take some of these aspects into account, though it is not compatible with the flags approach.
https://github.com/laurensdv/helloworldindigo/blob/master/index-dev.html
which brings me to the next two points:

where can I stage such a 'tweaked' html file or template to be used instead of the default?

I noticed that when doing a indigoCordovaBuild the entire target/indigoCordovaBuild folder is being cleared and replaced. Also the config.xml etc. Is it possible to stage these files to override them in the target. Also think of splash screens or icons of the application, if I would configure them in the target directory, then a next build would clear all of it.

https://www.sitepoint.com/modernize-your-html5-canvas-game/
Good link! Thanks for sharing.

I'm going to answer both your points at the same time.
I didn't want to get into the business of managing publishing, I only wanted to give people a basic reference (or a complicated one, PR's welcome! :-)). So at the moment it's doing the standard Mill / SBT thing of clearing the folder and rebuilding - which I think is reasonable since you can't ever rely on a folder in the target dir (assuming sbt) being there because one misjudged clean and it's gone.
But I fully take your point.
I think there's two ways forward (maybe both):

Build tool education.
Further improve the plugin.

Build tool education: What I mean is that arguably the best solution is to write a custom task/command/process that inspects the build folder and copies the parts you care about into your staging folder (outside the target dir). Better yet, it would merge your custom assets with selected artefacts from the build into a new folder that could be reproduced.
Which brings me to "Further improve the plugin": We could improve the plugin to do that for you. For example, you (the user) could define a path to a folder full of the publish assets (i.e. your custom config.xml and anything else in the right folder structure) which is then merged with the build output (may also need to be able to set some build layout rules or filters or something - could be tricky).
I'm tempted to see if we can convince everyone to do the former, i.e. custom build tasks, because although we could make the plugin cleverer... I suspect it would never be clever enough. Eventually I suspect most builds are going to end up a bit unique somehow or other. I could be wrong, time will tell. I sort of feel like: If you've got as far as Cordova you should be afraid of a little file munging in a build - could even be an external shell script right? Could even be a shell script you call from SBT! :-)
I would actually do the custom task thing in order to work out how to do the plugin improvement.
All that said, if you think there's value improving the publish experience via the plugins, you would like to describe how you'd like it to work in an issue? Happy to consider it. :-)

Just in case "Build tool education" is misinterpreted in any way, all I really meant is that I could write something in the docs for future developers with a similar problem, demonstrating how you could do such a thing. A lot of people find SBT (in particular) and Mill task writing a bit mysterious.

Thank you for the clear explanation.
I must agree with you, it is a matter of clearly explaining - "build tool education" - to manage the expectations. Getting a game in an adequate resolution would just be the start of any deployment to a mobile or other platform.
I do like the idea of a folder to stage overrides of the deployment target, so when it gets replaced following a new built, the overrides are being merged with the new target.
In any case, it is good to know and to have tested, that with the right guidance & customizations deploying to multiple target platforms (using cordova) is possible.


VM test has started failing

A VM test has started failing after a change which affected stack traces.
See: https://logs.chromium.org/logs/dart/buildbucket/cr-buildbucket.appspot.com/8857679151829657616/+/steps/test_results/0/logs/new_test_failures__logs_/0
The test has very specific regexps to match particular stack traces. Those stack traces no longer match, and I'm not in a position to guess which changes are needed.
If your test depends on recognizing specific structure which is not guaranteed to be stable against changes outside of your code, you need to have a script that can automatically update the expectations, and link to that script in the error message. Alternatively, you can modify the regexps to be more permissive and only check for the parts that you are in control of.
I'll mark the failures as accepted for now, so you can update the tests at your leisure. The affected tests are:

vm/dart_2/causal_stacks/async_throws_stack_no_causal_non_symbolic_test
vm/dart_2/causal_stacks/async_throws_stack_no_causal_test

/cc @cskau-g

/cc @cskau-g

The original CL has been reverted here https://dart-review.googlesource.com/c/sdk/+/180142, so closing the issue.

The original CL has been reverted here https://dart-review.googlesource.com/c/sdk/+/180142, so closing the issue.

Please do consider whether this test can be improved, otherwise I'll file this again next time I refactor dart:async.

The tests have been made more lenient (ignoring any frames not part of the test), and I don't believe the tests are failing at this point, so I'll close this issue here.


fix parallel protein prep tests

Description
Resolves #319
Todos
Notable points that this PR has either accomplished or will accomplish.

[ ]

Status

[ ] Ready to go

Codecov Report

Merging #320 (cddc3ce) into main (91d1730) will decrease coverage by 0.81%.
The diff coverage is 100.00%.

:exclamation: Current head cddc3ce differs from pull request most recent head cdee492. Consider uploading reports for the commit cdee492 to get more accurate results

@apayne97 tests still failing trying to find some files written to temp dir.

Hmmm
# Script stderr:
Traceback (most recent call last):
  File "/Users/runner/micromamba/envs/asapdiscovery/bin/prep-targets", line 8, in <module>
    sys.exit(main())
  File "/Users/runner/work/asapdiscovery/asapdiscovery/asapdiscovery-modeling/asapdiscovery/modeling/scripts/prep_targets.py", line 87, in main
    targets: list = PreppedTargets.from_json(args.input_file).iterable
  File "/Users/runner/work/asapdiscovery/asapdiscovery/asapdiscovery-data/asapdiscovery/data/schema.py", line 119, in from_json
    with open(fn) as file:
FileNotFoundError: [Errno 2] No such file or directory: '/private/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/pytest-of-runner/pytest-0/popen-gw0/test_prep0/metadata/to_prep.json'

What is to_prep.json? I thought we skipped prep by using seqres_dict


Relative path for leafrefs in actions not resolved

Hi,
Consider the below yang definition. Relative paths in leafref typed leafs inside an action input / output statement are not resolved correctly. An extra level has to be inserted into the path, but that is against yang spec, and definitely not aligned with how confd tool validates.
Any hints how to correct this issue is much appreciated.
Thanks,
Andreas
`container c1 {
    leaf a {
        description "The referenced leaf";
        type int32;
    }

    list list-a {
        key "id";
        leaf id {
            type string;
        }
        leaf y1 {
                type leafref {
                    path "../../a"; // OK
                }
        }
        leaf y2 {
                type leafref {
                    path "/c1/a"; // OK
                }
        }
    }

    action func {
        input {
            leaf x1 {
                type leafref {
                    path "../../../a"; // ERROR! (Resolved but requires incorrect path!)
                }
            }
            leaf x2 {
                type leafref {
                    path "../../a"; // ERROR! (Not Resolved!)
                }
            }
            leaf x3 {
                type leafref {
                    path "/c1/a";  // OK
                }
            }
        }
    }

}`

Hi ,
Recently we have another user have the same problem. and this time the leafref leaf is inside the grouping, please consider this use case as well.
Thanks.

Hello,
Below is a distilled test model that expose the problem with leafref path referencing a node in another grouping.
Thanks,
Andreas
`    grouping gy-failure-profile-type {
leaf name {
type string;
}
}
grouping gy-profile-type {
leaf name {
type string;
}
leaf failure-profile {
type leafref {
// Relative path is not resolved!
path "../../gy-failure-profile/name";
// However absolute path works fine:
// path "/epg/pgw/credit-control/gy-failure-profile/name";
}
}
}
grouping pgw-type {
    container credit-control {
        list gy-failure-profile {
            key "name";
            uses gy-failure-profile-type;
        }

        list gy-profile {
            key "name";
            uses gy-profile-type;
        }
    }
}

container epg {
    container pgw {
        uses pgw-type;
    }
}`

Hi Miro,
we have another use case that grouping with relative leafref path does not work.  generally two groupings used by container, inside one grouping use leafref reference another grouping.
Thanks.
//Rim
container packet-detection {
description
"Configuration for packet detection";
uses applist;
uses filterlist;
}
grouping applist {
container application-list {
description
"Configuration for packet inspection";
config false;
list application {
choice app-matching-conditions-start-menu {
leaf filter {
description
"Matching Condition Filter identifier to match";
type leafref {
// this relative xpath works fine
path "../../../filter-list/filter/name";
}
}
list and {
leaf-list filter {
description
"Matching Condition Filter identifier to match";
type leafref {
// this releative xpath can't resolve
path "../../../../filter-list/filter/name";
}
}
}
}
}
}
}
grouping filterlist {
container filter-list {
description
"Configuration for packet inspection";
list filter {
key "name";
leaf name {
description
"Filter identifier";
type string;
mandatory true;
}
}
}
}

Hi,
In the above test model (beginning with container packet-detection) it seems the choice statement (choice app-matching-conditions-start-menu ) is causing the leafref path error. If I remove the choice statement, the model works fine.
Thanks,
Andreas


How to use LightGBM to fit a function curve?

I want to use LightGBM to fit a function curve,but in the examples of LightGBM's dataset,every record has a label column. I don't know how to create my training dataset and testset.

if the function you want to learn can be formalized as f(x) = y and the label should y.

@yonghaoXuGit
you can try following parameters:
objective = regression
num_trees = 500
learning_rate = 0.05
num_leaves = 100
reg_sqrt=False
boost_from_average=False

Thanks，that's my fault，it should be split by tab not blank.

And I have another question:are there any other restrictions on predicted data?
Because I found that the prediction result is dependent on the data's property severely.


Upgrade WebP to 1.1.0

@garrettmoon Looks like this version has a serious vulnerability that was reported in 2023, could we please work on updating the webp version, I have submitted security issue here as well, https://bugcrowd.com/submissions/9bbe0c25-c798-45c8-b0f9-8d11ff78ea3f.
The issue that I am talking about is this https://nvd.nist.gov/vuln/detail/CVE-2023-41064


blank hash and array values are not allowed

Hey guys,
So what I have found -

blank hash values
array values
lead to Intercom ignoring this event. It just doesn't appear in intercom at all. (In debugger, in keen.io and Calq it does appear)
Here is example (ruby):

        traits = {
          user_id: 1,
          event: 'some event',
          properties: {
            bar: ['1'],
            foo: {}
          }
        }
Analytics.track(traits)

Just maybe worth to mention in your doc. It took me some time.

Closed for inactivity/irrelevance. Please reopen if it's still an issue!


add alias for acorn project cli

Checklist

[ ] The title of this PR would make a good line in Acorn's Release Note's Changelog
[ ] The title of this PR ends with a link to the main issue being address in parentheses, like: This is a title (#1216). Here's an example
[ ] All relevant issues are referenced in the PR description. NOTE: don't use GitHub keywords that auto-close issues
[ ] Commits follow contributing guidance
[ ] Automated tests added to cover the changes. If tests couldn't be added, an explanation is provided in the Verification and Testing section
[ ] Changes to user-facing functionality, API, CLI, and upgrade impacts are clearly called out in PR description
[ ] PR has at least two approvals before merging (or a reasonable exception, like it's just a docs change)

This is kind of weird. Why proj?

This is kind of weird. Why proj?

acorn p is too short to distinguish it from pull/push/ps and proj seems like the most logical shortening since it's just the first syllable.

I still think it's weird. I think at that point I just use tab complete. I'm fine with it though. No real harm.


[Bug Report] Tab active bar doesn't resize when tab label changes dynamically

Element UI version
2.5.4
OS/Browsers version
Windows 7 / Chrome 72.0.3626.109
Vue version
2.6.6
Reproduction Link
https://jsfiddle.net/akki_jat/quce1ntd/2/
Steps to reproduce
Just run jsfiddle and observe
What is Expected?
Resize the tab active bar as label changes dynamically
What is actually happening?
Tab active bar is not resizing as label changes dynamically

This is another minimal demo that illustrates that very problem:
https://codepen.io/jri/pen/ZwgYJL
After 3 seconds it changes the label of the first tab dynamically. Element UI does not recalculate the position of the active bar.
Observations:
2.4.11 -- everything works fine
2.5.0 -- no active bar is shown at all
2.5.1 -- no active bar is shown at all
2.5.2 -- no active bar is shown at all
2.5.3 -- active bar is shown, but position is not recalculated
2.5.4 -- active bar is shown, but position is not recalculated

Update: the problem is still there in 2.6.0 and 2.6.1


Addon Bluemap External Extender

Add "Bluemap External Extender" to addons.conf

Awesome work, thank you so much!
Could you add a small example of how to get a iframeRef in your readme?

Added

Then hereby, I thank you for your contribution to the BlueMap ecosystem! :bmheart:


history and version updated

Coverage remained the same at 93.344% when pulling 53c58d309f3bf1c2164ece067eb343af8295ddf8 on release/1.10.0 into 8479392eb4849c525d78d43497c32c0bb108e977 on master.


Write to msg objects from python code

I know that the msg object can be read from the python code. But, I cannot find information whether writing to msg[] objects updates that object in the node-red flow.

Thank you @corndog2000 for your comments on the issue!
In the node, Python is executed and its output is passed to msg.payload.
This node is not implemented to pass to any property other than msg.payload.
Writing to the msg[] object does not update that object in the node-red flow.
The following is implemented in node/venv.js.
msg.payload = stdoutData
send(msg)

For more information on sending messages, see the following page.
https://nodered.org/docs/creating-nodes/node-js#sending-messages
For now, it is possible to output data in JSON format as follows.

However, it is passed to msg.payload.

Here is the flow.
[{"id":"b192eeb5e97d7214","type":"venv","z":"d6fad9e77ecc8414","venvconfig":"4657b6fbdbaf6f7e","name":"","code":"import json\n\ndef create_json_response():\n    data = {\n        \"payload\": msg['timestamp'],\n        \"message\": \"hello\",\n        \"number\": 100,\n    }\n    return json.dumps(data)\n\n\njson_response = create_json_response()\nprint(json_response)\n","continuous":false,"x":690,"y":2720,"wires":[["82484c9b086e3bf5","bf06d2df025c1dfa"]]},{"id":"945ebeb20fb9b18a","type":"inject","z":"d6fad9e77ecc8414","name":"","props":[{"p":"payload"},{"p":"timestamp","v":"","vt":"date"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"message\":\"hello\",\"number\":100}","payloadType":"json","x":550,"y":2720,"wires":[["b192eeb5e97d7214"]]},{"id":"82484c9b086e3bf5","type":"debug","z":"d6fad9e77ecc8414","name":"debug 183","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":850,"y":2720,"wires":[]},{"id":"bf06d2df025c1dfa","type":"json","z":"d6fad9e77ecc8414","name":"","property":"payload","action":"obj","pretty":false,"x":590,"y":2800,"wires":[["b93d26177e6fb93b"]]},{"id":"b93d26177e6fb93b","type":"debug","z":"d6fad9e77ecc8414","name":"debug 184","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":750,"y":2800,"wires":[]},{"id":"4657b6fbdbaf6f7e","type":"venv-config","venvname":"pyenv","version":"default"}]


Optional object-storage inside core

We would like to be able to spin-up an embedded object-storage implementation, inside kubernetes and inside core. Also for easier testing of the media resolver.
Makes sense to do it after the kubernetes controller is there, so that we can create it after a certain configuration is present in airy.conf.

Closing this as it is covered by https://github.com/airyhq/airy/issues/495

Closing this as it is covered by https://github.com/airyhq/airy/issues/495


Easily returns a concave poly instead of array of convex polys

Thanks for this library but If I pass a simple concave shape array then it is simply returned as if it's a convex shape (this is easily repeatable with other simple concave shapes).  For example:
[[0.2, 0.2], [0.5, -0.5], [0.5, 0.5], [-0.5, 0.5]]

Sorry -not a bug - the library is intact - it appears to be a floating point problem: if I pass integers then everything works!  Thanks for your work on this :)

Out of curiosity - what code did you run to get this floating point problem?

It was a simple four-vertex array, with values like 0.499995 in the console.  I've just tried to repeat the problem but no luck.  My 'fix' was to multiply the values and use Math.floor() prior to sending the array to polygonDecomp().  Not sure what might have 'fixed' it as it doesn't appear to be my using integers...


Assign players to games based on answers in intro steps

Want to be able to specify in a treatment what the group composition is:
treatments:
  - name: demo_2p
    desc: 2 player demo for showing off what the deliberation project can do.
    playerCount: 2
    groupComposition:
      - name: democrat
        position: 0
        conditions:
          - sourceType: survey
            surveyName: PoliticalPartyUS
            result: position
            comparator: lessThan
            value: 0
         - promptName: individualMultipleChoice
            comparator: equal
            value: HTML
      - name: republican
        position: 1
        conditions:
          - sourceType: survey
            surveyName: PoliticalPartyUS
            result: position
            comparator: greaterThan
            value: 0

To do this, we need to be able to randomize people to conditions subject to constraints. (for now, we'll ignore treatment prioritization and optimization to get best usage out of participants).

There is a different algorithm that optimizes assigning participants to treatments vs one that optimizes filling treatments vs one that optimizes for randomization?
We may have cases where there are more treatment slots than participants, or vice versa.
we have the option to not assign someone to a game, and have them participate in the next dispatch. this could happen a lot, for example, if only one person is ready when the dispatch runs. a longer dispatch window minimizes it.

Lit

Formally, our algorithm defines the “matchability” of a person as the total number of other people in the pool to whom they could be matched. At each iteration, the algorithm sorts everyone in the pool by matchability. Then the algorithm selects a pair from the pool, composed of (a) the person in the pool who is least matchable and (b) the least-matchable remaining person who can also be a match for (a). If the selected pair sufficiently disagrees on more than one issue, they are assigned to discuss the issue that has been assigned to the fewest number of pairs thus far. The two people in this generated pair are then removed from the pool. Then the whole process is repeated: Matchability is re-calculated for the remaining pool, the least-matchable remaining person is found and paired, and so on, until the whole pool has been partnered up. This guarantees that as the set of remaining matches dwindles, the last few people remaining will be the most-matchable, while also encouraging some balance across the three issues along the way. (Yeomans, Michael, Julia Minson, Hanne Collins, Frances Chen, and Francesca Gino. 2020. “Conversational Receptiveness: Improving Engagement with Opposing Views.” Organizational Behavior and Human Decision Processes 160 (September): 131–48.)

assignment problem
This is similar to the assignment problem where only some solutions are valid (ie, ones where games are full).
Algorithm 1

shuffle treatments and participants
take the first treatment
walk down the list of participants, if a participant meets one of the requirements of the treatment, provisionally assign them.
continue down the list of participants, adding participants to remaining slots
if the condition fills, commit those participants to that treatment, remove them from the list of participants, and move on to the next treatment.
if the condition doesn't fill before we run out of participants, then return all provisionally assigned participants to their same position in the queue, and move on to the next treatment.
continue until you run out of treatments. If you still have participants, reshuffle treatments and start over. Do this up to k times. (as its possible you'll never assign all participants).

This algorithm probably has the best claim to making "unbiased" assignments, as we aren't intentionally pairing rare people with other rare people.
Also, here we don't have to compute the full constraint matrix, which could be expensive if there are large numbers of conditions and participants in the dispatch. But in practice, we won't have more than a few hundred participants at once on one server, as we couldn't handle the load in other ways.

Algorithm 2 (assign highest constraints first)

compute a matrix where rows are the participants, and columns are positions to be filled in the set of treatments
drop all treatment columns that don't have at least 1 person in each position.
sort the matrix in terms of most constrained to least constrained (number of slots they could fill, randomize to break ties)
for the most constrained individual, pick one of the slots they could fill (maybe the most constrained treatment), then walk down the chart to find the first person who could fill another slot in that game, and then again for any remaining slots
if all slots for that condition fill, assign them to the game, remove the treatment columns and participant rows, and run again with remaining treatments and participants.
if the slots in that condition don't fill, find the next most constrained treatment for the most constrained player, and run through again
if there are more than 2 players, but none of the remaining treatments can be filled, allow repeats of a condition by adding all treatment conditions back to the matrix for remaining participants.
have a condition that accepts anyone (a solo survey, for example), making it by definition the least constrained condition for any player, to catch players who can't be matched in any condition.

This should heuristically do better at making sure that everyone is assigned to a game. We could also track the number of dispatch cycles a person has participated in, and then have a game that requires participants to go through at least n dispatch cycles in order to be eligible.
Algorithm 3 (branch and bound?)

set up treatments list to include all treatments in condition first, assigning them a cost of 1. Then repeat all those treatments with a cost of 2, 3, etc. Add a pseudo-treatment which is "not assigned" with a cost of 5, that will send participants back to the assignment pool for the next dispatch to handle. Sort the list from min cost to max, randomizing to break ties.
Set the current cost to 5 (cost of not assigning) * number of people n.
Set the theoretical minimum cost to the sum of the lowest n slot costs, plus any odd-persons-out with the cost of not assigning.
Shuffle the list of participants
Walk through the cost-ordered list of treatments, find the first treatment the first person is eligible for, add it to the assignment vector and push to a priority queue that includes the currently assigned cost, the current assignment vector (list of assigned slots), and the list of "committed open slots"
If all participants are assigned, compute the cost and compare it to the minimum theoretical cost. if it is "close enough", ie, equals, or 80% improvement over the not assigned cost, etc. then return
If the number of "committed open slots" is greater than the number of

pass players directly to dispatch algorithm, instead of just player ids, and replicate existing behavior.

Set up several treatment conditions with different, overlapping conditions.

There is only one way these players can be assigned to these games successfully

Set up cypress test with conditions that can be partitioned this way.

Alternative specification:
We have a population of n agents where n is between 1 and 100. We have a set of m tasks where m is between 1 and 200. Agents are only qualified for some percentage p of all tasks, where p is between 30 and 70%. Agents can only be assigned to tasks they are qualified for. Tasks are grouped into k groups that vary in size between 1 and 12 tasks per group. Cost is computed for each group of tasks. If all tasks in a group have an agent assigned to them, the group is considered "full". If a group has no agents assigned to any of its tasks, it is considered "empty". If a group has some tasks with agents assigned and some tasks with no agent assigned, they are considered "partially filled".  There should be no "partially filled" groups in the final solution - that is, no groups where some tasks in the group are assigned an agent, and others are not. Each agent must be assigned to exactly one task. All agents must be assigned a task, but not all task groups need to be filled. Some task groups may be "empty".
I need an algorithm to assign agents to tasks. The algorithm must meet all of the given constraints: assigning one task per agent, assigning all agents, only assigning agents to tasks they are qualified for, and ensuring no partially filled groups. I do not need to find the optimum cost, merely a reasonable cost. The algorithm needs to return an answer in less than 2 seconds, and be efficient in terms of memory usage.
Assume you start with a matrix where rows are agents and columns are tasks, and values are 1 if the agent can do the task and zero otherwise. You also have a list of task groups, where each group is represented as a list of task column indices in the task*agent matrix. You also have a list of costs for each task group. Design and describe this algorithm, and then provide an implementation of it as a javascript function, noting any dependencies. Then provide a set of logic tests that test that the given constraints are obeyed.

The problem splits into two types. First we choose a treatment and a position for a player. Then, we must fill that treatment, otherwise there is no point in continuing down this branch - it will never be valid. So we solve the subproblem for only treatment positions that are committed to by the first choice of treatment and position.
The problem with dealing with participants in random order is that if you assign someone to a condition that doesn't have anyone who can be its partner, you have to go through all the subtrees of assigning participants to other positions in order to find that out, and then recurse back to the level where you got stuck. Ideally, if it is impossible to fill that subgroup we'd find out right away, and never go down that path.
So, solve the subproblem only for committed slots,  assign complete treatments and then branch down.


Different TargetFrameworks

Hi,
I was looking at this project again, came across an inconsistancy, just wanted to make you aware of it.
All the original projects target
netstandard2.0 and net452
The new test projects - TestServerStream and TestClientStream target
netcoreapp2.2
On a separate note, i have applied a some of the Roslyn, FxCopAnalyzers and StyleCop.Analyzers to my branch of this and a few other things. Can send a pull request if you would like the changes. Have a flick through, lot of commits, all are pretty small.
https://github.com/MrMikeJJ/WatsonTcp/commits/master
8th July did the analysers stuff, 9th July, bits of refactoring.
thanks
Mike

Thank you @MrMikeJJ - sorry for the delay in getting back to you, I was out of the country.  I will add this to the list and really appreciate your help!  Cheers, Joel

Haven't forgotten about this @MrMikeJJ - just buried on another project that I'm adding some features on, hope to get to these this week.  Cheers

No worries, hope you had a nice time while you were out of the country. :)
Got a few more changes coming soon as well hopefully :)

Hi @MrMikeJJ I noticed in your PR after I merged into master that in WatsonTcpClient.cs, private ClientMetadata _Server is never initialized.  Do you see this on your end?

WatsonTcpClient.cs
From your PR: https://github.com/jchristn/WatsonTcp/blob/947eb966e7f78faca41d1edbf2804316c22f45df/WatsonTcp/WatsonTcpClient.cs
From before:
https://github.com/jchristn/WatsonTcp/blob/1b7153fb135ebcaaaea58db85844050e77289be3/WatsonTcp/WatsonTcpClient.cs
It looks like the streams etc were collapsed into ClientMetadata, but ClientMetadata was never initialized.
Out of curiosity did you pull from master (1.3.12) before making these changes or were they made to a previous version?

Sorry for blowing up your email, it looks like this one may not have been included in the PR, because you clearly did initialize it: https://github.com/jchristn/WatsonTcp/commit/eba86a1b90ecdc9a1e997b194dcbadee08dff200

No worries, sorry for not replying, it nearly midnight and I am drunk from works summer party (with a free bar!). A bit weird how it didn't pull that one in.
Got a few more chages to send through, probably Saturday. While I was looking through, I was thinking I can chuck all the send messages functions into the clientmetadata class, so they aren't duplicated (and virtually identical) between the server and client classes. Did have a few questions on the differences between them, where I not quite sure, and don't want to break anything. Hope you have a good evening 🙂

Haha nice!  Hope you enjoyed the party.  Will wait for the next PR :)  Cheers

I see my fail now i am sober, line 250 shouldn't have had ClientMetadata at the front of it. (facepalm)

LOL love it.  Would you be willing to send a PR with all of the changes integrated?  Everything looks pretty good, I was going to go through them one by one until I found the missed commit, but there were quite a few small ones and it would have taken forever.  Hope you're having a great weekend!

Sure, will do. I had an idea I wanted to run past you, just feels strange putting it in a bug report...
So the Server class makes a Watson message, then passes that through all the send functions. The data[] sender converts the data into a memory stream. So I was thinking about making Watson message do that conversion & storing the memory steam. And then read content length and  steam out of the message class so won't need to pass the content length and steam into the final SendMessgage functions, just the client and the message. If that makes sense?
My weekend has been alright thank you, very lazy so far :) Hope you are having a good one too.

Hi @MrMikeJJ any update on this one?  Cheers


Remove duplicate morgue slab on Box station.

About the PR

Removes one duplicated morgue slab on box station.
Why / Balance

Closes #26267 .
Changelog

None.

Superceded by #27069 .


Conflict with Heroku Toolbelt?

I followed the installation instructions:
~ % brew tap thoughtbot/formulae
~ % brew install parity
==> Installing parity from thoughtbot/formulae
Error: You must `brew link heroku` before thoughtbot/formulae/parity can be installed

So I tried that:
~ % brew link heroku
Linking /usr/local/Cellar/heroku/3.43.7...
Error: Could not symlink bin/heroku
Target /usr/local/bin/heroku
is a symlink belonging to heroku-toolbelt. You can unlink it:
  brew unlink heroku-toolbelt

To force the link and overwrite all conflicting files:
  brew link --overwrite heroku

To list all files that would be deleted:
  brew link --overwrite --dry-run heroku

Any advice on what I should do here? I don't want to break my existing Heroku setup.

Hey @andyw8, I haven't looked at making this a soft dependency (not explicitly requiring it), as I think ensuring users have heroku-toolbelt installed will help avoid confusion. If we didn't have this requirement I'd worry about users getting confusing error messages when the heroku executable didn't exist.
I don't know a reason why you shouldn't always be using a recent, up-to-date heroku-toolbelt, and Homebrew provides that. My recommendation would be to install and link toolbelt from Homebrew.
If you want to use parity without a Homebrew conflict, you could install the software directly from the releases page.
If you want to discuss changes to the formula further, let's create an issue on thoughtbot/homebrew-formulae, as this issue appears to be more about the formula rules than parity's own source code.

Thanks for the advice. I've linked it using the --overwrite option and all seems ok.


"AttributeError: 'ProbabilisticRetinaNet' object has no attribute 'self.inference'".

I met the following error "AttributeError: 'ProbabilisticRetinaNet' object has no attribute 'self.inference'".  How do you fix this error, thank you!

Hello, I have met the same error. Could you tell me how can I fix this bug? Thank you very much!


Support TLS Sniffing/MultiplexPort on Envoy Side

For tracking, Security and Networking WG consider transparent MTLS as critical for 0.8 customers.
The envoy PR seems to be in but there are still config changes in pilot and testing left.
We need to evaluate the status and decide if we continue to delay 0.8 or we push this to 0.9/1.0 (
and possibly cherry-pick this feature into a 0.8.x )

This issue will track TLS sniffing for the purpose of incremental mTLS adoption and health checking, which are required for 1.0.
SNI routing will be tracked by #5455

Health checking was supposed to be fixed by https://github.com/kubernetes/kubernetes/issues/60952 and not TLS sniffing.
cc @wattli

Last I know is TLS sniffing will be use as a short term solution, until k8s implements mTLS for kubelet.

@PiotrSikora , we will still use TLS sniffing for health check, once your envoy PR is in, I will take care of it. K8s does not have plan to support it.

This has been implemented a while ago:

SNI-based routing: https://github.com/envoyproxy/envoy/commit/a328bc5d69a9e90ed3197a6735997ec48a850351, https://github.com/envoyproxy/envoy/commit/93780c1663a89c596e46a43ff17cffc25bb00b18,
ALPN-based routing: https://github.com/envoyproxy/envoy/commit/554e57a89e95a9d9bed684e5d663d217a1ea502c, https://github.com/envoyproxy/envoy/commit/12c470e666d23f1cedaea92cdae6c747d6081dfe.


[Error] If package has system libraries as deps Segfault will appear

I have this package tree:
LinkSystemLibrary("c").........] --- a--b--final
LinkSystemLibrary("glfw")....]
As you can see first library depends on system libs, and the second one on the first one.
Final package will be created by users which want to use my "b" package.
But the problem is final package cannot be run unless user manually link system libraries in final/build.zig
What's worse, there is no error when building final package. Only SegFault when it is runned.
Will there be any feature that's automatically adds system libraries to deps.zig or something similar?

It was intended that this area was left "unfinished", the reason here was to experiment with builder packages that let you choose between using system libraries or building C libraries locally and statically compiling, Eg. https://github.com/mattnite/ZLibBuilder
For your case, it is required for a root project to know what system libraries it needs to link to.


Request fraction power on unit not calculated

Some units like m/kg^(1/3) is better preserved as it is, otherwise the substition and calculation makes its weird.
This kind of units mainly come from The dynamics of explosion and its use, by Josef Henrych;Explosion-Resistant Buildings by M.Y.H. Bangash.

this is not the solution, but it works:
m/root(kg; 3)

Very good!
在 2024-05-28 04:11:31，Muniz @.***> 写道：
this is not the solution, but it works:
m/root(kg; 3)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

@marcostrmuniz thank you. To be honest, even I didn't know that. :)

this is not the solution, but it works: m/root(kg; 3)

Here are some strange variations:
``
r = 10'm
Q = 23'kg
Rr = rm/root(Q; 3)/root(kg; 3)
Rr = rm/(root(Q; 3)*root(kg; 3))
Rr = r/root(Q; 3)*m/root(kg; 3)
r = 10m
Q = 23kg
Rr = r/root(Q; 3)
``


[FEATURE REQUEST] Add missing string manipulation functions

Many things in gstrfuncs.h don't have wrappers. Most importantly, I need g_str_tokenize_and_fold to implement searching in my app.
Other missing functions I've run into:

g_str_match_string
g_str_to_ascii
Potentially others

Also, g_str_tokenize_and_fold has an optional out variable, so maybe something like this:
fn tokenize_and_casefold_internal(
    arg: &str,
    translit_locale: Option<&str>,
    alts: bool
) -> (glib::StrV, Option<glib::StrV>) {
    // https://github.com/gtk-rs/gtk-rs-core/issues/1418
    use glib::translate::*;
    arg.run_with_gstr(|arg| {
        translit_locale.run_with_gstr(|translit_locale| {
            let mut alternates: *mut *mut std::ffi::c_char = std::ptr::null_mut();
            let alternates_ptr = if alts {
                &mut alternates
            } else {
                std::ptr::null_mut()
            };
            unsafe {
                let result = glib::ffi::g_str_tokenize_and_fold(
                    arg.to_glib_none().0,
                    translit_locale.to_glib_none().0,
                    alternates_ptr
                );
                (
                    glib::StrV::from_glib_full(result),
                    alts.then(|| glib::StrV::from_glib_full(alternates))
                )
            }
        })
    })
}

pub fn tokenize_and_casefold(arg: &str) -> glib::StrV {
    tokenize_and_casefold_internal(arg, None, false).0
}

pub fn tokenize_and_casefold_with_alts(
    arg: &str,
    translit_locale: Option<&str>
) -> (glib::StrV, glib::StrV) {
    let res = tokenize_and_casefold_internal(arg, translit_locale, true);
    (res.0, res.1.unwrap())
}

It would seem more useful to use Rust APIs for this kind of tasks. If you want to provide a PR that adds bindings for the functions, I'd review that, but it doesn't seem very useful to me. Rust string parsing functions in std and external crates are generally better.


terrascan: 1.6.0 -> 1.7.0

Motivation for this change
Update to latest upstream release 1.7.0
Change log: https://github.com/accurics/terrascan/releases/tag/v1.7.0
Things done

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

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Relase notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

@ofborg eval

Result of nixpkgs-review pr 128676 run on x86_64-linux 1

1 package built:

terrascan


Swagger changes for MFA work

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Changelog
Add a changelog entry for this PR by answering the following questions:

What's the purpose of the update?

[ ] new service onboarding
[x] new API version
[ ] update existing version for new feature
[ ] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When are you targeting to deploy the new service/feature to public regions? Please provide the date or, if the date is not yet available, the month.

We are planning to deploy the feature to all public regions by Mid of August (Tentative Date is 23rd August, 2021 ). Swagger and ARM manifest changes needs to be published before this.

When do you expect to publish the swagger? Please provide date or, the the date is not yet available, the month.
By mid of August. (Tentative Date is 23rd August, 2021 )
If updating an existing version, please select the specific langauge SDKs and CLIs that must be refreshed after the swagger is published.

[ ] SDK of .NET (need service team to ensure code readiness)
[ ] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[ ] PowerShell
[ ] CLI
[ ] Terraform
[ ] No refresh required for updates in this PR

Contribution checklist:

[x] I commit to follow the Breaking Change Policy of "no breaking changes"
[x] I have reviewed the documentation for the workflow.
[x] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

Applicability: :warning:
If your changes encompass only the following scenarios, you should SKIP this section, as these scenarios do not require ARM review.

Change to data plane APIs
Adding new properties
All removals

Otherwise your PR may be subject to ARM review requirements. Complete the following:

[x] Check this box if any of the following apply to the PR so that label “WaitForARMFeedback” will be added automatically to begin ARM API Review. Failure to comply may result in delays to the manifest.

Adding a new service
Adding new API(s)
Adding a new API version
-[ ] To review changes efficiently, ensure you copy the existing version into the new directory structure for first commit (including refactoring) and then push new changes, including version updates, in separate commits.

[x] Ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If any of the following scenarios apply to the PR, request approval from the Breaking Change Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in a stable version
[ ] Removing properties in a stable version
[ ] Removing API version(s) in a stable version
[ ] Updating API in a stable or public preview version with Breaking Change Validation errors
[ ] Updating API(s) in public preview over 1 year (refer to Retirement of Previews)

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.
Description of the PR Changes :
Merged the existing swagger json files (2021-06-01 for recoveryservicesbackup and 2021-01-01 for dataprotection) to create the base swagger json files with API version 2021-07-01 in first commit.
In the second commit, made the API version update in Swagger and example json files, readme.md file and the new changes.
We have created below work item for approval of breaking changes.
Scenario 10554276: RecoveryServicesBackup-BreakingChangeApproval
Created a suppression request with below details for Lintdiff failures.

All the new changes in this PR are already reviewed and checked-in in the preview folder.
For dataprotection and recoveryservicesbackup, preview version was 2021-02-01-preview. Changes from this preview version folder are merged in the second commit of this PR.

      "202": {

Operation results API should always be synchronous. Did you intend to add this to the responses from the backupVaults path?

Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:480 in 38224a9. [](commit_id = 38224a9e8e5a3a9b647b3a3e192b31ccd0d019d0, deletion_comment = False)

    "produces": [

Don't need this here or on other paths: it's already covered by the higher-level declaration.

Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:1909 in 38224a9. [](commit_id = 38224a9e8e5a3a9b647b3a3e192b31ccd0d019d0, deletion_comment = False)

    "consumes": [

Not needed here.

Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:1996 in 38224a9. [](commit_id = 38224a9e8e5a3a9b647b3a3e192b31ccd0d019d0, deletion_comment = False)

"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceGuards/{resourceGuardsName}/{operationName}": {

This path doesn't follow ARM resource naming rules. You need a resource type to identify instances of the operations, e.g. .../{resourceGuardsName}/operations/{operationName}.

Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:2200 in 38224a9. [](commit_id = 38224a9e8e5a3a9b647b3a3e192b31ccd0d019d0, deletion_comment = False)

"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceGuards/{resourceGuardsName}/{operationName}/{operationRequestName}": {

Doesn't follow ARM naming rules.

Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:2259 in 38224a9. [](commit_id = 38224a9e8e5a3a9b647b3a3e192b31ccd0d019d0, deletion_comment = False)

    "lastLockUpdateTime": {

Is this the same as LastModifiedAt in systemData? If so, then this should be removed.

Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:5151 in 38224a9. [](commit_id = 38224a9e8e5a3a9b647b3a3e192b31ccd0d019d0, deletion_comment = False)

"ObjectResource": {

Non-schematized/empty objects are not recommended. They are hard for customers to do anything with, and can't be usd with many ARM features like ARG and Policy.

Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:5251 in 38224a9. [](commit_id = 38224a9e8e5a3a9b647b3a3e192b31ccd0d019d0, deletion_comment = False)

    "lastLockUpdateTime": {

Is this the same as LastModifiedAt in systemData? If so, then this should be removed.
Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:5151 in 38224a9. [](commit_id = 38224a9, deletion_comment = False)

Removed this. here lastLockUpdateTime indicates the last time when resource guard resource was updated

      "202": {

Resolving per RPC link: https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/async-api-reference.md#202-accepted-and-location-headers

In reply to: 896285342

Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:480 in 38224a9. [](commit_id = 38224a9e8e5a3a9b647b3a3e192b31ccd0d019d0, deletion_comment = False)

"ObjectResource": {

Please don't publish placeholder objects in your API for future use. To complete development of the API you will need a new API version anyway, so the empty objects aren't doing anything except confusing consumers of your current API.

In reply to: 896286506

Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:5251 in 38224a9. [](commit_id = 38224a9e8e5a3a9b647b3a3e192b31ccd0d019d0, deletion_comment = False)

"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceGuards/{resourceGuardsName}/{operationName}": {

This is not a good approach from ARM perspective. This kind of path is half resource and half resource type. ARM features like Azure Policy and ARG will not be able to deal with these. I think the better ARM-friendly approach would be to use a $expand parameter for this.

In reply to: 896286087

Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:2200 in 38224a9. [](commit_id = 38224a9e8e5a3a9b647b3a3e192b31ccd0d019d0, deletion_comment = False)

"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceGuards/{resourceGuardsName}/{operationName}/{operationRequestName}": {

Same comment as above. It's not really just naming: it's about fitting the ARM resource model properly and being consistent with the rest of Azure APIs.

In reply to: 896286201

Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:2259 in 38224a9. [](commit_id = 38224a9e8e5a3a9b647b3a3e192b31ccd0d019d0, deletion_comment = False)

      "202": {

Operation results API should always be synchronous. Did you intend to add this to the responses from the backupVaults path?
In reply to: 896285342
Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:480 in 38224a9. [](commit_id = 38224a9, deletion_comment = False)

These changes are intended. As per this ARM API guideline wiki (https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/async-api-reference.md#202-accepted-and-location-headers), below thing is mentioned in point 4.
"If the operation is not complete, return 202 (Accepted) again with Location header and optionally an updated Retry-After header."

    "consumes": [

Not needed here.
In reply to: 896285634
Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:1996 in 38224a9. [](commit_id = 38224a9, deletion_comment = False)

Actually we are using some tool to generate swagger json from service code. These sections are getting added automatically for each API.  These changes are already there in the existing json files for recoveryservicesbackup and dataprotection RP. We need to update the tool to cleanup these. Otherwise, manual cleanup is needed which is little bit error-prone.  We will work on fixing this tool. Can you please approve these changes for this PR.

    "produces": [

Don't need this here or on other paths: it's already covered by the higher-level declaration.
In reply to: 896285534
Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:1909 in 38224a9. [](commit_id = 38224a9, deletion_comment = False)

Actually we are using some tool to generate swagger json from service code. These sections are getting added automatically for each API.  These changes are already there in the existing json files for recoveryservicesbackup and dataprotection RP. We need to update the tool to cleanup these. Otherwise, manual cleanup is needed which is little bit error-prone.  We will work on fixing this tool. Can you please approve these changes for this PR.

"ObjectResource": {

Please don't publish placeholder objects in your API for future use. To complete development of the API you will need a new API version anyway, so the empty objects aren't doing anything except confusing consumers of your current API.
In reply to: 896286506
Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:5251 in 38224a9. [](commit_id = 38224a9, deletion_comment = False)

Updated the json file with the fix. Removed the placeholder empty object

"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceGuards/{resourceGuardsName}/{operationName}/{operationRequestName}": {

Same comment as above. It's not really just naming: it's about fitting the ARM resource model properly and being consistent with the rest of Azure APIs.
In reply to: 896286201
Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:2259 in 38224a9. [](commit_id = 38224a9, deletion_comment = False)

Fixed this.

"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceGuards/{resourceGuardsName}/{operationName}": {

This is not a good approach from ARM perspective. This kind of path is half resource and half resource type. ARM features like Azure Policy and ARG will not be able to deal with these. I think the better ARM-friendly approach would be to use a $expand parameter for this.
In reply to: 896286087
Refers to: specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2021-07-01/dataprotection.json:2200 in 38224a9. [](commit_id = 38224a9, deletion_comment = False)

Fixed this in the latest PR iteration

Please work with this week's ARM API review oncall (@pilor) to finish the review.

/azp run


Add connection history logging

Feature description
A log that shows connection history, including the duration of the connection.

Nice issue!
Could you tell me more about your request?
What about the history?
How much kind of data should WebSSH store?
Have a nice day @jedis00 ☀

Something similar to this, but also capture the duration of the session, if possible. Just some text. Don't really need history, though that would be interesting to capture and allow to view it later.
Yesterday
box1 6/8/23 8:08PM - Duration 1h 4m
box2 6/8/23 8:08PM - Duration 4h 4m
box4 6/8/23 8:08PM - Duration 5h 4m
6/6/23
box12 6/6/23 8:08PM - Duration 5h 4m
box18 6/6/23 8:08PM - Duration 3h 4m

Thank you @jedis00 for your reply and details 🙏

This would be a lot more useful if the IP address of the connection was also noted.

This would be a lot more useful if the IP address of the connection was also noted.

Can't hurt to also throw that in, but I would seriously question whether people are memorizing IP addresses or making use of the friendly name on the connection itself.

Which place would be perfect for accessing this feature?
Long press / right click on the connection > View connections history?

@isontheline If I had to pick, Long press on connection along side Edit, etc.
@jedis00 IP is crucial. Someone can see if some strange IP (pretending to be a friendly, known device) is accessing a connection. Gmail is a great example. (Location of access based on IP would also be nice)

@isontheline If I had to pick, Long press on connection along side Edit, etc.

Thanks !

@jedis00 IP is crucial. Someone can see if some strange IP (pretending to be a friendly, known device) is accessing a connection. Gmail is a great example. (Location of access based on IP would also be nice)

I would like more information about these data : IP and Location
As WebSSH will only log you own device IP and your own device location, why these informations would be helpful as only your device will access your servers. If anyone else access your servers it will be outside WebSSH and so the connections history is useless.
Or perhaps I have misunderstood the need?

@mbierman My feature was to log my device connecting to my servers. I'm not sure it would be entirely helpful to see my own IP address there, as someone would need to steal my phone, unlock the device, and then try to login to a server with this app. At that point, I'd be looking at server logs and not something in the app, since I wouldn't have access to the device.

On macOS the history shows all attempts on same list on the sidebar :

@isontheline
https://i.imgur.com/XcnAjv6.png
https://i.imgur.com/RNidhHE.png

Here's a gmail example.

This is important to be aware of logins are happening. My thought is this:
Right now the biggest concern I have about WebSSH is the storing of credentials. So, say that is somehow compromised. Say someone either gets access to them or, picks up a device with webssh installed. If I see that a particular device is at an IP it shouldn't be at, or, a device I don't recognize is using WebSSH to access servers that is worrisome. If you are going to log access the log should include the public IP something was done from.

I have FaceID and iCloud enabled, thanks. ;)
For me, this feature is almost useless without the additional info.

I have FaceID and iCloud enabled, thanks. ;)
For me, this feature is almost useless without the additional info.

What you’re proposing should be handled on the server and not the client. You’re describing a centralized solution, when this app is all client side storage of credentials and backup to iCloud. Apple doesn’t alert you when your Apple ID is already used on a known device where you’re logged in — no reason to expect any different with a ssh client on your iDevice.
putty, Zoc, Termius, and ssh cli do not do what you’re suggesting either. You’d be looking to the server logs and implementing some king of alerting/monitoring approach.
Feel free to make your own feature enhancement ;)

Feel free to make your own feature enhancement ;)

Wow. I could say the same about your request. I'm done with this thread.


Add feature tweet

@sk364 What do you mean, tweet? I assume you mean twitter:)?

I meant, twitter only. You tweet there. So, a feature to be able to 'tweet' on 'twitter', I meant.

It's would be cool! could you implement this feature? of course when you will have a free time:)

Sure. I will !

@sk364 Nice! thanks

@sk364 When I'll finish integrate  StackExchange API, and you will finish tweet, I'll create a new version and upload on PyPi👍

What are your ideas on implementation of sending tweets ?

@sk364 In any case we need to use Twitter API, and feel free implement your ideas;) I'll review your a PR.