Multithreaded rendering in WaveSabrePlayerLib

Since track rendering is inherently parallelizable, let's take advantage of this by dispatching track rendering to one or more worker threads instead of always rendering them in serial.
The result is typically a 40% improvement in rendering speed going from 1-2 cores, with an additional few percent going to 3 or 4 cores (sometimes up to nearly 60%!).
Some concrete measurements for rendering entire songs:

And a bit more visual representation of the rendering being handled by a single core vs several cores:

As expected, we see a slight drop in performance for the single-core case due to the additional overhead, but it's not significant. I don't suspect any user would prefer to use that anyways and we shouldn't have to provide an alternative implementation just for that case; users can always fork the player code and do this themselves if this is absolutely necessary (which is in the git history, and this PR can also serve as a guide to remove it).
Implementation-wise, this only really involves managing a user-defined number of worker threads (3 is used in examples here) and some small administration code, which has been designed to be as lightweight as possible and especially not allocate any memory dynamically. All player types (RealtimePlayer, PreRenderPlayer, and WavWriter) take advantage of this, so even if a user has to pre-render a song (which we offer an option for in our intros), it should still be faster to do so (and possible to allocate different thread counts to that if desired). Note that I would certainly not mind getting some more eyes on this code as I did have some issues getting it to work initially, but I think I've isolated and fixed all of the problems (both here and in isolated minimal reproductions) and this appears to be quite robust now.
To compare size with the new approach, I've packed trashpanda with the single-core approach we had before (effectively matching the public release) and with 3 audio rendering cores. The multi-core executable is 188 bytes larger (60756 bytes before padding, vs 60568 bytes before padding). Admittedly that's somewhat larger than I expected, but still not very significant in terms of a 64k, and more than pays for itself with such a massive performance increase. If you'd like to test this build yourself, I've made it available here.
This PR also introduces some additional small cleanups/fixes (see commits for details). One such cleanup is the introduction of the CriticalSection class which should be a bit easier to use than the win32 API directly, as well as making it easier to implement platform-specific versions of this in the future.

I was thinking that if we do still want to support the single-core case and not spawn extra rendering threads if we don't have to, it's not actually that hard. These should be the necessary changes for that (they look a lot worse than they are really; it's mostly just a couple conditionals):
diff --git a/WaveSabrePlayerLib/src/RealtimePlayer.cpp b/WaveSabrePlayerLib/src/RealtimePlayer.cpp
index 74d2eb7..896c2e3 100644
--- a/WaveSabrePlayerLib/src/RealtimePlayer.cpp
+++ b/WaveSabrePlayerLib/src/RealtimePlayer.cpp
@@ -6,7 +6,8 @@ namespace WaveSabrePlayerLib
                : song(song)
                , numRenderThreads(numRenderThreads)
                , bufferSizeMs(bufferSizeMs)
-               , songRenderer(new SongRenderer(song, numRenderThreads))
+               // This SongRenderer instance is just used for getting temp/sample rate etc, so let's not spawn extra render threads for it^M
+               , songRenderer(new SongRenderer(song, 1))^M
                , renderThread(nullptr)
        {
        }
diff --git a/WaveSabrePlayerLib/src/SongRenderer.cpp b/WaveSabrePlayerLib/src/SongRenderer.cpp
index bdf1808..b4ee89e 100644
--- a/WaveSabrePlayerLib/src/SongRenderer.cpp
+++ b/WaveSabrePlayerLib/src/SongRenderer.cpp
@@ -63,24 +63,30 @@ namespace WaveSabrePlayerLib
                }

                this->numRenderThreads = numRenderThreads;
-               renderThreads = new HANDLE[numRenderThreads];
-               renderThreadShutdown = false;
-
-               for (int i = 0; i < numRenderThreads; i++)
+               if (numRenderThreads > 1)^M
                {
-                       renderThreads[i] = CreateThread(0, 0, renderThreadProc, (LPVOID)this, 0, 0);
-                       SetThreadPriority(renderThreads[i], THREAD_PRIORITY_HIGHEST);
+                       renderThreads = new HANDLE[numRenderThreads];^M
+                       renderThreadShutdown = false;^M
+^M
+                       for (int i = 0; i < numRenderThreads; i++)^M
+                       {^M
+                               renderThreads[i] = CreateThread(0, 0, renderThreadProc, (LPVOID)this, 0, 0);^M
+                               SetThreadPriority(renderThreads[i], THREAD_PRIORITY_HIGHEST);^M
+                       }^M
                }
        }

        SongRenderer::~SongRenderer()
        {
-               // We don't need to enter/leave a critical section here since we're the only writer at this point.
-               renderThreadShutdown = true;
+               if (numRenderThreads > 1)^M
+               {^M
+                       // We don't need to enter/leave a critical section here since we're the only writer at this point.^M
+                       renderThreadShutdown = true;^M

-               WaitForMultipleObjects(numRenderThreads, renderThreads, TRUE, INFINITE);
+                       WaitForMultipleObjects(numRenderThreads, renderThreads, TRUE, INFINITE);^M

-               delete [] renderThreads;
+                       delete [] renderThreads;^M
+               }^M

                for (int i = 0; i < numDevices; i++) delete devices[i];
                delete [] devices;
@@ -97,22 +103,32 @@ namespace WaveSabrePlayerLib
        {
                MxcsrFlagGuard mxcsrFlagGuard;

-               // Dispatch work for render threads
+               if (numRenderThreads > 1)^M
                {
-                       auto criticalSectionGuard = criticalSection.Enter();
+                       // Dispatch work for render threads^M
+                       {^M
+                               auto criticalSectionGuard = criticalSection.Enter();^M

-                       for (int i = 0; i < numTracks; i++)
-                               trackRenderStates[i] = TrackRenderState::Idle;
+                               for (int i = 0; i < numTracks; i++)^M
+                                       trackRenderStates[i] = TrackRenderState::Idle;^M
+^M
+                               renderThreadNumFloatSamples = numSamples / 2;^M
+                       }^M

-                       renderThreadNumFloatSamples = numSamples / 2;
+                       // Wait for render threads to complete their work^M
+                       //  Note that we don't need to enter/leave a critical section here since we're the only reader at this point.^M
+                       //  However, if we don't want to sleep, entering/leaving a critical section here also works to not starve the^M
+                       //  worker threads it seems. Sleeping feels like the better approach to reduce contention though.^M
+                       while (trackRenderStates[numTracks - 1] != TrackRenderState::Finished)^M
+                               Sleep(0);^M
                }
+               else^M
+               {^M
+                       int numFloatSamples = numSamples / 2;^M

-               // Wait for render threads to complete their work
-               //  Note that we don't need to enter/leave a critical section here since we're the only reader at this point.
-               //  However, if we don't want to sleep, entering/leaving a critical section here also works to not starve the
-               //  worker threads it seems. Sleeping feels like the better approach to reduce contention though.
-               while (trackRenderStates[numTracks - 1] != TrackRenderState::Finished)
-                       Sleep(0);
+                       for (int i = 0; i < numTracks; i++)^M
+                               tracks[i]->Run(numFloatSamples);^M
+               }^M

                // Copy final output
                float **masterTrackBuffers = tracks[numTracks - 1]->Buffers;

Continuing the conversation from YouTube

I'd like to discuss there if possible, but in response to what you're saying, is that createevent/setevent also possibly a good way to dispatch the work to multiple threads in the first place? i.e. can multiple threads wait for the same event at the same time? I'm also thinking if that's a good solution that would mean there's no extra spinning etc being done by the worker threads unless they're doing work. That leads me to perhaps another way to update the track render states; perhaps an interlocked CAS on a given state is a better way to pull work off of that list. As you say, when a thread finishes the last one it can signal that work is  finished, and other threads can detect if the last track is finished and wait for the dispatch event again.

Yes, this is very much the approach I would take. To answer your questions on events: yes, multiple threads can wait on a single event using WaitForSingleObject / WaitForMultipleObjects. Signalling the event unblocks all threads that are waiting on it.
What I'd probably look into doing first is getting rid of the "was the final track rendered yet" wait loop and replacing it with an event waiting pattern. This'll save you a few CPU cycles and context switches, but more importantly it'll stall the thread properly so that you can better debug and profile things during runtime. Rather than all threads always executing and having to breakpoint the thread to see where it stopped, you'll be able to see that the thread is in a wait state.
In the constructor I'd use CreateEvent to set up an "final track rendered" event. Then, in renderThreadProc, just after you run the renderer, you can signal the event if nextTrackIndex is equal to songRenderer->numTracks - 1. You can then replace the loop above with a WaitForSingleObject call.
Next I'd consider taking the same approach to avoid spinning in renderThreadProc when there's no work to do. Effectively all you need to do there is have an event for "a track was just rendered", idea being that you only check for new work when that event is signaled. The WaitForSingleObject call should actually slot right into your existing code, just before you check if new work is available. Just make sure to exit the critical section around the WaitForSingleObject call otherwise you'll deadlock. Then you can call SetEvent right after the run call completes.

Slight correction w.r.t. events, as I was wrong above.
Events can be created as manual-reset or auto-reset. A manual reset event will unblock all waiting threads until one of them calls ResetEvent. An auto-reset event will unblock a single waiting thread. The event reset mode is set as a parameter in CreateEvent.
Auto-reset is the most convenient, but one thing to think about is the following race condition:

Worker thread A completes a piece of work and marks it as Finished.
Worker thread B completes a piece of work and marks it as Finished.
Worker thread A calls SetEvent on the "I just finished some work" event.
Worker thread B calls SetEvent on the "I just finished some work" event.
Worker thread C is awoken, clearing the event. It completes one piece of work and stops.
One piece of work is left stuck in the queue and is never completed.

There are two approaches to fix this.
The first is to have each worker thread continue grabbing work from the queue until there is none left, and only then call WaitForSingleObject to block again. This introduces a very slight performance loss whenever the above deadlock would normally occur, as it leads to one worker thread sequentially performing two operations instead of two in parallel, but this will be rare because it requires some fairly precise execution phase differences in order to happen.
The other approach is to use manually resetting events and have all worker threads try to grab work at once every time you signal the event. This has slightly lower general-case performance in total. I would still suggest using the "loop until there's no work left, then wait" approach just to avoid any sneaky race conditions.
I was also wrong about where SetEvent should be called in my comment above. It should be called right after you mark the work as finished. Otherwise the next thread will come in and see no available work because the current bit of work is still marked as Rendering rather than Finished, and you'll deadlock again.

Cheers @gsuberland, thanks for the very informative tips and explanations :)
I'm going to start by first using an event to detect when the worker threads have finished doing their work. After that, I think I'll implement an event for when a worker thread has completed rendering the last track. Those two things alone should reduce contention a bit and as you say, stall the threads properly so we're not relying on some kind of roulette in the OS scheduler and sleeping to make sure nothing locks up.
I'm a bit concerned with firing an event whenever a track completes though - I can understand the motivation (that we don't want the worker threads to loop over the queue over and over again without anything to do in the case that not all tracks have been rendered but the only ones that don't have any dependencies to wait on are already being processed by other worker threads), but the deadlock issue you describe in your second comment seems particularly hairy to get around. At least with the current solution (and I believe also the first fix you describe if I understand you correctly) that doesn't happen, but we spend a little extra time checking if work is available. However I think we would at least spend a significantly less amount of time with any contention happening if we use interlocked CAS to update the work states; we still have lots of iterations over the work list until all work has finished, but at least we wouldn't have deadlocks anywhere, and we should still see a nice perf gain wrt dispatching work and waiting until it's finished with the events, and significantly less contention when taking work out of the queue. I think. :)
With that in mind we should end up with a solution with just two (manual reset) events; a "dispatch" event and an "all work done" event. The main thread (in RenderSamples) would signal the "dispatch" event (which all worker threads are waiting on), then waits until the "all work done" event is signalled. The worker threads, now woken up by the "dispatch" event, churn through whatever work they can (sleeping for a tiny bit of time if no work can be done) until one of  them renders the last track and both resets the "dispatch" event as well as signals the "all work done" event. The other worker threads should see that the final track was rendered on their next iteration to find work; upon seeing that, they should go back to waiting for the "dispatch" event. The main thread, after being woken up by the "all work done" event, pulls out the final mix and resets the "all work done" event, and we're all set.
I think this implementation would make sense, be relatively simple, avoid deadlocks, and yield better/more predictable behavior/performance than what I have on this branch currently. Please feel free to enlighten me further if it seems like I'm not quite getting it; this is not exactly my forte, so I'm very pleased you're willing to go over this and provide advice already. :)

