feat: rebase CRPO from PPO to TRPO

Description
The original implementation of CRPO uses TRPO as the base algorithm.
We rebase the on-policy version of CRPO, that is, OnCRPO, from PPO to TRPO, and tune the config file.
We evaluate the new implementation in the following environment in SafetyGymnasium:
SafetyCarGoal1-v0

SafetyPointGoal1-v0

SafetyAntVelocity-v1

SafetyHalfCheetahVelocity-v1

SafetyHopperVelocity-v1

SafetyHumanoidVelocity-v1

SafetyWalker2dVelocity-v1

SafetySwimmerVelocity-v1

Motivation and Context
The performance of CRPO can not reach our expectation and it is different from original implementation.
Types of changes
What types of changes does your code introduce? Put an x in all the boxes that apply:

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds core functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Documentation (update in the documentation)

Checklist
Go over all the following points, and put an x in all the boxes that apply.
If you are unsure about any of these, don't hesitate to ask. We are here to help!

[x] I have read the CONTRIBUTION guide. (required)
[ ] My change requires a change to the documentation.
[ ] I have updated the tests accordingly. (required for a bug fix or a new feature)
[ ] I have updated the documentation accordingly.
[x] I have reformatted the code using make format. (required)
[x] I have checked the code using make lint. (required)
[x] I have ensured make test pass. (required)

Codecov Report

Merging #254 (4f45f49) into main (af2951d) will decrease coverage by 0.03%.
The diff coverage is 100.00%.

:exclamation: Current head 4f45f49 differs from pull request most recent head cf6fdb3. Consider uploading reports for the commit cf6fdb3 to get more accurate results

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff             @@
##             main     #254      +/-   ##
==========================================
- Coverage   97.01%   96.98%   -0.03%
==========================================
  Files         138      138
  Lines        6989     6990       +1
==========================================
- Hits         6780     6779       -1
- Misses        209      211       +2

Impacted Files
Coverage Δ

omnisafe/algorithms/on_policy/primal/crpo.py
91.30% <100.00%> (+0.40%)
:arrow_up:

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


Update AgentContentsFinder

DailyDuty uses this value to re-sync reward counts for the Raids Tracker

It's possible that there are other parts of the agent that moved 0x20 bytes, these were the only values I could verify


Suggestion: "invisible flag" system

so in config by changing flag block by air feature will be activated:
so when in chunk plugin will count both town players in it and then it'll detect last man standing on chunk and if in time that's in config then land stays in their hands if not land becomes enemy's but not officially. that will be determined after war!

I have no intention to implement this feature in FlagWar at this time. From what I remember, this sounds far too similar to how @LlmDl's EventWar TownBlock HP works.


Timed config change

Idea for a feature.
In some situations a "timed config" would be nice to have. When you change some Firewall rules for testing new setting, it would be nice to set a timer for like "5 Minutes".
For these 5 minutes the new Firewall settings will be active if you not submit them.
For risky rule settings you wouldn't have the risk to log out after a config change.
Thanks

Just for the record, this was added here https://github.com/mimugmail/opn-repo/tree/main/sysutils/auto-recovery


Fix GetFeature Request  URL with parameter MAP in MapServer and QGIS Server

Better handling of URL parameters. Error for URL with MAP parameter in Mapserver and QGIS SERVER

See issue https://github.com/geopython/OWSLib/issues/534

@samtux - should be fixed with #612. Could you check this resolves your case?

Closing as should be fixed in 0.32.0 release


Why are Python websockets way slower than low-level equivalent?

Hello,
I'm trying to understand why Python websockets have so much latency.
The following benchmark shows that Python is about 6x slower than C++ to process websocket messages. It's quite astonishing to me as it seems to be more of an I/O problem rather than a computing one.
Server:
import time
import json
import asyncio
import random
import websockets

async def on_connection(websocket, path):
    """When a client connects."""
    print("New connection")
    while True:
        try:
            await websocket.send(json.dumps({
                "ts": time.time(),
            }))
            time.sleep(random.random() / 2)
        except websockets.ConnectionClosedOK:
            break
        except websockets.exceptions.ConnectionClosedError:
            break

async def main():
    """Entrypoint. Run the server."""
    async with websockets.serve(on_connection, "localhost", 4242):
        await asyncio.Future()

if __name__ == "__main__":
    asyncio.run(main())

Here is a basic CPP client implementation:
#include "easywsclient.hpp"
#include "simdjson.h"
#include <chrono>
#include <assert.h>
#include <stdio.h>
#include <string>
#include <iostream>
#include <sys/time.h>

using easywsclient::WebSocket;
static WebSocket::pointer ws = NULL;
simdjson::ondemand::parser parser;

inline long long micros()
{
    return std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
}

void handle_message(const std::string & message)
{
    simdjson::padded_string messaged_padded(message);
    simdjson::ondemand::document parsed = parser.iterate(messaged_padded);
    double server_ts = parsed.find_field("ts");
    long long delta = micros() - server_ts * 1000 * 1000;
    std::cout << delta << "μs" << std::endl;
}

int main()
{
    ws = WebSocket::from_url("ws://localhost:4242/");
    assert(ws);
    while (ws->getReadyState() != WebSocket::CLOSED) {
      ws->poll();
      ws->dispatch(handle_message);
    }
    delete ws;
    return 0;
}

And here is a Python client implementation:
import time
import asyncio
import json
import websockets

async def hello():
    uri = "ws://localhost:4242"
    async with websockets.connect(uri) as websocket:
        while True:
            data = await websocket.recv()
            data = json.loads(data)
            diff = (time.time() - data["ts"]) * 1000 * 1000
            diff = int(diff)
            print(f"{diff}μs")

if __name__ == "__main__":
    asyncio.run(hello())

The result is the following:

The average latency in C++ is 150μs, ranging from 50μs to 300μs.
The average latency with Python websockets is 800μs, ranging from 400μs to 3000μs (3ms).
I've benchmarked other Python websocket libraries, with very similar results.

My questions are the following:

Can you see any bias or error in this benchmark?
Why is Python so much slower, and why its latency is so random?
Is there any way to reduce the latency while staying in Python?

Thanks

The Python code sample you provided makes the mistake explained in this FAQ: https://websockets.readthedocs.io/en/stable/faq/asyncio.html#why-does-my-simple-program-misbehave-mysteriously

The other of magnitude isn't shocking for C++ vs. Python. Unfortunately there's a few copies happening and those aren't cheap.
Other potential issues with your benchmark:

Is time.time() sufficiently accurate? Usually best to use time.perf_counter(); since it's only valid for relative measurement, you can send a message from the client, have the server echo it, and see how long it takes for the echo to come back.
Can you benchmark json.loads() separately? I would like to be sure you're benchmarking websockets and not json.

time.time is known to be precise at around 1 microsecond. So it's quite insignificant compared to the 800 microseconds that Python takes to process the message.
json.loads takes a few microseconds, the result is no different when placing the time.time() before the json.loads(data).

I made the observation that the latency difference is way less on x86_64 hardware than on my M1 chipset. It might be related to hardware optimization.
I get performances much closer to C++ on a testing Linux machine.

Can you check if from websockets.speedups import apply_mask works? If this raises ImportError, then it would explain the issue.

Yes, importing apply_mask from websockets.speedups works.

It would require more investigation, then. If I want to look into it, I should be able to reproduce your benchmark easily.

I use uvloop running on a x86 machine and the gap between c++ and python narrowed.
import uvloop
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

I was wondering whether the issue could be explained by https://github.com/aaugustin/websockets/blob/f2176ebc682742ec6a00646663c108bc400451bb/src/websockets/speedups.c#L133 not being defined on M1, but a quick Google search suggests that it is. It would cause a large performance gap.

I agree with the recommendation to use uvloop - documented here: https://websockets.readthedocs.io/en/stable/topics/performance.html
You should also review this FAQ: https://websockets.readthedocs.io/en/stable/faq/misc.html#why-is-websockets-slower-than-another-python-library-in-my-benchmark
For example, if easywebsocket doesn't use compression while websocket uses it, that would easily explain the difference.
For context, I performed extensive benchmarking of websockets (and pushed the state of the art of the ecosystem in Python; other libraries followed). I don't believe there are easy gains left.
The answer is probably going to be in the area of:

bias in the benchmark i.e. enabling different features;
Python being generally slower than C++, a known fact.


Add page to view available communities

Quick page add to list out the specific communities available for each ASN.
I realised after creating this that the logic used for viewing ASN should be different than the way they're processed for matching. This is due to some network operators using ASNs in the private range for the first two octets. I may rework it later but this is good enough for now.
Please let me know if you have any queries.

Thanks, looks nice. I'll probably add some more text on how to provide additional communities, but this is very helpful.


Bump kyverno to 1.7.5

Signed-off-by: Brandon Mitchell<EMAIL_ADDRESS>Bumps Kyverno due to a breaking change in cosign: https://github.com/kyverno/kyverno/releases/tag/v1.7.5
1.8.1 was not used due to multiple breaking issues with that release.

as It seems fixed https://github.com/kyverno/kyverno/issues/5163, should we go back to 1.8.1, which is the most recent version of kyverno?

as It seems fixed https://github.com/kyverno/kyverno/issues/5163, should we go back to 1.8.1, which is the most recent version of kyverno?

The other issue I encountered was annotations getting too large to use kubectl apply, only create and replace would work.

as It seems fixed kyverno/kyverno#5163, should we go back to 1.8.1, which is the most recent version of kyverno?

The other issue I encountered was annotations getting too large to use kubectl apply, only create and replace would work.

Do you have comments folx ? ☝ @chipzoller @eddycharly


Error when running the test script

I've been trying to run the test script (test_r2plus1d_kinetics.sh) provided in the scripts folder of the repository to run a pretrained model on the kinetics validation dataset. However, I face the error "dim() called on undefined Tensor" when doing this. I've tried to localize the error and believe that it is being caused in the "workspace.CreateNet" function because the input blobs to this function are empty. However, I am unable to resolve this issue and wanted to know if I am doing anything wrong.
I am using the pretrained_model "r2.5d_d18_l8.pkl" with the kinetics-400-validation dataset to run this model. Any leads will really help. Thanks in advance!

This should be fixed now https://github.com/facebookresearch/VMZ/issues/69


Basic iPad support (including multitasking)

see #8909

@malgorithms can someone please take a look at implementing this PR (or similar)?

Please please please? Landscape mode is a REALLY popular request, we can't really use it looking at the screen sideways and the PR exists - the only conflict is white space in the properties files @chrisnojima @malgorithms

I 100% support merging this. Better than the stance of no support at all.

Does this supersede https://github.com/keybase/client/pull/17406?
👍 otherwise.

yeah, indeed. Would superseed #17406

Every time I use Keybase (which is a lot) on my iPad Pro with the keyboard folio I’m awkwardly bending my head to the left so that I can read Keybase on fixed portrait mode while replying with the keyboard on landscape. Literally hurting my neck. This is a real story.
Can we please get this merged? Then from that on you guys can work on a beautiful iPad app and release it with no pressure of people hurting their necks and their productivity.

You should just be happy at the very fact that you can just flip these 3 flags in Xcode and have something working on iPad. You can already use Keybase on the iPad and the experience reminds me of when I got my first iPad in 2010.
This is already better than what you have. Then take your time to make it great!

When we support iPad the interface will be updated. We're not going to just flip these flags

So no possibility to have basic support in the meantime?
Then I can close my PR

I think I'll bother the Keybase team every week until they get something done.
I seriously don't wanna move my entire team to an alternative app + try to convince my entire 100+ people community to move just because someone didn't turn on some flags :/
Maybe we can compile a version with the flags and submit it to the App Store?

@luisivan

@BergQuester what up

@luisivan Sorry, that was the start of a comment I thought I had canceled due to lack of time.

@chrisnojima - I’m just a user, but I would strong support “just flipping these flags” if it results in even a slight improvement in the experience on iPad. I’m using an iPad Pro 11 with a keyboard, and the app is effectively unusable.


Module Update

Codecov Report

Merging #20 (41c148d) into master (d43a58c) will increase coverage by 0.01%.
The diff coverage is 100.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##           master      #20      +/-   ##
==========================================
+ Coverage   94.57%   94.58%   +0.01%
==========================================
  Files          15       15
  Lines         498      499       +1
==========================================
+ Hits          471      472       +1
  Misses         27       27

Impacted Files
Coverage Δ

ellar_cli/__init__.py
100.00% <100.00%> (ø)

ellar_cli/main.py
93.47% <100.00%> (+0.14%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


reactor actuator invalid response when too much actuator request on decorate-on-each set true

Describe the bug
Please provide details of the problem, including the version of Spring Cloud that you
are using.
set: webflux + sleuth + actuator
version: set('springCloudVersion', "Hoxton.SR1") and id 'org.springframework.boot' version '2.2.4.RELEASE'
In decorate-on-each: true setting,
actuator not work after 100 time's call.
but, In decorate-on-each: false setting,
then, actuator work after 100 time's call.
this log about
In decorate-on-each: true setting,
after 100 time's call, and call /actuator/health then error log
2020-02-11 14:53:50.628 ERROR [,8baf0e4c1ad5671a,8baf0e4c1ad5671a,false] 40736 --- [ctor-http-nio-7] a.w.r.e.AbstractErrorWebExceptionHandler : [da7e3300]  500 Server Error for HTTP GET "/actuator/health"

reactor.core.Exceptions$ReactorRejectedExecutionException: hard cap on deferred tasks reached for boundedElastic("boundedElastic",maxThreads=2,maxTaskQueued=2,ttl=60s)
	at reactor.core.Exceptions.failWithRejected(Exceptions.java:275) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
	|_ checkpoint ⇢ Handler org.springframework.boot.actuate.endpoint.web.reactive.AbstractWebFluxEndpointHandlerMapping$ReadOperationHandler#handle(ServerWebExchange) [DispatcherHandler]
	|_ checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
	|_ checkpoint ⇢ org.springframework.cloud.sleuth.instrument.web.TraceWebFilter [DefaultWebFilterChain]
	|_ checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
	|_ checkpoint ⇢ HTTP GET "/actuator/health" [ExceptionHandlingWebHandler]
Stack trace:
		at reactor.core.Exceptions.failWithRejected(Exceptions.java:275) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.scheduler.BoundedElasticScheduler.schedule(BoundedElasticScheduler.java:242) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.scheduler.Schedulers$CachedScheduler.schedule(Schedulers.java:1040) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoSubscribeOnCallable.subscribe(MonoSubscribeOnCallable.java:52) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4105) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoZip.subscribe(MonoZip.java:128) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4105) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:418) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:243) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:201) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:363) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4105) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoZip.subscribe(MonoZip.java:128) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4105) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:418) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:243) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:201) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:363) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:150) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2199) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:162) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:103) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:150) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:241) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:203) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:203) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoIgnoreThen$ThenAcceptInner.onNext(MonoIgnoreThen.java:296) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:144) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:247) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:329) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:96) ~[spring-cloud-sleuth-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
		at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:173) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2199) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.request(MonoPeekTerminal.java:132) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.request(ScopePassingSpanSubscriber.java:79) ~[spring-cloud-sleuth-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
		at reactor.core.publisher.MonoZip$ZipInner.onSubscribe(MonoZip.java:318) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onSubscribe(ScopePassingSpanSubscriber.java:71) ~[spring-cloud-sleuth-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
		at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onSubscribe(MonoPeekTerminal.java:145) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4105) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoZip.subscribe(MonoZip.java:128) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:153) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:56) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:150) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:67) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:76) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.innerNext(FluxConcatMap.java:274) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:851) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:96) ~[spring-cloud-sleuth-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
		at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2199) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:162) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.request(ScopePassingSpanSubscriber.java:79) ~[spring-cloud-sleuth-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2007) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:1881) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onSubscribe(ScopePassingSpanSubscriber.java:71) ~[spring-cloud-sleuth-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
		at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4105) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:441) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:211) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at org.springframework.cloud.sleuth.instrument.web.TraceWebFilter$MonoWebFilterTrace.subscribe(TraceWebFilter.java:180) ~[spring-cloud-sleuth-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4105) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:172) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:56) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]
		at reactor.netty.http.server.HttpServerHandle.onStateChange(HttpServerHandle.java:64) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE]
		at reactor.netty.tcp.TcpServerBind$ChildObserver.onStateChange(TcpServerBind.java:228) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE]
		at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:465) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE]
		at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:90) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:167) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:321) ~[netty-codec-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:295) ~[netty-codec-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.45.Final.jar:4.1.45.Final]
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.45.Final.jar:4.1.45.Final]
		at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_191]

