Vue replaces all inside "#app" div

Question
Hi, im trying to setup a Craft site base on your project template. I have used your vue 2 setup up intil now, where we have a root element with id #app. Inside here the entiry content of the website lives. In this Vue 3 setup, all content inside the #app gets replaces for some reason. I have even tried setting app.ts up with the "Vue getting started" example. But even here i can't get it to rener the variables or any components thats inserted in the template using twig
Is there something in your setup that makes Vue 3 behave differently ?

Vue 3 by default does not include the template compiler, so it can't compile Vue code on the fly. If you want to do that, you'll need to explicitly include it, for instance:
resolve: {
    alias: {
      '@': './src',
      'vue': path.resolve('./node_modules/vue/dist/vue.esm-bundler.js')
    },
  },

More info here: https://v3.vuejs.org/guide/installation.html#explanation-of-different-builds

I encountered this issue previously, this is how I solved it:

Added 'vue': path.resolve('./node_modules/vue/dist/vue.esm-bundler.js') to vite.config.js:

  resolve: {
    alias: {
      '@': './src',
      'vue': path.resolve('./node_modules/vue/dist/vue.esm-bundler.js')
    },
  },

Removed src/vue/App.vue, moved its contents to app.js, like this:

import 'vite/dynamic-import-polyfill';
import '/src/css/app.pcss';
import {createApp} from 'vue';
import CodeHighlight from '/src/vue/CodeHighlight.vue';

// App main
const main = async () => {
  // Create our vue instance
  const app = createApp({
    components: {
      CodeHighlight
    },
    data: () => ({
    }),
    methods: {
    },
    mounted() {
    },
  });

  // Mount the app
  const vm = app.mount('#app');

  return vm;
};

main().then( (vm) => {
  lazyLoading();
});

const lazyLoading = async() => {
  const library = await import ('lazysizes');

  document.addEventListener('lazybeforeunveil', function(e){
    var bg = e.target.getAttribute('data-bg');
    if(bg){
      e.target.style.backgroundImage = 'url(' + bg + ')';
    }
  });
}

The 'vue': path.resolve('./node_modules/vue/dist/vue.esm-bundler.js') kicks in when Vite finds the vue as a dependency during the compilation (in .vue and .js files): the path (path.resolve('./node_modules/vue/dist/vue.esm-bundler.js')) defined in vite.config.js will be used instead of the default.

body.twig:

            {% block mainMenu %}
                {% include '_components/site/navigation/mainMenu.twig' %}
            {% endblock %}

                    {% block mainContent %}{% endblock %}

            {% include '_components/site/sections/footer.twig' %}

I think the crucial part here was to remove the intermediary App.vue back to app.js - after this the behaviour was the same as with the webpack-based buildchain.

Hi @khalwat, how can I use a single vue 3 component (for instance ) in any twig file ? I tried editing the alias but did not work for me. Thank you!

This isn't related to the boilerplate really, but if you want to do that, you'll need to include the Vue template compiler in your build.

Thank you @khalwat, yes I asked just in case.
Leaving this comment for anyone want to do the same thing.
Solved it by updating my:
vite.config.js
...
resolve: {
  alias: {
    '@': './src',
    'vue': path.resolve('./node_modules/vue/dist/vue.esm-bundler.js'),
  },
  preserveSymlinks: true,
},
...

and
appj.js (or app.ts)
import GalleryBlock from '../vue/GalleryBlock.vue';

// App main
const main = async () => {

  // Async load the Vue 3 APIs we need from the Vue ESM
  const { createApp } = await import(/* webpackChunkName: "vue" */ 'vue');

  // Create our vue instance
  const app = createApp({
    components: {
      GalleryBlock,
    },
      data() {
          return {
            myProp: null
          }
      },
      mounted() {
        // global mounted
      },
      methods: {
         // global methods
      },
  });

  // Mount the app
  const root = app.mount("#page-container");

  return root;
};

// Execute async function
main().then( (root) => {
  console.log(root)
});

// // Accept HMR as per: https://vitejs.dev/guide/api-hmr.html
if (import.meta.hot) {
  import.meta.hot.accept(() => {
    console.log("HMR")
  });
}

Perfect!


chore: Plan based access UI

Thanks for submitting a PR! Please check the boxes below:

[x] I have run pre-commit to check linting
[x] I have added information to docs/ if required so people know about the feature!
[x] I have filled in the "Changes" section below?
[x] I have filled in the "How did you test this code" section below?
[x] I have used a Conventional Commit title for this Pull Request

Changes

Adds a consistent approach to plan based access by adding the following components

Plan based banner
Plan based page
Plan based setting
Plan based select option

Adds a central location for paid features, their plan and their description

Adds a consistent UX based on whether the app is running as SaaS or self-hosted

Adds a video preview to some features, accessible via hovering the feature or on the page depending on the UI.

Testing
Testing, as free self hosted or saas view the following features

2FA

Change Requests

Audit Log

Create 2nd project

Flag owners

RBAC

Stale flag detection

Realtime

