[Music] Play Library Album not playing selected album

Extension
http://www.raycast.com/fedevitaledev/music
Description
I've run into an issue with the Play Library Album command. I select the "Play Library Album" command and enter the search terms "tycho awake" because I want to listen to the album Awake by Tycho.

Instead, the album I'm Wide Awake, It's Morning by Bright Eyes starts playing. When I look at the Raycast DJ playlist managed by the extension, I see that it has created a playlist with the tracks from I'm Wide Awake It's Morning followed by the tracks from Awake.
Deleting the Raycast DJ playlist and repeating this steps runs into the same issue!
Steps To Reproduce
I don't know if these steps will reproduce the problem, but it's the minimal steps that I can come up with.

Create an Apple Music library containing the album I'm Wide Awake, It's Morning by Bright Eyes, and the album Awake by Tycho.
Using the Music extension for Raycast, invoke the Play Library Command.
Enter the search term "tycho awake".
There should be a single hit displayed, representing Awake by Tycho.
Hit Enter to select this album.

Current Behaviour
The Music extension creates a new playlist Raycast DJ containing the album tracks from I'm Wide Awake, It's Morning by Bright Eyes, followed by the album tracks from Awake by Tycho.
Expected Behaviour
The Music extension creates a new playlist Raycast DJ containing only the album tracks from Awake by Tycho.

How does this bot detect link to extensions? Because the OP contains a link to: https://www.raycast.com/fedevitaledev/music

This is still an issue. Do not auto-close. 👎

This is still an issue. Do not auto-close. 👎

Please do not auto-close. You can keep your backlog clean by addressing issues that users report, not by closing issues that you're not tending to for "staleness". 👎

This is still an issue. I wish that the bots were smarter than this. If there's no maintainer activity, the bot shouldn't do anything. If the last response is from a user, the bot shouldn't do anything.  Keep your backlog clean by fixing issues that user's report.

Hey @jasontedor if you search through the past issues i already answered to this kind of issues. This happens due to api limitations. There’s no way to fix this at the moment. Feel free to open a PR if you want to dive in and try to contribute 🙂


listener: fix typos

Signed-off-by: Rama<EMAIL_ADDRESS>Description: Follow-up #3968 fix typos
Risk Level: Low
Testing: Autoamted
Docs Changes: N/A
Release Notes: N/A

@mattklein123 @ggreenway Sorry. I realized these typos were not fixed. I remember correcting it but some how got overridden.


Test: Hooks Glue Exporter

Closes #6686

This PR test AWS Exporters (symlink_exporter and glue_exporter).
The test runs in AWS context only.

Test flow
Symlink Exporter:

Generate CSV Data, lua script with symlink exporter, table for _lakefs_tables and upload.
Generate Action file that will trigger the script.
Wait until the symlinks are created in S3.
Verify that the symlink files on S3 are as expected.

Glue Exporter - Relies on previous step and will create a glue table based on data in that commit:

Generate lua script with glue exporter, lakefs_action to trigger it and upload.
Wait for Table to be created in Glue.
Verify the table created correctly.
Delete the table when done.

Important test! Thank you


Audit Retention Policy not Make any Effects after applied

Hi,
My company subscribed Business Premium only, the trials of PureVeiew Premium are already finished, yesterday i set the audit retention policy to 90 days at maximum, but when this morning i check the audit log for the specified record & activities from Februari are still generated.  Any one can help me on this issue? When the audit log rentention policy applies after the config submitted?
Regards,

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

ID: e52e1877-191e-5dbe-b805-e755c736b985
Version Independent ID: 69df5ed6-a86f-06d7-1156-e1de211f8e83
Content: Manage audit log retention policies - Microsoft Purview (compliance)
Content Source: microsoft-365/compliance/audit-log-retention-policies.md
Service: o365-seccomp
GitHub Login: @v-tophillips
Microsoft Alias: v-tophillips

@yunuschrome Thank you for your feedback. Ideally, this should not happen, However Since it is a technical glitch, I'd recommend you to contact Microsoft support via the need help section on the admin center, so that a Support representative can assist you with this technical issue/bug.
Hope this helps!
Thanks
Sri

@msbemba Thank you very much for the contribution and sharing this explanation. @yunuschrome Hope this comment is helpful for you. Considering the nature of the issue, as advised, please open a service ticket in your tenant and follow with them for the resolution. We proceed to close it as here we are limited to documentation fixes and improvements only.
We will be very happy if you can share the outcome or resolution with us if you see documentation update is required. We will certainly update this documentation with that valuable information. Thanks again, for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.


Ollie: Watch themegplay.top

Ollie requests the watch of the watch_keyword themegplay\.top. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

themegplay\.top has been seen in 1 true positive, 0 false positives, and 1 NAA.

Approved by Makyen in Charcoal HQ


Dramatically speed up runtime optimization with flat_map

A big part of the runtime optimizer's housekeeping is keeping track of which symbols alias to which other symbols. For example if you have 'a=b' it will actually remember that they are the same, so then if you have c=a-b, it will understand this means c==0. Of course, it also clears it if you reassign something else to a. And if you get to the end of a basic block, it clears them all, since control could flow in from somewhere else with different assignments.  The basics of this was tracked by an alias array, length was the number of symbols, each element says which symbol this symbol is aliased to, if any, or -1 if it doesn't alias anything else.  And a common operation is to say "forget all the aliases", which is really filling the whole array with -1's.
Profiling on some enormous shaders showed that this was (after the latest fix to track_variable_lifetimes) the biggest hotspot in our runtime specialization. Especially the clearing operation. But we observe that within any particular basic block, most of the symbols won't be assigned at all.
So instead of having an array holding indices for all symbols, we just make it a map -- only have an entry if the symbol was aliased to something. This makes lookup and assignment/reassignment of an alias O(log n) instead of O(1), because it's a map search or insertion rather than a simple array lookup. But most of the time, the map only has a few entries. This speeds up runtime specialization by 4x.
Furthermore, if a sufficiently new version of Boost is available, we use boost::container::flat_map, which is a drop-in replacement for std::map that uses a sorted vector underneath. Lookup with binary search is still O(log n), but insertion and deletion becomes O(n), ick in theory, but in practice the enhanced memory locality tends to make it a net win for most usage patterns. This reduces another 30%, bring us to a net speed increase of 5x or better overall.

LGTM


update e2e chrome version

Tips

Thanks very much for contributing to Apache DolphinScheduler.
Please review https://dolphinscheduler.apache.org/en-us/community/index.html before opening a pull request.

What is the purpose of the pull request
(For example: This pull request adds checkstyle plugin.)
Brief change log
(for example:)

Add maven-checkstyle-plugin to root pom.xml

Verify this pull request
(Please pick either of the following options)
This pull request is code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added dolphinscheduler-dao tests for end-to-end.
Added CronUtilsTest to verify the change.
Manually verified the change by testing locally.

Codecov Report

Merging #2778 into dev will decrease coverage by 0.22%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##                dev    #2778      +/-   ##
============================================
- Coverage     37.33%   37.11%   -0.23%
+ Complexity     2564     2549      -15
============================================
  Files           434      434
  Lines         19983    19983
  Branches       2424     2424
============================================
- Hits           7460     7416      -44
- Misses        11859    11897      +38
- Partials        664      670       +6

Impacted Files
Coverage Δ
Complexity Δ

...duler/server/entity/DataxTaskExecutionContext.java
35.00% <0.00%> (-60.00%)
7.00% <0.00%> (-6.00%)

...he/dolphinscheduler/common/thread/ThreadUtils.java
68.25% <0.00%> (-9.53%)
13.00% <0.00%> (-2.00%)

...he/dolphinscheduler/api/service/LoggerService.java
82.60% <0.00%> (-8.70%)
9.00% <0.00%> (-1.00%)

...ver/master/consumer/TaskPriorityQueueConsumer.java
54.41% <0.00%> (-5.15%)
16.00% <0.00%> (ø%)

...ler/server/master/runner/MasterTaskExecThread.java
8.98% <0.00%> (-4.50%)
2.00% <0.00%> (-1.00%)

...pache/dolphinscheduler/alert/utils/ExcelUtils.java
78.94% <0.00%> (-3.51%)
8.00% <0.00%> (-1.00%)

...cheduler/server/registry/ZookeeperNodeManager.java
74.72% <0.00%> (-3.30%)
6.00% <0.00%> (-1.00%)

...e/dolphinscheduler/remote/NettyRemotingClient.java
51.07% <0.00%> (-2.88%)
9.00% <0.00%> (-2.00%)

...master/dispatch/executor/NettyExecutorManager.java
83.92% <0.00%> (-1.79%)
10.00% <0.00%> (ø%)

...pache/dolphinscheduler/common/utils/FileUtils.java
28.03% <0.00%> (-0.94%)
9.00% <0.00%> (ø%)

... and 1 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1a78c11...9f2fbc7. Read the comment docs.


Incompatibility with Lunar Client as of Lunar Game Version V2.15.3-2419 in MC 1.20.4

As of Lunar Client Game version V2.15.3-2419 in MC 1.20.4 this mod doesn't work and is crashing the game! It worked before perfectly fine!
https://www.lunarclient.com/changelog (For some reason this update doesn't appear on this site yet but maybe later)

Yes, a fix is being worked on

Could you provide logs?

latest.log
203af5cd-f16c-4bd1-8fef-b48dd9d0bccc-master.log


Add scss-lint configuration

Propose a scss-lint configuration file.
Until now the most stable scss linter seems to be the scss-lint.
Unfortunately this plugin is strongly dependent to ruby, so it would be tricky to implement this to the existing gulp workflow.
On the other hand you can have a global scss-lint configuration file and use it through your IDE(e.g. PHPStorm).

a default configuration file added in issue #8

This project: sass-lint, https://github.com/sasstools/sass-lint
is free of the ruby dependency. What do you think of it?

Actually just saw this issue https://github.com/sasstools/sass-lint/issues/6
looks like they are not ready for the prime time quite yet. They still do not have all the features of ruby scss-lint

a shame.. would be nice to include in the project

Exactly,
But we could give it a try, just to be ready for the next releases of the sass-lint

yep I will create a branch where sass-lint is configured in the project and when sass-lint is launched we can merge.

Maybe consider https://github.com/stylelint/stylelint
It supports scss I think

Maybe consider https://github.com/stylelint/stylelint

WordPress CSS Coding Standards shared config https://github.com/ntwb/stylelint-config-wordpress

It supports scss I think

It does 😄

Thanks for the suggestion @ntwb will check it out :)


Extra brackets added in (fn [] ...)