Sounds like you've got a good handle on it, and I agree that that's probably a better approach if you're not worried too much about some wasted cycles. It's probably worth it in the end just to save time debugging any really rare/obscure race conditions.
Regarding the concerns about the threads waking up and grabbing work, that should be mitigated by the critical section - it should try to acquire the section, get blocked by the main thread, then unblock and find there's no work to do.
No probs answering questions on Windows threading / synchronisation stuff. It's one area I've had a lot of time to play around with! :P

Might be redundant but I found the easiest way to check whether all worker threads have finished is by just having one integer variable and one auto reset event. During "work assignment" set the variable to the # of render threads, and at the end of each render thread's work, InterlockedDecrement the variable, and if it hits 0, send the event - which the main thread waits for.
As for letting the render threads start, one auto reset event per render thread should be fine. You can use it for both signalling new work and exit - the thread can just check a global bool somewhere right after the WaitForSingleObject.
So main thread would do: pull critsec, set # of threads, assign work, set all start events, release critsec ... then wait for finished event. Done.
Bonus: If I'm not mistaken you can get rid of the special handling for the single threaded case that way. Just let the main thread run one iteration of what the render thread is doing. It'll dutifuly set all events right before it waits for them. Slightly redundant but works :)

Basically, in pseudo-C++
int threadsRunning = 0;
HANDLE startEvents[] = ...
HANDLE doneEvent = ...
Render Thread [# of cores - 1, render thread 0 is actually the main thread]
while (!exitFlag)
{
   RunRenderThread(threadNo); // threadno starts at 1
}

RunRenderThread(threadNo);
WaitForSingleObject(startEvents[threadNo]);
if (exitFlag) return;
for (;;)
{
  critSec.Enter();
  find_work(...);
  critSec.Leave();
  if (work)
    do_work(work);
  else
    break;
}
if (!InterlockedDecrement(threadsRunning))
   SetEvent(doneEvent);

Main thread:
critSec.Enter();
schedule_work();
for (int i=0; i<numthreads; i++)
  SetEvent(startEvents[i]);
InterlockedAdd(threadsRunning, numthreads);
critSec.Leave();

// and now:
RunRenderThread(0);

WaitForSingleObject(doneEvent);
// and yay!

Thanks for this @kebby , def going with that strategy. 👍

Latest results:

This is consistently faster (except for Bare Faced Cheek, which seems anomalously fast in the first tests), by up to 13%, which is great. Also it's a bit cleaner; no Sleeps :)
The old results again, for comparison:

Thanks to @gsuberland and @kebby for their input :)

Size-wise the new impl is an additional 188 bytes bigger (a total of 368 bytes for the entire multithreaded rendering impl), but I think that's still more than acceptable for the improvements in performance here.

There's one optimization with a lot of work for questionable returns :D :  Find some heuristic that guesses the CPU usage / render time of each track, and sort the tracks so that the threads process the tracks in order of descending complexity. That way the render threads are used optimally and it should give you another couple of %. You can easily do that at export/convert time - but I would probably be too lazy to do that :)

Ha, yeah, nice idea, but I surely won't do it :) the current track order is dependency order (so that we could just store them as an ordered list and process them without walking the dependency chain originally) which should at least help with making sure tracks' dependencies are processed as early as possible (and perhaps that can be made better by also ranking tracks based on how many dependents they have, not just whatever we get from a depth-first search through the graph from the master) and anything beyond that is probably overkill.


api docs: Examples on /rest-error-handling

The example blocks on this page are currently not rendering:

@MSurfer20 FYI.

@timabbott This got closed in https://github.com/zulip/zulip/pull/19074. Forgot to add fixes #.. due to now working on things which require so in a while.


CQ-4331591

Description
Tests were failing due to PR #802 chai expect was overriding the default expect. Fixed now.

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] I have signed the Adobe Open Source CLA.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

@suryansh29 , please provide proper title in PR and commit as well.
CQ-4331591 [Tests Fixed] Add Test for OOTB theme in AEM Project Archetype

@suryansh29 , closing this PR, please raise another one.
cc : @rismehta , @StakshiGarg


GapicConfigPipeline can overwrite file in remote environment

What:
GapicConfigPipeline currently raises a ValueError if the target GAPIC config file already exists. This can be disabled in a remote environment.
Why:
This test is justified in the local environment, because GapicConfigPipeline can overwrite the GAPIC config in a developer's googleapis sandbox that might have unstaged changes. Not having this test is potentially surprising and frustrating for developers using the local environment.
For developers using a remote environment, there is no such danger. GapicConfigPipeline does not touch an active sandbox in this mode, and instead delivers a tarball of the googleapis repository with generated changes overlaid. Having this test is potentially surprising and frustrating for developers using a remote environment, because they have to know that they need to temporarily modify their artman config to re-generate a GAPIC config file.
How:
The test is in pipeline.tasks.gapic_tasks.GapicConfigMoveTask._move_to().

@shinfan @ethanbao This issue is relevant to the email discussion about self-service today. An enhancement that Ethan proposed is to also allow this in a local environment, but to make a copy of the current GAPIC config if one exists (e.g. foobar -> foobar.sav).

At the very minimum we should give a meaningful error message in this case. Currently, artman writes "BUILD SUCCESSFUL" to the log and then fails, which is very unhelpful.

Became obsolete as we no longer support such remote execution mode.


Allow grpcio <=1.48.2 for Raspberry Pi installation

grpcio 1.48.2 throw a glibc error on Raspberry Pi installation. This change will still install 1.48.2 by default, but allow for user downgrades afterwards
Closes https://github.com/intel/openfl/issues/727

Closing this PR due to inactivity.


Fix prelude loading

WIP

The problem is that the default environment is "default", it behaves as expected with:
--- a/bin/test/main.ml
+++ b/bin/test/main.ml
@@ -255,7 +255,7 @@ let run_exn (`Setup ()) (`Non_deterministic non_deterministic)
           let env, f = Mdx.Prelude.env_and_file p in
           let eval () = eval_raw Block.empty ?root c ~line:0 [f] in
           match env with
-          | None   -> eval ()
+          | None   -> Mdx_top.in_env "default" eval
           | Some e -> Mdx_top.in_env e eval
         ) fs
     | fs, [] ->
@@ -263,7 +263,7 @@ let run_exn (`Setup ()) (`Non_deterministic non_deterministic)
           let env, f = Mdx.Prelude.env_and_file p in
           let eval () = eval_raw Block.empty ?root c ~line:0 (Mdx.Util.File.read_lines f) in
           match env with
-          | None   -> eval ()
+          | None   -> Mdx_top.in_env "default" eval
           | Some e -> Mdx_top.in_env e eval

or put the default value in Prelude.env_and_file or in Mdx_top.in_env

Hmm I think I see, I'll take a look!

Using "default" seems bad as a user could totally want to name an env "default" and that would result in a strange behaviour from their perspective.
We could eventually use "mdx-default-env" or something with which it's harder to unintentionally collide if it turns out the other alternative is not satisfying.

Thaks for looking into it!

Fixes #226
@NathanReb what do you think?


Apps - Upgrade using Values YAML option should use specific values to upgrade original install but all the options are currently needed

Rancher version master-head (08/12/2020) d19f179c4 HA k8s

Go to the Dashboard in the local cluster
Apps -> Charts -> rancher-gatekeeper Install.
After installation succeeds got o Apps -> Installed Apps
rancher-gatekeeper click the three dots menu and Upgrade
Values YAML

Try using :
auditInterval: 20

The upgrade fails checking the logs.
Error: UPGRADE FAILED: error validating "": error validating data: [ValidationError(Deployment.spec.template.metadata.annotations.container): invalid type for io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta.annotations: got "map", expected "string", ValidationError(Deployment.spec.template.spec.nodeSelector.kubernetes): invalid type for io.k8s.api.core.v1.PodSpec.nodeSelector: got "map", expected "string"]

Go to Apps ->Installed Apps -> rancher-gatekeeper click the three dots menu and Upgrade
Use the original installation values and edit the values you want to edit and Upgrade.
affinity: {}
auditChunkSize: 0
auditFromCache: false
auditInterval: 20
constraintViolationsLimit: 20
disableValidatingWebhook: false
emitAdmissionEvents: false
emitAuditEvents: false
global:
  kubectl:
    repository: rancher/istio-kubectl
    tag: 1.5.8
  systemDefaultRegistry: ''