The blurb for free orgs being limited to 1 project ("View and manage multiple projects in your organisation") is not very informative. I would suggest something like "Free organisations are limited to one Flagsmith project"
The blurb for forcing 2FA is also not informative of the benefits - we could reword to something like "Improve security compliance across your organisation" (sorry I'm terrible at writing this type of copy 🙃)
The blurb for audit logs could also be more value-oriented. For example: "View and search through a history of all changes made in your Flagsmith organisation". Again, there are probably better ways to word this than what I suggested.
👍

On self-hosted, instead of linking from the "🔒 Enterprise" badge to https://www.flagsmith.com/contact-us, have we considered linking to https://www.flagsmith.com/pricing? This would be more in line with SaaS where we link to the billing
It makes sense with the new pricing page yeah

For change requests, we don't need to mention change requests again in the blurb. It could be shortened to "Add a 4-eyes approval mechanism to your feature changes."
👍

This PR is also be a good opportunity to remove the SAML plan and flag check here:

Not sure what you mean, SAML is enterprise?

I'm not a fan of the videos to showcase how these gated features work. I understand the intention to quickly show an overview without linking to the docs page, but they're more effort to maintain (the video content itself and how the videos interact with the page layout, which we're not seeing very often during our testing and day-to-day usage) and cannot easily be linked to. I'd prefer to invest in the docs pages and optionally add a secondary action item like "View docs". I also found the videos that display on hover to be jarring/unexpected.

Although I do understand what you mean RE maintenance, I do think it's hard to envisions how a feature works by reading through docs. Also, something visually more interesting than a "read docs" link might drive engagement a bit more. I'd like to open this up to the team.

Lastly, are there UTM codes we could/should use for any links here to gauge interest on how they're interacted with?

Good point, I'll add.

The code looks good, but the multi-factor authentication feature doesn't show a banner when I'm on a free plan.
Screen.Recording.2024-07-11.at.12.01.46.PM.mov

Actually, I believe it does but this feature acts differently to others in that it's not organisation specific. If any of your orgs are paid it unlocks it.

Thanks for the updates! What I meant about SAML is that we're currently hiding the SAML tab entirely from non-Enterprise orgs here: https://github.com/Flagsmith/flagsmith/blob/40bdd5466f1a2aa838ac0dc86b939d5e04cf6605/frontend/web/components/pages/OrganisationSettingsPage.js#L236-L239
For example, a free self-hosted org sees this:

Instead of hiding the SAML tab, we could always show it to all users, but disable the contents of the SAML page depending on the org's plan, in the same way we're disabling features per plan instead of hiding them in this PR.

Ah good catch thanks

There's a UI bug here - "Admin Settings" is meant to be a heading, but looks like a toggle switch:

This is what is used to look like:

I would also remove the saml_configuration flag check here, and later delete the flag entirely: https://github.com/Flagsmith/flagsmith/pull/4281/files#diff-670d08164663d0cb284ac1560669dc5f1af2a21b11e0e76178ca0186bbf4bf75R237
We are already recommending all of our customers use this UI section in our docs: https://docs.flagsmith.com/system-administration/authentication/SAML/. Adding another step for self-hosting customers (set up a Flagsmith-on-Flagsmith project and enable this flag) is unnecessary and reduces exposure to this functionality for free self-hosted customers.

@rolodato adjusted


Acknowledgement and a problem

Thank for your work. I integrated your model into my project (with slightly changes). My program published at https://github.com/lotress/MoePhoto. Also I'm working on some improvement including this.
The problem about 3 Vimeo90K models is they didn't trained on configuration other than 2x slomo, the result is they are insensitive about the embt input. They output almost the same predictions no matter what embt is. I can only use the GoPro models now, but they have a tiny more illusion than the Vimeo90K models, maybe they are both under trained.

Thanks for your interest and feedback.
The provided IFRNet, IFRNet-L and IFRNet-S trained on Vimeo-90K have the same output frame when changing embt, since the convolution weight which multiple embt is set to 0. As for the model trained on GoPro, it suffers from less training data, whose results are not as well as models trained on Vimeo-90K.
I suggest that you can build a large multi-frame training datasets and train IFRNet referring to the training scripts on GoPro dataset. I will also do this later.
Thanks.


fail to completely checkout test\reference_queries on Windows

There is an error during checkout process on Windows, since git is unable to create following files on Windiws filesystems:
test/reference_queries/op_->.yml
test/reference_queries/op_<.yml
test/reference_queries/op_<=.yml
test/reference_queries/op_>.yml
test/reference_queries/op_>=.yml
test/reference_queries/op_|.yml
test/reference_queries/op_||.yml

Interesting. I'll look into it. Thanks for the PR.


Deprecate runtimebp.numProcesses yaml config

We saw some services confused on what it does, and just set the min
number to some large number and hope that will give them better
concurrency performance.
Since we already don't allow services to customize the formula from yaml
config, it really doesn't make much sense to allow them to customize
min/max from the yaml. Deprecate them and remove them in a future
breaking change.
If a service really need a different GOMAXPROCS from number of
container-aware CPUs, they can call runtime.GOMAXPROCS or
runtimebp.GOMAXPROCS after baseplate.New.
Also improve the log from runtimebp.InitFromConfig.

Is it possible for this to break anyone?

that depends on how to define "break".
if someone was using
runtime:
  numProcesses:
    min: 48

to get GOMAXPROCS to 48, this change will revert them back to num cpu rounding up (likely a small number ~2), and it will have performance impacts.
it's... grey area?

searching for "numProcesses file:yaml" in internal sourcegraph only found 2 results, none with min set. not sure how much you trust sourcegraph's search :) (the one case I know someone uses  min: 48 I think they already fixed it).

💇 I believe now is the time to revisit this.
I believe previously the only use case of setting those are setting the min to a large number to essentially "pin" GOMAXPROCS to the same large number, which should no longer be needed after 7895979 & 6ddacb1, as when there's no cpu limit set we just fallback to physical number of cpus instead of cpu request. (cc @konradreiche as your team seems to be the only team doing that)


Fixed issue #6717

I have updated mypy.ini inside dev_tools and also made modifications in all init.py files to match
from foo import bar as bar

I have made a push now, please review the pull request @pavoljuhas

@ashiq-firoz - I have updated your PR so that the no_implicit_reexport mypy rule is checked only for the cirq modules and not for imported dependencies.  I have also cleaned up unnecessary re-exports of sub-modules, which are automatically added to their parent namespace.  PTAL and let me know if you have comments / suggestions.
If this passes the CI, I feel it should be good to go.


Update dependency gardener/external-dns-management to v0.18.6 (main)

This PR contains the following updates:

Package
Update
Change

gardener/external-dns-management
patch
v0.18.5 -> v0.18.6

Release Notes

gardener/external-dns-management (gardener/external-dns-management)
v0.18.6
Compare Source
[gardener/external-dns-management]
🏃 Others

[USER] Support Istio apiVersion networking.istio.io/v1. by @MartinWeindel [#369]
[OPERATOR] Update golang from 1.22.2 to 1.22.3 by @MartinWeindel [#370]

Docker Images

dns-controller-manager: europe-docker.pkg.dev/gardener-project/releases/dns-controller-manager:v0.18.6

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.


✨ Extract base64 from Google thumbnail

Fixed problem

Google base64 thumbnail migration
When user access thumbnail properties, it will return base64 string instead url
Google remove reverse image by url
Bypassing this by downloading image and pass it like normal file

Unfixed problem??

Google has rate limit the request from user. You need delay about 10s or less than that? idk. But that will affect when using bot that have multiple request at same time. I've read it somewhere, that by changing User Agent randomly or closing the session and create new session will fix it, I haven't do research about it.

I tried to optimize some of the logic in the code you submitted , and fix an issue that would cause an exception to be thrown when the input parameter was a URL instead of a file.
Please help me check if there are still any problems:
https://github.com/kitUIN/PicImageSearch/commit/b4e3bc448ca36f943ad090bf2e98dd3949ff9ff1
If there are no issues, I'll make a new release.


403 on firebase-tictactoe example when trying first move

In which file did you encounter the issue?
example project at /appengine/firebase-tictactoe
Did you change the file? If so, how?
I changed firebase_config.jspf to the code from the firebase console, as instructed.
Describe the issue
In the example /appengine/firebase-tictactoe, I cannot play a game, because when I click on any of the starting player's empty squares, the request
POST http://localhost:8080/move?gameKey=a3620663-5581-4ec5-8b63-0d955e458e0f
receives a
403 (Forbidden)
result:
send @ jquery.min.js:4
ajax @ jquery.min.js:4
r.(anonymous function) @ jquery.min.js:4
moveInSquare @ main.js:92
dispatch @ jquery.min.js:3
q.handle @ jquery.min.js:3
jquery.min.js:4

I can see some data for players in the firebase console.
My development machine is on Ubuntu-16.04.
I managed to get everything set up and can run "mvn appengine:run". All the tests pass, and the server starts up.
Upon calling localhost:8080, initially I got some errors about missing WEB-INF/view/firebase_config.jspf, which I resolved by manually copying that file to my target/appengine-firebase-tictactoe-1.0-SNAPSHOT/WEB-INF/view folder (from the one in src/). That is probably a separate issue, currently not my concern since I have the workaround.
``java.lang.RuntimeException: java.io.FileNotFoundException: WEB-INF/view/firebase_config.jspf (No such file or directory) 	at com.example.appengine.firetactoe.FirebaseChannel.<init>(FirebaseChannel.java:98) 	at com.example.appengine.firetactoe.FirebaseChannel.getInstance(FirebaseChannel.java:72) 	at com.example.appengine.firetactoe.Game.sendUpdateToUser(Game.java:124) 	at com.example.appengine.firetactoe.Game.sendUpdateToClients(Game.java:130) 	at com.example.appengine.firetactoe.TicTacToeServlet.doGet(TicTacToeServlet.java:87) 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
I also see some warnings about directories:
[INFO] GCLOUD: WARNING: Your working directory, (/home/nczempin/git/java-docs-samples/appengine/firebase-tictactoe) is not equal to your  [INFO] GCLOUD: web application root (/home/nczempin/git/java-docs-samples/appengine/firebase-tictactoe/target/appengine-firebase-tictactoe-1.0-SNAPSHOT) [INFO] GCLOUD: You will not be able to access files from your working directory on the production server.
I am not sure if these are relevant to the issue at hand.

I was able to reproduce this on a Windows 10 machine.
When using the GCloud shell there, the had to be moved to a different directory, to WEB-INF/view directly under the one that has the pom.xml (firebase-tictactoe)

Notice: this issue has been closed because it has been inactive for 732 days. You may reopen this issue if it has been closed in error.


⚠ Bofrost.de has degraded performance

In 79c4027, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1712 ms

Resolved: Bofrost.de performance has improved in 8cedb9b after 31 minutes.


docs: Property conformance doc typo fix

The property names of TypeConformanceLevel are NONE, RECURSIVE and ROOT_ONLY, the docstring said ROOT instead of ROOT_ONLY. Changing docstring.

:books: Documentation preview :books:: https://meltano-sdk--1446.org.readthedocs.build/en/1446/

Thanks for the PR @radbrt!


Use "go install" rather than "go get"

As of go 1.18, "go get" no longer installs.
(Fixes #29)

/retest

/close


Save to firebase

Fixes Issue
Just noticed that after the user loginn, the data is not saved to firebase. FIXED
Closes #issue_number

Changes proposed

Screenshots

Checklist

[ ] You've linked this PR to the correct issue.
[ ] You have checked that the code is working correctly.
[ ] You ⭐ the repository!

Note to reviewers

@Spyware007


Converted a couple of forgotten tabs to spaces

This expands on https://github.com/Laravel-Backpack/Generators/pull/11

Thank you, merged!


Downstream effects of fixing modifications

Probably we will have to correct the submitted modified proteins (active forms).

Hopefully these won't be affected. They  are mostly for very well studied genes. I don't think any of these have had structure alterations that would affect the sequence (I might be wrong)


Out-of-the-box camera screen

Proposal
It would be nice if this plugin had a camera screen that could be used out-of-the-box, instead of having to create your own.

CamerAwesome 1.0.0 is here  #150
The 1.0.0 version of CamerAwesome let you use a complete UI with 4 lines of code.
Else you can customize it as you want.
Let us know what you think 🙏🏻


Inconsistent service name manipulation between broker and register-broker errand

In the broker configuration, kibosh replaces _ with - here: https://github.com/cf-platform-eng/kibosh/blob/967f29a762541101c282c7b1b0e5236e8995b097/config/config.go#L87
In the broker-register errand, the service name is used without this replacement here: https://github.com/cf-platform-eng/kibosh/blob/967f29a762541101c282c7b1b0e5236e8995b097/bosh-release/jobs/register-broker/templates/errand.sh.erb#L57
This causes the errand to fail when the service name contains _.
Perhaps simplest would be validate the service name against a regex, and blow up if it contains _s (or other special characters). Alternatively, manipulate the service name the register-broker errand as well, but that seems like unnecessary complexity...solve things in data when possible, not code.

https://github.com/cf-platform-eng/tile-generator/commit/a1817cd9029ef021ff1881a5f750adf0e5ba38b2
This should fix it if not please let me know

That fixes it when using tile-generator, but outside of tile-generator if the serivice_name contains a _ it is still an issue.
We had a chat that yielded two possible solutions:

Kibosh broker rejects _ in service_name:
Pros: keeps code simple; e.g., a single regex check at startup.
Cons: defers detection until bosh deploy time. Would require rejection or sanitization in tile-generator as well (otherwise tile developers would have to wait a full tile build/upload/configure/deploy cycle to detect a silly naming format issue).

Kibosh broker and register-broker errand sanitize service_name:
Pros: users (including tile-generator) don't have to worry about naming format/restrictions.
Cons: More complex code; need for synchronization between broker job and register-broker errand.

Given the pain we've seen around tile-gen and auto-swapping - / _, my vote is to fail fast and restrict name (1). This also makes debugging easier, as a final consumer wouldn't have to understand we're doing transformations.

That works for me. @keshto how about instead of converting _ to - in tile-generator to avoid the pain, we just have the same restriction on the name of packages with type: kibosh?

Tile-gen has a restriction that it only allows _s because transforming is not deterministic in properties. My suggestion is to change the errand to do the transformation and be in sync with what the kibosh binary is doing. This would need to be documented so that consumers wouldn't get confused about it.

Just for added context, _s are not allowed in the service name in the catalog endpoint of the OSBAPI spec. (I had previously assumed it was further downstream, in the k8s deployment, where this was an issue, but upon further inspection it looks like the service name is not used in that context.)

After some out-of-band chat, it sounds like we're landing on the errand job doing the _ to - conversion as well.

No longer relevant.


Completions support for lang server

This is the third PR porting work from the lang-server private branch -https://github.com/mousetraps/tolerant-php-parser/tree/lang-server - and includes the commits related to completions support cherry-picked from that branch plus my fixes for getNodeAtPosition and tests.

@roblourens,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


Build fails due to Java API incompatibility w.r.t. member field com.sun.tools.javac.parser.Tokens$Comment$CommentStyle JAVADOC

Looking at the README.md, I found it confusing how multiple Java versions are mentioned there.
Please point out that, non-intuitively, really all of Java 8, 11, 17, and 21 need to be installed, not just one of choice.
So I installed all four Azul Zulu Java amd64 JDKs from, e.g., https://www.azul.com/downloads/?version=java-8-lts&os=macos&architecture=arm-64-bit&package=jdk#zulu
set up all four environment variables, and executed
gradle -x test clean jar

which gave me:
> Configure project :
Environment setup:
Looking for JDK ENV 'BC_JDK8' found  /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
Looking for JDK ENV 'BC_JDK11' found  /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
Looking for JDK ENV 'BC_JDK17' found  /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
Looking for JDK ENV 'BC_JDK21' found  /Library/Java/JavaVirtualMachines/zulu-21.jdk/Contents/Home

> Task :core:compileJava
warning: [options] source value 8 is obsolete and will be removed in a future release
warning: [options] target value 8 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
/proj/bc-java/core/src/main/java/org/bouncycastle/crypto/CryptoServicesRegistrar.java:4: warning: [removal] AccessController in java.security has been deprecated and marked for removal
import java.security.AccessController;
                    ^
...
error: An unhandled exception was thrown by the Error Prone static analysis plugin.
     Please report this at https://github.com/google/error-prone/issues/new and include the following:

     error-prone version: 2.24.1
     BugPattern: (see stack trace)
     Stack Trace:
     java.lang.NoSuchFieldError: Class com.sun.tools.javac.parser.Tokens$Comment$CommentStyle does not have member field 'com.sun.tools.javac.parser.Tokens$Comment$CommentStyle JAVADOC'
        at com.google.errorprone.bugpatterns.javadoc.NotJavadoc.matchCompilationUnit(NotJavadoc.java:65)
        at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:449)
...
        at java.base/java.lang.Thread.run(Thread.java:1575)
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
26 warnings

> Task :core:compileJava FAILED
...

You can remove the use of the error-prone plugin.

You can remove the use of the error-prone plugin.

Thanks for your response - yet I don't now how to do that, while fortunately it seems no more needed.
I'm very unexperienced with BC and current Java tooling.
Nice that the README meanwhile says that setting BC_JDK8, BC_JDK11, and BC_JDK17 is optional,
and both gradlew clean build and gradle -x test clean jar no more insist in using them.
So I unset all BC_JDK8, BC_JDK11, BC_JDK17, and BC_JDK21 and use just
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-21.jdk/Contents/Home

Now
 gradle -x test clean jar

runs successfully (with just many warnings).
Yet using ./gradlew clean build I now get several warnings and apparently an architecture mismatch error:
* What went wrong:
Execution failed for task ':core:test'.
> Error while evaluating property 'javaLauncher' of task ':core:test'.
   > Failed to calculate the value of task ':core:test' property 'javaLauncher'.
      > Cannot find a Java installation on your machine matching this tasks requirements: {languageVersion=8, vendor=any, implementation=vendor-specific} for MAC_OS on aarch64.
         > No locally installed toolchains match and toolchain auto-provisioning is not enabled.


Is the Netflix noisy neighbor collection relevant to this project?

@amosomokpo found the Netflix blog post "Noisy Neighbor Detection with eBPF" By Jose Fernandez, Sebastien Dabdoub, Jason Koch, Artem Tkachuk.
I think it would be good to know:

Does that system measure memory neighbor? If not, what does it measure?
Which of their techniques are applicable to the memory-collector?
What mitigation does it envision: automatic / manual, is there a runback?

Enjoyed reading that blog post!
Some key points

Nice concise definition of noisy neighbor: a "noisy neighbor" refers to a container or system service that heavily utilizes the server's resources, causing performance degradation in adjacent containers.
The blog focuses on CPU utilization noisy neighbor (where containers compete for the CPU scheduler to grant them runtime): We usually focus on CPU utilization because it is our workloads’ most frequent source of noisy neighbor issues.
System measures two key metrics:

runq.latency: the time in runnable state per container, measured every time the container needs to be runnable
sched.switch.out: the number of times the container was pre-empted, with extra dimension of "who caused the pre-emption" (the next task).

When p99 of runq.latency is high together with high schedule.switch.out, they consider it a noisy neighbor situation.
Collector is written in Go.
Had to sample runq.latency due to high CPU in user space processing
Developed a tool bpftop to measure eBPF overhead, and were able to optimize the map type and way memory is accessed for better performance.
Did not see a mention of OSS release for the scheduling collector, though bpftop is Apache-2.0 (thank you Netflix and the contributors!)

Summary
Great writeup, and awesome work optimizing the overheads! They measured a different noisy neighbor (scheduling). I'd love at some point to compare how big are the effects of memory noisy neighbor vs the blog's scheduling noisy neighbor.
cc blog authors @jfernandez, @sdab, @jasonk000, @artem-tkachuk


WPF Implicit Client url length

We are facing a problem with the "WpfClient implicit sample". When the final redirection, that includes the tokens in an "oob://..." uri, exceeds some lenght the webbrowser control refuses to fire the "Navigating" event and thus the process does not complete. The login window shows the error message "Some content or files on this webpage require a program that you don't have installed".
This seems to be a bug in the WPF WebBrowser control, but renders the technique shown in the sample unusable in real world application.
Were you aware of this problem? Do you know how it can be avoided?
Thank you.

Try to use reference tokens for API calls and see if the URL is short enough.

The WPF browser control uses IE - IE has a limitatio of 2048 bytes.
https://stackoverflow.com/questions/812925/what-is-the-maximum-possible-length-of-a-query-string
As Brock said - either use reference tokens to keep the size small (or less claims) - or use something like https://github.com/cefsharp/CefSharp (chrome browser control).

As a temporary workaround we changed the RedirectUrl from oob://localhost/... to http://oob/...
The size limit problem does not appear using this protocol in the url.
I will try the form_post solution and let you know.

response_mode=form_post works just fine. Just add additionalValues: new Dictionary<string,string> { {"response_mode", "form_post"} } parameter to the OAuth2Client.CreateAuthorizeUrl call.
In this case it is not possible to create AuthorizeResponse object inside webView_Navigating. Instead you should grab form data from the Html document (using dynamics):
  var forms = ((WebBrowser)sender).Document).IHTMLDocument2_forms as IEnumerable;
  var form = forms.OfType<dynamic>().First() as IEnumerable;
  var values = form.OfType<dynamic>().ToDictionary(x => (string) x.name, x => (string) x.value);

https://github.com/IdentityServer/IdentityServer3.Samples/blob/dev/source%2FClients%2FWpfClient%2FLoginWebView.xaml.cs#L48


Fix deployment guide typos re: image name consistency.

Signed-off-by: Shawn Falkner-Horine<EMAIL_ADDRESS>

Note: This replaces PR #386 for two reasons:

This commit is signed and pushed to a branch, rather than auto-generated from GitHub edit GUI.
Another image name inconsistency was found, this fixes both typos.


Simplify Dakota import

To import the Dakota class, it's now
from csdms.dakota import Dakota

instead of
from csdms.dakota.core import Dakota

Coverage remained the same at 91.195% when pulling 32e21cb443348fee41d3112709a28fe0e9e45b8b on mdpiper/simplify-Dakota-import into f00e374ac48299c86cffea4a0fadf0ebfe6834a4 on master.


Browser tool process doesn't close after workflow runs

The browser tool does not close when a workflow finishes running because it is designed to stay running until the calling process exits. The calling process in this case is Otto Server which is a daemon.
We need to adjust the behavior to handle the following usecases:

Multiple workflows need to be able to use the browser tool concurrently, and independently. Meaning they should not share browser state/session/logins, etc.
A single workflow should use the same browser session throughout the run.
At the end of a workflow invocation the browser tool should shut down.

If workspaces are preserved, can this be resumed? Is the workspace then tied to the thread? This might be ok.

@cloudnautique The Browser tool is also a daemon. It does open browser processes and manage session data separately on a per-thread basis. It also terminates them after a fixed period of inactivity for the respective thread (I think ~10 minutes since the last request). Is this sufficient to meet your requirements?


[main] Upgrade to latest dependencies

Cron -knative-prow-robot
/cc knative-sandbox/source-wg-leads
/assign knative-sandbox/source-wg-leads
Produced by: knative-sandbox/knobots/actions/update-deps
Details:

/approve
/lgtm


Add psq constructor

This PR adds a new constructor, PhaseEquil_psq, and tests it for the newly added entropy profiles.
In addition, this PR add air_density_equil, which seems to be important for the consistency of PhaseEquil_psq and may be useful elsewhere.

Looks ok to me. But why are we building all this machinery for entropy, which we will not need in the end? I'm concerned it creates code bloat without a clear purpose in the end. (If it's just for testing the parameterization for now, we can leave it in the parameterization rather than adding to Thermodynamics.)

Fair point. We can certainly leave this in TC.jl for now if you'd prefer.

Looks ok to me. But why are we building all this machinery for entropy, which we will not need in the end? I'm concerned it creates code bloat without a clear purpose in the end. (If it's just for testing the parameterization for now, we can leave it in the parameterization rather than adding to Thermodynamics.)

Fair point. We can certainly leave this in TC.jl for now if you'd prefer. I don’t have a strong preference on where the code lives :)

Let's remove the entropy-based reference states. They are a holdover from PyCLES's anelastic approximations, but they are not necessary for the single-column model. Let's modify the test cases that use these reference states to simpler reference states.

Let's remove the entropy-based reference states. They are a holdover from PyCLES's anelastic approximations, but they are not necessary for the single-column model. Let's modify the test cases that use these reference states to simpler reference states.

I had tried using the existing thermo methods (here), but several cases had issues (and Soares was crashing) as a result of the different reference state. You can see the results by clicking into the buildkite link, then clicking on Artifacts for each case. The constant entropy warnings were printed in a lot of those cases, and so @yairchn and I thought that a constant-entropy constructor might be necessary.
The attempt to use a constant entropy reference state is yielding a stable Soares, albeit TRMM still has some undesirable changes.
I'm open to any ideas on how to move forward.

Let's remove the entropy-based reference states. They are a holdover from PyCLES's anelastic approximations, but they are not necessary for the single-column model. Let's modify the test cases that use these reference states to simpler reference states.

I had tried using the existing thermo methods (here), but several cases had issues (and Soares was crashing) as a result of the different reference state. You can see the results by clicking into the buildkite link, then clicking on Artifacts for each case. The constant entropy warnings were printed in a lot of those cases, and so @yairchn and I thought that a constant-entropy constructor might be necessary.
The attempt to use a constant entropy reference state is yielding a stable Soares, albeit TRMM still has some undesirable changes.
I'm open to any ideas on how to move forward.

Pease show the results tomorrow and let's talk about it then. The reference state should not be crucial, and if it is, it points to other problems.

Superseded by #52.


Skip non-mapped typed properties with default values when using Proxies

Q
A

Type
bug

BC Break
yes

Fixed issues
#2349

Summary
Taking a look at #2349 seems like the problem is that the proxy is not initialized when it's managed.
~Looking at the code, if the document is an instance of GhostObjectInterface and it not initialized, it calls to $document->setProxyInitializer(null); which removes the initialization.~
To be honest I'm not sure if it's the right fix, maybe that code was there for some reason.
The test is from https://github.com/andythorne/doctrine-odm-example-error
Update: I was taking a look again to this issue, apparently one way to solve it is to skip those properties when using a proxy.

I was taking a look again at this issue and one possible solution would be to skip these properties.
I've skipped the typed non-mapped properties that have a default value. What about this? maybe is there something else to take into account? 🤔

@malarzm any chance that this might be merged? We are experiencing this issue with Doctrine 2.3 and were hoping to see it solved when we upgrade to 2.4

2.4 is already released. I'll take a look at this after the weekend for inclusion in a 2.5 patch release.

I made some adjustments to the tests to no longer rely on the absence of an error (and instead running an assertion), as well as applying the logic to all unmapped properties, not only those with default values.


Tweak PostJobPrio strategy

Watching the interaction between WMAgent schedds and the negotiator, I think we need to tweak the PostJobPrio strategy
We should set:
PostJobPrio1 = - $(workflow id)
PostJobPrio2 =  -(MaxWallTimeMins*100) - (RequestDisk/1000000)

The first can be done by the agent (the workflow ID is currently put into PostJobPrio2).  However, PostJobPrio2 should be left unset by the agent -- the schedd can fill it in.
Why change?
Basically, we sometimes get a job groups of 100 jobs along the line of:
Job 1: MaxWallTimeMins = 200
Job 2: MaxWallTimeMins = 300
Job 3: MaxWallTimeMins = 200
Job 4: MaxWallTimeMins = 300
....

So, even though there are really two different types of jobs - those which need 200 minutes and those which need 300 minutes - the current ordering causes the negotiator to consider all 100 jobs individually.
The changed ordering would sort the shortest jobs first (within the same workflow and priority) in order to get them in larger groups.

The reason why this is biting us more than before is the current combination of lots of workflows plus the re-reco.  It's been just enough to push over threshold.
The re-reco is mostly to blame here: the GEN-SIM jobs produce a constant number of events per lumi, meaning almost all jobs in a workflow have an identical MaxWallTimeMins estimate.  The re-reco is producing lots of variation in estimated runtimes at the individual job level

So currently post priority 1 is how many sites the job can run at and 2 is (as you say) the taskID. I imagine the 2nd one is monotonically increasing per agent, but meaningless between agents. So really this is just about getting things grouped together, not really prioritizing them?
Maybe we should consider making the run times discreet along some logarithmic type scale since I gather this suggestion is just nibbling around the edges of the real problem.

Indeed, this is for sorting within a schedd.  If the schedd can sort jobs into identical groups, it can present the job group as a single entity to the negotiator.
The schedd does discretize the runtimes - however, the problem is jobs in the same group having different runtimes.  So it's a bit of a separate problem.  This:
Job 1: MaxWallTimeMins = 100
Job 2: MaxWallTimeMins = 1000
Job 3: MaxWallTimeMins = 100
Job 4: MaxWallTimeMins = 1000

is twice as much work as this:
Job 1: MaxWallTimeMins = 100
Job 2: MaxWallTimeMins = 100
Job 3: MaxWallTimeMins = 1000
Job 4: MaxWallTimeMins = 1000

NOTE: I have long-term dreams of encoding a consistent taskID into the JobPrio attribute -- that would allow us to process the workflows in FIFO order within the same priority level.  We'll need some work on the HTCondor side to improve negotiation speed first.

Original discussion is in #5688 where @bbockelm suggested the current post-prio1. I'm inclined to more or less keep that since it's worked so far. Maybe -len(sites)*taskID for PP1 and Brian's suggestion for PP2?

Looking at the current set of task IDs, how about something like:
PostJobPrio1 = -len(sites)*1000000 - taskID

That basically keeps the current scheme plus improves the grouping.


Bring back old readme, package.json etc.

Reverts the readme, package.json and index.html back to before the merge of #2545. This will make the copyright and package name once again right.

Also added a paragraph to the readme that explains the API modes.
Added yWorks to the copyright notice.

Regarding the version in the package,json: before publishing a new release this should probably be set to 1.6.0 or even 2.0.0. We might also set it to the same version as our fork version is currently.

do you remember, what you did to overcome the IE11 problems.

It says "This branch is out-of-date with the base branch". Could you fix it?
@yGuy
@HackbrettXXX

The error is different this time. The tests are green but then there is this error:
05 02 2020 17:41:24.138:ERROR [SaucelabsLauncher]: Could not quit the Saucelabs selenium connection. Failure message:
05 02 2020 17:41:24.138:ERROR [SaucelabsLauncher]: { UnsupportedOperationError: quit: ERROR The test with session id e7fec6fd5c0442449d5a3f650d5f5162 has already finished, and can't receive further commands.
You can learn more at https://app.saucelabs.com/tests/e7fec6fd5c0442449d5a3f650d5f5162
For help, please check https://wiki.saucelabs.com/display/DOCS/Common+Error+Messages
    at parseHttpResponse (/home/travis/build/MrRio/jsPDF/node_modules/selenium-webdriver/lib/http.js:578:11)
    at Executor.execute (/home/travis/build/MrRio/jsPDF/node_modules/selenium-webdriver/lib/http.js:489:26)
    at process._tickCallback (internal/process/next_tick.js:68:7) name: 'UnsupportedOperationError', remoteStacktrace: '' }
error Command failed with exit code 1.

Hey, let me know if you need anything on this.

Done with #2661


Fix Calendar displays incorrectly when scrolling horizontally

bug fix: #192
_startWeekday, _endWeekday need refresh before pageControl itemBuild

@ dilongl Thank you so much sending issue along with pull request 🎉

I'll release current update to 1.4.10.  Could you also check weekBuilder?


Relationship between SDL_mixer and SDL_sound is unclear

SDL_mixer and @icculus's SDL_sound seem to have nontrivial overlap. I can't find any documentation on what the relationship between the two projects is, and how one would pick between them for a given use case. Is there any such documentation that I've missed? Best I can find is a comment in #95 from @slouken indicating that sometime in 2011 there was an intent to merge the two projects; I suspect a lot has happened since then.

SDL_sound is designed to load audio files, essentially SDL_image for audio. SDL_mixer does that and also allows mixing with various effects. We were intending to have SDL_mixer use SDL_sound for audio loading at one point, but I think it's a probably a moot point these days.


Implement MetricLegendCategorical component

See Figma - Metric Legend Categorical

Recommendations for components

https://github.com/covid-projections/act-now-packages/pull/131/


add script decompress

added a function to decompress CScript into full stream of opcodes
following scheme in bitcoin/src/compressor.cpp

thanks - i've addressed most - one thing remaining - ldb stores the public key in compressed form (32 bytes) on chain representation is as 65 bytes uncompressed
I couldn't find the equivalent in the python-ECDSA library to do that decompression (i.e. the equivalent of serialize() here: https://github.com/ludbb/secp256k1-py/blob/master/secp256k1/init.py#L202)
I looked through your utils and see you ported the compress method from this pull request over:
https://github.com/warner/python-ecdsa/pull/54/files
shall I do the same for decompress?

Sure, you're more thank welcome to implement it.


khoj: 0.2.5 -> 0.2.6

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for khoj is: Natural Language Search Assistant for your Org-Mode and Markdown notes, Beancount transactions and Photos
meta.homepage for khoj is: https://github.com/debanjum/khoj
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.2.6 with grep in /nix/store/2jw65a26466ylb876i2whfn3pc552s7j-khoj-0.2.6
found 0.2.6 in filename of file in /nix/store/2jw65a26466ylb876i2whfn3pc552s7j-khoj-0.2.6

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
khoj

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/2jw65a26466ylb876i2whfn3pc552s7j-khoj-0.2.6 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A khoj https://github.com/r-ryantm/nixpkgs/archive/c5ff9f89c6cf50ccf4f08113585709a522b14eea.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/2jw65a26466ylb876i2whfn3pc552s7j-khoj-0.2.6
ls -la /nix/store/2jw65a26466ylb876i2whfn3pc552s7j-khoj-0.2.6/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

khoj

Maintainer pings
cc @dit7ya for testing.

Result of nixpkgs-review pr 216524 run on aarch64-darwin 1

1 package marked as broken and skipped:

khoj

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

1 package built:

khoj


Trying to use Ray Casting with lumaSplats but the Ray does not hit anything

I am trying to get the 3D position of a mouse click inside of the LumaSplats mesh.
This is part of the code that I have written:
  function getClicked3DPoint(evt: any) {
    // evt.preventDefault();
    const canvasPosition = canvasRef.current?.getBoundingClientRect();
    console.log('WTF', scene.children)

    mousePosition.x = ((evt.clientX - canvasPosition!.left) / canvasPosition!.width) * 2 - 1;
    mousePosition.y = -((evt.clientY - canvasPosition!.top) / canvasPosition!.height) * 2 + 1;

    rayCaster.setFromCamera(mousePosition, camera); //cameraRef.current!);
    let intersects = rayCaster.intersectObjects(scene.children, true);

    if (intersects.length > 0)
        console.log(intersects[0].point)
        return intersects[0].point;
  }

      <Canvas
        ref={canvasRef}
        frameloop={frameLoop}
        gl={{
          antialias: false,
        }}
        camera={{
          position: [0, 0, 0],
        }}
      >
          <group
            dispose={null}>
            <lumaSplats
              onPointerMissed={() => console.log("you clicked, but hit nothing at all")}
              onClick={(e) => {
                console.log(e.point) // this is the coordinates for the event, eg. mouse click
                getClicked3DPoint(e)
              }}
              onLoad={() => {
                setIsLoading(false);

                if (camera360Ref.current) {
                  camera360Ref.current.object.position.x = -5;
                  camera360Ref.current.object.position.y = 0.4;
                  camera360Ref.current.object.position.z = 7;
                }
              }}
              loadingAnimationEnabled={true}
              semanticsMask={LumaSplatsSemantics.ALL}
              // onBeforeRender={}
              enableThreeShaderIntegration={false}
              particleRevealEnabled={true}
              source={src}
              position={[0, 0, 0]}
              scale={5}
              rotation={[0, 0, 0]}
            />

            <CustomLine start={[0,0,0]} end={[1,1,0]} />
          </group>
     </Canvas>

I have created the following luma capture: https://lumalabs.ai/capture/71f64429-3872-417a-a67c-a8b6c6ab16d3
As you can see it is a capture of a normal room. What I want to achieve is to draw lines on the splat. For this, I want to click on the canvas, this will cast a ray to the first intersecting part of the splat. I will take the coordinates of this intersection and then by clicking on another part of the splat I want to draw a line between these two points.
However, most of the times the event on onPointerMissed is being activated and thus no intersecting point is found. Do you have any idea why this is happening and what I can do in order to fix this?

Try intersecting the point cloud itself rather than the splat and see how that works.

Try intersecting the point cloud itself rather than the splat and see how that works.

Hi @abrahamezzeddine, How can I get the point cloud?

Each Gaussian splat file contains XYZ coordinates for the center coordinates of the splat. Essentially, a splat file is a point cloud where each point is stretched in different directions.
You do not need to render the point cloud, it is enough that you try to “hit” the XYZ.

Yes, I am indeed trying to hit the XYZ coordinates of a point using ray-casting
This is what this function is supposed to do:
`  function getClicked3DPoint(evt: any) {
// evt.preventDefault();
const canvasPosition = canvasRef.current?.getBoundingClientRect();
console.log('WTF', scene.children)
mousePosition.x = ((evt.clientX - canvasPosition!.left) / canvasPosition!.width) * 2 - 1;
mousePosition.y = -((evt.clientY - canvasPosition!.top) / canvasPosition!.height) * 2 + 1;

rayCaster.setFromCamera(mousePosition, camera); //cameraRef.current!);
let intersects = rayCaster.intersectObjects(scene.children, true);

if (intersects.length > 0)
    console.log(intersects[0].point)
    return intersects[0].point;

}`
However, most of the time it doesn't hit anything and sometimes it hits something that appears to be in the centre of the room in the air. I thought that maybe Luma's software is suitable only for objects and tries to represent the room as an object in the centre, not as an open space.
Do you have any suggestions? Does the function look correct to you?

I do not know exactly how lunas software works, I just happened to pass by here.
I tried this with Mkkellogs splat viewer. I first tried to intersect the splat itself which did not work (since splats are “invisible” in three.js when raycasting) and then I had to try with the xyz points which did not work so good.
I had to increase the size of the point, xyz only, in order to be able to raytrace the points. I do not have that code at hand at the moment however.
It can be that your points are very very small that you will not able to hit them. That is why I suggested you try to increase the point size, or try to load the point cloud concurrently, only fetching the xyz since that is what you need.


GetAllStates relies on the the unreliable state string instead of the history

Hit as part of #376 .
+@lanctot +@michalsustr +@finbarrtimbers
The implementation of GetAllStates expects that state->ToString() be unique for states, which is not true. For example, in the Battleship game, ToString() returns an ascii art representation of the player boards. In Go, my understanding is that ToString() renders the Go board (edit see also this discussion). Neither of these mappings are injective: different orders of moves can result in the same boards, and therefore the same ToString().
https://github.com/deepmind/open_spiel/blob/de2c9ef57038829c2709becb0104e3b2d76725cc/open_spiel/algorithms/get_all_states.cc#L47-L53
This results in the method failing to explore the full game tree. Since the method is performing a DFS on a tree, it is impossible to hit the same state twice, so I am not sure what the comment add only if not already present was supposed to catch. I suggest the following:

If we want to keep the map, we should have histories as key.
There is no need to keep an expensive map: a vector of (unique) pointers to states would be more efficient and simplify the code even further. I'm not sure how breaking a change that would be though?

That depends how you define state. :)
The ToString representation is actually unique across states. If the order of moves is important for determining the state, it should also be in the ToString.
I don't see how the quoted code is problematic? The traversal of the game tree still happens further below it.
If you want a similar method bases histories, we can have another one called GetAllHistories but I think in your case of battleship we should just add all the shot info to the ToString (see e.g. GoofspielState::ToString).
The ToString needs to be the complete description of the state. Having a display of the board is good: please keep it! Just add the other information necessary to describe the full state.

