Proposed admission changes

Let's discuss the phases we want to have for admission, and when they should execute.
apply defaults

executed as soon as object is decoded from request
plugin receives decoded object
plugin can modify it however it sees fit
I'm guessing there's no disagreement here

enforce constraints / reconcile / validate

for things like quota
has to happen after rest storage validation

because we want users to get back real validation errors if they exist
we don't want to do something like charge quota, have the object fail validation, then rollback the quota charge

should be called immediately before we persist

Is this sufficient? Do we need more phases? If so, where?

Is this sufficient? Do we need more phases? If so, where?

Seems like three phases make more sense:

mutate input object
yes/no on complete input object without side effects
yes/no on complete input object with side effects

By skipping step 2, you're opening yourself to having to deal with compensation unnecessarily.  Many (most even?) decisions don't require side-effects and I think the distinction between those two phases is significant enough to warrant keeping them separate.

we don't want to do something like charge quota, have the object fail validation, then rollback the quota charge

You're going to be dealing with case anyway.  Storage could fail for any reason and you'll still be in the business of compensation.  Reordering strategy components could make it less common, but we shouldn't fool ourselves into thinking it eliminates the problem.  Furthermore, a post-hook from the RESTHandler has more general utility.

Could you give examples of steps 2 and 3?
Where do you charge quota and actually modify the quota objects in storage?
Could you elaborate on quota compensation and the post-hook?

Could you give examples of steps 2 and 3?

Step 2 would be something like the ImagePolicy admission plugin which inspects image pull specs and can reject them or PSP which could reject privileged pods or our plugin for preventing docker builds.
Step 3 would be something like quota.  Quota charges quota by modifying quota objects in storage (side-effect).

Could you elaborate on quota compensation and the post-hook?

If the Create call fails (validation is common, but you could also have an AlreadyExists from etcd for instance), then the quota object in storage should get decremented (maybe), if your "creating X" mark is still present.  Derek has a design about it, but basically you track individual creates by a UID.  This compensation is required either way.  Performing step 3 after validation doesn't solve your problem in the general case, but a post-hook would give an agnostic way to do it that provides a general hook for "do optional (not guaranteed) stuff after storage completion.

