Use of uninitialized memory in s2n_aead_aes_test

Here are the contents, in symbolic form, of the char array pointed to by conn->in.blob.data at the time when the line https://github.com/awslabs/s2n/blob/09261380262fca884567b941897ae3f095f55aad/tests/unit/s2n_aead_aes_test.c#L154 is reached:
[0..7] ∈ {0}
[bits 64 to 127] ∈ {4533304577153303563}
[bits 128 to 191] ∈ {1703996142823241576}
[24] ∈ {62}
[25] ∈ {31}
[26] ∈ {98}
[27] ∈ {216}
[bits 224 to 287] ∈ {10729224154281305815}
[bits 288 to 351] ∈ {3412835101196934063}
[44..1434] ∈ UNINITIALIZED

In the symbolic representation of the contents above, some values are integers wider than 8-bit. These values are represented as bit ranges, e.g. “bits 64 to 127”. When “bits” does not appear, it means the indices can be interpreted as indices into a char array. In other words, the first 44 bytes of that dynamically allocated memory zone are initialized to some numbers, and the rest is uninitialized, up to the index 1434.
conn->in.blob.size contains 1435, which is consistent with the size of the zone pointed to by conn->in.blob.data.
The line 154 attempts to access the last byte (and then the 15 bytes before that) with respect to the end of the character array. These characters are uninitialized. I am surprised that the test even works as you wanted.
Perhaps you mean to do something to the last bytes of the message, which in this case seems to be 44-byte long?
One word of warning: the tool we use stops at the first error (it is theoretically impossible to predict what happens in a C program after the first undefined behavior), so the same code pattern leading to using uninitialized memory may happen again later in the test.
Off-topic: in https://github.com/awslabs/s2n/issues/146 there was the question:

I wonder why -Wuninitialized doesn't catch it.

I wouldn't expect a compiler to warn about the following program, where the local variable being left uninitialized and the function where it is used are different.
void g(int *p) {
  static int s;
  s = 1 + *p;
}

int main(){
  int l;
  g(&l);
}

There are analyses that can find this use of uninitialized memory across function calls, but these are more expensive than a compiler can afford to run in the few seconds the user allows it when the user launches compilation.
In the issue 146, the two functions were in different files, so because of separate compilation, even an ideal compiler that somehow could afford this kind of analysis would not be able to warn for either file.

One word of warning: the tool we use stops at the first error

What tool is this? A custom tool? I'm quite curious. (is the "word of warning" supposed to be a pun of some sort?)

There are analyses that can find this use of uninitialized memory across function calls, but these are more expensive than a compiler can afford to run in the few seconds the user allows it when the user launches compilation.

A bit of a sidenote: This is a active area of research in static analysis tools.
Microsoft built SAL for precisely this purpose, as annotations turn global analysis into local analysis.
Your example, aside from the fact that g's argument should be const int*, with annotations:
void g(_In_ int *p) {
  static int s;
  s = 1 + *p;
}

int main(){
  int l;
  g(&l);
}

...the _In_ signifies that p should be valid when g is called - the pointer can't be NULL, and it must point to initialized memory.
I've (personally) seen SAL pick up specifically that kind of bug hundreds of times. I'm not kidding, it's soon to be "thousands"!
SAL really shines in tricky APIs that handle buffers, where buffer size is not formally coupled to the buffer itself (the classic void fill_buffer(char* buffer, rsize_t bufferSize )), or where the buffer is null-terminated (no formal way of differentiating a char* from a null-terminated char*), as it doesn't need to read documentation or see the source to detect misuse. I've not yet seen it be confused by separate compilation units, calls to external libraries, or system calls, so long as the declarations are properly annotated.
OSR, known for kernel-mode development, has a great article on the use of SAL in their file encryption library, which has a classically tricky C API.
/analyze with SAL is extremely good at detecting misuse of annotated functions. It's not without overhead, but still faster and far smarter than raw global analysis.
Several years ago, Clang Devs thought about adding support for SAL, but a software patent scared them off. Despite that, Clang now has a set of annotations for thread safety analysis, which are nearly identical to their SAL counterparts. It's a shame, because fragmentation will prevent the widespread adoption that the industry deserves.
Self promoting plug: "Preventing bugs, and improving code quality with Microsoft SAL"

Self promoting plug

Yes, it seems to me.

I mean seriously dude, you realize that the example you decided to riff on was simplified in the context of a discussion of compiler warnings, right?

Yup. I think it's pretty cool, and you're in no way obliged to agree.

The real issues were #146 and the 150 one described above, which simplistic annotations do not help find even if you assume that the programmer is willing to write them.

That's a lot of URLs and promotion, for a system that does not find the issues being discussed.

Four links, one of which is to self-published material? I had no intention of irritating, and apologize that I did.
My intent was to contribute to to mutually enriching intellectual environment that is open source software development.


Object Reference Exception being thrown after getting latest packages

I just updated to the newest Nuget Packages and I'm getting the following error. The exception seems to be thrown when the SwaggerToCSharpTypeResolver calls its base Resolve method. For some reason schema is null even though it is not in the method calling it.
Error		Running transformation: System.NullReferenceException: Object reference not set to an instance of an object.
   at NJsonSchema.CodeGeneration.TypeScript.TypeScriptTypeResolver.Resolve(JsonSchema4 schema, Boolean isNullable, String typeNameHint) in C:\projects\njsonschema\src\NJsonSchema.CodeGeneration\TypeScript\TypeScriptTypeResolver.cs:line 45
   at NJsonSchema.CodeGeneration.TypeScript.TypeScriptTypeResolver.Resolve(JsonSchema4 schema, Boolean isNullable, String typeNameHint) in C:\projects\njsonschema\src\NJsonSchema.CodeGeneration\TypeScript\TypeScriptTypeResolver.cs:line 85
   at NSwag.CodeGeneration.CodeGenerators.TypeScript.SwaggerToTypeScriptClientGenerator.GetType(JsonSchema4 schema, String typeNameHint) in C:\projects\nswag\src\NSwag.CodeGeneration\CodeGenerators\TypeScript\SwaggerToTypeScriptClientGenerator.cs:line 115
   at NSwag.CodeGeneration.CodeGenerators.TypeScript.SwaggerToTypeScriptClientGenerator.GetResultType(SwaggerOperation operation) in C:\projects\nswag\src\NSwag.CodeGeneration\CodeGenerators\TypeScript\SwaggerToTypeScriptClientGenerator.cs:line 102
   at NSwag.CodeGeneration.CodeGenerators.ClientGeneratorBase.<>c__DisplayClass10_1`1.<GetOperations>b__2(<>f__AnonymousType0`3 tuple) in C:\projects\nswag\src\NSwag.CodeGeneration\CodeGenerators\ClientGeneratorBase.cs:line 87
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at NSwag.CodeGeneration.CodeGenerators.ClientGeneratorBase.GetOperations[TGenerator](SwaggerService service, TypeResolverBase`1 resolver) in C:\projects\nswag\src\NSwag.CodeGeneration\CodeGenerators\ClientGeneratorBase.cs:line 72
   at NSwag.CodeGeneration.CodeGenerators.ClientGeneratorBase.GenerateFile[TGenerator](SwaggerService service, TypeResolverBase`1 resolver) in C:\projects\nswag\src\NSwag.CodeGeneration\CodeGenerators\ClientGeneratorBase.cs:line 50
   at NSwag.CodeGeneration.CodeGenerators.TypeScript.SwaggerToTypeScriptClientGenerator.GenerateFile() in C:\projects\nswag\src\NSwag.CodeGeneration\CodeGenerators\TypeScript\SwaggerToTypeScriptClientGenerator.cs:line 53

Here is the relevant swagger definition
{
  "swagger": "2.0",
  "info": {
    "version": "v1",
    "title": "Test API"
  },
  "host": "localhost:7818",
  "schemes": [
    "http"
  ],
  "paths": {
    "/api/Account/ChangePassword": {
      "post": {
        "tags": [
          "Account"
        ],
        "operationId": "Account_ChangePassword",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "model",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ChangePasswordBindingModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Object"
            }
          }
        },
        "deprecated": false
      }
    }
}
}

Can you post the full Swagger spec (i.e. the missing definitions)

I dug in a bit more and this looks like an issue with my schema generation.
"schema": {
              "$ref": "#/definitions/Object"
            }

should actually not be there. That definition was not getting rendered so I think that is what was breaking the generation. .

So, you think the reference could not be resolved?

Yeah, from what I can tell. It might be helpful to have an exception
message explaining that the definition of the type could not be found but
I'm not sure if this would be a common problem.
On Mon, May 2, 2016 at 9:42 AM, Rico Suter<EMAIL_ADDRESS>wrote:

So, you think the reference could not be resolved?
—
You are receiving this because you modified the open/close state.
Reply to this email directly or view it on GitHub
https://github.com/NSwag/NSwag/issues/80#issuecomment-216288063

I already got the following error msg:

Strange that you see a different message...


SP34 Lodz

sp34.elodz.edu.pl

@arle Thank you for your patience while waiting for a review and processing your request. Pull request merged.
Please start requesting the licenses in about an hour, to let the changes to propagate through our system.


Improve matching function

While rewriting change-prop to use a new driver I've noticed that sometimes our match function throws an exception since for the long list on nested properties we don't check whether all the objects along the way exist, so we get Can't read property X of undefined errors.
It's not a big issue in production since we catch those errors and treat them as not-match, but it's better to fix anyway.
cc @wikimedia/services

:+1:

Nice! :+1:


No logs emitted