I do think that adding a GetAllHistories that uses the optimization you describe would be great, and changing count_all_states to use it would be a good change.

However, I think Marc's correct.

The ToString representation is actually unique across states. If the order of moves is important for determining the state, it should also be in the ToString.

OK that was also my worry when writing the generator. However, because of this discussion I ended up throwing away ToPrettyString and replacing ToString with that implementation.
Does this mean that I should go back to having two methods? Also, @michalsustr  was suggesting that in Go ToString only prints the board?

If you want a similar method based on histories, we can have another one called GetAllHistories but I think in your case of battleship we should just add all the shot info to the ToString (see e.g. GoofspielState::ToString).

I think this is problematic for the code that uses GetAllStates to count then number of infostates etc (for example inside of open_spiel/examples).

I say just have it all in ToString.
Why do you think it would cause a problem counting info states? The recursion doesn't stop just because there's a duplicate; it just does not add it to the hash set.

Why do you think it would cause a problem counting info states? The recursion doesn't stop just because there's a duplicate; it just does not add it to the hash set.

You are right, this does not actually stop iterating, my bad. But because of the fact that keys collide, the map contains less states than it should. Entire infosets get skipped. I hit this while writing the test that was checking the number of infosets & sequences of the generated Battleship games. Because of the key collisions we end up significantly underreporting the number of infosets and sequences.