image:
  pullPolicy: IfNotPresent
  repository: rancher/opa-gatekeeper
  tag: v3.1.0-beta.11
logLevel: INFO
nodeSelector:
  kubernetes.io/os: linux
podAnnotations:
  container.seccomp.security.alpha.kubernetes.io/manager: runtime/default
replicas: 3
resources:
  limits:
    cpu: 1000m
    memory: 512Mi
  requests:
    cpu: 100m
    memory: 256Mi
tolerations: []

This works but the Expectation is to be able to use specific yaml values not the entire installation values yaml.

Did not hit the error with Rancher server rancher\rancher:master-head version 8a60de75d master-8a60de75db5324c73535b71c087c3e4bd5f36d29-head
But did not observe changes made when upgrading gatekeeper with auditInterval: 20 added to Values YAML
auditinterval was unchanged after upgrade

Talked to @vincent99 and this seems to be old. Can we re-test?

The bug fix is verified with Rancher server rancher\rancher:master-head version ad69720
Steps:
Go to the Dashboard in the local cluster
Apps -> Charts -> rancher-gatekeeper Install.
After installation succeeds got to Apps -> Installed Apps
rancher-gatekeeper click the three dots menu and Upgrade
Values YAML
Change auditInterval: 300 to auditInterval: 50
Upgrade
Result:
After upgrade, a new app and CRD was deployed:

Observed new changes applied in new gatekeeper app:


Updates dependencies for Laravel 8

Updates composer.json

Laravel-8 dependency<EMAIL_ADDRESS>dev dependencies phpunit/phpunit and orchestra/testbench.

Thank you


Add support for copying out IP addresses from Network Insight view

In web UI, under Reporting -> Insight, there is a set of pie charts showing IP addresses of network transfers.
I'm trying to understand what some of these IP addresses are, and hence, I wanted to do Reverse DNS lookups on them. In the absence of that feature (#1034), I was attempting to copy-paste the IP addresses out to manually Reverse DNS (e.g. via https://remote.12dt.com/), but it looks like it is not possible to copy these IP addresses to be pasted elsewhere. This would be a great feature to have.

you know you can export the data? the last tab will delivers the same content as the graphs.
I'm not sure we can change the behaviour easily in the graphs.

Thanks for the reply! I now notice I am able to copy the data out from the other tab.


Refactor CREATE NODE to not rely on SET

As stated in the title, CREATE NODE should directly fill properties accordingly, instead of relying on SET.

See #1910 .


How to handle errors_any? on ActiveModel?

We add #errors_any? and #errors_empty? to ApplicationRecord so that we can call these methods on returning interaction returned records. Should we recommend this for all makwa uses?

Not sure if you are looking for comments on this, or if you are just using this as a place to record thoughts.
Yes, I think it's a good idea to encourage devs to put #errors_any? and #errors_empty? in their ApplicationRecord. I wonder if it's worthwhile to additionally add those methods to the ActiveRecord instance that gets passed into ReturningInteraction, inside Makwa itself (with result.add_instance_method(:errors_any?), or whatever) if they aren't already defined. I think that would be a pretty safe "decoration", but I'm not sure how much value it would add. 🤷♂


baseN size limiter

I'm using baseN to create a 11x11 array.
const values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2];
const allCombinations = Combinatorics.baseN(values, 11).toArray();

I'm with the out-of-memory error. So i'm wondering if is there a way to limit my result string to show my only the firsts X results?
Thanks.

Instead of calling toArray use the iterator to get just the results you
need. You can get them one at a time then with minimal memory usage.
On Wed., 9 Oct. 2019, 4:40 am Carlos Henrique Ximenes de Figueiredo Mota, <
<EMAIL_ADDRESS>wrote:

I'm using baseN to create a 11x11 array.
const values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2];
const allCombinations = Combinatorics.baseN(values, 11).toArray();
I'm with the out-of-memory error. So i'm wondering if is there a way to
limit my result string to show my only the firsts X results?
Thanks.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/dankogai/js-combinatorics/issues/60?email_source=notifications&email_token=AAAVDX5IEHBWOJQCHAO5CZ3QNTHZHA5CNFSM4I6VUS4KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HQNUUNQ,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAVDXYMWXQBMS4ULBLA77LQNTHZHANCNFSM4I6VUS4A
.

Sorry, I'm new on JS so can you help me with an example? Thanks.

Look at the Generator Methods in the documentation
https://github.com/dankogai/js-combinatorics#generator-methods
let cmb = Combinatorics.combination(['a','b','c','d'], 2);
let i = 0;
while(a = cmb.next() && i < 10) {
console.log(a);
i++;
}
On Wed, 9 Oct 2019 at 08:44, Carlos Henrique Ximenes de Figueiredo Mota <
<EMAIL_ADDRESS>wrote:

Sorry, I'm new on JS so can you help me with an example? Thanks.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/dankogai/js-combinatorics/issues/60?email_source=notifications&email_token=AAAVDX3NAI6YNRZG7SC2ANTQNUEOPA5CNFSM4I6VUS4KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAV3HKY#issuecomment-539734955,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAVDXZQNQETT5Y5I5GCOPDQNUEOPANCNFSM4I6VUS4A
.

Thanks!
const values = [1,2,3,4,5,6,7,8,9];
const allCombinations = jsCombinatorics.baseN(values, 11);

const results = [];
for (let i = 0; i < 5; i++) {
  results.push(allCombinations.next());
}

console.log(results);


chore: release main

:robot: I have created a release beep boop
node-versions: 1.0.3
1.0.3 (2024-08-23)
Bug Fixes

update available Node.js versions (f08f793)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

node-versions-v1.0.3
:sunflower:


Update to most recent signal changes

Have to test that the automation works correctly and then pull in

Done properly with the other PR


[Improve][code style]Format some idea tips

Hi @liugddx, there's been a lot of changes since your original commit. Could you please rebase this PR with latest master branch before it could be merged? Thanks!


Hub is_pedigree argument

ub should be sending gene.iobio a sample_id and a is_pedigree (true/false) variable as well as a gene name. If is_pedigree=true, the sample_id will be a child, and we want to view the family, so gene will need to pull from the API the rest of the family info. If is_pedigree=false, then gene should just show the info for the sample_id attached


Add API and support for OpenID4VC with SD-JWT

Paradym introduced a new API that also supports OpenID4VC and SD-JWT: https://paradym.id/articles/introducing-the-paradym-api

Available in version 2.0.0-beta, the API elements have been developed in the branch_API-update_e177f7b1 and merged in commit ee9320aecfdf37fd0ff5c08c08e3965b34bfd08b
The OpenID4VC and SD-JWT-VC logic and API calls haven't been thoroughly tested yet in the connector, hence the beta status of the release


MINOR: Fix brokerId passed to metrics reporters

Remove caching of brokerId in DynamicBrokerConfig constructor since it is called before KafkaConfig is fully initialized.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/kafka-pr-test-coverage/216/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/kafka-pr-test-coverage/207/

@hachikuji Thanks for the review, merging to trunk. Build failure looks unrelated.


adding more Sordum apps to the official bucket

[x] I have read the Contributing Guide.

/verify

/verify

/verify

/verify

/verify


Single and double quotes not interchangeable after xst execute

What happened?
When calling execute command with parameter that expect string, only combination of single quotes inside double quoted text ("... '..' ... " ) works.
The opposit case ('... ".." ... ') doesn't work: double quotes are ommited.
Combination of single quotes inside double quotes is used in the readme help.
System Information
Build: eXist-6.0.1 (51506fc97a9e5bb55fdea71fc76def2c9d402886)
Java: 1.8.0_292 (Azul Systems, Inc.)
OS: Windows 10 10.0 (amd64)

Relevant shell output
xst execute 'xmldb:reindex("/db/apps/%project%-data")' --config admin.xstrc
xmldb:reindex(/db/apps/mordigital-data)

xst execute "xmldb:reindex('/db/apps/%project%-data')" --config admin.xstrc
true

@daliboris looks like a windows issue to me. On linux double quoted strings will be subject to variable replacement.
xst run "$a + $a" -b '{"a": 1}' will not work on unix/linux/macOS shells as "$a" is replaced before xst gets to see it.

@daliboris Which shell are you using?

What happens on windows with the following?
xst execute 'xmldb:reindex("/db/apps/" || $project || "-data")' --bind '{ "project": "mordigital" }' --config admin.xstrc