Not sure what I did wrong but I don't have any logs from actix anymore (after switching from actix's default logger to this crate), except errors, for example:
{"timestamp":"2022-01-14T17:20:52.642643550+00:00","level":"WARN","fields":{"message":"Error encountered while processing the incoming HTTP request: Deserialize(Error(\"missing field `server_room_id`\", line: 1, column: 108))"},"target":"tracing_actix_web::middleware","trace_id":"e9e3e403ef820f16f26eec02879f963f"}

I was expecting to get logs of each requests. Like actix-web's Logger was doing.
(The EnvFilter is set to info)
Here is how my tracing_subcriber is configured
let filter = EnvFilter::try_from_default_env()
    .or_else(|_| EnvFilter::try_new("info"))
    .unwrap();

let opentelemetry_endpoint = env::var("OPENTELEMETRY_ENDPOINT").expect("Missing env var 'OPENTELEMETRY_ENDPOINT''");

let exporter = opentelemetry_otlp::new_exporter()
    .tonic()
    .with_endpoint(opentelemetry_endpoint);

let config = opentelemetry::sdk::trace::config()
    .with_resource(opentelemetry::sdk::Resource::new(vec![
        opentelemetry::KeyValue::new("service.name", "media-server"),
        opentelemetry::KeyValue::new("service.namespace", "cloud-conference"),
]));

let tracer = opentelemetry_otlp::new_pipeline()
    .tracing()
    .with_exporter(exporter)
    .with_trace_config(config)
    .install_batch(opentelemetry::runtime::Tokio)
    .expect("Failed to create opentelemtry pipeline");

let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);

let subscriber =
    tracing_subscriber::fmt::layer().json().with_current_span(true).event_format(tracing_bridge::TraceIdFormat);

tracing_subscriber::registry()
    .with(telemetry)
    .with(filter)
    .with(subscriber)
    .try_init()
    unwrap();