Also, I took a quick look at the implementation of Go, and it seems that indeed ToString only prints the board like Michal  was saying.
https://github.com/deepmind/open_spiel/blob/de2c9ef57038829c2709becb0104e3b2d76725cc/open_spiel/games/go.cc#L147-L153

I can see three ways forward:

Reverting the implementation of ToString() for Battleship to what it was before basically, and opening an issue for other games (like Go, it seems) that might not be conforming to the fact that ToString be a bijection between strings and states. In the meantime I can also add a noisy check that the call to map.insert results in a new entry as it should do. If we detect a collision we can abort with a SpielFatalError.
Changing the implementation of GetAllStates so that it returns a map history -> State*
Have GetAllStates return a vector of pointers instead of a map, bypassing the ToState vs History decision altogether

We can't change GetAllStates at this point, too much code depends on it and it'd be a severely breaking change.
It will work perfectly with a fixed ToString. Why is that not your preference?
(Sorry if I'm missing something)

Most of the perfect information games have the current board state as the ToString, and it makes sense there because they are uniquely identified by their board representations (the history is irrelevant,  due to i.e. the Markov property). Those are used as keys for the value iteration methods, where you definitely don't want to use histories.
It's only important for the ToString to have this additional information in the imperfect information games due to the use cases. Changing to ToString in Battleship to contain both the pretty board and all other information seems like the simplest solution to this and makes it more consistent with the other games.

Most of the perfect information games have the current board state as the ToString, and it makes sense there because they are uniquely identified by their board representations (the history is irrelevant, due to i.e. the Markov property). Those are used as keys for the value iteration methods, where you definitely don't want to use histories.

@lanctot Ah, this is very useful. I think I finally understand. So State is not the same as "node in the game tree" in the OpenSpiel model. I had completely missed that, and my worry was that there were games not conforming to the standard that "ToString() fully capture the state", so that if we went with the "easy solution", we would still have wrong results when using GetAllStates on games like Go.
Instead, it turns out that it was intended for ToString() to not uniquely represent the node tree. This is a bit surprising though, it basically means that GetAllStates cannot be used to reliably compute the dimensions of the game tree?

Ah yes perfect, I was just about to reply:

Instead, it turns out that it was intended for ToString() to not uniquely represent the node tree. This is a bit surprising though, it basically means that GetAllStates cannot be used to reliably compute the dimensions of the game tree?

Indeed, I think I understand now. It is this code here:
I think I understand better now, this: https://github.com/deepmind/open_spiel/blob/de2c9ef57038829c2709becb0104e3b2d76725cc/open_spiel/examples/count_all_states.cc#L42-L48
that is currently broken in perfect information games because the info states are not retrieved for all ways that they could have been reached. So let's leave this issue open, we should basically just collect the info states with a custom DFS.

And, apologies: I admit that this is not necessarily well-documented, and have noted to fix this. Where do you suggest would be the best place to put this? What would have prevented this?

that is currently broken in perfect information games because the info states are not retrieved for all ways that they could have been reached.

Yes, exactly, that code is broken whenever ToString is not a one to one mapping with a node.

And, apologies: I admit that this is not necessarily well-documented, and have noted to fix this. Where do you suggest would be the best place to put this? What would have prevented this?

No problem, glad we could get to the bottom of this :-)
I think the biggest pain point is this:

A State object clearly represents a node in the game tree.
However, a state string (that is, state.ToString()) does not need to match that, but only in some cases. This distinction was not clear to me, and the fact that nobody objected to the discussion about the implementation of ToString in Battleship, it is easy to overlook.
This also means that just saying "state" is ambiguous: the state object is a tree node, the corresponding "state" string might not be. So code that uses "states" might want to be very explicit about what is meant with that. For instance, when the example code counts "terminal states", it should perhaps clarified that that means "terminal state strings". (Note that for that to make sense, it is required that all nodes with the same ToString() be either all terminal or all non-terminal, and that property should also somehow be enforced to avoid returning wrong results.)

Based on the previous discussion with Michal, and given that Go implements ToString as just the current board, I used to believe that ToString actually was just a pretty-printing convenience method that was never actually used as a key. That's also why the title of this issue says "unreliable state string" --- I just thought it was a convenience function for printing.

If we agree that in imperfect information games there has to be a 1:1 mapping between state objects and state strings, a good bandaid here is to check that the insertion in the map here
https://github.com/deepmind/open_spiel/blob/de2c9ef57038829c2709becb0104e3b2d76725cc/open_spiel/algorithms/get_all_states.cc#L51
be successful (that is, a new entry is created), and abort if not.

Alright, I'll definitely clarify some of docs based on this discussion.
But: the state object is not really a node in a game tree. The node in the game tree is determined by a state's history. The state itself is the collection of information describing the state, which should be exposed in string form via ToString. What defines the state is naturally game type-specific.
For example, in pig or oshi-zumo, the game state corresponds to the state in the MDP sense, which makes sense, because they are both cyclical and Markovian (perfect information). But it's not the game's string representation that dictates this, it's the type of game. The string is just a representation of the state that is useful to use as keys.
Apologies for the conflicting advice and missing that discussion.