Sample
If possible, please provide a test case or sample application that reproduces
the problem. This makes it much easier for us to diagnose the problem and to verify that
we have fixed it.
https://github.com/creatorKoo/error-report-actuator
start with this option
-Dreactor.schedulers.defaultBoundedElasticSize=2
-Dreactor.schedulers.defaultBoundedElasticQueueSize=2
and
#!/bin/bash
# actuator request 100 times
curl http://<IP_ADDRESS>:11140/actuator/health &                                                                                curl http://<IP_ADDRESS>:11140/actuator/health &
curl http://<IP_ADDRESS>:11140/actuator/health &
curl http://<IP_ADDRESS>:11140/actuator/health &
... (more than 100 lines) ...
curl http://<IP_ADDRESS>:11140/actuator/health

run this script and call /actuator/health and not error
and remove that info from bootstrap.yaml (set default)
spring:
  sleuth:
    reactor:
#      decorate-on-each: true
      decorate-on-each: false # this option fix error but lose useful functions.

run 100time's script again and  call /actuator/health and then error repeat.
I want to use decorate-on-each: true option with high load actuator call.

@simonbasle any idea what could be the reason? :grimacing:

If you don't know why this error begin, then, I suggest that remove reactor hook only /actuator/*.
Almost people don't need actuator's decorate-on-each options

@creatorKoo what pushed you to set such low limits on the default Schedulers.boundedElasticScheduler()?

@simonbasle
That's just that actuator call script must be over than reactor.schedulers.defaultBoundedElasticSize limit.
If you want to use default value, then use it. but, you should be actuator call script count set 'more than your core size * 10'. because of default value is.
So, I just use it for simply reproducing the error. not anyelse.
What the value is, actuator call is higer than that, Error must be triggered.

I'd argue that, on the contrary, if number of calls is higher than that it is the explicit job of the elasticBoundedScheduler to reject the scheduling rather than infinitely creating new threads (at the risk of reaching the OS limit for threads, at which point your whole application is dead)

@simonbasle
No.. That's not a point. I know and agree with you Bounded Scheduler must be reject over than limit.
My issue point is that 'high overload actuator call and never recover one actuator call'.
Normal Status (without sleuth):

High overload actuator call. then error and I know it this point error.
(recover bounded scheduler in reactor-core I think)
one actuator call. then 200 ok return.

Error Status (with sleuth):

High overload actuator call. then error.
(something fail in bounded schedular. because of decorate-on-each: true is default value)
one actuator call. then 500 error return. (I report that point. that point must be not error return. because only one actuator call.)

Alter Status (with sleuth and decorate-on-each: false option):

High overload actuator call. then error and I know it this point error.
(recover bounded scheduler in reactor-core I think)
one actuator call. then 200 ok return.

Do you understand my point?

Ah I get it, yeah. The boundedElasticScheduler never seems to recover from the error / clear its queue of deferred tasks. Not sure how the spring cloud health indicators play a role in that 🤔

@simonbasle
webflux + actuator = It's ok
webflux + actuator + sleuth = It's not ok.
Please fix this problem.

actually I don't agree with your findings that it is ok without sleuth. Having sleuth added to the mix seem to accelerate the problem, probably because a bunch of spring-cloud health indicators get registered... In any case, there is an issue with boundedElasticScheduler(), obviously. We're exploring an alternative implementation that should not have these recovery issues in reactor/reactor-core#2040

@simonbasle
Ah.. I see.
Thank you for your information.
I will wait next spring boot webflux version to fixed this problem.

In the meantime, as a workaround that should be removed as soon as the reactor-core fix is usable, you can set the task queue limit to 'unbounded' (Integer.MAX_VALUE):
-Dreactor.schedulers.defaultBoundedElasticQueueSize=2147483647

I apply your workaround and look's fine, I think.
If reactor-core fix released, then I (or maybe you) will test this again and close this issue.

@creatorKoo the fix has now been merged in reactor-core 3.3.3.BUILD-SNAPSHOT, can you validate it fixes your issue?

@simonbasle I really want to test it fixed. but, I don't know how to test spring boot webflux with  reactor-core custom versioned.
Could you help me ? If I find out how to configure that part then, I will test it right away.

I validate that fix this problem. It works!
I tested using this branch (https://github.com/creatorKoo/error-report-actuator/tree/feature/fix-test) and this change (https://github.com/creatorKoo/error-report-actuator/pull/1/files)
Can I right way to apply 3.3.3.BUILD-SNAPSHOT ?

It should be released next week, so I would wait for the RELEASE artifact. 3.3.x is the line on which Spring Boot 2.2.x is based, so 👍 on that side of things.

@simonbasle good! :)
I would wait for the RELEASE version and would apply it.
Thank you for your help.

In the meantime, as a workaround that should be removed as soon as the reactor-core fix is usable, you can set the task queue limit to 'unbounded' (Integer.MAX_VALUE):
-Dreactor.schedulers.defaultBoundedElasticQueueSize=2147483647

@simonbasle
I report that workaround didn't work. I tested workaround during last week, then error again.
So, I apply 3.3.3 SNAPSHOT version.
I will test during this week. then report again soon.

ok. It's fixed


Problem : ocLazyLoad with UI-Router and Webpack

Hi,
I'm working on a project . i'm using ocLazyLoad and ui-router with webpack to lazyload module but it's not working.
angular 1.6
oclazyload  1.0.9
ui-router 0.3.2

i'm trying to resolve in my ui-router state. what i need to do ?

We have the same setup and it works when adding resolves to the route configuration like follows:
                loadFileComponents: ($q, $ocLazyLoad) => {
                    return $q((resolve) => {
                        require.ensure([], () => {
                            let module = require('crud/file/components.js');
                            $ocLazyLoad.load({name: module.default.name});
                            resolve(module);
                        })
                    });
                },

Hard to understand what is not working for you. Try to supply a plunkr or sample code.

how to handle this with a typescript file?

I don't remember where I took the example from, but the following TypeScript setup works for me, with future state definitions:
import { Ng1StateDeclaration, Transition } from '@uirouter/angularjs';

export const AdminStatePlaceholder: Ng1StateDeclaration = {
  name: 'admin.**',
  url: '/admin',
  lazyLoad: function (transition: Transition) {
    const $ocLazyLoad: oc.ILazyLoad = transition.injector().get('$ocLazyLoad');
    return System.import(/*webpackChunkName:'chunks/admin'*/'../admin/admin.module')
      .then(module => $ocLazyLoad.load(module.ADMIN_MODULE));
  }
};

then in the main file: $stateRegistry.register(AdminStatePlaceholder)
and in the admin.module.ts I define $stateRegistry.register(AdminState) which points to a fully featured state definition
Note: I use System.import because ES dynamic imports do not compile properly yet I believe, even with "module": "esnext" in tsconfig.json file. That, plus the following to fix compiler errors:
// Monkey patch for tsconfig esnext imports
declare global {
  interface System {
    import (request: string): Promise<any>
  }
  var System: System
}

@kamilbrk thank you for your input.
i did also use the "System.import"
Regardless i have some other questions relating to your answers:

return System.import(/*webpackChunkName:'chunks/admin'*/'../admin/admin.module').then(module => $ocLazyLoad.load(module.ADMIN_MODULE));
where is the module name defined? is there a default name?

strange is also that sometimes the lazyloaded controller is loaded properly, and after some times the controller is again missing

vendor.js:274023 Error: [ng:areq] Argument 'myApp.controllers.schedulerCtrl' is not a function, got undefined

