[tracking issue] Client libraries in different languages

This issue tracks various implementations of tracing clients in different languages, either already available or under development.

[x] Java https://github.com/uber/jaeger-client-java
[x] Go https://github.com/uber/jaeger-client-go
[x] Python https://github.com/uber/jaeger-client-python
[x] Node.js https://github.com/uber/jaeger-client-node
[x] C/C++ (https://github.com/jaegertracing/cpp-client)
[x] C# / dotNET (https://github.com/jaegertracing/jaeger-client-csharp)
[ ] Javascript (in browser) (https://github.com/jaegertracing/jaeger-client-javascript/issues/1 - help wanted)
[ ] Java on Android (#577 - help wanted)
[ ] iOS client (#576 - help wanted)
[ ] Ruby / Rails (#268 - help wanted)
[ ] PHP (#211 - help wanted)
[ ] Lua (#898 - help wanted)

As a guideline, the following is a rough outline for getting a new client out:

setup new project, travis build, code coverage, release publishing, etc.
implement basic tracer & span functionality with a simple 100% sampling & a configuration mechanism
implement remote reporter with abstract sender
implement UDP or HTTP sender or both
implement crossdock integration tests
implement other samplers (probabilistic, rate limiting)
implement remote sampler that pulls sampling strategy from the agent
implement adaptive sampler
optionally other features like baggage whitelisting

Steps 1-4 are needed to get a minimal viable client. Steps 5-9 could be added later.

Hi, trying to add a C# client porting from the Java client but still very early; I just started today.
Any feedback would be helpful

I note that neither Rust nor lua are on your list? Any plans to add them? (We are using openresty which leads to the Lua interest, and Rust - well Rust is cool :))

If someone implements then then we'd be glad to include in the official list. So far I haven't seen anyone asking/trying, so no plans.
Also, we're working on a c++ client, I wonder if some of the languages can be done as wrappers on top of that.

I'd very much encourage writing such a low level client in a more modern systems language like Rust : more cleanly bindable to C (no need to explicitly opt out of the rtti support or pull in the C++ support libraries), and very very safe.
We have some components that are nginx+openresty, so we have interest in Lua (language) support + openresty bindings : I am thinking we'll just implement the whole store in Lua rather than have to surface span data from a C++ module back up through nginx's C core and then in to Lua.

Anything yet for Javascript in browser ?

Nobody is working on it right now (https://github.com/jaegertracing/jaeger-client-javascript/issues/1 - help wanted)

@rbtcollins I wonder what the performance will look like compared to just wrapping the C++ client in a luarocks package and using that.
@yurishkuro I have also been wondering what it would take to wrap all the client languages around the C++ client. Here is the plan as of now:
Java: JNI (no one likes it though, so IDK)
Go: cgo
Python: C module
Node.js: C++ add-on
JavaScript: Emscripten
Ruby: C++ extension
PHP: C module
Lua: C++ bindings
The easiest, by far, is Lua (I have some experience here). The others might be harder. On the flip-side, I wonder how easy it is to do this very same thing with the Go client once it is compiled. Any thoughts and/or experience here would be greatly appreciated.

Yes, we discussed the possibility, but until we actually try with some languages it's hard to see all pros & cons (and there are a lot of cons to wrapping).

@isaachier I have zero interest in debugging interactions between C++ RTTI and exceptions, and any host language. We need anything that is going to be surfaced in such a way to be rock solid and have no corner cases that will make it a liability rather than an asset.
rustlang or C would make good 'lowest common denominator' languages, if having a bridge mechanism to a single set of implementation backends is desirable - they can both be bound to with no runtime support, without having to disable language features (unlike e.g. C++ where the default requires runtime support).
That said, I fully expect every non-trivial language to demand, and get, 100% native bindings. There's nothing in Opentracing/Jaeger/Thrift that would make native support hard/infeasible.
On the list of languages you've got, I can specifically say:

that we could tolerate JNI, but would very much prefer to avoid it because of the overheads involved in something in our core request path.
Python - C modules make deployment harder, so would stay with the current implementation.
Javascript - emscripten is awesome and clever and huge. Not even going to consider it. We'd probably use the zipkin endpoint so that we can have a super minimal implementation with no Thrift involved at all.
Lua in the context of openresty: Would very much prefer not to have to install additional modules into nginx over what the stock docker images contain, so yeah - again, native is super appealing.

@rbtcollins interesting point about Rust vs. C++. I am actually amazed to hear that you prefer Rust to C++ in the area of language bindings. I had always heard the compiler support for Rust is much more limited than C++, and neither compare to C, which has a compiler for almost every conceivable platform. But I do understand the concern. For that reason, I think gRPC was motivated to write its core library in C++ without any STL (making it pretty much C).
Meanwhile, I think you are correct that the "best" thing would be to have a native library for each and every language. But I'm interested in hearing your opinion for the following difficulties:

Some languages just do not have good multithreading support (i.e. Python). A C module would perform much better than anything in the native language.
How do we implement changes consistently once the number of languages goes up? As of now, our Python client still uses the older Zipkin format instead of our better Jaeger format. The main reason is the cost associated with maintaining multiple client libraries.
Although C modules/packages are more difficult to deal with than their native language counterparts, almost every major package manager has a good way of dealing with this, be it pip, luarocks, or gem. How difficult is it using these tools?
Individual, language-specific libraries are by definition less tested. By uniting all of the languages with a common core library, we can guarantee the core itself is bug-free.

I am also interested in another consideration - if we take our Python client and reimplement it as a wrapper on top of C++ client, how much functionality will be removed from the pure-Python part of the combo? We still have to implement the OpenTracing API, but probably concerns like different samplers, retrieving samplers from the agent, and the whole async span reporting could be moved to C part.

Although C modules/packages are more difficult to deal with than their native language counterparts, almost every major package manager has a good way of dealing with this, be it pip, luarocks, or gem.

I tend to agree with that, not so much based on experience, but on the fact that out Python/Node clients already depend on modules like thriftrw which use C bindings and require compilation during install. But we only use Linux/MacOS, so don't know how well this would work on other platforms.

About the bindings, there is a certain amount of bridge code for each language. I think it comes down to how much you want the code to look idiomatic (i.e. avoiding calling Python functions with mysterious handle objects, manual resource management, and the like). I'd advocate not using the language itself to implement span objects etc. because of the repetition and the memory overhead. This takes some clever coding but isn't too hard.
The build shouldn't really be a concern. The only thing I worry about is the C vs. C++ debate. Worst case scenario, we could refactor some of the core C++ types to C structs. The only reason I haven't yet considered that seriously is that there is no OpenTracing C API, and if that API is released down the line, it would probably invalidate any Jaeger-specific code I write now.

I'd advocate not using the language itself to implement span objects etc. because of the repetition and the memory overhead. This takes some clever coding but isn't too hard.

I don't see how you'd do that since the end user is still going to interact with object-oriented OpenTracing API. Unless you're saying that you can create C-bound objects that look like normal host language objects to the end user.

@isaachier by compiler support for rust, I'm not sure what you're referring to. Rust was built to integrate with Firefox's core - thats a primary use case for it (and it has delivered many of the major perf improvements in recent firefox :)).
What memory overhead are you worried about with native implementations? Remember that when you have bindings you end up with separate arenas for the external objects, which can spread memory footprint out somewhat.

I mean embedded systems. I know there is interest in tracing for IoT devices. Rust may not target these devices as well as C++. Memory isn't the main consideration here. More of a bonus.

It should be pretty good. It's main requirement for a platform is llvm. E.g
https://dylanmckay.io/blog/rust/avr/llvm/2017/02/09/safer-microcontrollers-almost-here.html

OK did some research and cannot find much evidence that C is inherently better for bindings than C++ with and C wrapper API (i.e. extern "C"). Please let me know if you have a good source I can read on this issue.

Hi @yurishkuro , would you like to accept the lvht/jaeger-php as the official PHP client of Jaeger?

@lvht let's discuss on #211

Have not tried this, but here is a Rust Jaeger client built on top of another Rust opentracing API: rustracing_jaeger

BTW @rbtcollins Rust just announced they will be working on better embedded support this year. https://internals.rust-lang.org/t/announcing-the-embedded-devices-working-group/6839

is there any Lua client or any other way to use jaeger in Lua language?

@ldeveloperl1985 that largely depends on whether or not OpenTracing decides to support Lua. Also, the issue of many different dialects makes the situation much more difficult. Which version of Lua do you use? Is it original Lua or LuaJIT.

I've used kong 0.11v. which uses Lua 5.1 and LuaJIT 2.1.0

Kong is probably the primary use case. I am not familiar with that version, but does it support 64 bit integers? My problem is maintaining compatibility across several versions of Lua.

You can easily maintain compatibility across several versions of LUA. Lua is a dynamically typed language. There are no type definitions in the language; each value carries its own type.

@ldeveloperl1985 @isaachier let's move Lua discussion to #898

I suggest to add Elixir to the list :)

@jalberto I'm really hoping to move away from more client maintenance. We can probably use C to glue together an Elixir/Erlang client.

@isaachier so maybe every client (backend) should be a wrapper to C client to have features parity. If some clientes are native, adn others are just wrappers, there is a risk to split features set.

There is already significant feature split among the clients. And if I thought anyone would want to use C other than myself, I'd agree with you about using the same C library for all clients. However, some languages make this approach easier than others. For example, I have heard Java's JIT makes calling a native function significantly slower than calling the equivalent Java code.

well, using a wrapper/binding to a different lang will always create an impact, in particular in this kind of libs that need to be called very often.
In other hand to use a C-binding-wrapper may cause some headache dependencies-side or deployment-side even with docker (imagemagick in ruby or perl is a good example). Also docker images using alpine or any version of non-glibc can be tricky at least.
IMHO as there is not perfect solution I suggest to avoid hybrid solutions (that will increase troubles surface), I suggest to go one side or the other:

use a C lib/sys-cmd+wrapper for every backend client
or create a client per language
or support opentracing clients

To have some langs with native clients and other with a wrapper can icnrease th eamount of work instead of reducing it, also it may:

1st class vs 2nd class clients (updates, new features, etc)
features disparity
outdated clients
etc

I'll agree that the C based clients are going to be second class, mostly because they aren't languages we ever use. The notable exception here is C# where an external contributor volunteered to maintain it. Among the Jaeger developers at Uber, I don't believe C# is our top priority.
Regarding packaging, people complain about it, but whether you like it or not many libraries rely on C bindings because it just isn't worth reinventing the wheel every time. As long as some care is taken in the approach to wrapping it, I think it's a viable solution.
Finally, I'm not sure what you mean by "support opentracing clients." Interestingly, @rnburn of OpenTracing C++ just created a Lua tracer that is implemented from an underlying C++ tracer and exposed through bindings.
Just know, if there are tiers of clients, Go is clearly the focus and everything else is secondary.

Another major benefit of using wrappers around a C-lib is that those wrappers only need to be implemented once in the OpenTracing community.

by supporting OT clients I mean, to "ditch" jaeger client in favour of OT client and join the effort there

@jalberto Jaeger is an implementation of the OT specification. There is no concrete OT client that I know of in open source other than Jaeger. OT is just an interface, not an implementation.

My mistake, I thought the clients here: http://opentracing.io/ has a different code base.
In that case: https://github.com/derailed/ex_ray

Feel free to use another client. If you know of others interested in supporting this client please let us know.

Looks like there is a client for Rust now: https://github.com/sile/rustracing_jaeger

Hey everyone
What's the best library to use with Jaeger for PHP?

Per #3362, we're sunsetting Jaeger clients.


[9.x] Patch nested array validation rule regression bug

Closes #43779
Closes #43751
Related #43192
Related #40924

Important: Please look at the first PR above for full context.

This PR resolves a regression bug that I introduced in 9.x in the Rule::forEach() validation feature, where nested array validation rules can no longer be used, due to flattening them via an Arr::flatten($rules).
For example, this can no longer be done, whereas it used to work in prior versions of Laravel:
$data = [
    'items' => [
        ['|name' => 'foo'],
    ]
];

$rules = [
    'items.*' => ['array', ['required_array_keys', '|name']] // <-- Nested array rule with an argument.
];

// BadMethodCallException: Method Illuminate\Validation\Validator::validateName does not exist
Validator::make($data, $rules)->passes();

Arr::flatten() was used to be able to determine if a ruleset contains a NestedRules instance, and allowed validation rules to be infinitely nested, as they would be flattened before being parsed:
https://github.com/laravel/framework/blob/2a1a55caf3c65a74f173f47be594587cb931f22c/src/Illuminate/Validation/ValidationRuleParser.php#L154-L155
This PR will break the below (however unlikely) implementation for developers -- but will resolve the regression bug, while keeping the Rule::forEach feature:
$rules = [
    'users.*.name' => [
        Rule::forEach(function ($value, $attribute, $data) {
            // ...
        }),
        Rule::forEach(function ($value, $attribute, $data) {
            // ...
        }),
    ],
];

Developers will have instead have to use a single Rule::forEach() (non-nested), as this will no longer be supported:
$rules = [
    'users.*.name' => Rule::forEach(function ($value, $attribute, $data) {
        // ...
    }),
];

I've added test to ensure we have some coverage over the nested array rule feature so regression will not occur again in the future.
Thanks so much for your time, and I apologize for this issue that has caused grief for devs upgrading to 9.x ❤

Awesome Steve. Thanks so much for adding the additional tests as well! 😀

Hi @stevebauman.
I've updated to 9.27 version and getting error for this rule.
My rule:
$promotionItemIdRule = Rule::forEach(function (mixed $value, string $attribute, array $data) use (
    $conditionItemIds,
) {
    $type = Arr::get($data, Str::replaceLast('.item_id', '.item_type', $attribute));

    return [Rule::in($conditionItemIds->get($type, []))];
});

// and using

'conditions.*.items.*.item_id' => ['required', 'integer', $promotionItemIdRule],
'conditions.*.items.*.item_type' => ['required', 'string', Rule::in(PromotionItemType::all())],

Method Illuminate\Validation\Validator::validateIn: does not exist. {"userId":93,"exception":"[object] (BadMethodCallException(code: 0): Method Illuminate\\Validation\\Validator::validateIn: does not exist. at /var/www/html/vendor/laravel/framework/src/Illuminate/Validation/Validator.php:1534)
[stacktrace]
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Validation/Validator.php(609): Illuminate\\Validation\\Validator->__call()
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Validation/Validator.php(415): Illuminate\\Validation\\Validator->validateAttribute()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Validation/Validator.php(446): Illuminate\\Validation\\Validator->passes()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Validation/ValidatesWhenResolvedTrait.php(25): Illuminate\\Validation\\Validator->fails()
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Providers/FormRequestServiceProvider.php(30): Illuminate\\Foundation\\Http\\FormRequest->validateResolved()
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(1263): Illuminate\\Foundation\\Providers\\FormRequestServiceProvider->Illuminate\\Foundation\\Providers\\{closure}()
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(1228): Illuminate\\Container\\Container->fireCallbackArray()
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(1213): Illuminate\\Container\\Container->fireAfterResolvingCallbacks()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(776): Illuminate\\Container\\Container->fireResolvingCallbacks()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(857): Illuminate\\Container\\Container->resolve()
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(692): Illuminate\\Foundation\\Application->resolve()
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(842): Illuminate\\Container\\Container->make()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteDependencyResolverTrait.php(80): Illuminate\\Foundation\\Application->make()
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteDependencyResolverTrait.php(49): Illuminate\\Routing\\ControllerDispatcher->transformDependency()
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteDependencyResolverTrait.php(29): Illuminate\\Routing\\ControllerDispatcher->resolveMethodDependencies()
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(41): Illuminate\\Routing\\ControllerDispatcher->resolveClassMethodDependencies()
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(261): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(204): Illuminate\\Routing\\Route->runController()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(725): Illuminate\\Routing\\Route->run()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#20 /var/www/html/app/Http/Middleware/VerifyUserHasTeam.php(33): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\VerifyUserHasTeam->handle()
#22 /var/www/html/app/Http/Middleware/AuthorizeMiddleware.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\AuthorizeMiddleware->handle()
#24 /var/www/html/app/Http/Middleware/LogLastUserActivity.php(25): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\LogLastUserActivity->handle()
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequestsWithRedis.php(65): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(102): Illuminate\\Routing\\Middleware\\ThrottleRequestsWithRedis->handleRequest()
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(54): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequestUsingNamedLimiter()
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle()
#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(44): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Auth\\Middleware\\Authenticate->handle()
#34 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(726): Illuminate\\Pipeline\\Pipeline->then()
#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(703): Illuminate\\Routing\\Router->runRouteWithinStack()
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(667): Illuminate\\Routing\\Router->runRoute()
#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(656): Illuminate\\Routing\\Router->dispatchToRoute()
#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch()
#40 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#41 /var/www/html/app/Http/Middleware/SetLocale.php(36): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#42 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\SetLocale->handle()
#43 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#44 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#45 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#46 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#48 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#50 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#51 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#52 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#53 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#54 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#55 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(62): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#56 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\HandleCors->handle()
#57 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#58 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then()
#59 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#60 /var/www/html/public/index.php(52): Illuminate\\Foundation\\Http\\Kernel->handle()
#61 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/resources/server.php(16): require_once('...')
#62 {main}
"}

$attribute does't contain full path for the current item.

Hi @siarheipashkevich -- as shown in the above, you can no longer nest one or many Rule::forEach() inside of a validation rule array:
$rules = [
    'conditions.*.items.*.item_id' => ['required', 'integer', Rule::forEach()], // <-- Will not work.
];

You must refactor the validation rule like so by returning all your validation rules inside of the Rule::forEach() callback:
$promotionItemIdRule = Rule::forEach(function (mixed $value, string $attribute, array $data) use (
    $conditionItemIds,
) {
    $type = Arr::get($data, Str::replaceLast('.item_id', '.item_type', $attribute));

    return ['required', integer', Rule::in($conditionItemIds->get($type, []))];
});

// ...

$rules = [
    'conditions.*.items.*.item_id' => $promotionItemIdRule,
];

@stevebauman thank you so much.

Happy to help @siarheipashkevich. Also you may be able to use something like this to clean it up a bit (correct me if I'm wrong):
$rules = [
    'conditions.*.items' => ['required', 'array'],
    'conditions.*.items.*.item_id' => ['required', 'array'],
    'conditions.*.items.*.item_type' => ['required', 'array'],
    'conditions.*.items.*' => Rule::forEach(function ($value) use ($conditionItemIds) {
        return [
            'item_id' => Rule::in($conditionItemIds->get($value['item_type'], [])),
            'item_type' => Rule::in(PromotionItemType::all()),
        ];
    }),
];

@stevebauman in your example the rules will be combined?

@siarheipashkevich I'm not sure what you mean, can you elaborate?

@stevebauman in your example we will have the next rules:
conditions.*.items.*.item_id => ['required', 'integer', Rule::in(...)],
'conditions.*.items.*.item_type' => ['required', 'string', Rule::in(...)],

because Rule::forEach will add additional rules for already declared rules with the same keys, is it?

@siarheipashkevich The rules will not be merged. They will be evaluated individually.


Add demand due to current image issue

Overview
Fixes a build issue with the MRTK2 internal CI.

/azp run


Update release process

Closing this PR since releases under the new process would generate an inconsistent changelog, with releases with no commits and misplacing of commits among the other releases.


Where can I find more information for debugging hip kernels?

The only section I could find is the following:
https://github.com/ROCm-Developer-Tools/HIP/blob/cde661142552c9f81d6ddb6fdff5ec87ad4dc9e3/docs/markdown/hip_debugging.md#debugging-hip-applications
However I can't seem to be able to use gdb with the hcc compiled application I have.
warning: Error disabling address space randomization: Operation not permitted
warning: Could not trace the inferior process.
Error:
warning: ptrace: Operation not permitted
During startup program exited with code 127.

The older version of our GDB debugger for GPU kernels has been deprecated, and we are actively working on bringing up a replacement for it. Its underlying technology for communicating with the GPU will be based on the ROCr debug agent. The debug agent is already available for Vega 10 GPUs, and it can be used to print out the state of the GPU on memory faults and at manually-inserted trap instructions.

So right now the debug agent is not available on Polaris (RX580)?

Not at this time.

@jlgreathouse Has this been resolved with latest ROCm 6.1.0 (HIP 6.1)? Thanks!


Improved hotkey system

yay

Can I recommend we move completely away from pynput and move to tkinter binds?

@Moosems that is essentially what this pr is about

oh wait i gotta remove the imports

there we go

I'll test in a bit and if it works I'll sign off!

Did you find some time to test it?


Crash after league took control of my screen

League took priority on my screen when it was close to the end of champ select, which caused the GUI of this mod to go blank completely and then when I exited out of the blocks GUI it caused my MC to crash, opening the singularity now causes crashes constantly
Attacked is the error I get from GD Launcher but for some reason there's nothing in the logs

When zoom appeared on my screen, jtik (or something) error popped out and closed my game

Leage has a nasty anti cheat that probably detects imgui. ImGui it's self is not harmful, but many "hackers" make their cheat's user interfaces using imgui. I'll investigate more.


examples for finetuning on image classification tasks

provide more examples for fine-tuning on different image classification tasks

An exmaple for fine-tuning DOFA on the image classification task was added.


Update the Github Stars data

The data regarding the "GitHub stars" is outdated. Update the "GitHub stars" on the homepage
Screenshot

Just noticed that the project is using GitHub API to fetch the data. So the stars will automatically be updated.
Hence closing the issue.


Skip vote be number of people in VC

I don't know how to explain too much but here are examples.
Example:
4 people in the voice channel = 2 votes for skip
7 people in the voice channel = 4 or 3 for skip.
10 people in the voice channel = 5 for skip...
Because if someone is alone in the channel they cannot skip as they need 3 votes.

Will consider this. I'll make an optional choice, changeable in the config.

Pushed the update to add this. However, the count is not divided by 2 as suggested. If you insist on this, please reopen the issue.
Release not out yet so feel free to clone the repo instead.


Improve Envoy QUICHE logging

Commit Message:
This PR makes a few small modifications to the Envoy platform
implementation of the QUICHE logging code.
Performance: conditions are no longer computed in QUICHE_LOG_IF
unless the logging level is enabled.
Debugging: logs now contain the file, line and function of the caller.
Also, it is now possible to control the QUICHE verbosity threshold
via an environment variable. Also, QUICHE_CHECH_GT and related macros
will print out the value of the compared variables.
Signed-off-by: David Schinazi<EMAIL_ADDRESS>Additional Description: None
Risk Level: Low
Testing: Manual
Docs Changes: None
Release Notes: None
Platform Specific Features: None
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Deprecated:]
[Optional API Considerations:]

Welcome to the Envoy project, and the joys of Envoy CI!  While you passed the first hurdle of DCO, non-dictionary-words are as discouraged as enthusiastic spaces, so you'll want to check spelling and push an update.
As an aside, there's some way to make Envoy presubmits email you when they succeed or fail which I strongly encourage setting up and adding to our onboarding docs.

A side request, mind add document about ENVOY_QUICHE_VERBOSITY in source/docs/quiche_integration.md? Maybe add a debug section?

Unfortunately the std::getenv happens when the verbosity levels are first checked, and that happens before test instantiation. I could add a helper for tests but at that point it wouldn't exercise the code path we'd want to exercise. Thoughts?

Thanks @mattklein123 ! I think there's value in enabling ENVOY_QUICHE_VERBOSITY even on release builds, our internal equivalent has helped me debug QUIC issues that were only happening in release builds in the past.
I'm happy to do what you mentioned:

Use bazel to explicitly run a test setting the env var. I don't know off hand whether this would force recompilation or if you can just run the test binary with a new action_env var that wouldn't effect compilation.

but I'm not knowledgeable enough in bazel to know how to do this. Do you have another example I can use as inspiration? Alternatively we can say that this debugging feature doesn't need a test given the overhead?

but I'm not knowledgeable enough in bazel to know how to do this. Do you have another example I can use as inspiration? Alternatively we can say that this debugging feature doesn't need a test given the overhead?

I'm fine with whatever you and @danzh2010 @alyssawilk decide, but if you want to try with bazel you would use --action_env to pass an env variable. The thing I don't know off the top of my head is whether setting this will recompile. If it does it's not worth it IMO. If it doesn't, up to you.


Remove conditionals in return

Summary
Remove conditionals in return
Stryker config
module.exports = function (config) {
    config.set({
        testRunner: "mocha",
        files: [
            "tmp/**/*.js"
        ],
        mutate: [
            "tmp/src/dep.js"
        ],
        transpilers: [],
        reporter: ["clear-text"],
        coverageAnalysis: "all",
        mochaOptions : {
            files : [
                "tmp/test/*.js"
            ]
        }
    });
};

Stryker environment
+--<EMAIL_ADDRESS>+--<EMAIL_ADDRESS>+-- stryker-mocha-runner: 0.11.2,

Your Environment

software
version(s)

node
9.11.1

npm
5.8.0

Operating System
win10

Problem
this code  :
isEnfant(val) {
    return val <= 18;
}

is not mutated to :
isEnfant(val) {
    return true;
}

Test mocha (i test only val=5) :
describe('TEST ', () => {
    it('test', () => {
        assert.ok(isEnfant(5));
    }));
});

I think a better way to look at this would be to change the RemoveConditionals to no longer do it for if-statements but instead do it for every conditional it finds. We would of course still have to look at parent nodes to find out if we're not causing infinite loops with for-statements for example.

Sounds great. Just for my understanding, this is something we also don't mutate right now?
const foo = bar > 3 ? 'foo' : 'bar';

Exactly. With this change we can also start doing that.


Add HTML to Markdown

Description of issue:
"Insert description of changes made in this pull request here"

[x] I have followed the contribution guidelines.
[x] I have tested this custom command with Cody.
[] I have added this command to the README.md file with other commands.

This is cool. It would be helpful for dev advocates people and technical writers. Thanks for adding this to the list.


[WIP] feat: add otel tp to jtracer pkg

Which problem is this PR solving?

Part of #3381
This PR adds OTEL Provider to jtracer pkg

Short description of the changes

Upgrades jaeger tracing to support otel tracer

There are two (integration) test failure errors:

Got an empty result from a trace query instead of a single trace.

=== RUN   TestAllInOne/getAPITrace
  all_in_one_test.go:105:
      	Error Trace:	/home/runner/work/jaeger/jaeger/cmd/all-in-one/all_in_one_test.go:105
      	Error:      	"[]" should have 1 item(s), but has 0
      	Test:       	TestAllInOne/getAPITrace

Got a service name "otlp" instead of "jaeger-query" from the trace query.

=== RUN   TestAllInOne/getServicesAPIV3
    all_in_one_test.go:160:
        	Error Trace:	/home/runner/work/jaeger/jaeger/cmd/all-in-one/all_in_one_test.go:160
        	Error:      	Not equal:
        	            	expected: []string{"jaeger-query"}
        	            	actual  : []string{"otlp"}

        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -1,3 +1,3 @@
        	            	 ([]string) (len=1) {
        	            	- (string) (len=12) "jaeger-query"
        	            	+ (string) (len=4) "otlp"
        	            	 }
        	Test:       	TestAllInOne/getServicesAPIV3

I'll explain each one in turn.
1. Got an empty result from a trace query instead of a single trace.
There are two important invocations in the integration test:

Create the trace: more importantly, the trace is created with the jaeger-debug-id=debug.

This is little known feature of jaeger-client-go that supports the jaeger-debug-id header to allow easier identification of a specific set of traces for debugging purposes. It's achieved by inserting the jaeger-debug-id tag key into the span that's emitted to the collector (or agent) such that you can then search for the span with the tag filter jaeger-debug-id=debug for example.

Get the trace created above: a request to the jaeger-query HTTP API is made with the tag filter request parameter of tag=jaeger-debug-id:debug (ref).

This leads to an empty result. Why? It's because we've switched to using JTracer instead of jaeger-client-go's tracer in this PR for jaeger all-in-one.
Why does using JTracer lead to an empty query result when filtering on tag=jaeger-debug-id:debug? It's because the OTEL SDK does not appear to support this functionality, as @yurishkuro calls out in this opentelemetry-specification issue:

In addition, the debug flag can be set by the user even before the trace is created, by including a special header jaeger-debug-id: anything. When Jaeger sees this header in the incoming request, it's equivalent to setting sampling.priority=1 and jaeger-debug-id=$value tags on the span. Storing the header value as a correlation ID allows finding the trace later. E.g. I can send a curl request with jaeger-debug-id: yuri-test-1.

Since the jaeger-debug-id:debug tag is not inserted into the span by jaeger all-in-one during the integration test, that span cannot be found with the tag=jaeger-debug-id:debug filter resulting in a failed test.

We could, as a workaround, omit the tag=jaeger-debug-id:debug filter from the API request but I think it will weaken the test expectation because the act of hitting the /api/traces endpoint results in emitting a span, and so may be unclear where the query result's span came from. Maybe other folks can think of a better workaround?
2. Got a service name "otlp" instead of "jaeger-query" from the trace query.
Caused by the following config when creating the tracer provider:
semconv.ServiceNameKey.String("otlp")

It seems the resource attributes (that contain the service name) need to be determined when the tracer provider is created, so we may need to pass in the service name into New. This implies a tracer provider per service.
I think this has since been "fixed" in a2eb44a, but the name just needs updating from query-service to jaeger-query.

the trace is created with the jaeger-debug-id=debug

I suspect this is done in all-in-one in order to have something to search by later on. I don't know of an equivalent with OTEL SDK, i.e. something that the caller provides and that ends up in the trace. With Jaeger SDK, jaeger-debug-id was one option, but also any other baggage would also work because iirc the SDK would store that baggage as span tags (although I may be wrong, it may only happen when SetBaggage API is called by the app).
Going back to the main objective - the integration test needs some identifier to retrieve the trace. The most ideal solution would be for OTEL SDK to return trace/span ID in the response. There is already a W3C spec for that. The header format is identical to traceparent for a given span when sent to a downstream service, meaning we could use the existing W3C Propagator and just write a small middleware to inject it into response headers. Then the integration test can parse the header (also using W3C Trace Context Propagator) and use trace-id for querying the backend.

I added the traceresponse bit to HotROD, we can copy it for the main repo: #4584

integration tests now pass!

Variable declared by const doesn't allow to change it further.
On Tue 18 Jul, 2023, 7:17 AM Yuri Shkuro @.*** wrote:

@.**** commented on this pull request.
In cmd/all-in-one/all_in_one_test.go
https://github.com/jaegertracing/jaeger/pull/4574#discussion_r1266084067
:

getSamplingStrategyURL = agentURL + "/sampling?service=whatever"

getServicesAPIV3URL = queryURL + "/api/v3/services"
)
+var getTraceURL = queryURL + "/api/traces/"
why move this out of the const list?
—
Reply to this email directly, view it on GitHub
https://github.com/jaegertracing/jaeger/pull/4574#pullrequestreview-1533962891,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACYWJSHPOYLKNY22SW4BZ5TXQXTM7ANCNFSM6AAAAAA2CG25QY
.
You are receiving this because you authored the thread.Message ID:
@.***>

Yes tracerresponse obj in the header made this magic. :)
On Tue 18 Jul, 2023, 7:25 AM Yuri Shkuro @.*** wrote:

integration tests now pass!
—
Reply to this email directly, view it on GitHub
https://github.com/jaegertracing/jaeger/pull/4574#issuecomment-1639160528,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACYWJSDSVGWDCVCX3SIIFMLXQXUIDANCNFSM6AAAAAA2CG25QY
.
You are receiving this because you authored the thread.Message ID:
@.***>

Is it a good time to remove the [WIP] from the PR title?


fix: Do not ignored derived metrics

This seems to be a regression. Derived metrics are entirely ignored atm.

Thank you so much @tomquist


Token Real() Convert.ToDouble problem in other Cultures

Hi!
I found an error about the Lexer.cs.
I try to convert a py source, and my country settings are Hungarian, and the separator here is a comma, not point.
Please change this:
        private Token Real()         {         return Token(TokenType.REAL, Convert.ToDouble(sb.ToString()), State.Base)         }
To
        private Token Real()         { return Token(TokenType.REAL, Convert.ToDouble(sb.ToString(), CultureInfo.InvariantCulture), State.Base)        }
Thanks.

Sorry.
In the 1.0.0 source not included this.
But the last source does.


Fix the TICK in cirq to stim conversion when there is only one rep or flatten is True

Currently in main when we convert a cirq circuit to stim with a CircuitOperation with a single repetition (or with flatten=True) no TICK instructions are inserted since the moments are removed in the cirq.decompose_once(op) command.

Can you give an example of a current bad output in the description of the PR?

Can you give an example of a current bad output in the description of the PR?

On main, the stim circuit from the unit test would be:
H 0 0 0 0
TICK

Whereas after this PR the output circuit is
H 0
TICK
H 0
TICK
H 0
TICK
H 0
TICK

@Strilanc I think this should be ready to go!  (although some of the CI are failing, but I don't think this is related to my change?).  Please take another look when you get a chance!

It was failing because you were using cirq.q which doesn't exist in the cirq version the tests install, to ensure backwards compatibility.


N50: opencombat

Part of https://github.com/rust-gamedev/rust-gamedev.github.io/pull/1473

Looks great, thanks for your contribution! :)

Little correction: Part of #1474


cilium-cli: Ignore "No egress gateway found" drops

Those drops currently need to be ignored in all tests involving the egress gateway, so we might as well ignore them by default in the connectivity tests.

/test


Fix Add(ICollection, byte*) adding empty strings

Summary of the PR
Fixes Add(ICollection, byte*) adding empty strings

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

Done. Forgot that I had to sign it with my old account too becasue GitKraken did a oops and used my old email for commiting it


CAMEL-15260 - Adds tracing strategy to enable spans for each processor

This is a considerable refactor and change in how OpenTracing works with Camel.
First, to address CAMEL-15260 I added an InterceptStrategy that will:

Create Spans for each processor using ids and component names. This was based on the AWS Xray component
Opens/closes a Scope around each processor.

Having opened Scopes within each processor enables two big features:

Allows any instrumentation library from opentracing-contrib to pick up the active Spans and use it to create child ones. This should work with or without java agent instrumentation.
Gives the user direct access to the active Span for any custom functionality

Second, it changes the the behavior of the OpenTracingTracer to only create one Server Span. Conceptually there should only be a single Server Span while in-process in a single service.
@mcrmfc , this is the approach I was thinking should be implemented. Would this work for your use case?

@jam01 - nice work, think this should more than meet my requirement which was simply to roll spans created outside of Camel's OpenTracingTracer - so yep will close up my PR and leave this one to the maintainers.

So I thiiink this is about ready for primetime. @oscerd  let me know if it looks good to you whenever you get the chance. No hurry :)
There is one tradeoff decision I made that may be worth putting out for discussion in case you have reservations about it. When creating new Spans for each processor, I decided to use the processor's ID as the operation's name. The alternative was the processor's label which may have more useful (?) information, but I think the critical characteristic is that ID is configurable when building the route. So it allows the user to give each processor a user friendly ID that'd show up in Jaeger or whatever tracing backend is used, instead of a label that might include expressions possibly leaking some sensitive data without being given a choice.

LGTM. It would be nice if you could add an example of usage here: https://github.com/apache/camel-examples

I mean once merged. I'll merge it today I believe.

Thanks a lot.

@jam01 I am wrapping my head around this and I would really appreciate some hints on how is an external trace coming in the form of a string header "uber-trace-id" handled?
As an example think about a camel route starting from an http endpoint an external client calling that endpoint passing an http header "uber-trace-id"=traceId:spanId:parentSpanId:flags. Would that be taken in account so that the camel produced spans are linked to the incoming traceId by the new way of handling the tracing? if yes how?
Thanks in advance!

Hey @valdar. There are few things to consider. I'll try to find a bit of time a create a quick write up... There's no automatic way to do that yet. I'm hoping to find some time to address that soon. But I'm pretty sure it's gonna require Java agent instrumentation...

Hey @jam01. I understand there is no automatic way, but what the code at https://github.com/apache/camel/blob/camel-3.4.0/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java?rgh-link-date=2020-07-23T08%3A52%3A19Z#L325 was trying to do was exactly that. If I understand it correctly it can be phrased in words as: When an exchange is started to being routed in a camel route, if that exchange contains a header named uber-trace-id use its value to construct a tracing context for the next span.
It might not cover all the cases, it might not be automatic, but from what I remember from using camel-tracing, it was working for the most commonly used components: http, jms, exposing rest to name a few.
Am I missing something obvious that prevents using the same logic?

 So that specific change was meant to accommodate a scenario where when using javaagent instrumentation you let the HTTP/JMS/etc library specific instrumentation create and decorate spans, possibly in a more deterministic manner than camel generic ones can. It seems there was no coverage for a scenario where you want camel to still give it a shot looking in the incoming headers. I missed that!
That said, we have to think about some conditionals.

Camel should only attempt to read from the incoming headers when there's not already an active span for that exchange. This is in case instrumentation already extracted the parent from the headers. Activating the span for the exchange in instrumentation is the part I'm still working on.
Only read headers for components that are not internal (seda, direct, vm, etc).
Only add the Server tag when.... the component is not internal and no span is active for the exchange. Whether we found a parent in the headers or not.

I think this should cover it... I'll add some tests and confirm. Thanks for bringing this up, sorry if this set you back some! Expect a PR soonish...


Support linking against older versions of libuv

From #94:

it seems almost certain to me that Luv will have to be changed so that it can be compiled against older system libuv.

@andyli:

support Ubuntu 16.04, which provides 1.8.0. If that sounds too old, let's aim for Ubuntu 18.04, which provides 1.18.0.

I'll probably add conditional shims on the C side of Luv. C functions not present will raise an exception if used.
Not sure about this yet, but I think it would also be good to sabotage APIs with missing implementations in the Luv interface, so that programs that won't work on a given system can't be compiled successfully (and then fail at runtime). This might require something like cppo, which I'm very hesitant to use.

Not sure about this yet, but I think it would also be good to sabotage APIs with missing implementations

I think I'll add a Luv.Version.Compile_time_check module instead (hopefully with a shorter name), so that depending projects can opt into checking the unerlying libuv and/or Luv version. I'll explain the design in the future PR, after I make sure that it works.

I added some basic docs about this to the README here.


Support for newlines inside of a field

I'm not sure if this is common among applications that use RESX, but the one I do respects newlines entered into a field.
If would be very useful to be able to use shift + enter / alt + enter to add a newline to a field and have the row scale to accomodate the additional line(s). Right now I generally have to edit the resx XML directly. In XML, the newlines are not marked by \n, they are just plain on a new line.
I realize this may be a bit of a rare use case, but wanted to ask just in case.

Fair use case for sure ... definitely right now 'enter' is completing the edit, let me play around with it.

Took a look at this one, gonna take some thinking.  HTML and contentEditable with newlines has differing results...any ideas appreciated.

Sorry, this is very much an area that I can't give much useful input on. But thanks for taking it onè


TypeError: Cannot read property 'push' of undefined

Hi
When trying to add a new (sleep) schedule I get the following error in /var/log/nodejs/ds-service.log:
2015-12-14T03:23:36.110Z - info: ::1 POST /api/devices/<uuid>/schedules 500 0.478

TypeError: Cannot read property 'push' of undefined
    at addValidSchedule (/opt/upnp-playlist-service/server/schedulemanager.js:94:29)
    at Object.exports.getItem (/opt/upnp-playlist-service/node_modules/node-persist/node-persist.js:288:9)
    at Object.addSchedule (/opt/upnp-playlist-service/server/schedulemanager.js:74:17)
    at exports.addSchedule (/opt/upnp-playlist-service/server/routes/schedule.js:32:29)
    at Layer.handle [as handle_request] (/opt/upnp-playlist-service/node_modules/express/lib/router/layer.js:82:5)
    at next (/opt/upnp-playlist-service/node_modules/express/lib/router/route.js:100:13)
    at Route.dispatch (/opt/upnp-playlist-service/node_modules/express/lib/router/route.js:81:3)
    at Layer.handle [as handle_request] (/opt/upnp-playlist-service/node_modules/express/lib/router/layer.js:82:5)
    at /opt/upnp-playlist-service/node_modules/express/lib/router/index.js:233:24
    at param (/opt/upnp-playlist-service/node_modules/express/lib/router/index.js:330:14)

Any idea?
Thanks & best regards

Can you send me your actions.json file?

On 14/12/15 13:43, Barry John Williams wrote:

Can you send me your actions.json file?

./node_modules/bower/node_modules/configstore/node_modules/js-yaml/node_modules/argparse/lib/action.js?

No. There should be one under the persist folder

There isn't any file under the persist folder. Permissions (nodejs:nodejs) seem to be correct.

Looks like there is a bug - can you create an actions.js file as follows:
cat [] > persist/actions.json
Ensure it as the correct perms nodejs:nodejs and restart the app?

Looks like a potential race condition when application starts without any existing actions.json file.

That did the trick! I'm now able to add schedule entries. Many thanks!

Glad to hear it! Thanks for reporting the bug!


how rule-based AI works

Hi BazkieBumpercar, your work is introduced in Google Research Football. Google trains a lot of AI to challenge your rule-based AI, but can not defeat your hardest AI. How do you design your rule-based AI, is there some papers or blobs?
Thanks~

Thank you for your question ziaoang!
My defensive system consists of various methods in a somewhat overly complicated combination. It was a while ago when I programmed that so I can't really explain it all too well. I think it's a combination of:

hungarian algorithm, to find the best 'fit' for the current player's positions, into the formation setup (who is most fit to be left-back right now? or keeper? etc)
man-marking system, where the most dangerous opponents are assigned to the player that have the most chance of reaching them before they have a chance to shoot
magnets/anti-magnets system so that people are attracted to the ball, keep proper distance from teammates, etc.
a lot of custom code to glue this all together

One thing I do remember is how much harder defensive systems are, as compared to offensive systems. It makes sense; an offensive mistake is not so bad, while a defensive mistake often leads to a goal.
I put a lot of time and effort into coming up with the eventual code, and I too am very happy with the result, it's pretty solid.
I haven't looked at google's code, so I can't say much about it. Maybe the difference is that I have a lot of experience with watching, playing, and thinking about football == experience, while they are programmers first, not football fans (I'm not sure about that, of course :)).
I think that a machine learning AI could potentially be better at football defense than my rule-based code. But the latter is still preferred, since it's easier to change, maintain etc (since you can control every part of it. neural networks are more 'black box-y')

Thanks, this is a wonderful work!


Turn logging off?

Current Situation
Hi.  Is there a way to turn off logging to Homebridge logs?
Logs
[06/11/2024, 19:43:01] [Flat] DHT Status: 0, Temperature: 22°C, Humidity: 56%

Configuration
.

Environment

OS:
Software:
Node:
npm:

Process Supervisor
not applicable
Additional Context
No response

Nope, no method of turning logging off


issues with lbp2 backporting

Emitters in backported lbp2 levels mostly work but alot of them emit objects with the wrong rotation. Many objects will be offset around like 15-45 degrees but the objects actual position is correct
This doesn't happen in lbp1 afaik

fyi was testing with lbp2 levels by "willtang1134"


[WIP] - NOMERGE: Artist header test

Start to set up A/B/C test to test market data on artist page: https://artsyproduct.atlassian.net/browse/EV-99
@mzikherman, @alloy - Sounds like the consensus is that this feature should be behind lab features guard. I'm trying to figure out where would be the  best way to insert this lab feature check in this setup. Seems like we could do it in View Helpers since that is the spot that actually determines what is shown on the page. I think that will give us an option to test analytics events for split test but render everything old way unless lab feature is set up. Does that make sense?
Also for now market data on the new artist header is just a placeholder. Current plan is to create reaction component similar to what @mzikherman did for Marker Insights (https://artsy.github.io/reaction/?selectedKind=Components%2FArtist%2FMarketInsights&selectedStory=Pablo Picasso&full=0&down=1&left=1&panelRight=0) and figure out how to render it in the new header. @mzikherman - reasonable?

That is how new header for artist looks for now:

Usually my workflow for AB tests is:

deploy feature/PR first under a 'gate' (can be for all admins which is opt-out, or opt-in like lab features. can also be site wide as a feature flag)
iterate/QA while under the gate (this can include any additional analytics needed such as market data/artist header click tracking, for example. This would not include any AB test experiment_viewed analytics).

Then, when we're ready to launch the AB test, there's a PR that switches any conditionals/code that was checking the gate used above, to the proper AB test check. Also we add the experiment viewed analytics call- via split_test(...).view(). IMO this last analytics call can just be double-checked on staging during that last PR -> deploy, and doesn't require any flag/special handling.
So in this PR, my first thought was that it jumped a step, since it's doing all the AB test stuff right away. I may have missed the initial discussion, so you may have already been planning on swapping that out for a lab feature, but that's definitely the approach I would take.
In terms of creating this module in Reaction and adding it in Force (similar to the one that's on artist pages)...yep, sounds good to me!

@mzikherman So if I’m summarising you correctly, the first step is to PR/merge the gate? That makes sense to me, also from a code review perspective.

@mzikherman, @alloy - I think it's getting closer to mergeable state. Let me know what you think!
So I've created the Lab Feature named Artist Market Data Summary and if one has this feature enabled the A/B/C test comes into play, otherwise at the router level force control view to be rendered. And I also commented analytics call for now. That should be uncommented when we are ready to lunch it to public as well as lab feature removal.
Do you think that will work? Is that a reasonable approach here? This way we can test both variations of the artist page.

@mzikherman - Moved the call to get MarketData earlier in page setup.
I think this might be ok to merge since there should be no changes for Artist page unless lab feature is set up.
I think we could merge and I'll work on 2 things:

refactor to consolidate MarketDataSummary and MarketInsights into one component
maybe render MarketData component on the server side for the header.

Ok, finally! all 🍏
Can I merge @alloy, @mzikherman so that we can test this on staging? Should have no effect on regular user cause all the new things are behind feature flag.

@oxaudo I took a quick look at the new commits since the last review and those look good, so let’s go for it 👍

This is on staging now.
To view different options go to the artist page with one of the following 3 options in param:
?split_test[artist_market_data_test]=control
split_test[artist_market_data_test]=market_data_no_carousel
?split_test[artist_market_data_test]=market_data_no_carousel_no_overview

I've added @briansw, @katarinabatina, @anipetrov and @wrgoldstein to the lab feature there. @alloy - could not realize what is your artsy admin e-mail(so have not added you, yet)


Restrict numeric type to have scale < precision

Addresses part of https://github.com/crate/crate/issues/16478

I don't think it is necessary. Given that the type couldn't be stored before and there was no real harm using it in casts in a wrong way.


There was an error in your GraphQL query:

I'm getting this:
Field "contentFiles" of type "[File]" must have a selection of subfields. Did you mean "contentFiles { ... }"?

from this query:
  blog {
      postBy(slug: $slug) {
        uri
        content
        contentFiles
        contentParsed
      }
    }

what is the fragment for contentFiles?

that depends on what you need from it. However I updated the documentation in the readme.md to make it clearer what is typically needed.


feat: reduce font-faces to single SbbWeb variant

BREAKING CHANGE: replaced Roman, Bold, and Light font-face variants with the single "SbbWeb" font.
Using CSS font-weight property automatically selects the correct font family.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 93.22%. Comparing base (e6397df) to head (f372cc2).
Report is 18 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2618      +/-   ##
==========================================
+ Coverage   93.18%   93.22%   +0.03%
==========================================
  Files         316      316
  Lines       25389    25324      -65
  Branches     2063     2065       +2
==========================================
- Hits        23660    23609      -51
+ Misses       1696     1682      -14
  Partials       33       33

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Update node-sass to v1.0.1

https://github.com/sass/node-sass/releases/tag/v1.0.1

For new features I updated package.json dependencies to these:
"dependencies": {
    "taskgroup": "~3.4.0",
    "node-sass": "~1.2.3",
    "node-bourbon": "~1.2.3",
    "node-neat": "~1.4.2"
  }

Although node-sass now has version 2.0.0-beta, decided to use stable version.

@karlis-upitis Would you submit an update pull request?

v2.5.0 updated to 1.2.3


maintenance

Please change the maintainer of the package to figo GmbH instead of @mdomke . And make sure the pypi account is owned by figo.
Thanks.

Has been fixed in d10f81302f326e523417d2d3c43ed96c3519711a


Articulate is SEO Friendly?

Articulate is SEO Friendly?

Yes, yes it is. If you would like more information please phrase your questions more descriptively.

Hi,
Like: canonical url, keywords and descriptions, alt tag, alternate link, image alt tag...

canonical url Yes
keywords and descriptions Yes
alt tag - for what exactly?
alternate link - this depends if you need/want them and if you have alternate links, but Yes you have full control over the markup rendered
image alt tag Yes If you use the Umbraco back office you can compose posts with the Rich Text Editor or the Markdown Editor which both allow you to insert images with alt tags/etc.. If you use LiveWriter, this allows you to specify alt text. If you use Articulate's mobile friendly post editor which uses Markdown which allows you to specify alt text

alt tag - for what exactly? sorry is an error typo..I wish to write title tag for href.

Sure - you can do anything you want. Umbraco does not restrict you by any means with regards to the HTML output. Articulate uses Umbraco, so it can do all of that stuff. If you use Markdown, Rich Text or LiveWriter then of course you can add a title tag.


Force updating 4.15 CI images

The current 4.15 OKD CI image registry.ci.openshift.org/origin/4.15:machine-os-images, which is included into the ephemeral release payloads for presubmit PR jobs, is out of sync and does not reference the requires FCOS images.
Required by https://github.com/openshift/installer/pull/7641

Since https://github.com/openshift/release/pull/45107 landed, the current PR could be merged to force pushing a new machine-os-images into the 4.15 CI origin imagestream.
cc @vrutkovs

/retest

/approve
/lgtm

/approve

/retitle NO-ISSUE: Force updating 4.15 CI images


npm ERR! notarget No matching version found for<EMAIL_ADDRESS>

/choerodon/choerodon-front$ npm install
npm WARN deprecated<EMAIL_ADDRESS><EMAIL_ADDRESS>is no longer maintained. Please, upgrade to core-js@3 or at least to actual version of core-js@2.
npm ERR! code ETARGET
npm ERR! notarget No matching version found for<EMAIL_ADDRESS>npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of 'choerodon-front'
npm ERR! notarget
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/devops/.npm/_logs/2019-07-12T12_23_54_130Z-debug.log

you can use<EMAIL_ADDRESS>that's may be our negligence, because of we have private npm source, and we test our latest code there, you can edit the package.json like below:
"dependencies": {
    "@choerodon/boot": "0.18.x",
    "@choerodon/master": "0.18.x",
  }

or specific version like 0.18.1


Switch to using Duration instead of _ms

This landed in 14ae8f4e7bf45309419bdbc75477e88e91fe2e66

Heh. I took a stab at it as well :
https://github.com/carllerche/mio/pull/382/commits/e8280e9e3c1bee8f72b269296a8ef13dc098e8a4
:)
On Wed, May 11, 2016 at 2:24 AM Herman J. Radtke III <
<EMAIL_ADDRESS>wrote:

This landed in 14ae8f4
https://github.com/carllerche/mio/commit/14ae8f4e7bf45309419bdbc75477e88e91fe2e66
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/carllerche/mio/issues/331#issuecomment-218372679


EOS release (beta)

Criteria:

[x] As a User, I want to be able to load app
[ ] As a user, I can onboard onto hypha on eos using my phone number or a captcha security dialog
[x] As a user who has onboarded I see all DAOs overview currently deployed on EOS
[ ] As a user, I want to sign up for membership on a DAO in EOS
[ ] As a member of a DAO on EOS, I can make proposals and vote on proposals
[ ] As a member of a DAO in EOS, I can apply for a role in a DAO
[ ] As a DAO on EOS, I can create roles for users to choose from (or are we using the same roles?)
[ ] As a DAO on EOS, I want to set up all settings the same as DAOs on Telos can do
[ ] Blockchain updates are picked up by GraphQL in ( near ) real time

Currently a lot of settings is missing, including complete functionalities ( alerts, plan manager, new voting... ). Initial actions need to be run in order for document cache processor to setup the appropriate GraphQL schemas.

List of "issues":

[ ] Update profile picture is not working ( due to cors issue )
[ ] Wallet is not working ( due to hardcoded kv.hypha contract name )

@arsenijesavic have to check this one


fix(sbb-breadcrumb-group): fix color of divider arrow

Codecov Report

Merging #2042 (3cb14af) into master (ab917b0) will decrease coverage by 18.25%.
Report is 1728 commits behind head on master.
The diff coverage is 30.54%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@             Coverage Diff             @@
##           master    #2042       +/-   ##
===========================================
- Coverage   54.85%   36.60%   -18.25%
===========================================
  Files          49      288      +239
  Lines        1659    10928     +9269
  Branches      406     2387     +1981
===========================================
+ Hits          910     4000     +3090
- Misses        671     6668     +5997
- Partials       78      260      +182

Files
Coverage Δ

...c/components/sbb-action-group/sbb-action-group.tsx
100.00% <100.00%> (ø)

...mponents/sbb-alert-group/sbb-alert-group.events.ts
100.00% <100.00%> (ø)

src/components/sbb-alert/sbb-alert.events.ts
100.00% <100.00%> (ø)

...onents/sbb-autocomplete/sbb-autocomplete.events.ts
100.00% <ø> (ø)

src/components/sbb-card-badge/sbb-card-badge.tsx
100.00% <100.00%> (+11.11%)
:arrow_up:

src/components/sbb-card/sbb-card.stories.tsx
0.00% <ø> (ø)

src/components/sbb-card/sbb-card.tsx
90.00% <ø> (ø)

.../sbb-checkbox-group/sbb-checkbox-group.stories.tsx
0.00% <ø> (ø)

...mponents/sbb-checkbox-group/sbb-checkbox-group.tsx
33.33% <ø> (ø)

src/components/sbb-checkbox/sbb-checkbox.events.ts
0.00% <ø> (ø)

... and 55 more

... and 239 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Microbenchmarking

Would it be possible to support creating microbenchmarks? It is not uncommon for test frameworks to incorporate microbenchmark support. Below are a couple of frameworks I'm aware of which closely tie microbenchmarking and unit testing.

Catch2 implements microbenchmarks -> https://github.com/catchorg/Catch2/blob/master/docs/benchmarks.md#top
Google Benchmark (related to Google Test) is a simple, macro-based solution -> https://github.com/google/benchmark
The go programming language implements microbenchmarking as a part of its built-in testing framework -> https://golang.org/pkg/testing/

I'm not aware of any libraries for benchmarking C++ code that are macro-free, and I figure I'm not the only one that would have a similar interest in macro-free microbenchmarking.

Yeah, potentially we could some benchmarking primitives, let me think about it some more not to overblow the UT. Let's keep that issue open for the time being to track the issue, thanks @jwillikers :+1:

nanobench is very good.


Grad strides do not match bucket view strides

Such a waring occurs at runtime
/.conda/envs/pytor1/lib/python3.7/site-packages/torch/autograd/init.py:175: UserWarning: Grad strides do not match bucket view strides. This may indicate grad was not created according to the gradient layout contract, or that the param's strides changed since DDP was constructed.  This is not an error, but may impair performance.
grad.sizes() = [1, 1, 384], strides() = [99072, 384, 1]
bucket_view.sizes() = [1, 1, 384], strides() = [384, 384, 1] (Triggered internally at  /opt/conda/conda-bld/pytorch_1656352430114/work/torch/csrc/distributed/c10d/reducer.cpp:326.)
And the training results are unreasonable
Time 10.881 (10.881)    Data  9.173 ( 9.173)    Loss nan (nan)  Mean-P   0.34 (  0.34)  Mean-N    nan (   nan)
This problem seems to be caused by Distributed training, but I set the GPU to 0, how to solve it

This is weird, are you training on GPU? Why set GPU to 0?

This is weird, are you training on GPU? Why set GPU to 0?

Thanks for your reply, let me describe my test process.
The GPU is not set initially, and os.environ["CUDA_VISIBLE_DEVICES"] =”0”.However, the server has a total of 0-7 available, so running this will directly runerror
CUDA error: invalid device ordinal
Then os.environ["CUDA_VISIBLE_DEVICES"]=”0,1,2,3,4,5,6,7”,here's the problem:
Grad strides do not match bucket view strides.
And there's no loss or mean-N value. Print args.gpu before training, the value is 0. So I set --gpu 0 .

This is weird. When using os.environ["CUDA_VISIBLE_DEVICES"] =”0”, only GPU-0 will be visible. There is no need to set --gpu 0. I did not get anything like this. It might be a CUDA or pytorch version issue?

Thanks, the problem has been solved. For the VIGOR and CVUSA data sets, the pytorch environment is quite different, and the results can be produced after replacement. However, there are still some problems, such as dim sets the dimension in sampler, whether the dim setting is the same result after embedding in the Transgeo network, at the same time, the dim in file is set to 1000, but default is 128, for these data sets, how many is better, 4096,1000,or 128?

Thanks, the problem has been solved. For the VIGOR and CVUSA data sets, the pytorch environment is quite different, and the results can be produced after replacement. However, there are still some problems, such as dim sets the dimension in sampler, whether the dim setting is the same result after embedding in the Transgeo network, at the same time, the dim in file is set to 1000, but default is 128, for these data sets, how many is better, 4096,1000,or 128?

Please follow the parameters in the provided script to reproduce the result.


Corrections to README.md

Some small problems regarding links:
https://github.com/icing/mod_md/blob/28207d0a3eddf6c07719336e5cd8aca2a21ea2a7/README.md?plain=1#L61
(#acme_failover) should be (#acme-failover)
https://github.com/icing/mod_md/blob/28207d0a3eddf6c07719336e5cd8aca2a21ea2a7/README.md?plain=1#L1584
[Simple Usage](#simple-usage) should probably be [Basic Usage](#basic-usage)
https://github.com/icing/mod_md/blob/28207d0a3eddf6c07719336e5cd8aca2a21ea2a7/README.md?plain=1#L1735
(#MDWarnWindow--When-to-warn) should be (#mdwarnwindow--when-to-warn)

Thanks!


VSC doesn't connect to DevTools

Hello,
I am writing to you because I changed some setting in DevTools because the changes I made in it did not come up in VSC as well. I made the change in the Sources panel Overrides tab Folder for Overrides, chose the directory allowed DevTools to read and write access to the directory and now if I open my html file in the Live Server it is different from the work I had done. It may be in connection with a permission issue.
Please let me know how I could fix this.
Have a lovely day,
Lilla

I believe the source overrides in the devtools are stored only in Chrome and aren't persisted anywhere. It may be possible to get them to save on disk, but I haven't tried that personally. Regardless it sounds like this is more an issue in the devtools than with vscode -- StackOverflow or other sites might be able to provide you more relevant help.
/question


Thread test

Coverage increased (+0.4%) to 38.29% when pulling b4e87209e04312a58c8e9daf3c1acb713e472f11 on thread-test into 07a3cd088b56022b947825f0fd2bb3a117e2b8a2 on master.


fix recall message

Related to this PR, some code has been changed

Why did you close the original PR #81?

Because of I made some mistakes when I updated this PR. So I close that PR and push a new one. I think we can discuss in the Issues?

It's not good practice if you create a new PR in order to replace an old PR.
The better practice should be continuing to modify the original PR until it had been merged.

@windmemory Thanks for the approvement.
@wxul Thank you very much for the contribution, you did a great job!


[Bug Report] How to properly fork ElementUI? npm run dev gets This dependency was not found:  * element-ui in ./src/main.js

Element UI version
2.4.6
OS/Browsers version
Google Chrome
Vue version
2.5.17
Reproduction Link
https://github.com/GustavoFenilli/element
Steps to reproduce

Fork the repository
npm install --save https://github.com/GustavoFenilli/element
npm run dev

It will give a error
This dependency was not found:  * element-ui in ./src/main.js
So what is the proper way to fork and work on your own version of this project?
What is Expected?
To run properly like the npm version
What is actually happening?
Not running at all.

Use yarn instead of npm.

yarn gives the same error.

Try to remove the node_modules folder and package-lock.json, then try it again 🤔

Already did that, still doesn't change anything, there is something wrong with what I did? like in the steps? fork, install the forked git, and tried to run? there is something between that I should be doing?

After looking for the problem a lot, the problem is probably that if you fork the project, the lib folder doesn't go with it, so you can build the project yourself, the main: "lib/element-ui.common.js".
So would be nice to have in the .github CONTRIBUTING how to build the lib also.


arm64 issue: exec user process caused: exec format error

I had previously got my ARM setup to work properly, but recently after upgrading to operator 0.3 and refactoring my yaml, it does not work anymore. It looks like the image itself is not ARM64 compatible. As I'm inspecting the logs, I'm getting only this line:
standard_init_linux.go:228: exec user process caused: exec format error

Is something wrong with my config, or is this an operator bug?
apiVersion: dynatrace.com/v1beta1
kind: DynaKube
metadata:
  name: dynakube
  namespace: dynatrace
spec:
  apiUrl: https://<...>/api

  networkZone: home-lab

  activeGate:
    capabilities:
      - routing
      - kubernetes-monitoring
#      - metrics-ingest

    nodeSelector:
      kubernetes.io/arch: amd64

  oneAgent:
    classicFullStack:

      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
        operator: Exists

      nodeSelector:
        kubernetes.io/arch: amd64

  oneAgent:
    classicFullStack:
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
        operator: Exists

      nodeSelector:
        kubernetes.io/arch: arm64

      env:
        - name: ONEAGENT_INSTALLER_SCRIPT_URL
          value: https://<...>/api/v1/deployment/installer/agent/unix/default/latest?arch=arm&flavor=default&Api-Token=<...>

After upgrading to v0.5.0, still the same problem. I believe the problem is with the downloaded oneagent image. It seems to be not multi-arch, thus fails on ARM.

I managed to get this working again, by using the oneagent image from docker hub. It is capable of multi-arch, while the dynatrace cluster container registry API seems to be not. My config for reference:
apiVersion: dynatrace.com/v1beta1
kind: DynaKube
metadata:
  name: dynakube
  namespace: dynatrace
  annotations:
    alpha.operator.dynatrace.com/feature-automatic-kubernetes-api-monitoring: "true"
spec:
  apiUrl: https://<...>/api

  networkZone: home-lab

  activeGate:
    capabilities:
      - routing
      - kubernetes-monitoring
      - metrics-ingest

    nodeSelector:
      kubernetes.io/arch: amd64

  oneAgent:
    classicFullStack:
      enabled: true

      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
        operator: Exists

      nodeSelector:
        kubernetes.io/arch: amd64
---
apiVersion: dynatrace.com/v1beta1
kind: DynaKube
metadata:
  name: dynakube-arm
  namespace: dynatrace
  annotations:
    alpha.operator.dynatrace.com/feature-automatic-kubernetes-api-monitoring: "true"
spec:
  apiUrl: https://<...>/api
  networkZone: home-lab
  tokens: dynakube

  oneAgent:
    classicFullStack:
      enabled: true
      image: "dynatrace/oneagent"

      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
        operator: Exists

      nodeSelector:
        kubernetes.io/arch: arm64

      env:
      - name: ONEAGENT_INSTALLER_SCRIPT_URL
        value: https://<...>/api/v1/deployment/installer/agent/unix/default/latest?arch=arm&flavor=default&Api-Token=<...>

The operator should use images for both architectures, setting the environment variables should no longer be necessary.
If removing the environment variable still does not work, try annotating the pods you want to monitor with the installer-url annotation oneagent.dynatrace.com/installer-url, as described here: https://www.dynatrace.com/support/help/shortlink/full-stack-dto-k8#pod.
If these solutions do not work, please let me know. I will then investigate this issue further.

@meik99 if we are currently leveraging oneagent operator (https://github.com/Dynatrace/dynatrace-oneagent-operator) v0.3.0, what is the minimum version of the operator we should use to take advantage of multi-arch builds? The oneagent image version in use is <IP_ADDRESS>20808-121330. I'm assuming we don't need to customize the OneAgent CRD in the same way:
19:06:45 Creating /mnt/host_root/opt/dynatrace/oneagent/agent/conf/dockerdeployment.conf
19:06:45 Downloaded version differs from installed version, will re-run installer
19:06:45 Deploying to: /mnt/host_root
19:06:45 Starting installer...
19:06:48 Checking root privileges...
19:06:48 Process user: root, ID: 0
19:06:48 OK
19:06:48 Error: Cannot determine architecture or architecture not supported: <AARCH64>


Ex 5 error unchecked cast

Hi guys does anyone know what is one way to resolve this error on codecrunch?

u can try unwrapping and assigning it to an R before wrapping it again in a maybe

It works now, thank you so much!


fix(burnTokens): Throwing error if tokens in wallet are less than tokens to burn

Prior to this PR, if the wallet had 2 tokens and 10 tokens were requested to be burned, then the 2 tokens would be burned. With this change, an error will be thrown to notify the calling software that the wallet does not have the required quantity of tokens.

:tada: This PR is included in version 5.11.3 :tada:
The release is available on npm package (@latest dist-tag)
Your semantic-release bot :package::rocket:


Added pretty printer for empty visible workspaces

Description
Simple extensions of the pretty printer to differentiate between empty and non-empty visible workspaces. Analogical to the existing functionality for hidden workspaces. Particularly useful if some displays managed by xmonad are turned off temporarily.
Why would I want this?
My TV is often turned off. Still I want to know if its workspace contains any windows, without having to switch workspaces.
Checklist

[x] I've read CONTRIBUTING.md
[x] I tested my changes with xmonad-testing
[x] I updated the CHANGES.md file

Thanks for the PR, apologies for the long delay in following up!  Just to make sure I understand, would this change the behavior of the pretty printing for existing users?

Yes! Workspaces with visible windows will be now handled by two different functions, instead of the first function only:

ppVisible  = wrap "<" ">"
ppVisibleNoWindows  = id

Overriding the default behavior for both cases, will require overriding both functions in a custom configuration.

If this is undesirable I can wrap the new function in a Maybe type and set the default value to Nothing, falling back to the ppVisible function. I assumed the simplicity of the current approach outweighs its small impact on existing users.

It's a fairly large proportion of current xmonad users.

With small I did not refer to the number of users but my opinion on the severity of the impact. :)
My proposed solution will not break existing configurations but change the way labels of workspaces are displayed (which for most users will probably be the color). This will apply only to non-active, visible workspaces without any windows.
Labels of workspaces falling into any of the following categories will not be affected:

Current Workspace
Invisible Workspace
Visible Worskpace with Windows

Anyway, I see 3 options at this point:

Leave everything as it is. (Cost: Not knowing if a turned off monitor contains windows)
Use my initially proposed solution. (Cost: Labels for non-active, visible workspaces without windows will change for existing users)
Use my other proposed solution with the Maybe wrapping. (Cost: uglier code of higher complexity)

Not sure how to proceed...

We're still cleaning up from past incompatible changes; I understand that this doesn't actively break things, but it will cause a lot of support requests when people's bars "don't work" any more (and yes, unforutnately, that's how it's usually described. Most people are lousy at characterizing problem reports, and worse at checking change logs).

I understand. Now I wrapped the new function in a Maybe type:
https://github.com/xmonad/xmonad-contrib/pull/241
It does not change the behaviour for existing users now unless they set the new function explicitly. Its value falls back to Nothing and the old behaviour using ppVisible.


feat: 明细表支持多级表头

👀 PR includes

✨ Feature

[x] New feature

🔗 Related issue link
ref:  #1687, #1801

:tada: This PR is included in version @antv/s2-v1.35.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version @antv/s2-react-v1.32.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


fix #19 write_model() doesn't seem to produce correct XML metadata

Use write_start_element_with_prefix() in order to build correct XML metadata.

Hi @cberge, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, MSBOT;


iMac, external monitor - inconsistent playback

I have a 27" iMac with an external 1080p display. All videos are cached.
The external display shows videos every time. It looks like the 4K files. They are super crisp(er than normal), with smoother motion and less mpeg artifacts.
But the main screen only some times plays videos. And they seem to be the 1080p version - motion not as smooth and I see mpeg artifacts.
I would assume the opposite would happen because the external screen is 1080p and the internal screen has much higher resolution (but under 4k still).
In case this is a 4K issue, can you add an option to show the file name or other details - in addition to the "Show descriptions" option?

As you can see on  the left column, not every video is available in 4K. Only those with the "4K" label are, the oldest ones are 1080p H.264 only and you have those selected too for playback.
If you strictly only want 4K, you'll have to disable the old videos. Click the action button below the list and click the "Check only 4K", this way you'll have what you expect.
You can check for  yourself the old files by going to the "Cache" tab and click "Show in Finder", this will show you the videos and you can open them in quicktime. You'll see that on a 5K display, some can be extremely blocky indeed.

I now have only 4K videos selected on the left. And Preferred = 4K. Sometimes the main display shows a video. Sometimes it does not.
I've noticed that when the internal monitor (on the right) does not display a video, the external monitor (on the left) also does not display the video name. See attached.
Maybe different options are in order:
The checkbox Play different Aerial on each display becomes a select "Play Aerials":

Only on main display
Mirrored on every display
Independently on each display

Then the options w/in Show Descriptions:

10 Seconds
Always
Debug (output the file name, codec, dimensions, etc)

I'm a web developer so I don't know the coding involved in native apps. Otherwise I'd make pull requests. Thank you for this awesome Screensaver!

I now have only 4K videos selected on the left. And Preferred = 4K.

Good !

Sometimes the main display shows a video. Sometimes it does not.

Not good, that's a bug.

I've noticed that when the internal monitor (on the right) does not display a video, the external monitor (on the left) also does not display the video name. See attached.

Intriguing. A few things if you may :

Can you tell me which version of MacOS you are running ?
Also, can you possibly disable the "show clock" option, see if that somehow fixes the problem ? (long shot but we've seen weird things !)
Do you see the same issue when you have "Play different Aerial on each display" checked ?

Maybe different options are in order:
The checkbox Play different Aerial on each display becomes a select "Play Aerials":

Only on main display
Mirrored on every display
Independently on each display

Yep, main screen only is on my todo list. But by default, it should mirror.

Then the options w/in Show Descriptions:

10 Seconds
Always
Debug (output the file name, codec, dimensions, etc)

We probably need a debug option somewhere yep ! Right now I'm working on the network debug but I'll try to think about this one.

I'm a web developer so I don't know the coding involved in native apps. Otherwise I'd make pull requests. Thank you for this awesome Screensaver!

Thanks for your report ! Please let me know about the stuff above so hopefully we can fix that.

Follow up, did a quick testing :

On my iMac 5K (Late 2015), running Mojave, and an external screen (1280x800) : Always OK
On my Macbook Air (2011), running 10.13.6, same external screen (1280x800) : I reproduce your bug
On my Macbook Air (2011), running 10.13.6, larger external screen (1920x1200) : I reproduce your bug

Can you confirm you're running 10.13.6 ? I'm afraid this may be one of these video driver issues that's out of our control. Same goes for so many of the scale bugs, wrong ratio, black bars that comes and goes with new video drivers.

Earlier the video name was showing on both screens. Now just the internal screen - but only if the movie plays.
I disabled the clock (and them also the video title) but that made no difference.
"Play different Aerial on each display" gives odd results. Once it played on the internal only, and at like 1 frame per 3 seconds. Another time it played on the external screen only, smoothly, and with the video title on the external screen. 🤷♂
Perhaps these are all manifestations video card resource issues. That's why I was hoping for a "main display only" option.
10.13.6, Late 2011 iMac 27", 1080p external screen.
I maxed everything out when I bought it, so the specs are pretty decent though starting to age...
Model Name:	iMac
Model Identifier:	iMac12,2
Processor Name:	Intel Core i7
Processor Speed:	3.4 GHz
Number of Processors:	1
Total Number of Cores:	4
L2 Cache (per Core):	256 KB
L3 Cache:	8 MB
Memory:	16 GB
Boot ROM Version:	IM121.004F.B00
SMC Version (system):	1.72f2

Are you sure you got the name on both screens in mirror mode ? Or with play different checked ? Sorry to insist but that might be important !
Noted for the clock and your Mac info, thanks. As far as I know on your iMac, it should be using Intel QuickSync to decode (so pretty close to what happens on my Macbook Air of the same year, Sandy Bridge generation).
I'm adding a Main display only option right now, I'll ping you back with a beta.

Yes, the name was appearing on both screens in mirror mode. But that seems to have stopped now.

@WebVeteran please try this build for "main display only" mode :
https://github.com/glouel/Aerial/releases/download/1.41test1/Aerial.saver.zip
And let me know how it goes ?

Installed and works very well! I used a hot corner to test it over 10 times and it never failed once - Main display only, always show title, prefer 4K, only 4K videos selected.
Sometimes the framerate drops just slightly then picks up again. But I was expecting that with an older iMac. The display is still beautiful though!
It's weird how the clock is an option outside of each screen saver. It takes no visual style into account.

Ok great ! I'll keep looking for the other bug to see if that's on my changes or not.
Regarding framerate, 4K HEVC is fully CPU decoded on your Mac so that's definitely expected. Transcoding the 4K videos to H.264 with x264/Handbrake would significantly lower the load in your specific case.

@WebVeteran when you can, can you give a shot to this build, and try mirror mode again ?
https://github.com/glouel/Aerial/releases/download/1.4.1test2/Aerial.saver.zip
Seems fixed here after a dozen hot corner tries, you'll still only get description on main screen but mirror work should always show on both now. Can you confirm ?

Done. This is what I found, using only 4K videos...
1.4.1 TEST2
Mirrored: The same video plays on both. Very smooth. The title is only on the main screen.
Different: Frames being dropped (as expected).
Also, the fade effect only works on the main screen.
1.4.1 BETA1
If I click Preview the screens go blank. The system is unresponsive. I hear a beep. The desktop comes back on and the System Preferences are gone.
If I use a hot corner the screens go blank. Then grey apples appear, one on each screen.

Done. This is what I found, using only 4K videos...
1.4.1 TEST2
Mirrored: The same video plays on both. Very smooth. The title is only on the main screen.
🎉

Also, the fade effect only works on the main screen.
Right. That I can probably fix

1.4.1 BETA1
If I click Preview the screens go blank. The system is unresponsive. I hear a beep. The desktop comes back on and the System Preferences are gone.
If I use a hot corner the screens go blank. Then grey apples appear, one on each screen.
?!!

Sorry about that then. Everytime, independant of mirror etc ? Once is too much but that may help me narrow it down. Thanks for your feedback, hopefully I can fix that regression 😅

Sorry about that then. Everytime, independant of mirror etc ?

Yep. I even quit Prefs, reinstalled, etc. I figured it was Aerial crashing and the system picking the default apple screen saver.

Fades and Titles worked in Test2. Sorry I can't help you!

Found it, I'll get a new build out soonish, will ping you back.

@WebVeteran took some time but here goes :
https://github.com/glouel/Aerial/releases/download/1.4.1beta2rc1/Aerial.saver.zip
Should be fixed for you. The fade-in/out is also now showing on all screens. Not the descriptions. There are some new options including a same styled clock and ability to have a message on screen.

That was b2.
b3...
Mirrored: still the same issue with the first frame being full brightness before the fade-in.
Different: Works as expected. Both screens fade from black. Lower framerate, but plays fine otherwise.

Again apologies about b2.
Thanks for your report, that one is an easy fix, weird though I didn't see it on mojave but just saw it on 10.13 !

I fixed the flickering in this build :
https://github.com/glouel/Aerial/releases/download/v1.4.1rc/Aerial.saver.zip
Thanks for catching that !

Yes - fixed. Great work!

Closing as fixed with the release of 1.4.1


[CHERRYPICK] test: add wait for resourcegroup status (#561)

We've observed some flaky CI failures for this test when checking the ResourceGroup status immediately after WatchForAllSyncs. The objects have not necessarily reconciled after WatchForAllSyncs, so this uses WatchObject to implement waiting for reconciliation.

/assign @haiyanmeng

/retest


Swift compiler warning "Missing creator task for discovered dependency input node" for every Flutter header

Xcode 13 beta 3 started spewing a new Swift compiler warning for every Flutter framework header file:
warning: Missing creator task for discovered dependency input node: '/Users/m/Library/Developer/Xcode/DerivedData/Runner-gnengnkipgqsumexkvwkdczgvrst/Build/Products/Debug-iphoneos/Flutter.framework/Headers/FlutterCallbackCache.h'. Did you forget to declare this node as an output of a script phase or custom build rule which produces it? (in target 'Runner' from project 'Runner')

Steps to reproduce

Install Xcode 13 beta 3
flutter create bug
cd bug && flutter build ios --config-only
open ios/Runner.xcworkspace
Build in Xcode.

Something similar reported in https://github.com/realm/realm-cocoa/issues/7348.

I see this on a vanilla Swift or Objective-C Xcode project if I copy the Flutter framework to the built products directory and link the target against it.

This is gone on Xcode 13 beta 4.


Custom field in filename

From<EMAIL_ADDRESS>on February 02, 2013 17:04:32
What steps will reproduce the problem? 1. have a custom name in the filename 2. 3. What is the expected output? What do you see instead? would like to be able to specify where to put info:  ex:
filename:
Star Wars - Shadows of the Empire - 1 [114701].cbz
would like to be able to put 114701 in the user rating field
Also would like to be able to use that field for template naming/renaming What version of the product are you using? On what operating system? 1.0.3-beta Please provide any additional information below.
Original issue: http://code.google.com/p/comictagger/issues/detail?id=4

From<EMAIL_ADDRESS>on February 02, 2013 08:45:15
Figured out how to do the custom info into desired field:
ls|while read LINE; do RATING=$(echo $LINE|perl -pi -e 's/] [/ /; s/.[//; s/].//'); ~/comictagger-src-1.0.3-beta/comictagger.py -s -t cbl -m "criticalRating=$RATING" "$LINE"; done
now i am just trying to figure out how to do custom renames -- any help is appreciated.

From<EMAIL_ADDRESS>on February 03, 2013 09:00:46
Well, the set of rename variables is limited at the moment. Here's what you can use right now: https://code.google.com/p/comictagger/wiki/UserGuide#Rename I never imagined anyone would use the rating field in the filename, honestly. I will think about the best way to implement this more generally.
Status: Accepted

From<EMAIL_ADDRESS>on February 03, 2013 09:00:46
Well, the set of rename variables is limited at the moment. Here's what you can use right now: https://code.google.com/p/comictagger/wiki/UserGuide#Rename I never imagined anyone would use the rating field in the filename, honestly. I will think about the best way to implement this more generally.

From<EMAIL_ADDRESS>on February 03, 2013 09:52:17
I actually use the rating field for the collectorz comic database ID rather than rating since i couldn't find a better place to put i...
anyway -- looking at the raw dumps of the data, you could implement something like %criticalReview% where the variable and the display of the data from the -p flag for the linux command line are the same ex:
comments
credit
criticalRating
issue
month
notes
publisher
series
teams
title
webLink
year

From<EMAIL_ADDRESS>on February 06, 2013 11:32:44
Added in %criticalrating% and a bunch of others.   Let me know if that works OK for you.

From<EMAIL_ADDRESS>on February 15, 2013 09:17:40
I assume the silence means it's OK.  I'm going to mark it as fixed.
Status: Fixed

From<EMAIL_ADDRESS>on February 15, 2013 09:27:24
yes  -- it all works great now -- sorry for the delayed response


Anyone get it running on 8GB?

Anyone able to get this running on an 8 GB card?
Would appreciate some config suggestions if so.
Thanks!

hey you can try this
import accelerate

model = ...
accelerate.cpu_offload(model)