@finbarrtimbers assignment this to you. See discussion above.
I think we should modify count_all_states.cc, one of these options (you choose):

restrict count_all_states.cc to imperfect information games (have a check at the start of it)
or remove the counting of information states if it's not an imperfect information game
write a custom tree traversal rather than use GetAllStates

Based on the previous discussion with Michal [..] I used to believe that ToString [..] was never actually used as a key.

I used to believe that as well O:-)

the state object is a tree node

This a slightly confusing misconception, I agree with what Marc wrote. It just so happens that State contains history information as it is often practically useful. Some time ago I wrote down a few notes about this. I think the current behaviour of GetAllStates is correct: It collects all the underlying world states (in the FOG formalism), which != game tree node (history). I think if we want to count all histories, we should do exactly that - GetAllHistories().size() or something like that, like Marc suggested (DFS traversal).

So, it is indeed this code here [..] open_spiel/open_spiel/examples/count_all_states.cc [..] is currently broken

Yes, indeed it is broken, it should use GetAllHistories().

I think we should modify examples/count_all_states.cc : [..] write a custom tree traversal rather than use GetAllStates

+1 for this, i.e. adding a std::vector<std::unique_ptr<State>> GetAllHistories().

Additionally, I would suggest that we rename GetAllStates to GetAllWorldStates as the name is more suggestive of what it does, and make the former deprecated.

The implementation does say this, so it's quite accurate ;-)
https://github.com/deepmind/open_spiel/blob/de2c9ef57038829c2709becb0104e3b2d76725cc/open_spiel/algorithms/get_all_states.cc#L26

Closing this issue in favor of https://github.com/deepmind/open_spiel/issues/401 . Will summarize what's left to do in there.


How to segment the MPRAGE scans?

Using the CoV scan to keep it consistent with GRE scan approach.
!sct_deepseg_sc -i {subject}_acq-CoV_T1w.nii.gz -c t1 -qc {path_qc} sometimes (sub-02 shown) performs a bit bad in the upper cervical levels

While
!sct_deepseg_sc -i {subject}_acq-CoV_T1w.nii.gz -c t1 -qc {path_qc} -kernel 3d performs better in thew upper levels, and worse close to the C/T boundary.

On other subjects, this is flipped.
Changing the type of centerline detection algorithm does not seem to influence this.
What is your suggestion?

The 2d kernel is good enough, the leaking only concerns a few voxels-- this will be smoothed out anyway:
https://github.com/shimming-toolbox/rf-shimming-7t/blob/9cddd3ea9ff30a3d1e5b11939e74eeed59208e54/data_processing.ipynb#L382C24-L384


chore: monorepo updates

Adds syncpack for version management across applications
Runs npx syncpack fix-mismatches to fix version mismatches
Removes explicit Vite dependency
Updates @sveltejs/kit to latest version (features some necessary updates)
Removes some TypeScript casts/workarounds that are no longer necessary
Changes the --allowed-origins flag in the dev script to a wildcard
Moves the web-local port assignment out of vite.config and into the root package.json
Adds the "--" separator to the dev-web script so that a port can be passed

These last three changes enable us to run different branches/versions of the application against the same runtime very easily. In one branch, use npm run dev to start the application on port 3001. On another branch, run npm run dev-web -- --port 4001 to run that version of the UI code on a different port.

I think that makes sense. Will follow up once I look into some configuration options.


Add Mini-Map to Skin

I tried using the Google Maps API by obtaining lat/lon pairs in relationship to X/Z pairs; however it didn't work too well, most likely since google maps requires a square map, and funbit's is not square.
Possible options:

Use funbit's image as a regular JPG and try to line up lat/lon with pixels.
Try to reverse-engineer (or just ask for source code) of ets2map.com's map and modify it for single-player
....something else??

FYI: Funbit posted his map image and the code to convert in-game coordinates to pixels.
Issue: the image is too large 19200x18688 (almost 359 megapixels) and can't be loaded directly into the browser. It must be sliced into smaller portions and loaded on-demand.
Yeah, Google Maps API may work, but it may be overkill, it is possible to write code to load those sliced images directly, without any external library/service dependency.

Yep I was having the same issue with Funbit's newer map. If I was lucky, the map would finally render after about 10 seconds of waiting. Trying to nudge the position would take another 10 seconds. However, most of the time my browser tab would simply crash.
I was thinking of splitting the images up as well; however I just haven't had the time to actually dedicate a good chunk of time on it :grinning: . Ideally the splitting would be dynamic, creating a new slice every time the position changes.

Short version: I've managed to easily slice the image into small tiles. All we need is the JavaScript code to render these tiles on screen, and maybe to pan and zoom. Do you know any self-contained library for this?

Long version:
You can use vips to slice it:
vips dzsave \
    map-medium-dark-final.png \
    output_directory \
    --layout google \
    --suffix .png[compression=9] \
    --background '0 0 0 0' \
    --vips-progress

You can change --layout to either dz, zoomify or google. By default it has --tile-size 256, which seems reasonable. The --background defines how to pad the tiles that are smaller than the tile size (i.e., the right-most and bottom-most tiles when zoomed out), receiving red/green/blue/alpha values as numbers from 0 to 255, separated by tab, space or semicolon.
To further reduce the generated PNG size, you may want to use zopflipng_in_place script I've written, which calls zopfli binary.
If you don't have any Linux (or Mac?) machine nearby, just send me an e-mail and I can send you the sliced images.
Links I've read (saved here for future reference, if needed):

https://stackoverflow.com/questions/10542246/imagemagick-crop-huge-image
http://libvips.blogspot.com.br/2013/03/making-deepzoom-zoomify-and-google-maps.html
http://www.vips.ecs.soton.ac.uk/supported/current/doc/html/libvips/VipsForeignSave.html#vips-dzsave
https://code.google.com/p/virtualmicroscope/wiki/SlideTiler

I did a demo using Leaflet: https://gist.github.com/denilsonsa/d0cd6c2c678cb83199df
Leaflet does not support map rotation, nor fluid zoom.
It seems OpenLayers support rotation.

Thanks for looking into this a bit :smile: . I'll try to take a look at both of your comments in a bit more detail sometime tomorrow evening and see how it all looks.  It sounds like Leaflet will be the better choice for now since it's much smaller than OpenLayers.
Looking at the documentation though for leaflet, it looks like the pin's location is defined by latitude/longitude coordinates.  Out of curiosity, how did you handle converting from lat/lon to pixels?

I have a split opinion regarding Leaflet and OpenLayers. I like how small and simple Leaflet is, but I really like the idea of the map rotating according to the in-game truck orientation (although without any 3D perspective).
I envision the mobile route advisor map could operate in 3 modes:

free-view (click/touch and drag to pan the map)
follow truck fixed rotation (center on the truck, fix the rotation so North is up)
follow truck including orientation (center on the truck, up is the direction the truck is pointing).

In any of these modes, the user could use the zoom buttons as desired.
Regarding the coordinates… The image we are using has an arbitrary perpective and an arbitrary real-world position. However, we don't care about real-world here. Both mapping libraries support some way to define a custom projection and use custom images, so I defined one that maps lat/lon directly to the image pixels. I bumped into some bugs during the conversion, and I'm not sure the code is 100% correct. Also, on both libraries usually the coordinates increase upwards, which is opposite of the image pixels, so some conversion is needed.
Maybe this "forced" conversion I wrote is not appropriate. In fact, it is buggy in Leaflet (maybe I should have used L.CRS.Simple instead of writing my own). I'm not really familiar with those libraries, I may have messed up something.

Well I got a chance to look at the proof-of-concepts you provided me, and I like how it works. I tried adding the OpenLayers version into the skin; however it's becoming quite difficult trying to add all of the Javascript into a single .js file (I can try importing additional JS files; however it becomes quite difficult (see Funbit/ets2-telemetry-server#64).  I'll see if I can get this imported properly soon. I know many people are eager to see it implemented :grinning:

Well.... I got something started. Needless to say it looks terrible and needs improving.

Ok so I got the map to update the marker based on the current user's position; however the dropped pin doesn't seem to be in the right spot. I'll keep playing around with the code, but if you'd like, you can check out the current state on the add-mini-map branch.

I believe these are the next steps:

[ ] Merge pull request #19 :wink:
[ ] Add a button to OpenLayers to toggle "always center on truck".
[ ] Add a button (it can be the same one) to toggle rotating the map based on the in-game orientation.
[ ] Rewrite/redesign the layout to be responsive. I believe this is relatively easy, just time-consuming. I'd suggest ditching the bootstrap and starting from scratch. Well, that's how I'd do, and it would end up with a smaller and cleaner HTML. I'm crazy, anyway. :eyes:
[ ] Ask Funbit to implement a skin config to disable the auto-sizing. By now, we should already have release-candidate version.