There seems to be a lot to take into account when it comes to double quotes on windows (see
https://stackoverflow.com/questions/562038/escaping-double-quotes-in-batch-script)

OK, so the readme should point out which combination of quotes works on Linux and windows.

@daliboris does this command work on windows?
xst execute "xmldb:reindex('/db/apps/' || $project || '-data')" --bind "{ \"project\": \"mordigital\" }" --config admin.xstrc

Hi @line-o , here are some results (I changed the project name):
CMD
xst execute "xmldb:reindex('/db/apps/' || $project || '-data')" --bind "{ \"project\": \"lediir\" }" --config admin.xstrc
true

PowerShell
xst execute "xmldb:reindex('/db/apps/' || $project || '-data')" --bind "{ \"project\": \"lediir\" }" --config admin.xstrc
Problem with a provided Argument:
Error parsing argument bind! Reason: Unexpected token : in JSON at position 12

--bind '{ "project": "lediir" }'
xst execute "xmldb:reindex('/db/apps/' || $project || '-data')" --bind '{ \"project\": \"lediir\" }' --config admin.xstrc
XPathException:
err:XPST0003 unexpected token: || [at line 1, column 31]

--bind "{ 'project': 'lediir' }"
xst execute "xmldb:reindex('/db/apps/' || $project || '-data')" --bind "{ \'project\': \'lediir\' }" --config admin.xstrc
Problem with a provided Argument:
Error parsing argument bind! Reason: Unexpected token \ in JSON at position 2


fix: metric name for fuzzy error rate

Signed-off-by: Nandita Koppisetty<EMAIL_ADDRESS>Explain what this PR does.

Codecov Report

Merging #74 (f25a7cb) into main (b25837b) will not change coverage.
The diff coverage is n/a.

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

@@           Coverage Diff           @@
##             main      #74   +/-   ##
=======================================
  Coverage   89.01%   89.01%
=======================================
  Files          17       17
  Lines         819      819
  Branches       75       75
=======================================
  Hits          729      729
  Misses         68       68
  Partials       22       22

Impacted Files
Coverage Δ

numaprom/_constants.py
100.00% <ø> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


feat(various):

scenarios : allowList optional options
scenarios : XForwardedFor optional options
middleware : add logger option allowing to pass custom logger
middleware : bouncer return a counter to do export metrics
middleware : correctly pass commons options
middleware : re-export from crowdsec-client to don't need to install it on parent

Codecov Report

Merging #28 (98cf875) into main (e90c5a9) will decrease coverage by 58.88%.
The diff coverage is 0.00%.

:exclamation: Current head 98cf875 differs from pull request most recent head df33b41. Consider uploading reports for the commit df33b41 to get more accurate results

@@            Coverage Diff             @@
##             main     #28       +/-   ##
==========================================
- Coverage   58.87%   0.00%   -58.88%
==========================================
  Files          29       6       -23
  Lines         941     253      -688
  Branches      189      53      -136
==========================================
- Hits          554       0      -554
+ Misses        341     224      -117
+ Partials       46      29       -17

Flag
Coverage Δ

crowdsec-client
?

crowdsec-client-scenarios
?

crowdsec-http-middleware
0.00% <0.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

.../crowdsec-http-middleware/src/CommonsMiddleware.ts
0.00% <0.00%> (ø)

...tp-middleware/src/CrowdSecHTTPBouncerMiddleware.ts
0.00% <0.00%> (ø)

...dsec-http-middleware/src/CrowdSecHTTPMiddleware.ts
0.00% <0.00%> (ø)

...tp-middleware/src/CrowdSecHTTPWatcherMiddleware.ts
0.00% <0.00%> (ø)

... and 24 files with indirect coverage changes

Continue to review full report in Codecov by Sentry.

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


TimeScrollView: adjust zoom behavior - center on mouse position

When zooming TimeScrollView with mouse wheel, I think it would be more intuitive, and a lot less click-y, to zoom based on the mouse position rather than on the selected timepoint.
What do you think, @jsoules?

Interesting. We could do this, but part of the advantage of the click is that it explicitly gives focus to the time series. You wouldn't want to be scrolling over a page, accidentally have the mouse enter a time series plot, and then start zooming the plot instead of scrolling the page.
Otherwise though it seems fine if the users like it?

Interesting. We could do this, but part of the advantage of the click is that it explicitly gives focus to the time series. You wouldn't want to be scrolling over a page, accidentally have the mouse enter a time series plot, and then start zooming the plot instead of scrolling the page.

That's a good point. Let's hold of on this for now.


UI Suggestions

Hello --
Here is a list of suggested UI tweaks (obviously, with no expectations they will be addressed but hopefully the list will be useful, and perhaps one day I'll figure out enough to fix them myself):
Many of them may require modifications to ink or possibly upstream in Atom, but pragmatically it seemed sensible to present the list here.

Newly opened files should not be added to the Julia Console tab group.  Currently, it looks like Atom places new file editors into the last active tab group, however it rarely makes sense to add files to the tab group that is hosting the Julia Console.  For instance, when clicking a line number in a stack trace in the Julia Console, the newly opened file opens in a inconvenient location.  Possible resolution:  The upstream api in Atom for tab groups (i believe implemented by Mike) should have pluggable support for ranking existing tab groups for receiving a new editor.  The default algorithm should prefer aspect ratios close to letter paper, in addition to considering most recently active tab.  Links created to source files in Ink should allow the user to right click and explicitly select the tab group they want to open the new file (This behavior should be present in the Atom file tree explorer as well)
(Re) Support navigating to definition.  This is a feature I miss dearly from Atom/LT.  The flow use to be something like: in an editor, right click on a symbol, select "show methods", the pop presented would have links to various definitions --> this made it extremely easy to explore the inner workings of Julia code in julia/base or someone else's package.  Currently, I use methods(f) in the console to closely achieve a similar flow, but due to the item above, it is less than perfect (and the old flow was really nice).   This definitely requires adding support for navigating back so that one can quickly return the prior context.
Console Completions stutter with large fonts:  Due to my old eyes being incompatible with apple monitors, I use menlo-18 as my normal Atom font.  When the completion box pops up in the Console  and when Console is at the bottom of the workspace, the completion popup stutters quickly about 15 times, I believe as completions are coming in.  This problem seems to go away which smaller font size.  If you cannot recreate using cmd-+, let me know and I will try for a screen capture.
Inline Annotation Popups inconvenient with large fonts:  Currently when inline editor annotations are expanded, they are nearly unusable when using large fonts as there is no way to scroll the content.  This is inconvenient as error messages in the inline results have line numbers that I cannot access.  My current work around is to right click, choose 'copy', and then paste the content into a scratch editor.  In addition to adding a scroll bar, it might be useful to either add support for resizing the inline content by dragging on the bottom right corner, or even better, double clicking the annotation would float the fully expanded content over the workspace until the user either presses "esc" or clicks elsewhere (or clicks on a link to a source file).  This behavior mimics "Popovers" in IOS.  Finding a fully keyboard driven flow would be ideal.

Again no expectations, and feel free to ask for clarifications.   Cheer,  nehal

Thanks for writing this up, those are all very valid points.

This has annoyed me as well, and I kinda like your proposed solution even though it might be a bit too unpredictable.
We now have a UI element that can somewhat do that on master: When the cursor is over a method, you can call Goto Symbol, which will bring up a method selector that enables you to quickly jump to the definition.
This sounds like https://github.com/atom/autocomplete-plus/issues/680 (and probably is an issue with Atom overlays).
I don't think anyone is really happy with the state of inline results right now, but you should definitely have scroll bars in them if you hover your mouse over them. Making them resizeable sounds reasonable, just like auto-expanding them to the right when clicking them. The latter depends on some upstream fixes to Atom though, I think. Regarding "keyboard driven workflow": I have a proof-of-concept for dealing with results here.

re: atom/autocomplete-plus#680  -- thanks for the pointer, that is exactly what I was trying to describe.  And the styling provided in one the the comments has provided a very nice work around for now!

@pfitzseb

but you should definitely have scroll bars in them if you hover your mouse over them

Do you mean this behavior already exists or that it should be implemented one day (I currently cannot find any way to get scroll bars -- my info is Atom 1.10.2, ink 0.5.3, julia-client 0.5.6, osx)

Inline results should look as follows on mouse over (pointer isn't in the screencapture for whatever reason):

@pfitzseb I can't seem to get the same behavior.  I just see truncated text but no scrollbar regardless of where or how long I hover.  I'm on a mac, what platform was your sceenshot taken from.
I even tried placing
.ink.inline {
  //max-width: none;
  overflow: scroll;
  pointer-events: all;
}

in my global atom style file, but still no luck.  For now max-width is a work around.

Very strange. I'm on Windows, but I do think this works on mac, because otherwise @MikeInnes would've noticed. We do have
.ink.inline:hover {
  overflow: auto;
}

in our styling -- can you check if that's applied correctly in the atom dev tools (View -> Developer -> Toggle Dev Tools)?

@pfitzseb It turns out, it is a mac thing related to OSX suppressing scrollbars if you have a track pad.  http://heresthethingblog.com/2015/03/10/mac-tip-macs-scroll-bars/
Once I changed my settings to something different, everything makes sense, so I am all set with this one!

Ah, that makes sense. Glad you figured it out!

+1 for the goto definition enhancement

Try C-j C-g when the cursor is over a method, that should bring up a selector with which you can navigate to the definitions.

oh I just love it when my life gets better in a small but meaningful way.
Thanks!
So why not change the right click menu to reveal all this wonderful option.
it is currently populated with useless things.

No reason at all. :)

Great .. though this I also discovered about toggle-documentation option, neat!
now I need to find a way to disable the rest of Atom useless right click context menu.
what about alt-x for debugging.. it doesn't seem to be working , it works from the command line though
but I am unable to remove a break-point once I declare it

Right, breakpoints will be removable once Gallium is tagged (or you can switch to Gallium master). Alt-X will work once https://github.com/JunoLab/atom-julia-client/pull/275 is merged.

no further qeustions your honor

Some progress on this: https://github.com/JunoLab/atom-ink/tree/sp/newrsults.

double click will expand the result to fill the whole width of the editor.
inline results are automatically resized so they fill all remaining space in the editor.

Pretty much all of your suggestions have been implemented now! :)


⚠ Fortnite has degraded performance

In f62139d, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1482 ms

Resolved: Fortnite performance has improved in 225b40a.


Support ldap_sasl_bind()

From my requests initially made in issue #59, this PR adds support for accomplishing SASL binds.
The vast majority of the PR just facilitates CI. The easiest (and most relevant to me) SASL mechanism to get up & running is EXTERNAL with a TLS client certificate providing the transport layer authentication. Thus it was necessary to generate CA, server, and client certificates and adjust the test server's configuration to also run ldaps.
My main concern is how this should be documented:

For users of the API, there's new parameters/options.
For developers, it's necessary to copy the client certificate/key to /tmp if they run the tests on their own development machine. In general, some docs on how to run the tests overall would be useful too. I could help with that but not sure where you want them (README.md, other committed .md, external website, ...)

Thanks for reviewing!

Thanks for your contribution! I've just merged it into the develop-branch.
Currently the API is not really documented. That's one of the things I would like to get to. I'm going add an Easy-Pick issue as that's something that can be done without too deep knowledge of LDAP or PHP.


Check empty environment variables & Reformat .env.example

.env.example

Removed all inline comments due to the observation that load_dotenv() is not parsing inline comments correctly. For instance in the old .env.example:

TIKTOK_SESSION_ID="" # TikTok Session ID

TIKTOK_SESSION_ID will evaluates to: "" # TikTok Session ID, making it hard to do validity check.

Now all comments are on another line.

# TikTok Session ID
# Obtain your session ID by logging into TikTok and copying the sessionid cookie.
TIKTOK_SESSION_ID=""

Backend/utils.py

Add function check_env_vars() which exits the program if any required environment variables(PEXELS_API_KEY, TIKTOK_SESSION_ID, IMAGEMAGICK_BINARY) is missing.

Backend/main.py

Call check_env_vars() before importing any modules that uses the above three env variables.

TIKTOK is also optional API.

TIKTOK is also optional API.

You're right. Seems TIKTOK_SESSION_ID hasn't really been used
But it still shows up as "required" in EnvironmentVariables.md
Preempt or obsolete requirement??

Nice pr, merged.

TIKTOK is also optional API.
This should be updated.


After graceful failover errant GTID on demoted master can't keep up on master via "FIX button" in orchestrator GUI

Hi,
After a successful graceful failover everything is working as expected but the newly demoted master that become slave sure enough can keep up with master, but the errant GTID is hard to fix because it's moving fast specially in a busy system, that render the FIX "Button" in the gui is proved to be difficult to use or can be useless in this situation.
This issue supersede #885 i decided not to re-open it because i haven't clearly understood the issue now it's become clearer here.

Just to make clear the GTID errant transaction range is constantly changing, the only way for me to fixed this is to completely stop all DB traffic in the application and click the "FIX button".
Can this be improved? or if this is the intended behaviour there should be a way to inform the user that the fix button can only work if there's no traffic in the whole system, just to removed confusion
anyway it's just my 0.2$.

Just to make clear the GTID errant transaction range is constantly changing

That's not an expected behavior. This would only happen if the old-master is still taking writes. According to your screenshot it's read_only. But is it also super_read_only? Perhaps there's a user with SUPER privileges still writing? A pt-heartbeat perhaps? An archiving job?
Your current situation is that the old-master is invalid. You should investigate what those errant GTIDs are. You can use orchestrator-client -c which-gtid-errant -i <old.master> and orchestrator-client -c locate-gtid-errant <old.master>.

@shlomi-noach
Indeed pt-heartbeat is the culprit when previous master was demoted, pt-heartbeat still point to the old master and write on percona.heartbeat table this wouldn't happen if the user run pt-heartbeat doesn't have the SUPER privilege as you have predicted.
That's explain it :)
Again please close this as this is not an orchestrator issue but rather a user error :)