If the Create call fails (validation is common

rest Validation would reject prior to Create

but you could also have an AlreadyExists from etcd for instance

True, and a good point. I'll come back to it in a sec.
I'm still not yet sold on separating 2 and 3. Are you suggesting this?

Decode request object
admission.ApplyDefaults
rest.BeforeCreate
rest.Validate
admission.Step2 (don't allow object modifications)
admission.Step3 (allow object modifications)
rest.Create
admission.PostHook

As far as quota compensation goes, I agree that an already-exists error necessitates that compensation occur after persistence. Is admission.PostHook above in the right place?

I'm still not yet sold on separating 2 and 3. Are you suggesting this?

I think separating out Validation is extraneous and unnecessary, so remove your steps 3 and 4.
Step 6 doesn't allow incoming object mutations. It is the structured spot to allow side-effecty operations like touching other resources.  Because those tend to be more expensive than other operations, leave them for last.

Could you post the order you would prefer?

Could you post the order you would prefer?

Decode request object
admission.ApplyDefaults
admission.FieldLevelAuthorization (no side-effects)
admission.Step3 (side-effects expected)
rest.Create
admission.PostHook

So you don't see any need to run an admission phase after rest validation but before persistence?
Also, if we have 4 admission phases, you're now talking about 4 full loops through all the admission plugins, with the possibility of 4 external calls per request. I know we have to expect some increase in overall time/latency, but do you think 4 is excessive?
Also, do you think we'll want to modify Handles so each plugin can report which verb (create/update/etc) plus which phase it handles, or is that just too confusing?

So you don't see any need to run an admission phase after rest validation but before persistence?

Personally, I'd rather have the posthooks than ripple up strategy related bits into the RESTHandler.

Also, if we have 4 admission phases, you're now talking about 4 full loops through all the admission plugins, with the possibility of 4 external calls per request. I know we have to expect some increase in overall time/latency, but do you think 4 is excessive?

I don't think it will much matter overall.   Its the same amount of work, just split into logical chunks.

Also, do you think we'll want to modify Handles so each plugin can report which verb (create/update/etc) plus which phase it handles, or is that just too confusing?

The phase seems like it ought to be different interfaces.  Handles needs to fixed up to provide better resource slicing though.

I know @smarterclayton had some comments about the interface and not wanting it to be a catchall (https://github.com/ncdc/kubernetes/pull/14#discussion_r78388335). What do you all think we should have for interfaces?

I know @smarterclayton had some comments about the interface and not wanting it to be a catchall (#14 (comment)). What do you all think we should have for interfaces?

I would have one interface for each admission stage. People could then implement the ones they care about.

I would have one interface for each admission stage. People could then implement the ones they care about.

I like that. It means that Handles can remain relatively simple. You wrote above about wanting to update it to provide better resource slicing. What did you mean by that?

I think object validation must be a first class phase of the API server.
A pod with an invalid spec should always get a validation error independent of the number of admission controllers that are enabled/disabled on the server.  I think having to handle compensation because of an invalid API request is not a desirable end-state since it bogs down the system with handling TOO much compensation by doing no filtering at all.
I am supportive of a model as follows:

hook to mutate an object

API SERVER VALIDATES MUTATED OBJECT IF ITS A WRITE OPERATION

hook to do yes/no without side-effects
hook to do yes/no with side-effects

Personally, if we have a good control on the ordering of 2/3, I could see a rationale explanation for merging those two into a single ("hook to yes/no with/without side-effects"), but it seems having them split makes things sensible moving forward.
It's not clear to me how we order each Admission plug-in differently for each hook phase.  I guess ordering in concept should not matter, but it seems like for item 3) above it does, and for item 1) it does when looking at InitialResources running before LimitRange.

model as follows:

Even with that approach, you'll still need/want to have a postHook to handle failures in the general case, so it lifts code out into the RESTHandler that doesn't really need to be there and doesn't reduce overall complexity of what you need to build.
The only argument I see for it is that bad requests will cost a little more since side-effects will have been performed.  I would sacrifice a little performance for cleanliness in the code.

@smarterclayton @deads2k @sttts @liggitt @derekwaynecarr @bparees @pmorie @pweil- @mfojtik @eparis updated, PTAL

I like the separation of the interfaces and the phase application but I'm still not sure how the PSP case would implement its current logic without abusing the interface so it can make multiple passes at defaulting and validating.  Maybe it's a special case scenario and that's ok since ideally admission plugins shouldn't be very complicated.

@pweil- let's discuss. We may not be able to solve all the hard problems, but I certainly want to try to avoid significant complexity for things like PSP if we can avoid it.

In a related discussion, @deads2k mentioned that we'll want to have the openshift-apiserver (and presumably any other federated apiserver) run some of the kube admission plugins such as NamespaceLifecycle. Given that, here are some issues/questions/comments:

Which kube admission plugins should a federated apiserver run?
Should it be up to the federated server's author?
Should there be an easy way to get a handle to the default kube admission chain?
This means that openshift-apiserver has to vendor every kube admission plugin that it needs to run
Will there be potential rebase issues?
A plugin such as NamespaceLifecycle needs to talk to the kube-apiserver
When running in kube-apiserver directly, it doesn't really need any configuration
When running in a federated apiserver, it needs to be configured to point to the kube-apiserver
It would be ideal if there were some easy, centralized way to configure all admission plugins requiring a url to the kube-apiserver, instead of potentially needing a config entry/file per plugin just so we can specify the kube-apiserver url
We also need to be able to specify the credentials that a federated apiserver should use when talking to the kube-apiserver
Similar to configuring the url, it would be ideal if there were an easy, centralized way to configure the credentials to use

Even if we end up with a deployment where both kube-apiserver and openshift-apiserver are in the same pod (and therefore the kube-apiserver url that openshift uses is obvious), we still have the credentials question, and we should nonetheless have a plan for how arbitrary federated apiservers specify the url to kube-apiserver.

I just chatted with @pweil- about PodSecurityPolicy (PSP) issues with the proposed design changes. The way things work today, with the single Admit() function:

We have a list of possible PSPs we can use
For each PSP:
We apply defaults from the PSP to a copy of the object
We validate against the PSP
1. If there are no validation errors, we apply the changes to the object and proceed with the request
1. Otherwise, we record the validation errors, then move on to the next PSP
If we don't find any PSP where validation passes, we fail the request

Looking at the proposed changes, we are splitting admission ApplyDefaults and Validate into two distinct phases, with RESTStorage logic happening in between. Not every request verb uses ApplyDefaults in this proposal (although I suppose they could, but that just seems weird), but they all do have Validate. Does it make sense to run PSP defaulting and validation in the Validate admission phase? Or can you all think of a better way to do this?

Does it make sense to run PSP defaulting and validation in the Validate admission phase? Or can you all think of a better way to do this?

I'd rather not allow mutations during the Validation step.  I'd rather push the authorization evaluation into defaulting if they really can't be split.

I'd rather not allow mutations during the Validation step

I assume you enforce this by passing a deep copy of the object instead of the actual one?

I'd rather push the authorization evaluation into defaulting if they really can't be split.

As the proposal currently stands, not every restful method runs admission's ApplyDefaults. Which verbs does PSP apply to? Certainly create. How about update/patch? Connect? I assume not delete/delete collection.

I assume you enforce this by passing a deep copy of the object instead of
the actual one?

Probably a deepequals before final acceptance.
On Mon, Oct 3, 2016 at 3:19 PM, Andy Goldstein<EMAIL_ADDRESS>wrote:

I'd rather not allow mutations during the Validation step
I assume you enforce this by passing a deep copy of the object instead of
the actual one?
I'd rather push the authorization evaluation into defaulting if they
really can't be split.
As the proposal currently stands, not every restful method runs
admission's ApplyDefaults. Which verbs does PSP apply to? Certainly create.
How about update/patch? Connect? I assume not delete/delete collection.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ncdc/kubernetes/pull/14#issuecomment-251199646, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AH2BSjxUX5-NZSBM_SyZpvbiMB4faNPMks5qwVVZgaJpZM4J5dsG
.

Moved upstream


configurable retries and timeout

I think it'd useful to have options for tries and timeout. For ease-of use,timeout should probably refer to the whole timespan and each individual retry shall have a timeout of timeout/tries.

sounds good. wanna do pr? :)

Will do.

fixed by you!


Code to handle non-UTF8 paths never reached

We get occasional errors in production as follows:
org.eclipse.jetty.util.NotUtf8Exception: Not valid UTF8! byte C0 in state 0
    at spark.utils.urldecoding.Utf8Appendable.appendByte(Utf8Appendable.java:148)
    at spark.utils.urldecoding.Utf8Appendable.append(Utf8Appendable.java:116)
    at spark.utils.urldecoding.UrlDecode.path(UrlDecode.java:51)
    at spark.utils.urldecoding.UrlDecode.path(UrlDecode.java:26)
    at spark.Request.getParams(Request.java:503)
    at spark.Request.changeMatch(Request.java:123)
    at spark.Access.changeMatch(Access.java:31)
    at spark.http.matching.RequestWrapper.changeMatch(RequestWrapper.java:51)
    at spark.http.matching.Routes.execute(Routes.java:56)
    at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:130)
    at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50)

I think the problem lies in two different implementations of NotUtf8Exception being used:
spark.utils.urldecoding.Utf8Appendable:91 throws an instance of org.eclipse.jetty.util.Utf8Appendable.NotUtf8Exception
But spark.utils.urldecoding.UrlDecode:91 catches spark.utils.urldecoding.Utf8Appendable.NotUtf8Exception
As far as I can tell, spark.utils.urldecoding.Utf8Appendable.NotUtf8Exception is never instantiated at all in the Spark code base.
As a result, the fallback decodeISO88591Path method in spark.utils.urldecoding.UrlDecode for handling ISO-8859-1 paths is never used.
I'm happy to submit a pull request for this myself. But it would be nice if someone with a better understanding of the relevant code can confirm whether my analysis is correct.

This is perhaps a non-problem, at least as far as Spark is concerned.
Jetty throws these exceptions in response to invalid URIs. I think what I'm seeing is Jetty refusing to accept invalid URIs.
An example bad URI is example.com/?%%0
We see a lot of these exceptions in our logs. It could be that these bad URIs are in the arsenal of "script kiddy" tools.
I think this could be closed.


dev1 special character issue

This has been resolved on dev1.cs

GREAT !!
One remaining case needs to be fixed:

This also needs to be addressed for the DAI part...  Just a few examples:

Thank you VERY much!


[Drag Experiment] A branch to try drag feature

This is a temp branch just for trying the drag to dismiss feature, will close it soon.

Hey @metrue, would you please delete this branch, and use a private fork for experiments? You are always welcome to make a PR providing new functionality though. Have a nice day.


NixOS module request: Sozū

Project description
The goal of this request is to be able to configure Sozū from a NixOS module the same way it is for Nginx or other reverse proxies.

Package PR: https://github.com/NixOS/nixpkgs/pull/239995
Tracker: https://nixpk.gs/pr-tracker.html?pr=239995


Ensure destination image doesn't exist prior to running import.

Prior to the #1227, import failed early when an image name was already used. Following #1227, the failure occurred after inflation, which introduces a significant delay.
Example invocation:
➜   ./main -image_name ubuntu  \
               -data_disk -client_id  edens-test \
               -source_image projects/compute-image-tools-test/global/images/debian-8-translate \
               -project=edens-test
[import-image] 2020/06/16 12:07:40 the image "ubuntu" already exists. Please remove it, or pick a name that isn't already used

The failure message appears instantly (at least to my eyes!).

/hold


RFC: Replace "undefined" variable values with "null"

Summary
A super minor suggestion which might help with consistency by replacing any undefined variable instances to null when creating an operation.
Proposed Solution
As noted here

null is the undefined or None of GraphQL

Keeping this format inside of the client would be a nice to have.
What this looks like
const x = createRequest(query, { arg1: "hello", arg2: undefined, arg3: null })

console.log(x);
// { key: ..., query: ..., variables: { arg1: "hello", arg2: null, arg3: null } }

Other notes
Shoutout to @sporieg for bringing this up - https://github.com/FormidableLabs/urql-devtools/pull/180#issuecomment-623514385

We do normalise variables once they leave Graphcache according to the operation definition node, but we don’t do anything special in @urql/core.
We could totally filter out undefined, but setting it to null would change the hash which isn’t desirable in some cases. Currently stringifyVariables filters out undefined values in JSON as the normal JSON.stringify would.
I wouldn’t move the variables normalisation over as this causes some use-cases to be impossible. For instance in some cases it’s now possible to pass variable fields to Graphcache that aren’t defined in the operation for extra mutation update data for instance.
This was from a prior issue where other solutions weren’t feasible and this was directly requested, as more explicit.
So we could filter out the undefined fields from variables entirely, but I myself would think that’s unexpected as well, since a custom exchange may rely on Object.keys or more generally out, it alters data outside of the exchange pipeline

Thanks for the response @kitten!

We could totally filter out undefined, but setting it to null would change the hash which isn’t desirable in some cases.

Are you referring to this as a breaking change (which I suspect would break some persistent cache logic)? Outside of that, I wouldn't see any issues as long as we are to set undefined values to null pre-hashing.

Currently stringifyVariables filters out undefined values in JSON as the normal JSON.stringify would.

My understanding is that we wouldn't want to do this, otherwise we end up with a situation where a nullable variable is declared in the operation definition but doesn't exist in the variables argument.
I just tested the following (both of which worked fine)

Sending a variables object which is missing a property for a nullable variable
Sending a variables object which has an additional property (not declared in the query)

At the risk of going off a tangent, I'm seeing a potential bug here that we should probably look into based on some of the potential issues you've raised:
const query = `
  query DoSomething(arg: String) {
    id
    name
  }
`

// No arguments
const example1 = {
  query,
  variables: undefined,
};

// No arguments (nullable is explicitly undefined)
const example2 = {
  query,
  variables: {
    arg: undefined
  },
};

// No arguments (nullable is explicitly null)
const example3 = {
  query,
  variables: {
    arg: null
  },
};

// No arguments (additional variables which are ignored)
const example4 = {
  query,
  variables: {
    arg: null,
    otherArg: 1234
  },
};

All of these examples should have the exact same key as the GraphQL server will consider them all to be identical.

All of these examples should have the exact same key as the GraphQL server will consider them all to be identical.

That's possible, but to illustrate the complexity; this is the code that is used in Graphache to normalize variables without filtering them. This is done for internal variable usage: https://github.com/FormidableLabs/urql/blob/bde241f911a0109abd86b3ecb9e717dfb8243890/exchanges/graphcache/src/ast/variables.ts#L50-L74
This is done to filter the normalized variables, i.e. filterVariables is called on the output of normalizedVariables to then get only the keys that are defined: https://github.com/FormidableLabs/urql/blob/bde241f911a0109abd86b3ecb9e717dfb8243890/exchanges/graphcache/src/ast/variables.ts#L32-L48
For keys we'd have to use filtered and normalized, internally in other exchanges we'd only want normalized & non-filtered to allow for extra data, and fetch exchanges would then have to filter those again.

we end up with a situation where a nullable variable is declared in the operation definition but doesn't exist in the variables argument.

I think this could also be a warning; we currently just don't have a good placement for the warning. IMHO everything in and around Client (i.e. outside the framework-bindings, and outside the exchanges) is pretty low on complex logic right now, so introducing this would make me a little confused of where to put it.

Some key takeaways for me personally is that we are in a JS system from the client up until the fetchExchange. The reason why we normalise the variables in graphCache is to align closer to the server since this is the whole philosophy behind our normalised caching system.
In GQL undefined and null have the same meaning but in JS they are similar but not the same, I think we could impose a lot of hidden issues by translating this early on. There is no more way to differentiate values passed to the operation which in my opinion, correct me if I'm wrong, is against our value of hackability.
Some breaking changes that come to mind would be people that rely on the key now to persist the results of the document-based cache somewhere. (doesn't impact normalised caching)
What about queries that do the following
query (id)

query(id: null)
query(id: undefined)

I'd imagine the last transforming to query() or query which would have a different meaning than query(id:null) I'd guess.

Closing due to inactivity and since it's been established that null and undefined are still needed for the time being since they're distinct states/inputs


Problems with Rollup and Bloomer

Suddenly, I stop being able to publish a library that uses bloomer with rollup during its deploy. The error was with the classNames import, but actually, it was with every import that was not a namespace. So, in bloomer all imports are written in the form import * as ______ from ______;
This seems ok for namespaces, but it is not for functions. So, is ok for React, but wrong for classNames. If you import functions like import ______ from ________; there's no problem at all....
Here is the source to the rollup discussion: https://github.com/rollup/rollup/issues/670#issuecomment-223046229
I'm not sure if this is a rollup problem, or a bloomer problem.... But people at rollup says is wrong to import a function as a namespace. So....

That's true, actually this was because of the version of TS. Thanks to bring this issue. What we need here is upgrade TS and add this in our tsconfig.json:
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,

Then we need to refactor all of our imports from import * as XXX from 'XXX' to import XXX from 'XXX'. For now I'm having a lot of issues with internet (moving to Japan and they are not very English friendly :/ ). You want to do that change, check your rollup and then make a PR for this change?

@AlgusDark are you still here?


add R.isNaN

Useful given the questionable semantics of isNaN.

This misses isNaN(new Number(NaN))

This misses isNaN(new Number(NaN))

Yes, to mirror Number.isNaN. There's even a test case which asserts that R.isNaN(new Number(NaN)) evaluates false.

:herb:

Fair enough, but does it not make more sense to implement this in R.is?
On Sun, Mar 22, 2015 at 3:37 PM, Scott Sauyet<EMAIL_ADDRESS>wrote:

[image: :herb:]
—
Reply to this email directly or view it on GitHub
https://github.com/ramda/ramda/pull/963#issuecomment-84684370.

Fair enough, but does it not make more sense to implement this in R.is?

I don't think so. R.is checks a value's type. It's confusing if the first argument is a value in one case.

Yeah, good old JS:
R.is(Number, NaN); //=> true,

which matches
typeof NaN; //=> "number"

I assumed @megawac was suggesting R.is(NaN, x), but perhaps I misunderstood.

Yea
On Sun, Mar 22, 2015 at 5:32 PM, David Chambers<EMAIL_ADDRESS>wrote:

I assumed @megawac https://github.com/megawac was suggesting R.is(NaN,
x), but perhaps I misunderstood.
—
Reply to this email directly or view it on GitHub
https://github.com/ramda/ramda/pull/963#issuecomment-84708969.

I assumed @megawac was suggesting R.is(NaN, x), but perhaps I misunderstood.

Right, but it would also not do to change the current behavior of .is(Number), so imagine:
var x = 0 / 0;
R.is(Number, x); //=> true
R.is(NaN, x); //=> true
// WTF?

That's all.


[Bug Report]  Keep Alive - Dialog - Error next Tick

Element UI version
1.3.4
OS/Browsers version
macOs
Vue version
2.3.3
Reproduction Link
https://jsfiddle.net/4fwphqhv/
Steps to reproduce

Click on the button to display the popup

Wait for one second

Close the popup

Click again on the button

What is Expected?
The popup should be opened again while having kept its previous state thanks to keep-alive attribute
What is actually happening?
This error is shown

[Vue warn]: Error in nextTick: "TypeError: Cannot read property 'insert' of undefined"
TypeError: Cannot read property 'insert' of undefined

https://jsfiddle.net/4fwphqhv/3/


Unity 2022.2+ DX11/12 3D Active Stereo

Wanted to move my comments over here and figure out ways to help contribute

I have looked at your plugin, its brilliant work.
For Generic Active 3D Stereo Frame Sequential (Single Video Cable @120Hz+) in Unity 2022.2+ and DX11/12 - I could not figure out how to modify it to output 3D Active Stereo with DX11/12 on Unity 2022.2 Using Nvidia Geforce 2080 and newer GPUs ; although, I did try. I was also concerned about being able to consistently present the left eye frame to left eye of user each time an app starts. I hit a definite limit on my knowledge.
My project is using HDRP 14.0.6 with Unity 2022.2.13f1 preparing for the 2022.3 LTS. I plan on keeping to 2022.3 LTS for the project. I have verified that your approach works with all in-frame packed stereoscopic outputs you list, Interlacing, checkerboard, above below, side-by-side. I use DX11 for DLSS compatibility on Nvidia 2080+ GPUs. I use DX12 for Raytracing modes, which presently only runs with my content very well on a Nvidia 3080+ GPU. I need to optimize better for Raytracing. All of my selected volume over-rides for various effects work as expected with your approach to stereoscopic output. The Cinemachine cameras that I am using do not work with the default prefab you have, but I see there is a way to fix that.

I'll add an independent sequential method for my plugin and we test it. As sequential is just switching the left/right camera image each frame so it is very easy to realise it in the engine.
But as I understand you trying to make it via Unity builtin S3D API and get a problem.
Only thing is how glassess know the current frame is left or right(I guess some flag available in NVidia driver) but I think this is no problem even without such a flag if you have a fast swap left/right view option by hotkey like in my plugin. So I'll make and test how it works.

I agree, it is easy to just swap eyes with a hotkey.  The display wont receive a message to activate 3D mode on the display from this approach, but that is also ok, there is a button the remotes to activate it on the display once the game starts.  I think those 2 situations are completely ok to accept. I tried adding an independent sequential method to your plugin and couldn't figure it out. I am sure I am missing something in how to swap cameras between frames, I think that VSYNC will also have to be turned on to make sure that player settings don't break it.
This example from Unity works for VSYNC and attempt to lock it to 120Hz -
void Start()     {         // Sync the frame rate to the screen's refresh rate         QualitySettings.vSyncCount= 1;        // Make the game run as fast as possible         Application.targetFrameRate = 1;         // Limit the framerate to 60         Application.targetFrameRate= 120;     }

Just add a bool like leftView=true/false and reverse it in Update. Then add a sequential method to the shader and supply the bool as leftView=1/0 and make the shader show a full left/right image based on the 1/0 switcher.
Yes, vSync is required for sequential and for Over/Under.

Just add a bool like leftView=true/false and invert it in Update. Then add a sequential method to the shader and supply the bool as leftView=1/0 and make the shader show a full left/right image based on the 1/0 switcher.
Yes, vSync is required for sequential and for Over/Under.

Hi, do have an example code of this solution?

Hi, do have an example code of this solution?

Hi, no but I'll make it when I have active S3D hardware.
I already finished the new Unity S3D version and am testing it now on different demos before release.

I am also very interested in using sequential rendering
How exactly would we need to modify the shader?

OK I think add this for testing in coming new version

Hi!
Added Method.Sequential test.
Should work with shutter glasses if VSync is on and FPS equal to refresh rate of monitor.

Hello,
I have a 3d projection system with 120hz projector, nvidia Quadro Gpu, Volfoni Glasses and ART tracking system, which I use for VR presentations (non headset) and I tryed to implement your amazing plugin on Unity 2022 but had no luck so far.
I Downloaded the Stereo3D&Direct3D11.1_Unity_Demo and I can run it  in 3D without any problem on my system (rendering Pc has W11) but I was not able to create  myself a build on Unity 2022.3 using the "Stereoscopic-3D-system-for-Unity-2019--Direct3D11.1" distribution or even the main branch.
Tried with just one camera and with two cameras and in the build I see only the GUI window but i get only a mono rendering.
For sure I'm doing something wrong or forgot some requirements. It should be great if you could share more info on how to implement your S3d in a Unity project (maybe sharing the demo project will be the easiest).

Hi,
I am now making native S3D plugin and also found black screen with "GUI as overlay" and other script errors while testing on Unity 2019, 2020 so I'll solve this problem.
I made native D3D11 Stereo3D working with Unity directly via C++ plugin so no more need "stereo display non head-mounted" support, anyway builtin "separation/convergence S3D" settings approach is incorrect and mess with "single/multi pass" rendering not working as it should.
But now all is clean and easy, Unity only makes render to 2 textures and sends its pointers to the plugin which do all other work by loading textures into back buffers of D3D11 or OpenGL so I think I'll add "quad buffer" support also.

Hello,
It’s an important job IMHO,  I saw your native D3D11 Stereo3Dhttps://urlsand.esvalabs.com/?u=https%3A%2F%2Fgithub.com%2FVital-Volkov%2FRemake-of-Direct3D11-native-stereoscopic-sample&e=4641458d&h=a26ff5ea&f=n&p=y  but I think that Unity plugin and quad buffer is still work in progress.
I will look at your github page,
PS. do not understand why Unity is not developing this part internally but if you create something working, I think it will be useful for many customers.
Bruno Arina
More srl
Sede legale
Strada della Campanara, 15
61122 Pesaro (PU)
Sede operativa
Via L. Manara, 136
63074 S. Benedetto del Tronto (AP)
Tel.  0736 618160
Mobile  +39<PHONE_NUMBER>
Email<EMAIL_ADDRESS>Web:    www.more.mrhttp://www.more.mr/
Non stampare questa e-mail.
Questo documento è formato esclusivamente per il destinatario. Tutte le informazioni ivi contenute, compresi eventuali allegati, sono da ritenere esclusivamente confidenziali e riservate secondo i termini del vigente D.Lgs. 196/2003 in materia di privacy e del Regolamento europeo 679/2016 – GDPR-  e quindi ne è proibita l’utilizzazione ulteriore non autorizzata. Se avete ricevuto per errore questo messaggio, Vi preghiamo cortesemente di contattare immediatamente il mittente e cancellare la e-mail. Grazie.
Please don’t print this e-mail.
Confidentiality Notice – This e-mail message including any attachments is for the sole use of the intended recipient and may contain confidential and privileged information pursuant to Legislative Decree 196/2003 and the European General Data Protection Regulation 679/2016 – GDPR-. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message.
Da: Vital @.>
Inviato: domenica 24 marzo 2024 11:26
A: Vital-Volkov/Stereoscopic-3D-system-for-Unity-2019- @.>
Cc: Bruno Arina @.>; Comment @.>
Oggetto: Re: [Vital-Volkov/Stereoscopic-3D-system-for-Unity-2019-] Unity 2022.2+ DX11/12 3D Active Stereo (Issue #7)
Questa è la prima volta che ricevi un'email da questo mittente. Assicurati che sia qualcuno di cui ti fidi.
Hi,
I am now making native S3D plugin and also found black screen with "GUI as overlay" and other script errors while testing on Unity 2019, 2020 so I'll solve this problem.
I made native D3D11 Stereo3Dhttps://urlsand.esvalabs.com/?u=https%3A%2F%2Fgithub.com%2FVital-Volkov%2FRemake-of-Direct3D11-native-stereoscopic-sample&e=4641458d&h=a26ff5ea&f=n&p=y working with Unity directly via C++ plugin so no more need "stereo display non head-mounted" support, anyway builtin "separation/convergence S3D" settings approach is incorrect and mess with "single/multi pass" rendering not working as it should.
But now all is clean and easy, Unity only makes render to 2 textures and sends its pointers to the plugin which do all other work by loading textures into back buffers of D3D11 or OpenGL so I think I'll add "quad buffer" support also.
—
Reply to this email directly, view it on GitHubhttps://urlsand.esvalabs.com/?u=https%3A%2F%2Fgithub.com%2FVital-Volkov%2FStereoscopic-3D-system-for-Unity-2019-%2Fissues%2F7%23issuecomment-2016762865&e=4641458d&h=46de38b6&f=n&p=y, or unsubscribehttps://urlsand.esvalabs.com/?u=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FBHG7CTUTGFZOCDZO7CY4IL3YZ2S3VAVCNFSM6AAAAAAWWY3W2WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMJWG43DEOBWGU&e=4641458d&h=f1cc5356&f=n&p=y.
You are receiving this because you commented.Message ID<EMAIL_ADDRESS>--
Questo messaggio e' stato analizzato con Libraesva ESG ed e' risultato non infetto.
Clicca qui per segnalarlo come spam.https://mail.websolute.com/action/4V2XK74lBfz5yPL/learn-spam
Clicca qui per metterlo in blocklisthttps://mail.websolute.com/action/4V2XK74lBfz5yPL/blocklist

My answer to mail may be useful for others:
I'll add a more detailed manual later.

PPI is the hardware spec parameter of each screen and it's constant and required for all other settings precision calculated in real millimeters
so if you once input real values of your screen PPI and your eyes IPD then you get 100% depth same as real life S3D and never overshoot your eyes farther then parallel optic axes to outside(negative) angle
which easily happens with unscaled common settings where you need to check unknown settings IPD result with a ruler on screen on each game or viewport size change.
My system does all of this automatically based on calculated viewport size(as it knows real screen size based on PPI and native resolution of screen) and no matter what texture resolution static or dynamic
all calculations do in millimeters. So PPI is critical for precision and you should know the PPI of your screen. Make correct settings once and save it for each user and you get 100% S3D depth like in real life
and then play only with Virtual IPD which only affect world scale S3D perception how it see small or big creatures(or human with special optic) with different stereo base in real life and no matter what virtual
creature you emulate max S3D depth will be same 100% if you set you real correct PPI and user IPD, period. PPI is critical and should always be real to match all other sizes to real millimeters. But then
you sure can set the User IPD lower than your real IPD and get not a 100% depth pseudo S3D not like in real life(you will see star sky like in room wall depth instead of infinity).
The Main thing is NEVER overshoot your IPD.
So I always using real PPI and User IPD settings as constants and changing only Virtual IPD for fun or just leave Virtual IPD match to User IPD for real view and
if you also adjust FOV until Screen Distance match your real distance from eyes to screen then you get precision match virtual world with real.
But for HMD Screen Distance is not real due to lenses magnification so I think calculations should be like these: Real HMD screen distance from eyes divide to
lenses magnification for example 60mm / 3x = 20mm or just set FOV from HMD specs if it correct.

Hi, I am now making native S3D plugin and also found black screen with "GUI as overlay" and other script errors while testing on Unity 2019, 2020 so I'll solve this problem. I made native D3D11 Stereo3D working with Unity directly via C++ plugin so no more need "stereo display non head-mounted" support, anyway builtin "separation/convergence S3D" settings approach is incorrect and mess with "single/multi pass" rendering not working as it should. But now all is clean and easy, Unity only makes render to 2 textures and sends its pointers to the plugin which do all other work by loading textures into back buffers of D3D11 or OpenGL so I think I'll add "quad buffer" support also.

Hello there,
first of, congrats for the huge work on stereo3D, it's really fascinating.
I see you mention Unity native plugin to produce true quad buffer, it's exactly what i try to do....
I have an old DLP projector with active shutter glass from a decommissioned powerwall, i try to make it work in sequential mode.
it kind of work with your Stereo3D script but the glass sync is very fragile and become weird very quickly. I think te way to go is quad buffer trough a unity native plugin, preferably on openGL because the quadro GPU is on a Win7 OS.
I began to work on that but i cant manage to use the texture pointer from unity to inject it into th openGL window.
it seem's like you already done this job so, any advices or example tat i can learn from is welcome.
Thanks
Martin

Hi mfleurent, thanks!
Yes, Sequential output in my S3D system should work fine only if FPS is stable over monitor refresh and VSync is On.
I am making a D3D11 native C++ plugin now for my S3D system but I plan to also make it for OpenGL.
I read about a problem with Unity pixel format set on window creation for OpenGL quad buffer S3D and code injection via hook required, do you already solve this?
I found that you can directly use Unity render texture in native C++ if the format is RGB111110Float and you set RenderTexture.Create() before using the pointer. If I use common render texture format then I have black screen and get render texture to show in C++ only after making the GPU copy texture from Unity render texture first. It drops FPS a little but it works also to show this copied texture as a shared resource with a second D3D device.


Ability to set MTU for the VF

What would you like to be added?
Ability to set the MTU for the VF by sending the configuration
What is the use case for this feature / enhancement?
I have a PF configured with 9000, but the VF attached inside the Pod shows up with default 1500. I am trying to solve this using the tuning plugin, but it is better to handle this by the CNI plugin instead of a need for an additional plugin to configure this.
if CNI handles this, there is an opportunity to reset the MTU for VF back to the original MTU as part of the reset VF function. I don't see MTU in the VF parameters is there a reason?
Thanks

The SR-IOV CNI deals mainly with setting up (and taking down) VFs. I don't think MTU has a special meaning in a VF context and I'm not sure this is the right project for configuring generic fields of the kernel networking driver - but I'm happy for others to jump in and we can see if there's a good argument for this feature.

MTU is just in the context of the VF netdevice like all other interfaces. I didn't get why tuning plugin is not a good solution here?

I was hoping it can be handled by the CNI. If I use the tuning plugin to set the MTU, there is no way to reset the value back after the VF is released. Plugin today allows setting the MAC address, why is MTU not part of that parameter list? There are some plugins that have MTU as one of the parameters.
I am okay if this parameter is not part of the list, but then if I have my PF configured with MTU 9000, I would expect that the VFs created should be set to 9000. By default, they are getting created with an MTU of 1500.

I didn't say I am against it. The mac address is not a good example because for VF you have the administrative mac (VF mac) and the effective mac (netdevice mac which is what tuning can config). And we didn't want to configure them in both places. MTU is not really VF configuration is the netdevice configuration.  Anyway I am fine to add this as configuration for the VF to resolve the issue to restore the value   (if others will approve)

@moshe010 I submitted changes to support setting MTU. If folks approve and review these can be merged.
https://github.com/intel/sriov-cni/pull/124

@svallala regarding your point that if PF MTU is set to 9k then all VFs should be set to 9k might not be the right case. Each application that uses VF might have different MTU requirements. Regarding the point you mentioned about MAC address - it is being set I guess because VFs, when created, will not have the MAC address set and we can not set it from within the application POD. Default MTU of 1500 is set on all interfaces.

@krishnajs, yes you are absolutely right, each VF could be set to a different MTU based on the application needs. There is no way to set the MTU today for a VF unless you provide additional privileges for the Pod. The changes I submitted, is an attempt to provide that flexibility.

@svallala MTU can be only on the interface where the kernel driver is being used but not when DPDK is being used. Also to your point - " If I use the tuning plugin to set the MTU, there is no way to reset the value back after the VF is released. "  Why are we worried about resetting since we can set a new value when we deploy the pod again?

This seems to be an issue for kernel interfaces only, and there's no clear way to communicate this as part of the config. The direction right now is still to set the MTU with the tuning cni using a chained plugin in the network attachment definition.
@svallala it would be great if you could provide an example config using this model and we can add a doc that explains how to implement this use case and the caveats with it.


Added viewport fraction parameter to tabView

Added a parameter viewportFraction to make the viewportFraction of PageView used inside TabView customizable
Fixes #98506
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

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

Google testing failures look like an unrelated flake.  Manually marking as passing.
no such target '//testing/.../ios:IPHONE_8_PLUS_12_0': target 'IPHONE_8_PLUS_12_0' not declared in package


[url_launcher] Links containing Russian characters do not open

If you add Russian characters to the link, they stop opening and throw an exception:
[ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: PlatformException(argument_error, Unable to parse URL, Provided URL: Optional("https://гибдд.рф/"), null)
#0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:607:7)
#1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:177:18)
<asynchronous suspension>
#2      launch (package:url_launcher/url_launcher.dart:101:23)
<asynchronous suspension>
#3      _launchURL (package:url_launcher_test/main.dart:33:8)
<asynchronous suspension>

Links for test:

https://www.google.com/search?q=тест
https://гибдд.рф/

Code Sample:
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

const String _url1 = 'https://www.google.com/search?q=тест';
const String _url2 = 'https://гибдд.рф/';

void main() => runApp(
      MaterialApp(
        home: Material(
          child: Center(
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                RaisedButton(
                  onPressed: () => _launchURL(_url1),
                  child: const Text('Open url 1'),
                ),
                const SizedBox(
                  height: 10,
                ),
                RaisedButton(
                  onPressed: () => _launchURL(_url2),
                  child: const Text('Open url 2'),
                ),
              ],
            ),
          ),
        ),
      ),
    );

void _launchURL(String url) async {
  if (!await launch(url)) throw 'Could not launch $url';
}

@stuartmorgan Why did you decide that they are not valid? They are valid, you can check them in the browser and other applications. Users want to open such links, but your solution does not allow them.

@stuartmorgan @danagbemava-nc
NEW UPDATE!
On Android and Windows it's valid, but on iOS and macOS it's not valid?
I made this conclusion because this code does not work only on macOS and iOS. This is a bug.

Why did you decide that they are not valid?

I didn't. The authors of the RFCs that define valid URLs decided it.

They are valid, you can check them in the browser

Browsers accept a lot of non-URL input and then make best-effort attempts to convert it to a valid URL. The url_launcher plugin requires valid URLs.

Users want to open such links, but your solution does not allow them.

Nothing is preventing developers from converting arbitrary input to valid URLs using the heuristics of their choice, then opening those valid URLs.

I made this conclusion because this code does not work only on macOS and iOS.

url_launcher works by passing the input to the OS for handling. Some operating systems have their own logic for attempting to convert arbitrary input to valid URLs. On those operating systems, your invalid input happens to work.

This is a bug.
Please reopen the issue.

This is not a bug, and will not be re-opened. The plugin's API contact is that you pass a valid URL, and you are violating that API contract.


was the Receiver trained for 2 epochs also?

Hi thank you for your great works!
i have three questions

I checked the number of epochs for training the Transitter in the paper: two
But I'd like to ask to the number of epochs for training the Receiver
it's because the bleu score during the test (eval_f1.py) is very low (e.g., 0.01)

And could you let me know more details about training PSqure bot (e.g., training epochs)

Finally, what's the difference of the tasks between the "orignial" and "revised"
not literal meaning, but training
These things are not described in the paper so I failed to reimplement the test results.
I really appreciate if you let me know more details for getting test results as the paper.
thank you

@Jeiyoon Hi, many thanks for your interest on our work!

The low BLEU score is normal (since there is only one reference sentence to evaluate), which is also consistent with prior works (Li et al. 2016). Sorry for forgetting the detailed training epochs on Receiver, but it should arrive the Receiver performance reported in our paper (e.g. In original setting, it should be similar to 93.8). You could refer Sec. 5.4 for more details.
The training steps last nearly ~2000 dialogues, as written in our paper (Sec. 5.1).
In practice, these two settings are trained under difference data configurations (original or revised). The related description can be seen below:

To make it more challenging, PERSONA-CHAT also provides revised personas by rephrasing, generalizing or specializing the original ones. For example, “I am overweight.” is revised from “I weight 300 pounds.

@Jeiyoon Hi, many thanks for your interest on our work!

The low BLEU score is normal (since there is only one reference sentence to evaluate), which is also consistent with prior works (Li et al. 2016). Sorry for forgetting the detailed training epochs on Receiver, but it should arrive the Receiver performance reported in our paper (e.g. In original setting, it should be similar to 93.8). You could refer Sec. 5.4 for more details.
The training steps last nearly ~2000 dialogues, as written in our paper (Sec. 5.1).
In practice, these two settings are trained under difference data configurations (original or revised). The related description can be seen below:

To make it more challenging, PERSONA-CHAT also provides revised personas by rephrasing, generalizing or specializing the original ones. For example, “I am overweight.” is revised from “I weight 300 pounds.

@Jeiyoon We also provide pretrained model weights, which could be used for reproducing our reported results (please see README.md)

@Jeiyoon We also provide pretrained model weights, which could be used for reproducing our reported results (please see README.md)

@SivilTaram Thanks so much for letting me know!
I've double-checked experimental setup
I trained transmitter and receiver for 2 epochs (original task, not revised)
And I also trained PSquare for 2000 episodes (original task)
But the bleu score is still very low (e.g., 0.005)
Did i do something wrong? or could you let me know how can i reimplement to get the bleu score (0.75)?
Every metric is fine but just bleu score
Thank you so much

@SivilTaram Thanks so much for letting me know!
I've double-checked experimental setup
I trained transmitter and receiver for 2 epochs (original task, not revised)
And I also trained PSquare for 2000 episodes (original task)
But the bleu score is still very low (e.g., 0.005)
Did i do something wrong? or could you let me know how can i reimplement to get the bleu score (0.75)?
Every metric is fine but just bleu score
Thank you so much

@Jeiyoon There must be misleading. Please note that the reported 0.75 is actually 0.75%, which is less than 0.01. You could check it carefully on Table 3.

@Jeiyoon There must be misleading. Please note that the reported 0.75 is actually 0.75%, which is less than 0.01. You could check it carefully on Table 3.

oh gosh you are right i misread
everything is fine. it's great and novel work
thank you
have a nice day!

oh gosh you are right i misread
everything is fine. it's great and novel work
thank you
have a nice day!

@Jeiyoon ☕ Thanks again for your interest!

@Jeiyoon ☕ Thanks again for your interest!


[RV_DM]rv_dm_progbuf_read_write_execute_vseq

This commit contains vseq and other realted files and verify the functioanlity of program buffer.

@jdonjdon kindly review it.

I am closing this and did a new PR of this in #21619.

It's probably much easier to re-open this PR and force-push to the branch that it uses. There are actually merge conflicts in #21619 as well, so this should be easier.
I've just done that force-push myself (I hope it's ok!) with the following commands:
rjs@sole:~/work/opentitan$ git fetch basit
rjs@sole:~/work/opentitan$ git checkout -b xxx basit/progbuf_rw
Switched to a new branch 'xxx'
rjs@sole:~/work/opentitan$ git fetch origin
rjs@sole:~/work/opentitan$ # Rebase on master
rjs@sole:~/work/opentitan$ git push -f basit HEAD:progbuf_write_execute

I don't know why (Run DV smoke test) is failing?

The DV smoke test is failing because the code doesn't compile. I think you're using a new request_halt task without actually declaring it :-)
The simple solution is probably to do the 2-commit approach that I suggested above.