Thanks for the pull request! I vaguely remember the Y and Z coordinates being flipped (in my opinion, Z should be height, not Y :stuck_out_tongue: ), so that makes sense why my initial version was a bit off.  Hopefully adding two buttons shouldn't be too hard (one for always centered, the other for rotating the map).
In terms of the image, I believe I still have a version of ETS2's actual arrow in the /img directory; I just never had a chance to implement it :grinning:
I'd personally be ok with dropping bootstrap for pure CSS, or at least stripping down bootstrap to just what's needed (the progress bars and such   are nice to have, but if they can be replaced with something similar, I'll be ok with that).  Personally I would like to somehow separate the markup of each panel into separate HTML files and have them added at runtime through JS (to make the pages a bit cleaner).
I'm honestly not sure how much time I'll have to work on this as I resumed college courses this week. Hopefully I'll have some time to work on it :grinning:

I've rewritten the layout in commit 4183913a24f0ff397c9011ffbb37e3d6427e0fab.
Check the most recents commits from my fork. They require this change to the server: https://github.com/Funbit/ets2-telemetry-server/pull/66.
And if you are in a hurry, look at the results in this short video.

4183913 looks great :grinning:.  I also really like the new icons and how the progress bar is no longer needed.  Feel free to submit a PR whenever you'd like.  Also, if you want, I can add you as a collaborator to the project so you can push directly to the main repo, rather than pushing to a fork and submitting PRs. Just let me know :smile:

For future reference, I've saved a collection of ETS2-related scripts and stuff at https://github.com/denilsonsa/ets2-stuff. Some of that stuff might be useful whenever someone needs to re-create the map tiles. (But mostly it is just a repo where I can dump stuff.)
Also, you don't need to wait for a pull request, you can grab my changes (or anyone's changes) anytime:
git remote add denilsonsa https://github.com/denilsonsa/ets2-mobile-route-advisor.git
git fetch denilsonsa
git checkout add-minimap  # Checking out your own branch.
git merge denilsonsa/add-minimap  # Merging with my branch.
git push

Not sure if you knew that. :)

I believe everything I wanted to have in the map has been implemented. I believe this can be an alpha/beta version, and very soon a release candidate.
Known issues/next steps:

[ ] Update README.md.
[ ] Update screenshots.
[ ] Wait until https://github.com/Funbit/ets2-telemetry-server/pull/66 gets merged.
[ ] Test on Safari and iOS.
[ ] navigation-estimatedTime is shown as NaN:NaN in Firefox. This also happens in master branch.

Low-priority stuff (that will not be changed anytime soon):

There is no "animation" in the map. Clicking on the rotation button changes the view instantly. This is not a good UX, but it is also a limitation and side-effect of https://stackoverflow.com/q/32868671/.
The map image could have been higher resolution, but that's not an easy task. See also: https://github.com/denilsonsa/ets2-stuff.

Some strings are not translated (I believe translations are low priority):

[ ] Week days (should they be abbreviated? like in-game?)
[ ] job-remainingTime (but, oddly enough, game-nextRestStopTime is translated)
[ ] "Expected" text (that I introduced, copying the same text from the game)
[ ] "About" page (should it be translated? Or is it too much work for little gain?

I'd really like if someone else (maybe you!) tackled these issues, specially the first three, which are blockers to an actual release. All the others are just "polish": they are nice to have, but not essential.

I just got a chance to look at and test out your pull request, and the changes look awesome :grinning: .  I'll merge them in soon.
In response to all of your checkbox points:

I'll update the README and screenshots within the next week or so, and push them to a 3-0-0 branch.

Hopefully Funbit/ets2-telemetry-server#66 gets merged soon. If not, worst case scenario is that we can build our own version of the telemetry server and have users download the custom version instead.

Unfortunately I do not own any iOS devices. We can either go ahead as-is and hope for the best, or try and find someone with an iOS device who can test out the skin.

I just created #21 in reference to the NaN:NaN issue in Firefox.

I'm not too concerned about the lack of a fluid transition between auto-rotating and keeping a fixed position.  In the actual game, the user is only given a few pre-determined zoom levels, and once you zoom out to a certain point, the map switches to the fixed position unless you zoom in again.

In terms of screen resolution, I think the current resolution is fine to begin with. If we can somehow get a larger size, we can do so at a later point.

I'm ok with abbreviating the day of the week, and we can also add them to the translation .jsons as well.  Another option is to look into JavaScript's Date.prototype.toLocaleString(), which I believe uses the user's browser locale to build the date. It also looks like it supports several options on how to parse the date.

There is a TimeRemaining language string, so I'll have to double-check that it's actually being used.

We can easily add a new language string for "Expected", and we can remove "Deadline" if it is no longer being used.

I personally think that translating the about tab would be too much work. I have a feeling hardly anyone looks at that tab, and it would take a lot of screen space in the language .jsons.

I believe the "Expected" line in-game shows both the minimum time and the maximum time for arrival (look at the guide for this achievement). I think we have access to the maximum time (i.e. the deadline), but not the minimum one. If we don't, that's something we may ask the developers to add to the API.
One last thing I noticed: although the gradient colors currently in use look good, they don't provide enough contrast with the white text. I noticed this issue while playing the game trying to quickly see the speed in my mobile phone. We can change the gradients to look exactly like in-game. (#1e1e1e-#505050; #181818-#404040; the bottom one is #2c2c2c-#535353; look at the button gradient for an example)
For help with testing on Apple devices and with translations, we may try asking in /r/trucksim and in /r/EuroTruck2.
In a far away future, we may have a list of in-game coordinates and places, so that we can add a map layer full of markers.

Regarding providing an alternate telemetry server download, it is trivial: https://github.com/denilsonsa/ets2-telemetry-server/archive/no-auto-size.zip

@denilsonsa it looks Safari does have some issues (both on OS X and through the iOS simulator). See #26

I've seen the latest commits, great work! :)

I have a problem with version 3.0.0 not see the preview icon .

And when I run error pops up. I use Chrome.

The same effect is on Firefox and do not know what to do.

@raflix261 , what system?
Is this related? https://github.com/Funbit/ets2-telemetry-server/pull/63
Also, our version 3.0.0 REQUIRES https://github.com/Funbit/ets2-telemetry-server/pull/66 , which can be downloaded from https://github.com/denilsonsa/ets2-telemetry-server/archive/no-auto-size.zip

@denilsonsa The system is Windows 10. With the trial version which lent the map I had no problem. The same is true for the second version of the server you specified.

In a far away future, we may have a list of in-game coordinates and places, so that we can add a map layer full of markers.

I did some peeking around at kat_pw's ets2map.com, and I found this handy JSON that is used to output POIs on the map (such as fuel, hotel, and even speed cameras). I copied the JSON and tossed it into the gist below.  I don't know if there are any limitations as to us using it; however I thought I'd share it since it looks like it also uses in-game coordinates.  However, I don't see this being a necessary feature for 3.0.0.
https://gist.github.com/mkoch227/bdadae22eb616b4b9dfb

I believe the "Expected" line in-game shows both the minimum time and the maximum time for arrival (look at the guide for this achievement). I think we have access to the maximum time (i.e. the deadline), but not the minimum one. If we don't, that's something we may ask the developers to add to the API.

Correct, only the deadline time is provided to us.  From my gameplay, I haven't noticed any adverse effects of arriving before the dropoff window (I've never been penalized).  I also got the achievement in question, but I cannot say if I was within the time window or not.  Anyhoo, I find that to be a low priority issue in my opinion.