smtp_password cannot be set anymore

experimenting with this.. looks like upstream has made some breaking changes..
looks like the plugin require you to specify smpt_password.. but the api rejects..
* mailgunv3_domain.default: UnexpectedResponseError URL=https://api.mailgun.net/v3/domains ExpectedOneOf=[]int{200, 202, 204} Got=400 Error: {
  "message": "smtp_password cannot be set anymore"
}

I think this might be a dupe of https://github.com/phillbaker/terraform-provider-mailgunv3/issues/4#issuecomment-465288098? Can you see if that comment resolves your issue?

yes.. most definitely.. thank you very much..
i was not specifying the smpt_password
providing password parameter at 32 chars works around this issue


generate_and_save_cell_cluster_masks not completing

I have successfully ran through the pixel clustering notebook and the cell clustering notebook (including the heatmaps) up until the generate_and_save_cell_cluster_masks step. On this step, it seems to hang indefinitely for hours, not producing an error. It seems unlikely that it will take this long given the analogous step on the pixel cluster notebook completed in < 15 minutes. This is the case both when I use a conda environment as well as when I use the Jupyter notebook.
Is this particular step known to take a very long time, or could there be some error here, for larger fov images?

@jonhsussman it shouldn't be hanging for this long, I'll look into this.

Thanks, I will stay posted
On Thu, Sep 22, 2022, 5:17 PM alex-l-kong @.***> wrote:

@jonhsussman
https://urldefense.com/v3/__https://github.com/jonhsussman__;!!LIr3w8kk_Xxm!tqTxTlldXWlKHMKz8dHZD3nDQkLt8qeNWyHHab2T77lsOg8GKIObRmb3G_3lmf3upQIJQz82KcLFMFDgE8dybtkV$
it shouldn't be hanging for this long, I'll look into this.
—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/angelolab/ark-analysis/issues/722*issuecomment-1255556635__;Iw!!LIr3w8kk_Xxm!tqTxTlldXWlKHMKz8dHZD3nDQkLt8qeNWyHHab2T77lsOg8GKIObRmb3G_3lmf3upQIJQz82KcLFMFDgExr6Rf3a$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AKIGYMS47MKZZA4SA2BWHULV7TEETANCNFSM6AAAAAAQTL2Q5I__;!!LIr3w8kk_Xxm!tqTxTlldXWlKHMKz8dHZD3nDQkLt8qeNWyHHab2T77lsOg8GKIObRmb3G_3lmf3upQIJQz82KcLFMFDgExpT9Nyh$
.
You are receiving this because you were mentioned.Message ID:
@.***>

As a brief update on this, I did some simple debugging and found that it is hanging specifically on the relabel_segmentation function within the call to label_cells_by_cluster. All previous steps complete successfully. From there, I'm not sure what could be causing it to get stuck without an error

I worked out what seems to be a more efficient solution here, running currently approx. 10-20 times faster which would be necessary for very large images. I'm still running it through, but wanted to give a brief update on a potential solution. The point here is that it simply loops through the image one time, and also calls the get() function a single time, then just assigns the cell ids.
  img = np.copy(labeled_image)
    unique_cell_ids = np.unique(labeled_image)

    new_labels = np.copy(unique_cell_ids)
    default_label = max(labels_dict.values()) + 1
    for cell_id in unique_cell_ids:
        if cell_id != 0:
            new_labels[cell_id] = labels_dict.get(cell_id, default_label)

    #unique_cell_ids = unique_cell_ids[np.nonzero(unique_cell_ids)]

    print(unique_cell_ids)
    print(labeled_image.shape)

    rows = labeled_image.shape[0]
    cols = labeled_image.shape[1]
    print(rows)
    print(cols)

    for i in range(rows):
        for j in range(cols):
            print(i)
            cell_id = labeled_image[i,j]
            if cell_id != 0:
                #img[i,j] = labels_dict.get(cell_id, default_label)
                img[i,j] = new_labels[cell_id]
                #print(cell_id)
                #print(new_labels[cell_id])

  #  for cell_id in unique_cell_ids:
   #     print(cell_id)
    #    img[labeled_image == cell_id] = labels_dict.get(cell_id, default_label)
    return img

@jonhsussman got a backlog today to fill, but I'll start doing some timing tests this weekend to verify. Thanks for looking into this, sometimes NumPy broadcasting/indexing isn't nearly as efficient as it's made out to be.

No worries; yeah that seems to be the case.
I can now confirm that this solution works well and produces a beautiful cell mask image, completing in about 2 hours. The original code is left in the above solution but commented out.

I wonder if something changed during the refactor, or if there's some non-linear scaling with image size?
I was able to process 2048x2048 pixel images quite quickly, much faster than 100 cells per 30 seconds. So either there was a recent change, or for very large images, the speed per cell is significantly decreased.

It looks like the runtime is bounded by the size of the image, likely
iterating over the image for each cell. It iterates over the image very
quickly, so it's quite possible that for small images, the existing
approach is actually more efficient than what I have just implemented, but
for larger images (our are on the order of 25,000 X 17,000), the opposite
may be true
On Fri, Sep 23, 2022 at 5:02 PM Noah F. Greenwald @.***>
wrote:

I wonder if something changed during the refactor, or if there's some
non-linear scaling with image size?
I was able to process 2048x2048 pixel images quite quickly, much faster
than 100 cells per 30 seconds. So either there was a recent change, or for
very large images, the speed per cell is significantly decreased.
—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/angelolab/ark-analysis/issues/722*issuecomment-1256675720__;Iw!!LIr3w8kk_Xxm!v5wcqjd9uoOEBGSV8A8KSpvaa8wPC9w0fHwt8JoaiicpJDmbsVcJ8s40ypTOEaeDnKfRKdqaswlIuU-KqWqxPlzB$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AKIGYMQT6YWB3YBZSWU36ODV7YLFJANCNFSM6AAAAAAQTL2Q5I__;!!LIr3w8kk_Xxm!v5wcqjd9uoOEBGSV8A8KSpvaa8wPC9w0fHwt8JoaiicpJDmbsVcJ8s40ypTOEaeDnKfRKdqaswlIuU-KqRGDukyB$
.
You are receiving this because you were mentioned.Message ID:
@.***>

@jonhsussman yeah I can imagine with a really large numpy array cache misses could be a problem, especially with several massive indexing to the array over the course of the loop.
I wonder if even better results could be implemented using a lambda function, such as:
f = lambda x: labels_dict.get(x, default_label)
new_img = f(img)

Been reading some Stack Overflow threads on this issue and it may be faster than brute forcing it with built-in indexing or numpy functions such as vectorize.

Is the issue that the cells are stored in a dict, or that there are just a lot of cells? When we do the same function in the pixel clustering notebook we don't have these runtime issues. I guess that's because the number of pixel clusters doesn't scale with image size, but the number of cells does?

The lambda function could be an good solution, I'm sure there are solutions that are significantly more optimized than explicit loops of any kind. It's possible that it is related to the dict, since I've been reading that this can cause slowness to retrieve these values. It seemed more difficult to change that however.

The other issue is that indexing with a boolean mask is really slow. Elsewhere in the repo we use coordinates from regionprops to index, which is much much faster: https://github.com/angelolab/ark-analysis/blob/main/ark/utils/segmentation_utils.py#L67
Might be worth trying that as well

@jonhsussman just opened a PR to address this, let me know how it runs for you!


tableInstance cannot be stored in a mobx object - You have not called PrepareRow(row)

To avoid a lot of prop-drilling, and to keep an abstraction around setting things like sort, so that the choices persist in localStorage, I wanted to use a Mobx class. However, react-table blows up when I try to set a member variable in the mobx store to keep track of it.
My set method in the store could not be simpler, I don't think:
// Above, this.tableInstance is declared as undefined, and the object
// is made observable in the constructor.
  setTableInstance(instance) {
    this.tableInstance = instance;
  }

The trouble is, as soon as mobx tries to set that reference to instance, React-Table blows up with: "mobx.esm.js:1211 Uncaught Error: React-Table: You have not called prepareRow(row) one or more rows you are attempting to render."
I tried to look through the react-table code to see why it might be trying to render rows just because an observable copy was made, but I unfortunately could not figure it out.
If I can't use Mobx for this I'm going to be stuck with a LOT of prop-drilling, and also no good way to put an abstraction layer around the setting of config values so they can be written both to the table instance and local storage, in any reasonably elegant way, and so I might have to consider a different table solution if React-Table is designed explicitly to reject store solutions for some reason, and just forces prop-drilling and lots of copy/paste boilerplate on you. Which would be a shame, since in all other ways, react-table does exactly what I want.