And then the actix middleware is setup like that.
let start_server = HttpServer::new(move || {
App::new()
    .wrap(TracingLogger::default())
    ......

My cargo
...
actix-web = "4.0.0-beta.19"
actix-http = "3.0.0-beta.18"
tracing-actix-web = { version = "0.5.0-beta.9", features = ["opentelemetry_0_16"]}
tracing = "0.1"
tracing-futures = "0.2"
tracing-log = { version = "0.1", features = ["env_logger"] }
tracing-error = "0.2.0"
tracing-subscriber = { version = "0.3.5", features = ["env-filter", "json", "fmt"] }
tracing-serde = "0.1.2"
...

Can you share a small repository with a minimal reproducible example?

As I see, tracing-actix-web doesn't emit events on its own (unless in case of errors and if using the emit_event_on_error default feature). tracing-actix-web only provides a span for you to emit events in your handlers, it's different from actix-web's Logger in this regard.
Try adding a tracing::info!("Foo") to your handler.

You need to choose a stdout formatter that includes spans on top of events - I don't think that's the case for the default configuration of the formatter included in tracing-subscriber.

Well the doc clearly states

TracingLogger is designed as a drop-in replacement of actix-web's Logger.

So that's why I opened this issue. I have plenty of working info! in my handler it's not the issue 😄
I did add .with_current_span(true) which should include the current span in formatted events? But I believe fmt does it by default https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/index.html

This crate provides an implementation of the Subscriber trait that records tracing’s Events and Spans by formatting them as text and logging them to stdout.

I'll try to see if I'm missing something. I'll make minimal reproducible example as soon as I can.

Adding with_span_events with FmtSpan::NEW | FmtSpan::CLOSE doesn't really give that much info.
{"timestamp":"2022-02-27T14:54:53.834714+00:00","level":"INFO","fields":{"message":"new"},"target":"tracing_actix_web::root_span_builder"}
{"timestamp":"2022-02-27T14:54:53.835316+00:00","level":"INFO","fields":{"message":"new"},"target":"media_server::handlers","trace_id":"2e478d4460f09ae808196992e1bf5d64"}
{"timestamp":"2022-02-27T14:54:53.835543+00:00","level":"INFO","fields":{"message":"close","time.busy":"12.8µs","time.idle":"220µs"},"target":"media_server::handlers","trace_id":"2e478d4460f09ae808196992e1bf5d64"}
{"timestamp":"2022-02-27T14:54:53.836422+00:00","level":"INFO","fields":{"message":"close","time.busy":"1.06ms","time.idle":"665µs"},"target":"tracing_actix_web::root_span_builder"}

Now, I know when I get a request but it doesn't give anything else.

Can you share a link to your repository?
This is all related to your chosen tracing subscriber though, it doesn't really have anything to do with tracing-actix-web itself.
We have examples showing various configuration that produce the desired level of detail.


Array functions

[ ] concat
[ ] copyWithin
[ ] entries
[x] every
[ ] fill
[x] filter
[ ] find
[ ] findIndex
[x] forEach
[ ] includes
[ ] indexOf
[x] join
[ ] keys
[ ] lastIndexOf
[x] map
pop
[x] push
[x] reduce
[x] reduceRight
[ ] reverse
[ ] shift
[ ] slice
[x] some
[ ] sort (immutable version)
[ ] splice (immutable version)
toLocaleString
toString (does it make sense? we have the native String())
unshift
[ ] values

Refs https://github.com/1-liners/1-liners/pull/125#issuecomment-118772864
concat, push and shift have some strange behaviours. Let’s make them more predictable:
push(3, [1, 2]) ===  // This is ready – thanks @stoeffel
shift(1, [2, 3]) ===
concat([3], [1, 2]) ===
[1, 2, 3];

concat(3, [1, 2]);  // TypeError!

Does pop and unshift make any sense?
head([1, 2, 3]);  //» 1
pop([1, 2, 3]);   //» [2, 3]

@tomekwi question... is there a need to do shift which seems to be a syntactic sugar for
drop(1, [1,2,3]) which seems to have a different notation here than some thing like
drop = (n, xs) => xs.slice(n, Infinity) you would get the same thing you get with native shift plus immutability thoughts?

Oh yeah, I seem to have mixed up shift with unshift. I meant unshift up in https://github.com/1-liners/1-liners/issues/107#issuecomment-118773975 and shift in the next message. I use the native ones very rarely anyway.
Your idea for drop seems very reasonable to me. Perhaps another name like omit would make sense?
And yeah, this whole library is really just synctatic sugar. Sugar is great when you use stuff often. So if it turns out that omit(1, …) is a useful thing, we can upgrade that to a separate function.

Gotcha yeah sorry coming from ramda land so drop and omit have a different implementation and usage. But omit as you mention above would useful imho.


Modified moment/calendar.js to accept functions as formats similar to…

… locale/calendar.js; added moment/calendar tests

This might be useful, but I want to implement something more generic -- language inheritance. Then you can inherit the locale of your change and change only certain peaces (like calendar) and use the modified locale.
https://github.com/moment/moment/issues/2551

That would definitely work too.  I felt that this should at least behave the same as the locale formatting options, but if the formats parameter of moment().calendar() is going to be deprecated, then this is unnecessary.

2.12.0 added locale inheritance, as mentioned. Given that the following code is possible, can this be closed? I know it's not exactly the same.
moment.updateLocale('en', {
    calendar: {
        sameDay: function() {
            return '[Today2]';
        },
        nextDay: function() {
            return '[Tomorrow]';
        }
    }
});
moment().calendar();
"Today2"


tox.ini ignore list not recognized -- but works via CLI

For some reason, my ignored flake8 errors in tox.ini are not recognized by the linter, and the errors are reported in Atom. I'm using linter-ui-default to see these. If I run flake8 from the command line on a file where an ignored error is occurring, it properly ignores the errors I want to ignore (and shows others that it should).
Any thoughts on what could be the problem or how I can debug this further? Thanks!
tox.ini:
[flake8]
ignore = E501,E266,E722

Where is the tox.ini located with regards to the project as Atom is opened to? If you open Atom's Developer Tools and place a breakpoint here, the configFilePath variable should be set to where it thinks the config file is (or isn't).
https://github.com/AtomLinter/linter-flake8/blob/0f3d35965a0761c6cb229ebc7a1d3938215376a2/lib/main.js#L202

Hmmmmm, if you add this to the file somewhere, reload Atom to catch the changes, and place a breakpoint after it to read the value, does the output match what you see when you run flake8 --bug-report in your shell?
bugReport = await helpers.exec(execPath, [ '--bug-report' ], { cwd: baseDir });

some unicode characters

Ah ha! unfortunately on a lot of systems the processes executed through Atom are ran in the C locale, which isn't able to understand those characters. Your terminal is probably using a proper en_US.UTF-8 which is why it's working there.
There are a few other issues related to that open, solving them will solve this. Thanks for the confirmation!


Update secp256k1 dependency

Draft because builds on https://github.com/rust-bitcoin/rust-bitcoin/pull/1598 and requires https://github.com/rust-bitcoin/rust-secp256k1/pull/575 to merge first.
From the final patch (the only one that is part of this PR)
We just merged into `secp256k1` a change to make secp depend on a
git/ref version of `hashes`. This was aimed at resolving the dependency
hole issue we currently have, we can now use the new version of secp.
This completes the dependency hole fix.

FTR with this merged the merge workflow for making breaking changes to
`hashes` can be:

1. Patch `hashes`
2. Wait for merge of 1, then patch secp (incl. update of git/rev dep)
3. Wait for merge of 2, then patch bitcoin (incl. update of git/rev dep)

One dev workflow can be:
0. Patch hashes and secp dependencies to use path
1. Make the changes everywhere
2. Make three separate commits that will make up the steps 1-3 above

Note, we need to fill the rev in this PR from the revision made by merging https://github.com/rust-bitcoin/rust-secp256k1/pull/575

We don't need this one now.


Automator: update<EMAIL_ADDRESS>in<EMAIL_ADDRESS>

Generated by Automator - 2024-09-28T00:30:37+00:00

@istio-testing: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio_release-1.22
060fdc2017ab775d435304fdcc5f9f9b1287f177
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.


Create concentration

👷 Deploy Preview for mathieueven processing.
🔨 Explore the source changes: 56663ad27cc963ad1c33c50c2ab08b2f76cedf72
🔍 Inspect the deploy log: https://app.netlify.com/sites/mathieueven/deploys/613b6bdbdf4bf30007f3d3e1


Promise is undefined Error in Redux Sample On IE11

Hi everyone,
I am currently evaluating next.js for one of my client projects. While playing around with the Redux sample under https://github.com/zeit/next.js/tree/master/examples/with-redux I noticed that it throws the following error under IE11:
ReferenceError: 'Promise' is undefined
   at updateOnClient (http://<IP_ADDRESS>:3000/_next/-/commons.js:8875:3)
   at mount (http://<IP_ADDRESS>:3000/_next/-/commons.js:8853:3)
   at componentWillMount (http://<IP_ADDRESS>:3000/_next/-/commons.js:8794:7)
   at Anonymous function (http://<IP_ADDRESS>:3000/_next/-/main.js:16691:11)
   at measureLifeCyclePerf (http://<IP_ADDRESS>:3000/_next/-/main.js:16418:5)
   at ReactCompositeComponent.performInitialMount (http://<IP_ADDRESS>:3000/_next/-/main.js:16690:9)
   at ReactCompositeComponent.mountComponent (http://<IP_ADDRESS>:3000/_next/-/main.js:16601:7)
   at ReactReconciler.mountComponent (http://<IP_ADDRESS>:3000/_next/-/main.js:1496:5)
   at ReactMultiChild.Mixin.mountChildren (http://<IP_ADDRESS>:3000/_next/-/main.js:21084:11)
   at ReactDOMComponent.Mixin._createContentMarkup (http://<IP_ADDRESS>:3000/_next/-/main.js:18021:9)

The other examples that I've tried don't seem to throw this error and they also make use of Promise inside of commons.js. Does anyone have any pointers on how to resolve this?
Regards,
Sven

I think you have to a promise polyfill via webpack config. Check this out for options:
http://stackoverflow.com/questions/38960490/how-can-i-polyfill-promise-with-webpack
Here you can see how to custom configure webpack with next:
https://github.com/zeit/next.js#customizing-webpack-config

But how is it that all the other examples I've tried so far, don't show this behaviour? I assume Promises are used heavily by next.js, so if Promises support is entirely missing this error would surface everywhere or not?

not sure about it, but caniuse shows that Promises are not supported by IE11:
http://caniuse.com/#feat=promises

Weird. We normally push a Promise polyfill. I'd like to invest on this.

Going to have a look this weekend.

@timneutkens was wondering if you had the time to investigate this issue? I have to meet a deadline by the end of the month and would appreciate if you could let me know whether this issue is likely going to be resolved soon?

Haven't had a look yet, some other stuff came up. I'll set a reminder for tonight.

@schuma7 Have a look at the PR above 😄

Okay. Here's what's happening.
Webpack2 needs a Promise polyfill.
See: https://webpack.js.org/guides/migrating/#require-ensure-and-amd-require-is-asynchronous
So, I'm going to use our exising core-js polyfill as it's used inside our babel transformed code.

Thanks guys, great to see this resolved without having to add an extra polyfill!


[Suggestion] Add an expo/showcase/cookbook section

Like the expo section in bootstrap page, Vue could have a curated list of the best websites/apps built with Vue. I think that some of the websites and interactive experiences of the awesome vue list are a good place to start. This wouls need to define some method of selection of vue projects, but I think it could be a good way to expose Vue capabilities

It's in beta! 🎉


[Bug] Your Bug Report Here Requesting changes to 'Activate a Campaign' (start-campaign)

Describe the bug
It isn't a bug, just a new information to add:
You can't activate a campaign if the deadline is "today", it needs to start D+1 (tomorrow). Otherwise it throws 400 error

Thanks for reporting this.  The internal pull request to fix this has been staged.  Closing this as complete.


removing guidelines overview page

Closes:
https://github.com/carbon-design-system/carbon-for-ibm-dotcom-website/issues/1401
This PR removes the Guidelines > Overview page that had out-of-date content that has been revised and included in the new Designing section.

Hey @janchild I think you'd have to remove the item from nav-item.yaml file as well. Currently the page is still showing in the nav but leads to a 404:

Hey @janchild I think you'd have to remove the item from nav-item.yaml file as well.

Yes, of course! Will do it now. 👍

@shixiedesign We're good to go!


Increase the coverage of the apiId cache

Increase the coverage of the apiId cache.
The Pinpoint agent uses the cache without sending method information (className + methodName + descriptor) to the collector every time.
If the information is already stored in the cache when the method calls, only int-type cache values (apiId) can be passed to the collector to reduce the amount of transmission.
Increase the cache size a little more and register additional frequently used methods.

Applied to the 2.5.4-SNAPSHOT version.


ivadomed CLI: Unclear what -g expects

To give an example of what I went through when trying to use the -g flag for the ivadomed CLI:
(venv) p101317@rosenberg:~/ivadomed_training$ ivadomed -c config_bn0.1.json -g
ivadomed: error: argument -g/--gif: expected one argument
(venv) p101317@rosenberg:~/ivadomed_training$ ivadomed -c config_bn0.1.json -g training.gif
usage: ivadomed -c CONFIG [-g GIF] [-t THR_INCREMENT] [--resume-training] [-h]
ivadomed: error: argument -g/--gif: invalid int value: 'training.gif'
(venv) p101317@rosenberg:~/ivadomed_training$ ivadomed -c config_bn0.1.json -g 1

Usage should be clarified. Also, i'm not a big fan of using "0/1" for -g. Why not use "store_true" argparse option?

@jcohenadad -g receives a int --> -g 10 leads to 10 GIFs, ie 10 slices randomly taken in the training set, cf:
  -g GIF, --gif GIF     Generates a GIF of during training, one frame per
                        epoch for a given slice. The parameter indicates the
                        number of 2D slices used to generate GIFs, one GIF per
                        slice. A GIF shows predictions of a given slice from
                        the validation sub-dataset. They are saved within the
                        log directory.

How would you suggest to improve this documentation?

@jcohenadad -g receives a int --> -g 10 leads to 10 GIFs, ie 10 slices randomly taken in the training set, cf:
  -g GIF, --gif GIF     Generates a GIF of during training, one frame per
                        epoch for a given slice. The parameter indicates the
                        number of 2D slices used to generate GIFs, one GIF per
                        slice. A GIF shows predictions of a given slice from
                        the validation sub-dataset. They are saved within the
                        log directory.

How would you suggest to improve this documentation?

Also, i'm not a big fan of using "0/1" for -g. Why not use "store_true" argparse option?

As -g can accept int > 1, should I use store_const instead of store_true?

Also, i'm not a big fan of using "0/1" for -g. Why not use "store_true" argparse option?

As -g can accept int > 1, should I use store_const instead of store_true?

ah! i completely misunderstood the usage-- my fault by reading it too fast 😬  -- but it suggests that others might also read too fast and misunderstand as well, so we could possibly change the wording to avoid confusion.
I think i got confused by seeing:
-g GIF, --gif GIF     Generates a GIF of during training, blablabla

and my brain automatically translated "if i use '-g' I get gif 🥳", without reading the blablabla (again: my fault, i apologize).
To mitigate this possible confusion, I would suggest to directly address the role of the parameter, e.g.:
Number of GIF files to output. Each GIF file corresponds to a 2D slice showing the prediction over epochs (one frame per epoch). The prediction is run on the validation dataset. GIF files are saved in the log directory.

ah! i completely misunderstood the usage-- my fault by reading it too fast 😬  -- but it suggests that others might also read too fast and misunderstand as well, so we could possibly change the wording to avoid confusion.
I think i got confused by seeing:
-g GIF, --gif GIF     Generates a GIF of during training, blablabla

and my brain automatically translated "if i use '-g' I get gif 🥳", without reading the blablabla (again: my fault, i apologize).
To mitigate this possible confusion, I would suggest to directly address the role of the parameter, e.g.:
Number of GIF files to output. Each GIF file corresponds to a 2D slice showing the prediction over epochs (one frame per epoch). The prediction is run on the validation dataset. GIF files are saved in the log directory.

A further usage help is proposed in https://github.com/ivadomed/ivadomed/issues/627 (separate issue)

A further usage help is proposed in https://github.com/ivadomed/ivadomed/issues/627 (separate issue)

A further usage help is proposed in https://github.com/ivadomed/ivadomed/issues/627 (separate issue)

A further usage help is proposed in https://github.com/ivadomed/ivadomed/issues/627 (separate issue)


Sample Workflow for ARM Action

Adding a sample workflow for ARM Action

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: apoorv33 sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


[MRG] Add support for adding dig points from montage.

Allows reading the digitization points from a saved DigMontage.

Ready for review.

+1 for merge when CIs are happy and what's new is updated.

Codecov Report

Merging #4444 into master will increase coverage by <.01%.
The diff coverage is 96.42%.

@@            Coverage Diff             @@
##           master    #4444      +/-   ##
==========================================
+ Coverage   82.82%   82.83%   +<.01%
==========================================
  Files         349      349
  Lines       64424    64449      +25
  Branches     9915     9917       +2
==========================================
+ Hits        53361    53388      +27
+ Misses       8324     8323       -1
+ Partials     2739     2738       -1

@christianbrodbeck merge when you're happy

Now it checks the file header.

thx @jaeilepp

Should I update the SPM dataset again and use the dig montage instead of the raw file?

it would be cleaner indeed. thx


Solving an ODE with a forcing term example fails to run

Hi, I have been working with some diffrax code and keep running into the same issue. I found that one of the examples in the docs has the same problem so Im thinking this may be a problem with my package versions.
Copy pasting the code in this example from the wiki fails when calling solve after taking the gradient.
relevant installed package versions:
python                   3.11.8
jax                      0.4.34
jaxlib                   0.4.34
jaxtyping                0.2.34
equinox                  0.11.7
diffrax                  0.6.0

Error Message
Traceback (most recent call last):
  File "/Users/peternikopoulos/src/random/jax/diffrax_solve_ode_with_forcing_term.py", line 68, in <module>
    grads = solve(points)
  File "/Users/peternikopoulos/src/random/jax/diffrax_solve_ode_with_forcing_term.py", line 62, in solve
    sol = diffeqsolve(term, solver, t0, t1, dt0, y0, args=interp)
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/diffrax/_integrate.py", line 1337, in diffeqsolve
    final_state, aux_stats = adjoint.loop(
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/diffrax/_adjoint.py", line 292, in loop
    final_state = self._loop(
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/diffrax/_integrate.py", line 621, in loop
    final_state = outer_while_loop(
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/contextlib.py", line 81, in inner
    return func(*args, **kwds)
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/equinox/internal/_loop/loop.py", line 107, in while_loop
    return checkpointed_while_loop(
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/equinox/internal/_loop/checkpointed.py", line 247, in checkpointed_while_loop
    body_fun_ = filter_closure_convert(body_fun_, init_val_)
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/equinox/internal/_loop/common.py", line 463, in new_body_fun
    buffer_val2 = body_fun(buffer_val)
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/diffrax/_integrate.py", line 618, in body_fun
    new_state, _, _ = body_fun_aux(state)
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/diffrax/_integrate.py", line 332, in body_fun_aux
    (y, y_error, dense_info, solver_state, solver_result) = solver.step(
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/diffrax/_solver/runge_kutta.py", line 1149, in step
    final_val = eqxi.while_loop(
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/equinox/internal/_loop/loop.py", line 107, in while_loop
    return checkpointed_while_loop(
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/equinox/internal/_loop/checkpointed.py", line 252, in checkpointed_while_loop
    _, _, _, final_val = _stop_gradient_on_unperturbed(init_val_, final_val_, body_fun_)
jax._src.source_info_util.JaxStackTraceBeforeTransformation: TypeError: Custom JVP rule must produce primal and tangent outputs with corresponding shapes and dtypes, but got:
  primal int32[] with tangent int32[], expecting tangent ShapedArray(float0[])
  primal bool[] with tangent bool[], expecting tangent ShapedArray(float0[])
  primal bool[] with tangent bool[], expecting tangent ShapedArray(float0[])
  primal int32[] with tangent int32[], expecting tangent ShapedArray(float0[])
  primal int32[] with tangent int32[], expecting tangent ShapedArray(float0[])

The preceding stack trace is the source of the JAX operation that, once transformed by JAX, triggered the following exception.

--------------------

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/peternikopoulos/src/random/jax/diffrax_solve_ode_with_forcing_term.py", line 68, in <module>
    grads = solve(points)
            ^^^^^^^^^^^^^
  File "/Users/peternikopoulos/src/random/jax/diffrax_solve_ode_with_forcing_term.py", line 62, in solve
    sol = diffeqsolve(term, solver, t0, t1, dt0, y0, args=interp)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/equinox/internal/_loop/checkpointed.py", line 1272, in _stop_gradient_on_unperturbed_jvp
    perturb_val = _resolve_perturb_val(
                  ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/equinox/internal/_loop/checkpointed.py", line 1241, in _resolve_perturb_val
    perturb_val = jax.eval_shape(_resolve_perturb_val_impl).value
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/equinox/internal/_loop/checkpointed.py", line 1214, in _resolve_perturb_val_impl
    jax.linearize(_to_linearize, dynamic)
  File "/Users/peternikopoulos/src/miniconda3/envs/isky/lib/python3.11/site-packages/equinox/internal/_loop/checkpointed.py", line 1207, in _to_linearize
    _out = _body_fun(_val)
           ^^^^^^^^^^^^^^^
TypeError: Custom JVP rule must produce primal and tangent outputs with corresponding shapes and dtypes, but got:
  primal int32[] with tangent int32[], expecting tangent ShapedArray(float0[])
  primal bool[] with tangent bool[], expecting tangent ShapedArray(float0[])
  primal bool[] with tangent bool[], expecting tangent ShapedArray(float0[])
  primal int32[] with tangent int32[], expecting tangent ShapedArray(float0[])
  primal int32[] with tangent int32[], expecting tangent ShapedArray(float0[])
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

 Copy-Pasted code from docs
import jax
import jax.numpy as jnp
import matplotlib.pyplot as plt
from diffrax import diffeqsolve, ODETerm, SaveAt, Tsit5

# change stderr to stdout to log error messages
import sys

sys.stderr = sys.stdout

def force(t, args):
    m, c = args
    return m * t + c

def vector_field(t, y, args):
    return -y + force(t, args)

@jax.jit
def solve(y0, args):
    term = ODETerm(vector_field)
    solver = Tsit5()
    t0 = 0
    t1 = 10
    dt0 = 0.1
    saveat = SaveAt(ts=jnp.linspace(t0, t1, 1000))
    sol = diffeqsolve(term, solver, t0, t1, dt0, y0, args=args, saveat=saveat)
    return sol

y0 = 1.0
args = (0.1, 0.02)
sol = solve(y0, args)

plt.plot(sol.ts, sol.ys)
plt.xlabel("t")
plt.ylabel("y")
# plt.show()

from diffrax import backward_hermite_coefficients, CubicInterpolation

def vector_field2(t, y, interp):
    return -y + interp.evaluate(t)

@jax.jit
@jax.grad
def solve(points):
    t0 = 0
    t1 = 10
    ts = jnp.linspace(t0, t1, len(points))
    coeffs = backward_hermite_coefficients(ts, points)
    interp = CubicInterpolation(ts, coeffs)
    term = ODETerm(vector_field2)
    solver = Tsit5()
    dt0 = 0.1
    y0 = 1.0
    sol = diffeqsolve(term, solver, t0, t1, dt0, y0, args=interp)
    (y1,) = sol.ys
    return y1

points = jnp.array([3.0, 0.5, -0.8, 1.8])
grads = solve(points) ########## FAILS HERE

This is a known issue with JAX 0.4.34. I've already got a workaround applied to Equinox HEAD (which you can upgrade to now if you need to; or downgrade JAX), and I will do a new release in the new few days.

thanks!


iox-#2345 fix bazel script to make macos bazel build successful

Notes for Reviewer

Pre-Review Checklist for the PR Author

[ ] Code follows the coding style of CONTRIBUTING.md
[ ] Tests follow the best practice for testing
[ ] Changelog updated in the unreleased section including API breaking changes
[x] Branch follows the naming format (iox-123-this-is-a-branch)
[x] Commits messages are according to this guideline

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

[x] Update the PR title

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

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

Checklist for the PR Reviewer

[ ] Consider a second reviewer for complex new features or larger refactorings
[ ] Commits are properly organized and messages are according to the guideline
[ ] Code according to our coding style and naming conventions
[ ] Unit tests have been written for new behavior
[ ] Public API changes are documented via doxygen
[ ] Copyright owner are updated in the changed files
[ ] All touched (C/C++) source code files from iceoryx_hoofs have been added to ./clang-tidy-diff-scans.txt
[ ] PR title describes the changes

Post-review Checklist for the PR Author

[ ] All open points are addressed and tracked via issues

References

Closes #2345

@elBoberido Could you review this PR?


Fix scroll sync issues with scrolloff=999

I use scrolloff=999 to keep the cursor always centered. When trying this plugin, I immediately noticed sync issues when going more than one commit deep into a blame stack.
For a reproduction, try the following:

Checkout the Homebrew/brew repo at revision 3b40ab6680e
Open Library/Homebrew/cmd/outdated.rb
:set scrolloff=999
:BlameToggle
At line 1, push onto the blame stack with <TAB>
At line 57, push onto the blame stack with <TAB>
Notice the sync issues. (e.g. scroll to the bottom with G)

With this PR, I do not notice any sync issues using scrolloff=999. Additionally, I tested this with scrolloff=0, and the existing behavior seems to be intact.
I am not sure why this code is in place, but presumably there is a reason. That means there may be a better solution to this issue, but in the meantime I have not noticed any negative effects while using this PR.

This doesn't really work 100% after using it more. Leaving it up for any suggestions.


Conditional types don't work in Mapped types

cc @ahejlsberg
TypeScript Version:  2.7.0-dev.20180210

Search Terms:
Code
type Omit<T extends object> = { [P in keyof T]: T[P] extends never ? never : P; }[keyof T];
type Omit2<T extends object, U = never> = { [P in keyof T]: T[P] extends U ? never : P; }[keyof T];
type A = Omit<{ a: void; b: never; }>; // 'a' | 'b'
type B = Omit2<{ a: void; b: never; }>; // 'a'

Expected behavior:
A is 'a'.
Actual behavior:
A is 'a' | 'b'.
Playground Link:
Related Issues:
#21729

Note: I unawarely updated my example code after a patch is created...


Multiple directives asking for transclusion

I am getting the following error when trying to use md-data-table in my project.
Error: [$compile:multidir] Multiple directives [mdButton, mdButton (module: material.components.button)] asking for transclusion
Is this because of mdButton directives in both ngMaterial and md-data table?  How can I fix this?

Can u please provide me a plunkr example?

Cant reproduce.


fix: corrected typos across website content

Fixed Typos in  Website:
Gallary -> Gallery
team -> Team
instagram -> Instagram

:white_check_mark: Pull Request Approved :white_check_mark:
PR Summary

Corrected typos across website content for improved clarity and professionalism.
Verified all updates for accuracy and consistency.

Next Steps

Merged into the main branch for deployment.

Thanks for ensuring quality in our content!


Priority Problems

All the animations have too high priorities compared to all other animations in game. Basically what I mean is that the idle animation plays over animations from other mods. You could fix a LOOOOOOOOT of compatibility issues with mods by simply having a system which puts this mod's animations under others in priority. Or replace the vanilla animations with these (i have a feeling youve done something else to have these animations in place rather than just simply replacing the animations). Considering the config files dont make the vanilla animations come back when turning the mod's animations off, im assuming you removed them then added the custom animations over them? Idk how modding works but that's what I assume. Either way, make it so other mod's animations can player over yours.

This mod uses player animator for animations. If every mod used player animator there wouldn't be any problem with priority. However, a lot of mods have their own custom animation systems and it's not that simple to add compatibility. Most of the time I have to check the mods events to disable SPAs animations at the correct moments and to know which body parts to disable. Also I have not removed the vanilla animations. There's just a bug with the config at the moment. I am looking for ways to add compatibility for some mods that use similar or the same animation systems. But for know I mostly just have to add compatibility one mod at a time.

Ah well that's my bad, sorry

Misconception


Editor crashes if gambit not found

An error came up similar to cannot read property parent of undefinedand that's coming from a database record property.
Here's more:
/home/deploy/code/superscript-editor/node_modules/superscript/lib/topics/common.js:22
        if (reply.parent.parent) {
                        ^
TypeError: Cannot read property 'parent' of undefined

same issue ,how to fix?

The great solution is stop using editor! :) We're just using the exported bot module now, but I think the issue was due to existing data. Just for a safer side, try dropping your database and run the gambit again.

updated the readme. please use the CLI in SuperScript.


[FigureTwicpics] Add support for local images

When working with images on a local environment, TwicPics fails to load the image.
We could add an option to the component to easily disable the source URL transformation in order to display the original image.

I think it should be done with an option on the project's level and not an option for a single image.
That probably requires to extend the FigureTwicpics component and overrides a getter depending on the environment to disable the formatSrc behavior.
Thoughts?

The option is available for each image, but it can be set by the environment when including the Twig template:
{% include<EMAIL_ADDRESS>with {
  attr: {
    data_option_disable: _context.env.is_dev ?? null
  },
} %}

This way we can avoid injecting environment variables at build time in our JavaScript files, and drive this feature from the back-end.
The diff for the FigureTwicpics.ts file would be simple:
diff --git a/packages/ui/atoms/Figure/FigureTwicpics.ts b/packages/ui/atoms/Figure/FigureTwicpics.ts
index 1a0740c..6348d89 100644
--- a/packages/ui/atoms/Figure/FigureTwicpics.ts
+++ b/packages/ui/atoms/Figure/FigureTwicpics.ts
@@ -52,6 +52,7 @@ export class FigureTwicpics<T extends BaseProps = BaseProps> extends Figure<
         type: String,
         default: 'cover',
       },
+      disable: Boolean,
     },
   };

@@ -74,7 +75,7 @@ export class FigureTwicpics<T extends BaseProps = BaseProps> extends Figure<
    * Get formattted original source.
    */
   get original() {
-    return this.formatSrc(super.original);
+    return this.$options.disable ? super.original : this.formatSrc(super.original);
   }

   /**

Maybe the option could be renamed to devMode or something easier to understand.

Got it, looks good to me then 👍
I'd like to work on this very soon


test: add missing tests for peerset

Description
add missing tests for peerset
Related issue(s)
fixed https://github.com/pactus-project/pactus/issues/170

@amirvalhalla I believe make fmt will fix the linting issue.

@amirvalhalla I believe make fmt will fix the linting issue.

Sure , I'll fix style

@amirvalhalla Thanks


Warn about bad privacy

Closes #107
For now, we show a modal that gives two options: Learn More, or Acknowledge the Risks. The latter continues with withdrawal, and the former links to the FAQ page. Once we update the FAQ / write more docs, we can change where that links to if we want

[x]  Withdrawal to the address they're logged in yet
[x]  Withdrawal to ENS/CNS name
[x]  Withdrawal to address that reverse resolves via ENS
[x]  Withdrawal to address that owns CNS names
[ ] Withdrawal to address that owns ENS names: They have a subgraph, but not sure how to write the proper query—create issue to implement this later
[x]  Withdrawal to address that owns a POAP??
[ ]  Withdrawal to address that has interacted with Gitcoin: There's an endpoint that returns all address that have donated to a grant, but it's a big file and CORS is not supported. Best option is probably to have a simple backend endpoint that stores all the addresses in a JSON file (which we'd update regularly). Then the endpoint returns true if the supplied address is in the file, false otherwise

Feedback addressed in last commit, so going to merge!


Los Angeles Laps crash

Reexporting Los Angeles Laps's course_model.szs increases the file size from 61,348 KB to 63,953 KB and crashes the game on load. It's worth mentioning that it happens with switch toolbox as well.

Make sure the compression level is higher which will prevent crashes due to heap size limits.

Thank you KillzXGaming very cool :)

So I posted that last comment before actually trying what you said and it still didn't work. I didn't want to bother you again with this, but now I'm pretty sure I'm not the only one having this issue since I found someone else I believe this is also happening to. If you aren't able to reproduce the crash, here is the file if it helps.


Remove Hazard tracking with Fences

Removes hazard tracking and replaces it with Fences where needed - basically in between command buffers.
The basic idea is:

Every command buffer has a unique fence
We record a map of ouput arrays -> fence
For the next command buffer, we look up its inputs in the map to see if we need to wait on a fence
When command buffers finish they remove their outputs from the output->fence map in their completion handler

The only thing to be aware of for dev is that the completionHandler stuff for storing temporaries is replaces with d.add_temporaries(std::move(copies), s.index). The change to the way we store temporaries is not critical actually.. I had it in from an earlier iteration to avoid a resource leak. Since temps never cross command buffer boundaries they are removed from the inputs/outputs that we synchronize on. I think it's kind of nice which is why I kept it as is and a bit more efficient.. but I am happy to split it / remove it / etc.
Benchmarks on M2 Ultra

Benchmark
Pre
Post

Mistral 7B generation
113.6 toks/sec
113.6 toks/sec

Transformer batch=2
5.91 its/sec
5.90 its/sec

Transformer batch=4
3.13 its/sec
3.13 its/sec

MNIST
0.60 sec
0.60 sec

LeNet
7.25 sec
7.25 sec

@angeloskath I did some cleanup + added some commentary for future refence..
I'm a bit torn about putting stuff into DeviceStream as a methods.. on first pass it mostly adds verbosity without saving that much IMO. I think making this nicer requires a bigger refactor which I'm not yet sure how to do.
From a object interaction standpoint, when dealing with streams (queue, encoders, buffers, etc) the Device is basically a thin wrapper around DeviceStream. The CommandEncoder is basically only touched by the DeviceStream. But the interaction between DeviceStream and the CommandEncoder is coupled via the inputs/outputs.
Some ideas for future improvement (nothing I'm too crazy about yet):

One option to decouple that is to make set_input_array a method on device which takes an encoder as a second argument but records the inputs and outputs in the DeviceStream. It's kind of an annoying change..
Another option is to just be more explicit about the fact that the CommandEncoder is part of the DeviceStream. Maybe nest it or merge it.
Could allow access to DeviceStream directly rather than accessing it through the Device itself.

I'm leaning towards trying to get this over the finish line. Feel free to toy around with it if you have any ideas.
In theory we could expose DeviceStream.. but it might be good to sleep on that.


🚨 Error Message Feedback Collection

Share confusing or unhelpful error messages you encounter while using domainic-type v0.1.0-alpha.3. Your feedback helps us improve error messages for everyone!
To Share Feedback
Add a comment below with:

The code that produced the error
The error message you received
What confused you or could be clearer
(Optional) What you expected or would find more helpful

Example Feedback:
# My code
user_type = _Hash()
  .of(Symbol => _String())
  .containing_keys(:name)
value = { "name" => "John" }
user_type.validate!(value)

# Error received
TypeError: Expected Hash with Symbol keys, got Hash with String keys

# What could be better
The error doesn't mention that I provided a valid :name key, just the wrong type.
Would be helpful to know which keys specifically had the wrong type.

No error message is too small to report! Even if you're not sure if something could be better, share it - your confusion might help us improve the experience for others.

Currently ALL error messages appear to display when when a type fails validation:
username = _String.being_lowercase.being_alphanumeric.having_size_between(3, 20).not_matching(/^admin/i)
# => String(being lower case, being only alphanumeric characters, matching /^admin/i, having size greater than or equal to 3 and less than or equal to 20)

username.validate!('admin01')
behavior.rb:217:in `validate!': Expected String(being lower case, being only alphanumeric characters, matching /^admin/i, having size greater than or equal to 3 and less than or equal to 20), but got String(being not lower case, being non-alphanumeric characters, does not match /^admin/i, having size 7) (TypeError)

# My code
username = _String
  .being_lowercase
  .being_alphanumeric
  .having_size_between(3, 20)
  .not_matching(/^admin/i)
username.validate!("Admin")

# Error received
TypeError: Expected String(being lower case,
being only alphanumeric characters,
matching /^admin/i,
having size greater than 3 and less than 20),

but got String(being not lower case,
does not match /^admin/i)

=begin
# What could be better
The error message is confusing because:
- It incorrectly suggests the string should match /^admin/i when the constraint is to **not** match this pattern.
- It does not clearly state that the string provided is "Admin", which is not lowercase and matches /^admin/i despite the constraint.

An improved error message could be:
=end

TypeError: Expected String(being lowercase,
alphanumeric,
**not** matching /^admin/i,
size 3-20),

got String(not lowercase, **matches** /^admin/i)

Feedback for complex array validation error message:
# My code
admin_list = _Array
  .of(_String)
  .being_distinct
  .being_ordered
  .excluding("root")
  .having_minimum_size(1)
admin_list.validate!(["root"])

# Error received
TypeError: Expected Array(String,
being unique,
being ordered,
not including "root",
having size greater than or equal to 1),

but got Array(excluding "root")

=begin
# What could be better
The error message is confusing because:
- The "But Got Array" part of the error message suggests the array excludes "root" when it actually **includes** "root".

An improved error message could be:
=end

TypeError: Expected Array(String,
being unique,
being ordered,
not including "root",
having size greater than or equal to 1),

got Array(**including** "root")

Feedback for hash validation error message:
 # My code
Hash with specific key/value types
config = _Hash
  .of(Symbol => _String)
  .containing_keys(:host, :port)
  .excluding_values(nil, "")
config.validate!({:host => nil, :port => nil})

# Error received
TypeError: Expected Hash(having keys of Symbol,
keys including :host and including :port,
having values of String,
values including nil nor including ""),

but got Hash(having values of NilClass, values excluding nil)(TypeError)

=begin
# What could be better
The error message is confusing because:
- The "Expected" part of the error message suggests the hash contained values including nil nor including "".
This wording is confusing because we don't expect the hash to include nil or empty string.
-The "But Got Hash" part of the error message says "values excluding nil" even though example is indeed failing because the values include nil.

An improved error message could be:
=end

Makes it clear in the "Expected" part of the error message for hashes that we expect nil and empty string values to be excluded.

Makes it clear in the "But Got Hash" part of the error message that unexpected values included nil or empty string when the examples are failing for that reason.

@aaronmallen the callouts for the array + hash examples is similar to the string one, essentially the error messages become confusing when it's a double negative (i.e. when the constraint validation fails because the Object "includes" something that it should be excluding).

@torischuyler I probably should have asked before creating #184 but are you running v0.1.0-alpha.3.4.0?

@torischuyler I probably should have asked before creating #184 but are you running v0.1.0-alpha.3.4.0?

Yes 👍


Challenge 1 : Serverless Dreidel!

Completed Challenge 1

Hi @sajeetharan!
Once you have the challenge result, you will compare it to the challenge you created. And after make all the necessary changes in your code, you will close this PR.
Remember that all challenges must be developed in your repository. That's why is very important to fork this repository.
And thank you for your awesome contribution @sajeetharan !

We checked out your repository. We're thrilled to say your solution is now listed in our Hall of Fame
Thank you for your contributions!
This PR is now closed! 🎉


[3.0-Triple] Catch some harmless exception

What is the purpose of the change

add catch some harmless exception (like SocketException)

Brief changelog
Verifying this change
use https://github.com/grpc-ecosystem/grpc-health-probe and return status: SERVING,No exception log is generated on the server

Checklist

[x] Make sure there is a GitHub_issue field for the change (usually before you start working on it). Trivial changes like typos do not require a GitHub issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[ ] Each commit in the pull request should have a meaningful subject line and body.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Check if is necessary to patch to Dubbo 3 if you are work on Dubbo 2.7
[ ] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add sample in dubbo samples project.
[ ] Add some description to dubbo-website project if you are requesting to add a feature.
[ ] GitHub Actions works fine on your own branch.
[ ] If this contribution is large, please follow the Software Donation Guide.

Codecov Report

Merging #8663 (635b7c3) into 3.0 (b8de0a7) will decrease coverage by 0.07%.
The diff coverage is 35.71%.

@@             Coverage Diff              @@
##                3.0    #8663      +/-   ##
============================================
- Coverage     63.49%   63.42%   -0.08%
  Complexity      312      312
============================================
  Files          1121     1121
  Lines         46975    46942      -33
  Branches       7093     7060      -33
============================================
- Hits          29829    29772      -57
- Misses        13846    13865      +19
- Partials       3300     3305       +5

Impacted Files
Coverage Δ

...pc/protocol/tri/TripleServerConnectionHandler.java
19.04% <0.00%> (-3.18%)
:arrow_down:

.../org/apache/dubbo/rpc/protocol/tri/TripleUtil.java
40.62% <50.00%> (+0.62%)
:arrow_up:

...in/java/org/apache/dubbo/common/utils/JVMUtil.java
81.13% <0.00%> (-11.33%)
:arrow_down:

.../apache/dubbo/remoting/transport/AbstractPeer.java
58.69% <0.00%> (-8.70%)
:arrow_down:

...mmon/threadpool/support/fixed/FixedThreadPool.java
80.00% <0.00%> (-7.50%)
:arrow_down:

...moting/transport/netty4/NettyEventLoopFactory.java
30.00% <0.00%> (-6.37%)
:arrow_down:

.../threadpool/support/limited/LimitedThreadPool.java
83.33% <0.00%> (-5.56%)
:arrow_down:

...ache/dubbo/remoting/api/NettyEventLoopFactory.java
36.36% <0.00%> (-5.31%)
:arrow_down:

.../org/apache/dubbo/remoting/ExecutionException.java
15.78% <0.00%> (-5.27%)
:arrow_down:

...on/threadpool/support/cached/CachedThreadPool.java
85.71% <0.00%> (-4.29%)
:arrow_down:

... and 27 more

Continue to review full report at Codecov.

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


sphere-mollweide example not working

http://openlayers.org/en/master/examples/sphere-mollweide.html

a519d833165dfdacd2c77ce4c3abb843e7f36cd7 is the first bad commit
commit a519d833165dfdacd2c77ce4c3abb843e7f36cd7
Author: greenkeeper[bot]<EMAIL_ADDRESS>Date:   Fri Mar 3 19:53:34 2017 +0000

    chore(package): update proj4 to version 2.4.3

    https://greenkeeper.io/

This is probably because proj4.js does not accept coordinates any more that exceed the world bounds when transformed to WGS84.

This is caused by proj4js/proj4js#256, which will be fixed in the next proj4.js release.

fixed with #7106


🧮 Fix max_steps calculation in RLOOTrainer

What does this PR do?
Fixes #2401
I'm not entirely sure why it works but the problem is gone for varying batch size, rloo k, world size, grad accumulation step.
Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you read the contributor guideline,
Pull Request section?
[ ] Was this discussed/approved via a GitHub issue? Please add a link
to it if that's the case.
[ ] Did you make sure to update the documentation with your changes? Here are the
documentation guidelines.
[ ] Did you write any new necessary tests?

Who can review?
Anyone in the community is free to review the PR once the tests have passed. Feel free to tag
members/contributors who may be interested in your PR.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

Probably..., merging as it seems to resolve the issue.


Set dashboard time to UTC + shared crosshair

For better UX of dashboards, for each one:

change the default timezone to UTC to match server logs
set graph tooltip to "shared crosshair"

Bonus point, interesting query from withdrawals dashboard:

Head Slot Not Advancing for 5mins

(increase(
    beacon_head_slot{network=~"$network", consensus_client=~"$consensus_client", execution_client=~"$execution_client"}[5m]
) == 0) + 1


[storage][recording] "sr" query parameter should added to the ignore list

Recording now saves it

https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/storage/storage-queue/test/utils/testutils.common.ts#L34

Ignore iprange as well?

@jeremymeng
After recording, I'll run the call test cases again with playback mode. Are there any further actions needed to make sure the recording is correct?
Thanks
Emma

@EmmaZhu you shouldn't need to regenerate the recording I think?  What I found was some connection string copied from the Azure portal would have sr but not all connection strings have them. It could be because of SKU difference, or service version difference.  Our existing recordings don't have that, so we just need to ignore them in the queryParametersToSkip list


rip out all db operations from session cache (part 2 of Restructure All The Things)

The session cache should be a data only object, a simple POJO. I have now ripped out every db operation from session cache. the ACS object is now retrieved somewhere else and logic is moved into DBAccessSession.

I will not do anything about code style. Code is only moved.


Cleanup shape of useResource hook

Current useResource returns an array that has no reason to exist. It should be changed to:
const { data, loading, error } = useResource(myResource);

Done #31


@JsonProperty(access = JsonProperty.Access.WRITE_ONLY) not exported

Hello,
I have noticed (3.0.0-SNAPSHOT) that if I annotate the property with
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)

the field isn't exported at all. I would expect it to be exported as writeOnly=true
Is there an easy way to fix that ?
Thanks !
Predrag

Besides that, @JsonProperty(access = Access.READ_ONLY) does not work neither

Besides that, @JsonProperty(access = Access.READ_ONLY) does not work neither

I found READ_ONLY is ok，but not for WRITE_ONLY


Datastore interface in Submariner is ignoring the colorCodes and returns all the clusters

What happened:
As per the datastore interface, WatchClusters and WatchEndpoints should only return the clusters/endpoints that we are interested in. However, in the current implementation [*], these APIs simply ignore the color code thereby returning all the clusters/endpoints.
[*] Current implementation of WatchClusters https://github.com/submariner-io/submariner/blob/1aba088eb78062f22850f847eea1befc187bb0b0/pkg/datastore/kubernetes/kubernetes.go#L109
type Datastore interface {
...
// Watches all clusters and calls the passed in function on cluster change
WatchClusters(ctx context.Context, selfClusterID string, colorCodes []string, onClusterChange OnClusterChange) error
// Performs a watch of all endpoints and calls the passed in function based on information
WatchEndpoints(ctx context.Context, selfClusterID string, colorCodes []string, onEndpointChange OnEndpointChange) error
...
}
What you expected to happen:
Ideally the interface should return only the clusters that match the respective colorCodes.

I expect the Datastore interface to go away when we migrate to the admiral syncer API. We can implement color code support on top of that.


End date of Sprint 1

Currently, the end date for the milestone "Sprint 1" is set to 01.08.17 (yesterday).
Since we didn't add most of the issues until the end of this sprint we ended up not finishing any of them. Because of this I'm unsure whether this date should be considered the end of sprint 1.
I suggest we either push back the end date to the 15.08.17 (date of the next sprint meeting)
or we assign the issues to a new sprint that starts today/started yesterday.

We will be moving the end date of Sprint 1 to 15.08.17


Small bug in titles of inputs in the docs

I can pick this issue, please assign it to me

Hey @nahasco, could you please provide more details about the issue? I'm unable to identify the problem based on the screenshot attached. Thanks.

Hey @nahasco, could you please provide more details about the issue? I'm unable to identify the problem based on the screenshot attached. Thanks.

Shouldn't the titles be swapped?

Hey @nahasco, could you please provide more details about the issue? I'm unable to identify the problem based on the screenshot attached. Thanks.

Tested this again and it seems there was a misunderstanding on my side.


How can I measure child size change parent maxHeight? Thanks for help

Steps to Reproduce

...
...
...

Logs

I use SingleChildRenderObjectWidget nest  CustomMultiChildLayout.
Because CustomMultiChildLayout can get size of each child ,by method of " layoutChild(id, BoxConstraints.loose(size)); " . SingleChildRenderObjectWidget can set view size by method of  performLayout() set "  size = Size(constraints.maxWidth, 20); "
But will report  EXCEPTION
I/flutter (14905): The following assertion was thrown during performLayout():
I/flutter (14905): RenderVote does not meet its constraints.
I/flutter (14905): Constraints: BoxConstraints(w=360.0, h=692.0)
I/flutter (14905): Size: Size(360.0, 20.0)
What my Requirement is get child of second height  ,default show two children ,then click more button show all children with animation , before  come true by Android dode .
Thanks for help!

This is a question best asked on Stackoverflow.


Improve updater.sh

Hi, I've completely rewritten the script updater.sh because I think that the old one was too verbose and did many useless things (but I respect the original author).
Feature of the new version:

Basic options (see down) handling;
Use wget instead of curl, because wget is more widespread (on GNU/Linux is pratically preinstalled);
It can install user.js version according to Firefox version installed on the computer (for example if I have Firefox 59.0, It will download user.js for that version and not the latest).

Options available:

-u, --update        First updates the updater script, then the user.js
--force-version, -f Force to download the user.js according to the Firefox version
--backup, -b        Make a copy of the old user.js before overwriting it
--quiet, -q         Print only errors
--verbose           Print additional informations
--help            Print this message
--version           Print script version

I've tested this script on my computer with Debian 9, it should work on any GNU/Linux distributions. I don't have a Mac, so I ask help for testing it on this platform (but It should work flawlessy). This script needs also a minimal code review.
In short, thanks for all what are you doing, this project is very useful both for documenting user.js and improve the privacy on Web.
If this pull requests will be merged I also take care of updating the wiki.

Hi, I added backward compatibily for old options -donotupdate and -update. I also added a prefix for messages, based on the type (log, error or warning).

@ema-pe : Hey, thanks for all the hard work, much appreciated :+1: . Sorry no-one's replied yet (the weekend I guess). This is not my area, so I'll leave it up to @earthlng & co.

Works on my mac. 👍

Hi, thanks for this. I like your coding style, it's very clean. :+1:

the old one was too verbose

that's certainly something that can be improved

did many useless things

you mean the "check if a new version of updater.sh is available" and/or the "please compare versions" part with sed? For the former I think it's nice that there's some feedback when a new version is available instead of just always downloading the latest version. For the latter, that's just how @overdodactyl decided to do it and I don't have a problem with that.

Feature of the new version:

Basic options (see down) handling;

I like that

Use wget instead of curl, because wget is more widespread

I think curl is pretty widespread and common, too, isn't it? maybe more so than wget, IDK.
Either way I don't care which one we use.

It can install user.js version according to Firefox version installed on the computer

nice. But some linux distros use re-branded FF's like Iceweasel or whatever it's called.
Since Linux and Mac don't have portable FF versions available (AFAIK), it'd be nice to parse the profiles.ini file to get the profile directory. If more than 1 profiles are detected it could prompt the user to select which one he wants to update. And maybe it's even possible to also detect from the profile path name whether Firefox or Iceweasel or whatnot are in use and use the correct binary name for the version check.

I added backward compatibily for old options -donotupdate and -update

very nice, it definitely needs that. In addition to the warnings it could set UPDATE_INSTALLER to true when the old -update parameter is used.

now to some of the problems with this.

you completely ignored the profile detection. Your script will probably only work correctly if you cd into the profile dir first. I mean we didn't include that ugly AF part just for shits and giggles. It should be possible to run the script from any working directory, with absolute or relative paths; and also with soft and hard links.
user.js backups should be default true
backups in the current script are placed in a subfolder and with a timestamp to allow for multiple backups
the updater itself was also backed up when a new version was detected+downloaded+installed - this allows for an easy way to see exactly what changed in the new version
not super important but the current version also has case-insens parameters (which I kinda like)
your mv's don't automatically overwrite existing files

I don't really know how to proceed here. @overdodactyl what do you think?

Having both a wget and curl version seems plausible if most GNU/Linux distros come with wget. I like the verboseness of the original, i also like the -f option on this one. I don't really mind using either.

To be completely honest I would rather see the current updater script built upon/improved where users have issues with it as opposed to changing to a complete re-write.

me too

Thanks @earthlng and @overdodactyl for the feedback and code review.
On most GNU/Linux distributions wget is pratically preinstalled. Look a these statistics about Debian installations of wget and curl:

wget: 198491;
curl: 92662.

I don't know that curl is preinstalled on Mac systems, but it is not difficult to ad the support for it.

nice. But some linux distros use re-branded FF's like Iceweasel or whatever it's called.
Since Linux and Mac don't have portable FF versions available (AFAIK), it'd be nice to parse the profiles.ini file to get the profile directory. If more than 1 profiles are detected it could prompt the user to select which one he wants to update. And maybe it's even possible to also detect from the profile path name whether Firefox or Iceweasel or whatnot are in use and use the correct binary name for the version check.

@earthlng you're right. In this script I assume that people are using a normal Firefox version. A solution can be to manually add all known Firefox forks (Iceweasel, Waterfox, ettc.), they are not many.

you completely ignored the profile detection. Your script will probably only work correctly if you cd into the profile dir first. I mean we didn't include that ugly AF part just for shits and giggles. It should be possible to run the script from any working directory, with absolute or relative paths; and also with soft and hard links.

Yes, this script only work if the user has placed correctly the script and run it from the right directory. I did this because I was thinking that the user should know how to use the script, but if it necessary I can add an automatic profile detection.

user.js backups should be default true

You're right, I'll fix it.

backups in the current script are placed in a subfolder and with a timestamp to allow for multiple backups
I was thinking a lot about this behaviour and there are three cases:

If the user want a up-to-date version of user.js he won't use --force-version option, so the script download the latest version every time. In this case it can be useful report that to the user.
If the user use always --force-version and it already has the user.js version according to his Firefox version. The script will download every time the same user.js.
If the user use always --force-version and it has a previous version of user.js (for example 59 -> 60). The script download the user.js version according to his Firefox verions. In this case it can be useful to report that to the user.
Ok for multiple backups, but why add a timestamp on the file name? It not enough see the creation date from file properties with any file browser?

the updater itself was also backed up when a new version was
detected+downloaded+installed - this allows for an easy way to see exactly what changed in the new version

You're right.

not super important but the current version also has case-insens parameters (which I kinda like)

Usually *nix commands are case sensitive. But it should not be difficult to add this function to the script.

your mv's don't automatically overwrite existing files

What mv are you talking about? I didn't undestand.

Partially a matter of preference, but I like to know when/what's going on with a script. We could certainly improve on it as earthling mentioned.

@overdodactyl you can use --verbose option to get more informations, but by default it is better to suppress any informations. It is the standard *nix way.

We had previous discussions about whether or not the script should automatically download the latest version of the updater, should be notified when a new one is available, just be a silent background check etc, and we landed on what it currently is...personally I like that portion of the script, and think it's in the users best interest.

I was thinking a lot about this behaviour and I ended with three cases:

If the user want a up-to-date version of user.js he won't use --force-version option, so the script download the latest version every time. In this case it can be useful notify that to the user.
If the user use always --force-version and it already has the user.js version according to his Firefox version. The script will download every time the same user.js.
If the user use always --force-version and it has a previous version of user.js (for example 59 -> 60). The script download the new user.js. In this case it can be useful to report that to the user.

To bI was thinking a lot about this behaviour and there are three cases:

If the user want a up-to-date version of user.js he won't use --force-version option, so the script download the latest version every time. In this case it can be useful report that to the user.
If the user use always --force-version and it already has the user.js version according to his Firefox version. The script will download every time the same user.js.
If the user use always --force-version and it has a previous version of user.js (for example 59 -> 60). The script download the user.js version according to his Firefox verions. In this case it can be useful to report that to the user.e completely honest I would rather see the current updater script built upon/improved where users have issues with it as opposed to changing to a complete re-write.

Initally I wanted to improve directly your script, but I found a complete different style of scripting; so I decided to do a re-write.
Conclusions and to-do list for the next days:

[ ] Use curl if wget is not available;
[ ] Add other Firefox forks binary names for getting FF's version;
[ ] Allow the script to parse case insensitive options;
[ ] Make user.js backup as a default behaviour;
[ ] Add multiple user.js backups (based on timestamps);
[ ] Make updater.sh backup automatically (as default behaviour);
[ ] Add profile detection (this task means that the script can operate on different profiles);
[ ] Avoid overwrite the same user.js and updater.sh file every time they are updater even if there are not real updates;
[ ] Improve verbosity when --verbose is given.

@earthlng my script was only an initial draft. If you want to keep the old script I'm happy to improve it instead of a re-write.

Personally, my vote would still be to keep the current one and open a new issue with suggested changes/feature additions that we can discuss (I'd be glad to help implement them) and/or create a new PR with alterations to the original to address any desired changes.

@overdodactyl I have not problem with your way.

@earthlng my script was only an initial draft. If you want to keep the old script I'm happy to improve it instead of a re-write.

that would be great, thanks

[ ] Add profile detection (this task means that the script can operate on different profiles);

maybe something like this:
PROFILE_PATH=""

getProfilesIni () {
  local f1=~/.mozilla/firefox/profiles.ini
  local f2=~/Library/Application\ Support/Firefox/profiles.ini
  if [[ -f "$f1" ]]; then
    echo "$f1"
  elif [[ -f "$f2" ]]; then
    echo "$f2"
  else
    echo ""
  fi
}

readIniFile () {
  local dummyfile=$(mktemp)

  if [[ $(grep '^\[Profile' "$inifile" | wc -l) == "1" ]]; then ### only 1 profile found
    grep '^\[Profile' -A 4 "$inifile" | grep -v '^\[Profile' > $dummyfile
  else
    grep -E -v '^\[General\]|^StartWithLastProfile=|^IsRelative=' "$inifile"
    echo ""
    read -p "Please select the profile number ( 0 for Profile0, 1 for Profile1, etc ) : " -n 1 -r
    echo -e "\n"
    if [[ $REPLY =~ ^[0-9]$ ]]; then
      grep '^\[Profile'$REPLY -A 4 "$inifile" | grep -v '^\[Profile'$REPLY > $dummyfile
      if [[ "$?" != "0" ]]; then
        echo "[Error] Profile$REPLY does not exist!" && exit 1
      fi
    fi
  fi

  local profpath=$(grep '^Path=' $dummyfile)
  local pathisrel=$(grep '^IsRelative=' $dummyfile)

  rm "$dummyfile"

  if [[ ${pathisrel#*=} == "1" ]]; then
    PROFILE_PATH="$(dirname "$inifile")/${profpath#*=}"
  else
    PROFILE_PATH="${profpath#*=}"
  fi

}

readonly inifile="$(getProfilesIni)"

if [[ "$inifile" == "" ]]; then
  echo "profiles.ini not found! Using scriptdir"

  ## get the full path of this script (readlink for Linux, greadlink for Mac with coreutils installed)
  local sfp=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null)

  ## fallback for Macs without coreutils
  if [ -z "$sfp" ]; then sfp=${BASH_SOURCE[0]}; fi

  PROFILE_PATH="$(dirname "${sfp}")"
else
  readIniFile
fi

## change directory to the selected Firefox profile directory so that we can use relative paths fe. mv user.js user.js.old
cd "$PROFILE_PATH" || exit 1

## rest goes here ...

feel free to improve :)

I'm starting to make single pull requests in the next days, improving the existend updater.sh instead of writing a new one.


[FLINK-19545][e2e] Add e2e test for native Kubernetes HA

Add a bash based e2e test for Kuberntes HA service.
We follow the manual testing process.

Start a Flink application with Kubernetes HA enabled
Wait until we get some successful checkpoints
Kill the JobManager process
A new JobManager should be launched and recover from the latest successful checkpoint
Cancel the Flink job
The application should be destroyed and all the ConfigMaps will be cleaned up

Note: Please do NOT merge this PR since we are not allowing to add new bash based e2e tests. We could refactor this e2e test with all other K8s bash based e2e tests to java e2e framework in the next release cycle(1.13).

Also, it seems that the test does not fully clean up the minikube cluster and Docker. Not sure whether this is due to my local setup or not.

Since we already have the pod template, I will update this test to use the volume mount for HA storage. Then we will not depend on the S3.

Rebase the latest master and force pushed.


Reading back agent state data

Hi..
I have implemented the gym/demo.py... and printed the orientation of the agent using the command told by you guys in an earlier issue.
However, i want to know how to print the agent orientation and position on terminal in actual simulations. What files and lines are responsible for this.

You can retrieve the agent state by using the dev branch of the codebase.  If you are switching from master please remember to follow all the installation steps in the README.md file of the dev branch. In the gym demo.py you can access info['agent_state'] to retrieve the position and orientation of the agent after each step.


ParquetExec should parallelize statistics scan operations

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
ParquetExec currently uses a single thread to iterate over all input files and collect statistics. This can be very slow at scale (> 30 seconds) and it would be good to parallelize this work.
Describe the solution you'd like
We currently split the list of file names into chunks (partitions) and then iterate over in a single thread like this:
for chunk in chunks {
  for filename in filenames {
    ..
  }
}

I propose that we process each chunk in parallel, something like this:
let mut tasks = vec![];
for chunk in chunks {
  let task = tokio:spawn(async move {
    for filename in filenames {
      ..
    }
  });
  tasks.push(task);
}
// wait for all tasks to complete

Describe alternatives you've considered
N/A
Additional context
N/A

This (and more) should be parallelized by now.


disco page and SPID

there are several mentions about SPID (title of the page for instance) that are out of scope for this project
these must be fixed

Fixed here https://github.com/italia/eudi-wallet-it-python/pull/104/files#diff-0659b60d64618ec4a3b46ed076084bc6a2730c8fe8751f7a310daaf3d6b758d1


search caps for rotary switches

Caps would increase the usability and clearly indicate the current position. The switches we use are from LCSC - part number C370986

Aren't the switches the following?
Potentiometer:   C209779
Rotary switches: C255511
Regardless, we should rather use narrow caps like this one:
https://www.reichelt.de/de/en/potentiometer-knob-for-axis-6-4-5-mm-black-knopf-10-150e-p73960.html?&nbc=1&trstct=lsbght_sldr::73959
According to the datasheet (1) the operation part details (p. 151) are 6 and 4.5mm respectively.
(1) https://datasheet.lcsc.com/szlcsc/1810110921_ALPSALPINE-SRBV131502_C255511.pdf

Aren't the switches the following?
Potentiometer:   C209779
Rotary switches: C255511
Regardless, we should rather use narrow caps like this one:
https://www.reichelt.de/de/en/potentiometer-knob-for-axis-6-4-5-mm-black-knopf-10-150e-p73960.html?&nbc=1&trstct=lsbght_sldr::73959
According to the datasheet (1) the operation part details (p. 151) are 6 and 4.5mm respectively.
(1) https://datasheet.lcsc.com/szlcsc/1810110921_ALPSALPINE-SRBV131502_C255511.pdf


‘WGPURenderPassDepthStencilAttachment’ has no member named ‘clearDepth’

When following the build instructions in the readme the make all step fails  on debian bullseye at: https://github.com/samdauwe/webgpu-native-examples/blob/ba6949978298081b0c64c68268d6131b7edbad76/src/webgpu/context.c#L181
error message:
In file included from /home/monkeykong/c/projects/webgpu-native-experiments/webgpu-native-examples/src/webgpu/context.h:4,
                 from /home/monkeykong/c/projects/webgpu-native-experiments/webgpu-native-examples/src/webgpu/context.c:1:
/home/monkeykong/c/projects/webgpu-native-experiments/webgpu-native-examples/build/dawn/gen/include/dawn/webgpu.h:1291:14: note: ‘viewFormatCount’ declared here
 1291 |     uint32_t viewFormatCount;
      |              ^~~~~~~~~~~~~~~
/home/monkeykong/c/projects/webgpu-native-experiments/webgpu-native-examples/src/webgpu/context.c:181:6: error: ‘WGPURenderPassDepthStencilAttachment’ has no member named ‘clearDepth’
  181 |     .clearDepth      = 1.0f,
      |      ^~~~~~~~~~
/home/monkeykong/c/projects/webgpu-native-experiments/webgpu-native-examples/src/webgpu/context.c:182:6: error: ‘WGPURenderPassDepthStencilAttachment’ has no member named ‘clearStencil’
  182 |     .clearStencil    = 0,
      |      ^~~~~~~~~~~~
make[2]: *** [CMakeFiles/wgpu_sample_launcher.dir/build.make:277: CMakeFiles/wgpu_sample_launcher.dir/src/webgpu/context.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1640: CMakeFiles/wgpu_sample_launcher.dir/all] Error 2
make: *** [Makefile:149: all] Error 2

my system info:
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Hi bobajeff,
Thanks for letting me know about the compilation issues with latest Dawn API.
The compiler errors are fixed now and the project should compile. Could you pull the latest version to check if the changes also resolve the compiler errors on your side ?
The latest Dawn API has broken some of the examples and I disabled them in de examples list. I will look further into fixing them in the next days.
With best regards,
Sam

Yes I just check it. It's now building for me as well. Thanks Sam.