Hmm, something has gone a little bit awry on the git side. I've just pulled the head of this PR and rebased onto master and will push the result. We'll then only have 2 commits, rather than 51(!)

Something has got a little bit shuffled around. I think what we want is probably two commits:

Define request_halt and use it in places that might need it. This should come from #21663, (and that PR needs a bit of extending)
Define progbuf_read_write_execute_vseq

I think there are probably some other improvements that we can make, but it looks to me like the best thing is to sort out the basic structure first!

Something has got a little bit shuffled around. I think what we want is probably two commits:

Define request_halt and use it in places that might need it. This should come from [RV_DM]rv_dm_base_vseq #21663, (and that PR needs a bit of extending)
Define progbuf_read_write_execute_vseq

I think there are probably some other improvements that we can make, but it looks to me like the best thing is to sort out the basic structure first!

I have defined halt_task in #21663 and use it in vseqs that need it, as you said. But for this PR 'progbuf_write_execute' there are  changes in vseqs that use that task. So my concern is how to delete those files of vseqs in which I use that halt_task?
Because in this PR we only want 'progbuf_read_write_execute_vseq' file.

@rswarbrick we can first merge #21663 branch where we defined halt_task and use it in vseqs. Then we can remove extra files(vseqs) in this branch that also uses that task, we can merge this PR as well. what do you think?