I've run into case where zprint is adding extra brackets resulting in incorrect code:
It seems to occur when the body of a fn is moved to a new line:
input:
(zprint-str '(fn [contact] (= (contact :company) "Some Long String Here")) 50)

output:
(fn [contact]
  ((= (contact :company)                  ; <--- note extra set of brackets around the fn body
      "Some Long String Here")))

When the contents of the fn can fit on one line, it's ok:
input:
(zprint-str '(fn [contact] (= (contact :company) "Short")) 50)

output:
(fn [contact] (= (contact :company) "Short"))

Thank you finding this.  The underlying bug manifests in several ways, and I ran into a different symptom of this same bug a week or so ago, and spent a good bit of time fixing it.  I haven't yet released the fix because I was trying to react to the clojure.spec -> clojure.spec.alpha change (which for me is still a work very much in progress).  I was hoping to release all of this together.
I can reproduce your problem with no difficulty in zprint 0.3.2, and 0.3.3 fixes it:
; In zprint 0.3.3:
(czprint '(fn [contact] (= (contact :company) "Some Long String Here")) 50)
(fn [contact]
  (= (contact :company) "Some Long String Here"))

As it happens, this bug doesn't affect lein-zprint, because it only shows up when using zprint on lists of code that are Clojure structures, not when parsing strings of Clojure code.  If instead of quoting the (fn ..), you put it into a string (remembering to escape the quotes in the embedded string with ), and then give it an options map of {:parse-string? true}, it works fine:
; In zprint 0.3.2:
; Fails as Clojure list
(czprint '(fn [contact] (= (contact :company) "Some Long String Here")) 50)
(fn [contact]
  ((= (contact :company)
      "Some Long String Here")))
; Works when zprint parses the string as code
(czprint "(fn [contact] (= (contact :company) \"Some Long String Here\"))" 50 {:parse-string? true})
(fn [contact]
  (= (contact :company) "Some Long String Here"))

Not that you probably care, but the same zprint engine handles code that has been parsed from strings or Clojure structures .  There are manipulation functions that operate on a zipper or Clojure data structure with the same outcome -- except in this case where the manipulation functions were slightly off in the Clojure data structure case.
Anyway, I'll try to release a fix soon (i.e., before I solve the clojure.spec.alpha situation).
Thanks again for logging the issue!  If I hadn't been modifying something related I might have never run into this myself, as I usually don't use zprint on code that is a Clojure data structure.

Thanks for the reply. No rush on my end.
As a partial workaround I had :fn-map {"fn" :binding} (which probably changes the behaviour in subtle ways, but works for me for now).
I overlooked {:parse-string? true}. Good to know.

That's a nice workaround.  I should have a new release out in a day or so.
I clearly need some more tests to see if my code formatting works correctly when formatting Clojure code from an s-expression instead of a string.  I have several fidelity tests which check to see if I'm breaking code formatted from text (and I also use it on the zprint source files all the time).  But I haven't put the effort into equivalent tests for code in s-expressions.  I see that I need to do so.
I'm curious about your use-case, where you are formatting code from s-expressions, if you care to share it.

At the moment, I'm using zprint to format examples for a clojure reference book. I have all the copy and code in an edn file, and prefer to use quoted s-expressions (over strings) because I still get syntax highlighting in my text editor.
Perhaps instead of keeping a separate code-path in z-print for s-expressions, you could just pr-str the s-expressions and then pass them onto the string parser?

Thanks a lot for telling me how you use this, it helps me to know the various use cases.  I'll look forward to seeing your book!
I don't actually have separate code paths for s-expressions and strings.  There is just one pretty printing engine using one set of function names to move around the thing it is pretty printing.  There are two sets of "move around" functions, one set to move around the zipper that results from the parsing of a string, and one set to move around regular s-expressions.
This Issue #25 is fixed in zprint 0.3.3.


Loading spinner (Gene View) disappears too soon

User noted feedback: This is a problem with large network JSON's. We need to keep the spinner going until the network is ready to be shown in Network View. Perhaps there should be a tag at the end of the JSON that can be ready to stop the spinner spinning @AjitPS  ?
I would however like to move towards asynchronous JSON loading - one web worker requests the meta data for the JSON, the other loads the rest of the JSON in the background. Perhaps we add the tag to the end of the metadata (a STOP signal) once the network has loaded.

Issue is 1 spinner disappears when search finishes and 2nd spinner starts (briefly) when loading large json. As these are separate server and client side responses.
Need an asynchronous wrapper over the entire loading process that regulates a single spinner.
2nd spinner is packaged inside KnetMaps(in its standalone npm) so need to find a way to then hide it when in KnetMiner.


Time::HiRes::alarm doesn't work at all

Time::HiRes::alarm doesn't work at all.  It tries to call time.alarm, which is not defined.  Also import signal is missing from Time/HiRes.py, and some of the d_ functions aren't returning 1 like they are supposed to.

Fixed in v1.030


AWS SDK V3

Hey there,
Since I use SDK V3 and the client-s3, I always receive :
getaddrinfo ENOTFOUND local-my-name-bucket.localhost

Do you have an example which work ? or is not compatible at all ?
I tried different configuration, but seems not working :
if(process.env.IS_OFFLINE) {
  awsParams = {
    credentials: {
      accessKeyId: 'S3RVER',
      secretAccessKey: 'S3RVER',
    },
    endpoint: 'http://localhost:4569',
  }
}
const s3 = new S3(awsParams);

In my environment, I added forcePathStyle and it succeeded 😄
if(process.env.IS_OFFLINE) {
  awsParams = {
    credentials: {
      accessKeyId: 'S3RVER',
      secretAccessKey: 'S3RVER',
    },
+   forcePathStyle: true,
    endpoint: 'http://localhost:4569',
  }
}
const s3 = new S3(awsParams);

Hi there !
Thanks for your comments. I  added an example of using AWS SDK V3.


"The skill end-point is not accepting valid signed requests."

My skill stopped working today. In the Alexa functional testing interface, I am getting this error message, and directed to https://developer.amazon.com/docs/custom-skills/host-a-custom-skill-as-a-web-service.html#cert-verify-signature-certificate-url
Anyone else getting this issue?

False alarm, I mixed up my code, sry.


Split code and save progress?

I have a 5Mb sized file that needs to be processed, I've tried running it directly in node and it takes up to 21G of memory space in some transform processing.
However, in some of the processing, it may fail, so maybe it would be possible to save the data that was processed successfully? And use it again next time?

Did you clone the project and manually run it directly in Node.js?
Can you share the source file here or privately via the mail?
21GB is quite scary 😢

Did you clone the project and manually run it directly in Node.js?
Can you share the source file here or privately via the mail? 21GB is quite scary 😢

Yes, I copied the source code to run it.
What is your email address, you can base64 and reply to me.

@StringKe I mean like did you run the unpacker first? or just the unminify?
cGlvbnh6aEBjc2llLmlv

I can confirm that this file will OOM during the unpacking process.

The following issue is also probably tangentially relevant to this, as parsing a large file may end up in files getting silently lost along the way:

https://github.com/pionxzh/wakaru/issues/33

Yes, they are relevant.

I've tried running it directly in node and it takes up to 21G of memory space in some transform processing.

I can confirm that this file will OOM during the unpacking process.

My suggestion here would be a rather major change, so it's not worth looking into too deeply unless it turns out there is no good/efficient way to manage this with the current AST parsers/etc; but one thing I stumbled across/was thinking about the other day was that the swc / tree-sitter / etc Rust/etc parsers can apparently be used from JS apps; and how that might allow us to run the unminify process much faster and/or in a potentially more memory efficient way:
These links/resources probably aren't exhaustive; but figured I would share them as a starting point in case this was a path that was worth looking into at some stage:
tree-sitter / web-tree-sitter

https://www.npmjs.com/package/web-tree-sitter

https://github.com/tree-sitter/tree-sitter/tree/master/lib/binding_web
WebAssembly bindings to the Tree-sitter parsing library
https://crates.io/crates/tree-sitter-javascript

https://github.com/tree-sitter/tree-sitter-javascript

JavaScript and JSX grammar for tree-sitter. For TypeScript, see tree-sitter-typescript.

swc / @swc/wasm-web / swc_ecma_parser

https://swc.rs/

https://swc.rs/docs/usage/core#parse
https://swc.rs/docs/usage/wasm

Some examples of using @swc/wasm-web to parse code to an AST in AST Explorer(s)

https://github.com/fkling/astexplorer/blob/master/website/src/parsers/js/swc.js#L3
https://github.com/sxzz/ast-explorer/blob/main/composables/language/javascript.ts#L74-L109

https://github.com/swc-project/swc/discussions/3713

Running a plugin with @swc/wasm-web

https://rustdoc.swc.rs/swc/index.html

https://rustdoc.swc.rs/swc_ecma_parser/
https://rustdoc.swc.rs/swc_ecma_transforms_base/fn.resolver.html
https://rustdoc.swc.rs/swc_ecma_minifier/eval/struct.Evaluator.html

https://www.christopherbiscardi.com/how-to-print-a-javascript-ast-using-swc-and-rust

How to print a JavaScript AST using SWC and Rust

https://blog.logrocket.com/writing-webpack-plugins-rust-using-swc/

Writing webpack plugins in Rust using SWC for faster builds

https://github.com/swc-project/swc/discussions/3254

Q: How to manipulate nodes+parent_nodes in AST & generate the tree back to JS code?

https://play.swc.rs/

The output can be set to AST

ast-grep

https://ast-grep.github.io/reference/api.html

ast-grep currently has an experimental API for Node.js

Etc

https://github.com/rustwasm/wasm-pack

This tool seeks to be a one-stop shop for building and working with rust- generated WebAssembly that you would like to interop with JavaScript, in the browser or with Node.js. wasm-pack helps you build rust-generated WebAssembly packages that you could publish to the npm registry, or otherwise use alongside any javascript packages in workflows that you already use

https://rustwasm.github.io/wasm-pack/book/

I decided to suspend this request for a while. This feature will be implemented on the new web IDE instead of the current playground. In the meantime, you can use CLI to run on local machine.

@pionxzh Oo, new web IDE sounds interesting. Are you able to tell us more about your plan/roadmap with it, and what you're hoping it will allow/enable?

I tried the sample with the new CLI.
It took ~2GB and 60 seconds to pass for unpacker (and failed to unpack it into multiple files😞; I will check further!).
Generated 1 modules from main.ba3b216f.js to out (61,265.4ms)

For unminify, it took 3.4 hours... to finish the whole process. Memory usage is from 100MB ~ 1GB ~ 2GB depending on the rule.
I will improve the CLI to write files more frequently during the unminify process, and add a --perf flag for recording the time and memory usage.

With cli you may need to prompt the user to pass node V8's configuration --max-old-space-size to extend the amount of memory available to the node when it runs out of memory.

Are you able to tell us more about your plan/roadmap with it, and what you're hoping it will allow/enable?

@0xdevalias I have created a package /packages/ide which provides a vscode-like experience. I want to use it to replace the existing playground. I am still trying to figure out the idea haha.. Module mapping won't be exposed, instead, you can directly edit the filename in the file explore. And two tabs will be provided for the compare view, which you can drag and organize in any form you like. The editor would be Monaco, which offers a better editing experience. Features like download, better unminify handling, error reporting...
But I might drop the idea and simply put Monaco into the existing playground.

@StringKe We can add some hints in the CLI usage description. But I didn't hit on OOM during the whole process with your sample.

I have created a package /packages/ide which provides a vscode-like experience.

@pionxzh Oo.. nice! I created a new issue for this, and will add my /2c over there so as not to clutter this thread too much:

https://github.com/pionxzh/wakaru/issues/45

For unminify, it took 3.4 hours... to finish the whole process. Memory usage is from 100MB ~ 1GB ~ 2GB depending on the rule.

I will improve the CLI to write files more frequently during the unminify process, and add a --perf flag for recording the time and memory usage.

@pionxzh With the --perf flag, it would be interesting to see how much time is spent in each different section of the CLI/etc; not sure how hard it would be to record stats/data that could be loaded into something like the Chrome DevTools debugger to be able to see a flamegraph of where the time was spent; as that could potentially help in knowing where to optimise first.

I think you don't need additional work on the CLI to export the flamegraph? Should be same as how people measure normal nodejs project.

Should be same as how people measure normal nodejs project

@pionxzh True true.. I think I got confused when you were talking about adding a --perf command; as I believe the flamegraph/etc profiling stuff tends to include timing/memory/etc data already doesn't it?
I asked ChatGPT, and it gave some good tool suggestions/how to, included in the expandable below:

Some notes from ChatGPT on profiling
tl;dr:

https://nodejs.org/en/docs/guides/diagnostics-flamegraph
https://github.com/davidmarkclements/0x

single-command flamegraph profiling 🔥
Discover the bottlenecks and hot paths in your code, with flamegraphs

https://github.com/clinicjs/node-clinic

Clinic.js diagnoses your Node.js performance issues

https://clinicjs.org/

Tools to help diagnose and pinpoint Node.js performance issues

https://clinicjs.org/doctor/

Clinic.js Doctor: Diagnose performance issues in your Node.js applications

https://clinicjs.org/bubbleprof/

Clinic.js Bubbleprof: Bubbleprof is a new, completely unique, approach to profiling your Node.js code

https://clinicjs.org/flame/

Clinic.js Flame: Uncovers the bottlenecks and hot paths in your code with flamegraphs

https://clinicjs.org/heapprofiler/

Clinic.js HeapProfiler: Uncovers memory allocations by functions with Flamegraphs.

To get granular timing and performance data for a JavaScript library and a Node.js CLI application, you can use several tools and methods. Here's a step-by-step guide:
1. Node.js Built-in Profiler
Node.js has a built-in profiler that can be used to capture CPU profiles. You can run your Node.js application with the --prof flag. For example:
node --prof your-app.js

This will generate a .log file with profiling data.
2. Convert Profiling Data for Chrome DevTools
To analyze the profiling data in Chrome DevTools, you need to convert the .log file to a format that Chrome can understand. You can use the node --prof-process command for this:
node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed-profile.txt

3. Visualizing with Chrome DevTools
Open Chrome DevTools in your Chrome browser. Go to the "Memory" tab, and load the processed profile (processed-profile.txt). This will display a flame graph and other useful visualizations.
4. Using Third-party Tools
a) 0x
0x is a powerful tool for generating flame graphs for Node.js applications. Install it globally using npm:
npm install -g 0x

Then, run your Node.js application with 0x:
0x your-app.js

0x will automatically generate an HTML file with an interactive flame graph.
b) clinic.js
Clinic.js is another comprehensive profiling toolset. It can be installed via npm:
npm install -g clinic

To profile your application, use:
clinic doctor -- node your-app.js

or
clinic flame -- node your-app.js

This will generate detailed reports and flame graphs.
5. Analyzing the Data
Once you have the flame graphs and performance reports:

Look for "hot" functions that consume a lot of CPU time.
Identify patterns of high memory usage.
Examine async operations and their impact on performance.

6. Optimizing Based on Data

Refactor or optimize hot functions.
Reduce unnecessary computations or memory allocations.
Optimize async flows and database queries if they are the bottlenecks.

Additional Tips

Ensure that your Node.js version is up-to-date for the best profiling support.
Sometimes, running these tools in a production-like environment can give more accurate results.

Using these steps, you can capture detailed performance data for your JavaScript library and Node.js CLI application, analyze it using tools like Chrome DevTools, and identify areas for optimization.

I will try ast-grep for simple tasks. I have setup a few benchmark stuff that can help us make the decision.

The benchmark shows that ast-grep can be 3-4 times faster and require a smaller memory footprint. However, at present, we only have napi binding that can only run on the CLI. A WASM build is required for the browser environment (playground). I'm not too sure about the future direction of this.
We have several options to consider:

Keep migrating part of the rules to ast-grep, and only replace them on CLI.
Pursue the development of a WASM build for ast-grep. This could involve either initiating our own build or waiting for an official build to become available. Once achieved, we could rewrite part of the core logic like import scanning and simple transformation to ast-grep.
Forget about it and focus on optimizing the current implementation.

It's important to note that while ast-grep fulfills many of our requirements, we do not plan to rewrite complex rules using it. Complex rules often involve scope awareness, advanced structure matching, and AST node building. Therefore, it's challenging to determine whether the overall performance gains will justify the effort required for integration.

@pionxzh Was there a reason you chose ast-grep specifically out of the suggestions I made above? What about tree-sitter / web-tree-sitter and similar? They would be usable across both CLI and web; and should also theoretically be faster and lower memory too?

Sorry, I didn't check the whole document.
This is the test result on Node.js (wasm on node.js is slower than the native binding but ¯_(ツ)_/¯ )

Perf with void 0 to undefined transformation. Tree-sitter's performance is good on large samples.

10     LOC 1000 | 1000
100   LOC 135   | 467
1000 LOC  7      | 81
5000 LOC  1?    | 16

Its API is not so convenient but acceptable. I feel it's powerful, but there is a learning curve. Might need to take some time to really read through the document.

This 'magic string'?

Yes. The first link you provided.

Sorry, I didn't check the whole document.

@pionxzh No worries :)

This is the test result on Node.js (wasm on node.js is slower than the native binding but ¯_(ツ)_/¯ )

@pionxzh Is that graph showing tree-sitter native on the left and wasm on the right? Or is that jscodeshift/babel on the left, and tree-sitter on the right?
Wasm is known to have some overheads that makes it slower than native bindings, so that makes sense.

Oh, you can check the benchmark at /benches. Run with npx tsx ./benches/un-undefined.ts. I have a branch for ast-grep, but I forgot to push it haha. And there is another branch for tree-sitter, still on my PC. Will push them when I get home.

Oh, you can check the benchmark at /benches.

@pionxzh Oh true! I totally missed that somehow (committed https://github.com/pionxzh/wakaru/commit/3cd85f62fa08f5a87d3c334e43694da3e99b912b). Thanks :)

I have a branch for ast-grep, but I forgot to push it haha. And there is another branch for tree-sitter, still on my PC. Will push them when I get home.

@pionxzh Haha. Sounds good, thanks! :)

There was another parser project I stumbled across while looking ast-grep's own benchmarks (Ref), though haven't looked into it much yet. From a quick skim it sounds interesting as well though; and claims that it's parser is 2x faster than swc:

https://github.com/oxc-project/oxc

Oxc
The Oxidation Compiler is creating a suite of high-performance tools for JavaScript and TypeScript.
Oxc is building a parser, linter, formatter, transpiler, minifier, resolver ... all written in Rust.

https://github.com/oxc-project/oxc#-ast-and-parser

AST and Parser
Oxc maintains its own AST and parser, which is by far the fastest and most conformant JavaScript and TypeScript (including JSX and TSX) parser written in Rust.

While many existing JavaScript tools rely on estree as their AST specification, a notable drawback is its abundance of ambiguous nodes. This ambiguity often leads to confusion during development with estree.
The Oxc AST differs slightly from the estree AST by removing ambiguous nodes and introducing distinct types. For example, instead of using a generic estree Identifier, the Oxc AST provides specific types such as BindingIdentifier, IdentifierReference, and IdentifierName. This clear distinction greatly enhances the development experience by aligning more closely with the ECMAScript specification.

https://oxc-project.github.io/

https://oxc-project.github.io/oxc/playground/
https://oxc-project.github.io/docs/guide/usage/parser.html

Parser

2x faster then SWC parser
By far the fastest and most conformant JavaScript and TypeScript (including JSX and TSX) parser written in Rust

https://github.com/oxc-project/bench-javascript-parser-written-in-rust

Benchmark for Oxc, Swc and Rome parser

The umbrella crate oxc exports all public crates from this repository

The AST and parser crates oxc_ast and oxc_parser are production ready

https://docs.rs/oxc_parser/latest/oxc_parser/#conformance

The parser parses all of Test262 and most of Babel and TypeScript parser conformance tests.

https://github.com/oxc-project/oxc/tree/main/tasks/coverage

https://oxc-project.github.io/javascript-parser-in-rust/

Write a JavaScript Parser in Rust
Rust, JavaScript, and parsers are all hard to learn, let's combine these three and challenge ourselves to write a JavaScript parser in Rust.
This will be the guide for you if you are interested in learning Rust, parsers, or would like to contribute to oxc, swc or Biome in the near future.
The guide will cover all the basic topics of writing a JavaScript parser in rust. The tutorials will explain some topics in more depth.

Oh I know this project, will check em. I think now the requirement would be

Having a wasm binding
Provides ast query functionality (can go to parent and child node would be a plus)
Query results provide range information

There is a wasm binding, but it's not so ready-to-use. It's currently built for their playground. Not sure, will check more on these options.

I think now the requirement would be

@pionxzh nods, these make sense and sound reasonable.

There is a wasm binding, but it's not so ready-to-use. It's currently built for their playground.

@pionxzh Yeah, sounds like it's not very maintained currently:

https://github.com/oxc-project/oxc/issues/301

The playground's package.json loads it as such:

https://github.com/oxc-project/oxc/blob/main/website/package.json#L32C5-L32C19

"@oxc/wasm-web": "link:../npm/wasm-web",

There doesn't seem to be a npm/wasm-web in the main repo:

https://github.com/oxc-project/oxc/tree/main/npm

But the website/package.json has scripts to build it:

https://github.com/oxc-project/oxc/blob/main/website/package.json#L8-L10

"wasm-dev": "wasm-pack build --out-dir ../../npm/wasm-web --target web --dev --scope oxc ../crates/oxc_wasm",
"wasm-build": "wasm-pack build --out-dir ../../npm/wasm-web --target web --release --scope oxc ../crates/oxc_wasm"

https://github.com/oxc-project/oxc/tree/main/crates/oxc_wasm

Wasm package for oxc compiler

Some other historical context:

https://github.com/oxc-project/oxc/issues/73
https://github.com/oxc-project/oxc/pull/130

ast grep also uses tree sitter underlying, providing a robust matcher and replacer.

Since I got curious about the specifics of ast-grep's matcher/replacer, a few resources related to the higher level docs for it:

https://ast-grep.github.io/guide/pattern-syntax.html

In this guide we will walk through ast-grep's pattern syntax.

Pattern is a fast and easy way to match code. But it is not as powerful as rule which can match code with more precise selector or more context.

https://ast-grep.github.io/guide/rule-config.html#rule-file
https://ast-grep.github.io/reference/rule.html

Atomic rules are the most basic rules to match AST nodes. Relational rules filter matched target according to their position relative to other nodes. Composite rules use logic operation all/any/not to compose the above rules to larger rules.

https://ast-grep.github.io/guide/rewrite-code.html

One of the powers of ast-grep is that it can not only find code patterns, but also transform them into new code.

https://ast-grep.github.io/catalog/

And digging into the code (as it might be useful to understand aspects of it if going down the ast-grep and/or tree-sitter path):

https://github.com/ast-grep/ast-grep/tree/main/crates/core/src

https://github.com/ast-grep/ast-grep/blob/main/crates/core/src/lib.rs

This module contains the core library for ast-grep.
It provides APIs for parsing, traversing, searching and replacing tree-sitter nodes.
Usually you will only need ast-grep CLI instead of this crate.
But if you want to use ast-grep as a library, this is the right place.

https://github.com/ast-grep/ast-grep/blob/main/crates/core/src/traversal.rs

Traverse Node AST
ast-grep supports common tree traversal algorithms, including

Pre order traversal
Post order traversal
Level order traversal

https://github.com/ast-grep/ast-grep/blob/main/crates/core/src/node.rs

Seems to be some higher level API for interacting/matching/etc on nodes

https://github.com/ast-grep/ast-grep/blob/main/crates/core/src/ops.rs

Seems to include some higher level operations like and/not/etc

https://github.com/ast-grep/ast-grep/blob/main/crates/core/src/meta_var.rs

Related to 'meta var' matching/etc

https://github.com/ast-grep/ast-grep/blob/main/crates/core/src/matcher.rs

This module defines the core Matcher trait in ast-grep.
Matcher has three notable implementations in this module:

Pattern: matches against a tree-sitter node based on its tree structure.
KindMatcher: matches a node based on its kind
RegexMatcher: matches a node based on its textual content using regex.

https://github.com/ast-grep/ast-grep/tree/main/crates/core/src/matcher

Seems to be even more lower-level/specific elements related to the matcher, including: kind, node_match, pattern, text

https://github.com/ast-grep/ast-grep/blob/main/crates/core/src/replacer.rs
https://github.com/ast-grep/ast-grep/tree/main/crates/core/src/replacer
etc

And here are some ideas I've had/been exploring around the potential for how to 'ease the overhead' of crossing back and forth between the JS/Rust side of things; and to avoid needing to re-write the entire project in Rust to benefit from rust-based parsers.

Definitely a possibility, but again the whole project would have to be rewritten in rust

Yeah.. that would be less than ideal.
I don't know how possible it is, or if there are existing libraries/etc that would make it easier, but my original thought in this area was if it was possible to basically 'describe the transformation to be made' on the JS side of things, and then pass that through to the rust side for it to do the 'heavy lifting'.
If that were possible, then it should remove the need to convert the whole project to rust, and also would remove the performance penalty of needing to pass the whole AST back and forth across the rust/JS boundary.
The 2 ways I was initially pondering that this might be possible were:

a rust library that exposes an 'AST transformation DSL', such that the JS side could use that DSL to describe the transformations, then pass those to the rust side of things to actually process/run
a rust library that can run/interpret some basic JS code within rust itself, and use that to apply the transformations (that are still written in JS)

There was also one more idea I was pondering, though not sure if it would be impractical due to needing to cross back and forth across the rust/JS boundary (this idea is less thought through than the others above; and realistically could probably work with/alongside them, particularly the DSL idea):

somehow do the main 'AST walking'/modification on the rust side of things, but be able to specify when it should pass a smaller subset of the AST back to the JS side for more specific processing

Originally posted by @0xdevalias in https://github.com/j4k0xb/webcrack/issues/24#issuecomment-1837881358

Thanks for the insight

@pionxzh No worries :)

