DBZ-2938 Test stability

https://issues.redhat.com/browse/DBZ-2938

@jpechane, ready for another look. Test failures are independent.

@jpechane, ready for another look. Test failures are independent.

@gunnarmorling Applied, thanks

@gunnarmorling Applied, thanks


To do - QR code work

Summary | Résumé
To do list for implementing QR code flow:

[x] fix layout on the "RequestCameraPermission" screen (Omar)
[x] fix layout on the "CheckInSuccessful" screen (Steve)
[ ] fix layout on the "InvalidQRCodeScreen" screen, add icon (Omar)
[ ] Fix bug where CameraPermissionDenied is displayed after the user grants the permission in settings. Currently it only re-renders after the page is closed and re-opened.
[ ] Move the "you've been part of an outbreak" to the home screen, put in placeholder content to make it more obvious this is different from the existing exposed screen
[x] add env variable to get outbreak location json from Github (Steve)
[ ] calculations for exposed time periods, tests for this
[ ] add lookup table mapping "location type" to "default dwell time", ~10min (?) for convenience store, longer for other types, etc
[ ] Clear outbreak status button (in the Test menu)
[ ] add push notification to let you know you have been part of an outbreak
[ ] content or view to let user know they have successfully "cancelled checkin"  (TBD)
[ ] add "location type" to QR code
[ ] add JSON web token verification to iOS @craigzour
[ ] add JSON web token verification to Android @jeberhardt

What is the proposed format of the proposed QRCode? Is it going to directly model the form of the UK app?
https://www.revk.uk/2020/09/how-not-to-qr-nhs-c19-app.html
Does it form a URL eg covidalert://somedetails? Just wondering how the default camera behaviour could be used to trigger the automatic loading of the correct app via deep linking vs having to manually start the CovidAlert app. Longer term this makes me wonder about AppClip/InstantApp behaviour which might increase the number of people using the app via those upgrade flows.

@feralbob
covidalert://json-web-token
The current prototype listens here:
https://github.com/cds-snc/covid-alert-app/pull/1384/files#diff-9f41850eef91746316258be95b41fe45f11e025dbefdfb1f8f3265730246fccbR27
The prototype currently supports "on device" + in app scanning

 Outbreak Scenario Dev Work

 QR Codes: ID / token validation

@smcmurtry I don't have access to that Trello board
I've got the qrcode branch 'running' on my iOS device. Looking at everything now - between work and kids etc.


Not compatible with your operating system or architecture<EMAIL_ADDRESS>

npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>npm ERR! Linux 4.4.0-124-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v4.2.6
npm ERR! npm  v3.5.2
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR<EMAIL_ADDRESS>postinstall: node lib/post_install.js
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script 'node lib/post_install.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the uglifyjs-webpack-plugin package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node lib/post_install.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs uglifyjs-webpack-plugin
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls uglifyjs-webpack-plugin
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /media/data/appl/WebSSH2/npm-debug.log

Try this instead:
npm install --production
That module, and a few others, are not required unless you’re doing development. What OS architecture are you using?

Linux 4.4.0-124-generic #148-Ubuntu SMP Wed May 2 13:00:18 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux.
npm install --production
npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.4 LTS
Release:	16.04
Codename:	xenial
Thanks.

npm start

<EMAIL_ADDRESS>start /media/data/appl/WebSSH2
node index.js

sh: 1: node: not found
npm ERR! Linux 4.4.0-124-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "start"
npm ERR! node v4.2.6
npm ERR! npm  v3.5.2
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR<EMAIL_ADDRESS>start: node index.js
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script 'node index.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the webssh2 package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node index.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs webssh2
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls webssh2
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /media/data/appl/WebSSH2/npm-debug.log

Well that’s wacky. I’ve been testing mostly with node 6+ now. Been traveling today, let me see what if can find out later on today or tomorrow. Otherwise if installing node 6 on a test system is an option, I’d try that.

Having the same problem, waiting if there is a resolution

Same for me.. Just switched to ubuntu 18... now i've got this, when trying to
npm install<EMAIL_ADDRESS>

Try branch 'package-upgrade-test' and see if this resolves your issues.

How do u try this package-upgrade-test??

Download this branch: https://github.com/billchurch/WebSSH2/tree/package-upgrade-test
Really all you need is the package.json from this build.

Is there any workaround the error? I am getting the same issue when I execute the command "npm i webpack --save-dev"

I have the same problem too

In the next examples, instead of installing different versions of node, I'm running node in docker. I'm also using the master from today.
I ran the following commands and they were successful:
rm -rf node_modules && docker run -it --rm -v `pwd`:/app -w /app node:8.11 npm install --production
rm -rf node_modules && docker run -it --rm -v `pwd`:/app -w /app node:6.14 npm install --production
rm -rf node_modules && docker run -it --rm -v `pwd`:/app -w /app appsvc/node:4.8.4_1710252240 npm install --production
rm -rf node_modules && docker run -it --rm -v `pwd`:/app -w /app appsvc/node:4.4.7_1710252240 npm install --production
rm -rf node_modules && docker run -it --rm -v `pwd`:/app -w /app node:8.11-alpine npm install --production

In all examples above, I'm running with --production flag, as well I'm cleaning up the node_modules folder.
In the following tests, install generated warning but application started successfully.
rm -rf node_modules && docker run -it --rm -v `pwd`:/app -w /app node:8.11-alpine sh -c 'npm install && npm start'
rm -rf node_modules && docker run -it --rm -v `pwd`:/app -w /app node:8.11 sh -c 'npm install && npm start'
rm -rf node_modules && docker run -it --rm -v `pwd`:/app -w /app node:6.14-alpine sh -c 'npm install && npm start'
rm -rf node_modules && docker run -it --rm -v `pwd`:/app -w /app node:6.14 sh -c 'npm install && npm start'
rm -rf node_modules && docker run -it --rm -v `pwd`:/app -w /app iron/node:5.10.1-dev sh -c 'npm install && npm start'

The warning:
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

With the following test:
rm -rf node_modules && docker run -it --rm -v `pwd`:/app -w /app iron/node:4.2.6-dev sh -c 'npm install && npm start'