All sorted, thanks. Let's rebase onto the current head of master and I think we should be good to review and merge :-)

There is a check in scoreboard line 363. Which compare the value that is written, against the csr.get_mirrored_value(). But this check failed because item.d_data has written value but in csr.get_mirrored_value() has 0 value. I think this check is for all tl_mem_ral csrs and compare against the written values.

This is unchecked, but can't we simplify this a bit? I'm imagining something like
  task progbuf_rw(int idx);
    uvm_reg_data_t data = $urandom;
    uvm_reg_data_t r_data;

    csr_wr(.ptr(jtag_dmi_ral.progbuf[i]), .value(data));
    csr_rd(.ptr(tl_mem_ral.program_buffer[i]), .value(r_data));

    `DV_CHECK_EQ(data, r_data)
  endtask

  task body();
    // Call the task from base_vseq to halt the hart.
    request_halt();
    for (int i = 0; i < 8; i++) progbuf_rw(i);
  endtask

This is checking that DMI writes become visible over TileLink. Do we expect it to work in the other direction as well? If so, maybe we should be randomising the direction?

This is unchecked, but can't we simplify this a bit? I'm imagining something like
  task progbuf_rw(int idx);
    uvm_reg_data_t data = $urandom;
    uvm_reg_data_t r_data;

    csr_wr(.ptr(jtag_dmi_ral.progbuf[i]), .value(data));
    csr_rd(.ptr(tl_mem_ral.program_buffer[i]), .value(r_data));

    `DV_CHECK_EQ(data, r_data)
  endtask

  task body();
    // Call the task from base_vseq to halt the hart.
    request_halt();
    for (int i = 0; i < 8; i++) progbuf_rw(i);
  endtask