I will spend some time looking into it.

@pionxzh Sounds good. Would be interested to hear what you think of it once you do.

Actually that's how ast-grep works.

@pionxzh Oh true. I was thinking it probably did, particularly after skimming the source the other day (Ref), but I wasn't 100% sure still.

Here is a quote from Benchmark TypeScript Parsers: Demystify Rust Tooling Performance:
tree-sitter and ast-grep avoid serde overhead by returning a tree object rather than a full AST structure. Accessing tree nodes requires invoking Rust methods from JavaScript, which distributes the cost over the reading process.

@pionxzh That's super interesting and neat to know. For future reference, here's a link to the non-medium-paywalled version of that article (Ref) It was a really interesting read in general!
The results of the benchmarks for synchronous performance were pretty interesting, I definitely didn't expect swc to perform so poorly in general, nor for babel to perform unexpectedly so much better on the medium-sized file compared to most other things (I wonder what made it perform so well there?). It was also interesting to see that ast-grep consistently beat tree-sitter on it's own, despite it using tree-sitter as it's parser.

It was also really interesting in the async parsing to see just how much ast-grep seems to dominate everything; again seeming to perform way better than the tree-sitter parser it's built on top of:

These notes towards the end were also interesting/worth paying attention to:

Native Parser Performance Tricks
tree-sitter & ast-grep' Edge
These parsers manage to bypass serde costs post-parsing by returning a Rust object wrapper to Node.js. This strategy, while efficient, can lead to slower AST access in JavaScript as the cost is amortized over the reading phase.
ast-grep's async advantage:
ast-grep's performance in concurrent parsing scenarios is largely due to its utilization of multiple libuv threads. By default, the libuv thread pool size is set to four, but there's potential to enhance performance further by expanding the thread pool size, thus fully leveraging the available CPU cores.