Installation succeeded with the warning above, but starting failed with:
WebSSH2 service reading config from: /app/config.json
/app/node_modules/read-config/lib/load/merge-configs.js:7
    return merge({}, ...configs, (a, b) => {

So I can suggest:

Read the message - warnings are ok, it's just a warning.
If you are not developer, use npm install --production
Use node 6+!! Consider upgrading your node version - 8.11 is way faster than 6.14
If you are developer, try installing a C compiler - I believe that fsevents get's compiled if not found for your OS/CPU.

@vvalchev, so just to confirm this is working for you with node 6+? And you're right, as the instructions state unless you're developing always use npm install --production
As far as fsevents, it's only needed for webpack and development. Not a requirement to run this on a server, if you're wanting to modify the source javascript/html or css do this on a developer workstation and not in docker.
@vvalchev the Dockerfile was a contribution, I don't maintain it. Is there anything in there that needs to be updated that you can tell or is this just a case of instructions not being followed? Is there a way I can make this more clear for others?

@billchurch The above was just a series of tests, to find where the problem is and to resolve this issue and help people here. But yes - the conclusions are that project runs ok with node 6+.
Dockerfile is ok, no need to do any changes.
It might be good if you can create a docker-hub account. Then setup auto-build for WebSSH2:
https://hub.docker.com/add/automated-build//github/orgs/
It will periodically check for changes on the specified branch and will trigger a docker build. It's a very easy way to distribute it.
Btw the npm repository contains very old version of webssh2. Do you plan any updates there?

I am also getting this error
npm WARN optional Skipping failed optional dependency /sane/fsevents: npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed. npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>|| ^4.0.0 but none was installed.

 If your plan on doing development you'll need developer tools like a complier, linker, etc... and instructions for how to set that up are beyond the scope of this project.

Same for me.. Just switched to ubuntu 18 and get this, when trying to install Bootstrap 4

npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>

If you have yarn installed, just download Bootstrap from there. It worked for me. If you don't have yarn downloaded go to yarnpkg.com

okk thank you for replying
On Mon, Oct 29, 2018 at 12:01 PM David Rowan III<EMAIL_ADDRESS>wrote:

Same for me.. Just switched to ubuntu 18 and get this, when trying to
install Bootstrap 4
npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>If you have yarn installed, just download Bootstrap from there. It worked
for me. If you don't have yarn downloaded go to yarnpkg.com
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/billchurch/WebSSH2/issues/78#issuecomment-433801668,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AQSs-TJyWPZUUt_NFW5zjYPs3738tbVTks5upqDYgaJpZM4U5hcD
.

Hi ubuntu 16.04
npm WARN optional Skipping failed optional dependency /webpack/chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>plese install help!

Use:
npm install --production instead
What OS, version of node,  version of npm, and post full log and output here.

What OS ?
Ubuntu 18.04.1 LTS
Version of Node ?
v8.10.0
Version of NPM ?
3.5.2

Here the output after using npm install --production command:
npm WARN optional Skipping failed optional dependency /sane/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>npm WARN optional Skipping failed optional dependency /jest/sane/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>npm WARN optional Skipping failed optional dependency /jest-runner/sane/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>npm WARN optional Skipping failed optional dependency /jest-runtime/sane/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>

@miko2x what CPU architecutre is this? ARM or something else?

i am also dealing with same problem..

same here, npm install --production didn't help

You can safely ignore this message, it has been popping in lots of projects lately.
The chokidar module has an optional dependency on fsevents which works only on OS X.
All projects depending on chokidar will display this warning message when updating node_modules on a non OS X target.

For the fsevents, I'm seeing it on other libraries as well. If you're not using OS X, you can add --no-optional during npm install to exclude out fsevents instead (i.e npm install --no-optional)

When i'm using nodemon command, i'm getting this error:
npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>Is it Hardware/ OS Architecture Dependent? :/

I get the same error running npm install --production and running the argument --no-optional for npm DID remove the errors, although when I try to run webpack it still says webpack is not installed

npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>npm WARN optional Skipping failed optional dependency /gulp-watch/chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>npm WARN optional Skipping failed optional dependency /watchify/chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture<EMAIL_ADDRESS>npm WARN httpdocs No repository field.
npm WARN httpdocs No license field.
i am having this issue
how can i solve this?


🐋 Need some help with Docker

In a nutshell, I'm looking to make the Docker image used for this project lighter, faster and more efficient but I'm focused on adding features at the moment.
Could really use some help from the community to improve the image. Bonus points of someone can get LinuxServer involved to craft an awesome image.
There are also changes coming to the base image outline in #750

Hi Alex,
Would be happy to help but I'm lacking the knowledge about laravel, still learning it. I will try to build the image and see how I can slim it down a little bit, if that helps.

Hi Alex,
Would be happy to help but I'm lacking the knowledge about laravel, still learning it. I will try to build the image and see how I can slim it down a little bit, if that helps.

On hold for the moment, I'm using Serverside Up's image as the base which is currently going through some changes: #750

Alright, do you need help with it? I can test drive also on docker and I have an rpi somewhere I can spin up.

At some point def, I just pinged the authors to see where they stand. Ideally I don't want to start using a new base until it hits at least beta.

Linuxserver team member here, I'd be happy to take a look at this, it's a fairly standard setup.

Dude this is 🔥🔥🔥 thank you! I'm on a mini vacation until Monday but will get right on testing that image.

@thespad couple of questions before testing later today or tomorrow...

How does the container utilize Laravel's queue and scheduler? Are you using cron or some task scheduler and process manager?
In the past I've had some issues with permissions within the container that effected how the cache works and writing of files, any changes there?

Any chance you mind sharing the Dockerfile? In all honesty the Docker side of this project is my weakness so looking to boost my education there.

If you want to see the full image build I've pushed it to a dev branch here https://github.com/linuxserver/docker-speedtest-tracker/tree/initial

@thespad just checking in to let you know I haven't forgotten.
Currently the app's image builds with PHP 8.3 and to reduce variables I definitely want to keep that in the short term. However after the first of the year would like to migrate to 8.3. What's your process for that, just a PR?

Our Alpine 3.18 Nginx base has php 8.2 and 3.19 has php 8.3, so we'd build with 3.18 and then when you want to switch to php 8.3 we'd just update the base image (and the names of any packages/paths from php82 to php83).

The only thing I haven't been able to properly test is email notifications because I don't have a quick and easy way to rig it up in my testlab.
I've pushed a new build for 0.14.0 to ghcr.io/linuxserver/lsiodev-speedtest-tracker:version-v0.14.0 if you're able to test email specifically and make sure it works as expected. I think everything else should be functional from what I've been able to test.

Thanks man, will also add that to my test criteria.
One thing on the wish list for the ci/cd pipeline for me was to add building the front end assets, I know it's a changing requirement but is this possible? At this time the downloaded npm packages don't need to be kept as none of them are referenced and Vite puts the assets into public/build.
Build commands would be...
npm ci && npm run build

Thanks man, will also add that to my test criteria.
One thing on the wish list for the ci/cd pipeline for me was to add building the front end assets, I know it's a changing requirement but is this possible? At this time the downloaded npm packages don't need to be kept as none of them are referenced and Vite puts the assets into public/build.
Build commands would be...
npm ci && npm run build

Does it need to be run before/after any other part of the build?

Does it need to be run before/after any other part of the build?

After composer installs deps please

ghcr.io/linuxserver/lsiodev-speedtest-tracker:version-v0.14.1 includes the npm builds - though in practice I'm assuming isn't actually doing anything if you're currently pre-building the frontend as it'll get copied in from the release artifact.

Did you get an opportunity to test the email functionality?

Did you get an opportunity to test the email functionality?

I have not, got back from vaca a few days ago and been deep in trying to fix the DQ issue the last couple of days. I owe ya some time on this so putting it at the top of it pile.

While I'm at the day job do you mind bumping the image to the latest build? v0.15.2 fixes a few issues.

Already have :)

Had a few between meetings, found this in the logs when testing w/ mysql database on a fresh install.

The sqlite db symlink in /config should only get created
if [[ ${DB_CONNECTION:="sqlite"} = "sqlite" ]]

But if it has somehow been created previously and you're not using sqlite then it'll throw an error because the file at the other end of the link doesn't exist in the container. I'll have the init touch the file just to avoid the error in that case.

Solved, had a typo in my DB_CONNECTION var which seems to have caused the issue. Also confirmed all notification channels worked (database, mail, Telegram and webhooks).

Excellent, I've just pushed a fix for the sqlite db init as well so it shouldn't break now if you make a typo or intentionally choose sqlite

Cool and I just saw the change for making the scheduler quieter too.
Locally this is working well, tonight I'll deploy to my RPI Docker Swarm cluster, Unraid NAS and Synology NAS to test further.

Well good news, I didn't run into any issues with the hosts above. Performance improvements were wicked (I'm from New England) nice, image is about 1/2 the size and ran into no issues using the file cache driver.
I think we can get this rolling. Maybe run them side by side for a couple of versions to give people time to cut over and get the communication out there.
Open to your thoughts.

Sounds good, I've opened a PR to put the branch live, once it's reviewed and built we'll make the packages live.
You can continue building your image for as long as you think is necessary; we don't have any expectations of exclusivity or anything like that. You might want to consider adding a message to the container init with a deadline for when you intend to stop supporting it - we find a lot of users never read them, but don't want to interfere with the running application so it's our best option.

Image is now live: lscr.io/linuxserver/speedtest-tracker:latest

Image is now live: lscr.io/linuxserver/speedtest-tracker:latest

Hell yeah! Guess it's time to update the docs and get this advertised.

Forgot to mention; if you need changes made or find any issues that need addressing, etc. you can either open an issue against the repo, or jump on our Discord and we'll get it sorted.


[Fix](index tool) fix index tool compile problem

Proposed changes
Fix compile problem like
be/src/index-tools/index_tool.cpp:451:47: error: no matching constructor for initialization of 'DorisCompoundReader'

run buildall


Add option to automatically remove stale disparity data

Adds two new properties to DisparityPointCloudItem to allow data to expire and be automatically removed if no new messages have been received for a given timeout/expiration time.

Thanks for the review and comment - I've added the additional check


Unsuccessfull build

Outdated sources.

The code compiled fine on my machine using VS 2019.
What errors did you get?

Yeah was just me being tardy fixing up issues - was broken when .NET Core was still in beta - fixed it up when I ported the code to a later round of .NET Core release in round of changes last year.


Enhancementfpdf2

Removed dependency on ReportLab and moved to FPDF2 for writing PDFs. Reasons for doing so:

FPF2 is a better documented library;
Writing PDFs in FPDF2 is much more straightforward from a development perspective (no arbitrary string configuration lines to make it all work);
FPDF2 supports loading of PIL.Image images from memory where reportlab was causing issues if not written to file. This removes need for temporary files on disk when generating PDFs.

Closes issue #20 as temporary file handling not required for FPDF2 and issue #6 as FPDF2 now default.


No message to user when resource folder creation fails due to duplicate name

When creating a folder, no message is displayed to the user if the folder name already exists in the resource.  The user experience suggests the action was successful when in fact it did nothing.
Test Environment
Video

@Maurier @pkdash While UI can make duplicate name check to alert user and prevent it from flowing into backend. But I do think this should be caught by the backend and error message should also be provided by backend.
I am aware there is a balance to which place to seek an optimum solution. I appreciate if @pkdash can take a look and give some input.

@engineSound I agree that the backend should check for duplicate folder. As currently implemented iRODS throws a SessionException if it finds duplicate folder and we then report that as 'INTERNAL SERVER ERROR. I think we need to check for duplicate folder name first (in the backend) then run the iRODS command to create the folder.

@pkdash Do you want to put the issue in your bucket or you want reassign to some other backend colleagues?

@cuahsimarko @mraocuahsi

@engineSound I will to fix it this weekend. If I don't get time for it then someone else can work on it.

@ndebuhr This issue can be closed.

@martinseul I think this can be closed

close, fixed

close, fixed


Unable to override Cesium credit system because CesiumCredit is marked internal

For people that want to change how Cesium for Unity renders credits, we recommend the steps here:
https://github.com/CesiumGS/cesium-unity/issues/333#issuecomment-1583488794
But this doesn't seem to work anymore because CesiumCredit is internal, so it's impossible to follow those instructions from outside the CesiumRuntime assembly. But the change from public to internal happened before we wrote those instructions, and they did seem to work when they were written, so it's not clear what's happening. We should investigate. Most likely the solution will simply be to make CesiumCredit and related types public.
As reported here:
https://github.com/CesiumGS/cesium-unity/issues/333#issuecomment-2002638298

But the change from public to internal happened before we changed those instructions, and they did seem to work when they were written, so it's not clear what's happening.

Did you maybe use another way of distribution that places the files directly inside the Asset folder, e.g. unitypackage or the Asset Store? I think without an Assembly Definition it would just become part of the project then, so, internal would not have had any effect.

It's a good question, but no, I don't think so. We've always needed an assembly definition in order to arrange for Reinterop to be invoked. It's possible I had the package installed inside my project's Packages directory, rather than installed via the Unity package manager, but it should still be a separate assembly in that scenario.

This may not actually be an issue. See here:
https://github.com/CesiumGS/cesium-unity/issues/333#issuecomment-2312111464


Minor fixes to typing, move AliasTest class

This closes #53. This PR also fixes an issue with regards to typing.

Great Job! See you guys tomorrow


Unzip the content into a byte stream

A functionality to get the content inside the zip into a byte stream

I know this is an old comment. joemaller posted a solution to this in a different thread
https://github.com/EvanOxfeld/node-unzip/issues/55#issuecomment-122959767


RangeError: Maximum call stack size exceeded

I am doing a spreadsheet calculation using Bacon.js. I get the Max call stack error for larger sheets.
There is no infinite recursive loop in the spreadsheet. But, it has a few cells which lead to updates in more than 2000 other cells.
Is there any limit on the number of buses and combinations one can do. My current spreadsheet has ~15000 buses.

Hmm... The required stack size should be propertionate to the depth of your spreadsheet dependency tree, not its width. It might very well be thought that in the Bacon.js internals there are points where recursion is used when iteration would be more suitable.
So, what do you call stacks look like? Can you post me a stack trace? A codepen or fiddle to reproduce the problem would be super nice too!