where is the module name defined? is there a default name?

Module name is defined in the lazily imported file.
Everything within the /admin folder is in the chunks/admin webpack chunk, only loaded on demand when accessing either /admin/** URLs or admin.** states.
This is using ui-router 1.x with folder-per-module pattern and - warning - it's an exhaustive example...
/src/app/index.ts:
import * as angular from 'angular';
import { MAIN_MODULE } from './main/main.module';
angular.bootstrap(document, [MAIN_MODULE.name]);

/src/app/main/main.module.ts:
import { module } from 'angular';
import uiRouter from '@uirouter/angularjs';
import 'oclazyload';

import { AdminStatePlaceholder } from './main.states';

export const MAIN_MODULE = module('app', [uiRouter, 'oc.lazyLoad']);

MAIN_MODULE.config(['$uiRouterProvider', function ($uiRouterProvider: UIRouter) {
  const $stateRegistry = $uiRouterProvider.stateRegistry;
  $stateRegistry.register(AdminStatePlaceholder); // <- register future state definition
}]);

/src/app/main/main.states.ts:
import { Ng1StateDeclaration, Transition } from '@uirouter/angularjs';

export const AdminStatePlaceholder: Ng1StateDeclaration = { // <- future state definition
  name: 'admin.**',
  url: '/admin',
  lazyLoad: function (transition: Transition) { // <- this is where magic happens
    const $ocLazyLoad: oc.ILazyLoad = transition.injector().get('$ocLazyLoad'); // <- get hold of ocLazyLoad

    return System.import(/*webpackChunkName:'chunks/admin'*/'../admin/admin.module') // <- let webpack know to split this into a separate chunk & dynamically import it
      .then(module => $ocLazyLoad.load(module.ADMIN_MODULE)); // <- once it's loaded, add the angular module to runtime with ocLazyLoad
  }
};

/src/app/admin/admin.module.ts (lazy loaded in chunks/admin.js):
import { module } from 'angular';
import { StateRegistry } from '@uirouter/angularjs';

import { GeneralComponent } from './general/general.component';
import { AdminState, GeneralState } from './admin.states';

export const ADMIN_MODULE = module('app.admin', []); // <- angular module name defined here

ADMIN_MODULE.component('general', GeneralComponent);

ADMIN_MODULE.config(['$stateRegistryProvider', function ($stateRegistry: StateRegistry) {
  $stateRegistry.register(AdminState); // <- register the full state definition
  $stateRegistry.register(GeneralState); // <- and others alongside it
}]);

/src/app/admin/admin.states.ts (lazy loaded in chunks/admin.js):
import { Ng1StateDeclaration } from '@uirouter/angularjs';
export const AdminState: Ng1StateDeclaration = { // <- full state definition
  name: 'admin',
  url: '/admin',
  redirectTo: 'admin.general'
};
export const GeneralState: Ng1StateDeclaration = {
  name: 'admin.general',
  url: '/general',
  component: 'general'
};

/src/app/admin/general/general.component.ts (lazy loaded in chunks/admin.js):
import { GeneralController } from './general.controller';

export const GeneralComponent = {
  controller: GeneralController,
  template: `This is general settings page.`
};

/src/app/admin/general/general.controller.ts (lazy loaded in chunks/admin.js):
export class GeneralController {
  static $inject = ['$http'];
  constructor (private $http: ng.IHttpService) {
    console.log('GeneralController here');
  }
}

I must say that this example is fairly immature. I am new to TypeScript and have given up on using namespace pattern that I can see  in your example (module suiteApp.controllers) in favour of "modules": "esnext", import/exports and latest techniques for everything.
I spent way too much time, unsuccessfully, trying to sort out type definitions using latest version of TS and @typings npm packages, but with "modules": "none". I'd probably recommend the same or stick to old-school setup without @types.

now am i suposed to rewrite EVERY controller i lazyload to this? :

I am not sure if you would have to rewrite all files to the format you mentioned, but with my ES2015 TS+Babel setup I sure don't have any missing controller errors. I define my controllers and other elements per file and then import them in the parent xyz.module.ts file. I just have to make sure that export/import statements are in place and webpack sorts out everything else.
ocLazyLoad website has some links to webpack-based examples in the documentation section, I'd recommend to check them out.

@kamilbrk Thank you for the examples, did you ever tried to lazyload typescript files via webpack?
It works "--watch", but the problem with that is that when you update the typescript file (lazyloaded) it loads the js file (or it gets compiled), but after that when you change the Typescript file again, webpack recognize the change and starts build successfully, but the chunk is not recompiled it is still the same chunk ?
Regards, Ben!

@kamilbrk when "ChunkManifestPlugin" is in use typescript chunks dont get updated, dont know why, but this explains my question above.


Roll Flutter Engine to 637e921.

This roll includes the following commits.

flutter/engine@637e921d6: Use the raster cache when rendering screenshots as bitmaps
flutter/engine@a23fa923c: Look for an assets path specification in the Info.plist.


QUnit crashes if promise is rejected without arguments