Cool to see this note at the very end aligns with one of the thoughts I had too!

Shifting Workloads to Rust: The creation of a domain-specific language (DSL) tailored for AST node querying could shift a greater portion of computational work to the Rust side, enhancing overall efficiency.

we are kind of off the topic in this long thread lol. Let me update the title.

@pionxzh Haha yeah, I was thinking that recently as well, it certainly seems to have evolved into more of a general 'performance optimisation' exploration.

Was skimming through the ast-grep repo/issues, and the following looked like potentially interesting ones to watch for future improvements:

Roadmap: https://github.com/orgs/ast-grep/projects/2
https://github.com/ast-grep/ast-grep/issues/656
https://github.com/ast-grep/ast-grep/issues/140
https://github.com/ast-grep/ast-grep/issues/524
https://github.com/ast-grep/ast-grep/issues/414
https://github.com/ast-grep/ast-grep/issues/449
https://github.com/ast-grep/ast-grep/issues/433

https://comby.dev/blog/2022/08/31/comby-with-types

To that end, I really just want comby to use an external service that answers: What is the type of the value at this location in the file?
Type-information-as-a-service is ideal because then I can keep the convenience of matching syntax easily, and outsource accessing language-specific semantic properties as needed. The concept is to expose a property on any matched variable that corresponds to type information (if available).

I know of only two high-level solutions resembling a service that conveniently provides type information today, and which aim to eventually support all languages. The first is language server implementations of LSP (Language Server Protocol). Language servers expose all kinds of information, and typically include type information in hover tooltips found in editors. With LSP there is no authoritative, centralized language server that you can just query. Instead, language servers are configured for specific projects and either run locally on your machine or get managed by an organization.
The second is a central, public-facing service maintained on Sourcegraph.com that exposes hover information similar to the LSP format (disclaimer: I work at Sourcegraph, but my day job is unrelated to this service). The key difference is that Sourcegraph automatically processes popular repositories on GitHub (currently about 45K) with support for TypeScript, Go, Java, Scala, and Kotlin. It’s also possible to process your own projects (locally, in CI, or GH actions) and upload the data. Once that happens, you can efficently browse or query type information for variables on hover.
This is exactly the kind of information I need to tell whether a matched variable is a slice, map, channel, or pointer. For supported projects, you just fire a GQL request to get the hover content.

Which projects and languages does this work for?
If a repository is processed with precise type-on-hover on Sourcegraph.com, accessing that information via comby should just work. This means you can use tools to process and upload this information with your own TypeScript, Java, Scala, Kotlin, or Go projects to Sourcegraph and comby will be able to access hover information for them. These tools encode type information and other data using SCIP, which is related to the Language Server Index Format (LSIF/LSP) but with efficiency in mind.

@StringKe

Data is now stored in IndexedDB, no more size limitation. #106
File size checker and the --max-old-space-size hint has been implemented.


feat: add database-driven organizer page

Resolves #64
Organizers will need to be manually added to the database via /admin/. By default, these changes will only show active organizers and will link to their Meetup profile and LinkedIn (optional).
There are commented lines in views.py, __init__.py, and organizers.html that could display past organizers below active organizers. This would be a good way to honor those that have helped in the past. This would require more manual work adding extra people in /admin/ and changing their active status to False.

Hmm, not sure why it failed the check.

Looks like we're working simultaneously. I created a branch (branched from this) that added a few things that were missing:

There was no database migration
I fixed up the tests/linting
I removed the inactive organizers code

Looks like we're working simultaneously. I created a branch (branched from this) that added a few things that were missing:

There was no database migration
I fixed up the tests/linting
I removed the inactive organizers code

I'll hold off on any other changes, sorry about that!

I'll hold off on any other changes, sorry about that!

Go ahead but you might start from or at least look at the other branch (we can merge it into this PR too). One thing to think about is should there be an image for organizers? Should it just be the image from meetup? How do we get that image?


Return Result from ArenaIndex::new

with the addition of Artichoke::with_ffi_boundary, this API is now fallible.
propagate an error instead of unwrapping.
use a custom error type that implements RubyException.
https://github.com/artichoke/artichoke/blob/e4eb05edb4a08c4463f4a206cb8fb3895ceda6b0/artichoke-backend/src/gc/arena.rs#L35-L39

introduced in GH-661

For a look at how to implement a custom RubyException, see InterpreterAllocError in artichoke-backend/src/interpreter.rs.

I would love to try with this issue

So, I modified the PR per request. Now ArenaIndex::new returns a Result<ArenaIndex, IndexError> instead of the InterpreterError.


Lockmaster should pass each river parser the timestamp of the last stored data point

This will help parsers be more efficient, so they do not submit data that has already been submitted.

CC @passiweinberger