This is checking that DMI writes become visible over TileLink. Do we expect it to work in the other direction as well? If so, maybe we should be randomising the direction?

No, we are just checking that writes on dmi should visible on tilelink.

I agree that this you're correctly describing what the code currently does :-) But I'm trying to say that this is currently testing a reasonably trivial property ("writes to X are reflected in Y"). For very little effort, I think we could test a stricter version (adding "... and vice versa"). Unless we don't believe that property should hold, I propose that we test it.

We can only write to DMI and can read from TL. As tl_mem_ral registers are read-only.  So, we can't do vice versa.

@rswarbrick now what's your thoughts on this PR?

Sorry for the slow reply.
But I'm clearly missing something! Are you saying that it's impossible to do a CSR read over the DMI interface? I don't think that's true. Note that jtag_dmi_reg_frontdoor.sv believes that it's possible to do such a read.

Oh there was misunderstanding. I thought your 'vice versa' means that writing on tilelink and reading from DMI. So that is why i said that we can't do that because tl_mem_ral registers are read only. But if you are trying to say that write on DMI and read from tilelink and from DMI as well?  If so, that is possible. We can read from DMI interface as well.

@rswarbrick i have make changes in vseq as you said to add read csr over DMI interface and randomize the read direction. Also randomize the both directions. Make changes in testpoint entry according to implementation that we have done.

