Allow the edition specifier to be an integer

This PR allows for edition specifiers to be toml integers:
[package]
name = "foo"
version = "0.1.0"
edition = 2018

So far, each edition was fully described by its year number: 2015, 2018, 2021. Also for the future, the intent is that editions will always just be year numbers. Therefore, the natural choice for the type is an integer, instead of the current requirement for toml strings. Using an integer saves two characters in each Cargo.toml. Over the roughly hundred thousand Cargo.toml files on crates.io alone, you'll get some nice savings. Strings are still allowed to support legacy use cases and for the (unlikely) case of non-integral editions in the future.
I've proposed this 5 years ago before the 2018 edition even shipped, and received positive feedback from some people (#5617). I ended up closing it because of unrelated reasons. Also, back then it was less clear whether one would have sth like 2018-beta or such which would have required a string, which eventually didn't end up being a thing (but even then, one could make the case that one could still allow integers for the finally released  2018). With the cargo-script support (cc #12207), I'd say that interest is large again in minimizing the number of characters/keystrokes needed, so I'm bringing back this old proposal.
I feel it's a very small feature in scope so one doesn't need a feature gate to evaluate its impact, but feel free to suggest gating.

Previous thoughts on this
steveklabnik  (https://github.com/rust-lang/cargo/pull/5617#issuecomment-395656887)

This adds 87 lines of code to save two characters. (Okay, some of it is whitespace, and some of it is tests, but the point is, you wouldn't need those tests without this.)
Is this actually worth it? I'm not convinced.

withoutboats (https://github.com/rust-lang/cargo/pull/5617#issuecomment-395657489)

I prefer not to support integers in this position for consistency. We don't support integers or floating points as version constraints, even though that would have the same motivation. These fields are strings.

matklad (https://github.com/rust-lang/cargo/pull/5617#issuecomment-395664742)

To clarify why I think this is a good idea:
Currently, edition numbers are integers. I think we might introduce something like 2018-pre, or even 2018.1, but the former seems niche, and the latter unlikely. So, editon = 2018 optimizes for the common case. I think the main point here is not saving two characters, but avoiding "2018", which just looks weird: why represent a number as a string if you can represent it as a number?
Note that we already support mixed typed in other places in Cargo.toml, for example, opt-level can be either of 1, "2", "s".
As for consistency with versions/version requirements I agree with @est31: we conceptually use SemVer for package versions and integers for edition versions, so, to me, it doesn't seem that these are the same thing.

withoutboats (https://github.com/rust-lang/cargo/pull/5617#issuecomment-395666143)

I think its fairly likely we will someday have an edition which we want to give a non-integral name. Early versions of the preview proposal used the syntax edition = "2018-preview" instead of turning on a lint, and I could see us using that in a future edition preview. And who knows what other names we will use as the concept evolves over the history of Rust.
Unless the type can encode all forms, I'd rather not support it. If I agreed that editions would always be an integral number, I'd be for this (well, really, I'd question the choice to support strings in that case). But I think editions can be named arbitrary strings.
The biggest problem for me is for a user who is new to TOML, and the way this could confuse them into thinking TOML supports bare words in value position (since it does support them in key position). Even more generally, I'd rather keep our use of TOML as "simply typed" as possible and avoid supporting multiple types without strong motivation (the support for both strings and objects for dependencies members is an example that pulls its weight).

joshtriplett (https://github.com/rust-lang/cargo/pull/5617#issuecomment-402206139)

Personally, I'm entirely in favor of this. Current editions use numbers, future editions will likely use numbers, and this makes Cargo accept numbers so people don't have to give advice like "just put edition equals 2018 in your Cargo.toml, but remember to quote the 2018". (Which then leads to the obvious question of "why?".)

With the current implementation, this is allowed: edition = 0x7e5

Good point. But also agree with @epage 's point that this might not matter in practice. I think implementation wise, thanks to cargo using toml_edit it should be possible to easily disallow these cases.

Changing any existing syntax in Cargo.toml could lead to an MSRV bump without notice.

I agree that this is a problem. I would thus recommend waiting with the changing of the docs/cargo new.
This PR could document that specifying an integral edition specifier is possible, but not, say, change cargo new, so newly created projects don't immediately bump into this. Even once edition 2024 arrives, the error that the cargo that is currently on master now gives isn't as nice as if it were edition = "2024". So ideally, it would be phased in even more slowly for cargo new.

Nominating for discussion in the next meeting.
I also wonder if we should just FCP this and see if we have consensus/objections.

:umbrella: The latest upstream changes (presumably #12317) made this pull request unmergeable. Please resolve the merge conflicts.

:umbrella: The latest upstream changes (presumably #12553) made this pull request unmergeable. Please resolve the merge conflicts.

For future reference, this was also discussed in this zulip stream. It seems that more cargo team members would support this once there is a unified library to read/parse Cargo.toml files that can be used by external tools, without using the cargo crate directly.

2 char savings vs leverage compression at scale

Using an integer saves two characters in each Cargo.toml. Over the roughly hundred thousand Cargo.toml files on crates.io alone, you'll get some nice savings.

How are these savings being measured? An uncompressed representation isn't necessarily a reliable metric.
A server can use a filesystem with transparent compression, a database or similar forms offering compressed storage such as archive formats. This can also be leveraged over network transit.
In a scenario such as crates.io, it could be a non-concern if the Cargo.toml files don't need to be uncompressed. ZSTD for example can be trained across all those Cargo.toml files as input to optimize compression further. The higher the frequency of a pattern, the more likely it'll be part of that trained compression dictionary.
If such savings were important at the scale of crates.io, this approach would be far more effective than the benefit of "two characters in each Cargo.toml", which I doubt would have much of an added improvement with that ZSTD approach.

Verbal instruction vs UX consistentcy

However, I am also sympathetic to reason joshtriplett had 5 years ago for being in favor: easier to communicate the field's value verbally.

people don't have to give advice like "just put edition equals 2018 in your Cargo.toml, but remember to quote the 2018". (Which then leads to the obvious question of "why?".)

"Set edition in your Cargo.toml to the string 2018"? 🤷♂
I don't know about users asking "why?" with that information. They're instructed to do the same for semver, which if the minor or patch versions are omitted, looks like an integer or float.
For the most part, cargo could just improve the error message to reference existing editions 2015, 2018, 2021 - if that helps as an example (eg: last 3 editions). Even if you avoid the clarification and just verbally say "just put edition equals 2018 in your Cargo.toml", the error message makes it clear what to do (it's an integer, expected string):
$ cargo check
error: failed to parse manifest at `/app/Cargo.toml`

Caused by:
  invalid type: integer `2021`, expected a string or workspace
  in `package.edition`

Technically the edition hint exists if you at least provide an invalid string value:
# Newer than latest edition:
$ cargo check
error: failed to parse manifest at `/app/Cargo.toml`

Caused by:
  failed to parse the `edition` key

Caused by:
  this version of Cargo is older than the `2022` edition, and only supports `2015`, `2018`, and `2021` editions.

# Any other string value (including years older than latest edition):
$ cargo check
error: failed to parse manifest at `/app/Cargo.toml`

Caused by:
  failed to parse the `edition` key

Caused by:
  supported edition values are `2015`, `2018`, or `2021`, but `'2018'` is unknown

I'm not sure that supporting integers improves the UX when said user encounters a foreign Cargo.toml using strings instead (eg: contributing to an older project on Github).

Yes the error is a non-concern, 2021 and "2021" become valid, supported editions hint displayed if invalid 👍
Does the user infer that a dependency can also use 1 instead of "1", or 1.2 instead of "1.2"? Now you run into the same "why?" concern regardless.

$ cargo check
error: failed to parse manifest at `/app/Cargo.toml`

Caused by:
  invalid type: integer `1`, expected a version string like "0.9.8" or a detailed dependency like { version = "0.9.8" }
  in `dependencies.serde`

A similar PR / discussion will likely then shift to the above UX, and reference the change to edition if accepted. After all, you could save many more chars due to multiple dependencies and the same verbal concern can be expressed as shown above.

TL;DR
I just wanted to chime in with the above input:

There is probably a better way to get I/O savings (retroactively) on Cargo.toml storage at scale vs the proposed change to accept integers.
The verbal UX concern still applies elsewhere in Cargo.toml. If you allow the change for edition, expect the approval to justify similar changes elsewhere like dependencies semver.

A server can use a filesystem with transparent compression, a database or similar forms offering compressed storage such as archive formats. This can also be leveraged over network transit.

The hashes of the .crate archives, post compression, are baked into the Cargo.lock files. There isn't much we can do about that, and therefore innovating on compression, which is a good idea, don't get me wrong, is non-trivial. This change in comparison is pretty easy and only takes as many lines because we use serde and serde is not known for allowing low-overhead customizations in data representation.
My argument should be understood in the context of the thing it replied to: people claiming that the gains were rather minor. The argument tries to argue with the scale of crates.io, because that one is easy to make back of the envelope calculations with. But in general it applies to every Cargo project whether it lives on the local disk, only in a private github, or in some other VCS somewhere else.

Does the user infer that a dependency can also use 1 instead of "1", or 1.2 instead of "1.2"? Now you run into the same "why?" concern regardless.

That's easy to answer: all editions are representable by integers, as they are named after year numbers in the gregorian calendar. Not all integers are valid edition numbers, but toml has no concept of an enum, an integer is just as valid as a string (and in my opinion more valid). As for floats, there is two main differences:

not all semver requirements are represesentable as floats, as 1.2.3 is not a valid float.
order on floats is different to order on semver. "1.23" comes after "1.8" but 1.23 < 1.8. the order on integers maps beautifully to the order of editions (although editions are rather point like things, it's just that usually future editions incorporate the breaking changes of earlier ones).
even three-tuples of integers are not a valid model for semver version numbers, as there can be appendices like -pre or -alpha, and semver specifiers can be even more extensive.

all in all, floats (or integers) are way further from semver than integers are from editions.

Compression - Forward-only benefit

The hashes of the .crate archives, post compression, are baked into the Cargo.lock files.
There isn't much we can do about that, and therefore innovating on compression, which is a good idea, don't get me wrong, is non-trivial.

As I'm not familiar with how that's all managed, I assume these Cargo.toml files are in the .crate compressed archives? (EDIT: Yes) If you're already leveraging compression (EDIT: Yes, gzip -9?), then the impact of "integer saves two characters in each Cargo.toml" would already reduce the projected savings benefit? (EDIT: There appears to be no improvement to compressed archive)
These savings would only be for new .crate archives too right?
If the concern is with Cargo.lock files referencing the .crate archives by checksum hashes (EDIT: SHA256 of .crate / .tar.gz), how is that different to the proposed change here? Both would be as incompatible correct? (no benefit to existing .crate archives due to current infrastructure constraints, only benefits new published crates)

Compression - Integer edition no improvement vs ZSTD creates 20% smaller .crate archive

The argument tries to argue with the scale of crates.io, because that one is easy to make back of the envelope calculations with.

Taking the serde 1.0.190 archive .crate it is 76KB as .tar.gz archive (gzip -9?), if I change that to .tar.zst with zstd -19, the .tar file (531KB) compresses down to 61KB.
That's considerable savings already. If this Cargo.toml improvement would only be compatible with a future release of Rust and published crate leveraging it, you'd be far better off supporting zstd?
Meanwhile, I took the uncompressed tar file, extracted it and created the tar again, then edited the Cargo.toml and Cargo.toml.orig files to strip out the edition value quotes, creating a new tar of that and compared sizes with stat --printf="%s" filename. Regardless of .tar or .tar.gz, the bytes reported was the same 🤷♂
It'd seem the 4 bytes saved uncompressed, at least in this case had no impact to the compressed size? How confident are you in these savings being realized vs theoretical?
This is without a custom trained dictionary, so much simpler to implement/support.
Compression - Benefit to contexts: local and VCS

But in general it applies to every Cargo project whether it lives on the local disk, only in a private github, or in some other VCS somewhere else.

I've not tried investigating these scenarios like above. However:

AFAIK git does utilize compression, and only decompresses for the working tree checkout? This change additionally adds a delta that may be larger/unnecessary if an existing project adopts the change and switches to integer edition. A slight benefit for new projects sure, and at scale for a VCS hosting provider.
On disk storage locally... ok sure? I've not looked into how cargo manages this, I know the .crate archives are downloaded and cached, but are those contents extracted anywhere or are we just talking about projects with their own Cargo.toml file(s) where the amount of bytes saved is far less, especially if the OS uses transparent file compression?

The savings locally on disk, and for CI infrastructure like commonly outsourced to Github would benefit far more by the ZSTD compressed crates, where the savings seem significantly better.

UX - Resolving concern displaces it into a larger one

That's easy to answer: all editions are representable by integers

Sorry, I think you misunderstood the point I was trying to convey:

edition would support integer or string with this change. To a user the value is observed as interchangeable, or they are initially only familiar with one until they encounter the other.
Other fields in Cargo.toml that appear as integers only are expected to be strings (as noted above with the resolver field).
If a concern to justify edition as a string is that the user thinks a string is odd/unexpected (or that it's extra effort to communicate the requirement), why would this not apply to integer semver values? After all if a field like edition can support it, why would that not be inferred it might be possible for other fields with string integers? My point here is if an integer as a string is a UX issue, why wouldn't a user likewise get confused in this context, especially if edition were to support integer values?

I understand why semver is using a string. I was just pointing out that one of the reasonings to adopt integer values for edition field still applies to other fields. Allowing it for edition only adds to that confused user UX you're trying to address as now it becomes an example of "this field can do it, why can't this one too?". Then you get a proposal for semver values to support integers (major only), float (major + minor only) and string (everything else).
The "why?" question for edition just carries over to another field like the semver example, and while it was easy for you to answer, that was far more verbose than the answer would be for edition being only a string. If the intent is to reduce confusion by making "why?" redundant for edition, do you not anticipate a "why?" being more frequent for semver supporting values without quotes?
Is there many integer fields a user will encounter in the typical Cargo.toml today?

Or is it a better UX to keep it as a string where it quickly becomes apparent that dealing with number values as strings in the config is convention?
If the frequency of Cargo.toml integer supported fields today is rare, does this change for edition introduce new overhead to a user with "is this field a number, string, or does it support either?". Ideally the user doesn't have that overhead with the config, a single type for a field is one thing, but when it supports multiple then upon discovering this it's only natural that a curious user may wonder if that is supported elsewhere and if not why?

TL;DR
I'm not against edition supporting integers, the above two concerns expressed are just:

Are you really getting savings at scale? At a glance it seems it has no effect on .crate archives (I may have done it wrong 🤷♂ ), adopting ZSTD seems to provide far more value.
Resolving a "why?" concern for edition to improve UX may have a ripple effect to other fields, that adds more noise than the original "why?" concern did 🤷♂

By way of clarification: "save two bytes" / "size" was never the goal under consideration here; it was only ever a question of UX.

We discussed this once more in today's Cargo meeting, to give one more evaluation to the tradeoffs between churn/maintenance and potential UX improvement. We confirmed that we don't have any consensus for this change, and there are several folks objecting to the change. Given that, I'm going to go ahead and close this.


Use functions in gpb_compile instead of in gpb_parse and gpb_scan

I consider the functions in :gpb_parse and :gpb_scan to be internal to gpb, but exprotobuf uses them for parsing. I'm intending to change gpb_parse and gpb_scan in an upcoming rewrite of the parser, and would ideally like to avoid keeping functions for backwards compatibility in modules internal to gpb, and instead keep the api in :gpb_compile stable.
However, the functions in :gpb_compile, do currently not support the way exprotobuf splits protos into different modules as described in the imports_upgrade_guide.md. The way gpb currently handles things is to try to get one fully resolved set of proto definitions (imports and all) and generate one module from that.  I'll try to think if there is some way to make change gpb to better support this use case though, and I am open for discussions.
(If it had not been for this splitting into different modules, I think the :gpb_compile:file(..., [:to_proto_defs] ++ options) would have been a working replacement.)
For reference, this originated from #112.

One idea is to use the {{msg_containment, "⟨.proto⟩"}, [⟨msg name⟩, ...]} and {{enum_containment, "⟨.proto⟩"}, [⟨enum name⟩, ...]} elements that are present in defs. (the file names are Erlang strings, not binaries, sorry about using Erlang notation, don't know how to express this in Elixir syntax) There are also other ⟨x⟩_containment elements for services, rpcs and packages, when such definitions are present.
Another idea is to use the {file, {"⟨.proto base (-ish) name sans ext⟩", "⟨.proto base (-ish) name⟩"}}. The definition elements following such a file element all belong to that file:
a.proto: -------------
syntax="proto2";
import "b.proto";
message MsgA { required uint32 f1 = 1; }

b.proto: ------------
syntax="proto2";
message MsgB { required uint32 f2 = 1; }

1> gpb_compile:file("/path/to/a.proto", [to_proto_defs, {i,"..."}]).
{ok,[{proto_defs_version,1},
     {file,{"a","a.proto"}},            % --,
     {{msg_containment,"a"},['MsgA']},  %   | definitions
     {{enum_containment,"a"},[]},       %   | pertaining
     {syntax,"proto2"},                 %   | to a.proto
     {import,"b.proto"},                %   |
     {{msg,'MsgA'},[⟨field f1⟩]},       % --'
     {file,{"b","b.proto"}},            % --,
     {{msg_containment,"b"},['MsgB']},  %   | definitions
     {{enum_containment,"b"},[]},       %   | pertaining
     {syntax,"proto2"},                 %   | to b.proto
     {{msg,'MsgB'},[⟨field f2⟩]}]}      % --'
2>

The .proto base (-ish) name means the name can contain trailing parts of the directory if needed to make them unique. For example when a proto imports both dir1/x.proto and dir2/x.proto.


add EXACT synonym to abdominal dorsal bipolar neuron dbp

Hi,
FBrf0229617 == Peng et al., 2015, Int. J. dev. Neurosci. 46: 100--107
PMID: 26306777
uses 'dbd' for the term 'abdominal dorsal bipolar neuron dbp' (FBbt:00002442) so it could be added as an EXACT synonym if you think thats appropriate
ta

The synonym has been added.


Fix watch.go behavior for watched directories

If a fsnotify event was received for a file under a directory that was being watched, a callback was only being fired for file change. In the reload_test.py, we were expecting a file creation callback to get fired, but it never was. Fixes #531

Coverage increased (+0.05%) to 62.36% when pulling 24fedfa12c74950531cd543a730e28c4df4bba45 on jivid:master into e6a6931dd2cdda948d91590f281b1d64ccfc383c on limetext:master.

I think I messed something up while syncing changes to my fork. Working on figuring out what happened here.

Changes Unknown when pulling af21fcf14ce5344f9986b45857f4b7f08acbfca6 on jivid:master into ** on limetext:master**.

Please reopen this PR in https://github.com/limetext/lime-backend.


getCandles

As I understand it, it should return results every 1 minute. Unfortunately, no data is coming in, and I'm not receiving any error or session disconnection information either. Am I correct in assuming that the XTB operator has stopped sending data in response to this request?

I've checked the example python3 examples/get-candles.py. It works fine. Maybe you are trying to get candles during the closed market?

I haven't received any candle since 16. 5. 2024. I am using demo websokcet URL: wss://ws.xtb.com/demoStream.
Workaround that may be related https://github.com/peterszombati/xapi-node/issues/17

Trick with getLastChart works.

Use a real account, not a demo one, to stream candles and let me know if the problem persists. There may be account type related issues.
You can also try the getTickPrices stream as an alternative. I have been using the getTickPrices stream for over a year and it is very stable.

getTickPrices it requires some manual aggregations, but yes, it works.

Hello hello, i have the same issue with getCandles command for xtb. Using xapi-python or not.
I contact the support no answer yet. couple days ago i get candles only for bitcoin now nothing wait for the support.

This bug is host related. There is nothing we can do on the client side.


EventPlayer: Bugfix multiple conditionals

SUMMARY
This PR fixes a regression where an EventPlayer configuration meant to post the same event under different conditions would only successfully post when the last condition was true.
DETAILS
Performance optimizations in https://github.com/missionpinball/mpf/commit/aa725f21dfbc749bddab4ffab576eea8c75b9275 restructured the parsing of EventPlayer configs to initialization, and uses a dictionary to store the configs for each event to be posted. By moving from an iteration to a dict lookup, runtime performance is improved—however the same event appearing multiple times (with different conditions) would be overwritten because the dictionary key is only the event itself, not the conditions attached.
This PR tweaks the behavior to store the dict value as a list of configs, rather than a single config. When an event is to be posted, the list of configs is iterated and evaluated.
Performance Implications
I did a timeit comparison between (1) always making the dict value a list and iterating, even when there's only one entry, and (2) checking whether the dict value is a list and only iterating if it is. The results were not significantly different, but the all-lists approach performed slightly better.
def test_lists():
    test_var = None
    for event, items in dict_only_lists.items():
        for item in items:
            test_var = item["name"]

def test_mixed():
    test_var = None
    for event, s in dict_mixed.items():
        if isinstance(s, list):
            for item in s:
                test_var = item["name"]
        else:
            test_var = s["name"]

Checking for 10,000 iterations
 - Every value a list: 0.005966
 - Mixed lists and configs: 0.006381
Checking for 50,000 iterations
 - Every value a list: 0.024976
 - Mixed lists and configs: 0.025874
Checking for 100,000 iterations
 - Every value a list: 0.045673
 - Mixed lists and configs: 0.051380

I chose the all-list approach not really because of the performance difference, but because it's easier and more predictable code when all values are the same shape.
TESTING
I wrote some tests to cover the scenario, and verified that they failed in the current dev and passed on this branch. I also ran Mass Effect 2 against this branch and verified that the regressions no longer reproed.

Looks good. Thanks for adding tests as well! Feel free to merge it once tests passed.


Provide compatibility for >=RN 0.60.0 & provide updated install instruc…

Add Gradle fixes to allow Android builds on >=RN0.60.0
Update install instructions for RN =>RN0.60.0

Nice PR 👍  Commitlint is crying because you currently don't follow the right commit format for this project. We are very strict there because the entire release process is automated and reflects what is in the git message.
fix: allow project to be used with RN 60

Also providing updated install instructions

BREAKING CHANGE: You need to update React Native
to work with this version

This could be a good commit message :)


Advanced Rack Usage

In some applications we are tracking the 6MB response limit in CloudWatch Embedded Metrics. In some rare cases we are using Rack::Deflater to gzip the response. When doing so there are two problems with the Rails pattern in the README that I would like to document and/or add code for.
The most important issue is that if any rack middleware happens outside of the Rails root controller around filter. You won't be able to use Metrics inside of them. To work around that problem, we have to create a few middle wares to setup and flush the logger vs using the Rails filters. For example, in config/initializers/rack_aws_embedded_metrics.rb we can demo this.
module Rack
  class AwsEmbeddedMetricsSetup
    def initialize(app)
      Metrics.instance = Metrics.new(Aws::Embedded::Metrics::Logger.new)
      @app = app
    end
    def call(env)
      @app.call(env)
    end
  end
end

module Rack
  class AwsEmbeddedMetricsFlush
    def initialize(app)
      @app = app
    end
    def call(env)
      status, headers, body = @app.call(env)
    ensure
      Metrics.instance.flush
    end
  end
end

Rails.configuration.middleware.use(Rack::AwsEmbeddedMetricsSetup)
Rails.configuration.middleware.unshift(Rack::AwsEmbeddedMetricsFlush)

You would see something like this if you ran rake middleware
use Rack::AwsEmbeddedMetricsFlush
# ...
use Rack::AwsEmbeddedMetricsSetup
run MyApp::Application.routes

When using this pattern, the Rails controller around action would NOT need to do any blocks or instance setup. So it would look something like this:
def embedded_metrics
  # ...
  _, time = Metrics.benchmark { yield }
  # ...
end

If we did add these to POROs to the project we would need to finally built a simple Railtie so we can hook into Rails config settings and initializers hooks. IE, we would want someone to say, yes, give me these and add them. Rails has very governed hooks for the application loading events. That would allow us to always put AwsEmbeddedMetricsSetup first and AwsEmbeddedMetricsFlush last. We could then document the right middleware.insert_after so we can support easy adding in the right spot. For example, using our Deflator needs as an example:
module Rack
  class AwsEmbeddedMetricsResponseBytes
    include Rack::Utils
    def initialize(app)
      @app = app
    end
    def call(env)
      status, headers, body = @app.call(env)
      if !STATUS_WITH_NO_ENTITY_BODY.key?(status.to_i)
        obody = body
        body, length = [], 0
        obody.each { |part| body << part; length += part.bytesize }
        body = BodyProxy.new(body) do
          obody.close if obody.respond_to?(:close)
        end
        Metrics.put_metric 'ResponseBytes', length, 'Bytes'
      end
      [status, headers, body]
    end
  end
end

Rails.configuration.middleware.insert_after(Rack::AwsEmbeddedMetricsFlush, Rack::AwsEmbeddedMetricsResponseBytes)

Which yields the following rake middlewares order as expected:
use Rack::AwsEmbeddedMetricsFlush
use Rack::AwsEmbeddedMetricsResponseBytes
# ...
use Rack::AwsEmbeddedMetricsSetup
run MyApp::Application.routes

Think this was a bad idea. Closing.


investigate performance of python to sophia

Whether more performent than pudge

relates to https://github.com/nimscale/stor/issues/5

Using the same algorithm in python as in nim, the nim implementation is much faster even with the porting to python
Second thing, Sophia is an embeddable database that can't be used as server, so even if we go that way we have to implement our own server/wrapper to it.
Most python packages that binds to Sophia has problems with python3


block_destroy setting for "explode" type mobs

Hi! Got another one.
There should be a setting that sets whether or not the explosion of "explode" type mobs destroys blocks.
Maybe even a table with a list of blocks that the explosion can destroy.

this u can add

This is the wrong approach. Just fix the on_blast definition of the affected nodes.


documentation: the path to Angular JS GUI testing is incomplete in README.md

A path is incomplete in the Test Layout section of README.md as follows:
current:
gui/: Contains test cases for testing web-based interface built on AngularJS.

fixed:
gui/test/: Contains test cases for testing web-based interface built on AngularJS.

Fix https://gerrit.openbmc-project.xyz/c/openbmc/openbmc-test-automation/+/51853


Syntax highlighting doesn't work

Example http://www.cdnperf.com/resources/how-to-use-cdns
It's like the styles are missing.

Doesn't seem to fix the issue here.

Ok. Hard to tell what's up with that. Maybe revert the highlight.js updates
to restore it.
On 27 Jan 2015 22:16, "XhmikosR"<EMAIL_ADDRESS>wrote:

Doesn't seem to fix the issue here.
—
Reply to this email directly or view it on GitHub
https://github.com/bebraw/cdnperf/issues/56#issuecomment-71719676.

OK I will try that tomorrow.

Now it seems to work. Might have been a caching issue :/


Doc | first-steps/post-deployment: add procedure to add new aws accounts.

What?

Add a new section  "add new aws accounts"  in the post-deployment page.

Why?

So that users have a closer and clearer procedure, of How to create and add new aws accounts after finishing the Leverage first landing.

References

Closes #158

Hello everyone! With the commit of @juanmatias, all the proposed changes have been resolved.
If you agree, I think we are ready to merge this PR, right?


Fix issue with import paths in parser.js

When using less.js in the browser, I was seeing 404s like: http://localhost/dijit/themes/claro/http://localhost/dijit/themes/claro/Common.less
I tracked this down to the less.Parser.importer function, which looks for root-relative paths, but not fully-qualified/absolute urls. In chrome at least (surely not unique), when you ask for the href of an @import rule it is already absolute. So maybe this fix needs to be further upstream in the parser?

Pretty sure this is the same issue as: #409 which is preventing me from using less in a browser (info here)
I'm quite confident that the above pull request is far from a solution.
@neonstalwart - I'm with you. This issue seems to have been around forever with multiple duplicates.

Hi everyone,
Add the same problem and found a solution/workaround, described in #113.

[line 1235 in all-in-one less-1.1.4.js]

    less.Parser.importer = function (path, paths, callback, env) {
        //if (path.charAt(0) !== '/' && paths.length > 0) {
        if (path.charAt(0) !== '/' && !path.match('^(data|file|https?):') && paths.length > 0) {

Best regards.


Feature request: Version indicator somewhere

It would be nice to have a version indicator somewhere.
Thanks for a great tool!

Great idea.  Will do with next release.

#60 Added to testpage and server log, see latest release Latest.


Required phone numbers

The interview requires that the tenant provide their phone number and know their LL's phone number, this wasn't required before. Is there a reason it is required now?
(this was originally part of issue #15 - moved here as its own issue)

This was not intentional - simply an oversight since docassemble automatically requires phone number fields.
This has been adjusted so that:

The user's number is always optional.
The landlord's number will only be required if the user notified them by text of a forwarding address


[BUG]: Developer Compliance Centre App Description Update

Describe the bug
In the Dev Compliance App details screen, if you have no description on the app then it informs you to
"To Add Description: Go to the App Settings > Edit the App > Settings > Add Description > Save and Publish. Then return here and  click the refresh button below"
In the version I have, there is no Refresh button as the text says,
Component (please tell us which flow or app you are experiencing issues with):

Governance Components
Version 1.21
Developer Compliance Center

To Reproduce
Steps to reproduce the behavior:

Go to App
Click on an app that has no description
Scroll down to Look at the hint text for the description
There is not refresh button.

Expected behavior
Not sure what you expected here,  but as the user ccould change this description and its not currently synced, the refresh button
should exists and it should fetch the real description from the App , update the CDS with it and refresh the control data

Thank you for using CoE and for posting. I just deleted the reference to a refresh icon, the Compliance Center app will need to be restarted in order to fetch new data.

Thank you for using CoE and for posting. I just deleted the reference to a refresh icon, the Compliance Center app will need to be restarted in order to fetch new data.

Hi,
At least in version 1.21,   this doesn't solve the problem, When the user goes to their app, edits the description, it is only changed in the App,   the Compliance Center app gets its description from the CDS description field,  which is only updated daily.
So Refreshing the App will not drag the new data from the app and update the CDS field.   A button could do that.
If the compliance centre is not getting the description directly from the app, then it needs to tell the user to wait till the following day to see the changes.

Hi,
At least in version 1.21,   this doesn't solve the problem, When the user goes to their app, edits the description, it is only changed in the App,   the Compliance Center app gets its description from the CDS description field,  which is only updated daily.
So Refreshing the App will not drag the new data from the app and update the CDS field.   A button could do that.
If the compliance centre is not getting the description directly from the app, then it needs to tell the user to wait till the following day to see the changes.

Hello. The new version of the Audit Components has just released.
Please be sure to remove any unmanaged layers before updating as described in installing upates.
And thanks for helping make CoE great!

How did you address this bug in the end ?  I couldnt see it in the release note, but there was a lot ?
Did you go with your original suggestion of changing just the text ? Or did you take note of my follow up comment regarding the 24hr latency of the data and refreshing the page will not change the content ?
Thanks

I just changed the text. We do not have bandwidth for a larger change at this time.
Thank you


[Refactor] Refactor error msg when body exceed max size during stream load

What type of PR is this：

[ ] BugFix
[ ] Feature
[ ] Enhancement
[x] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #17041
Problem Summary(Required) ：

Error msg when body exceed max size during stream load is "body exceed max size:<PHONE_NUMBER>0, limit:<PHONE_NUMBER>0", this is not clear,  we should let user know current size, and it exceed maximum size.
Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[ ] 2.5
[ ] 2.4
[ ] 2.3
[ ] 2.2

run starrocks_admit_test

run starrocks_admit_test

run starrocks_admit_test


OSSEC Security

https://rtcamp.com/support/topic/ossec-security/
I’m not sure if this is something that has been considered but OSSEC is a “Open Source Host-based Intrusion Detection System that performs log analysis, file integrity checking, policy monitoring, rootkit detection, real-time alerting and active response”. I use it on my server to keep an eye on authentication logs and such. Possibly something to include in the upcoming security release? I was hesitant to post since EasyEngine is targeted towards WordPress, but it provides security support to the server in general.

@MiteshShah I'm currently using OSSEC with easyengine droplets. Very easy to use and super effective. I never new how many SSH intrusion attempts I was getting till using installing OSSEC. I vote for this. @harshadyeola I'm now curious about naxsi vs ossec. Thx for sharing that ; )

@shaneholloman Can you share your config and step to install/configure OSSEC
Its help us to test and automate this OSSEC install/configure process in future

@MiteshShah Man, I'm so soryy I missed this! I will write up a step by step this weekend and post here : )

Actually I found the initial guide that helped me:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-ossec-security-notifications-on-ubuntu-14-04
I'm happy to redact this to pure command lines only if it helps you. Otherwise this worked perfectly for me

@shaneholloman Thanks for link. :-)
May I know how much overhead this tool add to server? Overhead as in CPU load, RAM consumed (assuming it will be running as daemon)
Will it work nicely on 512MB droplet?

@rahul286 It uses very little CPU and Ram in conjunction with fail2ban and UFW... I use with ease on a 512 and a 2GB droplet
If you send you pub key I will give access to 2GB and  512 droplets of mine both using the latest EE version

Great. :-)
Thanks for details.
I will try to test DigitalOcean article this weekend only.

As security focused as IT has become, I'd like to weigh in as a +1 for this idea and inquire about where consideration of OSSEC has landed, in relation to EE?

Sorry to bump such an old thread, but did this get anywhere? I'd love to have OSSEC as on add-on option in EE.


Vulnerability roundup 92: postgresql-10.13: 2 advisories [8.8]

search, files

[ ] CVE-2020-14349 CVSSv3=8.8 (nixos-unstable)
[ ] CVE-2020-14350 CVSSv3=7.3 (nixos-unstable)

Scanned versions: nixos-unstable: c59ea8b8a0e.
Cc @danbst
Cc @globin
Cc @ocharles
Cc @thoughtpolice

See also: #90959

Fixed in 10.14, 10.15 is on 20.09 and master.

Fixed in 10.14, 10.15 is on 20.09 and master.


[idea] LowDash instead of Underscore.js

https://github.com/bestiejs/lodash
"A drop-in replacement for Underscore.js that delivers up to 8x performance improvements, bug fixes, and additional features."
It is new, but under very active development.  Might be handy having that speed when churning many coffeescripts.

2.0 now doesn't require underscore.


Syntax error: newline unexpected

Hi, wanted to use gdrive-cl, I downloaded the package gdrive-linux-x64 (I'm running Debian 9 atm), I give it the execution rights and I get this by doing ./gdrive-linux-x64 about : ./gdrive-linux-x64: 2: ./gdrive-linux-x64: Syntax error: newline unexpected
Has anyone ever had this problem before? Thank you.

Fixed, wasn't a bug or anything else, download failed


Code review + code style of the project

We should make sure that we are using the same code style through whole project

I think this can be closed now.


eslint: enable curly rule

Introduce consistency for if statements.

Coverage remained the same at 82.407% when pulling 038fe27fb52b1d90d984d621da4e41534b50bef1 on eslint-curly into 0f62482370d8d0a9bb4e41a8e2b68bc7cf3487a2 on master.


OAK-10604 - Azure Service Principal Support in oak-segment-azure

Added service principal configuration properties
Added Azure Identity client library for Java as a dependency and updated all oak-run* poms to adjust size

I saw that tests in oak-it-osgi are failing. Working on fixing this now.

I fixed the OSGi wiring issue and had to increase again the size of oak-run and oak-run-elastic after embedding more libraries into oak-segment-azure. All tests pass now locally.


Submitting Assignment 2

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
==> Submitting Assignment - 2 of Production Module
What did you learn from the changes you have made?
==> A lot from reading CSV, creating train and test set, preprocessing and model creation, pipeline and cross validation, metrics calculation, etc.
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
==> No
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
==> Yes, reviewed session recordings, lab code files and researched over the Internet
How were these changes tested?
==> Locally in VS Code using Jupyter notebook.
A reference to a related issue in your repository (if applicable)
Checklist

[ ] I can confirm that my changes are working as intended

A2 complete

Okay, thank you @ananyajha2000


Use --no-as-needed in abi check

can be changed to set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} @Connext_LINK_FLAGS@") after https://github.com/ros2/rmw_connext/pull/173 is merged
connects to https://github.com/ros2/rcl/issues/66

+1


Base64 encode feature

Is it possible to implement the possibility of Base64 encoding for authorization?
In my case it is used for access to plc webserver, and in the sector it is often used and would be really convenient.
Thanks

Hi,
I am not sure what you mean by that ?
Credentials are always encoded in Base64 when performing a HTTP Basic Authentication according to the RFC.
In the case of this extension, the browser does this automatically when provided with the credentials.
Do you have a usecase where the extension is not working ?

Hi,
yes as I wrote it does not work for access to a webserver of a plc, for this reason I thought it was not encoding in Base64. Just to understand the possible problem, I made a small app in Android, where I send authentication with this code:
String authorization = "Basic " + Base64.encodeToString(usernamePassword.getBytes("UTF-8"), Base64.NO_WRAP);             map.put("Authorization", authorization);             webView.loadUrl("http://myWebserver/", map);
and it works properly.
Thanks
bye

Hi,
As I said, the Base64 encoding is part of the standard. all HTTP basic authentication use it. This part is also handled by the browser.
So I can assure you that the extension works properly with any webserver respecting the standard.
Can you give me more information about your setup ?
When the extension tries to send credentials, you can see a small square on the extension icon that can be various colors :

green, credentials were sent and correctly accepted
red, credentials were sent but didn't work
yellow, there are multiple credentials matching for the given domain.

Also, if you click the extension icon, all credentials currently matching the currently opened URL have a green background.
Can you please check if the credentials you entered are correctly matched for the domain (green background when the extension icon is clicked), and report the color of the small square ?
Also, "it does not work for access to a webserver of a plc" is not a use case, it is a statement. If I am not able to reproduce your issue, I cannot help you :) I used the extension to connect to a variety of different webservers, using various backend technologies without any issues. So you'll have to be a lot more specific or ideally provide me credentials and access to the server posing the issue :)
Best,

Thanks for your interest.
The background is green, but I can't see any changes on the icon :(
I have enabled you, if you want to check, a temporary user accessible remotely at this address _https://napoli.sytes.net/ord/file:^AirQuality/AirQuality.px_ with user krtek4  and pass Thanks2020 , which I have also already tested with my android app and it works.
Thanks again, if you want to waste time, as your extension would be really comfortable for me :)
bye

Hi,
Thanks for the access.
As far as I can tell, the link you provided does not ask for an authentication, instead it redirects to a login page using a 302 HTTP status code :

The mechanism provided by the browser to provide credentials only kicks in when the browser returns a 401 HTTP status code (see https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onAuthRequired for details).
Probably the piece of code you implemented on Android works because the webserver authenticates the user if the credentials are present, and otherwise redirect to the login page. In the case of this extension, credentials are only sent if asked by the webserver.
I don't think there's something I can do for you. Sorry.

Ok, I understand, unfortunately I had imagined a problem of this type, thanks for the effort, you were still very kind.
Thanks again
Good job, bye


conformance: refactor listenersMatch and parentsMatch helpers into a single generic function

What would you like to be added:
Refactor listenersMatch (added in #1081) and parentsMatch to be a single generic function, or at least wrappers around a single generic implementation of the core logic.
Why this is needed:
The core logic of these two functions is quite similar (searching for all expected items in a slice of actual items, including the unimplemented need to support an arbitrary ordering), and it would be better to have this logic implemented once than risk two similar implementations diverging.

Hi,
It looks like this refactoring could be achieved with the same level of log details by using Reflection. Would that be the way to go ? I'd like to give it a try.
Regards

Hi,
So I've been thinking about the implementation, and found out that the parentsMatch and listenerMatch functions have a lot of specifics (i.e v1alpha2.RouteParentStatus and v1alpha2.ListenerStatus are not checked the same way).
I can propose the following approach:
Extracting the test logic of a single elemnent for both type with functions of the following prototype:
func oneListenerMatch(eListener, aListener v1alpha2.ListenerStatus) bool
func oneParentMatchClosure(namespaceRequired bool) func(eParent, aParent v1alpha2.RouteParentStatus) bool

Note that oneParentMatchClosure is a Closure, to allow us building a matcher function with the same prototype as oneListenerMatch.
Then we can implement a generic function that iterates on every element of 2 lists passed as arguments with the following prototype:
func listMatch(t *testing.T, expected, actual []interface{}, matcher matcherFunction) bool

This is the function that can be updated to match elements regardless of their order.  This generic listMatch function needs a matcherFunction as argument, that will be applied on every element of the lists.
type matcherFunction func(interface{}, interface{}) bool

Finally, the parentsMatch and listenersMatch functions would be rewritten like this:
func parentsMatch(t *testing.T, expected, actual []v1alpha2.RouteParentStatus, namespaceRequired bool) bool {
	oneParentMatch = oneParentMatchClosure(namespaceRequired)
	return listMatch(t, expected, actual, oneParentMatch)
}

func listenersMatch(t *testing.T, expected, actual []v1alpha2.ListenerStatus) bool {
	return listMatch(t, expected, actual, oneListenerMatch)
}

These are my initial thoughts. I'll try to write an actual implementation of it pretty soon.  Any comments are welcome.
Regards

/remove-lifecycle stale

/remove-help


question: how to make all the windows transparent?

Yabai supports transparency for the active/inactive window. Is there any way to have the transparency for all the windows regardless of their selection status?

Just set them both to the same level.

I use one window per space. Each application (window) goes to one space.

Fullscreen? Then there is no transparency.

Oh i got what you mean. I set both active and nonactive windows to 0.8.
Thanks!!!

@24unix and is it possible to exclude some applications?

Yes. Like so:
yabai -m rule --add app="Parallels Desktop" opacity=1.0


feat: l2g gold standard freeze

Context
This PR adds locus_to_gene_gold_standard that is the exact copy of gs://genetics_etl_python_playground/input/l2g/gold_standard/curation.json
The file was used initially for the purpose of genetics_etl l2g training step.
@ireneisdoomed I misled you, the file was not distributed into partitions.

Thank you, can you please update genetics.md as well?

Yes, I will update it shortly after I point this as a discussion on the Effector Gene Workshop later next week, so we could decide afterwards if keeping the gs in https://github.com/opentargets/genetics-gold-standards is superior or not.


Restart ironic-agent.service when it fails

Avoid the situation that ironic-agent.service will not restart after failure due to some circumstances.
Signed-off-by: Zhou Hao<EMAIL_ADDRESS>

IMO adding Restart=on-failure is a code improvement, not a bug fix.
When testing IPI with #33 on iRMC, ironic-agent sometimes failed to start successfully, but after a manual restart, the service ran successfully. We noticed that the error was related to the network. Unfortunately, we didn't record the error message at that time. Now we've done 6 tests in a row but can't reproduce the error. We guess that when the service was pulling the image, the proxy was just unavailable, causing the service to fail to start.
Therefore, if the service itself supports restart after failure, it can avoid permanent failure of the service due to factors such as network instability.

The error reappeared.
-- Logs begin at Fri 2022-01-28 23:33:55 UTC, end at Fri 2022-01-28 23:38:23 UTC. --
Jan 28 23:34:41 master-1 systemd[1]: Starting Ironic Agent...
Jan 28 23:34:42 master-1 podman[2243]: Trying to pull quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:b9f235258d1bf30f5819089506e1ee5b698dcbe1b52ce9e49cbaad6ad96c1897...
Jan 28 23:34:46 master-1 podman[2243]: Getting image source signatures
Jan 28 23:34:50 master-1 podman[2243]: Error: Error reading blob sha256:eac1b95df832dc9f172fd1f07e7cb50c1929b118a4249ddd02c6318a677b506a: Get "https://cdn02.quay.io/sha256/ea/eac1b95df832dc9f172fd1f07e7cb50c1929b118a4249ddd02c6318a677b506a?Expires=1643413370&Signature=Tix43Y0YVkJaSgjvc6stWUiASYCRxEc7C-JSNge-R4zbwrS9bhgNNIMJDBpy4lbNj-r7KJJw7q~rmO8xiI47sYJkI1zLRAFFijTFDVCKbNGxaYUBfUvrC0BEcCdLTosgkS8m2Nv1BOqjQcZI61B2ChjLMtYFzmwllSOMga9UV9A2iZJDTi9pSjLPaFl-qam1W57FJQIh107gfA3lo7NounE337WKt6rQWSVgFfvFe0G~Sjs3yMknHcCvjuiKlF86F05RJAD0VBPMOCnDqYHLHOA~-6d-ZmSmBqK307Ab2~Bic~eqahQKxewWuRK70AWtG24LLKlDeGBumH006nTKSw__&Key-Pair-Id=APKAJ67PQLWGCSP66DGA": ERROR
Jan 28 23:34:50 master-1 systemd[1]: ironic-agent.service: Control process exited, code=exited status=125
Jan 28 23:34:50 master-1 systemd[1]: ironic-agent.service: Failed with result 'exit-code'.
Jan 28 23:34:50 master-1 systemd[1]: Failed to start Ironic Agent.

It happened again:
-- Logs begin at Sat 2022-01-29 06:31:32 UTC, end at Sat 2022-01-29 07:46:48 UTC. --
Jan 29 06:32:19 worker-0 systemd[1]: Starting Ironic Agent...
Jan 29 06:32:20 worker-0 podman[2277]: Trying to pull quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:f07e1596763e4f1b0834cb700037fd1958071ae26492d8c3fc686afc5ef560cb...
Jan 29 06:32:26 worker-0 podman[2277]: Error: Error parsing image configuration: Get "https://cdn02.quay.io/sha256/db/db1135106ca881540040a27ecd1e8d3af97eff3881095ea9a48a1f5b1d1e407d?Expires=1643438266&Signature=NFPoGINK-IW0lgieHhLa~G-9m462emXWjEvcXqMJhMAJSNPZWrA4ywibhgxguUYy60GZFRVpZcZsm0OQ3aRhLkbTrRPCgv6H3ndmCV-kpHgvqajCm-QZM5PBI~pdnNajxyLPKqfVEZq9cntOE3CidbERlUNT~92P4cL2Zlp~nE1JHvFS~Y5BkpvscQWshEUEBlc~ZmAPO1QF9CSGbLlB7TFsNg22M65rpikNqHszyk9N5STuq6p5SqrRTGs78JUm-AIEDq~CZWfJVcHTqliCUxfMvSJEsl-wLIfcz2NfQIhctDHwrmGVEWdKjMs1Y7T4UkHGb5IEpBoarp~nApvSkw__&Key-Pair-Id=APKAJ67PQLWGCSP66DGA": ERROR
Jan 29 06:32:26 worker-0 systemd[1]: ironic-agent.service: Control process exited, code=exited status=125
Jan 29 06:32:26 worker-0 systemd[1]: ironic-agent.service: Failed with result 'exit-code'.
Jan 29 06:32:26 worker-0 systemd[1]: Failed to start Ironic Agent.

In case of non-transient failure, with this approach isn't the service restarted continuosly?

Restarting the service matches the behavior of our previous ramdisk, so it should be fine.
Please fix the unit test failure.

Restarting the service matches the behavior of our previous ramdisk, so it should be fine.

Yes, I was thinking more to the fact that in case of permanent failure (ie network outage) the installation will probably fail after the bootstrap timeout (30m), while a mechanism based on a counter could fail faster.

I don't think we have a way to communicate the agent failure back to the control plane.

I don't think we have a way to communicate the agent failure back to the control plane.

Right, not sure if at least the error reporting could be improved then ( I guess @hs0210 fetched the journal log directly from within the instance?)

/retest

@dtantsur @andfasano updated, PTAL.

/retest

Right, not sure if at least the error reporting could be improved then ( I guess @hs0210 fetched the journal log directly from within the instance?)

We can log in to the master to get the journal log, but we haven't thought of a good way to improve the error report.
@dtantsur @andfasano When we use IPI deployment, we still encounter this problem from time to time. Can you review this PR? thanks.

/lgtm

/approve

/cherry-pick release-4.10


Clean up model structure

Description
Sorry @ArnNag and @chrisiacovella , this PR should have been divided in multiple PRs. I hope we can get this merged and finish the model restructuring.
The motivation for this PR is two-fold:

models with multiple output heads were forced into a structure that only allows for an energy return type. Related to this issue is that we didn't have any flexible postprocessing set up to deal with output values that should be treated differently (e.g., atomic energies and atomic charges). This PR restructures this and adds a flexible way to process per-atom and per-molecule properties and also possible interchange between these.
dataset information needs to be passed to the model to perform input normalization during training. The way we have done this so far was manually setting the appropriate parameters within the Postprocessing module. Now we are passing the dataset statistics toml file that is generated when a dataset is processed to the model factory. This approach is also in line with how the pl.DataModule wants to propagate information from the process() step to the setup() step (by writing information on disk).

To dos

Updating the BaseNetwork module to allow for flexible per-atom processing and per-molecule readout operations on different keys of the output dictionary
update toml files to include processing and readout fields
update tests

Status

[x] Ready to go

@ArnNag and @chrisiacovella , this PR is ready for review.

Codecov Report
Attention: Patch coverage is 94.44444% with 11 lines in your changes missing coverage. Please review.

Project coverage is 80.56%. Comparing base (90382d8) to head (546bfe1).
Report is 60 commits behind head on main.

Additional details and impacted files


Add default value types

No: no default value applicable.
Profile-specific: default value of an object shall be defined in a profile.
Manufacturer-specific: default value of an object shall be defined by the manufacturer of the CANopen device.
Value default value of an object after CANopen device initialisation

Presumably this type can be derived from the default value attribute.
If set to 4, "Not applicable for the preceding data field, data field shall be empty", the default value is profile- or manufacturer-specific.


Feature/weather api

Feature is done and working.
Currently just returns weather in format: "Current weather in {city} is {weather} with a temperature of {temperature}°F."
If you think more detail is needed let me know.

Merged; you can delete the feature branch if you'd like.

Gonna keep it for now in case we need to update it or I change anything


S3 Bucket File Uploading Not working

user is not authenticated
bucket is public also i read and implemented all necessary steps for uploading image
    ref.listen<File?>(pickImageProvider, (previous, state) async {
      final id = Random().nextInt(100);
      final path = 'profile/$id/images/avatar.png';
      if (state != null) {
        final uploadDescription = await ref
            .read(clientProvider)
            .uploadFile
            .getUploadDescription(path);
        if (uploadDescription != null) {
          log.log(uploadDescription);
          var uploader = FileUploader(uploadDescription);
          final bytes = await state.readAsBytes(); // Uint8List
          final byteData = bytes.buffer.asByteData();
          log.log(byteData.toString());
          final isUploaded = await uploader.uploadByteData(byteData);
          log.log('$isUploaded');
          var success =
              await ref.read(clientProvider).uploadFile.verifyUpload(path);
          log.log('file upload  $success');
        }
      } else {
        log.log('Fail to get File');
      }
    });

i can seen uploadDescription response    url type X-Amz-Credential Policy  X-Amz-Signature  etc
but   isUploaded (uploadByteData) give false and also isUploaded(verifyUpload) is also giving false
No exception throw

Can't upload to S3 too, even I make my bucket public..
No issue found if I POST from Postman when I make it Public
On my case it's return
SocketException: Read failed (OS Error: Connection reset by peer, errno = 104), address = [REDACTED].s3-ap-southeast-1.amazonaws.com, port = 38604
from
serverpod_client>lib>src>file_uploader.dart
Code on flutter
final bytes = await rootBundle.load('assets/images/Test1.png'); final uploader = FileUploader(uploadDesc); final stat = await uploader.uploadByteData(bytes);

@tusharbhambere what is the status code returned by the upload api?

This is driving me nuts. Not only does the API return only false and i had to dig into the package implementation to find out that I get the same connection reset by peer error. I did everything as stated in the docs.

I also get "Write failed" errors besides the lovely "Connection reset by peer"

https://github.com/serverpod/serverpod/issues/1004
This was the issue.


Add BOM Meta Endpoint

The idea behind a BOM Meta endpoint is to provide format, hash, and external signature information.
The BOM Meta retrieval would work similar to the existing BOM retrieval, but would return metadata rather than the BOM itself.
bom-meta-url = system-url "/" bom-identifier
bom-identifier    = segment
                        ; an identifier that uniquely identifies a BOM
                        ; NOTE: MUST be appropriately URI encoded
                        ; segment as defined in RFC3986

As an example, here's a snippet response for what I'm thinking about being returned:
{
  "spec": {
    "format": "CycloneDX",
    "version": "1.4",
    "mime-type": "application/vnd.cyclonedx+json",
  },
  "published": "2022-03-07T15:50+00Z",
  "checksum": [
    { "alg": "SHA-256", "value": "CF80CD8..." },
    { "alg": "SHA-512", "value": "CF80CD8..." },
    { "alg": "SHA3-256", "value": "CF80CD8..." },
    { "alg": "SHA3-512", "value": "CF80CD8..." },
    { "alg": "BLAKE3", "value": "CF80CD8..." }
  ],
  "signature": [

  ]
}

I think alg should be an enum with only those supported algorithms.
As for signatures, it would be ideal if we could support external signature files, signature services (e.g sigstore), and external inline.

Should we include group, name and version of the software the BOM is for as well?

I don't think so. CycloneDX has these things. SPDX does not. IMO, I think we keep is strictly metadata about the, not its contents.

This is much like HEAD in HTTP. I like this idea.

This is much like HEAD in HTTP. I like this idea.

HEAD has no body returned. rfc9110 9.3.2
TL;DR a HEAD method is intended to be the same headers returned, with no body, for the corresponding GET.
This offers a lean way to assists in an assessment for whether or not a full GET is required to be called next.

I understand the concept in this ticket, but it is not clear in this ticket why such an endpoint is required and in what scenarios this provides value.
@stevespringett, @oej - is there anything that can be added as a reference or explanation (for myself and the wider community)?

Note that this ticket is pre-TEA, it does not refer to current work.


under Docker container server can't get response : x509

Fail to get response because Post https://ocr.tencentcloudapi.com/: x509: certificate signed by unknown authority

Due to the lack of certificates in the base image.
Find this question: https://stackoverflow.com/questions/52969195/docker-container-running-golang-http-client-getting-error-certificate-signed-by
FROM golang:alpine as build
RUN apk --no-cache add ca-certificates
WORKDIR /go/src/app
COPY . .
RUN CGO_ENABLED=0 go-wrapper install -ldflags '-extldflags "-static"'

FROM scratch
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=build /go/bin/app /app
ENTRYPOINT ["/app"]


NPM start doesn't work

Hi Jishi,
Looks like an amazing project. I am going to try and make an Alexa skill with it and can let you know if interested?
I get "missing script: start" when I do npm start.
Node index.js however works.

Apparently you need to manually subscribe to your own repos to get notifications of issues raised :)
I'll fix this


fix: replace etcd stale dependency

Description
fix #8
Replaces the stale dependency of go.etcd.io/etcd used in kine.

I use debug.GetBuildInfo to check that the latest v3.3.27+incompatible version will be used after the update (the go.etcd.io/etcd library does not have a 3.5.x version)

I use debug.GetBuildInfo to check that the latest v3.3.27+incompatible version will be used after the update (the go.etcd.io/etcd library does not have a 3.5.x version)
@tokers @starsz Please help to review it, it can be merge if there is no problem.

If there is no problem, please merge. 🤣

If there is no problem, please merge. 🤣

Sure.


Zero-copy Python inputs using arrow

Motivation
While we already have support for zero-copy inputs in Rust nodes, we still require copying the data for Python nodes. This can lead to decreased performance when using messages with large data. To avoid these slowdowns, we want to support zero-copy inputs for Python nodes too.
Challenges
The fundamental challenge is that Python normally operates on owned data. So we have to use a special type such as the memoryview object to make the data accessible to Python without copying. What makes things more complex is that we need a custom freeing logic because we need to unmap the shared memory and report a drop event back to the sender node.
Using a non-standard data type makes it more complex to interact with the data. For example, special functions might be needed for reading, cloning, and slicing the data. Also, it is common to convert the data to other types (e.g. numpy arrays), which requires special conversion functions.
Apache Arrow
To keep the Python API simple and easy to use, it's a good idea to use some mature existing data format rather than creating our own custom data format. The Apache Arrow project provides such a data format that supports zero-copy data transfer across language boundaries. It's already quite popular and used in many projects and tools, so it looks like a good candidate for dora.
Arrow vs PyO3

arrow provides two useful features for us

a stable ABI for sharing data across programming languages without copying

Rust -> Python in our case
See https://arrow.apache.org/docs/format/CDataInterface.html

a library with high-level functions to work with the data in Python without copying it (e.g. convert it to a numpy array view)

We could also create our own stable ABI types using PyO3

This approach is more flexible, e.g. it allows implementing custom methods.
However, we would need to implement all desired Python functionality and conversions manually.

The Arrow Array datatype

Most suitable data type for our use case since dora inputs are always byte arrays right now

(We might want to support additional arrow types in the future.)

Provides direct access to the data

Invalidating the data from the outside is not possible. This would be useful for ensuring that old inputs are properly freed.
We need to rely on the user code to not keep the inputs alive for too long, otherwise the shared memory remains blocked. (We could print some warnings if an input is still not dropped after some timeout.)

Memory management is done using a release callback.

Called when the consumer does not need the data anymore
Producer can store additional private data in a private_data pointer field
See https://arrow.apache.org/docs/format/CDataInterface.html#memory-management for details

Implementation

Accessing the data from Python is possible using pyarrow:let pa = py.import("pyarrow")?;

let array = pa.getattr("Array")?.call_method1(
    "_import_from_c",
    (array_ptr as Py_uintptr_t, schema_ptr as Py_uintptr_t),
)?;

The question is how we can create the ArrowArray from Rust with custom drop semantics.

The arrow2 crate

Provides a set of different array types that can be shared via arrow
Unfortunately, most of these types are unsuitable for our use-case, since they assume that the data is stored on the heap

our data is backed by shared memory instead, which needs special actions on drop

If leaking the data was acceptable, we could use a PrimitiveArray and the arrow2::ffi::mmap::slice function.

Unfortunately there is no way to figure out whether the data is no longer used.
Freeing the data too early would result in a segfault or in corrupted data, which is not acceptable.

Idea: Implement the arrow2::array::Array trait for a custom type

Then we could use the arrow2::ffi::export_array_to_c function to create the Arrow array

The arrow2 library automatically fills in a release implementation that calls the drop handler of our custom type
In this drop handler, we could unmap the shared memory and report the drop tokens to the dora daemon

Unfortunately, this approach is not possible because the export_array_to_c function only works with the predefined array types (via downcasting)

Conclusion: There appears to be no way to create an Arrow array with custom drop logic using the arrow2 crate

Manual Creation

The ABI layout of Arrow arrays is specified, so we could do the creation manually
Drawbacks: very unsafe, difficult to get right, a lot of work
Advantage: We can implement exactly the drop behavior that we like

The official arrow crate

See https://docs.rs/arrow/35.0.0/arrow/ and https://github.com/apache/arrow-rs
The Buffer::from_custom_allocation looks quite promising for our use case

This Buffer can then be converted to ArrayData using new_unchecked:ArrayData::new_unchecked(
    UInt8Type,
    len,
    Some(0),
    None,
    0,
    vec![buffer],
    vec![],
)

This ArrayData struct can the be used to construct a FFI_ArrowArray through the new constructor.
The corresponding schema can be generated using the FFI_ArrowSchema type: FFI_ArrowSchema::try_from(data.data_type())?

Thanks for this detailed analysis!
Curious about when you say:

Unfortunately there is no way to figure out whether the data is no longer used.

This is because we can't listen on the python arrow itself. This is why you mentioned that we could eventually listen for a drop of the event object itself.
In the case we listen for a drop of the event object, wouldn't we be able to know when the data is no longer used?

Unfortunately, most of these types are unsuitable for our use-case, since they assume that the data is stored on the heap

I have to check again but from what I remember, the unsafe slice gives you a Array that you can transmute for free to other types like array and the likes.

In the case we listen for a drop of the event object, wouldn't we be able to know when the data is no longer used?

Dropping the event is not enough since the user can take the data out of input events and store them somewhere else (e.g. in some list). So we really have to wait until the data is dropped too. With Arrow, this is signaled through the release callback, which is part of the data format.
The issue with the arrow2 crate is that it does not support to plug your own logic into the release callback.

Unfortunately, most of these types are unsuitable for our use-case, since they assume that the data is stored on the heap

I have to check again but from what I remember, the unsafe slice gives you a Array<u8> that you can transmute for free to other types like array<f64> and the likes.

The issue with the ffi::mmap::slice method is that it does not take any ownership of the data. So it will set the release callback to a no-op, which effectively requires us to keep the data allocated forever (since there is no way to find out whether it's safe to be freed).

I see your point. Thanks for the clarification! I'll try to do some test as well next week.

To give some more details:

The underlying type for all the arrow array implementations is called Buffer in both arrow2 and arrow

arrow: https://github.com/apache/arrow-rs/blob/0df21883cb7a5f414894a833ae301fcd8d8e464c/arrow-buffer/src/buffer/immutable.rs#L34-L48
arrow2: https://github.com/jorgecarleitao/arrow2/blob/db87f71f3f673b240de80d5a7592d45c0beae805/src/buffer/immutable.rs#L38-L48

For both crates, this Buffer type has an Arc field of type Bytes, which stores the actual data

For the arrow crate, Bytes is a custom struct, with a pointer, a length, and a Deallocation field, that defines how to clean up the array.
For arrow2, this Bytes type is an alias for a ForeignVec with the owner set to InternalArrowArray, which contains a reference to the actual FFI-compatible arrow array type.

We want to set a custom deallocation logic:

For arrow: The nice thing is that the Deallocation parameter can be written set to some custom deallocation logic through the owner argument of Buffer::from_custom_allocation
For arrow2 we don't have such an option. However, the PrivateData struct (which the library frees on drop) has a generic array: Box<dyn Array> field. So maybe we could implement the Array trait for a custom type of ours, which performs the necessary drop steps? Unfortunately, this does not work either because the library assumes that the Array trait can always be downcasted to some known array type. So using e.g. export_array_to_c with a custom Array implementation will result in a panic.

Could you clarify why you chose the arrow2 crate instead of arrow in the first place? Is there any functionality missing from the arrow crate?
Also, it looks like there are some proposals to merging arrow2 and arrow: https://github.com/jorgecarleitao/arrow2/issues/1429 and https://github.com/apache/arrow-rs/issues/1176.

Yeah, I thought that arrow/Buffer required the ownership of the data but it seems that as you mentioned you could do it with [from_custom_allocation](https://docs.rs/arrow/35.0.0/arrow/buffer/struct.Buffer.html#method.from_custom_allocation).
In many ways the arrow2 crate seems more easy to work with vec and slice without too much work. But if this deallocation can only be done with arrow, there is no issue with using it.

In any case, it should be simple to change from arrow2 to arrow as they both can read c pointers as input to make a array. I can add some comments to go from one to the other if you need.
Also, isn't the deallocation method of an array that we have built be called at the end of its lifetime, which in our case is when we export it to a python arrow array, and not when it's not used within python?

Implemented in #228.


SslHandler does not use ChannelBufferFactory to create a new buffer

SslHandler.unwrap() creates a new buffer using Channels.buffer(..) currently.  It should use ChannelBufferFactory.getBuffer() instead.

Isnt the master branch affected also?

Yeah, I patched both branches
--
http://gleamynode.net/
http://twitter.com/trustin
http://twitter.com/trustin_ko
http://twitter.com/netty_project
On Wednesday, February 29, 2012 at 9:46 AM, Norman Maurer wrote:

Isnt the master branch affected also?

Reply to this email directly or view it on GitHub:
https://github.com/netty/netty/issues/208#issuecomment-4242741


video duration update

per the discussion in the video taskforce

LGTM

Looks good to me on the video sections. I'm not 100% sure what was changed in the other files that look identical on the "Parameter" lines though...

Oh - I just fixed a typo in these files: Paramaters to Parameters. Happened to notice it while searching for other references to 'duration'.

there was an image I believe needed changing as well


App is not able to start successfully(after stop) when it depends on a job with only "create" event.

acorn version v0.7.0-alpha1-83-gd8ae7373+d8ae7373
Steps to reproduce the problem:

Deploy app which depends on job with create event.

containers: web: {
	image: "nginx"
	ports: publish: "80/http"
	files: {
		"/usr/share/nginx/html/index.html": "
My First Acorn!!
"
	}
        dependsOn: ["create-job"]
}

jobs: "create-job": {
	image: "busybox"
	command: ["sleep", "15s"]
	events: ["create","update"]
}

Once the app is deployed , stop and start the app.
App fails to start with following error:

mytest1      65300fafc60c   0         0            45m ago   http://web-mytest1-e49a190a.local.oss-acorn.io => web:80      [dependencies: waiting for ready [create-job]] [containers: web pending update]

@thedadams can you take a look? @ibuildthecloud if you tackle this or are going to quickly, please let donnie know so we dont do double work

This issue is addressed by https://github.com/acorn-io/acorn/pull/1664

Tested with acorn version - v0.7.0-alpha1-122-g6398d73c+6398d73c

Deployed app using Acornfile:

containers: web: {
	image: "nginx"
	ports: publish: "80/http"
	files: {
		"/usr/share/nginx/html/index.html": "
My First Acorn!!
"
	}
        dependsOn: ["create-job"]
}

jobs: "create-job": {
	image: "busybox"
	command: ["sleep", "10s"]
	events: ["create","update"]
}

When app gets deployed , we see create-job being launched first. Only after this job completes successfully (10s in my case) , we see the "web" container being launched which is as expected.

stop app
start app.

App is able to start successfully.
But I see both  create-job  and "web" container  being launched at the same time.
acorn container mytest2
NAME                           APP       IMAGE     STATE     RESTARTCOUNT   CREATED   MESSAGE
mytest2.create-job-n558d       mytest2   busybox   running   0              3s ago
mytest2.web-5bd85fd795-5wxcs   mytest2   nginx     running   0              3s ago

Since we have the dependsOn clause , we expect create-job to be completed before "web" container is launched (similar to deploying apps)

Thanks for reporting this. I misunderstood what was happening here because the name of the job is create-job. Sorry about that.
However, I understand the problem here and am working on a fix.

acorn version v0.7.0-alpha1-135-g881d39e0+881d39e0
When app is stopped and started , container start waits for the update job to complete after which it is able to start successfully.


Tabs selected index will desync when adding/removing tabs dynamically

Tabs/contents are never removed from the Tabs context and DOM order is not considered when determining the index, so if a tab is removed and added back in, it will have a higher/different index than before.
E.g.
<Tabs bind:selected={selectedTabIndex}>
  {#if showTab1}
	  <Tab label="Tab 1"/>
  {/if}
  <Tab label="Tab 2"/>
  <Tab label="Tab 3"/>
  <div slot="content">
	  {#if showTab1}
		  <TabContent>
			  Tab 1 Content
		  </TabContent>
	  {/if}
	  <TabContent>
		  Tab 2 Content
	  </TabContent>
	  <TabContent>
		  Tab 3 Content
	  </TabContent>
  </div>
</Tabs>

REPL
After toggling the boolean showTab1 off and on the index of the first tab will have gone from 0 to 3.
This could cause issues when trying to select a specific tab or trying to identify which tab is selected.
A possible fix might be to:

Remove tabs/contents again via onDestroy.
Recalculate indices based on DOM (there already is some logic to focus() the active tab via a relative DOM query).
When a tab is added also recalculate indices (a tab inserted at the first position then should get index 0).

(A different selection method based on explicit keys/IDs would also be helpful. Though this would not prevent the potential confusion caused by this issue.)

Previous issues: #368, #1493
The workaround is to wrap dynamic Tabs in a #key block (#438, https://github.com/carbon-design-system/carbon-components-svelte/discussions/1494#discussioncomment-3717572).
The "Svelte way" would be to avoid composition/context and use consumer-provided keys to track the tabs (#435).

@metonym
Using #key is not ideal if the tabs contain a lot/complex content.

Performance issues
Could cause network requests to re-trigger if nested components are async
All state that is not bound to data in the current/global scope will be lost
Potential layout shifts (only if things like transitions and asynchronous logic is used, otherwise the DOM seems to be replaced in a single event loop before layout)

A solution using keys should not be too complicated, it could also use slot props like the DataTable.
Are there any plans to revive the keyed approach?


added AVSEEK_FLAG_BACKWARD flag to av_seek_frame, also see issue #151

Some files have an initial timestamp of 0 or -1, which means av_seek_frame will seek to the second timestamp instead of the first when just starting a file. This is especially noticeable for a file like http://xahlee.info/js/i/s/test.oga.
Adding the AVSEEK_FLAG_BACKWARD flag to av_seek_frame results in better behavior for this case.

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


logging: fix span usage

Fixes some duplication due to extra or misconfigured #[instrument], while filling in the timeline_id to delete timeline flow calls.

Log examples from prod:
2024-01-30T22:46:44.252898Z  WARN request{method=DELETE path=/v1/tenant/X/timeline/Y request_id=444115e19f79d5dea2a4062c21331fdf}
  :timeline_delete{tenant_id=X shard=0000 timeline_id=Y}
    :run{timeline_id=X inplace=false tenant_id=X shard_id=0000}: still waiting, taking longer than expected... gate="Timeline<X/Y>" elapsed_ms=122712

And
2024-01-30T22:48:57.366495Z  INFO layer flush task{tenant_id=X shard_id=0000 timeline_id=Y}
  :flush_frozen_layer{tenant_id=X shard_id=0000 timeline_id=Y layer=OMITTED}: scheduled layer file upload OMITTED gen=0000000a shard=0000

Coverage failure...


UnicodeDecodeError: 'gbk' codec can't decode byte 0x9a in position 8359: illegal multibyte sequence

when  pip install  textgrad，get error：
`line 319, in run_setup
exec(code, locals())
File "", line 7, in
UnicodeDecodeError: 'gbk' codec can't decode byte 0x9a in position 8359: illegal multibyte sequence
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.
`

我也遇到了

This might be due to the encoding of the files and your locale on the laptop. Can you check this and see if this solves the problem?
We might need to update the package to force utf8 encoding on file opening.

The issues is due to opening README file with default codec (gbk) by setup.py. The error can be suppressed by setting environment variable PYTHONUTF8=1 to use utf8 as default codec:
powershell:
$env:PYTHONUTF8=1

linux:
export PYTHONUTF8=1

before running pip install

The issues is due to opening README file with default codec (gbk) by setup.py. The error can be suppressed by setting environment variable PYTHONUTF8=1 to use utf8 as default codec:
powershell:
$env:PYTHONUTF8=1

linux:
export PYTHONUTF8=1

before running pip install

work，thks


Lseg feature extraction

Hi, do you have plans to open-source the code for Lseg feature extraction? I'm curious about how you determine the crop_size. Additionally, I would like to know if the final extracted feature map is smaller than [240, 320], and if so, is it directly interpolated to [240, 320]?

Yes, really sorry, I will work on the code release for this part ASAP.

Hi @Wang-pengfei, I am really sorry for not being able to do the code refactorization and cleaning earlier... Sorry for such a long delay...
Please check the repo https://github.com/pengsongyou/lseg_feature_extraction. Let me know if it works for you. I will close the issue for now.
Best
Songyou


cannot read property style of null

`<--- Last few GCs --->
[11060:000002953280E230]    38599 ms: Mark-sweep (reduce) 2041.2 (2050.9) -> 2040.7 (2052.6) MB, 1751.5 / 0.0 ms  (average mu = 0.123, current mu = 0.003) allocation failure scavenge might not succeed
[11060:000002953280E230]    40332 ms: Mark-sweep (reduce) 2041.8 (2054.6) -> 2041.4 (2055.1) MB, 1728.5 / 0.0 ms  (average mu = 0.067, current mu = 0.003) allocation failure scavenge might not succeed
<--- JS stacktrace --->
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 00007FF655CC046F napi_wrap+109311
2: 00007FF655C65156 v8::internal::OrderedHashTablev8::internal::OrderedHashMap,2::NumberOfElementsOffset+33302
3: 00007FF655C65F26 node::OnFatalError+294
4: 00007FF656532B4E v8::Isolate::ReportExternalAllocationLimitReached+94
5: 00007FF65651792D v8::SharedArrayBuffer::Externalize+781
6: 00007FF6563C1CCC v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1516
7: 00007FF6563CD04A v8::internal::Heap::ProtectUnprotectedMemoryChunks+1258
8: 00007FF6563CA1F9 v8::internal::Heap::PageFlagsAreConsistent+2457
9: 00007FF6563BEDE1 v8::internal::Heap::CollectGarbage+2033
10: 00007FF6563BD005 v8::internal::Heap::AllocateExternalBackingStore+1317
11: 00007FF6563DD2A7 v8::internal::Factory::NewFillerObject+183
12: 00007FF65610CC31 v8::internal::interpreter::JumpTableTargetOffsets::iterator::operator=+1409
13: 00007FF6565BB50D v8::internal::SetupIsolateDelegate::SetupHeap+463949
14: 00007FF6565BC3BD v8::internal::SetupIsolateDelegate::SetupHeap+467709
15: 00007FF65660B939 v8::internal::SetupIsolateDelegate::SetupHeap+792697
16: 00007FF6565AC302 v8::internal::SetupIsolateDelegate::SetupHeap+401986
17: 0000017D3033181C
(node:6432) UnhandledPromiseRejectionWarning: Error: Script failed to execute, this normally means an error was thrown. Check the renderer console for the error.
at WebFrame.e.startsWith.e.startsWith.WebFrame. [as _executeJavaScript] (electron/js2c/renderer_init.js:87:1545)
at electron/js2c/renderer_init.js:115:431
at electron/js2c/renderer_init.js:99:361
at EventEmitter. (electron/js2c/renderer_init.js:103:872)
at EventEmitter.emit (events.js:310:20)
at Object.onMessage (electron/js2c/renderer_init.js:91:818)
(node:6432) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:6432) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
[6432:0408/104410.334:ERROR:CONSOLE(1)] "Uncaught TypeError: Cannot read property 'instance' of undefined", source: devtools://devtools/bundled/devtools_app.html?remoteBase=https://chrome-devtools-frontend.appspot.com/serve_file/@6fd22580490b38d807360c16e10721d57779a6f0/&can_dock=true&toolbarColor=rgba(223,223,223,1)&textColor=rgba(0,0,0,1)&experiments=true (1)
when I runnpm start`
sometimes it runs, sometimes it shows the error
is that because of not enough memory ?  and how can I increase max memory ?

You may have a promise that isn't handling potential errors with catch(), what steps do you take that lead to this error?

I notice you're using NPM, but the yarn.lock file is checked, are you removing the yarn.lock file before running npm install?
Might remove the lock file and add to .gitignore to make the project more packager-agnostic.

I think this may be related to an issue with the way things were setup in main.js. I've made some updates to the project which should resolve this. Feel free to re-open or create a new ticket if you continue to run into the problem.

@iPzard

Make sure your script is in a document ready handler - if you're trying to do things with the DOM before it's fully loaded, the DOM elements might not be available when you try to select them. –

// Set opacity for title on window blur & focus
const setTitleOpacity = (value) => `
  document.getElementById('electron-window-title-text').style.opacity = ${value};
  document.getElementById('electron-window-title-buttons').style.opacity = ${value};

@fetahokey this is a good catch, thanks! That's probably where the style error was coming from. I've updated the code to look like the following and pushed it to the repo just now.
const setTitleOpacity = (value) =>
if(document.readyState === 'complete') {
document.getElementById('electron-window-title-text').style.opacity = ${value};
document.getElementById('electron-window-title-buttons').style.opacity = ${value};
}
;


What are the Lua dependencies?

Hi there!
I tried compiling but got
...
CC      build/nqsw/sys_dosa.o
LINK    tyr-quake
build/nqsw/lens.o: In function L_InitLua': lens.c:(.text+0x9a0): undefined reference to luaopen_jit'
collect2: ld returned 1 exit status
make: *** [tyr-quake] Error 1
I am on Archlinux. lua 5.1.4-6  is installed. I did install luajit 1.1.7-1 but it did not help.

removed luajit as a dependency, just requires lua


Z-Push doesn't sync anymore my mails

Hey,
since one month is z-push not syncing my mails anymore. I did not change anything.
These are the log entries which i see for the z-push container when i did a sync try from my iphone outlook application:
09/08/2023 19:20:10 [   58] [ INFO] [dmack] Options request 09/08/2023 19:20:10 [   58] [ INFO] [dmack] cmd='Options' memory='1.75 MiB/2.00 MiB' time='0.02s' devType='Outlook' devId='8e6a58f7305646138221241359bd7595' getUser='dmack' from='<IP_ADDRESS>' idle='0s' version='2.6.1+0-0' method='OPTIONS' httpcode='200' <IP_ADDRESS> - - [09/Aug/2023:19:20:10 +0200] "OPTIONS /Microsoft-Server-ActiveSync?Cmd=Options&User=dmack&DeviceId=8e6a58f7305646138221241359bd7595&DeviceType=Outlook HTTP/1.1" 200 0 09/08/2023 19:20:10 [   59] [ INFO] [dmack] cmd='FolderSync' memory='2.29 MiB/4.00 MiB' time='0.04s' devType='Outlook' devId='8e6a58f7305646138221241359bd7595' getUser='dmack' from='<IP_ADDRESS>' idle='0s' version='2.6.1+0-0' method='POST' httpcode='200' <IP_ADDRESS> - - [09/Aug/2023:19:20:10 +0200] "POST /Microsoft-Server-ActiveSync?Cmd=FolderSync&User=dmack&DeviceId=8e6a58f7305646138221241359bd7595&DeviceType=Outlook HTTP/1.1" 200 63 09/08/2023 19:20:10 [   79] [WARN] [dmack] StatusException: ExportChangesICS->InitializeExporter(): Error, mapi_exportchanges_config() failed: 0xFFFFFFFF8004010F - code: 12 - file: /usr/share/z-push/backend/kopano/exporter.php:230 09/08/2023 19:20:10 [   79] [ INFO] [dmack] cmd='Sync' memory='2.05 MiB/4.00 MiB' time='0.12s' devType='Outlook' devId='8e6a58f7305646138221241359bd7595' getUser='dmack' from='<IP_ADDRESS>' idle='0s' version='2.6.1+0-0' method='POST' httpcode='200' 09/08/2023 19:20:10 [   79] [WARN] [dmack] StatusException: ExportChangesICS->InitializeExporter(): Error, mapi_exportchanges_config() failed: 0xFFFFFFFF8004010F - code: 12 - file: /usr/share/z-push/backend/kopano/exporter.php:230 <IP_ADDRESS> - - [09/Aug/2023:19:20:10 +0200] "POST /Microsoft-Server-ActiveSync?Cmd=Sync&User=dmack&DeviceId=8e6a58f7305646138221241359bd7595&DeviceType=Outlook HTTP/1.1" 200 12
Does someone have an idea what the cause could be of that issue?

I don't know a lot about z-push. I think you will get more help if you ask on Kopano/Z-Push help forums.
This repo is just a docker implementation for Kopano.


Question About Table 4

Thank you for your great work.
Regarding the experiments in Table 4, I would like to ask if there are any direct comparisons to the experimental results of LLaVA (Vicuna-1.5-7B base LLM)? I'm curious about the experimental results of SVA compared with a single vision encoder?

The results in Table 4 can be directly compared with Table 12 with single vision encoder.

Thanks


Modifiers are ignored in apps

It seems that modifiers are ignored in apps where HTTPS filtering is disabled.
Steps to reproduce

Add this rule:
*.*$media
Open any app where HTTPS filtering is disabled.

Expected behavior

Only $media requests should be blocked.
Actual behavior

In apps where HTTPS filtering is disabled all requests are blocked.
Screenshot:

Your environment

Adguard version: 3.1.9n (1.4.13cl)
Adguard filtering mode: Local VPN
Operating system and version: Android 9

core/pull-requests/1313


[WIP] Add CI pipeline

Depends on #38 and #46

AFAIK the agents set up for the NUbots organisation will automatically run these once I have set up the pipeline in buildkite

Keep the CI_BUILD flag, it's there so that all your CI flags can be done in the CMake file so if you need to test a CI build locally it's easy. CI_BUILD=On should be your only flag needed in the CI configuration step

Here's my line of thinking.
Now that we're going to enable heaps more warnings, we have a set of warnings which can't be enabled when running clang-tidy, because clang doesn't have those gcc warnings and it errors if you try to run it with them.
This means that to run clang-tidy, we can't use all the warnings.
This means we're going to have two steps in the pipeline, to get full warning coverage - one with clang-tidy and one with the full set of gcc warnings.
This means that the only thing that the CI_BUILD was going to do was enable WARNINGS_AS_ERRORS, because if it enabled clang-tidy, we don't get full warning coverage.
So basically all CI_BUILD did was set WARNINGS_AS_ERRORS. That seems overly pointless to me.
Doing a full CI_BUILD dry-run locally is going to be painful anyway, because of these extra warnings not working with clang-tidy. It's going to be two steps. If you have a suggestion which makes it one step that would be greatly appreciated - although removing the extra gcc warnings seems like a lame option, and that seems to be the requirement.
I suppose we could have a CI dry-run tool, which checks everything. that would probably be good.

I have to install the dependencies of this repo onto the buildkite agents, but once I have done that, this should be good to go

We have a successful build :tada:
Still finalising webots installation on all of the agents though, but we're very close to being all systems go :rocket:


Syntax highlighting for toml language

Prism supports it, so I believe we just need to augment prism-react-renderer with this.
https://github.com/PrismJS/prism/blob/master/components/prism-toml.js

From prism-react-renderer’s FAQ:


Rainbow Hyperparameters

Hi. The paper mentions

Rainbow (Hessel et al., 2018) is based on Q-Learning and combines several advances, including for exploration. The defaults for Atari did not work well, so we tuned the hyper parameters for Crafter and found a compromise between Atari defaults and the data-efficient version of the method (van Hasselt et al., 2019) to be ideal.

Are these hyperparameters available anywhere, and if not, can you please share these? The crafter baselines for Rainbow has the same hyperparameters as Kaixhin's Rainbow (which are designed for ALE), and there are no hyper parameter values mentioned in the paper. Thanks for your time!

Yes, those are the hyper parameters. I tried changing a handful of them but nothing I tried ended up working as well as the defaults.


Header blocks interaction with tiles

The header blocks interaction with tiles, even if those are simply at the same vertical position. I assume, the header div spans the whole screen width, even if only the left header is used.
Example: the whole pinkish area is not clickable here:

That's the relevant header configuration:
   header: { // https://github.com/resoai/TileBoard/wiki/Header-configuration
      left: [
         {
            type: HEADER_ITEMS.TIME,
            styles: {
               margin: '55px 0px 0px -10px', //trbl
               transform: 'rotate(-90deg)',
               border: '0px solid red',
            },
         }
      ]
   },

I think the options for fixing this are to either:

make it clear visually that the header area is there and not let entities be positioned there
make it invisible to clicks. That could, in theory, break someone's use cases if they have clickable things there. And it just plain looks bad when header content is drawn on top of entities.

A third option could be to let the header only take up horizontal space it actually needs?
For me, the easiest fix would probably be your second option. Is there a simple custom css that I could try?

pointer-events: none; to make clicks go through.

Thanks!
I put this in custom.css and it fixes the problem for me.
.header {
  pointer-events: none;
}

I think it might not be ideal to add that CSS. It would work in more cases but still, things could obstruct tiles.

Ok. Since it works for me, I close the issue.
Thanks for your help!


Question about ID3v2

I looked at a ID3v2 file tagged with lofty-rs in a hex editor and while I did find the values I entered for Artist, Album and Song Title. I didn't find the ID3 header, nor did I find the names of the frames. For some reason the file did show the right tags in easytag, but the track total seemed to be gone. Why is there no ID3 header, and how are the frames encoded?

If you're missing a track total you could actually be saving an ID3v1 tag. Lofty doesn't do any special encoding, it's all spec compliant.
If you're working with Tag you can see the type of tag you're working with with Tag::tag_type().

I just realized my mistake. I was using a file which already had a id3v1 tag by yt-dlp. My bad. Thank you for answering.


Age Estimation training issue

Hi
Firstly I must say I am just a beginner with not much knowledge of Machine Learning.
I was trying to train the age estimation with Asian faces by filtering the UTKFace dataset . I got the train.py to run but the issue is the loss and age_mae were all nan. It always happened on the third epoch.
I have checked the validation of the dataset and they seemed fine.
I tried some of the fixes here but still nan.
Hope some one can give me any possible directions to fix this.
Thank you very much :)

Update:
I change the sgd optimizer to adam optimizer, and remove the LearningRateScheduler in the callback. The training is going on without NaN loss now. Though I'm not really sure if this is recommended with this model.

Thank you for your information.
As I'm not sure which of SGD and Adam is better for this task, I'll also try Adam.


the extension visual studio emmet 2013 requires a version of .net framework which is not installed

the extension visual studio emmet 2013 requires a version of .net framework which is not installed
attached log file
VSIXInstaller_fc22b248-6ae7-493a-9fde-e151554d3c65.txt

I had this problem too... I edit the extension (I delete verification of .NET framework in file "extension.vsixmanifest" the file you can open in for example in 7-zip...) then it works... You should have instaled .net framework v 4.5 and then install this extension)
by me edited extension download: https://1drv.ms/u/s!Ate252B8I_QLnhZmKA9B8sZuqcZq

Hello,tomato4.I had this problem too..But I don't know how to edit the file.The link you post can't use now.Can you post a new link? Thank you very much.

Hello,MYounas.Have you solved this problem?I can't find the way to solve this.Please teach me.Thank you very much.

My system is windows 10.So it has had the .Net Framework 4.5.

I don't remember it but maybe I will remember... Give me a while...

So

download the extension: https://goo.gl/QZmCiX
open it with for example 7zip.
open extension.vsixmanifest in text editor
delete this line <Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" Version="4.5" />
now save - 7zip automatically ask you if you want update the file - so yes
Now you have extension without NetF. control. I recommend you to do this only if you know, that you have .Net Framework (and extension don't see him)

It takes effect！Thank you very much!