Here's the stack trace.

This is the main section of the code that causes the error. Hope it helps.
Object.keys(xl_cells).forEach((d,i)=>{
        if (hasRange(xl_cells[d]))  {
          //Each of the refs is an input bus to the current cell
          let input_ref_buses = getReferences(xl_cells[d]).map((cell_idx)=>{
          	return this.output_reference_bus[cell_idx];
          });

          //Combine all these values by a logic to set a value on the current cell
          var results = Bacon.combineAsArray(input_ref_buses);
          results = results.map((args)=>{

          let index = 0;

           //return result based on the formula in that cell --- once all the arguments are live
           let expr_with_values = xl_cells[d].replace(/[A-Z][A-Z0-9\-\s]+\![A-Z]+[0-9]+/ig, (match, x, string)=>args[index++])

           	return math.eval(expr_with_values).toFixed(3);
           });

          results.onValue((voila) => {
              this.values[d]=voila;
              if (counted_refs.has(d))	{
              	this.output_reference_bus[d].push(voila);
            }
        })
      }
    })

Object.keys(xl_cells).forEach((d,i)=>{
    	if (typeof xl_cells[d] !== 'string')	{
    		this.values[d]= xl_cells[d];
    		if (counted_refs.has(d))	{
    			this.output_reference_bus[d].push(xl_cells[d]);
    		}
    	}
    })

Cannot get much info from the stack trace: it doesn't look like there's much going on in the stack. A dozen lines of stack shouldn't cause a stack overflow. I expected to see a repeating pattern involving the Bacon.js internals. Cannot help you with this info. If you can demonstrate that the stack overflow is caused by Bacon.js, I'll take a look that the details.

Thanks @raimohanska. I may have an idea of what is happening here. As a shortcut into checking if the issue is with bacon.js, I implemented my spreadsheet with RxJS.
It doesn't produce a similar error. But, it takes a ridiculous amount of time for its combineLatest operation. 2-3 minutes if I change some of the cells.
I realised that the combine methods --- which basically compute when any of the observables change --- are not optimal for spreadsheet calculations. Some of the cells are recalculating 20,000 times.
So, I tried using the zip method and sending all the constants whenever a value changes. It works faster. But, it is still much slower than Excel or online spreadsheets. I haven't explored how those are implemented. But, I am trending towards the view that I need to use graphs to perform spreadsheet calculations.


Anyone here?

Is anyone from Blockchain team monitoring these issues?
I am looking to submit few pull requests to improve usage of the library - let me know if you will be available to review the requests.

Yes we're here.

OK, I'll make some changes so that project is easier to use with Nuget Automatic Package Restore:
https://docs.nuget.org/consume/package-restore
Will send pull request once I prepare it. One question - are you open to modifying structure of project to move source to src folder? This way you have .cs files in root, docs folder is mixed with other source folders - not really best approach. Let me know and I can introduce this change also.
Thanks!

Ok great.
I'm open to structure being modifying / organized a bit to keep source and docs a bit more separate.

OK, perfect - I already have a project on which I plan to use the library so I'll run all tests, make sure it's easy to integrate and then create pull request.

When i run it see error. can any help me?
In order to create wallets, you must provide a valid service_url to BlockchainApiHelper


odd clip rate from xml adaptor

Is this right ? As it's breaking other code in otio as it's an invalid time rate ?
23.976023976
Should it not round it to 23.976?
This is triggered by this in the xml

24
TRUE

ValueError: 23.976023976 is not a valid frame rate, Please use one of these: (1, 12, 23.976, 23.98, 24, 25, 30, 48, 50, 60, 29.97, 59.94)
Should this validation be smarter ?

The FCP XML adapter may be using sub-optimal parsing.
In the raw XML, 23.976 is specified as:
<rate>
    <timebase>24</timebase>
    <ntsc>TRUE</ntsc>
</rate>

And the adapter parses it using this function:
def _parse_rate(elem, element_map):
    elem = _resolved_backreference(elem, 'all_elements', element_map)

    rate = elem.find('./rate')
    # rate is encoded as a timebase (int) which can be drop-frame
    base = float(rate.find('./timebase').text)
    if rate.find('./ntsc').text == 'TRUE':
        base *= .999
    return base

This table from apple lays out some expectations: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/FinalCutPro_XML/FrameRate/FrameRate.html#//apple_ref/doc/uid/TP30001158-BCIHDFGD
But I think it's imperfect because it's still saying the "actual rate" is a decimal rather than a fraction like 24000/1001. However using this kind of lookup would likely be a bit more internally consistent with the OTIO timecode handling and if the same lookup is used on export it will be symmetric.

Yes, that "0.999" is an approximation, and will definitely cause rounding issues and drift over time.
The only way to correctly calculate NSTC values is using *1000/1001 (or  the inverse).


feat(controller) support user-defined mounts and bump version

What this PR does / why we need it:
Allow user-defined controller mounts, largely to enable usage of the functionality added in https://github.com/Kong/kubernetes-ingress-controller/pull/2258
Also bumps Kong version to 2.8 because it's a chore and I didn't want to bother with a separate PR.
Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #543

Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] PR is based off the current tip of the main branch.
[x] Changes are documented under the "Unreleased" header in CHANGELOG.md
[x] New or modified sections of values.yaml are documented in the README.md
[x] Commits follow the Kong commit message guidelines

Stuffing emptyDir mounts into the test values is sufficient for what I want to test here: we trust that Kubernetes does indeed mount the volume given well-formed volume and mount configuration, so for our part we just want to ensure that the template inserts the user blocks into the appropriate locations. If we don't, Kubernetes rejects the Deployment as invalid (the tests don't show this because it's a failure state, but it very much did happen earlier in development when I screwed up indentation and variable references).


Log level configuration

Document the env RUST_LOG
Default to the INFO level
Add a configuration option that specify the logging level

Default level and documentation are added in https://github.com/rapiz1/rathole/pull/14
A configuration item for logging level doesn't seem useful now. This issue is considered to be resolved.
If anyone needs such a feature, feel free to create a new issue.


AWS Auth Doc - IAM - remove s3 object level actions for bucket resource

The AWS Auth Documentation page here contains s3 object level actions (SID:AllowCreateAndListS3ActionsOnSpecifiedTerragruntBucket) such as GetObject and PutObject on the s3 bucket resource which is not required.

I tested it on my environment, and removing GetObject/PutObject for "Resource": "arn:aws:s3:::BUCKET_NAME" don't cause any issues

This is because GetObject and PutObject are object-level actions. But the resource in the statement is the bucket. Bucket actions and object actions use different resource arns. The second statement AllowGetAndPutS3ActionsOnSpecifiedTerragruntBucketPath includes GetObject and PutObject for object-level resources...

@lorengordon :+1: Thank you, makes sense.


Introduce automatic code generation

Maintenance of current code base is tedious and really painful because every new feature needs to be manually added to multiple (9!) almost identical APIs. There are two main reasons for their existence:

.NET does not provide multiplatform alternative for ANSI C long type
.NET does not allow to modify structure packing in runtime

Pkcs11Interop library architecture describes both reasons in details. There is also .NET Core issue proposing the solution to the long problem but I am rather skeptical about it being implemented.
Current state needs to be improved before the implementation of #70 and #71 takes place and for sure before version 3 of PKCS#11 specification gets released by OASIS TC. I don't see any way to get rid of multiple APIs so I would like to explore the possibility to maintain just LowLevelAPI41 and HighLevelAPI41 and automatically generate code (using shell script or some similar technique) for the rest of the APIs.

Code generation scripts are in place so let's try to replace the topmost HighLevelAPI with interfaces.


Fix mismatching requirements

The following message appears when running pip install:

django-rosetta 0.7.13 has requirement polib>=1.0.6, but you'll have polib 1.0.4 which is incompatible.
weasyprint 0.29 has requirement html5lib>=0.999, but you'll have html5lib 0.95 which is incompatible.
faker 0.8.17 has requirement six>=1.10, but you'll have six 1.9.0 which is incompatible.
python-social-auth 0.2.9 has requirement PyJWT>=1.0.0, but you'll have pyjwt 0.4.1 which is incompatible.

@michael-k This will need rebasing, and another look since there've been a couple of branches that have landed that touch requirements.txt

rebased
Only django-rosetta 0.7.13 has requirement polib>=1.0.6 was resolved.  The merge conflict was unrelated (a requirement on a line next to the ones affected was removed).


Setup of cairo smart contract on Starknet ,test multi chain CCIP minting on chains like optimism.

Ticket Contents
Description
Test the cairo smart contract and multichain ccip minting.
###Steps involved are :

Setup for Starknet network
test on remix
Setup for Scaffold-stark
test for multichain CCIP minting.

Product Name
incident ccip qr-code Daap
Organisation Name
NSUT in collaboration with C4GT, SEETA and AIC
Domain
Healthcare
Tech Skills Needed
React, RESTful APIs, Solidity, Tailwind CSS
Mentor(s)
@manusheel
Category
development

#https://github.com/seetadev/stark-schedule
#https://github.com/seetadev/web3-incident-dapp


Presentation above UIToolbar or below UINavigationBar

It would be nice to have padding between the edge of the superview (top or bottom), and the bottom of the presented notification.

I see your PR for this. I'll take a look at leave comments in the PR. Closing this issue.


重新開放讓講者能更新自己的 proposal

Current coverage is 84.30%

Merging #218 into master will increase coverage by +5.66% as of c95de64

@@            master   #218   diff @@
=====================================
  Files           41     41
  Stmts         1274   1274
  Branches         0      0
  Methods          0      0
=====================================
+ Hit           1002   1074    +72
  Partial          0      0
+ Missed         272    200    -72

Review entire Coverage Diff as of c95de64

Powered by Codecov. Updated on successful CI builds.


Only fixed sizing for radar graphs available since 1.4.3