Might want to change the parser params from
function(config, body, url, temporalDataCallback, metaDataCallback) {
};

to
function(body, options, temporalDataCallback, metaDataCallback) {
    options.config;
    options.url;
    options.lastTimestamp;
};

:+1:

I'm having second thoughts about this. @jaredweiss I would like your opinion.
First of all, the whole reason I wanted to pass a timestamp to the parser was so the parser could make an intelligent decision about whether a data point has already been saved or not, thus increasing the efficiency of River View if the parser used this info. But...

The parser may ignore it.
The performance cost of getting all the necessary timestamps may be too high for some rivers
If the parser is written properly and polls at the correct interval, it may be more efficient for it to just overwrite existing data than for RV to retrieve all the timestamps.

If this were as simple as providing one timestamp to the parser, I would totally do it, but the lockmaster needs to get all the stream ids first, then query each redis sorted set for each stream id for the last updated time (this could be hundreds of redis calls), then provide an associative array of streamed==>timestamp values to the parser. At that point, the parser may ignore the timestamps entirely, making all that effort for naught.

@rhyolight
Just spent a bit of time thinking this problem out. I think you're right in bringing up the question of where to get the most recent timestamp from. It seems that with the way river-view is currently set up, we'd need to be making a redis call for each of these last timestamps and that could easily occupy the same resources we'd be trying to offload.
It seems like the way something like this would be most beneficial is if we were sending large queries to Redis every time we wrote a new record. If the queries we'd be sending to request the timestamp are roughly the same size as the ones we'd be sending to write new rows, I don't think we'd be saving much effort.
A possible alternative to future-proof this project might be to set up a set in redis specifically for associating timestamps with rivers, and whenever new data is pushed to a river, the timestamp associated with the river's key would be overwritten. This could be useful if the parsers get more complicated or the rivers start writing a lot more data, but otherwise it might make more sense to just leave the current implementation as is.

A possible alternative to future-proof this project might be to set up a set in redis specifically for associating timestamps with rivers, and whenever new data is pushed to a river, the timestamp associated with the river's key would be overwritten.

Something like this could work well. I'll think some more about it.

Whatever the answer it, it's not captured in this issue.


Create controls for OpenCV detection parameters in Camera.html

I spent time exploring the different options for fine-tuning OpenCV detection to tailor program detection to specific camera devices and lighting conditions.
I was able to get much more reliable detection at farther distances while tweaking these settings in simpleBloblDetector.js. I noted that many of the max parameters are using arbitrarily high numbers, when they do not go above a theoretical maximum of 1.
const defaultParams = {
  thresholdStep: 10,
  minThreshold: 50,
  maxThreshold: 220,
  minRepeatability: 2,
  minDistBetweenBlobs: 10,

  filterByColor: true,
  blobColor: 0,

  filterByArea: true,
  minArea: 25,
  maxArea: 5000,

  filterByCircularity: false,
  minCircularity: 0.8,
  maxCircularity: 1000000,

  filterByInertia: true,

  //minInertiaRatio: 0.6,
  minInertiaRatio: 0.1,
  maxInertiaRatio: 1000000,

  filterByConvexity: true,

  //minConvexity: 0.8,
  minConvexity: 0.95,
  maxConvexity: 1000000,

  faster: false,
  scaleFactor: 4
};

Interestingly, these parameters are used again in detectPrograms.js, which turns off inertia filtering and turns on Circularity filtering.
  const videoROI = knobPointsToROI( config.knobPoints, videoMat );
  const clippedVideoMat = videoMat.roi( videoROI );
  const allPoints = simpleBlobDetector( clippedVideoMat, {
    filterByCircularity: true,
    minCircularity: 0.9,
    minArea: 25,
    filterByInertia: false,
    faster: true,
    scaleFactor
  } );

A few other notes:

faster is used in the first pass for dot detection, but not on the second for program detection. Turning it off (false) in the second pass notably slows down the framerate. I think adding an option for 'faster' for dot detection is a good move. It should stay on for program detection.
The maximum value for InertiaRatio is 1. The optimal inertia ratio for a circle is 0.5. I didn't seem substantial improvements to detection here. I did set the bounds from 0.2 to 0.8 (0.3 above and below a perfect circle) and possibly this is a good place to leave it.
Convexity is similar. A perfect circle (max value) is 1. 0.8 did show spurious detections. I settled around 0.9. I am not sure this is a good candidate for optimization.
minRepeatability refers to the minimum number of times a similar feature needs to appear to be recognized. Keeping this at 2 or above filters out a lot of random detections that only appear once. Leave this at 2.
scaleFactor reduces the effective resolution of the image. It means you could miss dots or the gaps between dots. However, it greatly increases performance.
I'm not certain on "filter by color", but also didn't dig as deep here. Nothing super noticeable when I tried swapping it. Let's leave it on by default.

Factors with large sway here:
thresholdStep - big impact on performance, but also resolution of detection markers. It operates over min to maxThreshold.
minThreshold - Not as big of an impact, but you can theoretically gate on dark background with this.
maxThreshold - Likewise for very bright pixels.
minDistBetweenBlobs - The number of pixels needed to call two detected centers two distinct blobs. Definitely impactful. Noisier images will benefit from this not being too low, but I found myself setting it to 1 pixel given my small program test setup.
minArea - big impact and arguably the one that made it possible for me to raise the camera much higher for detecting full sized programs. This is a parameter in detectPrograms.js as well. We should make sure they are both updated.
maxArea - good for filtering out anything that is being mistreated as a marker.

Let's replace the Accuracy -> Performance slider in the Detection category and add controls for each of the following parameters

Checkbox: faster for dot detection (simpleBlobDetector.js), default = unchecked (false), label = 'Average Dot Centers'.
Slider: thresholdStep min = 1, max = 25, step = 1, default = 10, label = 'Pixel Value Step Size'
Slider: minThreshold, min = 0, max = 254, step = 1, default = 50, label = 'Minimum Pixel Value' - validation: Must be smaller than maxThreshold
Slider: maxThreshold, min = 1, max = 255, step = 1, default = 230, label = 'Maximum Pixel Value' - validation: Must be larger than minArea
Slider: minArea, min = 5, max = 100, step = 5, default = 25, label = 'Minimum Dot Area (pixels)' - validation: Must be smaller than maxArea
Slider: maxArea, min = 10, max = 1000, step = 5, default = 500, label = 'Maximum Dot Area (pixels)'  - validation: Must be larger than minArea
Slider: minDistBetweenBlobs, min = 1, max = 50, step = 1, default = 10, label = 'Minimum Dot Separation (pixels)'

I'm a little uncertain about those values for minArea and maxArea, since that may vary greatly depending on play area size and paper sizes. What do you think @jessegreenberg? Maybe we should make those number entry instead until we know more about them and not worry about the slider constraints?

OK, an initial pass for this was done. @brettfiedler can you please review?

For validation, warnings appear below the sliders.
Values for all of these should be saved to local storage.
I added a slider for the scaleFactor. The default value (or whatever value you happen to have in local storage) modifies all the values you set here. And I have found that detection is best when it is at 1.
The first time you use paper-land, the values might come from your local storage and not match what these sliders display, maybe try moving each slider/checkbox at least once.

I tested these out on two computers and they are working pretty well so I will go ahead and merge these into main.

This is just wonderfully useful and let's us push openCV to it's limits.
It's a lot smoother to see the effect of each slider and so far I'm finding each one we added as helpful for gating features like spurious markers or smaller random features. Here's a fairly stable example that I was unable to cleanly get before with this distance and size of paper!

I can also run the "Average Dot Centers" aka faster with this, though it is a little bit shakier and I need to adjust the minimum separation.
I am calling this good and leaving any naming adjustments to other issues.


Rename the Auth0 traits and structs to Oidc

The current naming of some traits and structs used to enroll users is incorrect. Some names contain Auth0 when we really mean OAuth (for OAuth 2.0) or Oidc (for OIDC - OpenID Connect). The authentication flows using Auth0 or Okta are specific cases of an OIDC flow.
Note:

OpenID Connect includes a couple of extra things on top of OAuth 2.0: an ID Token and a /userinfo endpoint
We rely on /userinfo to get authenticated attributes (eg. email) so we’re using OpenID Connect.

The purpose of this issue is to rename Auth0 to Oidc in the following traits, structs, and associated modules:

Auth0Provider
Auth0Token
AuthenticateAuth0Token
Auth0Service

We love helping new contributors!
If you have questions or need help as you work on your first Ockam contribution, please leave a comment on this discussion.
If you're looking for other issues to contribute to, checkout this discussion and labels -  https://github.com/build-trust/ockam/labels/good first issue or https://github.com/build-trust/ockam/labels/help wanted

I would like to take this one!

@aleksandarskrbic please do.

Done with #5444


Couple minor errors with pattern generation

Two minor things.

The mixin interface doesn't default to the Viewer specified in ent.yml:

export interface ISomePattern<TViewer extends Viewer = Viewer>
  extends ISomePatternBase<TViewer>

should be
export interface ISomePattern<TViewer extends MyCustomViewer = MyCustomViewer>
  extends ISomePatternBase<TViewer>

(The base should also be ISomePatternBase<TViewer extends MyCustomViewer = MyCustomViewer>.)

Field edges and foreign keys loaders do not get defined on pattern interfaces. Edges defined on the pattern generate queryFoo interfaces correctly, but fieldEdges or foreignKeys defined on a field in a pattern do not generate the loadFoo or queryFoo method definitions on the interface.

for 2, looks like i decided to go from the other direction since it would have been a 1/1 mapping in the case of the fieldEdge and foreignKey?
probably because i didn't think it was worth it, not sure?

for 1/, fixed in https://github.com/lolopinto/ent/pull/1800
non-base classes would have to be fixed manually.

I just realized I completely misunderstood #2. 🤦🏿♂

for 1/, fixed in https://github.com/lolopinto/ent/pull/1800
non-base classes would have to be fixed manually.

No problem! Thanks for getting to this. 🙂


Resolve NullPointerException in calculateTotalPrice Function (Java)

Path - Problems/ShoppingCart.java
Issue Description:
The calculateTotalPrice function in the ShoppingCart.java file is throwing a NullPointerException when an item in the shopping cart has a null price. This issue needs to be resolved to ensure the correct calculation of the total price.
Steps to Reproduce:
Execute the calculateTotalPrice function in Java with a shopping cart containing an item with a null price.
Expected Behavior:
The function should handle items with null prices gracefully and calculate the total price correctly.
Actual Behavior:
The function throws a NullPointerException when encountering an item with a null price, causing the calculation to fail.
Proposed Solution:
To resolve this issue, we need to modify the calculateTotalPrice function in the ShoppingCart.java file to check for null prices before adding them to the total. If an item has a null price, it should be skipped in the calculation.
This modification ensures that items with null prices are excluded from the calculation, preventing the NullPointerException.
Additional Information:
Relevant code file: ShoppingCart.java
Environment: Java 8, ShoppingCart version 1.2.3
Labels: bug, NullPointerException