On further consideration, it looks like I can get around this by using closure/composition, maybe. But I still wonder why just assigning a reference to the table instance would cause this error, and whether there is something that can be fixed here.

Okay, I have a solution/workaround. Part of the problem is that I'm in the habit of using makeAutoObservable, and this required direct control over what is made observable. If I instead use makeObservable, and don't annotate tableInstance as observable, but DO annotate my wrapper methods for updating it (e.g. with setSortBy()) as actions, this works fine.
I still wonder why tableInstance thinks rows are being rendered when they are not, but it's hard for me to say whether this can even be fixed in react-table, or even if it should (maybe mobx is doing something that seems weird to react-table). So, I'm closing this myself.


Make volume slider one line

It never made any sense to me why the volume controls were on two separate lines. It only contributed to the height of that very minimal controls panel. I think this makes a lot more sense and we don't need the volume title given that this is intuitive.

I was messing a bit with padding and actually this makes me feel even cozier? Thoughts?

@SO9010 Since this might affect your queue panel branch, it would be great if you had a look. I think reducing the two line volume to one will make reducing the height of that panel feel less cramped.

Just tested! It works well in my queue panel branch! However, since it now has a slight highlighting,  it would make more sense to have it so that when you click on your name, it brings up the user profile page.
Or we could have the whole thing as the settings button, as that makes more sense; at least, to me, it does!

Or we could have the whole thing as the settings button

Right, I thought of that, I think its a bit weird that it's such a huge button with a lot of space in between at wide windows. I'm not so sure.

@SO9010 Just going to go with the prior way the naming and settings looked with a little less padding and a bit of space between the "Connected" and the username (before it was a little oddly smushed I felt) and we have more height to spare.
I also lowered the height of the that pref box to 88 so it's even like in your PR.


Please add a license file

You mentioned in the README that this repository is available under the MIT license. Please add the license itself which can be found here.

ok, done


PHP 7.2 support

Resolves #166

PHP 7.1 locked build failing because coverage tests loads all classes, and it looks like we have implementation for non-existing adapter:
PHP Fatal error:  Class 'OAuth2\Storage\IbmDb2' not found in /home/travis/build/zfcampus/zf-oauth2/src/Adapter/IbmDb2Adapter.php on line 19

Thanks, @webimpress! Rebased off of develop to pick up changes from other merged PRs, and will release as 1.5.0.


⚠ Visual-Crew_Builder has degraded performance

In 19e4eeb, Visual-Crew_Builder (https://visual-crew-builder.ai) experienced degraded performance:

HTTP code: 200
Response time: 1408 ms

Resolved: Visual-Crew_Builder performance has improved in f2ef37e after 9 minutes.


Some failed matches for 2022 Fall

There are some matches that are not completing for 2022.

Arknights was failing due to a missing overview, adding a handler for that case, and also added an overview to the TVDB for the series.


Search PV move first

Codecov Report

Merging #82 (2a9f4ea) into main (2ba4774) will decrease coverage by 0.02%.
The diff coverage is 90.47%.

@@            Coverage Diff             @@
##             main      #82      +/-   ##
==========================================
- Coverage   96.63%   96.61%   -0.03%
==========================================
  Files          62       62
  Lines        6398     6412      +14
==========================================
+ Hits         6183     6195      +12
- Misses        215      217       +2

Impacted Files
Coverage Δ

search/src/alpha_beta.rs
98.98% <88.23%> (-1.02%)
:arrow_down:

search/src/pv_table.rs
88.09% <100.00%> (ø)

uci/tests/uci.rs
98.99% <100.00%> (ø)

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 2ba4774...2a9f4ea. Read the comment docs.


Create lesson schema

new file location: "server > models > Lesson.js"
includes model to create new instance on line 29
closes #17

removed express/mongoose dependencies from root package.json and updated syntax for import/export statements in Lesson.js


Update screen: user was already verified & prefer-linked-account API

This ticket is two fold:
Design update
In the new design if the user was already verified (either by iDIN/eIDAS or organisation), and adds a second (or third, fourth, etc) organisation, the user will be prompted to wether or not she wants to use her new name as "preferred" (and if she wants we API prefer-linked-account).
This behaviour is currently not correctly implemented, it is only triggered if someone adds a second (or third, etc) organisation. Not if someone adds her first organisation after she already verified via iDIN/eIDAS.
The design for all these "yes please", "no thanks":

API prefer-linked-account does not work correctly
In the above described use case:

a user did iDIN
then adds a first organstion
then says "no thanks"

Then the "first organisation" (but second verified), will always be preferred over iDIN. So: actual behaviour: organisation name. Expected behaviour: iDIN name! In this case the preferred name/firstname/givenname should be iDIN.

Linked to: https://github.com/OpenConext/OpenConext-myconext/issues/623

Duplicates https://github.com/OpenConext/OpenConext-myconext/issues/623


feat: construct library for ECS

Add an initial version of a construct library for AWS Elastic Container Service.
This construct library isn't fully feature-complete yet. This is the first iteration so
that people can use it for experimentation and put it to the test, and we can improve
on it later.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license.

CodeBuild failures are caused by this:
ScalableTaskCount.cs(39,30): error CS0507: 'ScalableTaskCount.ScaleOnMetric(string, IBasicStepScalingPolicyProps)': cannot change access modifiers when overriding 'protected' inherited member 'BaseScalableAttribute.ScaleOnMetric(string, IBasicStepScalingPolicyProps)' [/tmp/jsii-pacmak-codetyA9XM/Amazon.CDK.AWS.ECS/Amazon.CDK.AWS.ECS.csproj]
ScalableTaskCount.cs(46,30): error CS0507: 'ScalableTaskCount.ScaleOnSchedule(string, IScalingSchedule)': cannot change access modifiers when overriding 'protected' inherited member 'BaseScalableAttribute.ScaleOnSchedule(string, IScalingSchedule)' [/tmp/jsii-pacmak-codetyA9XM/Amazon.CDK.AWS.ECS/Amazon.CDK.AWS.ECS.csproj]


What is the Value-Only of a List of Operations or Capabilities

Is your feature request related to a problem? Please describe.
What is the Value-Only of a List of OPerations or Capabilities
Describe the solution you'd like
If the submodel element list is part the Value-Only serialization of its parent element (e.g. in the context of a submodel or submodel element collection) and the list consists of submodel elements of type Operation or Capability, i.e. SubmodelElementList/typeValueListElement equal to Operation or Capability, the complete list is ignored.
In the case a collection contains
myCollection:
{
   "prop1": string,
   "capability1": Capability,
   "operation1": Operation,
    "list": SubmodelElementList(typeofElements:Operation)
}

then Value-Only of the collection is either
{
 "prop1": "value of prop1"
}

Or
{
 "prop1": "value of prop1"
 "list": []
}

See also https://github.com/admin-shell-io/aas-specs-api/issues/270
The current schema looks like this (extract):
    "SubmodelElementListValue": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SubmodelElementValue"
      }
    },

    "SubmodelElementValue": {
      "oneOf": [
        {
          "$ref": "#/definitions/BasicEventElementValue"
        },
        {
          "$ref": "#/definitions/RangeValue"
        },
        {
          "$ref": "#/definitions/MultiLanguagePropertyValue"
        },
        {
          "$ref": "#/definitions/FileBlobValue"
        },
        {
          "$ref": "#/definitions/ReferenceElementValue"
        },
        {
          "$ref": "#/definitions/RelationshipElementValue"
        },
        {
          "$ref": "#/definitions/AnnotatedRelationshipElementValue"
        },
        {
          "$ref": "#/definitions/EntityValue"
        },
        {
          "$ref": "#/definitions/PropertyValue"
        },
        {
          "$ref": "#/definitions/SubmodelElementListValue"
        }
      ]
    },

So recommendation is to stay with
{
 "prop1": "value of prop1"
 "list": []
}

2024-09-04 - TF Part 1 of AAS Working Group:
In the case a collection contains
myCollection:
{
"prop1": string,
"capability1": Capability,
"operation1": Operation,
"list": SubmodelElementList(typeofElements:Operation)
}
then Value-Only of the collection is
{
"prop1": "value of prop1"
}
even in the case, that the list attribute is mandatory in the SubmodelTemplate.
The same applies to access rules disallowing access on SubmodelElements. The protected elements shall not be serialized.
In general: SubmodelElements without a value are not serialized.


Migration guide from v1 to v2?

Support plan

which support plan is this issue covered by? (e.g. Community, Sponsor, or
Enterprise): Community
is this issue currently blocking your project? (yes/no): no
is this issue affecting a production system? (yes/no): no

Context

node version: v16.13.0
module (formidable) version: v1.2.6
environment (e.g. node, browser, native, OS): node
used with (i.e. popular names of modules):
any other relevant information:

What problem are you trying to solve?

What changes are needed to migrate from v1.2.6 to v2.0.1? CHANGELOG.md is not very readable, and VERSION_NOTES.md doesn't mention any compatibility-breaking changes other than Node.js 10+. Can we simply upgrade to v2.0.1 and expect everything to work without any changes?
Do you have a new or modified API suggestion to solve the problem?

PR welcome :)
It depends on what features you used. The interface of certain objects has changed.

Can we simply upgrade to v2.0.1 and expect everything to work without any changes?

Almost, yes. I think it's just the resulted "File" object propeties. See #773 for the different names of props.
I can add a diff codeblock in the v2 part of the version notes, based on that 773.

Looks like now that v3 is latest on npm, a guide from v2 to v3 will also be needed...

The changelog is the migration guide. If almost no compatibility changes are mentioned , well it is because there are very few.
If something specific is missing then open an issue about that specific thing.
I am closing this issue but if someone wants to volunteer and write a hand holding guide then by all means PR are opens


refactor: move config impls to runtime-common

Opening this for discussion. I know it's not ideal - it's kind of ugly how the macros access items that are declared at the place of invocation. But I think it's a good step towards sharing more code across the runtimes. Follow-up step would be to move the consts and the shared parameter_types! types to runtime-common.
Possibly in the future we can clean it up a bit by giving the macros an explict argument that contains the input types

Closing this due to received review on discord


Change testutils::Events::all to use a std Vec