I'm so sorry: I wrote something rather silly yesterday. You were pointing out that the TL CSR interface here is read-only, so it only makes sense to send data in one direction. And you're completely right!
Your recent change is completely sensible: trying to interpret my confused message in a way that makes sense! But I was just being stupid... The best thing is probably to drop the "else" case in your if/else block.
Otherwise, the change looks completely sensible. I'm really sorry for wasting your time.

I'm so sorry: I wrote something rather silly yesterday. You were pointing out that the TL CSR interface here is read-only, so it only makes sense to send data in one direction. And you're completely right!
Your recent change is completely sensible: trying to interpret my confused message in a way that makes sense! But I was just being stupid... The best thing is probably to drop the "else" case in your if/else block.
Otherwise, the change looks completely sensible. I'm really sorry for wasting your time.

I did commit now to drop changes that i committed earlier. Kindly review it.


Allow azcopy remove to work with CPK encrypted blobs.

Deletion requires metadata fetching, which, for CPK blobs, requires a CPK key to be set.
This fix allows remove operations to work when in a CPK scenario.

@microsoft-github-policy-service agree company="Intertisement"

Yes - I'll try to add it to the e2etests.

@mkrautz this has been addressed in PR https://github.com/Azure/azure-storage-azcopy/pull/2304 Closing this for now. This change will be shipped with our next release.


[NavigationExperimental] Support custom card style interpolators

Transition animations are not very customizable right now with NavigationExperimental, unless I am missing something big. This PR allows NavigationCardStack to receive the horizontalCardStyleInterpolator and verticalCardStyleInterpolator props to override the default interpolators.
See the gif, transition animation changes from the default one (with scale) to a custom one (without scale) when passing in a custom interpolator. (The custom interpolator is an exact copy of the one in NavigationCardStackStyleInterpolator.forHorizontal, minus the scale transform.)