I dont get it. In Problems/ShoppingCart.java there is a class called public class DebugExample. There is no calculateTotalPrice or anything.  It just calls text.length where text = null and prints the result. What is the purpose of this issue? This is the first time i'm trying to contribute to an open source project.


Retune mpc with yaw rate

Do not penalize turning steering wheel if model says you should.

Continue from https://github.com/commaai/openpilot/pull/2730


Attribute not exist error

Error when preparing data for import: sheet "Tests", cell "A1". Attribute not exist.

Please show your config and excel file.

$importer = new Importer([
		'filePath' => Yii::getAlias('@backend/web/upload/234.xlsx'),

		'standardModelsConfig' => [
			[
				'className' => ShipIng::className(),
				'standardAttributesConfig' => [
					[
						'name' => 'ship_id',
						'valueReplacement' => function ($value) {
							return $value;
						},
					],

					[
						'name' => 'tender_id',
						'valueReplacement' => function ($value) {
							return $value ? Html::tag('p', $value) : '';
						},
					],

					[
						'name' => 'company_id',
						'valueReplacement' => function ($value) {
							return $value;
						},
					],
				],
			],
		],
	]);

please as soon as reply

Make sure there are no redundant spaces and line breaks in attribute names in Excel file.
Current standard attributes config doesn't make sense, you need to modify it according to your model..
The component is designed for user friendly filling, it's better to write actuak company names instead of ids.

Did my answer helped?

I'm closing this because of missing feedback. Reopen if it's necessary.

Hi, I just had the same problem, so I proceeded to debug the library and managed to find the call to that exception; In this way I realized that in order not to fall in it the cabacera of the xlsx file must be equal to that of the attributeLabels of the model. : D


LICENSE options are shown but not acted upon

https://github.com/audreyfeldroy/cookiecutter-pypackage/blob/master/{{cookiecutter.project_slug}}/LICENSE


Fixes

Sets default sorting for tables to "new cases last week".
Disables zoom feature on the images embedded in the index as they should act as links to their respective notebooks.

Codecov Report

Merging #48 into master will decrease coverage by 0.09%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #48      +/-   ##
==========================================
- Coverage   91.77%   91.68%   -0.10%
==========================================
  Files           3        3
  Lines         608      601       -7
==========================================
- Hits          558      551       -7
  Misses         50       50

Impacted Files
Coverage Δ