What
Change testutils::Events::all to use a std Vec instead of an sdk Vec.
Why
There's no need to use the sdk Vec for this type, and in other similar testutils, such as testutils::Logs::all we use the std Vec.
The main reason to use an sdk type is if folks are going to have an easier time using it. So we should use sdk types for any Vals such as Addresses. But there's little reason to use the sdk Vec over std Vec for test data such as this, and it will be easier for a developer to interrogate and assert on.

I can't go ahead with this because Vals aren't comparable.


[SPARK-11574][Core] Add metrics StatsD sink

This patch adds statsd sink to the current metrics system in spark core.

Can one of the admins verify this patch?

(I'm not an admin, so can't verify the patch)
I've just compared it to the Hadoop StatsDSink; it looks pretty similar although there's some encouragement in the code there to add more tags in the reports, including per process.
What is there is a test which listens for the packet being sent.
It doesn't look too hard and could be copied for a similar test here

I'll try to add some tests (following hadoop-common's test example).

StatsdSink unit tests have been added.
I've also tested the patch on a spark v1.5.2 deployment with datadog agent installed.  Datadog agent contains a (slightly enhanced version of) StatsD called DogStatsD.  Spark metrics showed up in datadog web portal.

Hey, so I don't have any major objections to adding this, esp. since this doesn't introduce any new dependencies. As long as you can find a shepherd to review the code, I'm fine pulling this in.
Note that this is going to need to be cleaned up to conform to Spark's code style conventions, esp. the parameter wrapping.

I've adjusted parameter wrappings and import orderings. Ran through "sbt stylecheck" and "sbt test:stylecheck" on the three scala files, no errors (or warnings) are reported any more.
@steveloughran has reviewed the code, wonder if he (or some one else) could give a bless on my current changes.

Can one of the admins verify this patch?

why is this PR left untouched more than a year?

@jerryshao Could you find some time to look at this PR?

add to whitelist

test this please

test this please

BTW, here are some ongoing Hadoop JIRAs related to its shipping statsd: HADOOP-12360. other improvements in HADOOP-13048. Think there have been some complaints about how failures to publish are handled (speed @ which it gives up, etc). Worth looking at the JIRAs to see if there are any lessons there.

test this please

Test build #78470 has started for PR 9518 at commit 9fc2454.

Test build #78470 has finished for PR 9518 at commit 9fc2454.

This patch fails to build.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78470/
Test FAILed.

The build error was caused by the change of org.apache.spark.Logging to org.apache.spark.internal.Logging.  The fix is on the way.

ok to test

Test build #78480 has started for PR 9518 at commit 5063e49.

Test build #78481 has started for PR 9518 at commit 846bb64.

Test build #78480 has finished for PR 9518 at commit 5063e49.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78480/
Test FAILed.

Test build #78481 has finished for PR 9518 at commit 846bb64.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78481/
Test FAILed.

Test build #78552 has started for PR 9518 at commit ccd3152.

Test build #78552 has finished for PR 9518 at commit ccd3152.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78552/
Test FAILed.

Well, the unit test indeed passed. Some other (not related) test failed.

Test build #78588 has started for PR 9518 at commit 1d50f6f.

Test build #78588 has finished for PR 9518 at commit 1d50f6f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78588/
Test PASSed.

I think I've done all I can at this point. Anyone with permission wants to bless it?

Test build #78934 has started for PR 9518 at commit c671f87.

Test build #78934 has finished for PR 9518 at commit c671f87.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78934/
Test PASSed.

@jerryshao I believe all comments have been addressed. If you agree, would you hep merge the PR?

Sorry I don't have the permission to merge this. Ping @cloud-fan @JoshRosen to review again.

Test build #80638 has started for PR 9518 at commit 1ec9cc9.

Test build #80638 has finished for PR 9518 at commit 1ec9cc9.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/80638/
Test PASSed.

This LGTM, since it is a quite independent PR and doesn't bring in other dependencies, I think it is good to be merged.
Ping others do you have further comments?

Jenkins, test this please.

Test build #81256 has started for PR 9518 at commit 1ec9cc9.

Test build #81256 has finished for PR 9518 at commit 1ec9cc9.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/81256/
Test PASSed.

Merge to master branch, thanks @xflin !


updating gotuf

Signed-off-by: David Lawrence<EMAIL_ADDRESS>(github: endophage)

LGTM


fix: change page pos

 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.


Yet more iNat logging

Log to both iNatImport and logs/job_log

coverage: 93.468% (+0.001%) from 93.467%
when pulling 6ba6f691cc79211b45a906b89303b0e3d153b673 on jdc-move-inat-job-log-to-inat_import
into 1935e5ea9fa628d535f2ec303a326de3f9fc9085 on main.


react - -oh my god ...

https://viserjs.github.io/demo.html#/line/multi-smooth-line 完全按照这个例子

Would you like to paste your src/routes/demo.tsx here?


Build on Linux

Various changes to build on Linux with Mono:

Renamed a variable in build.cake from "target" to "targetDir" to avoid
a conflict with a variable with the same name in an outer scope.

Added --skip-dotnet-core option to build.sh: "dotnet restore" is still
flacky and segfault on some Ubuntu and Debian installations with updated
kernel or libssl. This allows to build the 4.5 profile and run the tests
event if DOTNET Core is unavailable.

I made similar changes, see my branch.
However, the reason I did not PR yet is that I also want the unit tests to work.
Also I would not skip dotnet core completely - in my case I decided only to skip all frameworks except the .NET Standard framework.

Sorry, I didn't understand you were actively working on this.
You need to skip dotnet core completely because even the restore step fails without the dotnet core tools installed and that breaks the build.

Please see the instructions that are a WIP in the original issue #460. Dotnet core needs to be installed to build AngleSharp.

I don't see anything wrong in supporting only .NET Standard in the future but right now requiring it makes impossible to build AngleSharp on machines where .NET Core and its tools are unsupported. Anyway, it is not a big problem: I can just apply my patch after a pull, before the local build.
Right now I am running the tests and trying to understand why they fail on Mono.

For me on a fresh Ubuntu installation it worked without any problems. Just adding the .NET feed and installing .NET core made it work. See my WIP instructions.

It segfault on Debian and also on Ubuntu, depending on the software/libs you install. There are multiple bugs open on dotnet/coreclr and dotnet/cli. But, as I said, it is not a problem. They'll fix it eventually. In the meantime I'll try to help as I can on the failing tests and XML support.
I did some quick test on the Mono CookieContainer and just setting/getting cookies works as expected - in fact the tests that simply set/get a cookie seem to work. AFAIK, the failing ones are (all?) related to requests to httpbin.org.

Interesting - but I think most (all?) integration tests regarding cookies are running against httpbin.org. So the problem may lie in the requester.


Error 0xffffffff800b010a