In case of a failing test when a promise gets rejected, QUnit crashes internally with a  null reference.
This can be reproduced using this snippet:
QUnit.test("QUnit shall handle failing tests properly", function(assert) { 		var resolve = function(){}; 		var reject = function(){}; 		var promise = new Promise(function(_resolve, _reject) { 			reject = _reject; 		}); 		reject(undefined); 		return promise; 	});
The crash happens here:
	resolvePromise: function( promise, phase ) { 		var then, resume, message, 			test = this; 		if ( promise != null ) { 			then = promise.then; 			if ( QUnit.objectType( then ) === "function" ) { 				resume = internalStop( test ); 				then.call( 					promise, 					function() { resume(); }, 					function( error ) { 						message = "Promise rejected " + 							( !phase ? "during" : phase.replace( /Each$/, "" ) ) + 							" " + test.testName + ": " + ( error.message || error ); 						test.pushFailure( message, extractStacktrace( error, 0 ) ); 						// Else next test will carry the responsibility 						saveGlobal(); 						// Unblock 						resume(); 					} 				); 			} 		} 	},
The error object is undefined, hence error.message will fail.
Best, Thomas

I'll investigate this weekend, unless someone beats me to it. Thanks for the report!

@tbiesemann I've edited the original post to preserve your whitespace and code formatting a little better-- hope that's okay. In future, you can just use three backticks and a language identifier ("js" for JavaScript) and then your spacing is preserved.

Fixed via #1041.


Hi! When we should set d_state=64?

According to most cv paper(like vim), they commonly set the d_state=16. But I wonder if d_state=64 should be attached with the number of tokens

@CacatuaAlan  did you try running with d_state=64? Did it massively increase the parameters and memory required?

@CacatuaAlan did you try running with d_state=64? Did it massively increase the parameters and memory required?

They do happen when I try d_state=64 or even 128 which shows "out of memory", but I have a quite big #tokens like 50k


[UI] Database Reset: Confirmation Modal - Make Reset button red

Current Behavior

Desired Behavior
The Reset button in the screenshot should be dark red (using the color from Meshery's design language).

Contributor Guides and Handbook

🎨 Wireframes and designs for Meshery UI in Figma
🖥 Contributing to Meshery UI
🙋🏾🙋🏼 Questions: Discussion Forum and Community Slack

hey @leecalcote  If no one is working on, i would like to fix this.

Hi @kumarvikramshahi, sure you can work on this, before assigning I would like to confirm you have Meshery set up locally right?

yes, perfectly.


Add references to additional sampler/composites

Dimod part of fix for https://github.com/dwavesystems/dwave-system/issues/380.
Also makes content lists of samplers/composites look nicer

Codecov Report

Merging #775 (e203405) into main (f4d2744) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #775   +/-   ##
=======================================
  Coverage   91.81%   91.81%
=======================================
  Files          63       63
  Lines        4667     4667
=======================================
  Hits         4285     4285
  Misses        382      382

Continue to review full report at Codecov.

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

Codecov Report

Merging #775 (e203405) into main (f4d2744) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #775   +/-   ##
=======================================
  Coverage   91.81%   91.81%
=======================================
  Files          63       63
  Lines        4667     4667
=======================================
  Hits         4285     4285
  Misses        382      382

Continue to review full report at Codecov.

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


upgraded MAVEN version for additional tests

due to conflicts that I couldn't resolve (it didn't work git rebase --continue after correcting conflicts) and because of the loss of time to get this sorted out I prefer to do a new PR


crash when middle downloading

i don't know why sudenly the app crashed when i midle of downloading pict from safebooru !
the image around 31k

From the number of images, it sounds related to a memory leak that ate your RAM.
Do you have any crash dump file?

yeah i think so !
grabber app eat half of my ram usage [around 4-5gb]
where the crash dump file ?
2016-08-21 20:56 GMT+07:00 Jack Vasti<EMAIL_ADDRESS>
From the number of images, it sounds related to a memory leak that ate
your RAM.
Do you have any crash dump file?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Bionus/imgbrd-grabber/issues/584#issuecomment-241259129,
or mute the thread
https://github.com/notifications/unsubscribe-auth/APTpsQUOJDOPq6w--ad5a4At4aL-kGChks5qiFkUgaJpZM4JllPu
.

--
falsa.m.r is an OTAKU

Let's move the discussion to #547 which is the same issue.
A crash dump is unnecessary if the crash is random and during big batch downloads.


Undo

User should be able to undo actions.

What kind of actions are we considering undoable? Just ones that make calls to verovio and change the resulting MEI? Changes to the view (zoom, panning)?

I don't think we need to be able to undo any type of display controls (zoom/opcacity/syllable text). We can limit it to actions that make or will make calls to verovio: dragging, inserting, grouping, merging systems and changing attributes.

Undo/redo functionality added to develop in #91. Will close the issue once we add undo/redo buttons.


Support custom ContractResolver in GetItemLinqQueryable

According to this comment
https://github.com/Azure/azure-cosmos-dotnet-v3/blob/776af4be89a6ececda78f5454c40fda95336e9db/Microsoft.Azure.Cosmos/src/Linq/ExpressionToSQL.cs#L502
"There are two ways to specify a custom attribute", but it is not true.
There is a third way to do that:
I can create custom DefaultContractResolver and override CreateProperty method and then return JsonProperty with Converter proeprty
Change request:
Now we can use custom CosmosSerializer and support it for serialization\deseriazliation, but GetItemLinqQueryable doesn't not respect it
Could you please support custom DefaultContractResolver for GetItemLinqQueryable method?
Why do we need it:
We have 2 assemblies:

public interfaces: models + abstract repository interface, zero dependency approach
Implementation for repository < cosmos client nuget reference

Now we have to use attributes, but would be better to use ContractResolver that allow us separate flat models from implementation detals (+ it allow us to go in future to system.text.json serializer without changing public interface)

@timsander1 can you please take a look?

Hi @Romfos, thanks for bringing this up! I can confirm this is not supported now, but it's something we can look into supporting in the future


Support for React-window

This library is awesome, was searching for react-table 7 with sticky columns and found this one! 👏 👏 . I need to ask if there is support for react-window with sticky columns or maybe an example? I'm trying to combine react-table + this library + react-window but apparently the react-window styles mess with the styles from this library as far as I can see.
Any recommendation? advice? Maybe it's in the roadmap?
Thanks.

Hi @engPabloMartinez
Thanks for your feedback ! :)
I will take time to check how the sticky hook can work with react-window.
Does react-window works well alone with react-table v7 ?

Thanks for your answer, Yes it does.
https://react-table.js.org/examples/ui#virtualized-rows-react-window
I didn't have time this past weekend to do more test and research. Will try to make time this week as well.

@GuillaumeJasmin This library is awesome!  Support for React-Window would be fantastic!

react-window and react-table-sticky seems incompatible because react-window add 2 new levels of <div> that break the native scroll on the root element <div className="table">.
That's why the table is broken, because sticky css property can't be apply. I haven't any clean way to fix it now.
I started an IE 11 support few weeks ago (not ready yet) because sticky css property doesn't work on IE 11, and I think this fallback is the only way to make it work with react-window, but it' a fallback and the user experience is bad because the scroll is not smooth.

Do you have any more information regarding what workaround I could try to use when using virtualized tables? Such as what styles to apply and whatnot?
I don't really care about jankiness of the scroll currently.

I also encountered the same problem, can you provide a temporary solution? Thanks.

@GuillaumeJasmin

@linxu here is a temporary solution: https://codesandbox.io/s/dazzling-field-48x39?file=/src/App.tsx
If you're using the FixedSizedList from react-window you and use the innerElementType prop to render the header, body and footer. I have it working with the header but not the footer.

@jerrywithaz I tried the temporary solution and it works perfectly.
But, the first two rows of the table body are hidden behind the header. It's the same in the sandbox link as well.
Is there a way to fix this?

@elaine0304 ah yes, so when you're rendering your row, I think there's a row method called row.getBodyRowProps() that is responsible for setting the table styles i.e. the row position. You need to extract the css top position for each row and add the height of your table header. So let's say the height of your table header is 50px, then you'll want to add 50px to every table row. So, the first table row won't start at 0px it will start at 50px instead to account for the header height.

@linxu here is a temporary solution: https://codesandbox.io/s/dazzling-field-48x39?file=/src/App.tsx
If you're using the FixedSizedList from react-window you can use the innerElementType prop to render the header, body and footer. I have it working with the header but not the footer. The problem with react window as you all have mentioned is that it adds 2 wrapping div elements. So, you can use the innerElementType to overcome that and render your own custom ui

Awesome solution! If you mainly just want a header or footer for your table, this seems like a more straightforward approach that react-window's sticky row solution.
Only addition I would suggest is using useCallback for better performance.
E.g.
<FixedSizeList
    ...
    innerElementType={TableWrapper}
>

Where TableWrapper is:
const TableWrapper = React.useCallback({ children, style, ...rest }: any) => { yourComponent }

@jerrywithaz @CuriousMark Cool, thank you for your response.

@linxu here is a temporary solution: https://codesandbox.io/s/dazzling-field-48x39?file=/src/App.tsx
If you're using the FixedSizedList from react-window you can use the innerElementType prop to render the header, body and footer. I have it working with the header but not the footer. The problem with react window as you all have mentioned is that it adds 2 wrapping div elements. So, you can use the innerElementType to overcome that and render your own custom ui

Is there a way to make this work without using infinite-scroller, and instead with virtualized rows?


fix(size): Pinning files under 1 MB

:tada: This PR is included in version 1.1.1 :tada:
Your semantic-release bot :package::rocket:


chore: Adjust cargo dev-taker config

We removed legacy networking port recently; 10000 is the only port maker is
listening on now.
I grepped for the port when I was removing 9999 recently, but rg by default ignores hidden files ;/

bors r+


Same fendermint docker image to contain both fendermint and ipc-cli

In this PR, we put ipc-cli in the fendermint docker image.
We can keep using docker run for fendermint images like previously. At the same time, we can also run
docker run <image> ipc-cli to access to ipc-cli and its subcommands.

Can you please add a description?

Referen

Done.

This is missing the entrypoint script to dispatch to the Fendermint or ipc-cli executable. It is also missing the push to both the fendermint and ipc image repos in from the GitHub workflow.

Fixed as you suggested.

This is missing the entrypoint script to dispatch to the Fendermint or ipc-cli executable. It is also missing the push to both the fendermint and ipc image repos in from the GitHub workflow.

There is only one fendermint images, not two images. So all existing auto-push workflow should work.

@aakoshh @raulk Can you review this PR when you get a chance? Thanks!


Ros2 humble

In addition to Hatem's contributions, this forked branch contains updated requirements.txt, relevant .egg file and 2 modified files which enable '2D Pose Estimate'

Hi Hatem, if you can see this pull request please ignore it. I've created/modified you repo for personal convince


Center justifying is problematic for readability in Guided Assistant

Center justifying is problematic for readability in Guided Assistant
Issue submitted by Jeannie Sato (AK)

@KellyeDC - Because this appears to be a design change, I'd like to save it for the governance board and put it on the first agenda.

@KellyeDC Agreed. Fell Swoop must have done this for a reason. I'd like some expert input on this. Perhaps I could reach out to Maria Mindlin at Transcend and see what they advise.


Job add "domain" field

Describe the task
We need to capture a new field called "domain" for a job that will allow us to make better data analytics and reporting.
Expected behavior
In the form to create a new job or when editing a job, there should be a new field labeled "Domain" that will be a select field. It will have these options:

Engineering
Design
Marketing

@am-Anmol when I update the domain field, it deletes the job and shows a message saying job_name deleted successfully. Please check. I'm testing on UAT

@rathorevaibhav This is a bug that is coming before adding the domain field and that's why I have created issue #845 for it.

This looks good on UAT. Closing.


Could use a function to deactivate doubletaptogo after it has been called

I'd like to use this on a responsive site. On iPad landscape the desktop type nav shows and i need doubletaptogo. But on iPad portrait the mobile type drawer nav shows that has big buttons to open sub navs. So in the cases where someone goes from landscape to portrait I need to remove doubletaptogo from the elements i initialised it on.
Simply i'd like to be able to do something like:
On window size change
Check the size of the window width
If window width is large, activate doubletaptogo
If window width is small, deactivate doubletaptogo on the same items.
my code to initialise is:
$( '.has-subnav' ).doubleTapToGo();
it would be nice to be able to do somthing like:
$( '.has-subnav' ).doubleTapToGoOff();
or
$( '.has-subnav' ).doubleTapToGo(false);
I could then use this function within my $(window).resize(.... logic.

Let me see what I can do.

Please check out Release 0.3.
https://github.com/zenopopovici/DoubleTapToGo/releases/tag/v0.3
I had no way to test it out but it should work.

Thank you very much.
I'll test out the new code in the next couple of days.

Any news?

Assumed fixed.


Add -h alias for --help

Can this be added? Most Go programs seem to have at least -h. It's the first thing I always try because it's shorter. Kingpin makes this easy to add. (I realize this is the nit-pickiest thing in the world. Sorry!)

You can add this yourself with: kingpin.HelpFlag.Short('h')

I assume this means you're open to merging this kind of change?

No, it exists already for exactly this purpose actually...someone else had the same request.

Are you suggesting I fork this locally and run my own build with the change? I'm confused what I can do with a line of Go and an installed binary that I go-getted. I was proposing a change that would be reflected on everyone's future installations of gometalinter.

Ah, no I would not want that to be the default as there's no way to override short flags once they're added.

Sorry... I completely brain farted. I thought this issue was on the Kingpin repo!
For gometalinter, yeah I'd be fine with adding -h. Sorry about the confusion.

Woops, sorry, didn't see that you left it open. Reopened.

PR?

Sorry, will do shortly.

It appears gometalinter uses gopkg.in/alecthomas/kingpin.v3-unstable, for which kingpin.HelpFlag.Short('h') is invalid. I don't see any way to add a short variation for the help flag using that package. It seems like the help flag is baked into that kingpin package somehow? Not sure how to proceed.

Ping


Update zh-HANS.coffee

Coverage increased (+0.007%) to 53.675% when pulling 3ff0d84d14ce90f13a123c23a3ad0990266be17b on kumabotz:patch-2 into 31df948568617e256e07c73109643d5dd76162cd on codecombat:master.

Thank you, @kumabotz!


feat(QwikCityMockProvider): add optional goto prop

Overview

What is it?

[ ] Feature / enhancement
[ ] Bug
[x] Docs / tests / types / typos

Description
While trying to run a Cypress e2e test based on a storybook, I've challenged an issue due to the thrown error of the goto function not implemented in QwikCityMockProvider.
In order to tackle, I've moved the error to a warning. On top of that I've added an optional prop that allows users to pass a custom goto function.
Checklist:

[x] My code follows the developer guidelines of this project
[x] I have performed a self-review of my own code
[x] I have made corresponding changes to the documentation
[ ] Added new tests to cover the fix / functionality

Nice, could you document an example of how to use it?

I've made an update, Is it what you expect?

I've made an update, is it what you expect?

Well, I was hoping for something that people new to Qwik would be able to easily understand, showing how to use it in their tests.

I've made an update, is it what you expect?

Well, I was hoping for something that people new to Qwik would be able to easily understand, showing how to use it in their tests.

Here it is!

@alexismch great, thanks! I do notice you replaced the error with a console log, shouldn't it remain an error?
Also, the log doesn't say where the log comes from, whereas the Error would show the stack, so even if logging is preferred it would still need a change.

@alexismch great, thanks! I do notice you replaced the error with a console log, shouldn't it remain an error?
Also, the log doesn't say where the log comes from, whereas the Error would show the stack, so even if logging is preferred it would still need a change.

I effectively moved to a warn in order to avoid blocking the code after the navigate to be executed. And so not restrict people to always define a goto fn. What do you think?

I extended the log message a little. Looks good, thanks!


regression - return/enter on wallet creation - password step

Environment

Smapp version: 0.3.4 |  pr1226, 1234
Node version:
OS: any

Describe the bug
hitting Return / Enter on the CREATE YOUR WALLET step

doesn’t proceed to the next screen
❗does create a new wallet file each time we hit Enter/Return
if the Verify Password input field isn't focused, hitting Return/Enter doesn’t work

https://github.com/spacemeshos/smapp/assets/89876259/ae8214f3-3c03-405b-a802-861b7a871df7
Steps to reproduce

Open SMAPP and start to create a new Wallet
Pn the 4th screen, CREATE YOUR WALLET, put any password, and move to the next field (tab or cursor click)- repeat the password correctly in the verification field. Don’t "unclick" this field, keep it focused.
Click Return / Enter
Click anywhere on the screen to deactivate the password verification field and click Enter again

Expected behavior
If a password is correctly set, clicking Enter/Return should create a new Wallet and at the same time move the User to the next screen. Additionally, it shouldn’t work only if the input field is active. Having this screen open, hitting Enter should always try to trigger the [NEXT] button action.
Actual behavior
as explained above
Logs
How to fix

I don't think we need to listen for ENTER keypress anytime being on this screen.
But both input fields should listen for it. Also, the first input should have an autofocus.
In other words:

First input should be focused by default
Pressing ENTER, while any of the inputs are focused, should lead to the next screen
There should be no different handlers for the ENTER keypress and the next button

Totally agree.
And additionally, I would suggest rephrasing 'Create your wallet with a password. You will need it to access latter', cause it's not super correct and not bringing too much of the added value.
Maybe "With this step, your Wallet will be created. Set up a password you will be using to access it later. Remember, there will be no way to recover the lost password."
WDYT?


Options for export files

When user click export project, show a checkbox to allow then to choose whether to export the imported documents too, or to export the project without data. The option can be called Include input documents

import / export is only for project config, no data is included.


[Feature Request] Add option to run a startup-command

Today the 'run' parameter runs a command and exits WSL immediately.
It would be nice to have a similar option which runs a startup-command. This could be used for example to 'cd' directly into the current directory of the Windows CMD console.

From what I confirmed, I was able to convert non-C hard drives.
Maybe you can't convert a manually mounted one.

You can use any script for path conversion by replacing wslpath.

It is recommended that you replace the wslpath command.

I've looked for the newest wslpath binaries, but with no success. Can you point me to the newest version?

I decided not to implement this in wsldl.
Please devise command line parameters.
Alternatively, you can change the default shell with chsh.


Fix regression in artifact-attestations-step-for-container-images.md

Why:
Fixes regression where the reusable artifact attestations step example was accidentally broken by a commit that replaced dashes with asterisks.
Commit that broke example: https://github.com/github/docs/commit/0886a399f07aedae418d587873ffc6c0810ae7eb
What's being changed (if available, include any code snippets, screenshots, or gifs):
Swapped an asterisk in a GitHub actions step example with a dash.
Check off the following:

[ ] I have reviewed my changes in staging, available via the View deployment link in this PR's timeline (this link will be available after opening the PR).

For content changes, you will also see an automatically generated comment with links directly to pages you've modified. The comment won't appear if your PR only edits files in the data directory.

[ ] For content changes, I have completed the self-review checklist.

This seems to be a bit more complicated to solve than I initially thought.

The attestation step reusable file seems to be the only file that contains only YML.
The markdown linter configured for the project will throw a fit if you use a dash -
The templating system does not appear to recognise other extensions than md, so renaming the file to use the yml extension is no good

Not really sure how to solve this, so closing my PR and will add an issue instead so that the core contributors can fix it.


[lc_ctrl] Add 32bit hardware revision register

This addresses #11605.

@alphan would this cover your needs?
@cindychip I think this should be easy to test, right?

@alphan would this cover your needs?
@cindychip I think this should be easy to test, right?

@cfrantz's example here has two fields: chip generation and revision. It would probably be nicer if we had two fields in the register if you agree.

@alphan would this cover your needs?
@cindychip I think this should be easy to test, right?

@cfrantz's example here has two fields: chip generation and revision. It would probably be nicer if we had two fields in the register if you agree.

yeah two fields is fine with me.

Thanks for all the comments - I have split this into two 16bit fields now.

@alphan, does this split into 16bit field work for the SW side?

@alphan, does this split into 16bit fields work for the SW side?

It does, thanks @msfschaffner! (I think the first usage of this will be the device id byte for bootstrap, where the fields will be smaller because we try to fit them into a single byte.)

Merging now because this was also approved by HW folks.


NPM dependencies stop working

Moved from https://github.com/aspnet/Docs/issues/4547. Originally logged by @BlanketGuy.

I've been having a lot of trouble with the dependencies when creating a project with the Angular template on VS 2017.
First I had to install all the npm packages one by one, and some of them stopped working out of the blue.
Every time I fix something and re-open the project, something else stops working. Anyone else had this problem? How did you solve it?

We'd really need specific repro steps to be able to do anything with this report. I'm not aware of there being a general issue of "Every time I fix something and re-open the project, something else stops working".
@BlanketGuy, could you post repro steps?

Closing because there is not enough information to reproduce this problem.


wysiwyg newline issues

newlines between text are removed on save (not sure if this is quill or the paragraph's fault)
extra newlines are added to multi-line inputs when the form opens (blockquote)

fixed in commit 52fcba4


Bump-up zerolog library

Description
Bump-up zerolog library
Type of change

Bump-up dependent library (no changes in the code)

Testing steps
To be done on CI.
Checklist

[ ] make before_commit passes
[ ] updated documentation wherever necessary
[ ] added or modified tests if necessary
[ ] updated schemas and validators in insights-data-schemas in case of input/output change

Codecov Report
Patch and project coverage have no change.

Comparison is base (c8869c2) 59.75% compared to head (ad02484) 59.75%.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #211   +/-   ##
=======================================
  Coverage   59.75%   59.75%
=======================================
  Files           7        7
  Lines         907      907
=======================================
  Hits          542      542
  Misses        326      326
  Partials       39       39

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Add a framework for translations

Add support for other languages. I haven't looked into it yet, but I expect there's a framework or a standard way to do this for a single page React app, and we should use whatever tools we can that already exist and are common.

Let's use https://react.i18next.com/

looks good!

I see it is built in a modular fashion, with a number of plugins for specific tasks. For example there is a plugin that allows you to scan the source files in order to pull out all the translation strings into  an i18next json file (https://github.com/i18next/i18next-parser).
i18next json files can be converted to gettext format which is quite useful: https://github.com/i18next/i18next-gettext-converter . Because when it comes to handling a certain number of translation strings, especially if changes are made to the source files and translation catalogues need to be updated, you really need a platform to help handle this. i18next is pushing locize.com but locize.com is a paid service. There are plenty of free tier services out there for handling this kind of task, for example https://poeditor.com/ which I've used in some of my projects. If the project is open source, usage of the service is free.

Looks like there's another plugin for pulling translations in from an i18next json file: https://github.com/i18next/i18next-http-backend . Gettext .po files can be converted back to 18next json and then used in the app as language bundles.

We're making progress on this!
I've merged code to main that puts a framework in place for our use of i18next.
Roughly, my plan from here is:

Move all English strings to the translation file.
Add one or more additional languages.
Add languages to a language switcher as they become available.

I believe all English strings are now in the translation file. At this point, we should be able to support new languages simply by adding a translation file for them :smile:

Great! I started connecting with my weblate instance. However it will probably need permissions to create the weblate branch and open PR's from the weblate branch to the main branch. Also it would be nice to enable the webhook to https://translate.johnromanodorazio.com/hooks/github/ in the repository settings so that new translation strings will be picked up automatically.

I believe the weblate instance is linked to my Github username @JohnRDOrazio , so in order for weblate to push translations to a weblate branch and open a PR, the user @JohnRDOrazio needs push rights to the repo. (I would still continue using my own fork for any code contributions I might make.)

Perhaps to make life easier for future development, if any translation strings are added or removed or changed in the source code, instead of manually updating the source language file, an automatic scan could be set up which will update the keys of the language files based on the source code.
I accomplished this in a repo in the Liturgical Calendar project, by setting up a Github workflow that uses i18n-scanner:
https://github.com/Liturgical-Calendar/examples/blob/main/.github/workflows/npm-gulp.yml
I based myself off of an example that used gulp, though I have never used gulp and am not familiar with it. I had to create a gulpfile in the repository:
https://github.com/Liturgical-Calendar/examples/blob/main/gulpfile.js
I'm pretty sure the same can be accomplished without gulp, simply using the CLI version of i18n-scanner.


fix: remove dotenv

PR summary
Remove leftover dotenv imports and use the internal read_external_sources where needed.
PR Checklist
Please make sure that your PR fulfills the following requirements:

[x] The commit message follows the Angular Commit Message Guidelines.
[x] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

Current vs new behavior

Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

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


Added Linear Search in Python.

Time Complexity: O(N)

@Anagha-2000 Linear Search has already been implemented. But we have more issues here. Please see if you can contribute to something else. Thank you :)


Split Rakugo.parse_script(file_name), so user can start script from different label

# Instead of having this, that parse and excecute script:
Rakugo.parse_script(file_name)

# We could split this to 2 funcs:
var parsed_script = Rakugo.parse_script(file_name)
Rakugo.excute_script(parsed_script, "label_to_start_from")
# if label_to_start_from == "" then it excute script normally

Linked with #84


Notification Icon

Configuration
System:
    OS: Windows 10 10.0.18363
    CPU: (8) x64 Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
    Memory: 2.28 GB / 7.73 GB
  Binaries:
    Node: 12.16.1 - C:\Program Files\nodejs\node.EXE
    Yarn: Not Found
    npm: 6.13.4 - C:\Program Files\nodejs\npm.CMD
    Watchman: Not Found
  SDKs:
    Android SDK: Not Found
  IDEs:
    Android Studio: Not Found
  Languages:
    Java: 1.8.0_171 - C:\Program Files\Java\jdk1.8.0_171\bin\javac.EXE
    Python: Not Found
  npmPackages:
    @react-native-community/cli: Not Found
    react: 16.11.0 => 16.11.0
    react-native: 0.62.1 => 0.62.1

What react-native-track-player version are you using?
1.2.2
Issue
Can't reconfigure notification icon.
Code
await TrackPlayer.setupPlayer().then(() => {
                    TrackPlayer.updateOptions({
                        stopWithApp: false,
                        capabilities: [
                            TrackPlayer.CAPABILITY_PLAY,
                            TrackPlayer.CAPABILITY_PLAY_FROM_ID,
                            TrackPlayer.CAPABILITY_PAUSE,
                            TrackPlayer.CAPABILITY_STOP,
                            TrackPlayer.CAPABILITY_SKIP_TO_NEXT,
                            TrackPlayer.CAPABILITY_SKIP_TO_PREVIOUS,
                            TrackPlayer.CAPABILITY_JUMP_FORWARD,
                            TrackPlayer.CAPABILITY_JUMP_BACKWARD,
                            TrackPlayer.CAPABILITY_SEEK_TO
                        ],
                        notificationCapabilities: [
                            TrackPlayer.CAPABILITY_PLAY,
                            TrackPlayer.CAPABILITY_PAUSE,
                            TrackPlayer.CAPABILITY_STOP,
                            TrackPlayer.CAPABILITY_SKIP_TO_NEXT,
                            TrackPlayer.CAPABILITY_SKIP_TO_PREVIOUS,
                            TrackPlayer.CAPABILITY_SEEK_TO
                        ],
                        jumpInterval: 10,
                        icon: require('./assets/AppLogo.png')
                    });
});

Whats the resolution of AppLogo.png? Does is have an alpha channel? Is it square? Can you send the icon file so we can take a look?

Whats the resolution of AppLogo.png? Does is have an alpha channel? Is it square? Can you send the icon file so we can take a look?

The dimensions are 487x464, so nearly square. Not sure what an alpha channel is, nor how to check for it. Here's the image:

It needs to be an exact square, and the shadows might also be an issue, it needs all colors to be either fully transparent or fully opaque. Also, that's a pretty big icon, you should provide a smaller (up to 92x92).
Finally, Android also recommends a solid white icon over a transparent background.

It needs to be an exact square, and the shadows might also be an issue, it needs all colors to be either fully transparent or fully opaque. Also, that's a pretty big icon, you should provide a smaller (up to 92x92).
Finally, Android also recommends a solid white icon over a transparent background.
Edit: This online tool may help you convert the icon to fit the requirements

@Guichaguri I tried using the online tool and it still did not work. I've tried pasting my own logo without shadows, as well as using the Clipart and Text generating templates there with no luck. Do you have any other tips as to what might be causing the issue?

@Guichaguri , does work in debug mode?
It's not working for me either. I can see that the code makes it to getIcon, but defaults to the default icon because it doesn't pass this part:

It does work in release builds.
@lnickdnguyen have you tested a release build?

It does work in release builds.
@lnickdnguyen have you tested a release build?

Yes, I just tried it today and it works! Thank you so much for you help!

A small transparent icon works indeed. I had mistaken the artwork graphic, which is much bigger (like the size of the launcher app icon) for the notification icon.


Composite PK

Hey guys. Good work!
But why I need extra id from Django standart ORM?
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
If I want a composite PK: time+id, I will have to use raw sql, because it's not recomended use composite PK in Django ORM?
Could you please share your thoughts about it?

I use Django ORM like this:
class Meta:
unique_together = ('time', 'sensor')
managed = False
To insert data in db I use raw SQL.

I have the same problem, by default django create id column as primary key. @schlunsen if I understood correctly this should be avoided, right?
is managed=False the right way to follow?


Make public "base.object_manager_provider" and "base.object_repository_provider" services

Q
A

Branch
master

Bug fix?
no

New feature?
no

BC breaks?
no

Deprecations?
no

Tests pass?
yes

Fixed tickets
n/a

License
MIT

Doc PR
n/a

See description at #45.

@phansys thanks for this PR.
Why would you make public both services?
If you need any other object_manager or repository, you should use DIC + Factory pattern

I think the need is not on my side. This bundle is providing a trait which expects these services to be publicly available:
https://github.com/mmoreram/BaseBundle/blob/1fddb7313d01883cf9efde658a3eefc2bf69ea30/DependencyInjection/BaseContainerAccessor.php#L77-L84
https://github.com/mmoreram/BaseBundle/blob/1fddb7313d01883cf9efde658a3eefc2bf69ea30/DependencyInjection/BaseContainerAccessor.php#L93-L100
Please, let me know if I'm missing something.
Thank you.

@phansys the new version of BaseBundle drops the support for doctrine, and version 1 is not longer supported. Feel free to fork the repository if you need any fix :)

Thank you!


Small fix to match info in types.ts

Changed start_url to start_url + '?standalone=true'

this can be configured from user land, why do we need this default?

That was written in types.ts in @default value so I just changed it to match. If dafault should be clean base than let me change it in types.ts instead. :smile:


fix: init function to be lowercase so that it's automatically executed

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


Resize and optimize some GIFs

This is the result of running Gifsicle on all GIFs greater than 5MB, resizing them to 800px wide (the width at which they're rendered in the blog) and running Gifsicle's built-in optimizer. Wins back about 120MB worth of space.
For reference, the command was:
find themes/default/content/**/*.gif -type f -size +5M | xargs gifsicle --resize-width=800 --optimize=3 --batch

Also adds a bit to the blogging README showing how to do this for individual files going forward.
Fixes https://github.com/pulumi/docs/issues/8220 ... I think?

might be worth having @meagancojocar do quality checks on a few of these to make sure they still display well.

I spot-checked all of these and they all look pretty good to me, so merging for now. If something looks less than great, though, we can always come back and re-run Gifsicle on individual files with different settings.


Different context menu for different nodes

Hi,
As said in the title, how can I achieve that?
Currently every node will have the same context menu when I enable the 'contextmenu' plugin. This should not be the case, as there will be different operations for different nodes.
Ideally, I should be able to create node like this:

var childNode = new TreeNode( {
                                       'text': 'a',
                                       'id': 'a',
                                       'contextmenu': [{
                                         label: 'Hey',
                                         action: function( ... ) {
                                           alert('Hey');
                                         }
                                       }, {
                                         label: 'Blah',
                                         action: function( ... ) {
                                           alert('Blah');
                                         }
                                       }],
                                      } );

parentNode.add( childNode );

Any help is highly appreciated.
PS. I made some changes on vanillatree with this features, as shown in
https://www.secform4.com/rsc/vanillatree/demo.html

I have managed to create different context menu by assigning different type to the node, then check the type and create the related menu.
Thank you and great project!

See previous note.


Make timeout_in_seconds a parameter

Some slow servers or unreliable network links need a little more time than the default hard coded value of 2 seconds.

@awainer Thanks :+1:
Its all merged now, I moved it around a little bit to make sure the tests pass.


Updating data: only the changed / added rows

Hi,
Thanks for this package!
I made an addition to the it in order to update the rows that have been changed or added. It works by specifying the rowId option. Default is false and if not set it works with the old method. If a unique rowId is set, only the changes are applied.
No changes were made in the readme.

Hi, thanks a lot for the pull request. It looks like a pretty nice solution, much more efficient than destroying the entire table and starting clean.
A couple of questions - does it deal with pagination? If a number of rows were updated while the users was viewing page 6, do the users stay where they were?
Does this change limit the data structure in some way? E.g. If we were previously able to use arrays and objects can we only use objects now?
Why do we need to pass a row ID? I thought datatables had an internal representation of that itself (I could be wrong, I'm definitely not a datatables pro, in fact I've hardly even used this datatables package in about 18months myself)
There some stylistic things that I'd probably want to clean up myself if we choose to go ahead with this PR. Also would you be comfortable updating the readme in the case that we do go ahead? It'd be a shame to merge this code without an indication of how to use it

See the question (and answer) here about rowID:
https://github.com/ephemer/meteor-reactive-datatables/issues/31

@cdolek any news on this? I don't want to leave this hanging but would also like some clarity on the questions above before it gets merged

Hi,
Sorry for the late reply.

Thinking about the way data is being handled, there should not be problems.

Pull request does not affect the previous behaviour in any way.

Check https://datatables.net/reference/option/rowId rowId option is the name of the resource to be used for rowId. It would be cool to be able to tell the table what id should be used for the rowId (It may not be _id for example). If the rowId was not set, it defaults to previous updating method. rowId has to be set in order to be able to match incoming data and the data being stored in the table.

Let me know if you need any further information.
Cheers,
Cenk

@ephemer I committed some fixes and checked the code. It works. As for my last commit, you do not need to specify the rowId - it defaults to collection id - "_id".
In the future there will be a need for updating the .rendered fn because it is deprecated.

Sorry I don't have the time to go over the requested changes, I may get back to it on my free time someday. Closing the pull request.
Thank you

@cdolek sorry if my suggestions came across as demanding, I'm interested in your changes but as an open source package we have a responsibility not to break people's apps. This is also something I'm doing in my free time, as I said, it's been a couple of years since I've used the package myself. Thanks either way for your time.