coronavirus/coronavirus.py
91.06% <0.00%> (-0.12%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 35c69bc...2852cf3. Read the comment docs.

Great, thanks.


Antiforgery not found on Ubuntu 18.04 TLS

Just stumbled uppon this issue, that it won't find Antiforgery. I published a selfcontained app for Ubuntu(Windows works fine).
using this cli:
dotnet publish -c Release -r ubuntu.14.04-x64
or
dotnet publish -c Release -r ubuntu-x64
grafik

And i don't understand why it tries to look in /lib/*
All files seem to be in the publish subfolder. As of now i even tried installing the sdk on my Ubuntu using
sudo apt-get install dotnet-sdk-2.1.200
Installation went fine.  All along this was an absolute terrible mistake made by me. When publishing for i.e. linux-x64, it places the binaries and a publish folder. I missunderstodd that and thought i need to run the binaries above publish. But those are only the ones builds not packaged! The packaged ones are in the publish folder. Really sorry for adding to the issue counter -.-

Always happy to close an issue without having to do any work 👍


[New Command] Set-DbaAgPrimaryServer

Is this:
Just place "x" to indicate selection (e.g. "[x]")

[x] feature
[ ] bug:

Context
I have a small suggestion to make for a new DBATool: a controlled AOAG Failover. (with validations).
My Network Admin is not very good with SQL, but he is good with Powershell. When he wants to do the Windows Updates on the AlwaysOn SQL servers, I would like him to be able to run a script that would automatically check what server is the active/primary Availability Group (is it the current server?) (Get-DbaAvailabilityGroup) and if it is (or not), then perform a Failover to the other node.
Expected results

Admin logs in on ServerOne, runs the script on the desktop.
The script validates that the ServerOne is the current Primary, then failovers to the ServerTwo.
Admin makes the patches on ServerOne
Admin logs on ServerTwo, and there is a similar script on the desktop that he runs.
It validates that the ServerTwo is the current Primary, then failovers to the ServerOne.
Admin makes the patches on ServerTwo

Parameters
Parameters could include:

"With Validation" flag of current active node (i.e. server the script is run from) or not
Name of the Secondary Node to failover to (some configurations have multiple secondary)
Name of the Instance/AOAG group/Listener to validate and failover (we have 2 instances per server, 1 AOAG per instance)
Credentials (probably just like the Sql-CopyDatabase)

(Please find a better name for this than the one I suggested!)

I like this one, thanks for the suggestion 👍 Will likely be after 1.0

AvailabilityGroup.PrimaryReplicaServerName through SMO will give you the primary from any of the replicas

Random thought it might not be bad idea to write a test command to support the failover option,but also to just give general synopsis on the state of the AG.

I've been doing a bunch of this shenanigans in SMO recently (which is how I found out that read-routing lists are broken with 2016). It's not terrible, but it is a pain.

You mean broken via SMO for read-routing lists? I have them in use in production for a client on 2016 and they work fine.

It doesn't accurately reflect read routing load balancing in 2016.
On Aug 20, 2017 6:25 PM, Shawn Melton<EMAIL_ADDRESS>wrote:
You mean broken via SMO for read-routing lists? I have them in use in production for a client on 2016 and they work fine.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/sqlcollaborative/dbatools/issues/1432#issuecomment-323626033, or mute the threadhttps://github.com/notifications/unsubscribe-auth/APtKBzagH6XdNpg-OE75qU56N8SNUDxWks5saNxzgaJpZM4N3mk_.

Covered by Invoke-DbaAgFailover. Please comment if that is not the case.


[docs] migrate simple-gateway/traffic-splitting to v1alpha2

What type of PR is this?

/kind documentation
What this PR does / why we need it:
document simple-gateway/traffic-splitting v1alpha2
Which issue(s) this PR fixes:

Fixes
translate simple-gateway/traffic-splitting from v1alpha1 to v1alpha2
Does this PR introduce a user-facing change?:

/ok-to-test

/ok-to-test

Was just looking at the deploy preview and it looks like the "Canary traffic rollout" section hasn't been updated for v1alpha2: https://deploy-preview-811--kubernetes-sigs-gateway-api.netlify.app/v1alpha2/guides/traffic-splitting/#canary-traffic-rollout. It looks like the example and the "Routing Precedence" link needs to be updated.

Was just looking at the deploy preview and it looks like the "Canary traffic rollout" section hasn't been updated for v1alpha2: https://deploy-preview-811--kubernetes-sigs-gateway-api.netlify.app/v1alpha2/guides/traffic-splitting/#canary-traffic-rollout. It looks like the example and the "Routing Precedence" link needs to be updated.

whoops, this one is left behind, good catch ! thanks.

Was just looking at the deploy preview and it looks like the "Canary traffic rollout" section hasn't been updated for v1alpha2: https://deploy-preview-811--kubernetes-sigs-gateway-api.netlify.app/v1alpha2/guides/traffic-splitting/#canary-traffic-rollout. It looks like the example and the "Routing Precedence" link needs to be updated.

whoops, this one is left behind, good catch ! thanks.

Fixed ea832a45d0111ce8fb5a885a644c478d81702c71

Thanks @ccfishk!
/lgtm
/approve


.set(...) with a string parameter

I noticed that it's possible to do:
query.where('q.name = ?', 'something')

But not:
query.set('q.name = ?', 'something')

It could be useful in this case:
query.set('q.score = COALESCE(q.score, 0) * ?', 5)

Yeah, I could definitely see that.  For now if you want to protect against injection you can use params:
query.set('q.score = COALESCE(q.score, 0) * {score_multiplier}').params(score_multiplier: 5}

More awkward, I know

Uhm, at least you should improve the documentation for it, I think!
But it does the trick, thanks!


v1.12.0

NP-756 Advisernet related content component
Update oisc_warning component to accept a hash

@davidsauntson To clarify I didn't work on NP-756, which is the only new component, but in that case we most likely move it out and into advisernet itself based on our last theming chat. Do you want me to do that before we do a release?


pip: ImportError: cannot import name IncompleteRead

nicu@nmarasoiu:~/tools/microservices-infrastructure$ sudo pip install -r requirements.txt
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in
load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 351, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2363, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2088, in load
entry = import(self.module_name, globals(),globals(), ['name'])
File "/usr/lib/python2.7/dist-packages/pip/init.py", line 61, in
from pip.vcs import git, mercurial, subversion, bazaar  # noqa
File "/usr/lib/python2.7/dist-packages/pip/vcs/mercurial.py", line 9, in
from pip.download import path_to_url
File "/usr/lib/python2.7/dist-packages/pip/download.py", line 25, in
from requests.compat import IncompleteRead
ImportError: cannot import name IncompleteRead

python --version
Python 2.7.6
I also have python3

0.2.0

What platform are you running on? In doing a search on this, it is a python pip problem: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1306991

solved with easy_install -U pip


feat: changed basic formatting of feed

This is just the beginning of the feed page. Do not merge to main. Changed very simple formatting such as empty post list and removed skeleton posts.

Not perfect but we need it for the demo tomorrow. I'll do a refactor/testing/styling run-through afterward.


Feat/live-5401 Refactor webviews + implement PTX custom player

📝 Description

Fully refactored the WebPlatformPlayer component on both LLD & LLM to allow easy custom implementations
Added a WebPTXPlayer component that implement a custom "BackToLastMatchingURL" button (LLD only)

❓ Context

Impacted projects: LLD, LLM
Linked resource(s): https://ledgerhq.atlassian.net/browse/LIVE-5401

✅ Checklist

[ ] Test coverage
[x] Atomic delivery
[x] No breaking changes

📸 Demo

🚀 Expectations to reach
Please make sure you follow these Important Steps.
Pull Requests must pass the CI and be internally validated in order to be merged.

Can confirm this branch is working with the previous Buy app (1.7) and the upcoming one (2.0) with will incorporate the Back button and get rid of the provider iframe.

Just pushed a major update, this PR is now covering both LLM & LLD webview rework.

/generate-screenshots

/generate-screenshots

/generate-screenshots

/generate-screenshots


Is Work with Electron 15.0?

Is Work with Electron 15.0?

I didn't try yet. I actually use it with electron 14. If it fails in your electron 15 environment, then report it as an issue here, I definitely plan to keep it compatible with future versions of electron.

I can confirm that the package works in 15.3.1.


Download button feature

Fixes Issue
Closes issue  #66
Changes proposed

Check List (Check all the applicable boxes)

[ x] My code follows the code style of this project.
[ ] My change requires changes to the documentation.
[ ] I have updated the documentation accordingly.
[ ] All new and existing tests passed.
[ x] This PR does not contain plagiarized content.
[x ] The title of my pull request is a short description of the requested changes.

Screenshots

Note to reviewers

oh well! it's not working as expected in the deploy-preview, the downloaded file name isn't what supposed to be, also the file extension should be ".jpg" in pixabay and unsplash not "jfif".
on my machine:

in preview:

any ideas @furkanmutlu ?

Yes, its because backend app and frontend app is on different server. You need to merge backend changes first to be able to see changes on frontend deploy env. So don't worry about it.


The most recent Oculus Dashboard Desktop update breaks OculusKiller

The most recent Oculus Dashboard Desktop update breaks OculusKiller
Oculus App Version <IP_ADDRESS>.455 (<IP_ADDRESS>.455)
Just get he infamous 3 dots in headset when going starting Airlink

Restarted Oculus services via Oculus Dashboard debug tool.
It works.. , but prob. due for a new release


Replace non-functional example with a working one

Just fixing an example in http://www.openmicroscopy.org/site/support/omero5.2/developers/testing.html#individual-test-class-methods. The status at present is that this example does not execute any tests because there are none of the specified name. This PR is replacing the example with more present test, which executes fine with a reasonable output.
Staged at http://www.openmicroscopy.org/site/support/omero5.2-staging/developers/testing.html#individual-test-class-methods
cc @ximenesuk @mtbc

:+1:

Actually staged on http://www.openmicroscopy.org/site/support/omero5.3-staging/developers/testing.html#individual-test-class-methods btw

--rebased-to #1502


Problem adding characters

Describe your bug here.
When I go in and add the character and animation and save the file in mods/characters
And when I go into the gameplay and press 7 and go to change my character and run the game, I notice that it turns into a dot (similar to the Hex logo) even though I activated the mod and even if I moved the character's json file to the engine files and the result is the same
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
Source
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
just the character's json file position from mods into the engine files

modifying a release

Ok problem solved ,thank you


ENH: remove the need for a working directory & other cleanups

This brings back the simplifications I proposed in #340 in a way compatible with having the wheel generated from files installed by meson install in a temporary destination directory. This covers a very minimal part of the work done in #348 too. It should be trivial to rebase #348 on top of this.
Fixes #355 and #330 as there are no arguments the user can supply that would interfere with meson-python internals. It also fixes #317 in the same way as #348 does.

The macOS test failure are the same found in #348 and will have the same solution.

Thanks @dnicolodi. Trying to think of a merge strategy here - I think the status is:

this seems to overlap with, and improve on, the first 3 commits of gh-348.
this is blocked on the macOS RPATH test failures right now, which are addressed by gh-348 (and that's the key tricky and unfinished thing in that PR). This PR could temporarily xfail them though?
gh-348 also has tests for subdir(..., exclude_files) that are useful and will pass in combination with this PR. But there's no issue in adding those later.

I see this more like preparation work for landing #348 with the resulting code being in better shape (if we agree that the resulting code after merging this PR is "better").
From a "build things from the ground up" point of view, I would merge this and rebase the fixes in #348 on top. Or we can do the other way around and have this merged after #348 to cleanup the implementation. I think merging this first results in less (or easier to resolve) rebase conflicts and will make looking the commit history easier, but we can go either way. This PR being ready to be merged, while the proper solution for the rpath issues in #348 are still being discussed, is one reason to have this merged first. If you want to merge with all green tests, I can mark the rpath test as xfail.
I can take care of rebasing #348 on top of this.
The tests for exclude_files probably found a bug in Meson on Windows, thus these are also marked as xfail on that platform. I started investigating that on the Meson side, but I didn't reach a conclusion yet.

PR #348 rebased on top of this is here https://github.com/dnicolodi/meson-python/tree/pr348

I removed the v0.13.0 milestone, as this getting in is not critical for it, and we should release 0.13.0 as soon as we are able to. If this is in shape to get it by the time we sort the release blockers, great, otherwise we can just merge it afterwards and have it in 0.14.0.

This is ready to be merged since a long time. It just needs a review. I don't understand why you think otherwise.

It conflicts with #348, which needs to get in for the new release.

I already posted the conflict resolution.

But the PR may get more changes before merging. If you have an updated PR by then, great, we can merge it, otherwise we just do it for the next release.

What's the problem with merging this now, rebase #348 on top, and take it from there?

It can unnecessarily delay the release. Like I said, this is not critical, unlike the other PR, so I am not merging this now.

This PR hasn't even been reviewed btw, so it might still require changes, etc. I am prioritizing the release blockers.

There are still unaddressed items in that PR that I need to deal with, and I haven't even pushed any changes from the feedback received. When I do not have any more actionable items there, I will review this.

@rgommers I left out the commits with behavior changes from this PR. This is now just refactoring and a change in the structure of temporary directories. It would be nice to have this merged as a first step toward fixing the linked issues.

@dnicolodi WDYT about tagging a 0.14.0 release? The PR queue is pretty much empty, so now would be a good time. We can quickly do a 0.15.0 too in case the subsequent PR to this one arrives quickly.

WDYT about tagging a 0.14.0 release?

I don't know how critical it is to push a release with the fixes that already landed in main. There are three known bugs related to the fact that meson-python takes the files for the wheel from the source directory instead than from the build directory: (1) the handling of exclude_path and exclude_directory for install_subdir, and (2) removing the RPATH pointing to the build directory. In addition, there is a bug (3) in how sub direcrtories of direcotries installed with install_subdir are handled. I have patches for all three, thus getting these fixes in should be fast. However, investigating (2) I found a bug in Meson, thus having correct RPATH handling would require a new Meson release.

It's not critical to do it right this minute, so let's wait for at least the fixes for the bugs that don't depend on a new Meson release?
I'm also going through the backlog now and see what can be closed or easily addressed. Some of the documentation issues are straightforward, I'll try to fix a couple after dinner.


How do i update the point cloud in real time?

I have multiple RBG images with their corresponding Depth Maps... Now I want to render it as if the point clouds are changing as shown in your main repo's README. How do I do that..

I figured it out... Hence closing this issue. You made a great tool! Thank you <3

Your welcome! Ideally I should make this operate async from main thread but I don't have enough time to make a revision.

Same Question here, can you kindly tell me how to do it?

Same Question here, can you kindly tell me how to do it?


Operator should default to the watched namespace

Closes #155

:+1:

:+1:

@mgomezch  @erthalion  updated. Could you please check the code and documentation match each other and the original issue ?

:+1:

:+1:

:+1:

:+1:


There are two end tags in ApplicationController example

Type of PR (feature, enhancement, bug fix, etc.)
enhancement
Description
There were two end tags in ApplicationController example.
Fixes # (issue)
Removed the additional end tag.
Explain value.
Checklist

[x] My code follows the style guidelines of this project
[x] Checks (StandardRB & Prettier-Standard) are passing

The typo was fixed by @pjforde1978
Thank you @pjforde1978


Misleading default configuration value

This page indicates that the default configuration value is "Debug", but I removed the Debug configuration from my solution & all projects and my build server happily built using my new "Development" configuration after a simple "dotnet build [solution]".  Perhaps that note should instead indicate that dotnet will go with the first config it finds in the solution?

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

ID: 910cd365-d63a-00dc-417c-db017f83bf6f
Version Independent ID: 5e495ddd-140e-de5c-a793-d4a9f88be51e
Content: dotnet build command - .NET Core CLI
Content Source: docs/core/tools/dotnet-build.md
Product: dotnet-core
Technology: dotnet-cli
GitHub Login: @mairaw
Microsoft Alias: mairaw

Thank you for opening this issue. I'll add it to the backlog. This does sound like the "default" in this case means when the setting is omitted from the command line, and there is no config defined in the project.
@KathleenDollard Please confirm.
Thanks again!

@livarcocc @dsplaisted

@livarcocc @dsplaisted can you comment on this issue?

The default configuration is defined by MSBuild and the .NET Core SDK.  If not specified elsewhere it will be Debug.  However, it is possible to override the default in custom MSBuild logic for your project.  So if you don't specify the configuration on the command line it will use whatever the default configuration for your project is, which will typically, but not always, be Debug.

Just to clarify, the searching for the configuration is:

Check command line for parameters
Check the project for a configuration value, choose the first.
Use the MSBuild/Core SDK default, which is Debug


.NET app support in NR-1.11 in PCF-1.11?

Hi team,
Do we have support for .NET apps/buildpacks on PCF-1.11. We are pretty good with Java and Node apps.
Thanks,
Chandan

Closing this as this is an old issue and no activity. DotNet is supported by newer versions of NR service broker.


Ugly icon rendering

On Chrome, the base favicon become uglier:

On the right, the icon after Tinycon integration.

Mine is looking even more worse. Using Chrome... My favicon has all three resolutions (16px 24px 48px) in one file. Maybe that's the problem?

It could be, try using a plain png version of the favicon and see if you
get the same artifacts?
On Thu, Sep 1, 2016 at 8:55 AM, PranKe01<EMAIL_ADDRESS>wrote:

Mine is looking even more worse. Using Chrome... My favicon has all three
resolutions (16px 24px 48px) in one file. Maybe that's the problem?
[image: image]
https://cloud.githubusercontent.com/assets/13560351/18174245/2b65c3c2-706d-11e6-9422-05d3775c08db.png
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/tommoor/tinycon/issues/85#issuecomment-244125004, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAXP8vzYJq0uBzb4dKNgvzV_z0uLNaUOks5qlvV1gaJpZM4Iv90y
.

--
Tom Moor
http://tommoor.com
http://twitter.com/tommoor

Okay, I see the problem. I read that the favicon should not be set in the  of a page. But I needed to use  to make it work with iOS.
Tinycon tries to get the first favicon it can find in the :
  var getCurrentFavicon = function(){

    if (!originalFavicon || !currentFavicon) {
      var tag = getFaviconTag();
      currentFavicon = tag ? tag.getAttribute('href') : '/favicon.ico';
      if (!originalFavicon) {
        originalFavicon = currentFavicon;
      }
    }

    return currentFavicon;
  };

That way it took a different image as favicon.


Support Topshelf v4

The Problem
When installed alongside v4 of Topshelf, you get the following exception upon trying to use Topshelf.Linux:
Topshelf.HostFactory Error: 0 : An exception occurred creating the host, System.TypeLoadException: Could not load type 'Topshelf.Runtime.Linux.LinuxHostEnvironment' from assembly 'Topshelf.Linux, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'.
   at Topshelf.HostConfigurators.HostConfiguratorImpl.CreateHost () in <filename unknown>:line 0
   at Topshelf.HostFactory.New (System.Action`1 configureCallback) in <filename unknown>:line 0
Topshelf.HostFactory Error: 0 : The service terminated abnormally, System.TypeLoadException: Could not load type 'Topshelf.Runtime.Linux.LinuxHostEnvironment' from assembly 'Topshelf.Linux, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'.
   at Topshelf.HostConfigurators.HostConfiguratorImpl.CreateHost () in <filename unknown>:line 0
   at Topshelf.HostFactory.New (System.Action`1 configureCallback) in <filename unknown>:line 0

The signature of Topshelf.Runtime.hostEnvironment::InstallService has changed from
void InstallService(InstallHostSettings settings, Action beforeInstall, Action afterInstall, Action beforeRollback, Action afterRollback)

to
void InstallService(InstallHostSettings settings, Action<InstallHostSettings> beforeInstall, Action afterInstall, Action beforeRollback, Action afterRollback);

Steps to Reproduce
On a unix machine with mono installed, attempt to run a project that references the latest Topshelf and Topshelf.Linux. Run the program like so:
export MONO_LOG_LEVEL=debug
export MONO_LOG_MASK=type
mono --debug YourAssembly.exe

Notice the following warning from mono:
Mono: no implementation for interface method Topshelf.Runtime.HostEnvironment::InstallService(InstallHostSettings,Action`1<InstallHostSettings>,Action,Action,Action) in class Topshelf.Runtime.Linux.LinuxHostEnvironment

The exception mentioned above will be thrown.
Proposed solution:

Update Topshelf.Runtime.Linux.LinuxHostEnvironment to use the new signature and release a new version of Topshelf.Linux
Update the nuget dependencies to strictly depend on Topshelf 3.x

I will make a new (interim) release restricting nuget dependencies to v3.*, and once this release is available at nuget, we can move master towards supporting v4. (This way anyone wanting to use this proyecto along with topshelf v3 can do so simply referencing the specific version supporting v3)


2.0.0-DEV-SNAPSHOT-PRE-RELEASE VER 4 PATCH 2 (EMERGENCY)

-Bug Fix; create log directory in the workspace if it doesn't exist.

@mabdelmoez fyi, update accordingly :)

Referencing #42


Improve performance with canvas

Canvas can be very bad on performance when used the wrong/not optimized way as being noted in #35 it added 10 seconds of loading whereby this should be around 0.2-0.5 seconds and can be improved further but this focused on the way that the canvas was being used.
It will now re-use the canvas(I'm not sure if the heightmap is further in the game being executed again, but if so it will definitely be a good call).
Disable image smoothing.
Only call the expensive getImageData once.
Do a little bit of maths to get the correct pixel value.
Before (3.2 seconds) https://share.firefox.dev/3ijocx6:

After (0.18 seconds) https://share.firefox.dev/3vRoM9g:

Wow this is a massive difference 😃


Use DO Spaces as a backend provider

Fixes #4

I also fixed a port assignment in the setup-tunnels script

Great work @LouisIV !
I am wondering if creating a DO Space and secret should be a prerequisite before deploying this cluster.
The README could be updated to:
Deployment Prerequisites
- Docker
- DigitalOcean token
- DigitalOcean space and space token (link to some article that explains how to do this)
- 30 minutes

Then the docker deployment image can be started like this:
docker run \
	-e DO_TOKEN="TODO"  \
	-e DO_SPACE_NAME="TODO"  \
	-e DO_SPACE_TOKEN="TODO"  \
	-p 4646:4646 -p 8081:8081 -p 8200:8200 -p 8500:8500 \
	-v $(pwd):/hashiplatform-deploy  \
	-it hashiplatform-deploy

Also remember that there are two terraform projects here that needs one backend each.

The infrastructure code
The configuration of Vault

Good point but I would like to keep the backend.hcl files. It's the recommended way of handling this exact situation. It's also nice because they make it easy to have different environments. backend.dev.hcl or stage etc.


Multipart API question

I wanted to create a PR with updated TypeScript definitions for stuff changed in v18.7.0, and I've noticed the new multipart parser getParts has quite an interesting API: it returns an array of Map objects.
I'd say it is a bit odd, since it's the only function in uWS.js that uses Maps, plus it would be a little awkward to use in TS because I think the only way to type it would be Map<string, ArrayBuffer | string>. This would require a type guard before accessing any of the values, even though we know that data is always an ArrayBuffer, and the rest are strings with name being the only non-optional one (correct me if I'm wrong).
Are there any reasons why it couldn't be a plain object array?

Shouldn't Map and Object be the same from a user perspective?
Map is used because V8 docs states it is intended to be faster for this kind of usage, and I have run a benchmark showing a 30% disadvantage, at least, to using Object.

The problem is that "data" is put in the same container where keys are put, so if a key with name "data" is used that will conflict. Problem is that adding yet another container will harm performance even more since abstractions are costly in scripts.

Aha! Yeah that could be an object instead. They have data, name, filename, type in a static way.

Shouldn't Map and Object be the same from a user perspective?

Well, it's a bit different, because you need to use map.get('data') instead of obj.data. And also as I mentioned, a bit weird to use in TS, because the returned value from map.get('data') has a type of string | ArrayBuffer | undefined, so I need to check which one is it, before using it. If it were an object, the returned type from getParts could be MultipartField[], where MultipartField is some thing like
interface MultipartField {
  name: string;
  data: ArrayBuffer;
  type?: string;
  filename?: string;
}

which would be nicer to use.

Map is used because V8 docs states it is intended to be faster for this kind of usage, and I have run a benchmark showing a 30% disadvantage, at least, to using Object.

Quite interesting. Can't imagine why tho, with such a small number of keys :thinking:

I see what you say and I agree. I guess I used Map because it was the simplest to do. It should probably be an object since the contents are static.
As I understand it a Map is an Object with static methods (has, get, etc) and when you attach dynamic data to it, you only change internal data (Maps store data logarithmically in a packed array) so there is no changes to the actual object class, it still stays a Map.
With an Object you change the class every time you attach new properties and that apparently fucks the performance up. But for static contents, where you have a static template to clone, it could be better to use Objects I don't know for sure.

They are objects now so feel free to PR the typedefs


bst workspace open dislikes git sources that have submodules

See original issue on GitLab
In GitLab by [Gitlab user @coldtom] on Nov 8, 2018, 10:41
Summary
Attempting to run bst workspace open caused me a stack trace, I think due to the submodules in a git element, but this may not be the case.
Steps to reproduce

Clone freedesktop-sdk
Run bst workspace open desktop/gst-libav gst-libav

What is the current bug behavior?
The following stack trace:
[--:--:--][][] START   Loading elements
[00:00:01][][] SUCCESS Loading elements
[--:--:--][][] START   Resolving elements
[00:00:01][][] SUCCESS Resolving elements
[--:--:--][][] START   Resolving cached state
[00:00:00][][] SUCCESS Resolving cached state
[--:--:--][][] START   Checking sources
[00:00:00][][] SUCCESS Checking sources
[--:--:--][d4ca660b][ main:desktop/gstreamer-libav.bst   ] START   Staging sources to here
[--:--:--][        ][ main:desktop/gstreamer-libav.bst-0 ] STATUS  Running host command

    /usr/bin/git show 1.14.0-0-g1830c75cd28fc68bd26f9530db18c2da474a4aa2:.gitmodules

[--:--:--][        ][ main:desktop/gstreamer-libav.bst-0 ] STATUS  Running host command

    /usr/bin/git ls-tree 1.14.0-0-g1830c75cd28fc68bd26f9530db18c2da474a4aa2 common

[--:--:--][        ][ main:desktop/gstreamer-libav.bst-0 ] STATUS  Running host command

    /usr/bin/git ls-tree 1.14.0-0-g1830c75cd28fc68bd26f9530db18c2da474a4aa2 gst-libs/ext/libav

[--:--:--][        ][ main:desktop/gstreamer-libav.bst-0 ] STATUS  Running host command

    /usr/bin/git ls-tree 1.14.0-0-g1830c75cd28fc68bd26f9530db18c2da474a4aa2 gst-libs/ext/gas-preprocessor

[--:--:--][        ][ main:desktop/gstreamer-libav.bst-0 ] START   Setting up workspace "/home/tom/.cache/buildstream/build/workspace-desktop-gstreamer-libavyrmfg9lh"
[--:--:--][][] BUG     Primary URL marked twice with different URLs

    Traceback (most recent call last):
      File "/home/tom/.local/bin/bst", line 8, in <module>
        sys.exit(cli())
      File "/home/tom/.local/lib/python3.7/site-packages/click/core.py", line 722, in __call__
        return self.main(*args, **kwargs)
      File "/home/tom/Documents/work/buildstream/buildstream/_frontend/cli.py", line 162, in override_main
        standalone_mode=standalone_mode, **extra)
      File "/home/tom/.local/lib/python3.7/site-packages/click/core.py", line 697, in main
        rv = self.invoke(ctx)
      File "/home/tom/.local/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/home/tom/.local/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/home/tom/.local/lib/python3.7/site-packages/click/core.py", line 895, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/tom/.local/lib/python3.7/site-packages/click/core.py", line 535, in invoke
        return callback(*args, **kwargs)
      File "/home/tom/.local/lib/python3.7/site-packages/click/decorators.py", line 27, in new_func
        return f(get_current_context().obj, *args, **kwargs)
      File "/home/tom/Documents/work/buildstream/buildstream/_frontend/cli.py", line 705, in workspace_open
        force=force)
      File "/home/tom/Documents/work/buildstream/buildstream/_stream.py", line 513, in workspace_open
        target._open_workspace()
      File "/home/tom/Documents/work/buildstream/buildstream/element.py", line 1810, in _open_workspace
        source._init_workspace(temp)
      File "/home/tom/Documents/work/buildstream/buildstream/source.py", line 672, in _init_workspace
        self.init_workspace(directory)
      File "/home/tom/Documents/work/buildstream/buildstream/plugins/sources/git.py", line 408, in init_workspace
        mirror.init_workspace(directory)
      File "/home/tom/Documents/work/buildstream/buildstream/plugins/sources/git.py", line 220, in init_workspace
        url = self.source.translate_url(self.url)
      File "/home/tom/Documents/work/buildstream/buildstream/source.py", line 455, in translate_url
        self.mark_download_url(url, primary=primary)
      File "/home/tom/Documents/work/buildstream/buildstream/source.py", line 502, in mark_download_url
        "Primary URL marked twice with different URLs"
    AssertionError: Primary URL marked twice with different URLs

What is the expected correct behavior?
Workspace should open correctly.

BuildStream version affected: /milestone %BuildStream_v1.2

Currently this is a known limitation also with bst-1, not considering this a blocker for 2.0 but hopefully easy enough to fix.

Needs testing anyway on bst2 whether this is happening at all anymore. I briefly looked at the code and it seems to use primary=False for all submodules.