Entry Criteria:
My plan is to use radar style graphs for Infra Monitoring in terms of having specific values for multiple servers on one graph. This allows judging by observing the "shape" of the drawn figure. If the value from one server will raise, the "shape" is no longer "symmetric" allowing to see issues very fast.
Within the last release the option of defining min and max values for the graph were introduced.
After this you are forced to set a min and a max value for the graph and avoiding the automatic extension of the graph to the current max value.
Description:
I have a radar graph that should show the current active thread count for four tomcat instances. All instances are currently around 160 Threads. Using the 1.4.2 provided by grafana plugin repository, the lower values cannot be seen as the graph is chosing to size from the min to the max (mean in the area between 156 to 162) which means the minimal values are located in the center.
With the new version from master (direct download) the graph is preconfigured with min=0 and max=0 which results a completely colored field as all values are above 0. By setting the max value to 200 everything looks as expected.
BUT, as our tomcats might use up to 1000 Threads there might be situations where the value is out of the scale.
Removing the value for max, inserting 0 for min and having a step of 0 render the are from -0.5 to 0.5. Adding a step of 10 breaks the whole view.
Expectation:
Removing a value for min, max or step should default to "auto" like in other grafana graph´s

This a view with default settings in 1.4.3 (names are blurred afterwards because these are client systems)

And here is the configuration set to min=0 and max=200 (leaving step to 0)

Agreed, will try to have a look next week end.

Thank you. I have had already a look but i have no clue how this works in order to make a sufficient fix.

@hotstepper13
Done cheers,


move to modules

Description

https://github.ibm.com/GoldenEye/issues/issues/6978
Release required?

[ ] No release
[ ] Patch release (x.x.X)
[ ] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content

Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

For mergers

Use a conventional commit message to set the release level. Follow the guidelines.
Include information that users need to know about the PR in the commit message. The commit message becomes part of the GitHub release notes.
Use the Squash and merge option.

/run pipeline

There seems to be an issue with the complete example that is blocking all PRs in this repo. Created an internal high priority issue to track it.

/run pipeline

:tada: This PR is included in version 3.9.3 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


SparrowDom/metastrategy

TODO:

[x] add unit tests for testing netOusdMintedForStrategy
[x]  document the helper functions in brownie
[x]  make more unit tests
[x] make brownie scripts that check on live node nothing can go wrong
[ ] decide which metapools to support and write corresponding deploy scripts

Deploy spreadsheet link
This PR presents a strategy to make use of Curve's Metapool by depositing 3CRV + OUSD liquidity into the pool. The OUSD for the deposit is minted without backing and when liquidity is removed it is also burned without receiving stablecoins for the burn.
The (also some opinionated & up for scrutiny) changes in this PR:

_getTotalPTokens function is removed from baseCurveStrategy. The main problem was that the format of that function has limitation where only 3CRVLP tokens are ever preset in contracts extending it. The change is that base Curve contract doesn't really have to know of how many 3CrvLP tokens are staked in various gauges to function. It was pretty convenient when only Convex and 3Pool strategies were using that. Since those could always tell how much 3CRV are used / staked in a gauge. The Metastrategy doesn't have that info handy, since it deals with Metapool LP tokens staked in gauge and there is no simple calculation/conversion from metapoolLP tokens to 3CRVLP tokens. Also that can somewhat fluctuate when removing liquidity from metapool in a balanced manner since the pool can be tilted either towards OUSD or towards 3crv. And metapool as its own MetapoolLP tokens that have their own virtual price that is required for calculating checkBalance. By removing  _getTotalPTokens function:

the withdrawal function has a different strategy of figuring out how much 3CRV tokens it required. It uses a threshold amount instead of total available LP tokens. This could be problematic in case where the metapool doesn't have the (current 5%) threshold of LP tokens available and we would want to withdraw all. But in that case using withdrawAll function is much more convenient and gas effective.
it is now a responsibility of each contract extending base Curve to implement checkBalance. And to incorporate all the various tokens deposited / locked.

This issue encapsulates the liquidity research, which gets to the bottom of the question "what is the best strategy to add / remove liquidity from the metapool". Results in this spreadsheet.
Convex Generalized Metastartegy
Merged from the original PR. It features:

creates a common abstract strategy that combines strategies interacting with Curve metapools
introduces a metapool strategy that can be configured to harvest any Curve metapool
added more brownie script functionality to test the behaviour in mainnet fork

Testing on fork:
Brownie and @DanielVF 's world script is your friend here. Also some additional functionality has been added to those helper scripts to more easily interact with Metapool strategy.
Setup:

set BLOCK_NUMBER in contracts/.env to smth you like. I was using 14655959 where metapool is tilted more heavily towards 3CRV (25,238,413 OUSD  28,243,182 3CRV). You can verify this by running show_metapool_balances() from brownie console. Run the node in forked mode yarn run node.
Metastrategy gets freshly deployed on startup.  Look for META STRATEGY ADDRESS 0x..... in the node output. And set that address in the top of brownie/world.py. If you don't change the block number that contract address doesn't change on node re-run. Once metastrategy is deployed to production that address shall not change.
in another terminal go to /brownie and run the console brownie console --network hardhat:

within the console starting always import from metastrategy import *. This will fetch 3CRV & OUSD and set all the helper functions to the environment.

Brownie functions:

check brownie/metapool.py and possibly brownie/world.py for the available functions
explore scripts under brownie/metapool/*.py for ideas on how/what to test

Open questions:

is it ok that we always mint 1 OUSD to 1 3CRV (converted to 3CRV dollar values). Should we make it more effective depending on how the pool is tilted?
Is there a possible flash loan exploit of manipulating curve pool / minting / redeeming using our Vault?

Watch out before merging:

set forceDeploy to false before merging the deploy script

@franckc added documentation on how to test metastrategies in forked mode under brownie/Readme.md and also in the ticket description under Brownie functions:. In case you find some documentation info lacking do tell

@DanielVF when you have a chance can you eyeball this commit. The code should do the same thing and should be simplified: https://github.com/OriginProtocol/origin-dollar/pull/1002/commits/e0063ebb8c9b8c6132d1c00e4ce358e12cfb1293

One of the biggest lifetime gas costs of each non-default strategy is the cost to determine the balance of holdings. This is because moving funds in or out might be a once a month thing, while rebasing happens at least daily, and during mints and during redeems, and during allocates, and even lots of times during funds reallocations. So from a gas point of view, it's all about the cost of checking a strat's balance .
This becomes more important as we look to move to larger numbers of strategies holding smaller amounts of funds.
I think we we could reduce the complexity and gas usage of checking the balance by ensuring that we deposits and withdraws always result in a clean state in which funds are completely stored back in Convex at the end. This will mean that we can drop all the external calls, logic, and math around working with intermediate level tokens both when balance checking and when withdrawing.

Regarding the gas optimisation I've made a proposal for solution here. My biggest concern is getting generalizedConvexStrategy _lpWithdrawal calculation wrong and withdrawing too much 3Crv. If the math on how much 3crv to withdraw isn't super solid, those funds will be hidden to checkBalance function.
Since this is more of a gas optimisation and not a security risk I would propose to mark this as a P1 and do it in the near future.

Yes, we can skip the gas optimization

Things done:

make initialisation a struct: https://github.com/OriginProtocol/origin-dollar/pull/1002/commits/053590b8049e896dbe13baf43fc0374087bf9f72
MEV guard PR with tests: https://github.com/OriginProtocol/origin-dollar/pull/1123
print at least the same amount OUSD as 3crv. And at max twice the OUSD: https://github.com/OriginProtocol/origin-dollar/pull/1002/commits/8925168a0c6b6cc90b0d014cd22fc7fa8cba6657

Stuff to do :

Change the way we calculate how to withdraw liquidity

@DanielVF @franckc Simplification of the removal of liquidity logic:
https://github.com/OriginProtocol/origin-dollar/pull/1002/commits/b553302165994639ccd4db5b25ae3b5ebbe338c0

Code Review
Requirements
This PR introduces new a new OUSD pool AMO, and generic 3CRV single-sided curve pool strategy. It also refactors the current curve/convex related code, and updates the previous 3pool convex and curve strategies.
🟠 The singled sided curve strategies have no guarantee that we can withdraw what we put in. The strategies are much more like trading - timing and prices matter. These strategies can result in considerable losses if a coin goes below peg and or liquidity is reduced. Because of the nature of curve's bonding curve, our actual withdraw losses can be multiples higher than the apparent pool price peg loss.
❌ The hardcoded slippage restrictions in these contracts means that in an increasing peg loss situation we may not be able to withdraw funds for the days that it takes us to deploy new contracts and go though the governance process.
🟠 The OUSD AMO pool may loose small amounts of money each deposit as deposits are focused on balancing the pool over profitability.
🟠 Once used at scale, these strategies will expect us to have a roughly equal amount of each stablecoins available for deposit/withdrawal in our default strategies. Otherwise redeems will drain higher percentages of the lowest funded default strategy.
❌ In use the OUSD AMO is likely to mostly operate in one direction, with either long periods of mostly minting OUSD, or long periods of mostly redeeming OUSD. Because of this, governance will need keep extending the netOusdMintForStrategyThreshold. However, this high netOusdMintForStrategyThreshold will mean that that while it might only allow a small change in one direction in the usual way, it could allow a truly massive change back the other way. For example, if it had mostly been used for redeems, and had done a net 105 million burns so far, we might want to set the limit to 115 million to enable 10 million more burns. However, this would mean that it could also be permitted to mint 220 million OUSD. I think the solution to this is that whenever governance changes the limit, we should reset the netOusdMintForStrategyThreshold back to zero. This will mean that the new limit based on where things currently are.
Deployment Considerations

[ ] Will need analytics site updated for new strategies, both crawling and UI.
[ ] Must have alerting of peg loss thresholds or going below liquidity thresholds.
[ ] Will need to update docs

Internal State
All internal strategy contract state are configuration variables.
Failure Consequences
In the mid-term these strategies may hold almost all backing funds for OUSD, and thus the impact of failure could be massive.
The OUSD contract can mint OUSD. This could cause a loss of funds if these were not equaled out with a corresponding gain in assets.
Attack
What conditions could cause this code to fail if they were not true
➟ In progress
MEV attacks on pools.
Peg loss.
OUSD cycle.
Logic
Are there bugs in the logic?
➟ In progress
Tests
➟ In progress

[ ] Each publicly callable method has a test
[ ] Each logical branch has a test
[ ] Each require() has a test
[ ] Edge conditions are tested

Flavor
➟ In progress
Could this code be simpler?
Could this code be less vulnerable to other code behaving weirdly?
Overflow

[x] Uses v8
[ ] Check that all for loops use uint256

❌ See discussion on _getMetapoolCoinIndex. It won't overflow, but is less gas efficient.

Black magic

[x] Does not contain selfdestruct
[x] Does not use delegatecall outside of proxying
[x] Address.isContract should be treated as if could return anything at any time, because that's reality.

Authentication

[x] Never use tx.origin
[x] Check that every external/public function should actually be external
[x] Check that every external/public function has the correct authentication

Cryptographic code
-[x] No Cryptographic code
Gas problems
-[x] All for loops are over lists under admin control, and of small size. All contracts are upgradable.
External calls

[x] Contract addresses passed in are validated
[x] Reentrancy guards on all state changing functions (no publicly callable state changing functions.)

[x] Still doesn't protect against external contracts changing the state of the world if they are called.

[x] Malicious behaviors (we are only using trusted contracts.)
[x] Could fail from stack depth problems (low level calls must require success)
[ ] No slippage attacks (we need to validate expected tokens received) 🟠 Inherent to the design of these curve and 3pool contracts are risks here.
[ ] Oracles, one of: 🟠 Inherent to the design of these curve and 3pool contracts are pricing risks.

[ ] No oracles
[ ] Oracles can't be bent
[ ] If oracle can be bent, it won't hurt us.

[x] Don't call balanceOf for external contracts to determine what they will do, when they instead use internal accounting?

Ethereum
Contract does not handle ethereum.

@DanielVF merging this in for now... lets talk if there is smth urgent that we'd still need to address


Test Issue created at Fri, 19 Nov 2021 11:07:06 GMT

Test issue body  Fri, 19 Nov 2021 11:07:06 GMT

Comment on issue at Fri, 19 Nov 2021 11:07:09 GMT


ColorPicker Control

Is your feature request related to a problem? Please describe.
I wanted to give my users the option to hava a custom accent color. My result is a custom class for now, but may be someday it will be implemented for others, too. ( see #3515 ). I think it would be nice to have a colorpicker, as there is none in WPF by default
Describe the solution you'd like
have a colorpicker for selecting colors
Additional context
There are several ideas what we can do:

make a custom controltemplate for this one: https://github.com/xceedsoftware/wpftoolkit/wiki/ColorPicker
make a new control similar to this colorpicker https://github.com/xceedsoftware/wpftoolkit/wiki/ColorPicker (I don't know if we are allowed to take code from there)
Create a now control from scratch

Closed Issues
None
@punker76 I would like to help with this topic, if you want me to. If you don't want to have a colorpicker at all, just close this issue. I wont blame you.

It'd be cool to have this inside of the mahapps kit imo.  Currently I'm using
https://github.com/Dirkster99/ColorPickerLib
but it'd be nice to have them in one place.  maybe could use his colorPicker as a starting point?

@RejectKid this control is based on this toolkit, as far as I can see. There are a few resons why I am trying to implement it on my own:

Localization only shows when the Control is active, I want it shown all the time
The control is hard to style imo
what about the license? Can we use it without any permission?
it is sometimes slow when having many colors
the list of available colors is static, so if you want to provide different ColorPickers for different proposes you need to workaround this.

I still need some time to get this working and @punker76 has more important stuff to do, so we need to be a bit patient at the moment
current state:

Happy coding
Tim

Update:

If someone is interested, here is my code:
https://github.com/timunie/MahApps.Metro/tree/ColorPicker
Any feedback is welcome.
Happy coding
Tim


click popup container in funding cycle distribution limit to parent container

What does this PR do and why?
Partial solve (but doesn't close) for https://github.com/jbx-protocol/juice-interface/issues/888
Screenshots or screen recordings
https://user-images.githubusercontent.com/104132113/166213084-a9017359-f29c-4981-bcf8-c6be54c0386d.mov
Acceptance checklist

[x] I have evaluated the Approval Guidelines for this PR.
[x] I have tested this PR in all supported browsers.

 Had no idea how I was gonna fix this lmao


Delete docs _index.yaml file.

The docs landing page will be a generated HTML file instead.

Thanks, @lilies !
@balopat, please merge. Thanks


Does video-viewer support multiple cameras?

First of all thank you for the amazing repository,
I have a usecase where I need to stream from multiple cameras, and have the consumers pick up which streams they want to view by negotiating with the signaling server.
video-viewer [input] webrtc://@:8554/output has worked so far with one camera. How do I add support for multiple cameras with video-viewer, is that possible ?

Hi @sina-sixwheel, the video-viewer sample only works with one videoSource/videoOutput, but yes in theory you could make your own multi-camera version of video viewer that exposes different WebRTC streams like webrtc://@:8554/output1 webrtc://@:8554/output2  ect
At one point, I did show this can work here:
https://github.com/dusty-nv/jetson-inference/blob/master/docs/webrtc-dash.md
(note how one client is subscribed to two different camera streams)


flutter doctor without results

After cloning successfully flutter, I try to execute 'flutter doctor' but I don't get the results.
I have tried several versions and the beta branch, also searched in the repo issues and stackoverflow without success. The most similar issue is this one (but I'm from Spain) 12295
Macbook info:
ProductName:	Mac OS X
ProductVersion:	10.13.4
BuildVersion:	17E199
Here is a step by step.
Cloning the repo
Macbook:~ ben$ git clone -b master https://github.com/flutter/flutter.git
Cloning into 'flutter'...
remote: Counting objects: 119704, done.
remote: Compressing objects: 100% (64/64), done.
remote: Total 119704 (delta 29), reused 29 (delta 20), pack-reused 119619
Receiving objects: 100% (119704/119704), 36.36 MiB | 5.21 MiB/s, done.
Resolving deltas: 100% (89707/89707), done.

## Flutter Doctor for first time
It starts downloading and stops after 'Downloading Gradle Wrapper...'  I think it starts 'flutter doctor' but there's no results.

Macbook:~ ben$ flutter doctor -v
Downloading Dart SDK from Flutter engine 09d05a38912a3c1a906e95099cac9a7e14fae85f...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 43.9M  100 43.9M    0     0  16.7M      0  0:00:02  0:00:02 --:--:-- 16.7M
Building flutter tool...
Downloading Material fonts...                                0,6s
Downloading package sky_engine...                            0,2s
Downloading common tools...                                  0,6s
Downloading darwin-x64 tools...                              1,8s
Downloading android-arm-profile/darwin-x64 tools...          0,6s
Downloading android-arm-release/darwin-x64 tools...          0,6s
Downloading android-arm64-profile/darwin-x64 tools...        0,6s
Downloading android-arm64-release/darwin-x64 tools...        0,8s
Downloading android-x86 tools...                             1,8s
Downloading android-x64 tools...                             2,0s
Downloading android-arm tools...                             1,5s
Downloading android-arm-profile tools...                     1,1s
Downloading android-arm-release tools...                     0,9s
Downloading android-arm64 tools...                           1,5s
Downloading android-arm64-profile tools...                   1,4s
Downloading android-arm64-release tools...                   1,1s
Downloading ios tools...                                     2,9s
Downloading ios-profile tools...                             4,7s
Downloading ios-release tools...                             2,5s
Downloading Gradle Wrapper...                                0,4s
^C

Flutter Doctor (no results)
Executing 'flutter doctor -v' without results
Macbook:~ ben$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
^C
Macbook:~ ben$ flutter doctor -v

Flutter --version
Macbook:~ ben$ flutter --version
Flutter 0.3.3-pre.1 • channel master • https://github.com/flutter/flutter.git
Framework • revision 315993efb3 (5 hours ago) • 2018-04-20 14:49:33 +0200
Engine • revision 09d05a3891
Tools • Dart 2.0.0-dev.48.0.flutter-fe606f890b

Sorry for the late response. Is this still an issue?

Oh, I also encountered the same situation. It took a long time to check and it didn't solve
Flutter Doctor
flutter git:(beta) flutter doctor
   Woah! You appear to be trying to run flutter as root.
   We strongly recommend running the flutter tool without superuser privileges.
  /
📎
Downloading Dart SDK from Flutter engine 7375a0f414bde4bc941e623482221db2fc8c4ab5...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 49.7M  100 49.7M    0     0  5642k      0  0:00:09  0:00:09 --:--:-- 9714k
Building flutter tool...
 Please run

    pub --trace upgrade --verbosity=error --no-packages-dir

and include the logs in an issue on https://github.com/dart-lang/pub/issues/new
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (9 tries left)
Downloading Material fonts...                                3.4s
Downloading package sky_engine...                            3.3s
Downloading common tools...                                  3.7s
Downloading darwin-x64 tools...                              6.8s
Downloading android-arm-profile/darwin-x64 tools...          3.1s
Downloading android-arm-release/darwin-x64 tools...          3.2s
Downloading android-arm64-profile/darwin-x64 tools...        3.3s
Downloading android-arm64-release/darwin-x64 tools...        2.9s
Downloading android-x86 tools...                             4.4s
Downloading android-x64 tools...                             4.8s
Downloading android-arm tools...                             4.0s
Downloading android-arm-profile tools...                     3.4s
Downloading android-arm-release tools...                     3.9s
Downloading android-arm64 tools...                           3.5s
Downloading android-arm64-profile tools...                   6.3s
Downloading android-arm64-release tools...                   3.4s
Downloading android-arm-dynamic-profile tools...             4.1s
Downloading android-arm-dynamic-release tools...             3.4s
Downloading android-arm64-dynamic-profile tools...           3.5s
Downloading android-arm64-dynamic-release tools...           3.9s
Downloading ios tools...                                     7.3s
Downloading ios-profile tools...                             5.3s
Downloading ios-release tools...                             5.8s
Downloading Gradle Wrapper...                                1.4s
Doctor summary (to see all details, run flutter doctor -v):

I tried it many times, still, the various dependencies should be downloaded, but I don’t know what kind of work flutter doctor will do after Downloading Gradle Wrapper. In the process, what caused the reaction
I even tried installing on a new mac and the result was successful.
But after I installed the cordova related environment, updating the version of flutter 1.0 failed, so I am not sure which causes all of this.

@peakcool I have seen a few requests recently about downloading Gradle Wrapper hanging, but haven't found info about the cause or a workaround.

@zoechi  So, can I judge gradle to download correctly based on this sentence: Downloading Gradle Wrapper...                                1.4s ?
I also raised the same problem in another issuse and actively resolved it, but it has not progressed yet.
#25870


Cannot Open project.json file

Here's the sequence of events:

installed VS 2015
set up DNVM and DNX
Downloaded the Git Zip
Opened the solution and the projects did not fully install for Console, Mvc, Web.
Finally figured out to select the project.json files when Add | Existing Project ... is used.
The projects did open and I could browse to any of them.

Great stuff but .Net 5 was not installed.  So I downloaded it from Microsoft and ran the install for .Net 5.0 RC1 Update 1.  After this VS 2015 would not open.
So I uninstalled the .Net 5 framework and finally VS 2015 would start up.  But then all 3 projects in the list have (incompatible) after them, i.e., ConsoleApp (incompatible) and the same for MvcApp and WebApp.
But now when I browse to the project locations with Add | Existing Project ... VS 2015 expects to see a .csproj file, not .xproj or .json.  If I try to use either of these latter 2 types I get a dialog saying that .csproj file needs to be used.
Makes no sense ... the Git download worked the first time after the projects were re-loaded.  I looked in Tools | Options to see if there was some way to select the correct project file types -- maybe a checkbox was set wrong and VS is set somehow now to only look for .csproj?
Checked Google but could not find what was causing the error.
I've repaired the install after the .Net 5 uninstall.  Also made sure dnvm and dnx are installed.  It all looks correct but any project / solution I open with VS 2015, any project or projects even though they're obviously 2015 projects show as incompatible.

VS2015_Incompatible_Pjct_Issue.docx
Here are screen shots of what I'm seeing.


Need better redistribition terms/policy if you really want user move from centos to oracle linux.

Need better redistribition if you really want user move from centos to oracle linux.
Centos has many mirrors than oracle linux.
Feel free to redistribute CentOS, without any problem about law, and sue.
I am afraid oracle may not want to see Oracle Linux redistribute and mirror there and where place.
Oracle Linux a better choice?  well see

You are free to download Oracle Linux and distribute it unmodified.
https://yum.oracle.com/oracle-linux-isos.html
Download mirrors are available also:
https://community.oracle.com/tech/apps-infra/discussion/4417703/downloading-oracle-linux

@totalamateurhour can us setup our mirror server, and provided for public user?

Yes, others have been running them for many years, for example: http://mirrors.kernel.org/oracle/
As I said, we welcome you to run your own.

and what about the yum , did they has mirror?

I am not just say the iso, I mean the whole yum and packages.
For example:
https://mirrors.tuna.tsinghua.edu.cn/centos/

We host yum.oracle.com on Akamai's CDN, so I'm pretty sure it'll be fast wherever you are. However, you're more than welcome to create and host your own mirror server too.


Iox #350 rename event info into notification info

Pre-Review Checklist for the PR Author

[x] Code follows the coding style of CONTRIBUTING.md
[x] Tests follow the best practice for testing
[x] Branch follows the naming format (iox-#123-this-is-a-branch)
[x] Commits messages are according to this guideline

[x] Commit messages have the issue ID (iox-#123 commit text)
[x] Commit messages are signed (git commit -s)
[x] Commit author matches Eclipse Contributor Agreement (and ECA is signed)

[x] Update the PR title

Follow the same conventions as for commit messages
Link to the relevant issue

[x] Relevant issues are linked
[x] Add sensible notes for the reviewer
[x] All checks have passed (except task-list-completed)
[x] Assign PR to reviewer

Notes for Reviewer

Checklist for the PR Reviewer

[x] Commits are properly organized and messages are according to the guideline
[x] Code according to our coding style and naming conventions
[x] Unit tests have been written for new behavior
[x] Public API changes are documented via doxygen
[x] Copyright owner are updated in the changed files
[x] PR title describes the changes

Post-review Checklist for the PR Author

[ ] All open points are addressed and tracked via issues

References

Closes TBD

This will break cyclone and we have still more urgent problems to solve there. I suggest not adding it to release_1.0 if it is only a name change, it adds unnecessary complications.

Upon closer inspection, it will cause no problems with cyclonedds (the listener API is not affected). I did not take a full look but it looks ok.


Allow importing entries in the same format as those exported

Is your feature request related to a problem? Please describe.
Since we can export the papers and our notes in .json. I find it a good idea to allow us to import them as well. That can help bring us some users from other bib management software, ex. Mendeley, Paperpile, etc.
Describe the solution you'd like
It should be straightforward -- just a simple sanity check on the format of the imported JSON file and reject those that are not compliant.
Additional context
That said, I cannot find the interface to export my entries tho.

Version 0.5.2
Have you seen this part of the options page?

It should allow you to both export then import your Memory as .json files with sanity checks.
You can access it from the extension's popup menu:

Or Right click + Options:

Version 0.5.3
This is not released just yet but available from source but there will be a feature to import a list of papers as per #75 (the difference is that a raw list of papers requires parsing, i.e. retrieving a paper's authors, title etc. as well as matching preprints to publications databases

I'll close as I believe it answers your issue but feel free to re-open

Thank you!

As of 0.5.3:


Update MWA antenna layouts

As of 38132bc, the MWA-128T locations are outdated and the format is incompatible.

Updated with new antenna coordinates and appropriate defaults in 7e1a8a2d5328ef428470ced064e150ce29542c6b


Bump electron-builder from 22.7.0 to 22.11.4

Electron builder fails to build app on node 16, which means that package managers on platforms with Node 16 will fail to install the app with a cryptic error. Bump electron-builder version to fix this.
This version is a pre-release from a few hours ago, so it might be better to wait a few days until it is properly released.

Also, I noticed that your .gitignore is ignoring yarn.lock which could lead to weird bugs due to package inconsistencies. Please consider adding the lockfile to version control.

Thanks! I'll just pull the pre-release for now and will update it again later. I'll also go and fix the .gitignore.


Better handle serde_as on enum variants #499

Change the serde_as macro to warn on serde_as attributes on enum variant
fields. They are unsupported (in contrast to serde_derive), so showing
an error is better and avoids confusion when migrating.
Also update the main examples to include an enum.
Closes #499

bors r+


Batch calls support

How can we bundle small calls in batch and get all the result once for all to avoid round trip latency in c# client lib? I’m aware pyro support that. However, it seems not supported in Pyrolite.
Thanks

Indeed, this is a feature not implemented in the current Pyrolite.
Maybe I'll add it when adapting Pyrolite to be compatible with Pyro5.

I won't be adding this feature myself, sorry.


Hook ordering issue

This is something I've talked about on the discussion board before, but I figured it was worth re-raising here.
Normally, middleware give the user the possibility to wrap all subsequent middleware and the request handler in a stack-like manner. So if I have a list of middleware [m1, m2, m3] then I expect m1's pre-request hooks to run then m2's then m3's then the request handler and then m3' response hooks then m2's then m1's. Visually, you might represent that like so:
m1.on_request
  m2.on_request
    m3.on_request
      handler
    me3.on_response
  m2.on_response
m1.on_response

This sort of thing makes it possible to have middleware that, for example, instruments the whole request-response cycle, which is something I'm trying to do here.
As it stands right now, hooks aren't "stacked" like this, instead they run in the same order they were registered:
m1.on_request
  m2.on_request
    m3.on_request
      handler
    m1.on_response
  m2.on_response
m3.on_response

This makes it impossible to provide a single hook object that can instrument the whole request-response cycle. The object has to be split into two: [instrument_part_1, some_other_hook, instrument_part_2] and that's kind of a bummer. Is there a better way (other than WSGI middleware) to do this? Is there any reason not to change the hooks implementation so that response hooks run in reverse, thereby fixing the ordering issue?

Just to chime in here, are event_hooks a thing because we want to use components and dependency injection, and traditional middleware doesn't fit the paradigm? We could potentially add middleware that returns a component and runs if the function signature uses that middleware's returned component if we wanted to switch to a middleware paradigm. Just a thought!

Correct - it's not a function stack.

Why not though? More specifically, why can't/shouldn't it behave like one?

If anything I'd prefer a before_request and after_response which can be used for handlers that we want to run "as close as possible" to the start/end.

Would that be any different from the

The object has to be split into two: [instrument_part_1, some_other_hook, instrument_part_2]

approach? That's how apistar_prometheus used to work in 0.3 so I wouldn't be opposed to doing it that way, but it just feels wrong because hooks should be self-contained.
For what it's worth, the ordering issue also appears in the new version of apistar_sentry. If you set the current user context via a request hook, then the response hook may clear it before another hook in which an exception is raised.

Spitballing here, but maybe we can work around by architecting a global middleware hook
class GlobalHooks:
    def on_request(self, request: http.Request):
        apistar_prometheus(request)
        apistar_sentry(request)

    def on_response(self, response: http.Response):
        apistar_sentry(response)
        apistar_prometheus(response)

Basically put all the middleware stuff into one on_request/on_response hook and stack it so that it executes in the manner desired

We'll switch it around so that event hooks/middleware get instantiated during an incoming request. Kinda important that they should be able to store per-request state.

See: #475


Repo is private but package is publicly available on Pypi

This library is available on Pypi: https://pypi.python.org/pypi/mbed-cloud-sdk/<IP_ADDRESS>
But the repo is still private. Do we intend on making this repo public?

released now, fyi :)

Hooray! 🎉
Thanks everyone!


Fix run time error

Codecov Report

Merging #145 (c91ca53) into dev (273f9d7) will increase coverage by 0.34%.
The diff coverage is 91.02%.

@@            Coverage Diff             @@
##              dev     #145      +/-   ##
==========================================
+ Coverage   66.31%   66.66%   +0.34%
==========================================
  Files          67       67
  Lines        4976     5030      +54
==========================================
+ Hits         3300     3353      +53
- Misses       1676     1677       +1

Impacted Files
Coverage Δ

src/kwja/callbacks/word_module_discourse_writer.py
32.83% <ø> (+0.48%)
:arrow_up:

src/kwja/models/char_module.py
21.73% <ø> (ø)

src/kwja/models/word_module.py
15.95% <ø> (ø)

...kwja/datamodule/datasets/char_inference_dataset.py
91.78% <80.00%> (-1.87%)
:arrow_down:

src/kwja/callbacks/word_module_writer.py
78.24% <81.48%> (-0.05%)
:arrow_down:

src/kwja/callbacks/char_module_writer.py
93.24% <100.00%> (+0.09%)
:arrow_up:

src/kwja/datamodule/datasets/base_dataset.py
95.65% <100.00%> (+0.33%)
:arrow_up:

src/kwja/datamodule/datasets/char_dataset.py
97.05% <100.00%> (+0.44%)
:arrow_up:

src/kwja/datamodule/datasets/word_dataset.py
82.35% <100.00%> (+0.57%)
:arrow_up:

...kwja/datamodule/datasets/word_inference_dataset.py
95.13% <100.00%> (+0.28%)
:arrow_up:

... and 2 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


[Feature Request] Migrating tensorspecs back into tensordict

Motivation
This is a separate issue following a couple of comments from the Kill tensorspec PR. Without repeating the comments, there's some desire to migrate tensorspecs back into tensordict because:

tensorspecs and tensordicts naturally go together (even outside the context of RL)
tensorspecs have little-to-no dependency on the rest of the torchrl package
torchrl is a larger package that has limited PyTorch version support

Solution

Move tensorspecs back into tensordict
Change torchrl's tensorspecs to point to tensordict's tensorspecs (irrelevant to this project)

Alternatives
Leave tensorspec where it is and have users continue installing torchrl as an additional dependency if they want to use tensorspecs with tensordicts.

[x] I have checked that there is no similar issue in the repo (required)

@vmoens Was there internal discussion on this issue?

This is an interesting problem that I have also found myself thinking about.
Both solutions have certainly some pros and cons.
Here are some of my thoughts:

Although specs are useful in some contexts outside RL, they are still not applicable in all the contexts where tensordict can be applied. Having them in tensordict might cause some confusion for tensordict users. This is because if we decide to bring them back, we would have also to transfer SafeModules and other tensordictmodules that check their output against specs. The question then is where to draw the boundary? It may reduce the modularity of tensordict
The development of specs is very tied to the RL repo. For example, the decision of what specs to implement, what functions they possess and so on, is driven by their RL uscases.
Specs are not necessarily tied to tensordicts. They actually define the domains of tensors. If they were fortunate enough to make it to pytorch core, they should not be part of the tensordict module, but have more generality. Therefore, tying them to this module might be somewhat limiting as they pertain to tensors, not necessaily to dicts.

Here is why I am not totally on board to move them here.
What do you think?

Specs are not necessarily tied to tensordicts. They actually define the domains of tensors. If they were fortunate enough to make it to pytorch core, they should not be part of the tensordict module, but have more generality. Therefore, tying them to this module might be somewhat limiting as they pertain to tensors, not necessaily to dicts.

All good points, but this one especially resonated. That's good reasoning to not merge specs back in (in hope of specs - and also tensordicts - making it into core). I'm fine closing this issue. Thanks for the thoughts

Closing for now, feel free to reopen if needed


error: cannot find symbol

Hi i got this error when download the lib and import manually
C:\Users\Admin\Desktop\source_code\android\googleplayapps\Kruso\kruso\build\generated\source\kapt\devDebug\com\videoeditor\kruso\databinding\ActivityVideoCaptureBinding.java:19: error: cannot find symbol     public final com.flurgle.camerakit.CameraView cvCamera;                                       ^   symbol:   class CameraView   location: package com.flurgle.camerakit
I checked and seems like
sourceSets {         main.java.srcDirs += 'src/main/base'         main.java.srcDirs += 'src/main/api16'         main.java.srcDirs += 'src/main/api21'         main.java.srcDirs += 'src/main/types'         main.java.srcDirs += 'src/main/utils'     }
does not work well with databinding. Anyone has any idea?
if i use compile 'com.flurgle:camerakit:0.9.17', I'm getting issue as stated https://github.com/gogopop/CameraKit-Android/issues/146

solved~
The problem is i include the lib in my another lib, then it's not included in the main project. Adding implementation project(':camerakit') solved the problem


Error during Tenant Provisioning in SAP Cloud Platform Trial Account

Hello Team,
I am facing issues with my Tenant provisioning. The same is getting stuck after completion of 18 percent. Earlier I thought maybe I will try with a new account. But I faced the same problem.
Here are my trial account details:
Global Account: ba30d83atrial
Subaccount: trial
Error Message:
Tenant provisioning is in progress and it can take 20 minutes. Please wait for the provisioning to complete before creating service broker instances.
Global Account: 931506cctrial
Subaccount: trial
Error Message:
Tenant provisioning is in progress and it can take 20 minutes. Please wait for the provisioning to complete before creating service broker instances.
Please do the needful so that I can set up the tenant provisioning successfully. both the processes are stuck after 18% progress.
Regards
Gourav Jena

Hello Jena,
this channel is only for issues with tutorials. If you are facing problems with our products, kindly create a ticket.
Regards,
Michael


Use index for empty Editor Help Search

Split off from #62524
Uses an index to build searches for empty (fewer than 2 characters, unless @) searches, only used for empty searches, have not attempted to use it for searches with hierarchy, main focus is to reduce overhead building the hierarchy
Now correctly detects updates to classes, using EditorFileSystem
Will investigate how I might use #77446 to improve this and #62524 (and obviously if it ends up getting merged first)
Possible improvements:

Save folding status

Might later look into general improvements to the search part, like the option of reusing the current tree if a compatible change to the input occurs (changing from case insensitive to case sensitive, selecting a subset of the types already selected, searching for a term where the previous selection is a substring), as such changes would at most remove currently found ones

only used for empty searches, have not attempted to use it for searches with hierarchy, main focus is to reduce overhead building the hierarchy

So this is my main concern here. If we were to introduce some sort of cache, we should use it for all searches, not just for empty searches. With this PR we would be adding complexity as a temporary fix for only a part of use cases (and a small part at that). We would still need a complete solution that covers other cases, so it's likely that the code here is going to be reworked anyway. I think that it's a problem. There are also existing discrepancies in the current code regarding how we treat empty and non-empty searches, which I find weird (why are we sometimes ignoring scripts, for instance?) and which we should not aim to preserve.
What are your main blockers from implementing a proper caching mechanism? And what exactly do we want to cache to speed things up? I think that main bottlenecks are filtering and building the tree. And especially for empty searches building the hierarchy of classes itself is a very small part, I think. We basically already have everything we need in DocData, it's just flattened out.
So I'm thinking, hierarchy would rarely change compared to the number of searches we need to run every time a user works with the editor normally. Perhaps we should have a hierarchal structure in DocData itself, in addition to the flat class_list? We would update it alongside class_list, and that ensures that we only do the expensive stuff when the data changes. Then we basically don't need your index in its current form and can generate the tree from that hierarchal data directly, right?
And with https://github.com/godotengine/godot/pull/77446 merged we could start caching TreeItems, so we don't free and recreate them constantly. That can be a simple hashmap of class names and TreeItems.
I'm not sure if we can speed up filtering itself, but we can at least ensure we keep the results for a particular set of filters, so changing display options doesn't trigger pointless searches. This is where I see a thing like your index being useful. But it needs to be implemented differently, of course.

Good points, will look into the details of this, the original issue was that filling the tree without the index was very slow in the original PR
Will look into transferring the system for this to the DocData directly, shouldn't be too complicated, and good points, the prospects of caching nodes would greatly help here
The benefit mainly for speed of having the index I believe is that it prevents adding nodes at random points in the tree at each step, as the doc order is not related to the hiearchy order

Minor update, based on some tentative tests:

Intending to (initially) use just DocData and DocTools to maintain the hierarchy, will investigate the possibility of integrating it into ClassDB and Object but it's a bit more of a significant addition and I don't think adding it to the doc data as well (like how the parent class is both on docs and ClassDB)
Will put this to use for EditorHelp as well eliminating the need to fill the Imherited by: each time
Will then dig into the Tree PR to work out how to connect the two

Will open a separate PR for the doc data stuff because it has some wider implications

I wouldn't touch ClassDB, unless we absolutely have to for some reason. Let's keep this localized to the editor and the docs.

Revised and now ready for review, avoids freeing and creating TreeItems between runs when changing the settings, or other updates, clears the data when closing the popup to save memory, but I think the main gain is when updating the tree

So I did some performance testing with this patch, and there are some improvements, but I would say not where it matters the most. This suggests that the biggest task during the search is, well, the search itself, the filtering. So tree optimizations don't help a lot.
Here's what I've got.

This PR but with _find_or_create_item always creating item
# Open & close

EditorHelp search done in 27150 msec
EditorHelp search done in 22821 msec
EditorHelp search done in 23037 msec
EditorHelp search done in 23033 msec
EditorHelp search done in 23357 msec
EditorHelp search done in 22984 msec

# Type CanvasItem

EditorHelp search done in 16151 msec
EditorHelp search done in 61174 msec
EditorHelp search done in 38129 msec
EditorHelp search done in 36029 msec
EditorHelp search done in 37685 msec
EditorHelp search done in 33603 msec
EditorHelp search done in 30664 msec
EditorHelp search done in 29356 msec

# Select all and delete

EditorHelp search done in 19702 msec

# Type CanvasItem

EditorHelp search done in 16901 msec
EditorHelp search done in 60786 msec
EditorHelp search done in 37567 msec
EditorHelp search done in 35557 msec
EditorHelp search done in 35710 msec
EditorHelp search done in 36061 msec
EditorHelp search done in 29840 msec
EditorHelp search done in 29485 msec

# Select all and delete

EditorHelp search done in 20904 msec

# Type CanvasItem

EditorHelp search done in 16352 msec
EditorHelp search done in 62959 msec
EditorHelp search done in 37910 msec
EditorHelp search done in 36326 msec
EditorHelp search done in 34051 msec
EditorHelp search done in 36893 msec
EditorHelp search done in 29998 msec
EditorHelp search done in 31087 msec

# Select all and delete

EditorHelp search done in 20287 msec

I then properly reverted to the base commit (your pre-requisite PR) and repeated the test, numbers were pretty much the same.

This PR as is
# Open & close

EditorHelp search done in 29836 msec
EditorHelp search done in 23291 msec
EditorHelp search done in 23281 msec
EditorHelp search done in 23235 msec
EditorHelp search done in 23128 msec

# Type CanvasItem

EditorHelp search done in 11300 msec
EditorHelp search done in 60133 msec
EditorHelp search done in 34215 msec
EditorHelp search done in 36310 msec
EditorHelp search done in 34973 msec
EditorHelp search done in 29777 msec
EditorHelp search done in 30237 msec

# Select all and delete

EditorHelp search done in 11583 msec

# Type CanvasItem

EditorHelp search done in 11552 msec
EditorHelp search done in 47853 msec
EditorHelp search done in 40483 msec
EditorHelp search done in 36908 msec
EditorHelp search done in 38016 msec
EditorHelp search done in 41106 msec
EditorHelp search done in 34926 msec
EditorHelp search done in 33553 msec
EditorHelp search done in 30547 msec
EditorHelp search done in 28900 msec

# Select all and delete

EditorHelp search done in 11745 msec

----

# Type CanvasItem

EditorHelp search done in 11428 msec
EditorHelp search done in 59534 msec
EditorHelp search done in 36870 msec
EditorHelp search done in 34049 msec
EditorHelp search done in 37174 msec
EditorHelp search done in 36284 msec
EditorHelp search done in 36710 msec
EditorHelp search done in 31183 msec

# Select all and delete

EditorHelp search done in 11986 msec

# Type CanvasItem

EditorHelp search done in 11826 msec
EditorHelp search done in 47993 msec
EditorHelp search done in 39987 msec
EditorHelp search done in 35682 msec
EditorHelp search done in 37178 msec
EditorHelp search done in 37434 msec
EditorHelp search done in 39563 msec
EditorHelp search done in 33644 msec
EditorHelp search done in 30011 msec
EditorHelp search done in 29245 msec

# Select all and delete

EditorHelp search done in 11873 msec

# Type CanvasItem

EditorHelp search done in 11087 msec
EditorHelp search done in 48177 msec
EditorHelp search done in 39633 msec
EditorHelp search done in 36763 msec
EditorHelp search done in 35209 msec
EditorHelp search done in 38964 msec
EditorHelp search done in 34553 msec
EditorHelp search done in 36050 msec
EditorHelp search done in 29682 msec
EditorHelp search done in 30392 msec

# Select all and delete

EditorHelp search done in 12001 msec

# Type CanvasItem

EditorHelp search done in 11399 msec
EditorHelp search done in 49362 msec
EditorHelp search done in 37216 msec
EditorHelp search done in 36895 msec
EditorHelp search done in 39983 msec
EditorHelp search done in 36929 msec
EditorHelp search done in 35785 msec
EditorHelp search done in 30559 msec
EditorHelp search done in 32560 msec

# Select all and delete

EditorHelp search done in 12434 msec

My testing routine was to open and close it a few times, then open it and type "CanvasItem" then select all and delete it, also a few times. You can see that:

First open after the editor startup is always slower.
This PR speeds up "empty" searches significantly.
All other searches deviate a lot, but don't appear faster or slower in general.
With this PR the first time you type "CanvasItem" the very first search is slower and on par with that from before, but ever repeated search is slightly faster.

Benchmarking is done with this patch:

diff --git a/editor/editor_help_search.cpp b/editor/editor_help_search.cpp
index afe2f97f47..b62c9cca10 100644
--- a/editor/editor_help_search.cpp
+++ b/editor/editor_help_search.cpp
@@ -48,6 +48,7 @@ void EditorHelpSearch::_update_results() {
 		search_flags |= SEARCH_SHOW_HIERARCHY;
 	}

+	search_started = OS::get_singleton()->get_ticks_usec();
 	search = Ref<Runner>(memnew(Runner(results_tree, results_tree, &tree_cache, term, search_flags)));
 	set_process(true);
 }
@@ -128,6 +129,8 @@ void EditorHelpSearch::_notification(int p_what) {
 			if (search.is_valid()) {
 				if (search->work()) {
 					// Search done.
+					uint64_t search_ended = OS::get_singleton()->get_ticks_usec();
+					print_verbose(vformat("EditorHelp search done in %s msec", search_ended - search_started));

 					// Only point to the match if it's a new search, and not just reopening a old one.
 					if (!old_search) {
diff --git a/editor/editor_help_search.h b/editor/editor_help_search.h
index e4980d6ff7..e2afa6ee88 100644
--- a/editor/editor_help_search.h
+++ b/editor/editor_help_search.h
@@ -66,6 +66,7 @@ class EditorHelpSearch : public ConfirmationDialog {

 	class Runner;
 	Ref<Runner> search;
+	uint64_t search_started = 0;

 	struct TreeCache {
 		HashMap<String, TreeItem *> item_cache;

Once I've pushed some changes you can also compare the same performance with the complete PR, where I hope it'll help more with larger empty searches 🙂, probably areas where more can be shaved off as well

And thank you for verifying the performance, wasn't sure how I'd do it rigorously myself

Did some further performance checking and realized that the clearing of the tree also matters, so these are my results:
No caching, clears tree
# Open, empty search
EditorHelp search done in 53760 usec

# Type in `CanvasItem`
EditorHelp search done in 18775 usec
EditorHelp search done in 45658 usec
EditorHelp search done in 43117 usec
EditorHelp search done in 29130 usec
EditorHelp search done in 27321 usec
EditorHelp search done in 26683 usec
EditorHelp search done in 24487 usec
EditorHelp search done in 22271 usec
EditorHelp search done in 22081 usec

# Clear search
EditorHelp search done in 21015 usec

# Type in `CanvasItem` again
EditorHelp search done in 13893 usec
EditorHelp search done in 18153 usec
EditorHelp search done in 44394 usec
EditorHelp search done in 41381 usec
EditorHelp search done in 26954 usec
EditorHelp search done in 24407 usec
EditorHelp search done in 21838 usec
EditorHelp search done in 20886 usec
EditorHelp search done in 20379 usec

# Clear search again
EditorHelp search done in 13812 usec

No caching, no clearing of tree
# Open, empty search
EditorHelp search done in 35600 usec

# Type in `CanvasItem`
EditorHelp search done in 12201 usec
EditorHelp search done in 42929 usec
EditorHelp search done in 29858 usec
EditorHelp search done in 27547 usec
EditorHelp search done in 27164 usec
EditorHelp search done in 25825 usec
EditorHelp search done in 23611 usec
EditorHelp search done in 22020 usec
EditorHelp search done in 21571 usec
EditorHelp search done in 21011 usec

# Clear search
EditorHelp search done in 15888 usec

# Type in `CanvasItem` again
EditorHelp search done in 12774 usec
EditorHelp search done in 45586 usec
EditorHelp search done in 29901 usec
EditorHelp search done in 27730 usec
EditorHelp search done in 26266 usec
EditorHelp search done in 25097 usec
EditorHelp search done in 23159 usec
EditorHelp search done in 22676 usec
EditorHelp search done in 21303 usec
EditorHelp search done in 20992 usec

# Clear search again
EditorHelp search done in 15651 usec

Caching
# Open, empty search
EditorHelp search done in 35782 usec

# Type in `CanvasItem`
EditorHelp search done in 9196 usec
EditorHelp search done in 42856 usec
EditorHelp search done in 28382 usec
EditorHelp search done in 26510 usec
EditorHelp search done in 25689 usec
EditorHelp search done in 24787 usec
EditorHelp search done in 22825 usec
EditorHelp search done in 22427 usec
EditorHelp search done in 21719 usec
EditorHelp search done in 21309 usec

# Clear search
EditorHelp search done in 9587 usec

# Type in `CanvasItem` again
EditorHelp search done in 9159 usec
EditorHelp search done in 35010 usec
EditorHelp search done in 29025 usec
EditorHelp search done in 26107 usec
EditorHelp search done in 25557 usec
EditorHelp search done in 24929 usec
EditorHelp search done in 23414 usec
EditorHelp search done in 22101 usec
EditorHelp search done in 21785 usec
EditorHelp search done in 21321 usec

# Clear search again
EditorHelp search done in 9568 usec

because it looks like your results don't take this into account from your description and stats

Well, as noted I also checked times without this commit completely, and they were in the same ballpark. I think what you demonstrate here aligns with my numbers. Overall you get a ~45-50% improvement on "empty" searches, but the rest of the runs remains consistent with or without the patch. For you it's 20-25k usec, for me it was 30-35k usec.
Unless you see something else in this data?

My bad missed the note that the data was the same, noticed some increase with the clear applied but it's largely equivalent, it was more pronounced on the final one and didn't test as much here and it's largely negligible 🙂

Thanks!

Thank you!


Move errno method implement to C++ side

errno value depend on the platform and libc library.
For example, glibc and musl differ errno.h
So, Sometimes lib/errno.js implement cannot be use.
Reference:

http://sourceware.org/git/?p=glibc.git;a=blob;f=include/errno.h;h=7df41dfc3#l35
http://git.musl-libc.org/cgit/musl/tree/include/errno.h?id=2d0290de#n13

Fix #273

Thanks for the PR. I agree that this is probably the better way to go. However, Windows tests are failing now. Any ideas what's up?

Hi @TooTallNate
I'm not have windows develop environment :(  (only have linux box)
But, errno macro was defined in the errno.h
https://msdn.microsoft.com/ko-kr/library/t3ayayh1.aspx
PS. Anyway, I will try to test this problem in the vbox+windows :)
PS2. BTW, this patch not enough to use module in the musl environ, it just fix about load module problem.
I tested today, npm test always raise segfault in the alpine linux.
And few hours ago, found solution, libffi need to version up to 3.2.1 and apply musl support patch.
So, I will make new pr asap, but now try to find another configure method instead of deps/libffi/config directory(also it need to test windows system, too.)

@TooTallNate i'm give up windows problem. recovered windows part of lib/errno.js..

So, can this be merged?

@Vanuan yes :) but if you use on the musl environ, also require merge #285.
both pr worked done. (I not tested on bsd environ, but it will be working)
@TooTallNate @unbornchikken can you review these pr?

Both works at my side. However, there are some other supported platforms than Linux, OSX and Windows. By my opinion, we could release those PRs in a new major, and after we can fix occasionally appearing problems of other platforms in HF releases. @TooTallNate , what do you say?

Any news on this one :) ?

@TooTallNate @unbornchikken any update these #284 #285 pr?