Cannot use <use> (in <svg>) any more

As of #1738 being merged, I can't use <use> inside <svg> in html! {} any more. (Maybe other SVG elements are affected too; I haven't tried.) For example, the following:
html!{

    <svg class="bi" fill="currentColor">
      <use href="/bootstrap-icons.svg#wrench"/>
    </svg>
    {"Go to example.org"}

}

fails with this error:
error: expected a valid html element
   --> src/pages/example.rs:140:19
    |
140 |                   <use href="/bootstrap-icons.svg#wrench"/>
    |                   ^

Originally posted by @jbg in https://github.com/yewstack/yew/pull/1738#issuecomment-787400756

There we go, thanks for the report!


moved consortia results call from dashboard-home to redux action

Problem:

Dashboard status-items are loaded slowly after initial load despite the fact that they should be quickly retrievable from local storage.
Dashboard displays No computation results message and no spinner despite the fact that there are computation results still loading.

Solution:

Changed remote results request to pull from redux action and add to props rather than pulling on each load and adding results to state.

Tests:

Login to application and note the status-items loading on the right-side panel.
Navigate into the Consortia tab, then back into the Home tab. Results should load immediately if model still exists.
Navigate into the any of the status-items' results, then navigate back to Home. If model reloads, you should see the spinner rotating until remote results have been retrieved.

It's possible that this PR introduces problems elsewhere and I'd appreciate any clarification.

This may also negate the need for the timeout in PR #220.

Finally getting around to testing this. The top right loading spinner firing every ~3 seconds is super annoying: this is a global indicator that fires when view change (ex: “My Files” to “Consortia”) or when a view fetches all its data (single consortium loads). It sends the wrong signal to the user when it fires so frequently: we’re simply updating the count. Ideally we provide a local indicator that signifies “this is loading” in the dashboard card.
Also, that dang loader still displays after a computation’s completely done:

Annoying. Let’s see what we can do to make this better.

It’s loading in the empty state:

😳 Also, seeing this error as I navigate around in a running client:
warning.js:36 Warning: Failed prop type: The prop `data.global` is marked as required in `ConsortiumResult`, but its value is `undefined`.
    in ConsortiumResult (created by ConsortiumResults)
    in ConsortiumResults (created by Connect(ConsortiumResults))
    in Connect(ConsortiumResults) (created by Consortium)
    in div (created by Consortium)
    in Consortium (created by ConsortiumController)
    in ConsortiumController (created by Connect(ConsortiumController))
    in Connect(ConsortiumController) (created by RouterContext)
    in div (created by Dashboard)
    in div (created by Dashboard)
    in div (created by Dashboard)
    in Dashboard (created by Connect(Dashboard))
    in Connect(Dashboard) (created by RouterContext)
    in div (created by App)
    in App (created by Connect(App))
    in Connect(App) (created by RouterContext)
    in RouterContext (created by Router)
    in Router (created by Root)
    in Provider (created by Root)
    in Root

Circumstances:

Okay, looking into this. So far, so good. Did see this on a client during multi-shot:
"Error: Cannot get property 'name' on missing remote object 833
    at throwRPCError (/Users/creed/coinstac/packages/coinstac-ui/node_modules/electron/dist/Electron.app/Contents/Resources/electron.asar/browser/rpc-server.js:145:17)
    at EventEmitter.<anonymous> (/Users/creed/coinstac/packages/coinstac-ui/node_modules/electron/dist/Electron.app/Contents/Resources/electron.asar/browser/rpc-server.js:391:7)
    at WebContents.<anonymous> (/Users/creed/coinstac/packages/coinstac-ui/node_modules/electron/dist/Electron.app/Contents/Resources/electron.asar/browser/api/web-contents.js:232:13)"

Single-shot and multi-shot function fine. Nice work!


Updated the order for in policy #41062

@kengaderdus
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off


Unable to run pip3 install -r requirements.txt

When i tried to run pip3 install -r requirements.txt, it was showing me the following error (in short):
ERROR: Could not find a version that satisfies the requirement OpenCC
ERROR: No matching distribution found for OpenCC

Kindly help me to resolve this issue on git bash...

Try updating your python version and use linux ffs


Create relative symlink

Symlink <project path>/node_modules/@types/sap__cds -> ../@cap-js/cds-types to allow users to move/ rename their project without breaking the symlink.

@joergmann Can you test on Windows?
It shouldn’t crash there.

@daogrady , @chgeo works on Win and WSL

Awesome, thanks for verifying!


DRILL-7293: Convert the regex ("log") plugin to use EVF

Converts the log format plugin (which uses a regex for parsing) to work
with the Extended Vector Format.
This commit provides the basic conversion:

Use the plugin config object to pass config to the Easy framework.
Use the EVF scan mechanism in place of the legacy "ScanBatch"
mechanism.
Minor code and README cleanup.

This commit corresponds to the Basic Tutorial steps in the EVF tutorial.

This PR is now failing due to the Protobuf errors. Thanks @vvysotskyi for fixing them. I'll rebase onto that fix once it is committed and the reviewers have approved the commits.

Added the ability to specify the regex (and column schema) in the provided schema. Defined a table property for the regex. Although we can't (yet) use table properties to define the schema, we can now use CREATE SCHEMA to define both the regex and the schema.

Rebased on latest master.

@paul-rogers I am still unclear if you have tried the following query for log plugin data: select * from table(t(schema=>'inline=(col1 varchar)')) where t is table with log plugin data. Did you try it? I suppose it should work.

@arina-ielchiieva, I was able to get the plugin to work for this query:
SELECT * FROM table(dfs.tf.table1(
  type => 'logRegex',
  regex => '(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d) .*',
  maxErrors => 10))

To do this, I had to fix some of the issues described in DRILL-7298. In particular, DRILL-6672 notes that table functions are not able to call {{setFoo()}} methods as Jackson can, so table functions only work if the format plugin config fields are {{public}}. The were not public for the log format plugin, so I changed them to {{public}} to get the above query to work.
If we look at the code in FormatPluginOptionsDescriptor.createConfigForTable(), we'll see that there is nothing that would handle the values syntax suggested in your note. The only supported types are Java primitives.
When I tried this query:
SELECT * FROM table(dfs.tf.noGroups(
  type => 'logRegex',
  regex => '(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d) .*',
  `schema`=>values('month', 'VARCHAR')))

I got this result:
PARSE ERROR: Encountered "values" at line 1, column 115.

SQL Query: SELECT * FROM table(dfs.tf.noGroups(type => 'logRegex', regex => '(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d) .*', `schema`=>values('month', 'VARCHAR')))
                                                                                ^

So, looks like the {{values}} trick does not work. Even if it did, the code to produce the values argument would use some kind of Java collection which would not match the {{List}} of the {{schema}} field.

One solution to the schema issue for table functions is to use the columns trick from the text reader. If no schema is provided, then instead of creating a set of field_n columns, create a single columns array column. Specifically, if there is no schema defined for the table, and no schema in the plugin config (perhaps because the plugin config was created via a table function), then just use columns.
If I get some time, I'll try this out. With the EVF, this might actually be pretty simple. Might be best to add such a feature via another PR.

@paul-rogers thanks for making the changes. Regarding List parameter in table function, yes, it does not work and its a known issue, format plugins should not use list.
Though in my previous comments I have asked to try schema parameter in String not in List.
Adding example of the queries I expect should work once again:

SELECT * FROM table(dfs.tf.noGroups( type => 'logRegex', regex => '(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d) .*', schema=>inline(month` varchar)))
select * from table(t(schema=>'inline=(col1 varchar)'))

@arina-ielchiieva, thanks, I didn't realize we'd extended the table functions. Out of curiosity, how does the schema form know which plugin config to use? Or, does this form create a schema object and use the normal path for the plugin config?
Might we have this documented somewhere?

@paul-rogers this was introduced in https://issues.apache.org/jira/browse/DRILL-6965 as part of schema provisioning project, Jira has the description and has doc-impacting label, hopefully it would be documented some day.
Yes, you are right plugin configs are initialized the usual way and once DrillTable instance is created, it is enriched with schema from schema parameter. All magic is done in org.apache.drill.exec.store.AbstractSchema class.

@arina-ielchiieva, added a unit test to show that the schema-only table function works.
Tried to create a test that combined a "plugin" table function with the "schema" attribute. This failed due to the unfortunate use of "schema" as plugin property name. You've pointed out this issue all along, I finally understood why it was a problem. Still, I'm reluctant to change the config property name for fear of breaking compatibility.
As it turns out, this limitation is only a minor nuisance since the only reason to combine the two kinds of table functions is to specify the regex property. A unit test shows that the regex can be specified as a table property instead.
Also, went ahead and added support for the columns column. If no schema is provided (not in the plugin config, not in a table function, not in a provided schema), then rather than creating a set of dummy fields field_0, field_1, etc., the plugin how follows the text format plugin and puts the fields into the columns array. The dummy fields are still used if the user specifies at least one column schema, but the regex has more groups than specified columns.
This means that, if the user uses a table function to specify just the regex, the user gets a reasonable result: the fields come back in the columns array.
Unit tests show the new columns array support.

Rebased on latest master. One unrelated test fails:
[ERROR] Errors:
[ERROR]   TestDynamicUDFSupport.testDropFunction » UserRemote VALIDATION ERROR: From lin...

This test fails about 50% of the time, so it is probably not related to this change. The failure prevents running subsequent tests. But, mock data source support is likely not used by the other packages.

@paul-rogers please resolve the conflicts.

Rebased on master. Addressed review comments. Squashed commits.

+1


Update docs for css file path

ReadMe file references atlasThemes.min.css' when it should be reactAtlas.min.css

This was based off an old version of Atlas. Disregard.


Turbolinks send ajax many times when click back button on a browser

use Rails 4.2 and turbolinks 2.5.3

use Rails 4.2 and turbolinks 2.5.3

Could you create an example app where we can replicate the problem?

I just use it on my first rails project: http://wanshiu.com/
You can replicate this issue by clicking some nav bar buttons and hit browser's back button

This is happening because you put your <script [...] data-turbolinks-track="true"> in the <body>, so they (including Turbolinks) get re-evaluated on every page load. Move them to the <head> and everything will work normally.

Problem solved. Thanks for your help!


How to login

Hello everyone,
I want to use verdaccio as a private npm registry, however I'm having problems logging in.
I have disabled user registration, and I have created an htpasswd file with a couple of users.
If I try to install a package, I get an error that says unregistered users are not allowed to access package x, fantastic, exactly what I want. BUT, how can I log in? If i try npm login what it does is an attempt to create an user, which is of course not allowed. I feel that I'm on a deadlock here.
Thanks in advance.

Ok the problem was the format of the passwor.
It was not the one that verdaccio expects, it was generated using htpasswd on my MAC.
The error was very confusing, because the problem was not the user existing already, it was because passwords did not match.
Consider adding this to the documentation, most of the people that ends up checking verdaccio is for having totally private npm repositories. How to achieve this configuration is not clear, and I was forced to dive on several sinopia forks and old blog ports to figure out how.
Regards

The PR https://github.com/verdaccio/verdaccio/pull/112 add support for md5 being created with unix htpasswd. I'd wait for others opinion. verdaccio uses an sha512 encryption by default. That's the reason why does not match. It's intended in that way, I'd recommend use  npm adduser --registry http://localhost:1443
in order to create users to ensure high compability.

Dear @juanpicado, that's what I did, but it is a bit uncomfortable to spawn a server just to add a couple of users. I want my repository to remain private ,and to achieve that I have to disable users registration. What it's really lacking is a system where only administrators can add new users .
Regards

Currently there is no such support, but, it seems a good idea. Let's see how ends up the #112 to helps you to add users.

Hi,
I'm trying to use verdaccio, I created some users which work fine.
Then when I try to login npm login --registry https://npm.somedomain.com --scope myscope I get:
npm ERR! Unexpected token < in JSON at position 0
npm ERR!
npm ERR! <title>405 Not Allowed</title>
npm ERR!
npm ERR!
405 Not Allowed

npm ERR!
nginx
npm ERR!
npm ERR!
npm ERR!
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

Server side:
http <-- 409, user: undefined, req: 'PUT /-/user/org.couchdb.user:lensys', error: this user already exists

I'm able to login via the web GUI but not via npm (only the first login works aka creating one).
So how to login?

@oomathias please create a new ticket and add the same command verbose with -ddd

If this helps anyone, I fixed this issue for myself by just appending a trailing slash at the end of the url (like this: https://example.com/verdaccio/).


Call to deprecated function 'getpos', please use 'get_pos' at elevator/init.lua:143

Found in log.   If I get time I'll submit a patch

Oh I just needed to pull latest, my copy was really old.


 Does this clarify that for you sufficiently?

Yeah. This works for me. @mtscout6

LGTM


[RFC] Integrating the new MXNet website

About the new website
We heard of complaints and suggestions on the contents and UX of the MXNet website such as poor-quality tutorial examples and lack of feedback providing channel (e.g., https://github.com/apache/incubator-mxnet/issues/6493 and https://github.com/apache/incubator-mxnet/issues/12610). To make improvements on such, we propose to re-design the MXNet website.
The new website (WIP) will be published at http://beta.mxnet.io. We expect that the new website and the old website http://mxnet.incubator.apache.org/ will co-exist for some time until the old website can be completely replaced by the new website.
Proposed major changes
Below are proposed major new changes.
Design

We document each class or method in its own page to reduce the loading time. A TOC appears on the right hand side to allow users to navigate through different classes and methods.
We add disqus at the bottom of almost every page to allow users to comment and discuss.
We change the sphinx theme based on the material design, which has a modern look.

Content

We rely on the ecosystem of MXNet. Thus, we keep deep learning algorthm specific tutorials in Dive into Deep Learning, and keep toolkit-specific tutorials in the respective toolkit website/repo, such as GluonCV and GluonNLP.
For each programming laungage in the new website, we re-organize documentation into two directories: guide/ for tutorials and api/ for API references.
To improve quality of the documentation, we are also revising tutorials under guide/.
We highlight the use of Gluon.

Building process (learn more in Appendix A)
The new website (http://beta.mxnet.io) is currently built from https://github.com/mli/new-docs (hereinafter referred to as new-docs repo). As we will integrate the new-docs repo into the MXNet repo, the building process of the new website is subject to change (WIP).

We use conda to manage environments of dependencies.
Tutorials are written in markdown files. They will be converted to ipynb and get evaluated to generate outputs when the website is built. The dependencies for evaluating tutorials are specified in the conda environment.

If you are interested in more details about what's new in the new website, just check out this wiki written by @mli.
Status (will be updated)

The new website can be previewed at http://beta.mxnet.io.
Website redesign & wireframe are proposed at https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=103089084
We plan to open a feature branch to facilitate the integration of the new-docs repo.
To ensure high quality of contents, we plan to focus on a minimum viable product (MVP) in the initial release. The MVP may contain Python docs only. A proposed list of Python tutorials under guide/ in the initial release can be found in Appendix B. We will gradually add back other tutorials and docs of the other programming languages from the old website after the initial release.
We are revising contents of tutorials and open PRs can be found here. Feel free to review and comment these PRs.

Appendix A: Building process
In the following, we detail the building process at the new-docs repo. The building process of the new website is subject to change when we integrate the new-docs repo into the MXNet repo.
Overview

A pull request will trigger the execution of Jenkinsfile.
When Jenkinsfile is executed:

Install all dependencies as specified in environment.yml, the environment is called mxnet-docs. The environment is managed by conda.
Build Python docs in build/html (See details below)
Build R docs in build/html/r
If the pull request is merged to the master branch, it then executes build/upload_doc.sh to upload all files under build/html to s3://beta.mxnet.io

Building Python docs

Instructions for Linux, Windows, and macOS
Note: a fast EC2 instance is recommended. A GPU instance is required to test the tutorials, however a CPU instance is enough to build the site.

Building R docs (or another language)
The building process is similar to that of building Python docs.
Appendix B: Proposed list of Python tutorials in the MVP
Items below are usually the names of the existing files. For instance, 1-ndarray refers to https://github.com/mli/new-docs/blob/master/python/guide/crash-course/1-ndarray.md. If such a file does not exist, such as Symbol, we will create it.

Getting Started

A 60-minute crash course

1-ndarray
2-nn
3-autograd
4-train
5-predict
6-use_gpus

Moving from other DL frameworks

to-mxnet/pytorch.html
to-mxnet/tf.html

Packages and Modules

ndarray

ndarray (need more details, refer to https://en.d2l.ai/chapter_crashcourse/ndarray.html)
sparse

autograd (need more details)
Using GPU (refer to https://en.d2l.ai/chapter_deep-learning-computation/use-gpu.html)
optimizer
lr_scheduler
Symbol
gluon

nn (need more details, refer to https://en.d2l.ai/chapter_deep-learning-computation/model-construction.html)
parameters (need more details, refer to https://en.d2l.ai/chapter_deep-learning-computation/parameters.html)
init (need more details, refer to https://en.d2l.ai/chapter_deep-learning-computation/parameters.html and https://en.d2l.ai/chapter_deep-learning-computation/deferred-init.html)
custom-layer (need more details, refer to https://en.d2l.ai/chapter_deep-learning-computation/custom-layer.html)
data
image_augmentation (should show how to use gluon.data.vision.transforms.Compose, refer to https://en.d2l.ai/chapter_computer-vision/image-augmentation.html)
file I/O (refer to https://en.d2l.ai/chapter_deep-learning-computation/read-write.html)
loss (should explain how to create customized loss)
trainer
hybridize (need more details, refer to https://en.d2l.ai/chapter_computational-performance/hybridize.html)
model_zoo

Performance

Essentials

(optional) perf
profiler

Compression

float16
(optional) int8

Accelerated Backend

(optional) tensor-rt

Deployment

Deploy into Another Language

cpp
scala/java
ONNX

Customization (extend)

customop (should address customer complaints: https://discuss.gluon.ai/t/topic/10822)

@mxnet-label-bot Add [RFC]

I think there's some discussion to be had around how the APIs drill down. I have a proposed flow in the wiki than now fleshing things out a bit more. I think this flow could remove the need for a /guide folder as these are all under /api and the elements of "guide" are interwoven in every page.
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=103089084
I've taken the tact following this pattern: List of language APIs, API landing page + related materials, API topic (like data but talk about images and text), [API subtopic (like vision having models), API children (until the tree is exhausted)]. The last two tend to get intermingled because some branches are shorter than others.
The other aspect that I'm presenting is using a use case flow for presenting the APIs as opposed to just having a clusters or collections of APIs without any apparent order or relation. Once you get to the last layer of a list of functions then these would be categorical then alphabetical. Given that there is much overlap in the APIs there would be some duplication for things like NDArray or Symbol. However, a Gluon user wouldn't really see this, they'd just assume all of the available APIs presented in their guide are theirs to use. Conversely, a user diving into the Symbol API would see all relevant APIs for them but would never see any mention of gluon. Common packages like NDArray would be described in both guides. Examples would take care not to confuse the reader with inappropriate mixing of patterns. That's my goal at least.
Please make comments on the UX wireframes directly! https://gallery.io/projects/MCHbtQVoQ2HCZfrqGyueCUJz/files/MCEJu8Y2hyDScXaVWHecaLCwYpWsjC1kkZY

While specifically addressed in the RFC, I'd like to recommend that we do not build multiple versions of the site in the MVP. Once an architecture is established, then the multiple language bindings, and some kind of actual UX direction, and then we can look versions and how best to provide them as a "nice-to-have". Otherwise, I think giving out directions on how to build a specific version of the docs should be sufficient.

This change has been accepted to the mxnet website. Thanks to those who helped on making it happen!


Update oc2ls-v0.1-wd14_fam_draft.json

We made a few changes to make it json compliant

Reviewed, thanks.


Remove strum and strum_macros dependencies

Ref: https://github.com/scylladb/scylla-rust-driver/issues/771
Motivation
strum and strum_macros are unstable crates and their usages need to be removed from the public API to stabilize it.
These crates are responsible for generating FromStr implementations for the types.
Changes
Replaced strum usages for NativeType and ColumnKind types with our own implementations of FromStr.
Pre-review checklist

[x] I have split my patch into logically separate commits.
[x] All commit messages clearly explain what they change and why.
[ ] I added relevant tests for new features and bug fixes.
[ ] All commits compile, pass static checks and pass test.
[x] PR description sums up the changes and reasons why they should be introduced.
[x] I have provided docstrings for the public items that I want to introduce.
[ ] I have adjusted the documentation in ./docs/source/.
[ ] I added appropriate Fixes: annotations to PR description.

The semver checks job silently failed here for the reason described here: https://github.com/scylladb/scylla-rust-driver/issues/936. It looks like /dev/tty very recently stopped being available in our job runner's environment.


Public Registration: On - approve manually (removed?)

This option no longer appears to be available in v8.
This was where visitors could register to be a member, but would only become an active member once an admin had received an email notification and they'd gone into the dashboard to actually activate the new user. The user would then receive a 'you've been approved' style email.
This is/was quite handy in certain circumstances and I'm using it on a few 5.7 sites - has this been removed completed, or was it just inadvertently left off as things have been reworked?  The email template that it used is still in the concrete/mail directory.

+1

I need this option.

This is supposed to be handled by user workflow (User Activate/Deactivate) but it is not working properly.

@aembler any idea where I might start debugging this?

@KorvinSzanto This should be pretty easy. If you search for "manual_approve" in a 5.7 branch, you'll see various places where we have this setting that is for enabling new users to sign up, but for them to be inactive by default, and then for the system to mail an administrator, and activate them. This has been removed from v8, and I'm not sure why; I think I wanted to fold it into either notifications or user permissions/workflow somehow, but perhaps never did? Regardless I don't think it needs to be part of those systems anyway, I think we should just go back through 5.7, find the places where we save and check this setting, and re-add them back into the core where appropriate for v8. This should be in the release/8.0 branch.


return error as Error

to infer the non null type we can assert the error type  as Error

Thank you for the PR!
At a glance, it works but error is just a naming convention for what is thrown, as adwinying said in #4, sometimes we can throw something else. Casting an unknown value as Error will probably lead to bugs down the line.
#7 Solves this by checking if the thrown value is an instance of Error before asserting the type as Error.
I'll close this as it adds functionality already merged in #7.


method does not override or implement a method from a supertype

Hi I got following error:
:react-native-stt:compileReleaseJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).
/Users/dariuszsocha/inspekcje-react-svn/mobiInspections-react/trunk/mobiInspections/node_modules/react-native-stt/android/lib/src/main/java/com/deadmau/rnspeechtotext/RNSpeechToTextPackage.java:24: error: method does not override or implement a method from a supertype
@Override
^
1 error
:react-native-stt:compileReleaseJavaWithJavac FAILED
I resolved it by removing "@Override", but not sure if it is good solution?

I got the same error. removing override compiles, but the library doesn't seem to read my voice when I run it.

Same problem here.
Remove "@override" is the recommended solution?


redirect() doesn't filter "\r\n" leads to CRLF attack

Hi,
redirect() doesn't filter "\r\n" which leads to CRLF attack.
For example, I use redirect("233\r\nSet-Cookie: name=salt") can set a new cookie in the client side.
:P

Is this a flaw present when setting any header?

Yes, response.set_header function is also affected

It might be a good idea to check against illegal characters in redirect(), but I'm not so sure about Response.set_header() and friends. Control characters are not allowed in header values, and if you put them in anyway, things will break. Bottle should be allowed to trust the application enough to not intentionally break HTTP or WSGI standards. If untrusted user input ends up in a header field, then that's a serious flaw in the application.

I just tested webpy and flask, they raise an exception when there are invalid characters in header. If developer want to set two response headers, he should call Response.set_header() twice instead of using \r\n

On a second thought, a simple check for '\n' won't hurt much.

Related to CVE-2016-9964

Oh, yes, I forgot that BaseResponse bypasses HeaderDict if it's not needed. Fixed.
I'm a bit surprised that this spawned a CVE. Bottle on its own is not vulnerable. You need a (very) vulnerable application to trigger this behavior. If you pass untrusted user-input to library functions then it should not be a surprise that bad thinks might happen.

I'll re-open until the release is published.

Done :) https://pypi.python.org/pypi/bottle/0.12.11
Thanks for the report and help.

Btw. this issue has been reported almost three years ago in #573 without any official response.

I still agree with @RonRothman on that old issue, and his response was probably the reason why I did not feel the need to respond 'officially':

Not sure I agree that this should be addressed at the framework level. It might just give developers a false sense of security. Better to have the web app explicitly sanitize /all/ user input (not just headers), and keep the separation of responsibilities clear.

In the end, the additional check was easy to do and the overhead does not hurt that much. The CVE was still unnecessary IMHO, as this is not a bug in bottle, but in a hypothetical application using bottle in an notoriously wrong way. You would not issue a CVE for an SQL server because it happily accepts SQL injected queries either.


Feature Request: Invite team members to organization if they are not a member yet

Currently team sync can only add users to a team if they are already a member of the organization.
Is it possible to have the team sync app also invite members if they are not a member yet?

Yes, this is definitely something that can be added :thumbs:

This was implemented in #76, but needs to be documented

implemented by #80

needs documentation


RFC: Add random subsystem and rename drivers/random to drivers/entropy

This series is part of an ongoing work to improve the random number generator story in Zephyr.
Rationale:

Not all platforms contain hardware number generators
Not all applications require cryptographically secure pseudo random numbers
Some implementations of sys_rand32_get() are not really random at all, relying on things like CPU timestamp or the cycle count.  These are quite predictable

What the series does is the following:

Moves the implementation of sys_rand32_get() to a random subsystem
Renames the drivers/random directory to drivers/entropy
Adds an implementation of sys_rand32_get() that uses Mersenne Twistter (MT19937), that is a good PRNG for applications that do not require cryptographically-secure random numbers.  This implementation is seeded from entropy gathered from the hardware drivers just once, so generating a random number is quick if there's no semaphore contention
Adds an implementation of sys_rand32_get() that is essentially an interface to an entropy driver.  This mimics the current implementation for the architectures implementing such drivers, and will most likely be removed in the future as it might not be a good idea to drain from entropy sources too quickly

There are still a few other things that need to be done to improve the random number generation in Zephyr, but this is just a stepping stone in what I believe to be the right direction.
Things I want to do in the future:

Add sys_rand_get(uint8_t *buffer, size_t size, int timeout)
Modify sys_rand32_get() to contain a timeout parameter and implement it on top of sys_rand_get()
I've been studying cryptographically safe PRNGs, and I might implement Fortuna
entropy to gather system events (e.g. interrupts) that are "unpredictable"; a PRNG can loop through these devices and use these while reseeding

Feedback is appreciated.

I think we should make the distinction very clear between pseudo-random generators, and entropy sources that could be used for seeds for a CPRNG. My suggestion would be to document sys_rand32_get() as being pseudorandom only. It is useful for things that need stochastic data (network retries, etc). This means that we need to change the various net samples that currently call sys_rand32_get() to instead call our entropy source. Some concerns:

Qemu doesn't have an entropy source. We should either figure out how to get one, or, probably better, write a fake entropy driver specifically for Qemu. What we want to avoid is a scenario where it is possible to build with crypto that needs entropy on a device that doesn't have entropy available.
I don't think Fortuna is a good fit for the types of platforms that Zephyr targets. Most contemporary MCUs have hardware entropy sources. These can be used to seed a CPRNG. There are already 3 CPRNGs in tree (two in mbed TLS: ctr_drbg.c and hmac_drbg.c, and one in Tinycrypt: hmac_prng.c). As long as there is a good source of entropy, and the users of these CPRNGs understand how and when to reseed them, these are good sources for cryptographic operations. Fortuna is more about dealing with entropy on platforms that don't have meaningful hardware entropy. Embedded systems tend to not have a lot of connectivity, and something like this doesn't work very well.
A challenge with something like Fortuna is how to get entropy early on for the system. It generally requires frequently writing state out to have available upon boot.
For an embedded system without a hardware entropy source, another approach is to use a secret and a non-decrementing counter. As long as the secret cannot be extracted from the device, when used as input to a CPRNG, this provides tolerable "random" data for cryptographic purposes, and is probably more useful, especially at system start, than waiting for enough external entropy.

@lpereira can you please fix the sanitycheck issues?

Qemu doesn't have an entropy source. We should either figure out how to get one, or, probably better, write a fake entropy driver specifically for Qemu. What we want to avoid is a scenario where it is possible to build with crypto that needs entropy on a device that doesn't have entropy available.

+1

@d3zd3z Any thoughts about the patch itself?

BTW, apparently Qemu has a paravirtualized RNG device that can be used.  However, since it's implemented as a virtio device, different Zephyr drivers will have to be written for different architectures (PCI for x86, MMIO for ARM, etc).

@lpereira can you fix the failing tests while we wait for more feedback :)

Rebased and fixed some of the failures seen by the CI.

Thanks for the review. I'll soon send a patch adding a Xoroshiro128+ PRNG instead of MT19937.

Rebased, added Xoroshiro128+, hopefully fixed problems found by the CI when renaming the syscalls.

Rebased again and fixed more errors from CI.  (Running these on Shippable is faster than locally; I apologize for the noise.)


Update RELEASE_PROCESS.md

Update RELEASE_PROCESS.md
Developer-facing docs, so I doubt the Docs Team wants to have a look (up to them).

LGTM


ADC Digi First-Order IIR Filter is Missing from V5.0 (IDFGH-9113)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

General issue report
I've recently made the transition to esp-idf v5.0 and have noticed that functions such as adc_digi_filter_set_config() and adc_digi_filter_enable() have been removed now the v4.4 legacy adc driver is depreciated.
ADC IIR functions were previously available here but haven't been kept around in v5.0. This breaking change also appears to be missing from the v4.4 to v5.0 migration guide. The back end HAL functions such as adc_ll_digi_filter_set_factor still appear to be present in v5.0 here, but obviously the HAL isn't considered a stable API so this wouldn't be a long term solution.
I could do with getting the IIR filter enabled to help compensate for the ESP32-S2's known poor ADC performance. Are there any plans to add the ADC IIR filter functions into v5.0?

I've enabled the ADC IIR filter using code as follows
#include "hal/adc_ll.h"
#include "hal/adc_types_private.h"

adc_ll_digi_filter_set_factor(ADC_UNIT_2, ADC_DIGI_FILTER_IIR_2);
adc_ll_digi_filter_enable(ADC_UNIT_2, true);

My application uses the adc_continuous driver sampling 3 channels at 20kHz, with 10nF decoupling for each adc pin. The data is streamed out to be over UDP for analysis. When switching on the IIR filter, the data clearly gets much worse, eventually containing many repeating blips in the ADC reading. Am I correct in think the IIR filter has been left out of v5.0 because the hardware doesn't function as intended? Or am I missing something in my implementation?
ADC_DIGI_FILTER_IIR Turn Off

ADC_DIGI_FILTER_IIR_2

ADC_DIGI_FILTER_IIR_4

ADC_DIGI_FILTER_IIR_8

ADC_DIGI_FILTER_IIR_16

ADC_DIGI_FILTER_IIR_64


Per-UserRedirection Issue

Changing  Per-UserRedirection to Yes caused an issue for me where I was unable to find my Poly Ctl in the Test Container. Changing  Per-UserRedirection back to No seemed to fix the issue.

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

ID: 27b6f074-8d33-8f93-6555-f7d559936fee
Version Independent ID: 1edf1754-026c-dade-898b-76a42d6363c7
Content: Creating the Project (ATL Tutorial, Part 1)
Content Source: docs/atl/creating-the-project-atl-tutorial-part-1.md
Product: visual-cpp
GitHub Login: @mikeblome
Microsoft Alias: mblome

@akeamwoods I'm not able to repro this in VS2019. Which version of VS were you using?


Import 51946bf285: Removed unnecessary reference symbol (by Caitlyn)

This is an automated proposal to look at a commit made by Caitlyn and import it into Overte

Commit:
51946bf285d79a4c6de54fca472b7eec1f4f27bf

Author:
Caitlyn

Date:
Mon, 13 Apr 2020 14:29

Removed unnecessary reference symbol

Stats:

Filename
Stats
Lines
Added
Removed
Lines in blame

libraries/entities-renderer/src/EntityTreeRenderer.cpp

4
2
2
⚠ 0

1 files
-
4
2
2
0

To work on this, please assign the issue to yourself, then look at the commit and decide whether this would be a good addition to Overte.

If the commit is useful, tag it with "Tivoli: Keep", and keep it open until it's merged.
If the commit is not useful, tag it with "Tivoli: Discard", and close it.
If the commit is not useful right now, but might be later, tag it with "Tivoli: Maybe later", and close it.
If it's hard to decide, tag it with "Tivoli: Discuss", and keep it open.

Useful commits should be submitted as a PR against Overte. Tag this issue in PR, so that it's automatically closed once the PR is merged.
You can cherry-pick this issue with this command:
git cherry-pick 51946bf285d79a4c6de54fca472b7eec1f4f27bf

this doesn't seem right. Replaces a reference with an object copy


Training or Finetuning code

Great work, Please will you release the training code. I will like to know when

Just release the training code for SVD, see train_svd_lcm.py. Thanks for the interest.

Just release the training code for SVD, see train_svd_lcm.py. Thanks for the interest.

Is there a plan to provide training scripts for SD15's  txt2video，Thanks.

@lileilai  All code will be released once accepted.

@lileilai All code will be released once accepted.

Thanks for your reply. I would like to do a video inpainting task based on animatediff_sd15, is it ok to  adapt the decouple consistency training ？


Can't find parameters in (mobile)Safari

as with tayfunulu's original version there is a problem with setting the password from osx devices
one of the users there supplied a fix which makes it work on these devices too.
https://github.com/tayfunulu/WiFiManager/issues/9#issuecomment-696630527

Hi @CharlieAt!
Thanks for the tip! Going to fix in the next update.

@h1pn0z
thanks!


I2C Pin Number ?

Hello,
I was wondering what are I2C Pin number I don't see them on schema ? Is there any ? How to use them ?
Thanks !

See here, the big graphic halfway down.
https://github.com/Xinyuan-LilyGO/T-Display-S3-AMOLED
The little 4 pin connector is Grove standard for I/O including I2C.
SDA 43, SCL 44
These pins are are also brought out on the side connector...and you can use any pin for I2C with an ESP32 S3!


Next version 2.7

Summary
This is a…

[ ] Correction
[x] Addition
[ ] Restructuring
[ ] Minor / simple change (like a typo)
[ ] Other

Reason for the Change
This is the draft preparing the changes for Picard 2.7 currently in development.
Documentation changes aiming for Picard 2.7 should have a merge request to merge into the next_version_2.7 branch.
Required updates
The following changes need to be done to reflect changes in Picard 2.7. This list should be updated as required.

[x] Document changes to Options > File naming (new script editor dialog etc.). See #108
[x] Document keyboard shortcuts for file naming script editor.  See #117
[x] Update screen shots for Options > File naming and script editor dialog.  See #114
[x] Document option to disable guessing tracknumber / title from filename
[x] Document using Markdown in plugin descriptions
[x] Document option and keyboard shortcut to view / hide the metadata view (https://github.com/metabrainz/picard/pull/1798)
[x] Update screenshot for Options > Metadata dialog.  See #116
[x] Update screenshot for Add tags from file names dialog.  (Is this necessary?  I'm not seeing anything changed.)
[x] Document Unicode escape sequences (e.g. \u2014) in Tagger Scripts.  See #119
[x] Document new $countryname() scripting function
[x] Doument regex support in $performer() (PICARD-2218).  See #118
[x] Document new "Add cluster as a release" functionality.  See #112
[x] Document new User Profile feature (PICARD-9).  See #113
[x] Document the "Exclude embedded images when clearing exising tags" option.  See #116
[x] Document the "AcousticBrainz analyzer" function.  See https://github.com/metabrainz/picard/pull/1854 (PR #124)
[x] Document option regarding submission to unofficial servers.  See https://github.com/metabrainz/picard/pull/1843
[x] Document changes to Options setting as applied to profiles.  See https://github.com/metabrainz/picard/pull/1865
[x] Document progress indicator and estimated remaining time on the status bar.  See https://github.com/metabrainz/picard/pull/1861
[x] Document new $is_multi() script function.  See https://github.com/metabrainz/picard/pull/1868
[x] Document new $year(), $month(), $day() and $dateformat() script functions.  See https://github.com/metabrainz/picard/pull/1867
[x] Update options profile section to include highlighting of options managed by the selected target profile.  See https://github.com/metabrainz/picard/pull/1869
[ ] Update scripting function documentation for changes in https://github.com/metabrainz/picard/pull/1871
[ ] Add new $parsedate() scripting function.  See https://github.com/metabrainz/picard/pull/1872
[x] Document changes to profile management from https://github.com/metabrainz/picard/pull/1880
[x] Document tagging script import/export from https://github.com/metabrainz/picard/pull/1874
[ ] Document changes to Options/Metadata from https://github.com/metabrainz/picard/pull/1885

I rebased this on my latest changes to master.  I don't think I screwed anything up, other than I left out my commit with the French translation changes because of conflicts.  I'll do the translation changes in another commit later when things have stabilized a bit.

I'll do the translation changes in another commit later when things have stabilized a bit.

Yes, I agree that is better. Let's update the translations in one go. I guess now there might be one or another small correction to the 2.6 docs, but all bigger changes should go into 2.7 anyway.

Let's update the translations in one go.

If you remember, can you please try to give me a couple of days notice before the first 2.7 release so I can update all the translations?  If not, it's not the end of the world to have the translations lag a day or two.  Thanks.

Yes, will do. Currently we expect this release cycle to take longer than previously due to larger changes (such as the file naming dialog) and not too much time at hand really.

* Update screenshot for Add tags from file names dialog.  (Is this necessary?  I'm not seeing anything changed.)

Not much, only change is that there is now a help button.

Not much, only change is that there is now a help button.

Okay, I'll look after the change.

Rebased because of significant changes to master branch.

Rebased against master branch.  Reverted all conflicts in translation files to match master.  Will need to regenerate the *.pot files once merged and re-enter the translations (using Weblate).


[Question] Should resize item cause rerender of entire grid layout?

Hi,
I'm having this issue, as described in title -
when i resize an item in my grid layout, it causes rerender of the entire grid layout.
it most likely an issue in my side, but just to make sure -
does react-grid-layout rerenders the entire grid when resizing an item?
thanks!

Is it possible stop un-mounting and mounting of child when changing from edit mode to view mode ?


Added keyword argument for disabling automatic intercept term in ModelMatrix

In some regularization methods, the intercept term is handled differently. One wants to penalize the magnitude of coefficients on explanatory variables, but not the intercept, as this would result in different models for data that were simply shifted vertically.
I added a keyword argument to disable the automatic inclusion of the offset term. I set the default for backwards capability, but in my opinion we probably shouldn't include the intercept unless the user specifically asks for it, as users should probably be centering their own data first anyways.

Coverage decreased (-3.55%) to 73.58% when pulling 53e39e431701e98ef27717d28d7806606fe33f5a on jlepird:master into 3320b2b7d160be66bb6a4bd3f95f78b8be6e0d23 on JuliaStats:master.

The issue with the implicit intercept was discussed at length here: https://groups.google.com/d/msg/julia-stats/jXvE2S_JBds/B1_2hYv6RNkJ Specifically, @johnmyleswhite talked about not storing the intercept to ease regularization, which IIUC is the same problem as yours.
Anyway, it looks like the outcome of that discussion was that we should get rid of implicit intercepts, so it might be time do make this change. (Another quite popular suggestion was to print a warning when no intercept is present, which is likely to be a common mistake, and require people to specify + 0 or -1 in those cases).

Yep, it looks like that thread contained my concern.
Regardless of how we want users to specify that they want to library to handle the intercept for them, it should be up to the libraries using Dataframes to determine how they want to implement the intercept handling.
This commit provides a temporary fix to this by allowing libraries to override the default column of one's if they want to. If we don't merge this, we should at least put a shout-out in the documentation saying that libraries can override this default by setting the modelframes .terms.intercept value to false. Currently, based on the documentation, they only approach would be to create the model matrix and then just drop the first column, but that's obviously super wasteful.

Chiming in quickly:

We need to distinguish the formula language from how we construct model matrices.
I would prefer that the formula language make intercepts be explicit.
I would also prefer that we not include intercepts in the model matrix, since this is memory-wasteful (although it might decrease compute-time because matrix multiply might be much faster than including the intercept manually). It's also strange if you happen to have a no-intercept model matrix around, since you then end up allocating a whole new matrix when you only want to try including an intercept.
All that said, not including intercepts is a radical departure from how R handles things. So it's not an easy thing to make the move.

Ultimately, I think we need to have @dmbates on board with any proposed changes. He's done the vast majority of work on linear modeling in Julia.
I don't think we should encouraging users to zero-center features by default. In my mind, that's too user-unfriendly.

@johnmyleswhite, you're right; I should have specified "library" instead of "user" my merge-request comment.
For the long term, I personally would think the following would be best:
1. Have the users specify that they want an intercept in the term with a +1.
2. From there, pass something to the library using DataFrames telling them to handle the intercept in whatever way the library deems optimal.
This commit addresses neither of these; I just wanted to be able to disable the automatic columns of one for a RLS library I'm working on.

I'm on board with that change. The reason I bring everything else up is that I think it would be good to try to build consensus for the broader changes as soon as possible. Everything that doesn't change early on risks becoming permanent.

This code has moved to https://github.com/JuliaStats/StatsModels.jl


sovle error that zookeeper.quorum configuration in install.sh #2484

What is the purpose of the pull request
This pull request sovle error that zookeeper.quorum configuration in install.sh #2484
Brief change log
conf/common.properties was changed to conf/zookeeper.properties in install.sh
Verify this pull request

Codecov Report

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

@@             Coverage Diff              @@
##                dev    #2489      +/-   ##
============================================
- Coverage     35.93%   35.89%   -0.05%
+ Complexity     2397     2394       -3
============================================
  Files           423      423
  Lines         19539    19539
  Branches       2384     2384
============================================
- Hits           7022     7014       -8
- Misses        11895    11903       +8
  Partials        622      622

Impacted Files
Coverage Δ
Complexity Δ

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

...org/apache/dolphinscheduler/remote/utils/Host.java
27.27% <0.00%> (-6.07%)
5.00% <0.00%> (-1.00%)

...e/dolphinscheduler/remote/NettyRemotingClient.java
52.51% <0.00%> (-1.44%)
10.00% <0.00%> (-1.00%)

Continue to review full report at Codecov.

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


[v0.8.x] Bump GRPC Go to v1.57.2

This fixes  CVE-2023-44487

Changes

Submitter Checklist
These are the criteria that every PR should meet, please check them off as you review them:

[ ] Has Docs included if any changes are user facing
[ ] Has Tests included if any functionality added or changed
[ ] Tested your changes locally (if this is a code change)
[ ] Follows the commit message standard
[ ] Meets the Tekton contributor standards (including functionality, content, code)
[ ] Has a kind label. You can add a comment on this PR that contains /kind <type>. Valid types are bug, cleanup, design, documentation, feature, flake, misc, question, tep
[ ] Release notes block below has been updated with any user-facing changes (API changes, bug fixes, changes requiring upgrade notices or deprecation warnings)
[ ] Release notes contain the string "action required" if the change requires additional action from users switching to the new release

Release Notes
This addresses CVE-2023-44487 by not allowing more server handlers to be run than the HTTP/2 MAX_CONCURRENT_STREAMS setting.

/kind security

@enarha Main will have a different version. So we can't cherry-pick that. And we need to do v0.8.1. So I raise this pr.

@vdemeester @avinal Can you give lgtm to this?

/lgtm


Support CosmosDB Aggregations

We're using com.microsoft.azure:azure-cosmosdb-spring-boot-starter:2.3.3, and when running a query that uses aggregations such as this one:
   SELECT c.Type, COUNT(c) as num_losses
   FROM c
   GROUP BY c.Type

we get an exception that the client does not support this:
com.azure.data.cosmos.CosmosClientException: Gateway Failed to Retrieve Query Plan: Query contains 1 or more unsupported features. Upgrade your SDK to a version that does support the requested features:
Query contained NonValueAggregate, which the calling client does not support.
Query contained GroupBy, which the calling client does not support.

There does not seem to be a newer version released, and I don't see an obvious workaround. I don't understand why the client needs to support anything, as it is mainly acting as a json marshaller.
Can you please give an ETA as to when such a basic feature as aggregations will be supported, or suggest a workaround?

@saragluna @chenrujun - please point the latest spring boot cosmos db starter, as this issue is already fixed in latest version of v4 Java SDK.

Thanks for getting back at me. It doesn't seem to be released? Latest version I see on Maven Central is 2.3.5 https://search.maven.org/artifact/com.microsoft.azure/azure-cosmosdb-spring-boot-starter

@MrBuddyCasino - I think they might have a beta version out for you to try out. They will provide the details shortly!

Thanks, testing it now.
Are you starting to release new versions to repo.maven.apache.org first instead of Maven Central, starting with v3? Because only the 3.0.0-beta.1 release seems to reside there, none of the 2.x releases.

none of the 2.x releases.

We changed the artifact name. In version 2.x, it's name is azure-cosmosdb-spring-boot-starter.
https://repo.maven.apache.org/maven2/com/microsoft/azure/azure-cosmosdb-spring-boot-starter/

azure-cosmosdb-spring-boot-starter:2.3.5
azure-spring-boot-starter-cosmos:3.0.0-beta.1


Experimental Convolution and Matmul GPU Codegen

Overview
Currently there are four main ways to generate code for matmuls across the LLVMGPU and SPIR-V backends.

GPUMatmulSimt

Tiles K, creates copies + allocations with bufferization.alloc_tensor, and distributes copies introduced by bufferization with GPUDistributeSharedMemoryCopy.
Struggles with producer fusion due to using custom patterns for distribution of the shared memory copies instead of tile + fuse.
Achieves good access patterns for the loads from global -> shared by controlling the distribution of the shared memory copies explicitly.

GPUMatmulTensorCore(MmaSync)

Tiles K, creates copies + allocations with bufferization.alloc_tensor, and does early bufferization and hard codes the thread layouts for mma.sync
Suffers from similar problems to the SIMT path, while also being inflexible with the mma intrinsics for other hardware.

LLVMGPUVectorDistribute

Tiles K, creates copies + allocations with bufferization.alloc_tensor, but accesses the copies with vector transfers. Then distributes block-level vector code directly to threads.
Has trouble reconciling producer fusions and good access patterns as vectorization breaks up producers into atoms; requires additional analysis to determine how to distribute global -> shared.
Distribution patterns are quite involved and reinvent a lot of wheels (in the current implementation).
Is good at mapping to unusual layouts required by mma intrinsics.
Is good at consumer fusions.

TransformDialectMatmulStrategy

Tiles K, creates copies + allocations with tensor.pad, and distributes the copies and matmul with their own scf.forall.
Has trouble with consumer fusions because the thread level loops are locked inside the reduction loop.
Relies heavily on a number of cleanup/canonicalization patterns to work properly to get consumers to distribute properly (+ bufferization to behave well)
Does well with producer fusions by giving access to the full producer op when making tiling decisions. This unlinks the distribution requirements of the matmul from the distribution considerations of producers.
Hard coded as it is based on transform dialect scripts.

(Note this issue is excluding cooperative matrix on SPIR-V due to the specific requirements there).
All of these strategies have notable pros/cons with respect to how well they are able to handle fusions and target different accelerated instructions. The point that is the focus of this issue is the ability to do producer fusions. Out of the above list, the only approach that is able to handle producer fusions robustly is 4) because the tiling + distribution is planned completely separately from the tiling + distribution of the matmul. The shared memory allocation between the two is what bridges the difference in distribution across the workgroup. This is especially relevant when trying to do something like implicit GEMM for NCHW convolutions. The distribution of im2col needs to be decided based on the way the kernel accesses data, not how it is used in the core computation.
Proof of Concept
The following branch is a proof of concept for a way to organize convolution and matmul codegen for GPU targets based partially on 4) but with changes to fix some of the cons listed above: https://github.com/qedawkins/iree/tree/igemm. An accompanying script can be found here: https://gist.github.com/qedawkins/ee0ca928634b5533b591ce804fa5e080
The experimental strategy here also tiles the producers of the matmul on their own (in this case manually introduced copies), however instead of waiting until after bufferization and loops are distributed to "fix up" the iterator type of the reduction loop, all of those parallel loops within the body of the scf.for are fused into one, allowing further hoisting out of the loop and fusion of consumers.
#map = affine_map<(d0) -> (d0 * 2)>
#map1 = affine_map<(d0) -> (d0 * 4)>
#map2 = affine_map<(d0)[s0] -> (d0 * 4 + s0)>
#map3 = affine_map<(d0)[s0] -> (d0 * 2 + s0)>
#map4 = affine_map<(d0) -> (d0 * 16)>
module {
  func.func @main(%arg0: tensor<128x128xf32>, %arg1: tensor<128x128xf32>, %arg2: tensor<128x128xf32>) -> tensor<128x128xf32> {
    %c0 = arith.constant 0 : index
    %c128 = arith.constant 128 : index
    %c4 = arith.constant 4 : index
    %0 = tensor.empty() : tensor<128x4xf32>
    %1 = tensor.empty() : tensor<4x128xf32>
    %2 = scf.for %arg3 = %c0 to %c128 step %c4 iter_args(%arg4 = %arg2) -> (tensor<128x128xf32>) {
      %3 = scf.forall (%arg5, %arg6) in (64, 1) shared_outs(%arg7 = %0) -> (tensor<128x4xf32>) {
        %6 = affine.apply #map(%arg5)
        %7 = affine.apply #map1(%arg6)
        %8 = affine.apply #map(%arg5)
        %9 = affine.apply #map2(%arg6)[%arg3]
        %extracted_slice = tensor.extract_slice %arg0[%8, %9] [2, 4] [1, 1] : tensor<128x128xf32> to tensor<2x4xf32>
        %extracted_slice_0 = tensor.extract_slice %arg7[%6, %7] [2, 4] [1, 1] : tensor<128x4xf32> to tensor<2x4xf32>
        %10 = linalg.copy ins(%extracted_slice : tensor<2x4xf32>) outs(%extracted_slice_0 : tensor<2x4xf32>) -> tensor<2x4xf32>
        scf.forall.in_parallel {
          tensor.parallel_insert_slice %10 into %arg7[%6, %7] [2, 4] [1, 1] : tensor<2x4xf32> into tensor<128x4xf32>
        }
      } {mapping = [#gpu.thread<y>, #gpu.thread<x>]}
      %4 = scf.forall (%arg5, %arg6) in (2, 32) shared_outs(%arg7 = %1) -> (tensor<4x128xf32>) {
        %6 = affine.apply #map(%arg5)
        %7 = affine.apply #map1(%arg6)
        %8 = affine.apply #map3(%arg5)[%arg3]
        %9 = affine.apply #map1(%arg6)
        %extracted_slice = tensor.extract_slice %arg1[%8, %9] [2, 4] [1, 1] : tensor<128x128xf32> to tensor<2x4xf32>
        %extracted_slice_0 = tensor.extract_slice %arg7[%6, %7] [2, 4] [1, 1] : tensor<4x128xf32> to tensor<2x4xf32>
        %10 = linalg.copy ins(%extracted_slice : tensor<2x4xf32>) outs(%extracted_slice_0 : tensor<2x4xf32>) -> tensor<2x4xf32>
        scf.forall.in_parallel {
          tensor.parallel_insert_slice %10 into %arg7[%6, %7] [2, 4] [1, 1] : tensor<2x4xf32> into tensor<4x128xf32>
        }
      } {mapping = [#gpu.thread<y>, #gpu.thread<x>]}
      %5 = scf.forall (%arg5, %arg6) in (8, 8) shared_outs(%arg7 = %arg4) -> (tensor<128x128xf32>) {
        %6 = affine.apply #map4(%arg5)
        %7 = affine.apply #map4(%arg6)
        %extracted_slice = tensor.extract_slice %3[%6, 0] [16, 4] [1, 1] : tensor<128x4xf32> to tensor<16x4xf32>
        %extracted_slice_0 = tensor.extract_slice %4[0, %7] [4, 16] [1, 1] : tensor<4x128xf32> to tensor<4x16xf32>
        %extracted_slice_1 = tensor.extract_slice %arg7[%6, %7] [16, 16] [1, 1] : tensor<128x128xf32> to tensor<16x16xf32>
        %8 = linalg.matmul ins(%extracted_slice, %extracted_slice_0 : tensor<16x4xf32>, tensor<4x16xf32>) outs(%extracted_slice_1 : tensor<16x16xf32>) -> tensor<16x16xf32>
        scf.forall.in_parallel {
          tensor.parallel_insert_slice %8 into %arg7[%6, %7] [16, 16] [1, 1] : tensor<16x16xf32> into tensor<128x128xf32>
        }
      } {mapping = [#gpu.thread<y>, #gpu.thread<x>]}
      scf.yield %5 : tensor<128x128xf32>
    }
    return %2 : tensor<128x128xf32>
  }
}

After fusion of parallel loops
#map = affine_map<(d0) -> (d0 * 16)>
#map1 = affine_map<(d0, d1) -> (d0 * 8 + d1)>
#map2 = affine_map<(d0) -> (d0 * 2)>
#map3 = affine_map<(d0) -> (d0 * 4)>
#map4 = affine_map<(d0)[s0] -> (d0 * 4 + s0)>
#map5 = affine_map<(d0)[s0] -> (d0 * 2 + s0)>
module {
  func.func @main(%arg0: tensor<128x128xf32>, %arg1: tensor<128x128xf32>, %arg2: tensor<128x128xf32>) -> tensor<128x128xf32> {
    %c32 = arith.constant 32 : index
    %c2 = arith.constant 2 : index
    %c1 = arith.constant 1 : index
    %c64 = arith.constant 64 : index
    %c0 = arith.constant 0 : index
    %c128 = arith.constant 128 : index
    %c4 = arith.constant 4 : index
    %0 = tensor.empty() : tensor<128x4xf32>
    %1 = tensor.empty() : tensor<4x128xf32>
    %2 = scf.for %arg3 = %c0 to %c128 step %c4 iter_args(%arg4 = %arg2) -> (tensor<128x128xf32>) {
      %3 = scf.forall (%arg5, %arg6) in (8, 8) shared_outs(%arg7 = %arg4) -> (tensor<128x128xf32>) {
        %4 = affine.apply #map(%arg5)
        %5 = affine.apply #map(%arg6)
        %6 = affine.apply #map1(%arg5, %arg6)
        %7:2 = affine.delinearize_index %6 into (%c64, %c1) : index, index
        %8 = affine.apply #map2(%7#0)
        %9 = affine.apply #map3(%7#1)
        %10 = affine.apply #map4(%7#1)[%arg3]
        %extracted_slice = tensor.extract_slice %arg0[%8, %10] [2, 4] [1, 1] : tensor<128x128xf32> to tensor<2x4xf32>
        %extracted_slice_0 = tensor.extract_slice %0[%8, %9] [2, 4] [1, 1] : tensor<128x4xf32> to tensor<2x4xf32>
        %11 = linalg.copy ins(%extracted_slice : tensor<2x4xf32>) outs(%extracted_slice_0 : tensor<2x4xf32>) -> tensor<2x4xf32>
        %12 = iree_gpu.shuffle_tensor %11[%8, %9] [2, 4] [1, 1] to %0 [%4, 0] [16, 4] [1, 1] : tensor<2x4xf32> -> tensor<128x4xf32> -> tensor<16x4xf32>
        %13:2 = affine.delinearize_index %6 into (%c2, %c32) : index, index
        %14 = affine.apply #map2(%13#0)
        %15 = affine.apply #map3(%13#1)
        %16 = affine.apply #map5(%13#0)[%arg3]
        %extracted_slice_1 = tensor.extract_slice %arg1[%16, %15] [2, 4] [1, 1] : tensor<128x128xf32> to tensor<2x4xf32>
        %extracted_slice_2 = tensor.extract_slice %1[%14, %15] [2, 4] [1, 1] : tensor<4x128xf32> to tensor<2x4xf32>
        %17 = linalg.copy ins(%extracted_slice_1 : tensor<2x4xf32>) outs(%extracted_slice_2 : tensor<2x4xf32>) -> tensor<2x4xf32>
        %18 = iree_gpu.shuffle_tensor %17[%14, %15] [2, 4] [1, 1] to %1 [0, %5] [4, 16] [1, 1] : tensor<2x4xf32> -> tensor<4x128xf32> -> tensor<4x16xf32>
        %extracted_slice_3 = tensor.extract_slice %arg7[%4, %5] [16, 16] [1, 1] : tensor<128x128xf32> to tensor<16x16xf32>
        %19 = linalg.matmul ins(%12, %18 : tensor<16x4xf32>, tensor<4x16xf32>) outs(%extracted_slice_3 : tensor<16x16xf32>) -> tensor<16x16xf32>
        scf.forall.in_parallel {
          tensor.parallel_insert_slice %19 into %arg7[%4, %5] [16, 16] [1, 1] : tensor<16x16xf32> into tensor<128x128xf32>
        }
      } {mapping = [#gpu.thread<y>, #gpu.thread<x>]}
      scf.yield %3 : tensor<128x128xf32>
    }
    return %2 : tensor<128x128xf32>
  }
}

The current rough outline for the pipeline is as follows

Tile + fuse to workgroups
Tile the reduction loop of the matmul and greedily fuse producers of the inputs.

There is an argument for tiling to threads first, however in practice this does not compose well with trying to distribute producers. When tiling fused producers of the matmul, there is an implicit requirement that the distributed producer does not break up the K tile of the matmul. Or another way to put it, the data the producer has to produce is a tile for a single iteration of the matmul loop. Tiling the matmul to a reduction first avoids strange implicit links like that.

Tile the inner matmul and fused producers to threads. If there is no fused producer for the matmul, we insert a copy to root the tiling on.

There are two possible ways to handle special matrix intrinsics at this point. For something like cooperative matrix on SPIR-V, there is no choice but to tile the matmul only to warps. For something like MFMA, WMMA, or mma.sync in LLVMGPU, we could consider adding special operations to represent them before vectorization, or use some kind of tensor encoding to abstract out the specifics of the intrinsic while tiling. The other path is to keep using vector distribution for mapping to intrinsics, but this mixing of warp and thread semantics might be difficult to manage.

Fuse the parallel loops of the matmul and producers into one.

This will likely require a step to map the trip counts of the parallel loops to a fixed common iteration count once considering unaligned and dynamic cases. This would include handling for cases like over and underprovisioning the loop (forming an scf.for inside the body of the loop).
This fusion currently inserts a special op to manage the former boundary between the loops. The simplest lowering of the op is to an allocation + two linalg.copy ops to copy the slices for each worker in and out of the shared allocation, + a barrier to synchronize the workers. However the lack of support for mixed buffer-tensor semantics makes this unwieldy today. In the future we will likely want to add different lowerings for this "tensor shuffle" to allow generating something like a wait token for mapping to asynchronous copies, or to simplify the multibuffering + pipelining transformations.

Hoist the inner parallel loop out of the scf.for and greedily fuse all consumers of the loop.
Multibuffer + pipeline (first level of scheduling)
Vectorize
Bufferize
Lower the scf.forall ops and late stage target specific lowerings.

With this approach, the only difference with convolution is the presence of an im2col operation introduced between steps 1 and 2. The im2col operation will just need to implement the tiling interface and have a way to decompose to linalg/vector ops once tiled to threads.
Tasks
A list of rough tasks, some of which are already done in the above or started elsewhere.
Shared

[ ] Add support for fusing producer-consumer scf.forall ops.
[ ] Add a shuffle_tensor operation to bridge the boundary between fused scf.forall ops.
[ ] Add support for hoisting perfectly nested parallel scf.forall loops out of an enclosing scf.for loop.
[ ] Add support for fusing consumers using the tiling interface.
[ ] Add patterns to map scf.forall from one thread mapping + count to another.
[ ] Rework multibuffering/pipelining/prefetching based on shuffle_tensor and possibly more formal pipeline stages.
[ ] Try mixed thread + warp semantics for mapping to special intrinsics.
[ ] Try tensor encodings to abstract intrinsic details out of thread/lane tiling.

Convolution

[ ] Add a linalg_ext.im2col op for NCHW convolutions to avoid gather vectorization

I updated the branch + script to include hoisting an scf.forall out of a loop.
cc @MaheshRavishankar

Thanks @qedawkins . Most of this makes sense. I'll make time tomorrow to walk through more if you have the time. The only part that is a bit sketchy for me is the "fuses parallel loops".
If they are really fusable, you should be able to tile + fuse. For example, your end-state code looks very similar to what you get from tile and fuse. Not to say we never need "fusion of loops", but more that we havent needed it so far....

Here is a dump-after-all with the current branch + spec above: https://gist.github.com/qedawkins/953b4e9da86ad48c94b978323f2b39ae. The key IR we're trying to get to is the following
func.func @main() {
  %c32 = arith.constant 32 : index
  %c2 = arith.constant 2 : index
  %c1 = arith.constant 1 : index
  %c64 = arith.constant 64 : index
  %c4 = arith.constant 4 : index
  %c128 = arith.constant 128 : index
  %c0 = arith.constant 0 : index
  %0 = hal.interface.binding.subspan set(0) binding(0) type(storage_buffer) alignment(64) offset(%c0) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<128x128xf32>>
  %1 = hal.interface.binding.subspan set(0) binding(1) type(storage_buffer) alignment(64) offset(%c0) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<128x128xf32>>
  %2 = hal.interface.binding.subspan set(0) binding(2) type(storage_buffer) alignment(64) offset(%c0) flags(ReadOnly) : !flow.dispatch.tensor<readwrite:tensor<128x128xf32>>
  %3 = flow.dispatch.tensor.load %0, offsets = [0, 0], sizes = [128, 128], strides = [1, 1] : !flow.dispatch.tensor<readonly:tensor<128x128xf32>> -> tensor<128x128xf32>
  %4 = flow.dispatch.tensor.load %1, offsets = [0, 0], sizes = [128, 128], strides = [1, 1] : !flow.dispatch.tensor<readonly:tensor<128x128xf32>> -> tensor<128x128xf32>
  %5 = flow.dispatch.tensor.load %2, offsets = [0, 0], sizes = [128, 128], strides = [1, 1] : !flow.dispatch.tensor<readwrite:tensor<128x128xf32>> -> tensor<128x128xf32>
  %6 = tensor.empty() : tensor<128x4xf32>
  %7 = tensor.empty() : tensor<4x128xf32>
  %8 = scf.forall (%arg0, %arg1) in (8, 8) shared_outs(%arg2 = %5) -> (tensor<128x128xf32>) {
    %9 = affine.apply affine_map<(d0) -> (d0 * 16)>(%arg0)
    %10 = affine.apply affine_map<(d0) -> (d0 * 16)>(%arg1)
    %extracted_slice = tensor.extract_slice %arg2[%9, %10] [16, 16] [1, 1] : tensor<128x128xf32> to tensor<16x16xf32>
    %11 = affine.apply affine_map<(d0, d1) -> (d0 * 8 + d1)>(%arg0, %arg1)
    %12:2 = affine.delinearize_index %11 into (%c64, %c1) : index, index
    %13 = affine.apply affine_map<(d0) -> (d0 * 2)>(%12#0)
    %14 = affine.apply affine_map<(d0) -> (d0 * 4)>(%12#1)
    %extracted_slice_0 = tensor.extract_slice %6[%13, %14] [2, 4] [1, 1] : tensor<128x4xf32> to tensor<2x4xf32>
    %15:2 = affine.delinearize_index %11 into (%c2, %c32) : index, index
    %16 = affine.apply affine_map<(d0) -> (d0 * 2)>(%15#0)
    %17 = affine.apply affine_map<(d0) -> (d0 * 4)>(%15#1)
    %extracted_slice_1 = tensor.extract_slice %7[%16, %17] [2, 4] [1, 1] : tensor<4x128xf32> to tensor<2x4xf32>
    %18 = scf.for %arg3 = %c0 to %c128 step %c4 iter_args(%arg4 = %extracted_slice) -> (tensor<16x16xf32>) {
      %19 = affine.apply affine_map<(d0)[s0] -> (d0 * 4 + s0)>(%12#1)[%arg3]
      %extracted_slice_2 = tensor.extract_slice %3[%13, %19] [2, 4] [1, 1] : tensor<128x128xf32> to tensor<2x4xf32>
      %20 = linalg.copy ins(%extracted_slice_2 : tensor<2x4xf32>) outs(%extracted_slice_0 : tensor<2x4xf32>) -> tensor<2x4xf32>
      %21 = iree_gpu.shuffle_tensor %20[%13, %14] [2, 4] [1, 1] to %6 [%9, 0] [16, 4] [1, 1] : tensor<2x4xf32> -> tensor<128x4xf32> -> tensor<16x4xf32>
      %22 = affine.apply affine_map<(d0)[s0] -> (d0 * 2 + s0)>(%15#0)[%arg3]
      %extracted_slice_3 = tensor.extract_slice %4[%22, %17] [2, 4] [1, 1] : tensor<128x128xf32> to tensor<2x4xf32>
      %23 = linalg.copy ins(%extracted_slice_3 : tensor<2x4xf32>) outs(%extracted_slice_1 : tensor<2x4xf32>) -> tensor<2x4xf32>
      %24 = iree_gpu.shuffle_tensor %23[%16, %17] [2, 4] [1, 1] to %7 [0, %10] [4, 16] [1, 1] : tensor<2x4xf32> -> tensor<4x128xf32> -> tensor<4x16xf32>
      %25 = linalg.matmul ins(%21, %24 : tensor<16x4xf32>, tensor<4x16xf32>) outs(%arg4 : tensor<16x16xf32>) -> tensor<16x16xf32>
      scf.yield %25 : tensor<16x16xf32>
    }
    scf.forall.in_parallel {
      tensor.parallel_insert_slice %18 into %arg2[%9, %10] [16, 16] [1, 1] : tensor<16x16xf32> into tensor<128x128xf32>
    }
  } {mapping = [#gpu.thread<y>, #gpu.thread<x>]}
  flow.dispatch.tensor.store %8, %2, offsets = [0, 0], sizes = [128, 128], strides = [1, 1] : tensor<128x128xf32> -> !flow.dispatch.tensor<readwrite:tensor<128x128xf32>>
  return
}

I updated the branch to enable generating MFMA ops as well with this spec: https://gist.github.com/qedawkins/334c6bce944c6b860066ca873e1388d2
I'm going to start landing some of the transform ops used in the above spec.

This issue is stale and all sub-tasks are either finished or were determined to not be needed, closing.


README - Windows installation via cargo is missing external openssl dependency

🐛 Bug Report
For installing wrangler on Windows via cargo, the README fails to mention that openssl is a runtime external dependency; only perl is mentioned as a compile-time external dependency.
Environment

operating system: Windows 10 19042
output of rustc -V: rustc 1.50.0 (cb75ad5db 2021-02-10)
output of node -v: Not installed
output of wrangler -V: Reported error shows / wrangler 1.13.0 after fixing
contents of wrangler.toml N/A

Steps to reproduce

Install rustup - https://rustup.rs/
Install scoop - https://scoop.sh/
Install perl external dependency: scoop install perl
Install wrangler: cargo install wrangler (which succeeds)
Attempt to login: wrangler login (error appears)

The issue can be fixed by installing openssl external dependency: scoop install openssl
What did you expect to see?
The usual login message on the CLI:

Allow Wrangler to open a page in your browser? [y/n]

What did you see instead?
This error in a popup window (screenshot attached):

The code execution cannot proceed because libssl-1_1-x64.dll was not found. Reinstalling the program may fix this problem.

Starting from a fresh windows install, installing the VS C++ tools, rustup, and Strawberry Perl as recommended by https://www.perl.org/get.html works for me without having to explicitly install openssl.  Perhaps there's something about the way scoop installs perl that it doesn't include openssl?
Assuming I'm reading correctly that scoop install openssl worked for you, I'll add a note to the readme.

Yup, additionally running scoop install openssl did the trick for me, so that update sounds good to me. 🙂


Add SAMS integration to samplesheets

To be discussed further with @holtgrewe.
Spec

Integrate SAMS querying in the Sample Sheets app via an iframe

Test first that the iframe solution works, there SHOULD not be an issue embedding it in a modal via vue.js

Allow pasting phenopacket data from SAMS back into the sample sheets
TBD: How to integrate data pasted from the generated results?

SAMS contains ontology terms from multiple ontologies, which are usually handled as separate columns
Have this as a row-specific functionality and paste into multiple cells at once?
OR, introduce a specific column type for this and paste all into that?
OR, allow both of the above?

Initially we can start by simply linking "extra links" IDs to SAMS. See #1475.


Translate some lines into Spanish

Translate "You cannot create an object of Vehicle class anywhere in your program. You can however, extend the abstract vehicle class and create objects of the child classes;" into Spanish

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 🎉


When there is only one discrete point, it shows up on the bottom of the y-axis or near the top, but not midway

Ideally the bottom would be for 0, so any value over zero would show up above the zero point, and this would vary depending on the other settings.

For instance, here, maybe it would show 12% up, instead of on the bottom.

I think the same issue is also relevant here, where the values should probably be quite close together.

Simply setting yMin = 0 (instead of yMin = d3.min(this.attrs.data.discrete.ys);) in distPlotD3.js:430 seems to solve this problem for me. Is there more to the issue?

It's possible that's all there is to it.


Context not propagated for Flowable<?> rxjava3 client methods

Expected Behavior
When using rxjava3 http client with Flowable<?> as response type the context should be propagated to all threads processing the request. i.e ServerRequestContext.currentRequest() should be present to operations processing response from the client (.map, .flatMap, ...).
Actual Behaviour
When calling rxjava3 based client method with Flowable<?> as return type, context is not propagated to the next threads processing the response. ServerRequestContext.currentRequest() is empty.
Using Single<List<?>> as return type works as expected.
Sample project provided with two endpoints:
GET http://localhost:8080/consumer/single
GET http://localhost:8080/consumer/flowable
Steps To Reproduce

Create rxjava3 client method with Flowable<?>  as return type
Call the client from a controller.
Process the response from the client in .flatMap
Get the current server request using ServerRequestContext.currentRequest()

Environment Information
Ubuntu 20.04 / temurin 17
Example Application
https://github.com/msixta/rxjava3
Version
4.1.5

@dstepanov can you check this?


[WIP] Voxelshop creates .profile directory which breaks rustup.

[WIP report, hope to add some more details but this is better than nothing. :) ]
Problem
When Voxelshop first runs (and before .voxelshop is created AFAICT), it creates a directory named .profile.
On a Mac this is located at:

~/.profile/default.layout a.k.a $HOME/.profile/default.layout a.k.a. /Users/<username>/.profile/default.layout

This issue was also mentioned in passing in https://github.com/simlu/voxelshop/issues/295#issuecomment-478766197.
Apparent cause
After a lot of searching, I think I've identified why this is happening.
AFAICT the code that is creating the directory is in the (closed) portions of the com.jidesoftapplication framework--specifically the code related to layout persistence (primarily docking related?).
In JIDE_Docking_Framework_Developer_Guide.pdf there is a section that talks about layout persisting which mentions:

JIDE Docking Framework offers the ability to save windows information and settings between sessions, using the java.util.prefs package. This means that under Windows, the information will be stored in the registry, while under UNIX, it will be stored in a file in your home directory.
All layout data are organized under one key called the ‘profile key’. This can be any string, but usually it’s your company name (we use “jidesoft” in our sample application). You should call setProfileKey(String key) to set this key when your application starts up.
[...] The default set of preferences lies under the key “default”, and is used whenever loadLayoutData() and saveLayoutData() are called to persist the window state.

And later on:

Another option you have is to let the JIDE Docking Framework use its default file location. By default it uses java.util.prefs to store layout information. However if you prefer disk storage, but want JIDE to manage the location, you can call setUsePref(false) to disable using java.util.prefs. Your layout data will be stored at {user.home}/.{profileName}, where profileName is either “default” or your profile name as specified above. If you want to specify where to store the layout data, you can call setLayoutDirectory(String dirName). Please note, the directory will be used only when setUsePref is false. You also need to make sure you call set those values (i.e. setProfileKey(), setUsePref(), setLayoutDirectory()) before you call any loadLayout() or saveLayout() methods.

Note: My supposition is that the documentation is incorrect when it says the default profileName value is "default"; or, when the order of calls is incorrect the profileName is different (e.g. "profile" leading to .profile as the filename).
It's not entirely clear to me if the correct order is used in the relevant code:
https://github.com/simlu/voxelshop/blob/4094dd1ef36eee0d406b69235156956a866769c3/src/main/java/com/vitco/app/layout/WindowManager.java#L533-L541
Additional details
If ~/.profile exists as a file an error appears in the console:
10:08:00 PM Failed to create directory: /Users/<username>/.profile

Related links

http://www.jidesoft.com/javadoc/com/jidesoft/swing/LayoutPersistenceManager.html

Example use of setProfileKey() from example: https://github.com/futureVIP/RFID_JAVA_UI/blob/feb9f3c2c5cf7c5aca730fbe34d19e362ac0e990/examples/D1.DockingFramework/SimplestDockingFrameworkDemo.java#L37-L39

Documentation for DockableBarManager which extends LayoutPersistence and documentation for LayoutPersistence which includes setProfileKey() and setUsePref() which include more details (but the directory name is not described correctly). (Also mentions layout files have a .layout extension and mentions the "default" layout which implies default.layout file is created by it.)
See also:

http://www.jidesoft.com/javadoc/com/jidesoft/swing/AbstractLayoutPersistence.html
http://www.jidesoft.com/javadoc/constant-values.html#com.jidesoft.swing.AbstractLayoutPersistence.DEFAULT_PROFILE_NAME (Which suggests default of profile isn't set there?)
http://www.jidesoft.com/javadoc/com/jidesoft/docking/DockingLayoutLoader.html
http://www.jidesoft.com/javadoc/com/jidesoft/action/DefaultDockableBarManager.html

https://github.com/futureVIP/RFID_JAVA_UI/blob/feb9f3c2c5cf7c5aca730fbe34d19e362ac0e990/src/JideDemos.java#L48-L68

Turns out I couldn't resist the temptation to decompile the non-open source code and track down the issue for sure... :D
So, the issue is occurring due to the profileKey not being set at the correct time; and, as a result the (undocumented) default _profileKey value "profile" is being used in getLayoutDirectory() to create the directory via mkdirs if it doesn't exist! (Which is behaviour that also doesn't appear to be documented.)
// From: `com.jidesoft.swing.AbstractLayoutPersistence` in `jide-common-3.4.8.jar`
//
// (via jadx-gui 0.9.0)

public abstract class AbstractLayoutPersistence implements LayoutPersistence {
    protected static final String DEFAULT_PROFILE_NAME = "default";
// [...]
    public static final String PROPERTY_PROFILE_KEY = "profileKey";
    public static final String PROPERTY_USE_PREF = "usePref";
    public static final String PROPERTY_VERSION = "version";
// [...]
    protected final String LAYOUT_POSTFIX = ".layout";
    protected String _layoutDirectory = null;
    protected boolean _loadingLayoutData = false;
    protected String _profileKey = "profile";   // <------------------------------ [HERE!]
// [...]
    protected boolean _usePref = true;

// [...]

    public String getLayoutDirectory() {
        boolean z = f28i;
        String str = this._layoutDirectory;
        if (z) {
            return str;
        }
        if (str != null) {
            return this._layoutDirectory;
        }
        str = SecurityUtils.getProperty("user.home", "") + File.separator + "." + this._profileKey;
        File file = new File(str);
        boolean isDirectory = file.isDirectory();
        if (!z) {
            if (isDirectory) {
                return str;
            }
            isDirectory = file.mkdirs();
        }
        if (isDirectory) {
            return str;
        }
        System.err.println("Failed to create directory: " + str);
        return str;
    }


Tabs in race result do not work

I can not click on the tabs for showing qualify / sprint / race results. Also the icons are aligned left and not spread over de width of the column. Running HA 2023.9.2 and also up2date F1-card.

I had that too! But it automagically fixed itself for me. Can you try and clear your cache?

After some hassle resolved too after removing the card twice.One more thing: your card says Qatar race starts at 16:00 NL time. Should be 19:00 as far as I know.the locale says “nl”.Greetings, PaulVerstuurd vanaf mijn iPadOp 3 okt 2023 om 16:18 heeft Marco Kreeft @.***> het volgende geschreven:
I had that too! But it automagically fixed itself for me. Can you try and clear your cache?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

Hmm the api passes the wrong time. Nothing I can do unfortunately

Issue with the tabs seems solved. I added following lines, missing in my setup after readding the results-card:
standings:
show_flag: true
show_team: true
show_teamlogo: true
Now tabs show as before and are also clickable again.

But then adding the tabs_order makes it a mess again....

I think it's cache tbh. It's working fine on my machine but I clear the cache after every update

But I'll try to reproduce tonight

I'm not sure on how to clear the cache on iOS devices sorry. But as long I can't reproduce I can't help you. Seems like you are the only one so far having this issue


Add https://github.com/giriprasath1012

Related issue

What changes does this PR do?
Screenshots (If any)
Questions

added my name


cmd/cgo: panic when length too large

Fixes #53965

Please don’t reply on this GitHub thread. Visit golang.org/cl/418494.


Add support for postfix unary operators

Some operators like the factorial one ! are written after its operand instead of before. Currently, Calculate has no support for them.

 This changes will be available in Calculate version 2.1.1.

Already achieved in #92.


Added load test with pods doing real works

cc @davidopp @quinton-hoole @wojtek-t

LGTM - thanks for doing this.

Can you please look into Jenkins failure - it seems like a real one.

Made a change which should help. Please take a look if you are ok with it.

I'm fine with your approach.

It seems that it didn't help.

One more try

Not related fail. Kicking Jenkins.

@k8s-bot test this please

Let me know when you want me to review this again

PTAL

LGTM

Shippable is flaky


Running a “git pull” from the terminal causes a desync

Product and Version [VS/VSCode]: VSCode
OS Version [macOS/Windows/Linux]: macOS
Live Share Extension Version: v1.0.3206
Target Platform or Language [e.g. Node.js]: C#
What were you doing when you encountered the desync?

Open file from host user's machine
Start making edits
host user does git stash, git pull and git rebase on the command line
My files do not get their context refreshed; contents de-sync (host can see my pointer on the correct line/col on his side, but our file contents do not match)

How often have you encountered desyncs?
Very often

Hey @stewartadam , sorry to hear about that. I believe I have a fix for this issue that we'll be releasing next week. I'll follow back up with you then to see if this has fixed your problem.
Are there other scenarios besides doing git operations that has led to you getting out of sync?

I can't tell what in particularly causes it, but I have yet to have a liveshare session longer than ~an hour that doesn't go without a desync.
We're pairing up writing unit tests with some moderate refactoring (new unit tests files, renaming files/changing interface names, etc) and Live Share seems to eventually reach a point where our files are desynced despite editing in the same file.
At that point, VS Code will prompt one of us saying the file contents is newer on disk and we have to wipe the set of changes from one of the users.
This might be exasperated by the fact that VS Code+Omnisharp very poorly handles detection of test cases across multiple solutions, so we end up having to open a separate VS Code instance on the host (with the specific folder containing the csproj we are editing) to run the tests.

Thanks! That's incredibly useful info! I believe the fix for these issues is actually the same as the fix I mentioned above for the git operations (fingers crossed!).
So let's follow up once that's been released to see if you still have issues.

Glad to hear it! Ping me when it's out and I'll be happy to test/confirm for you.

fwiw, is there a way to 'pull' down changes from the host as a share client? Once a de-sync occurred, even closing + re-opening the file appeared to use the locally cached copy instead of refreshing from the server.

You'd have to re-join the session. The quick way to do this is to use the reload command (ctrl+shift+p, then "Reload Window").
But it's possible the host machine also has corrupt state and they'd have to reshare.

Hey @stewartadam , we just updated the extension with some new diagnostic tools that should help us figure out if what I think is going on is actually going on. Could you do me a huge favor and go through these steps the next time you encounter a sync issue?
On both the host and the guest:

Enable the liveshare.diagnosticMode setting
Open the file that's out of sync
Run the liveshare.getCoeditingInformation command (ctrl+shift+p to open the command palette, then search for "Get co-editing information") and paste the results below

To check that messages are being sent and received, open the Output view (ctrl+shift+u) and select "Visual Studio Live Share Coediting" from the dropdown. Type a character. On the sending end, you should see output like:
[2020-12-10 23:51:25.351 ] Post message: {"messageType":"textChange","changes":[{"length":0,"newText":"a","start":400}],"changeServerVersion":12,"clientId":24,"fileName":"/src/foo.txt","time":1607644285349,"sendId":16}

On the receiving end, you should see output like:
[2020-12-10 23:51:27.713 ] Receive message: {"context":{"GuestSessionId":"31","IsOwner":"False"},"sourceId":"Coauthoring","eventId":45,"jsonContent":"{"messageType":"textChange","changes":[{"length":0,"newText":"a","start":400}],"changeServerVersion":12,"clientId":24,"fileName":"/src/foo.txt","time":1607644427514,"sendId":25}","time":1607644427713}

Are messages being sent and received?

I had someone (host) do a Git Pull while collaborating with them and wasn't able to repro this, but I'll keep trying and see if it happens when they switch branches or the likes.

@daytonellwanger , This would be resolved by your most recent fix, right?

Are you still experiencing this? We've released some fixes that might resolve this, but I want to confirm.
Either way, I'm going to track this issue over here. Please join the conversation there. Thanks!


The dropdown in DataChartUI shows a category for both transaction types - even though it is only in one

I am not sure what layer the code that causes the bug is on...

Brain dump on the matter:
Since the categories are called with AsNoTracking, they seem to be treated as new items when saving the transaction.
Before any of this, look if there is a setting for CodeFirst that controls the creation of sub objects

As a precondition, maybe add unique indexes to the appropiate tables - code can be found in VirtualGabbai
First try and see if just removing the AsNoTracking is enough
- This entails updaing the update methods as well
- The tests should be able to catch any regressions in this area
If that does work, before saving the item, pull the categories from the database and set the properties to be equal to the object that is returned
Last ditch scenario is too revert to having seperate sets of objects.
- Although I am not so sure that this will actually help.

Per this article the change is to update the non-read actions to use FK properties.


Firebase Invites never survive App Installation Process on iOS

Xcode version: 9.4
Firebase SDK version: 5.2.0
Firebase Component: Invites
Component version: 3.0.0

Steps to reproduce:

Download Firebase Invites example project:
https://github.com/firebase/quickstart-ios/tree/master/invites

Run Pod Install

Download GoogleService-Info.plist, enter the Reversed_Client_Id in the URL Types and the Associated Domains from your Firebase Project

Compile and run the app

Send an Invite through the app

Uninstall the app, click on invite Link, you get to the App Store page

Install the app through Xcode, the link the app is receiving from ApplicationOpenURLOptions is always just "myAppScheme://google/link/?dismiss=1&is_weak_match=1"

I am trying to implement Firebase Invites on iOS right now, and after an app install I am also always receiving "myAppScheme://google/link/?dismiss=1&is_weak_match=1" instead of the deep link. Therefore FIRInvites cannot parse it and it does not work. Is this related to the issue with Dynamic Links? I have one iPhone 6 on iOS 11.4 and one iPhone 5 on 10.3.3 and it does not work on both of them.
Since I was not sure if there was an error in my implementation of the Invites SDK, i downloaded the quickstart Invite project from Github and it did not work there eighter. My iOS App in the Firebase Console has App - ID, Bundle - ID, App Store ID and Team ID all filled in, and Dynamic Links are activated.
Mind you that it does work on android (with the same firebase project) and on iOS when the app is already installed, so this problem is just occuring when the user is first installing the app after receiving an Invite.

any updates on this one?

Does this occur on all iOS versions after #1244 is fixed?

It is at least on 11.4
Are you able to reproduce it? Maybe the issue is on my end after all.

@morganchen12 I am experiencing same issue..
invite url works only when app is in background mode...
fresh install and terminated app state doesn't respond to dynamic link
Any update on this?

No updates yet, but it does look like this is a bug. Mandar, can you take a look when you get a chance?

@morganchen12 thank you for prompt reply.
I hope this gets fixed asap.

@morganchen12 I'm having the same issue.
Any update? Thank you

@dmandar @morganchen12 please fix this issue asap...we need workable invites in our app

we have build our whole feature of refer a friend on this firebase dynamic link and suddenly you came to know that firebase dynamic link is not working :(

We are also still experiencing the same issue on fresh iOS installs with Firebase Dynamic links (SDK version: 5.5.0) Android and post-install iOS are working as expected.
Is there an update to this issue on what we should expect?

@nathankallman. It seems that I have the same issue. Also, I cannot reproduce the bug on Android.

Having the same problem with FIrebase Dynamic Links on iOS. Normal dynamic links (when the app is already installed) work fine, deferred dynamic links lead to the store, I install the app and open it, nothing (application:openURL:sourceApplication:annotation: is not called). If I then close and restart the app, application:openURL:sourceApplication:annotation: is called and I do get the deeplink. I'm 99.9% sure that this used to work properly say half a year ago.
By the way, if I click the link, go to the store, then install the app from XCode, the deeplink works fine. With a build on the App Store it fails though.
Here's my link by the way: https://pu68v.app.goo.gl/w167?link=http%3A%2F%2Ftappyplane.com%3Fsplashscreen%3DtappyWheel%26payload%3D%257B%2522data%2522%253A%2522deeplink%2520data%2522%257D%26token%3DWITBBARG%26reward%3D%255B%257B%2522amount%2522%253A%2B20%252C%2B%2522type%2522%253A%2B%2522CURRENCY%2522%252C%2B%2522id%2522%253A%2B28%257D%255D&apn=com.spilgames.tappyplane&ibi=com.spilgames.tappyplane&isi=1128336623&d=1. I test by opening this link in Safari, then tapping on "Your dynamic link" at the top of the page.

Deeplink did not survive after app store install. If i install the app first and then click on the link it works as expected.
IOS => 12.1.1
xcode => 10.1
Firebase/Core => 5.14.0
iPhone 6S+
Also tested with IOS 12.0.1 & iPhone 6S
Also tested with wifi and cellular
Best

@PeeGee85Spil We need the bundleID of the app to be the same as that configured in the Firebase console. Can you confirm the bundleID of your app (from the app store) is the same as what is you have during development?
Also, please check if you have the app preview page (https://firebase.google.com/docs/dynamic-links/link-previews) enabled and if so, is shown before you navigate to the app store.


Fixed File layout for Franz 5

updated package.json and webview.js to work with the newest version of Franz.

Does this mean that this is currently broken with latest Franz?

@stevenroose this PR should fix the Franz 5 support

@agodlydeciple thank you


initial simplate support

Fixes #6

Coverage remained the same at 89.394% when pulling 3dd83b60a98b5306f5d3484ed83458ae83399c30 on full_simplate_support into ec8f3fe19c4ca736a9b82b98d8a7f460bee43e11 on master.

Coverage decreased (-0.2%) to 89.231% when pulling b0536e74d6e0d0d38822a346eee22234bb0189a2 on full_simplate_support into ec8f3fe19c4ca736a9b82b98d8a7f460bee43e11 on master.

Coverage decreased (-0.2%) to 89.231% when pulling 8f995f369f12e12c393a416d4a0bd104b6a4fd2b on full_simplate_support into ec8f3fe19c4ca736a9b82b98d8a7f460bee43e11 on master.

Don't like these comments!


Add verbose flag, specify queries per node, increase pod start timeout

Add a verbose flag to make default output quieter.
Change specification of number of queries to be in terms of the expected average number of queries to a pod.
Increase the timeout for pods to enter the running state.
Fix a bug I introduced in an earlier PR where I made a for variable locally scoped but I actually needed it to be in scope later.

Shippable & Travis are both failing, but I don't think that is related to this PR.

There are some problems with Shippable not using the latest shippable.yml for older PRs (#5687). You may need to rebase for it to pass.

The latest runs on shippable (https://app.shippable.com/builds/55134fd69461c40b00437ae3) and travis (https://travis-ci.org/GoogleCloudPlatform/kubernetes/builds/55866705) work fine for this PR.
The failing test is a flake: https://github.com/GoogleCloudPlatform/kubernetes/issues/5496

Sorry looks like I saw the wrong link for shippable.
Yu-Ju is right. Rebase should help.

Used leveled logs instead, thank you. PTAL.

Thanks. Will merge on green.

Shippable is happy and so am I.