Let me know if there's a robust way to test, but I couldn't find anything.
To address
The new canUseNativeDriver function on NavigationCardStackStyleInterpolator, which returns true, is dependent on the interpolator, so custom interpolators may need to falsify this. Didn't include it on the first pass since I wasn't sure, but how does moving it out of NavigationCardStackStyleInterpolator and changing it to a boolean property on NavigationCardStack which defaults to true sound? (The isVertical param passed to it won't be relevant anymore because the user of NavigationCardStack knows the direction set.)

Actually now I'm realizing, instead of having separate properties for horizontal and vertical, we could just have a single cardStyleInterpolator property (again, the user of the class knows the direction being set and can provide a different interpolator accordingly). By default, when it's not provided, we use NavigationCardStackStyleInterpolator's forHorizontal or forVertical depending on direction. Less redundancies that way and seems DRYer.

I ended up making the same changes to try out something. I dropped these changes but I'd love to see them merged. +1 !

I would love to see this merged.
I am using a gradient View background and the transition scale looks very awkward, because it leaves 5% of empty gap at the top and at the bottom.
Please consider it for merging

This seems like a good way to accomplish this. Thanks for the contribution!


allow ghc96

This is a good upgrade. GHC 9.6 adds some good features I know: It adds the OsPath type for better file path handling, and the updated cabal now generates a PackageInfo_file with handy values.


doc.rubico.land

break out docs to a nice site under this domain.
const {
  pipe, fork, assign,
  tap, tryCatch, switchCase,
  map, filter, reduce, transform,
  any, all, and, or, not,
  eq, gt, lt, gte, lte,
  get, pick, omit,
} = rubico // each one of these functions is a link

// option to yank this

/ - the API header
/METHOD - base route for a method, get here from /
/METHOD#SECTION - jump to a section on the method page

I'm doing this now.

done


Support for macOS

Howdy
Would be lovely if this worked on macOS.

Thanks for opening this issue. It absolutely does work on MacOS, but we do not publish artifacts for it.
Unfortunately, we will not be publishing artifacts for MacOS anytime soon :(  But! The Readme contains a section that has a set of steps to build stembuild for MacOS.
Hope that helps you!


Create Models and Tables for new Applicant Experiences

There are several models for different kinds of experience that need to be created.
Like our existing Degree and Course models, these experience models must have a polymorphic one-to-many relationship with Applicants or Applications.
We should create an experience_type table at the same time, to store id and localized names of each experience type.
Here are the designs for the forms that show all the data being collected for the experience items.
WORK EXPERIENCE

PERSONAL

EDUCATION

AWARDS

COMMUNITY

EDUCATION DROPDOWN
Type of education
Diploma
Bachelors Degree
Masters Degree
Phd
Post Doctoral Fellowship
Online Course
Certification
Other
Status
Successful Completion (Credential Awarded)
Successful Completion (No Credential Awarded)
In Progress
Audited
Did not complete
AWARDS DROPDOWN
Awarded to
Me
My Team
My Project
My Organization
Award Scope
International
National
Provincial
Local
Community
Organizational
Sub-Organizational (Branch or Division)

Ok, added the finalized forms that show all the data collected for these experience types. As far as I know this should be ready to Dev, let me know if anything is missing.

'en' => 'Complete (credential awarded)',
'fr' => ''

'en' => 'Complete (no credential awarded)',
'fr' => ''

'en' => 'Post-doctoral Fellowship',
'fr' => ''

'en' => 'My team',
'fr' => ''

'en' => 'My project',
'fr' => ''

'en' => 'My organization',
'fr' => ''

'en' => 'Myself',
'fr' => ''

'en' => 'Local',
'fr' => ''

'en' => 'Organizational',
'fr' => ''

'en' => 'Sub-organizational (branch or division)',
'fr' => ''


Routing issues when there are special characters in the URL

Are you reporting a bug?
Yes
Refreshing a page with a special character in the pathname will result in 404.
Example: (/résumé)

Not reproducible when running a dev build (yarn start)
The same page serves correctly if you go to it via a link. Subsequent page refreshes will fail.

Environment

react-static -v: 5.9.7
node -v: v8.9.4
yarn --version: 1.5.1

Steps to Reproduce the problem
Using the basic react-static example:

Update the route '/blog' in static.config.js to be '/blóg' (Just add any special character)
Update the link in App.js and containers/Post.js to link to /blóg instead of /blog
Run the app using yarn stage && yarn serve
From any page click 'Blog' in the header. The page should work and show the lists of posts.
Refresh the page - 404 or blank screen will be shown

Expected Behavior
Refreshing a page with a special character in the URL should not cause a 404
Reproducible Demo
https://github.com/rachel-church/react-static-issue652-demo

This is a tough one. Wouldn't this depend on your server settings?

Running https://github.com/rachel-church/react-static-issue652-demo with yarn build && yarn serve fails. We have the same issue serving the app with Nginx. serve had some issues in 2016 with special characters but has since fixed it. It looks like the GET requests correctly receive the route data but the component for the route is not displayed.

I can reproduce this with v6. Just create a page named blög.js or similar. With react-static build the correct files are created and on browser load it also delivers the right file but then the 404 page is mounted and rendered. So it seems this is not a server problem but a routing problem.

Found the bug, PR incoming.


free up more disk for trivy job

Trying to free up more disk space for trivy job.
Found ignorefile '.trivyignore':
Building SARIF report with options:  --vuln-type  os,library --timeout  10m  apachepinot/pinot:6055f09b3d0cd84c7ac44ce88ac402d69297e523
2023-10-09T21:42:15.569Z	FATAL	image scan error: scan error: scan failed: failed analysis: analyze error: pipeline error: failed to analyze layer (sha256:f9e20a6d0abf7589d6cf2c00a55297377487acd46b6d399c[17](https://github.com/apache/pinot/actions/runs/6461544862/job/17542154205?pr=11767#step:6:18)3972ed[1](https://github.com/apache/pinot/actions/runs/6461544862/job/17542154205?pr=11767#step:7:1)9e213ee): unable to get uncompressed layer sha256:f9e20a6d0abf75[8](https://github.com/apache/pinot/actions/runs/6461544862/job/17542154205?pr=11767#step:7:9)[9](https://github.com/apache/pinot/actions/runs/6461544862/job/17542154205?pr=11767#step:7:10)d6cf2c00a55297377487acd46b6d399c173972ed19e213ee: failed to get the layer (sha256:f9e20a6d0abf7589d6cf2c00a55297377487acd46b6d399c173972ed19e213ee): unable to populate: unable to open: failed to copy the image: write /tmp/fanal-3948847380: no space left on device

Codecov Report

Merging #11780 (44146a4) into master (3a9f95f) will decrease coverage by 48.72%.
Report is 1 commits behind head on master.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             master   #11780       +/-   ##
=============================================
- Coverage     63.13%   14.42%   -48.72%
+ Complexity     1118      201      -917
=============================================
  Files          2342     2342
  Lines        125920   125918        -2
  Branches      19370    19370
=============================================
- Hits          79505    18158    -61347
- Misses        40751   106223    +65472
+ Partials       5664     1537     -4127

Flag
Coverage Δ

integration
?

integration1
?

integration2
?

java-11
?

java-17
14.42% <ø> (-48.54%)
:arrow_down:

java-20
?

temurin
14.42% <ø> (-48.72%)
:arrow_down:

unittests
14.42% <ø> (-48.72%)
:arrow_down:

unittests1
?

unittests2
14.42% <ø> (-0.06%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.
see 1516 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


hooks: Allow pre-create to change upload ID, meta data and storage details

This PR adds a method for v2 to overwrite the upload ID and meta data from the pre-create hook. No other hooks can perform these changes later on and only a selected set of properties can be overwritten. We also add the ability to pass storage details to data stores to influence file names, for example, although no data store implements this yet.
Context and previous work, which this PR is based on:

https://github.com/tus/tusd/pull/814
https://github.com/tus/tusd/pull/916
https://github.com/tus/tusd/issues/811

@genofire @jonaskaltenbach Let me know if you have any feedback for this PR :)

Hi @Acconut
Thank you for the PR. Looks good from my point of view 👍


Need to install PIL?

I followed the installation instructions, but when when I run python check_env.py I get the message: PIL:: No module named 'PIL'
But it seems PIL is not compatible with Python3:
$ conda install pil
Fetching package metadata .......
Solving package specifications: ....

The following specifications were found to be in conflict:
  - pil
  - python 3.5*
Use "conda info <package>" to see the dependencies for each package.

Do we need PIL for the tutorial?
Thanks!!

Please install using the following command
pip install pillow

still not working even after installing pillow

Try this.
conda install -c anaconda pil

still not working.....

Please check out our newer deep learning repo for updated material - https://github.com/amitkaps/deep-learning


ocamlPackages.bap: fix for multiple outputs llvmPackages

7869d1654517c028aa76fc1dedc9b5ac301a867a split all packages in
llvmPackages into multiple outputs. The default output of llvm doesn't
contain llvm-config, so we need to explicitly choose llvm.dev here.

Motivation for this change
Things done

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

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@ofborg build libbap

Result of nixpkgs-review pr 123417 at f011ff9d run on aarch64-linux 1

3 packages built successfully:

libbap
python38Packages.bap
python39Packages.bap


add index style serialization array nested dictionary

Issue Link :link:

#1839 #2431
Goals :soccer:

There is no real specification for how to URL encode collection parameters like arrays and
dictionaries.
For  ["foo": ["a", 1, true, ["bar": 2], ["qux": 3],  ["quy": ["quz": 3]]]]

default .brackets encode is:

 foo[]=a&foo[]=1&foo[]=1&foo[][bar]=2&foo[][qux]=3&foo[][quy][quz]=3

.noBrackets encode is:

foo=a&foo=1&foo=1&foo[bar]=2&foo[qux]=3&foo[quy][quz]=3

jQuery >=1.4 and Node.js package  query-string provide index style.

foo[0]=a&foo[1]=1&foo[2]=1&foo[3][bar]=2&foo[4][qux]=3&foo[5][quy][quz]=3
Implementation Details :construction:

A new ArrayEncoding enumeration is added to URLEncoding. The cases are .brackets and .noBrackets and .index
The arrayEncoding passed to init is used to control the array key serialization in URLEncoding.queryComponents.
Testing Details :mag:

The new tests are named like the existing tests, with an appended suffix:

testURLParameterEncodeArrayNestedDictionaryValueParameterWithIndex

tests pass.

You can also merge master to pick up more reliable tests.


Using results of already executed mutations in subsequent mutations

I'm wondering if it's possible to use the result of a mutation as an argument in a mutation that's executed after the first mutation in a batch request, or is the only possibility making consecutive requests to the API.

This library is pretty much just a copy of the graphql-js reference implementation, which in turn just implements the GraphQL spec. I believe there were some rfcs about this in the spec repo, perhaps you should check there.


Retries

Any support for retries/exponential backoff on the roadmap?

No.
cpr will not handle this case.


Add Submenu for spawning integers and characters in Block Spawner

The block spawner needs to have a sub menu for integers (float?) and characters to add a numeric value for them. Get into a call with Gerren and he will describe how the block spawner works like that.

How the block spawner works

Created multiple menus that are hidden by default
Each menu has a bunch of button
If the button is not spawning blocks, it is using Unity to show and hide the correct submenu accordingly
There is no code for this it is just using Unity

What needs to change

Continue this pattern for blocks that need numbers and characters.
It is easy but it requires you to look at how the block spawner works
The only code you will need to write is add methods in the BlockSpawner.cs file for spawning integer and float blocks.


AllowedValues

Question:
There are a lot of Properties that have a specific list of allowed values, some example:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-connectiontype
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-sslmode
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfig.html
https://docs.aws.amazon.com/waf/latest/APIReference/API_Predicate.html#WAF-Type-Predicate-Type
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-allowedmethods

These valid values are not in the CloudFormation Specs. Is there a chance that this data is going to be added somewhere in a near future? @cmmeyer perhaps you know more about this?
It's in there! A todo list to keep an overview:
Source: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html

[x] Alexa
[x] Amazon MQ
[x] API Gateway
[x] Application Auto Scaling
[ ] AppMesh
[x] AppStream 2.0
[x] AppSync
[x] Athena
[x] Auto Scaling
[x] AWS Batch
[x] Budgets
[x] Certificate Manager
[x] AWS Cloud9
[x] CloudFormation
[x] CloudFront
[x] AWS Cloud Map
[x] CloudTrail
[x] CloudWatch
[x] CodeBuild
[x] CodeCommit
[x] CodeDeploy
[x] CodePipeline
[x] Amazon Cognito
[x] AWS Config
[x] Data Pipeline
[x] DAX
[x] Directory Service
[x] Data Lifecycle Manager
[x] DMS
[x] DocumentDB
[x] DynamoDB
[x] EC2
[x] ECR
[x] ECS
[x] EFS
[ ] EKS
[ ] ElastiCache
[ ] Elasticsearch
[ ] Elastic Beanstalk
[ ] Elastic Load Balancing
[ ] Elastic Load Balancing V2
[ ] EMR
[ ] FSx
[ ] Amazon GameLift
[x] Glue
[x] GuardDuty
[ ] IAM
[x] Amazon Inspector
[x] AWS IoT
[x] AWS IoT 1-Click
[x] AWS IoT Analytics
[ ] Kinesis
[x] KMS
[ ] Lambda
[x] Neptune
[ ] OpsWorks
[ ] OpsWorks-CM
[ ] RDS
[x] Amazon Redshift
[x] Route 53
[x] S3
[x] SageMaker
[x] Secrets Manager
[x] Service Catalog
[x] SES
[x] SimpleDB
[x] SNS
[x] SQS
[x] Step Functions
[ ] Systems Manager
[ ] WAF
[ ] WAF Regional
[x] WorkSpaces

If it won't be covered by the CloudFormation Spec I think something like #34 may make sense.  An additional spec file that has this type of information.  Something we could remove easily enough if it does get covered in the future.  Ideally the CloudFormation Spec file would have all of this so we don't have create it though.

Last I heard this isn't something the Cfn team will be getting to this year, but I'm checking with them to make sure.  I almost wonder if we want to maintain a value spec as a separate repo, since others may find value and be able to help us contribute.

Agreed on the separate repo part.

Since this will not be resolved (at least not any time soon), let's close this

Reopened the Issue since it became relevant again.

process of writing src/cfnlint/data/ExtendedSpecs/all/ and generating src/cfnlint/data/CloudSpecs/ described here:
https://github.com/aws-cloudformation/cfn-python-lint/issues/903#issuecomment-595356853

I'd like to start leveraging botocore enums instead of maintaining all the AllowedValues in the Linter source code itself
especially since that was the most commonly maintained concise constraint format last time I checked months ago:
AllowedValues: 187
NumberMin/NumberMax: 46
AllowedPatternRegex: 11
StringMin/StringMax: 8
ListMin/ListMax: 4

Closing this issue.  We can deal with additional allowed values as needed.  New version of the schema specs should allow a lot of these allowed values to come from there. We will still need to add some for region based allowed values.


operators [R] intel-device-plugins-operator (0.20.0 0.21.0 0.23.0 0.24.0)

Signed-off-by: Hyeongju Johannes Lee<EMAIL_ADDRESS>Thanks submitting your Operator. Please check below list before you create your Pull Request.
New Submissions

[ ] Are you familiar with our contribution guidelines?
[ ] Have you packaged and deployed your Operator for Operator Framework?

[ ] Have you tested your Operator in all supported installation modes?
[ ] Have you considered whether you want use semantic versioning order?
[ ] Is your submission signed?
[ ] Is operator icon set?

Updates to existing Operators

[ ] Did you create a ci.yaml file according to the update instructions?
[ ] Is your new CSV pointing to the previous version with the replaces property if you chose replaces-mode via the updateGraph property in ci.yaml?
[ ] Is your new CSV referenced in the appropriate channel defined in the package.yaml or annotations.yaml ?
[ ] Have you tested an update to your Operator when deployed via OLM?
[ ] Is your submission signed?

Your submission should not

[ ] Modify more than one operator
[ ] Modify an Operator you don't own
[ ] Rename an operator - please remove and add with a different name instead
[ ] Modify any files outside the above mentioned folders
[ ] Contain more than one commit. Please squash your commits.

Operator Description must contain (in order)

[ ] Description about the managed Application and where to find more information
[ ] Features and capabilities of your Operator and how to use it
[ ] Any manual steps about potential pre-requisites for using your Operator

Operator Metadata should contain

[ ] Human readable name and 1-liner description about your Operator
[ ] Valid category name1
[ ] One of the pre-defined capability levels2
[ ] Links to the maintainer, source code and documentation
[ ] Example templates for all Custom Resource Definitions intended to be used
[ ] A quadratic logo

Remember that you can preview your CSV here.
--
1 If you feel your Operator does not fit any of the pre-defined categories, file an issue against this repo and explain your need
2 For more information see here

Hmm, we are going to use "bundle" rather than "packagemanifests" that is deprecating.
Do we need to update previous versions in the same pr?
Or, different pr first get merged and then this pr?

/merge possible

/unhold

/merge possible

@mythi,@rojkov , please approve

@mythi,@rojkov , please approve

the changes look good to me but one question before approving: do you have a policy how the commits should be like

@mythi commits has to be signed (git commit -s ...) and we don't have any preference. When merging we are using squash and merge

@mvalarh thanks for the prompt response! I'll proceed with the approval.

"Updating existing ci.yaml is only possible via an extra PR with single file modification. Otherwise tests will fail"

The docs say that ci.yaml must be changed in a separate PR but there are no failures in this PR while it changes ci.yaml.

"Updating existing ci.yaml is only possible via an extra PR with single file modification. Otherwise tests will fail"

The docs say that ci.yaml must be changed in a separate PR but there are no failures in this PR while it changes ci.yaml.

I will remove it. Thanks for notice

@mythi can you provide link to doc, because i see https://redhat-openshift-ecosystem.github.io/community-operators-prod/operator-ci-yaml/

/merge possible

@hj-johannes-lee i found that you are in same channel alpha for version 0.24.0 and you are not replacing 0.23.0. Can i fix it?

@hj-johannes-lee i had to add replaces, because it is breaking our release. We had bug in our pipeline that it skip this test in special case. If you will need to be in different channel, please make new PR  and remove repleaces when needed. Sorry for this trouble.

@mvalarh Sorry, operator is still not really familiar to me. Could you point what the fix and replaces were so that I can understand better what you are saying?

@hj-johannes-lee see 87863bb73ff650a2f702e28894524d1e71583ae4


sudo ./npm_install.sh

script that just do "npm install" in all examples...

I run all examples through the docs site. What is this for?

same thing...
On Fri, 9 Jun 2023 at 21:17, Kevin Van Cott @.***>
wrote:

I run all examples through the docs site. What is this for?
—
Reply to this email directly, view it on GitHub
https://github.com/KevinVandy/mantine-react-table/pull/69#issuecomment-1584969954,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMSFL45IYGO2XCRYM4NOB2DXKNSC7ANCNFSM6AAAAAAZA4TCKU
.
You are receiving this because you authored the thread.Message ID:
@.***>


More info at: https://travis-ci.com/Qiskit/qiskit-terra/jobs/321584463

Resolved by #4193 .


Add all 3D Multimodal Developmental Mouse Brain atlases

We already have kim_dev_..., but we should add all the different developmental stages now they've been released (and maybe rename them). Ideally we would have one script that packages them all up,
Pre-print - https://www.biorxiv.org/content/10.1101/2<IP_ADDRESS>7789v1
Neuroglancer links - https://kimlab.io/brain-map/DevCCF/
Download links - https://pennstateoffice365-my.sharepoint.com/personal/yuk17_psu_edu/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fyuk17_psu_edu%2FDocuments%2FProjects%2FDevelopmental_Atlasing%2FDevCCF_TeamFileshare%2FDevCCF_Tempates%2FDevCCF_MRI_sharable_v3.7_Public&ga=1

Also see:

https://www.biorxiv.org/content/10.1101/2<IP_ADDRESS>8585v1
https://kimlab.io/brain-map/epDevAtlas/


BUG ProductOptions used in discount classes/methods, needs to be updated to support Variations

resolved via #49


Wallet fails with this configuration

it looks like it fails when "proofHeader" = "jwt"

server side errtor


archwsl update executed in Arch completely breaks the installation

When I run scoop update archwsl from Arch itself the process crashes and leaves the distro broken. Files are there but one needs to somehow manually re-register leftover files as distro. Reinstallation doesn't help because it overwrites persisted data folder. A check for distro running before updating would be needed but I'm not sure how to identify which distro might be the one executing scoop from wsl(config).exe output.

Duplicate of #3800