Hello, when i run start up the server i get this error:
otocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff800b010a
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in :0
at (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()
at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in :0
at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in :0
--- End of inner exception stack trace ---
at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in :0
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in :0
at System.Net.HttpWebRequest.GetResponse () [0x00000] in :0
at System.Net.WebClient.GetWebResponse (System.Net.WebRequest request) [0x00000] in :0
at System.Net.WebClient.DownloadDataCore (System.Uri address, System.Object userToken) [0x00000] in :0
This disables things such as not opening websites when you for example do /website or something and also when u use tpa and someone accepts it, it doesn't happen anything

We use github to track repeatable bugs, and feature requests.
The scenario you've described seem to not be caused by a bug in Rocket itself.
Please consult this guide to figure a solution for your problem.
You can also create a new topic in the support section on our forum.
If you can reproduce the bug in Unturned without Rocket being installed you may report it directly to the Unturned developers.
Feel free to reopen this issue if you can bring up new details on the topic.


[DOC] Improve pachctl docs and examples

Check all pachctl commands and add/improve descriptions/examples for these commands.

for example:
run pipeline has a --job flag that is not documented. Similarly, it says it has a --reprocess flag, which isn't actually implemented.

This has been completed as part of the 2.0 release. One-off issues should be opened up as bug reports.


Azure Deploy for SQL Hosting Server API Update

Updated to 2017-08-28

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


Enable lint fix

Codecov Report

Merging #133 into master will increase coverage by 0.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #133      +/-   ##
==========================================
+ Coverage    96.5%   96.52%   +0.01%
==========================================
  Files          23       23
  Lines         229      230       +1
  Branches       25       27       +2
==========================================
+ Hits          221      222       +1
  Misses          8        8

Impacted Files
Coverage Δ

packages/haste-task-eslint/src/index.js
100% <100%> (ø)
:arrow_up:

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 eb043fc...4996dcc. Read the comment docs.


Use Byte Buddy instead of Javassist  in UnitOfWorkAwareProxyFactory

As Hibernate uses Byte Buddy internally to create proxies, this allows removal of the dependency on Javassist.

Hi @sjthomason, thanks for the contribution!
I wonder, if we can extend this change to remove Javassist completely from the project. Except in dropwizard-hibernate, Javassist seems to be only used in dropwizard-jersey. Could you take a look, if we can use ByteBuddy there too?
The second question I have in mind is, if we'd want to have a compile time dependency on ByteBuddy. In Hibernate 6.x it got a runtime dependency. As the proxy seems to be fairly simple, maybe we could even use a java.reflect.Proxy to remove the 'proxy dependency' completely?

Thanks for the review!
I took a look at dropwizard-jersey and after replacing Javassist with ByteBuddy it is used by jersey-hk2 so that doesn't help much and actually adds a dependency.  While I do have working code that passes the unit tests, I suggest not touching dropwizard-jersey at this time.
Regarding the compile time vs runtime scope, I looked at the hibernate source and they have some byte code manipulation code in tree so perhaps that's why they are using the runtime scope in 6.x.
AFAIK, using java.reflect.Proxy would require a breaking change as the wrapped class would need to implement an interface that could be implemented by java.reflect.Proxy.

Thanks for the detailed answer.
Actually, the breaking change wouldn't be a problem, since Hibernate 6.x could firstly be integrated into Dropwizard 4.x. I just wanted to ask, if we'd want to bring the change of this PR, if we'd change this again with the Hibernate 6.x upgrade.

After looking at this for a while, an optimization can be made if the original method is unannotated or only has a single @UnitOfWork annotation.  What are your thoughts on something like this:
if (unitsOfWork.length == 0) {
    return proxy.call();
}
final Map<UnitOfWork, UnitOfWorkAspect> unitOfWorkAspectMap;
if (unitsOfWork.length == 1) {
    unitOfWorkAspectMap = Collections.singletonMap(unitsOfWork[0], newAspect(sessionFactories));
} else {
    unitOfWorkAspectMap = new HashMap<>();
    Arrays
        .stream(unitsOfWork)
        .collect(Collectors.toMap(UnitOfWork::value, Function.identity(), (first, second) -> second))
        .values()
        .forEach(unitOfWork -> unitOfWorkAspectMap.put(unitOfWork, newAspect(sessionFactories)));
}

What are your thoughts on something like this

Makes totally sense to me. Thanks for updating the PR! This will probably give us a performance benefit for methods, where no @UnitOfWork annotation is present.

@dropwizard/committers Any objections to bringing this change to 2.1.2?


BUG plugin is not installable by 'cordova plugin add' command even with git url

Describe the bug
A clear and concise description of what the bug is.
Same issue as #4 , still not resolved. Not working with both commands present in the docs.
Expected behavior
A clear and concise description of what you expected to happen.
The plugin should be installed.
Thanks for your help.

The plugin is cloned more than 500 times a day.


net_terms required when collection_method="manual"

Reported from a prospective client: "You do have to specify “net_terms” or you’ll get a “Nullable object must have a value” error and the subscription won’t get created. It’s at Line 745 in the Subscription.cs file in the Recurly .NET library. (https://github.com/recurly/recurly-client-net/blob/master/Library/Subscription.cs#L745)"
According to the developer docs (https://dev.recurly.com/docs/create-subscription) net_terms is not required, and should default to 0 if not specified. I was able to verify this using Postman.

@cgerrior Is this related to creating manual subscriptions? From what I can tell, this should not be called unless it's manual: https://github.com/recurly/recurly-client-net/blob/master/Library/Subscription.cs#L754
Going to try to reproduce with manual sub for now

Yeah, that's right.
On Wed, Oct 5, 2016 at 4:34 PM, Benjamin Eckel<EMAIL_ADDRESS>wrote:

@cgerrior https://github.com/cgerrior Is this related to creating
manual subscriptions? From what I can tell, this should not be called
unless it's manual: https://github.com/recurly/recurly-client-net/blob/
master/Library/Subscription.cs#L754
Going to try to reproduce with manual sub for now
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/recurly/recurly-client-net/issues/155#issuecomment-251791513,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AIH3r9zKMX6zqu1F2eKPUlj-4xtMtd8dks5qxAnsgaJpZM4JSHzx
.

--
Charlie Gerrior
Sr. Sales Engineer | Recurly
<EMAIL_ADDRESS>P<PHONE_NUMBER>
recurly.com

Closing with #178


Permission Issues When Running Docker Containers

I encountered two permission issues while running containers with Docker on Fedora 38. Here are the details of the problems and the solutions I applied:
1- Issue with permission to access docker.sock
When I ran the following command:
docker compose -f docker-compose.debug.yml up

I encountered the following error:
"msg="Failed to retrieve information of the docker client and server host: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock"

To resolve this, I added privileged: true to the reverse-proxy YAML configuration in the docker-compose.debug.yml file.
2- Issue with permission to access source files in development container
When I ran the following command:
docker run -it --rm -p 8000:8000 -v sqlite:/sqlite -v $(pwd)/website:/website django-docker-template:master python manage.py runserver <IP_ADDRESS>:8000

I encountered the following error:
"python: can't open file '/usr/src/website/manage.py': [Errno 13] Permission denied"

To resolve this, I had to change /usr/src/website to /usr/src/website:z everywhere in the YAML files and the command.
Environment:

Fedora 38
Docker  20.10.23
docker-compose  1.29.2.

Hi ,
Is this issue still open ?

I think the solution is in the description. I shall close it. Thanks


(mirrord) Perform license validation.

(wip)

Related to operator PR #348 and app.metalbear PR #18

Closing in favor of #2089


[Bug]: Failed to run config for nvim-scissors, attempt to index a boolean value.

Bug Description
Failed to run config for nvim-scissors
...local/share/nvim/lazy/lazy.nvim/lua/lazy/core/loader.lua:373: attempt to index a boolean va
lue
Relevant Screenshot
No response
To Reproduce
Update to latest version and start neovim.
Using LazyVim package manager and here's the base config:
return {
    "chrisgrieser/nvim-scissors",
    dependencies = "nvim-telescope/telescope.nvim", -- optional
    opts = {
        snippetDir = "/home/me/.snippets",
    },

    -- require("luasnip.loaders.from_vscode").lazy_load({ paths = { "/home/me/.snippets" } }),
    require("luasnip.loaders.from_vscode").lazy_load(),

    -- When used in visual mode prefills the selection as body.
    vim.keymap.set("n", "<leader>si", function()
        require("scissors").editSnippet()
    end),
    vim.keymap.set({ "n", "x" }, "<leader>sa", function()
        require("scissors").addNewSnippet()
    end),
}

neovim version
v0.9.5

Make sure you have done the following

[X] I have updated to the latest version of the plugin.
[X] I have read the plugin's FAQ.

Not sure what exactly the issue is, but I already see 4 issues on your side:

You use nvim 0.9.5, while the minimum required version for scissors is 0.10, as stated in the readme as well as the commit log and the plugin-internal notifications.
Your config is missing either a setup call or lazy.nvim's opts spec specifying the snippetDir, as stated in the readme as well.
require("luasnip.loaders.from_vscode").lazy_load() is missing an argument. (And it also needs to be done in the Luasnip config to begin with.)
require("luasnip.loaders.from_vscode").lazy_load() and the keymaps are not enclosed in the Lazy config key, and therefore likely causing some problems as that makes them invalid I assume. Refer to the Lazyvim readme for correct plugin setup with Lazyvim.

Since everything works on my end, I assume one of these issues is causing the problem.
I'd recommend trying to setup expansion of custom snippets with only Luasnip or nvim-snippets first. If you have that successfully working, then add nvim-scissors as additional plugin to create/edit those snippets more conveniently. That way, it's easier to figure out where your issue lies, since currently, I assume your snippet setup will not work whether you use nvim-scissors or not.

The setup I provided does call opts with the path to a snippet dir, but regardless, this is what is specified in the README, and it also fails with the same error:
return {
	"chrisgrieser/nvim-scissors",
	dependencies = { "nvim-telescope/telescope.nvim", "L3MON4D3/LuaSnip" },
	opts = {
		snippetDir = "~/.snippets",
	}
},

its the same error with using the call to setup:
return {
    "chrisgrieser/nvim-scissors",
    dependencies = "nvim-telescope/telescope.nvim", -- optional

    -- fails with and without this commented out:
    -- opts = {
    --     snippetDir = "/home/me/.snippets",
    -- },

    config = function()
        -- default settings
        require("scissors").setup({
            snippetDir = vim.fn.stdpath("config") .. "/snippets",
            editSnippetPopup = {
                height = 0.4, -- relative to the window, number between 0 and 1
                width = 0.6,
                border = "rounded",
                keymaps = {
                    cancel = "q",
                    saveChanges = "<CR>", -- alternatively, can also use `:w`
                    goBackToSearch = "<BS>",
                    deleteSnippet = "<C-BS>",
                    duplicateSnippet = "<C-d>",
                    openInFile = "<C-o>",
                    insertNextToken = "<C-t>", -- insert & normal mode
                    jumpBetweenBodyAndPrefix = "<C-Tab>", -- insert & normal mode
                },
            },
            telescope = {
                -- By default, the query only searches snippet prefixes. Set this to
                -- `true` to also search the body of the snippets.
                alsoSearchSnippetBody = false,
            },
            -- `none` writes as a minified json file using `vim.encode.json`.
            -- `yq`/`jq` ensure formatted & sorted json files, which is relevant when
            -- you version control your snippets.
            jsonFormatter = "none", -- "yq"|"jq"|"none"
        })
    end,
}

I should have been more clear that in my original config, I was trying to troubleshoot by trying out both of these lines which are recommended in the faq, my original config did have that path that you mentioned prior to it breaking today:
require("luasnip.loaders.from_vscode").lazy_load({ paths = { "/home/me/.snippets" } }),
-- require("luasnip.loaders.from_vscode").lazy_load(),

I've also tried with and without the keybindings for each of these configurations.
I can avoid the error by doing this
    "chrisgrieser/nvim-scissors",
    dependencies = { "nvim-telescope/telescope.nvim", "L3MON4D3/LuaSnip" },
    opts = {
        snippetDir = "/home/me/.snippets",
    },

    config = function() end,

but then it fails when I call scissors via lua
:lua require("scissors").editSnippet()
-- with error
E5108: Error executing lua [string ":lua"]:1: attempt to index a boolean value
stack traceback:
	[string ":lua"]:1: in main chunk

My bad, 2. was wrong, nonetheless you are not on nvim 0.10

Okay, thanks for your time.

If you update to nvim 0.10 and the issue still occurs, I'd ask in the lazyvim Github discussions.
In the errors messages you posted, it was never nvim-scissors throwing the error or even appearing in the stacktrace. So the cause of the error has to be some issue with lazyvim.

I'm actually getting a similar error as @sweetbbak and I'm running nvim 0.10.2 (installed with homebrew):

This error message appears whenever I try creating or editing an existing snippet.
❯ nvim --version
NVIM v0.10.2
Build type: Release
LuaJIT 2.1.1727870382
Run "nvim -V1 -v" for more info

I have configured nvim-scissors with lazy.nvim like:
return require("lazy").setup({
  {
    "chrisgrieser/nvim-scissors",
    dependencies = { "nvim-telescope/telescope.nvim", "garymjr/nvim-snippets" },
  },
})

I am then calling .setup() like this:
require("scissors").setup({
  snippetDir = vim.fn.stdpath("config") .. "/snippets",
  jsonFormatter = "jq",
})

@Drew-Daniels From what I can tell, this looks like a completely different error message to me.
And indeed, the error message indicates that it's an issue with nvim-snippets as opposed to nvim-scissors. Effectively, nvim-scissors only calls the reloading function like this:
local path = "path/to/a/json/file/in/your/snippet-dir/lang.json"
require("snippets.utils").reload_file(path)

This normally gives you a confirmation message like "x snippets reloaded", and I assume this fails on your end for whatever reason. I'd suggest opening an issue at nvim-snippets. If there is nonetheless still some issue with nvim-scissors, please open a new bug report.

@chrisgrieser thanks for the confirmation. Created an issue here to track this issue in nvim-snippets:
https://github.com/garymjr/nvim-snippets/issues/63