@denilsonsa is there anything else that needs to be done before the initial release? (Besides getting https://github.com/Funbit/ets2-telemetry-server/pull/66 merged in)

@raflix261 commented on issue #38 regarding an untranslated time, but I haven't checked if it is already fixed.
Regarding the code, I can't think of anything else.
Sure, maybe we can improve the translations (to make them look exactly like in-game), but this can be done after 3.0.0.

Regarding README (the front page of the the GitHub repository), instructions on how to download and install the skin. One of the steps should be to make sure the directory has the right name.
Of course, also mentioning the https://github.com/Funbit/ets2-telemetry-server/pull/66 (and where to download the alternate version).

Regarding the website, essentially the same stuff as the README.

Footnote: I haven't tested the latest commits yet, but they should be okay.

Thanks. I've created two new issues (#42 and #43) for the updates you recommended. Since the map is pretty much done, I'll close this issue and make sure everything for the minimap is in the 3-0-0 branch.

Everything in add-minimap is in 3-0-0. Closing this issue and deleting the add-minimap branch.


[FEAT] DepthWarper using inverse depth

We started the discussion in #79  whether the DepthWarper should warp by depth or inverse depth.
@ClementPinard @versatran01 Propose to use inverse depth for numerical stability issues.
Screenshot of one the arguments for that:

Currently the warper works as follows:
# module
pinhole_dst = PinholeCamera(...)
pinhole_src = PinholeCamera(...)
warper = DepthWarper([pinhole_dst, ], height, width)
warper.compute_projections(pinhole_src)
img_src = warper(depth_src, img_dst)
# functional
img_src = depth_warp([pinhole_dst, ], pinhole_ref, depth_src, (height, width))

I was testing the API, and might be much simple to receive a single pinhole instance as destination. Notice that the internal members extrinsics and intrinsics are already batched.
Let's continue the discussion here.

Currently in my implementation, eps is used only in one place, which is just like
@ClementPinard said, to clamp the depth the eps when doing the mentioned inverse operation.

This is an example of warping using vkitti ground truth pose and depth. From left to right, target image,  synthesized image and their difference.

@versatran01 nice ! would be great to adapt your codes with the current class.

Going to refactor at some point the depth warper. We can resume the discussion by the. Closing this now.


Lazy loading modules used with Angular trusted types in the CSP headers is rejected by Chrome

🐞 bug report
Affected Package
Angular-CLI (webpack) and CSP trusted types integration.
Is this a regression?
Not that I can determine. I started testing the issue with v9.1.x; It was also present there.
Description
For security reasons it is important to have proper Content-Security-Policy (CSP) headers present. The Angular documentation suggests the use of trusted typed. The suggested configuration works well as long as no lazy loaded modules are used.
Once lazy loaded modules are used and loading of one of the modules is triggered, the modules load violates the CSP rules. Suggested CSP settings should also work with lazy loading or a secure alternative would be helpfull.
🔬 Minimal Reproduction

Create a new project: ng new --routing --strict --style scss csp-lazy-loading
Generate a new module ng g m lazymod --routing --route lazymod --module app.module
Add the CSP header in angular.json (in serve.options): "headers" : {"Content-Security-Policy": "trusted-types angular; require-trusted-types-for 'script';"}

result of steps above is available in https://github.com/bbreijer/ng11-csp-lazy-loading

start development server: ng serve --prod
navigate to http://localhost:4200/lazymod in Chrome

🔥 Exception or Error
In runtime.js
This document requires 'TrustedScriptURL' assignment.
In main.js
ERROR Error: Uncaught (in promise): TypeError: Failed to set the 'src' property on 'HTMLScriptElement': This document requires 'TrustedScriptURL' assignment.
TypeError: Failed to set the 'src' property on 'HTMLScriptElement': This document requires 'TrustedScriptURL' assignment.
    at Function.i.e (runtime.js:formatted:56)
    at loadChildren (main.js:1)
    at Ln.loadModuleFactory (main.js:1)
    at Ln.load (main.js:1)
    at c.project (main.js:1)
    at c._tryNext (main.js:1)
    at c._next (main.js:1)
    at c.next (main.js:1)
    at t._subscribe (main.js:1)
    at t._trySubscribe (main.js:1)
    at Z (polyfills.js:1)
    at Z (polyfills.js:1)
    at polyfills.js:1
    at l.invokeTask (polyfills.js:1)
    at Object.onInvokeTask (main.js:1)
    at l.invokeTask (polyfills.js:1)
    at i.runTask (polyfills.js:1)
    at m (polyfills.js:1)
🌍  Your Environment
Angular Version:
Angular CLI: 11.2.8
Node: 14.5.0
OS: darwin x64

Angular: 11.2.9
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router
Ivy Workspace: Yes

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1102.8
@angular-devkit/build-angular   0.1102.8
@angular-devkit/core            11.2.8
@angular-devkit/schematics      11.2.8
@angular/cli                    11.2.8
@schematics/angular             11.2.8
@schematics/update              0.1102.8
rxjs                            6.6.7
typescript                      4.1.5
Anything else relevant?
Documentation:

https://angular.io/guide/security#enforcing-trusted-types
https://angular.io/guide/lazy-loading-ngmodules

Related issues:

https://github.com/angular/angular-cli/issues/20113
https://github.com/angular/angular/issues/37631

Reproduced in Chrome 89.0.

Trusted types API is still in it's draft phase and are not supported in a number of browsers, see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/trusted-types. Webpack 5, which the Angular CLI uses under the hood as bundler see https://github.com/webpack/webpack/pull/9856#issuecomment-544242457.
I'll this up for discussion with the rest of the team to decide on a way forward.

@alan-agius4 Thanks for taking this up for discussion.
According to the trusted types documentation, the browser i tested on is supported. The main issue is that, for the supported browsers, trusted headers do not work with lazy loading. Therefore i think that the short term fix would be to remove the recommendation for the Security documentation and the long term fix would be to either have trusted types work with lazy loading or have some way to use nonce. What do you think?

Had a chat with @mgechev, and indeed we should remove trusted types from being recommended in angular.io until this issue is resolved upstream.


Mac

How would you modify the plugin to work with another id3 reader, such as id3tool?
d

Currently, there's no "easy" way of changing the command-line tool, like just changing a setting. It's not impossible, just something that would require some work in the code. There's two functions that would have to be changed:
https://github.com/AndrewRadev/id3.vim/blob/c2adcabdf773b1093347e48358e4ce456e51dd61/autoload/id3.vim#L1
https://github.com/AndrewRadev/id3.vim/blob/c2adcabdf773b1093347e48358e4ce456e51dd61/autoload/id3.vim#L83
I could get this working by changing their contents to something like:
if s:CheckCommand('id3')
  call s:ReadMp3Id3(a:filename)
elsif s:CheckCommand('id3tool')
  call s:ReadMp3Id3Tool(a:filename)
else
  echoerr "No suitable command-line tool found. Install one of: id3, id3tool"
endif

The s:CheckCommand function would probably work like this:
call system('which '.a:command)
if v:shell_error == 0
  return 1
else
  return 0
endif

And then the question would be implementing the s:ReadMp3Id3Tool function, and the s:UpdateMp3Id3Tool one to invoke the id3tool with the right flags and parse their output. This is the part that would take more time, but it would probably look similar to the existing method, just not similar enough that it'd be a direct copy-paste.
If you would like to try implementing it yourself, I'd love to get a PR along those lines -- even if it's incomplete, I could give you directions and advice. Otherwise, I can install id3tool (I'm guessing it's this? http://nekohako.xware.cx/id3tool/) and do it myself, but no guarantees on when I'd be able to do it.

Right now, the plugin should work with id3tool... but I actually wouldn't recommend it. It seems like id3tool only works on v1 tags, which should be quite rare. It also seems (at least on my setup) to cut off the contents to a certain character limit :/.
If you go through the documentation, I'm recommending you use a custom tool I made for it. I'd recommend you try it out, but I don't know what you're looking for.
Either way, I think the original question has been answered, so I'll go ahead and close this issue. If you have any follow-ups, please reopen or open a new one.


Find python Syntax error

Node Version: 14.0.0
Platform: Windows 10
Compiler:
Module: node-gyp

Command line output
gyp ERR! stack Error: Command failed: D:\programy\Python36-32\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack   File "<string>", line 1
gyp ERR! stack     import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack                                ^
gyp ERR! stack SyntaxError: invalid syntax

There is a problem with find-python.js script on Windows in lines:
  argsExecutable: ['-c', 'import sys; print(sys.executable);'],
  argsVersion: ['-c', 'import sys; print("%s.%s.%s" % sys.version_info[:3]);'],

there are missing quote marks, it should be:
  argsExecutable: ['-c', '"import sys; print(sys.executable);"'],
  argsVersion: ['-c', '"import sys; print(\'%s.%s.%s\' % sys.version_info[:3]);"'],

Please look for a line in the full output (that you did not include that reads something like ERR! node-gyp -v vX.Y.Z.  The current node-gyp is v7.


ruBERT-BASE-128-FiT-KRLRCD doesn't contain config

Hey @K-Mike,
Thank for the report, I added the config. Also, I published this model at HuggingFace.


Merge YGG TQF app development into Main

What I really mean by this ticket is.
Initialize devops for the repo.

PR YGG branch into Main
Initialize Versioning for the App
Declare a Production Version
Consider things like GitHub Workflows
Encourage Issues
Manage PR Contributions


zgpu: Fix warning for Git LFS

This fixes a slight instruction mistake when downloading the Git LFS files after the initial git clone.
(Nice work on the libraries by the way, it looks neat)

Thanks!


Fixed typo in ModelForm's documentation

I found this typo in a code example in ModelForm's documentation . I think many moons ago the code example used to be the 'pub_date' field. But then it was changed to 'headline' and one line got missed!

Actually that's a mistake in a new example I added recently. merged in 6ff826e12ea99c0eb871716cfedc2c8e199695f3, thanks!


[WinUI][Material] HyperlinkButton content it is not underlined

Current behavior
The HyperlinkButton content should be underlined, as shown in Uno Gallery.  For WASM & WPF heads works as expected, but somehow for WinUI isn't underlined.
Expected behavior
The HyperlinkButton content should be underlined too.
How to reproduce it (as minimally and precisely as possible)
Take this snippet to a XAML and test it on WinUI head:
<HyperlinkButton
    Content="Hyperlink"
    Style="{StaticResource MaterialHyperlinkButtonStyle}" />

Workaround
No response
Works on UWP/WinUI
No
Environment
Uno.WinUI / Uno.WinUI.WebAssembly / Uno.WinUI.Skia
NuGet package version(s)
Uno.WinUI version 5.3.144
Affected platforms
WinAppSDK
IDE
Visual Studio 2022
IDE version
17.11.3
Relevant plugins
No response
Anything else we need to know?
No response

CC @ramezgerges should we close this issue?

Yes! Thanks.

Thank you for solving it! :)
It could be possible to have it backported to the 5.4?

@ADD-Noureddine-Maachi For sure, the backports have been created for 5.3 (Uno.Themes has a bit different versioning, but it should be available with the latest versions). Thanks

Perfect. Thanks!


⚠ Processors has degraded performance

In ec81555, Processors ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 73 ms

Resolved: Processors performance has improved in 76abb7f.


Update targets files to override Roslyn code analysis properties

The targets now look for a well-known ruleset name on disc and configures the Roslyn analysis based on whether the file exists or not.
Currently the Roslyn ruleset is separate from the FxCop ruleset. The build properties are set appropriately so the correct ruleset is used. However, it might be simpler to generate a single combined ruleset file and use that - I'll see how it works out in practice.

LGTM


be able to pass in timeout for lambda function from the setting file

Thanks, available in 0.18.1!


Create go.mod in hack/tools

Branched from #150 which should be merged first.
Creates a go.mod in hack/tools to track go modules there separately.
Also now build helm from source.
Also went ahead and changed /bin/bash to /usr/bin/env bash for hack scripts.
/assign @jahrlin

/retest

/retest

/retest


[Mod Interaction] Fluid Tank filling with potion liquid overrides other existing types

Please use the search functionality before reporting an issue. Also take a look at the closed issues!
Issue description:
I can reproduce this exploit with Thermal Foundation's potion liquid, which is manufactured by Thermal Expansion's Alchemical Imbuer / Fractionating Still.
Steps to reproduce:

Fill the fluid tank with cheap potions like 10000mB of mundane potion.
Make a little bit of advanced potion with TE's machine, like some Strength IV liquid.
Right click the machine containing that liquid with the fluid tank. That 10 buckets of mundane potion will be converted to Strength IV when that little bit from the machine is collected.

Version (make sure you are on the latest version before reporting):
Forge: 1.12.2 forge-<IP_ADDRESS>68
Mekanism: <IP_ADDRESS>9
Other relevant version:
Thermal Expansion: <IP_ADDRESS>
Thermal Foundation: <IP_ADDRESS>
If a (crash)log is relevant for this issue, link it here: (It's almost always relevant)
[gist/pastebin/etc link here]

This should be fixed in the latest releases. If you could confirm, that'd be grand


Search

How can i get input value in search bar?

You can subscribe for the keyup event: <ng-select ... (keyup)="onKeyUp($event)"></ng-select>
Then in the component: onKeyUp(event:any):void { let searchValue = event.target.value; }

@kalmargabor thanks!!! You save my day :)