Elsa Blazor Studio: getting "HttpRequestException: Response status code does not indicate success: 401 (Unauthorized)" when running Http workflows

I am running elsa studio with (wasm and server), while running instance for the workflows which has Http activities I am getting "HttpRequestException: Response status code does not indicate success: 401 (Unauthorized)"
When using Elsa Studio Blazor Webassembly, getting these console logs on the browser

Console error log:
Microsoft.AspNetCore.Components.Web.ErrorBoundary[0]
System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized).
at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.NegotiateAsync(Uri url, HttpClient httpClient, ILogger logger, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.GetNegotiationResponseAsync(Uri uri, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.SelectAndStartTransport(TransferFormat transferFormat, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsyncCore(TransferFormat transferFormat, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsync(TransferFormat transferFormat, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.ConnectAsync(EndPoint endPoint, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.ConnectAsync(EndPoint endPoint, CancellationToken cancellationToken)
at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsyncCore(CancellationToken cancellationToken)
at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsyncInner(CancellationToken cancellationToken)
at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsync(CancellationToken cancellationToken)
at Elsa.Studio.Workflows.Services.WorkflowInstanceObserverFactory.CreateAsync(WorkflowInstanceObserverContext context)
at Elsa.Studio.Workflows.Components.WorkflowInstanceViewer.Components.Journal.ObserveWorkflowInstanceAsync()
at Elsa.Studio.Workflows.Components.WorkflowInstanceViewer.Components.Journal.UpdateObserverAsync()
at Elsa.Studio.Workflows.Components.WorkflowInstanceViewer.Components.Journal.SetWorkflowInstanceAsync(WorkflowInstance workflowInstance, JournalFilter filter)
at Elsa.Studio.Workflows.Components.WorkflowInstanceViewer.WorkflowInstanceViewer.SelectWorkflowInstanceAsync(WorkflowInstance instance)
at Elsa.Studio.Workflows.Components.WorkflowInstanceViewer.WorkflowInstanceViewer.OnInitializedAsync()
at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)
System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized).
at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.NegotiateAsync(Uri url, HttpClient httpClient, ILogger logger, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.GetNegotiationResponseAsync(Uri uri, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.SelectAndStartTransport(TransferFormat transferFormat, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsyncCore(TransferFormat transferFormat, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsync(TransferFormat transferFormat, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.ConnectAsync(EndPoint endPoint, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.ConnectAsync(EndPoint endPoint, CancellationToken cancellationToken)
at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsyncCore(CancellationToken cancellationToken)
at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsyncInner(CancellationToken cancellationToken)
at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsync(CancellationToken cancellationToken)
at Elsa.Studio.Workflows.Services.WorkflowInstanceObserverFactory.CreateAsync(WorkflowInstanceObserverContext context)
at Elsa.Studio.Workflows.Components.WorkflowInstanceViewer.Components.Journal.ObserveWorkflowInstanceAsync()
at Elsa.Studio.Workflows.Components.WorkflowInstanceViewer.Components.Journal.UpdateObserverAsync()
at Elsa.Studio.Workflows.Components.WorkflowInstanceViewer.Components.Journal.SetWorkflowInstanceAsync(WorkflowInstance workflowInstance, JournalFilter filter)
at Elsa.Studio.Workflows.Components.WorkflowInstanceViewer.WorkflowInstanceViewer.SelectWorkflowInstanceAsync(WorkflowInstance instance)
at Elsa.Studio.Workflows.Components.WorkflowInstanceViewer.WorkflowInstanceViewer.OnInitializedAsync()
at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)
elsa/hubs/workflow-instance/negotiate?negotiateVersion=1 API is failing with 401

When using Elsa Studio Blazor Server, getting these console logs on the browser

Used the same code as from the Elsa 3.0 docs. Looks like there is some issue with SignalR. Can anyone help here.

Update:
Using 3.0.0 versions for all the Elsa packages resolved the issue and working as expected...


fix: remove extra blank line

:tada: This PR is included in version 2.0.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add fences

The only (I think) problem remaining is the possible constant propagation in RxRingEntry::take_received, because this case is a bit different from the usual DMA configuration, here we are writing the address of a descriptor to the DMA's register, not the buffer address itself, that way the buffer is not escaped/captured. Godbolt link to illustrate this problem, note that you need to uncomment both lines to avoid constant propagation.
A solution (hack) that comes to mind is to create an asm function that receives an u32, or find a register that we own where we can write anything to it.
CC @adamgreig
@dtjones190 Could you run this branch on your ping test to see if it also works ? Thanks.

This branch works for me on my F7.
Responds to all pings and my application works as well.

Ok, it seems that the pointer escape/capture works even when dealing with descriptors instead of the pointer directly, I examined a lot of situations, see the godbolt link (Note the ldr r0, [sp, ..] at the end of each function instead of mov r0, #0)

This looks good to me. Have you tested it on hardware?

I don't own a F7 and I would like to someone to test on it. @dtjones190 , could you test it again after this changes just for good measure ? thanks.

I tried testing examples/ip.rs on my F7 nucleo board but sadly it's revision A silicon so suffers the very tedious Ethernet errata where it doesn't work. I can ping it a few times OK, and then it stops responding to pings and has to be powered down for a while before it works again.
However when it is working the behaviour with large ping packets is a little weird (also happens with say 512 byte payloads):
1032 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=64 time=0.840 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=64 time=0.837 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=64 time=0.835 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=12 ttl=64 time=0.832 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=5 ttl=64 time=1429 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=6 ttl=64 time=1225 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=7 ttl=64 time=1022 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=8 ttl=64 time=818 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=9 ttl=64 time=615 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=10 ttl=64 time=411 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=11 ttl=64 time=208 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=20 ttl=64 time=0.837 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=13 ttl=64 time=1428 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=14 ttl=64 time=1225 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=15 ttl=64 time=1022 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=16 ttl=64 time=818 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=17 ttl=64 time=615 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=18 ttl=64 time=411 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=19 ttl=64 time=208 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=28 ttl=64 time=0.837 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=21 ttl=64 time=1428 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=22 ttl=64 time=1225 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=23 ttl=64 time=1022 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=24 ttl=64 time=818 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=25 ttl=64 time=615 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=26 ttl=64 time=411 ms
1032 bytes from <IP_ADDRESS>: icmp_seq=27 ttl=64 time=208 ms

@dtjones-atse, assuming you have some newer silicon, when you test could you try with large packets? Something like ping -s 1024 -i 0.2 10.2 or whatever IP you have for the board.

@adamgreig hmm, weird. Have you tried the master branch too ? One thing that I think we should change is the max_burst_size from smoltcp, but not sure if that is the cause of your problems.

Latest on the fences branch still works great for me.
 Is it possible for you to try pinging faster than 1/s though? I'm not sure if windows ping has an option for ping interval, but I only really noticed the problem with higher speed pings. With sudo ping -f (flood), the device totally stops responding very quickly.

You gave me a good reason to finally get WSL running on my machine.
Still looks happy:
sudo ping -s 1024 -f <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>) 1024(1052) bytes of data.
.
^C--- <IP_ADDRESS> ping statistics ---
38155 packets transmitted, 38154 received, 0.00262089% packet loss, time 39453ms
rtt min/avg/max/mdev = 0.611/0.981/1.982/0.098 ms, ipg/ewma 1.034/0.996 ms

Great, it's probably just the errata on my rev-A hardware then. Thanks for testing!

Ok, let's merge this then, thanks everybody!


Improve handling of Apalache errors

Handling of errors that Modelator receives from Apalache is currently insufficient: some errors escape the regular expressions set to catch them, and result in unhandled exceptions on the Modelator side.
For example, when replacing here Int with Integer, and running modelator sample --model-path models/transfer.tla --examples Ex, I get
Sampling Ex...
11:35:20 - /opt/homebrew/lib/python3.10/site-packages/modelator/Model.py - ERROR - Problem running apalache: 'NoneType' object is not subscriptable
Exception in thread Thread-1 (_check_sample_thread_worker):
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 1016, in _bootstrap_inner
    self.run()
  File<EMAIL_ADDRESS>line 953, in run
    self._target(*self._args, **self._kwargs)
  File "/opt/homebrew/lib/python3.10/site-packages/modelator/Model.py", line 146, in _check_sample_thread_worker
    check_result = self._modelcheck_predicates(
  File "/opt/homebrew/lib/python3.10/site-packages/modelator/Model.py", line 125, in _modelcheck_predicates
    raise ModelCheckingError(e)
  File "/opt/homebrew/lib/python3.10/site-packages/modelator/utils/model_exceptions.py", line 31, in __init__
    raise exc
  File "/opt/homebrew/lib/python3.10/site-packages/modelator/Model.py", line 117, in _modelcheck_predicates
    result = check_func(
  File "/opt/homebrew/lib/python3.10/site-packages/modelator/checker/check.py", line 84, in check_apalache
    typecheck(tla_file_name, files)
  File "/opt/homebrew/lib/python3.10/site-packages/modelator/typecheck.py", line 44, in typecheck
    ) = apalache_helpers.extract_typecheck_error(result["stdout"])
  File "/opt/homebrew/lib/python3.10/site-packages/modelator/utils/apalache_helpers.py", line 111, in extract_typecheck_error
    info = match_general_typing_error["info"].strip()
TypeError: 'NoneType' object is not subscriptable
Results:
- Ex ⏳
Total time: 5.06 seconds

The logic in extracting errors from Apalache should be modified to include the catch-all case, which takes care of all other cases that fall through the known ones.

would it help if we  we provided structured output from apalache in the form of a Json data that indicated whether or there was any error?

@shonfeder this is a very short-term task, about the next few days only, to polish things a little before we release the Atomkraft prototype... Mid-term we will address this issue properly by integrating the Apalache server mode

I see!


message: Record whether unread_msgs data is truncated.

Has been manually tested that this plumbs through the parameter properly.
Needs updates to tests and API documentation -- hopefully someone else has time to pick up that work.
And then once that's done we should open issues with all clients (including the webapp) for doing something with the information.

Closing in favor of #17702, which extends this with tests.


[C++][Parquet] Use pkg-config to find Apache Arrow

See also PARQUET-925.
Reporter: Kouhei Sutou / @kou
Note: This issue was originally created as PARQUET-926. Please see the migration documentation for further details.

Uwe Korn / @xhochy:
Issue resolved by pull request 276
https://github.com/apache/parquet-cpp/pull/276


Changes in ChannelArguments do not reflect when done during execution

What version of gRPC and what language are you using?
gRPC v 1.52.1 / C++
What operating system (Linux, Windows,...) and version?
Windows 10 Pro, version 22H2
What runtime / compiler are you using (e.g. python version or version of gcc)
Visual Studio Professional 2019
What did you do?

A basic program to send an RPC request to a server from the client - directly and via a proxy.
The Proxy has an unreachable address and any request made to it (or via it) will fail.
Using ChannelArguments to CreateCustomChannel() with a parameter called "proxy" in the ChannelArguments that can be enabled or disabled (set to 1 or 0).
Once the channel has been initialised with the proxy enabled mode using SetInt("proxy", 1), an RPC request is sent. Then, after using SetInt("proxy", 0) to avoid using the proxy, another RPC request is sent (directly to the server).

What did you expect to see?
The RPC request must fail the first time (on requesting via the invalid proxy) and succeed the second time (on direct access).
What did you see instead?
The RPC request fails both times, indicating that the proxy 'mode' in the channel arguments has not been changed. This remains the same unless a new object of type ChannelArguments is created with the another mode.
Make sure you include information that can help us debug (full error message, exception listing, stack trace, logs).
See TROUBLESHOOTING.md for how to diagnose problems better.
Anything else we should know about your project / environment?
Nothing

Sorry for the late response. Are you using the right channel args to set the http proxy? You can use the macros specified in: https://github.com/grpc/grpc/blob/master/include/grpc/impl/grpc_types.h#L440-L444
Also, can you attach error logs? What errors are you seeing? It would be easier for us to diagnose the issue.

Yes, I am using these macros, e.g. SetInt(GRPC_ARG_ENABLE_HTTP_PROXY, 1) and SetInt(GRPC_ARG_ENABLE_HTTP_PROXY, 0)
Sorry for not making that clear.
There is no error log because there aren't any 'errors' as such, just a bug/difference in interpretation.
The value held against the key (which is defined in the macro) is set to a new one. But still, the old value is showing up as the one associated with the key.
What was noticed upon digging a little into the [implementation(https://chromium.googlesource.com/external/github.com/grpc/grpc/+/chromium-deps/2016-07-19/src/cpp/common/channel_arguments.cc#:~:text=void ChannelArguments%3A%3ASetInt,}) of the SetInt() method, is that the function is not changing the value associated to the key that is already present, but adding a new entry in the list with the new value. And on reading the data, the value that is associated with the first occurrence of this key is what is retrieved. Hence the value that is set first is the once that is always fetched on querying the list.

Is your use case one of the 2 scenarios below? If not, what is your use case?
Scenario 1 (use the same ChannelArgument and the same channel):
ChannelArguments args;
args.SetInt(GRPC_ARG_ENABLE_HTTP_PROXY, 1);
auto channel = grpc::CreateCustomChannel(..., args);
// use channel to send an RPC
args.SetInt(GRPC_ARG_ENABLE_HTTP_PROXY, 0);
// use the same channel again

Scenario 2 (use the same ChannelArgument but different channels):
ChannelArguments args;
args.SetInt(GRPC_ARG_ENABLE_HTTP_PROXY, 1);
auto channel1 = grpc::CreateCustomChannel(..., args);
// use channel1 to send an RPC
args.SetInt(GRPC_ARG_ENABLE_HTTP_PROXY, 0);
auto channel2 = grpc::CreateCustomChannel(..., args);
// use channel2 to send an RPC

I don't think we support Scenario 1. After the channel has been created, modifying the ChannelArgument should not change the behavior of the channel. If your use case is Scenario 2, then there might be something we can do to make this part of our API easier to work with (you may use a separate ChannelArgument for now).

Currently, I am using the work-around (of having a separate ChannelArgument for each case).
If there is a way to provide a fix such that we can make scenario 2 work, that will certainly be helpful.


dotall exclude blocks document redirects

Hello again,
I just ran into an "issue" with the excludes in the module definition.
The dotall exclude https://github.com/IBM/magkit-vanity-url/blob/915364eeb4084c3e61f77c67b2e5c95c98461386/src/main/resources/mgnl-bootstrap/magkit-vanity-url/config.modules.magkit-vanity-url.config.excludes.xml#L7
prevents us from using multiple URLs representing a document, that supports a legacy link on our website:
/path/to/document.pdf  => some target
/service/old-stuff.jsp => some target
My main question is:
Why is this excluded?
Because if it was to prevent overriding URLs like /.magnolia or /.rest the following regex would fulfill the same purpose, but would allow for the above mentioned examples:
.*/\..*
Maybe it would also be a good idea to update the validator in the app to contain this restriction. In the current situation the vanity url can be created, but it does not work.
Thanks in advance
Michael

Answered in https://github.com/ibmix-berlin/magnolia-vanity-url/issues/28


Lazy Helpers

Lazily generates helper functions (cmp, eq, and hash) for complex/nested types. This marginally improves compile time and drastically reduces the LLVM code size for larger programs.

didn't look too closely but seems fine


[Suggestion] Would it be possible to update to Harmony v1.1.0?

Hi,
Harmony v1.1.0 includes some nice features that would be nice to have. Is it complicated to update this to work with latest version of Harmony?
Many thanks!

I'll have to test whether this version of Harmony is backwards compatible to the one we're currently using.
If it is, there's no reason not to update. I'll try to get an update for the Mod Loader out some time soon™.
However, keep in mind that since the mod loader usually keeps working for long periods of time, people rarely install updates, so it will take some time until the new version of Harmony is widely adopted.

I have some bad news: due to an earlier mistake on my part, the new version of Harmony isn't even remotely backwards compatible.
Essentially, I can make old mods compiled with Harmony v.<IP_ADDRESS> run on new installs with Harmony v1.1, but mods compiled with Harmony v1.1 will not even load on the current version of the mod loader.
Even worse, there's currently no indication that this is caused by having an outdated version of the mod loader. I'm afraid that if I were to release this update with the new version of Harmony, people would just complain to the mod authors, even though this isn't a problem they can fix.
To make sure something like that can't happen again in the future, I've added an automated update checker to at least notify players that there's a new version of the mod loader.
But for the time being, I think it would be best to wait at least until Episode 3 is released.
I'm hoping that that update will also include a new version of the input library Rewired that the mod loader hooks into, breaking the mod loader in the process.
That way, the only version of the mod loader that will work with that new game update will be the version that includes Harmony v1.1, so I won't have to worry about backwards compatibility.
Sorry about the delay.

As expected, the recent v1.41 update has shipped with a newer version of Rewired, which has broken the mod loader, which finally gave us a chance to cleanly update Harmony! Version 1.4 has been released with Harmony v<IP_ADDRESS> 🎉
It might be worth separating Harmony updates from the rest of the mod loader - I'll look into that at a later date 😄


Consider switch to Uncontrollable

This is something I can tackle, just setting a placeholder issue.
Consider switching to using https://github.com/jquense/uncontrollable for the React portion. This would allow us to have an uncontrolled (value etc existing on internal state), as well as having a controlled input (user controlled what value is).
Just will make the component more flexible

Per slack discussion we'll find a different way, small abstraction without having to add dependencies to accomplish this.

For this one, I'm thinking for now maybe we can go with the solution you suggested: checking value in componentWillReceiveProps and resetting component state when value is different.

Handled by #47


chore: test PR from fork

Let's see if we can accept contributions :)
First fail: PR comment with bundle size #395

Seems referring by workflow file didn't work. Switching to name, despite more unstable

Name of bundle size workflow didn't make it. Tried using PR workflow file. Not working, trying with name.

Now seems we have to specify GITHUB_TOKEN explicitly or otherwise the run-id arg isn't taken into account

Finally! 08c2b223e048db5476c65b005c8f80d8e121f18f made it

Alright, works in #396 (PR from repo branch, not fork) 🎉


Support for MicroSD

Would this work on ESP32 with a SD card? eg https://www.aliexpress.com/item/32846183171.html
https://github.com/gabriel-lepinay/SD_card_w_arduino

See also https://www.hackster.io/news/the-instant-webstick-is-a-tiny-microsd-based-esp8266-nas-for-low-power-media-streaming-and-more-7c024c293c58


goto v1.0.42 of openshift-pipeline

@bparees PTAL - a couple of github issue / bugzilla fixes.
@tdawson - FYI - for the bugzilla, we'll need a 1.0.42 RPM for openshift-pipeline and versions of the openshift jenkins-*-rhel7 built with that RPM out on brew-pulp for defect verification.  I'll tag you in the bugzilla in question.
thanks

lgtm pending test pass

rpm built.
Will go out into testible areas, and as an image, in todays 3.5 build.

Thanks as always @tdawson
On Wed, Feb 1, 2017 at 10:13 AM, Troy Dawson<EMAIL_ADDRESS>wrote:

rpm built.
Will go out into testible areas, and as an image, in todays 3.5 build.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/openshift/jenkins/pull/240#issuecomment-276682899,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADbadHv6KePX78_mO3d5iDwpEKHfWfJKks5rYKEagaJpZM4LzNC8
.


Apply for showcase

Code of Conduct

[X] I have read and agree to the xyflow contributor Code of Conduct

Project Name
Hongtu
Project Description
Hongtu is a general  visual script language.
Project Tags
No response
Link to the project website
https://hongtu.pub
Link to project demo
No response
Used Library
React Flow
Upload a Project Screenshot

Additional Information
No response

We've been working on English documentation:
https://hongtu.pub/docs/en/

Hey @lancemao, echoing what @moklick said here that it's hard to understand how to use the app when it loads with just two nodes in the flow.
I will close this issue for now. When you can provide a link to an example that shows a full working flow (like the one in the screenshot), then re-open this issue and it will be considered for the showcase. Thanks for submitting!


Extract css from vue files

Implements #1

Wow! This is awesome!
I though there should be a way to configure vue-loader to do that, but hadn't find the time to research it.
Thanks a lot!


[PROJECT]

Purpose
(Why have we prioritised this?)
Owner
(Name of core team member responsible for the project)
Note: Project owner responsibilities include coordinating all the different people that need to contribute to the project, defining specs and goals, communicating project progress, being the point person for decisions, QA, documentation, and a plan for ongoing maintenance. If the project owner can't continue, they need to hand the role over to another person explicitly.
Prioritization

Does this serve our mission?

Will this help to make us financially sustainable within a year?

Is it feasible to build and maintain with our team and runway?

Can this make us move faster?

Does this increase quality and not technical debt?

Will this bring us more Collective and financial contributors?

Is this already solved elsewhere or is it our unique contribution?

Roadmap & Timeframe
(Key milestones or phases and estimated delivery dates, including specs, design, feature development, feedback, marketing/comms, and documentation)
Success metrics
(What we will judge outcomes of the project by)

Purpose
(Why have we prioritised this?)
Owner
(Name of core team member responsible for the project)
Note: Project owner responsibilities include coordinating all the different people that need to contribute to the project, defining specs and goals, communicating project progress, being the point person for decisions, QA, documentation, and a plan for ongoing maintenance. If the project owner can't continue, they need to hand the role over to another person explicitly.
Prioritization

Does this serve our mission?

Will this help to make us financially sustainable within a year?

Is it feasible to build and maintain with our team and runway?

Can this make us move faster?

Does this increase quality and not technical debt?

Will this bring us more Collective and financial contributors?

Is this already solved elsewhere or is it our unique contribution?

Roadmap & Timeframe
(Key milestones or phases and estimated delivery dates, including specs, design, feature development, feedback, marketing/comms, and documentation)
Success metrics
(What we will judge outcomes of the project by)

50000

Purpose
(Why have we prioritised this?)
Owner
(Name of core team member responsible for the project)
Note: Project owner responsibilities include coordinating all the different people that need to contribute to the project, defining specs and goals, communicating project progress, being the point person for decisions, QA, documentation, and a plan for ongoing maintenance. If the project owner can't continue, they need to hand the role over to another person explicitly.
Prioritization

Does this serve our mission?

Will this help to make us financially sustainable within a year?

Is it feasible to build and maintain with our team and runway?

Can this make us move faster?

Does this increase quality and not technical debt?

Will this bring us more Collective and financial contributors?

Is this already solved elsewhere or is it our unique contribution?

Roadmap & Timeframe
(Key milestones or phases and estimated delivery dates, including specs, design, feature development, feedback, marketing/comms, and documentation)
Success metrics
(What we will judge outcomes of the project by)

50000


Recognize text with hyphen

var ner = require( 'wink-ner' );
var myNER = ner();
myNER .defineConfig({ignoreDiacritics: true, tagsToIgnore: ['punctuation'], valuesToIgnore: []});

var trainingData = [
  { text: 'T-Mobile', entityType: 'company', symbol: 'TMUS' }
];

myNER.learn( trainingData );
var winkTokenizer = require( 'wink-tokenizer' );
var tokenize = winkTokenizer().tokenize;
var tokens = tokenize( 'I work for T-Mobile and I like it' );
tokens = myNER.recognize( tokens );
console.log( tokens );

'T-Mobile' is not recognized although punctuation is specified in defineConfig.

Here is the revised code:
var ner = require( 'wink-ner' );
var myNER = ner();

var trainingData = [
  { text: 'T Mobile', entityType: 'company', symbol: 'TMUS' }
];

myNER.learn( trainingData );
var winkTokenizer = require( 'wink-tokenizer' );
var tokenize = winkTokenizer().tokenize;
var tokens = tokenize( 'I work for T-Mobile and I like it' );
tokens = myNER.recognize( tokens );
console.log( tokens );

Output:

Since we are ignoring punctuation, we need to exclude the same in the training data. This is mentioned in the learn() API — the text needs to be improved and details have to be clearly mentioned — will update the document soon.
Thanks for highlighting the issue. You may like to explore wink-nlp for more advance use cases — this is an integrated NLP tool.


extra line in tiles in the private api settings page

No content

Issue created by BlueBubbles Bot in the BlueBubbles commnity on behalf of @zach in #requests.


Zero-Masking with RNN/LSTM

Thanks everyone for the wonderful cudnn bindings,
I would like to ask if NVIDIA provides any interface for masking the hiddenOutputs at each step, provided that the input sequence is padded (neural machine translation for example).
Concretely:
The input sequence is padded with 0s, such as
seq = torch.Tensor({{0,0,0,0,1,2,3},{0,0,4,5,6,7,8}, {0,0,0,1,2,3,4}}):t():cuda()
Thanks to the LookupTableMaskZero from  the rnn package, we can proceed to the LSTM with the zero embeddings at "0" indexes. I wonder if the cudnn LSTM can mask the hiddenOutput based on the input ? My current solution is to zero out the LSTM biases, so that the hidden layers at padded positions will always be zero. But I am not sure if it affects the learning process.
Thank you,

cudnn RNN/LSTM accepts inputs with the different sequence length and thus does not require padding. The requirement is that inputs be sorted in the descending order of sequence length. This capability is not yet supported with torch bindings, though.

@ngimel just out of curiosity, where did you get that information about the sequence length sorting? I'm trying to desperately to get the LSTM layer working.

From the manual:-) In cudnnRNNForwardTraining entry "The first dimension of the tensors may
decrease from element n to element n+1 but may not increase."

I guess my question is, what manual? :)  I can't find anything except the cudnn.h header file and that information is not in it. I also can't find it in the CUDA manuals. Maybe i'm just being dumb here.

nm i found it, i think when i downloaded v5 they didn't have a link to the user guide yet. Thank you, sorry!

@ngimel Hi,
I want to group sequences with different length into a batch (sentences for example) so padding is necessary. By the way, I will try disabling bias while learning and see if any problem arises. Thank you.

@soumith It would be a nice feature request for the next NVIDIA cudnn release. The lack of zero-masking is the only reason I am still not using cudnn LSTMs.

Sequences with the different length can already be grouped into a batch without padding, cudnn supports that. Torch bindings don't, at the moment.

@ngimel I am guessing that each row of the batch as exactly one sequence? If so, this is not the same as zero-masking.

I, too, was wondering if feeding in zero-padded variable length sequences would significantly affect learning a good final hidden state. I wrote a quick script to convince myself that it doesn't if the RNN dimension is high enough.
I've found that it's (at least conceptually) easier to just group sequences of the same length.

@ngimel hi, could you please  show me a demo of "Sequences with the different length can already be grouped into a batch without padding".    THANK YOU

Look at variable length sequences test for an example of how it can be done
https://github.com/soumith/cudnn.torch/blob/master/test/test_rnn.lua#L324

@ngimel getting back to your comment from last year on variable length sequence support in cudnn. I think it doesn't refer to sequence length but batch size. It seems some clarification were added in the current manual (cudnnRNNForwardTraining):

The first dimension (batch size) of the tensors may decrease from element n to element n+1 but may not increase. Eachtensor descriptor must have the same second dimension (vector length).

Or are you referring to something different? Please let me know if there is a misunderstanding.


Fix Duplicate argument

cmake ~/Development/cryptopp -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCRYPTOPP_COMPILE_OPTIONS="ANYTHING" will results in ANYTHING appended twice, at least on my current CRYPTOPP_8_7_0 tag

Thank you for catching this error. Your proposed fix works, but I prefer to fix the original root cause which is a typo in sources.cmake file at line 407. Removing the duplicates in the source files list will hide when by mistake we repeat a source file in the list.
The duplication happens only for the file cryptlib.cpp which is duplicated by mistake in the source files list.
I would like to keep the credit for finding the mistake and fixing it for you. Would you like to revise your fix and simply correct the typo in line 407?

@abdes,

I would like to keep the credit for finding the mistake and fixing it for you. Would you like to revise your fix and simply correct the typo in line 407?

I think this is a good policy.
What I do at Crypto++ is, I merge the PR as is. Then I fix it.  I found that saves time and effort. And it makes the experience a good one for the author of the PR.
I don't do that thing where I ask a PR to be modified for trivial changes, like other projects do. It dissuades someone from making another PR because of all the trivial nit-picking. In fact, I've had several projects do it to my PRs. Eventually I just give up and close the PR.
Don't be afraid to run things in a way that makes sense. Don't do things just because that's how everyone else does it.
Anyway, that's just my view on the PR thing.

Don't be afraid to run things in a way that makes sense. Don't do things just because that's how everyone else does it.

I do agree with your strategy in general. In this particular case, I would really prefer if @Naville makes the change before I merge as otherwise I will completely revert his change to make the final one.

Submitted #41


Optimize getRelatedEntities using rule-based recursive query

With the changes in #91 most queries are now reasonably fast: the one remaining exception appears to be getRelatedEntities which runs for a number of seconds on average even at a relatively small scale.
The implementation at the moment runs a number of successive, separate queries and merges all of the results to arrive at a final output -- this is not really leveraging the entire point of a graph database back-end and query power against it...
Hence the suggestion here is to rewrite the getRelatedEntities implementation to use a rule-based query that will push-down an arbitrarily deep query against the underlying graph store itself: likely following the pattern described at https://opencrux.com/reference/21.04-1.16.0/queries.html#rules

Looked at doing something similar for getLinkingEntities as well, but returning both entities and relationships when both ends are bounded introduces the challenge of dealing with circular links in the graph. It does not seem that handling this is very simple with recursive graph queries, and in any case this particular method was not particularly slow in its existing iterative implementation -- so will leave that one as-is for now.

Having run some further tests after making this change, it appears that it significantly slows down the method rather than speeding it up.  It is quite possible this is due to settings within either Rocks or Crux that are causing some portion of the query to spill to disk in order to carry out its work; however, even if it may be possible to therefore improve this by tweaking such settings, it is not clear that there would be a general way of doing so for various configurations and volumes of metadata that users might ultimately have in place.  Therefore will revert back to the previous iterative behaviour and investigate if there are other potential ways of optimising.


IE11 support

Hi there,
I was just wondering if Polymer 3 will work in IE11?
because JS imports won't work... is there any polyfill for that?
https://caniuse.com/#feat=es6-module

Well... Webpack?

You can bundle the imports away during building with polymer build: https://github.com/Polymer/tools/tree/master/packages/build#bundling-files You can use the es5-bundled preset from the CLI: https://www.polymer-project.org/3.0/docs/tools/polymer-json#inherit as well as transform your ES modules to AMD modules with https://www.polymer-project.org/3.0/toolbox/build-for-production#amd

Thanks!

@TimvdLippe My company is also looking for IE 11 support. I get the gist of what you're talking about with polymer-build, but it would be very helpful if there was a preconfigured base project instead of learning polymer-build, installing CustomElementsEs5Adapter, the polyfills, etc. and hoping it works. I want to use lit-element for a new project, but it would expand the timeline to support IE 11.

@mikeaustin You might want to look at https://open-wc.org/. I was able to get pwa-starter-kit built using open-wc recommendations, and it ran on IE11. I think the books demo would work, too, just adding a fetch polyfill. The open-wc folks are on the Polymer Slack channel, and have been very helpful.

Thanks for the quick reply @johnthad. I bumped into open-wc earlier today and finally got it working in IE 11. One thing though, it splits the module into two separate builds. Not bad for an app, but a little bulky for many small components. I really with I could ditch IE 11, and I stated my case, but alas, we need to support it. The route we’re taking is to be compatible with web components in a React app, but we won’t use/create them until dropping IE 11. For personal project, I will start using lit-element. I like how minimal it is, using JS template literals instead of a compiler (Babel/JSX). We’re almost free from even webpack!


Provide a way to specify a Backoff using a string expression

Motivation:
It would be very userful to define a string expression for a Backoff.
Modification:

Add BackoffSpec that takes a backoff string expression as an argument and builds Backoff using it
Add defaultBackoffSpec to Flags so that a user can specify it using system property

Result:

A user can create default backoff using either Backoff.of() or defaultBackOffSpec system.property
Close #628

OK, I will add it.

@hyangtack Any comments? OK to merge?

Thanks, @minwoox !


Fix LineEdit caret rendering/positioning on Undo.

Fixes  #67169.
This fixes the circumstance where undoing deleted text in LineEdit could lead to caret appearing outside of the box. (This bug has become even easier to reproduce with recent PR https://github.com/godotengine/godot/pull/86732 , though repo steps are the same )
The reason for this appears to be that in the undo() function, the set_caret_column() was called before the _shape() function. However, it seems the _shape() function needs to be called first (as it is in other parts of the LineEdit.cpp) as otherwise the get_caret_pixel_pos() that set_caret_column() uses gives an incorrect value (that the caret is at 0, 0).
I've reordered these functions in both undo() and redo() and the bug now appears fixed with the caret behaving appropriately when undoing.

Thanks!


Speech-to-speech possible?

Hi! First of all great repo, voice cloning works great for me.
The question is can this repository be used for speech-to-speech conversion? I.e. instead of having text as input, have an audio as input, and "convert" it to cloned voice?
Currently i have an idea of using ASR:
input_audio -> ASR -> text -> styletts -> output_audio
Can we change this hypothetical pipeline to look like this:
input_audio -> styletts -> output_audio
Thanks!

Sorry for the late reply. I was quite busy recently. Are you looking for voice conversion or you are looking for speech to speech generation (like spoken dialogue or speech translation)?

I believe he means a speach to speech translation something like translatortron 2

something like translatortron, but I need only english. so convert a voice in an audio based some other voise, if that makes sense :)

I think you may need to translate the speech using LLM, for example, and synthesize it in different languages. This is only a TTS model, not a translation model.


Updated insight to don't use depracated mirror logger

Updated insight to don't use deprecated mirror logger from versions lower than v31.0.0 (2021-02-18)

Uhm right, forgot to mention to probably make a separate branch for v31.0.0+, or inverse v30.5.1-.


Update in-place-system-upgrade.md

After testing the in-place upgrade in the lab, we confirmed that there will not be any changes to the source image when performing an in-place upgrade of the VM. While working on the case, the customer was looking for this information, and it is not updated in any public document. They were concerned about potential changes to the source image.
Below is the lab image reference

Pull request guidance
Thank you for submitting your contribution to our support content! Our team works closely with subject matter experts in CSS and PMs in the product group to review all content requests to ensure technical accuracy and the best customer experience. This process can sometimes take one or more days, so we greatly appreciate your patience.
We also need your help in order to process your request as soon as possible:

We won't act on your pull request (PR) until you type "#sign-off" in a new comment in your pull request (PR) to indicate that your changes are complete.

After you sign off in your PR, the article will be tech reviewed by the PM or SME if it has more than minor changes. Once the article is approved, it will undergo a final editing pass before being merged.

Can we specify what source image information we are talking about? I feel like the current blurb can be interpreted many ways as we are not specifying what property and where.  For example:
"When performing an in-place upgrade on Windows Azure VMs, the VM properties on the Azure platform will not be updated; the changes will only be reflected within the OS. This means that the source image information in the VM properties, including Publisher, Offer, and Plan, does not change. The image used to deploy the VM remains the same; only the OS is upgraded."

@Yogita-Gohel I updated this PR by using @qqnarwhal's comment. Could you check if it's fine?

@AmandaAZ ..Yes looks good..Thanks for help..


Jobs need to be wait for some seconds

Hi,
I have a job yaml file structure which need to be wait until the job not finished. How can I set up a yaml file structure to set up a job in my Kubernetes cluster??
Request you to please help me on this.
Thanks,
Biswajit

/close
This is not a proper place for technical support. Please use stackoverflow, ask-kubernetes, or some related Kubernetes slack channels for this.
Closing because this is not an issue related to documentation/website.


chore(webpack): improve folder structure

Summary of the changes
Just improving a bit of repo infra
Related issue
N/A
Checklist
General

[x] Changes to docs package checked and committed.
[x] All acceptance criteria reviewed and met.

Testing

[x] Relevant unit tests and visual regression tests added.
[x] Visual testing against Figma component specification completed.
[x] Playground stories in React Storybook up to date, with any prop changes and additions addressed.

Accessibility

[ ] Accessibility Insights FastPass performed.
[ ] A11y unit test added and yields no issues.
[ ] A11y plug-in on Storybook yields no issues.
[ ] Manual screen reader testing performed using NVDA and VoiceOver.
[ ] Manual keyboard testing for keyboard controls and logical focus order.
[ ] Correct roles used and ARIA attributes used correctly where required.
[ ] Logical heading structure is maintained, and the HTML elements used for headings can be changed to fit within the wider page structure.

Resize/zoom behaviour

[ ] Page can be zoomed to 400% with no loss of content.
[ ] Screen magnifier used with no issues.
[ ] Text resized to 200% with no loss of content.
[ ] Text spacing increased as per the WCAG 1.4.12 success criterion with no loss of content.

System modes

[ ] Browser setting 'prefers reduced motion' tested. No animations or motion visible whilst this setting is on.
[ ] Windows High Contrast mode tested with no loss of content.
[ ] System light and dark mode tested with no loss of content.
[ ] Browser support tested (Chrome, Safari, Firefox and Edge).

Testing content extremes

[ ] Min/max content examples tested with no loss of content or overflow.
[ ] All prop combinations work without issue.
[ ] Tested for FOUC (Flash of Unstyled Content) in both SSR (Server-Side Rendering) and SSG (Static Site Generation) settings.
[ ] Controlled and uncontrolled input components tested.

 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.

Hi @evenstensberg thank you for your contribution. Our cypress tests seem to be struggling to find webpack with this new folder structure, please could you take another look to see if there's a way they can work with this? Thanks again 😊

@GCHQ-Developer-530 The test suite is running, but there's runtime errors. I think there's something wrong with the configuration still, fixing it later.

@GCHQ-Developer-530 I think it should work now. Could you run locally and verify?
Also, I'm very interested in contributing more to your repositories, and maybe I'm lucky to get some swag :D
If you need help with infrastructure, react or anything related to build tools, I'm happy to help. I've done some work for other organizations that might suit your needs well, such as adding cspell, which is a grammar linter for code.
Let me know what you think :)

Just one comment from me before it should be ready for approval, please could you amend your commits so that there is only one commit per scope e.g. one commit for the react changes, one commit for the fonts changes, and one commit for the canary react changes?

@GCHQ-Developer-530 Great! Before eventually merging, test everything locally first. It is important that the behaviour is correct and sometimes things break with 3rd party webpack usage (most tools are flexible around webpack, but cypress is very verbose).
RE: swag -> My email is<EMAIL_ADDRESS>if you need my physical address, send me an email.
The commits are now scoped. In the future when using webpack, the normal convention is putting it in a .webpack folder, and defining context (where webpack should run, its like process.cwd) is used to have identical behaviour as a root webpack.config.js.
Let me know if you have any questions.

Not needed anymore.

Reopening this, nice to implement :)

Ups, I think this got lost when I rebased my branches. I'll reopen a PR later! :)

@GCHQ-Developer-530 any news about swag?


SvelteNativeDom: Navigate could not find frame with id

error on
navigate({
page: Tabs,
frame:"firstFrame"
})
not find   frame .

@crisgol Thanks for the report. Upon investigation it seems that this happens when calling navigate before the frame component has been attached to nativescript's view hierarchy. Svelte likes to mount the child components first.
The problem mainly happens when you are trying to navigate the frame to the first page of your application, you can work around this in the following ways:
Wait for the component containing the frame to be added to the main view.
Svelte has the tick method to help with this,
  onMount(async () => {
        await tick();
        navigate({ page: MainPage, frame: "my-frame-id" });
    })

Set the default page using the defautPage attribute of the frame
<frame defaultPage="{MainPage}">

Set the default page as child of frame
  <frame>
      <MainPage />
   </frame>

I must have had a false positive test, the tick method does not work. Re-opening

Any progress on this? I had something similar to this issue, but it was that I was navigating to a page (on same frame) as soon as the app opened, and it would crash because the component didn't exist. I did not use, however, the tick() function. I used a timeout with a value of 0 and that worked for me. However, with a frame, it does not work, even if I wait a few seconds...


🎈 3.3.0~pre1

🎈 Release
Preparation for 3.3.0~pre1 release. Making a pre-release to test new Bullet component.
Comparison to <x.y.z>: https://github.com/ignitionrobotics/ign-physics/compare/ignition-physics3_3.2.0...ign-physics3
Checklist

[x] Asked team if this is a good time for a release
[x] There are no changes to be ported from the previous major version
[x] No PRs targeted at this major version are close to getting in
[x] Bumped minor for new features, patch for bug fixes
[x] Updated changelog
[ ] Updated migration guide (as needed)
[x] Link to PR updating dependency versions in appropriate repository in ignition-release (as needed): https://github.com/ignition-release/ign-physics3-release/pull/3

Note to maintainers: Remember to use Squash-Merge

@osrf-jenkins run tests? Why did you lose a couple of them? :female_detective:


Tooltip label is incorrect on Bar chart when min is defined

Expected Behavior
When min is defined, the first tooltip label should display the label at the minimum.
ex.  when min is set to 'March', the tooltip should show 'March' as the label.
Current Behavior
currently, it displays data label two indexes down.
ex. when min is set to 'March', it displays 'May'.
Possible Solution
It seems the API slices the datasets into a subset when min or max is defined. Possible solution is to map the index of the parseVisibleItems method.
Steps to Reproduce (for bugs)

Chart type 'bar'
Set min on the chart
Hover over the first bar

Environment

Chart.js version: 2.4.0

Browser name and version: Google Chrome 54.0.2840.98

Link to your project: https://jsfiddle.net/d29yoL8u/5

Related to issue #3589 (discovered when trying to resolve this)

I am currently working on this one, @etimberg feel free to assign this to me.

ok, sounds good @Jareechang

#3620 and #3649 have fixed the same problem.
I tried the test below.
Build from the current latest code
https://jsfiddle.net/T_SAiTO/jw29rrnq/
Tool tip label of bar chart : NG
Tool tip label of horizontal bar chart : OK
Invalidated the change of #3620 from the above build.
https://jsfiddle.net/T_SAiTO/vogqedw1/3/
Tool tip label of bar chart : OK
Tool tip label of horizontal bar chart : OK
Please review again.

Invalidated the change of #3649 from the above build.
https://jsfiddle.net/T_SAiTO/mnL7wmfj/
Tool tip label of bar chart : OK
Tool tip label of horizontal bar chart : NG

Sounds like we need to revert the second change.


(PoC) feat!: add experimental support for vue 3

This PR and branch are a proof of concept and subject to change at any time

Each commit is meant as its own isolated unit for review and has comments explaining the changes.
There's a lot going on here since there has been a massive change to the vue global APIs, so I don't expect every commit to make perfect sense. Please feel free to ask for clarification. I've most certainly made a mistake somewhere.
Necessary work

[x] refactor components to remove use of vue-class-components
[x] update ts shims to work with vue 3
[x] update vue config to use vue 3 compat build
[x] update bare minimum dev deps for vue 3 compatibility
[ ] updates all dependencies (some vue-cli ones still needs attention)
[ ] address all warnings
[ ] fix broken cypress tests
[ ] fix broken integration tests
[ ] update README to indicate unstable release, meant for vue 3
[ ] tbd

Overall LGTM 👍
One question, is there any action we need to take for this commit in the future?

Definitely. This needs to get tackled ASAP. Either we re-write the tests using the new builtin vue testing tools or we figure out what the render bug is. But to be more confident about this RC, this needs to be addressed.

Apols for all the force pushes here. Had to rebase w/ main and resolve some deps conflicts.


crowdsec : Handle custom parsers/scenarios

The goal is to manage custom parsers and scenarios written by the user itself.
The idea is (if helm allow it) to have folder containing the custom parsers and scenarios and a value to enable the custom parsers and scenarios. If the value is enabled, helm with glob all the files in the folder, make configmaps and add them to the parsers and scenarios in the agents pods.

fixed here : https://github.com/crowdsecurity/helm-charts/pull/54


no duplication of imported tags (#287)

Solves #287
Yes, the solution you proposed is just simpler and better. In addition I wrote a test to verify the solution.

Thanks, replaced the test with a more appropriate one.


Update note about variables in ref property

Variables are supported for the ref property since november 2022. A link is added for additional documentation.

I've tried updating the url to adhere to the warnings above, but I am unable to correct the link.
This documentation about links from one article to another does not apply, because in the section of the text (api-desc), the markdown seems not to be parsed (it does in api-property-type right above that section).
As alternative I used a classic a-href, but that doesn't allow for URL links as described in the article.
I simply wanted to enhance the content of the documentation to help other developers, but this syntactical challenge is taking up too much time. Please feel free to transform the link to an appropriate format and complete this PR.

@Devvox93  Thank you for making this PR. We just published an update to our YAML schema reference. The new format for the YAML schema is published. The YAML schema reference now combines autogenerated portions, combined with user-editable content that can be updated by community contributors (see the README.MD in this repo for details). The look and feel of the YAML Schema pages is the same, but behind the scenes the markdown down format is different. Unfortunately that led to a big merge conflict with your PR that I was unable to resolve. However, all of your changes have made it to the updated repository resource article which will be live momentarily.


How to wrap nested object to same level

https://github.com/JohnSundell/Unbox/issues/185
I got something like
struct Wrapper {
    let foo: Foo
    let bar: Bar
}

extension Wrapper: Unboxable {
    init(unboxer: Unboxer) throws {
        self.foo = try unbox(dictionary: unboxer.dictionary)
        self.bar = try unbox(dictionary: unboxer.dictionary)
    }
}

struct Foo {
    let key1: String
    let key2: String
}

extension Foo: Unboxable {
    init(unboxer: Unboxer) throws {
        self.key1 = try unboxer.unbox(key: "key1_for_object_foo")
        self.key2 = try unboxer.unbox(key: "key2_for_object_foo")
    }
}

struct Bar {
    let key1: String
    let key2: String
}

extension Bar: Unboxable {
    init(unboxer: Unboxer) throws {
        self.key1 = try unboxer.unbox(key: "key1_for_object_bar")
        self.key2 = try unboxer.unbox(key: "key2_for_object_bar")
    }
}

and want to wrap as
{
key1_for_object_foo: "a",
key2_for_object_foo: "a",
key1_for_object_bar: "a",
key2_for_object_bar: "a"
}

Is this possible?

There might be an easier way, but I got it to work for a similar case like this:
extension Wrapper: WrapCustomizable {
    func wrap(context: Any?, dateFormatter: DateFormatter?) -> Any? {
        let fooDict: [String:Any] = (try? Wrap.wrap(object: foo)) ?? [:]
        let barDict: [String:Any] = (try? Wrap.wrap(object: bar)) ?? [:]
        return fooDict + barDict
    }
}

/////////////////

extension Foo: WrapCustomizable {
    func keyForWrapping(propertyNamed propertyName: String) -> String? {
        switch propertyName {
        case "key1":
            return "key1_for_object_foo"
        case "key2":
            return "key2_for_object_foo"
        default:
            return propertyName
        }
    }
}

extension Bar: WrapCustomizable {
    func keyForWrapping(propertyNamed propertyName: String) -> String? {
        switch propertyName {
        case "key1":
            return "key1_for_object_bar"
        case "key2":
            return "key2_for_object_bar"
        default:
            return propertyName
        }
    }
}

The solution that @bruno-rocha-movile suggests is the recommended one, use keyForWrapping() to customize the keys that an object gets wrapped using 👍


Fix bug: should use sdkInt as the property to compare

Task/Issue URL: https://app.asana.com/0/0/1205952041108121/f
Description
Bug fix:

replaces appBuildConfig.versionCode with appBuildConfig.sdkInt in the OS version guard.

Steps to test this PR
QA optional

Current dependencies on/for this PR:

develop

PR #3695

PR #3865   👈
PR #3844
PR #3840
PR #3807
PR #3773
PR #3760

PR #3761

PR #3711
PR #3703
PR #3702

PR #3734

PR #3696

This stack of pull requests is managed by Graphite.

Current dependencies on/for this PR:

develop

PR #3695

PR #3865   👈
PR #3844
PR #3840
PR #3807
PR #3773
PR #3760

PR #3761

PR #3711
PR #3703
PR #3702

PR #3734

PR #3696

This stack of pull requests is managed by Graphite.


Add a license

I'd recommend the MIT license personally, but any open source license would be nice! This would definitely encourage others to use your (very useful) control.
Thank you!

Yes sir! :) Good point!
A PR

Done! Your wish is my command :)

GNU GENERAL PUBLIC LICENSE Done.

Thanks!

Ha, wait, actually, if this uses a copyleft license we won't be able to incorporate it into our current project. Would you consider a license that allow commercial use?

Please name which license you would like me to use, and I will set it. Or just sent a PR. Thanks.

Either MIT or Apache License 2.0 would be preferred.

I used the least restrictive license possible: https://choosealicense.com/licenses/unlicense/
Hope that works for you. I'm glad the code is useful to you.

🙇


How to change arrow?

I really like this library! I was wondering how you would change the arrow icons on the left to be something more custom? For context, I'd like to have a + icon on the right instead.

Yes, that could be changed by changing the CSS you're using.
If you've added the fancy-example.css example then you could change the CSS Rule .accordion__button:before.
It could be something like this (untested, you'll need to change other CSS Rules to make this work)
.accordion__button:before {
    display: inline-block;
    content: '+'; /* note the "+" here */
    height: 10px;
    width: 10px;
    margin-right: 12px;
    transform: rotate(-45deg);
}

Thanks! :) I was able to change it that way, sorry that I didn't realize how to use ::before


pull request for e2e test at 02/02/2017 03:56:14

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Missing parentheses for sub expressions in code generated for random integer from ... to ... block

Describe the bug
When using the random integer from ... to ... block, the code generated is missing parentheses around the two bounds, where sub expressions could be expected. This results in incorrect evaluation of the order of operations (for eg, -(100 -1) = -100 +1, and not -100 -1) when using sub expressions in the from and to fields.
To Reproduce
Steps to reproduce the behavior:

Go to lab.open-roberta.org.
Select any robot (EV3 leJOS 0.9.1 for instance).
Import the following test program: ev3-random-int-test.xml.txt.
Click on Open/close source code view.
Check the code to see incorrect evaluation of the sub expressions (see screenshot below).

Expected behavior
The generated code should contain the two bounds in parentheses.
Screenshots

Device information

Type: Desktop
OS: Ubuntu 20.04
Browser: Firefox v112.0.2

Additional context
Seems to be a problem concerning Java and C++ robots, since Python uses a helper method to generate the random integer. All robots should be checked nonetheless. Also, relevant test should be added to the integration test suite.

fixed and reviewed


[Spanish] localize 'Definition Template'

Localize the content/en/_TEMPLATE.md document to Spanish

Hello there,
I would like to work on this could you please assign me this!
Thank you :)

Thanks for participating into the CNCF Glossary project. The Spanish translation team would like to facilitate your contribution's journey, so please share your goals and/or skills in order to assist you better. We also encourage new contributors to participate in their native speaking language.

@electrocucaracha estoy libre para trabajar en este issue. Gracias!


Destructuring union types with string literals does not work in function parameters

Issue
Flow throws cryptic error messages when destructuring a union type that contains a string literal inside function parameters. However, if you destructure with the same fields inside the function body, no errors are thrown.
Reproduced using Flow 0.73.0: Try Flow
type MyType = { __typename: 'A' }  | { __typename: 'B' };

// Destructuring in function body - works
const works = (t: MyType) => {
    const { __typename } = t;
    if (__typename === 'A') {
    	console.log('A');
    }
}

// Destructuring in function params - does NOT work
const doesntWork = ({ __typename }: MyType) => {
    if (__typename === 'A') {
    	console.log('A');
    }
}

Errors
12: const doesntWork = ({ __typename }: MyType) => {
                          ^ string literal `B` [1] is incompatible with string literal `A` [2].
References:
1: type MyType = { __typename: 'A' }  | { __typename: 'B' };
                                                      ^ [1]
1: type MyType = { __typename: 'A' }  | { __typename: 'B' };
                               ^ [2]

Expected
Behavior inside the function and inside the function parameters is the same.
Actual
Behavior inside the function parameters throws errors, while doing the exact same destructuring is fine inside the function body.
Related Tickets
https://github.com/facebook/flow/issues/5461
https://github.com/facebook/flow/issues/5745

Yeah, this is one worth looking into. Thanks for the report and finding the related tickets 👍

It seems to work fine when you provide a default value to the destructured property. Try Flow

Interesting, it "works" (no errors) with a default value that's not a valid string literal based on the union type:
Try Flow

Welp, looks like a general problem with destructuring in params then

any update here ?
:)

The code looks also not work,
type Props = {
  value: boolean | string
}

function test({ value = true }: Props) {}

show errors:
5: function test({ value = true }: Props) {}
                   ^ boolean [1] is incompatible with string [2].
References:
2:   value: boolean | string
            ^ [1]
2:   value: boolean | string
                      ^ [2]

5: function test({ value = true }: Props) {}
                           ^ boolean [1] is incompatible with string [2].
References:
5: function test({ value = true }: Props) {}
                           ^ [1]
2:   value: boolean | string
                      ^ [2]


Exception with aggregation in 4.4.0

Description:
The error occured in WSO2-SP 4.4.0 when trying to use read-only aggregation from @store.
In the WSO2-SP 4.3.0 it works fine.

osgi> [2019-07-03 23:03:19,540] ERROR
{org.wso2.siddhi.core.stream.StreamJunction}

Error in 'demoError1' after consuming events from Stream 'RebuildCmd', Error executing 'store_select_query_TradeClientAggregation_YEARS', null. Hence, dropping event 'StreamEvent

{ timestamp=1562184199538, beforeWindowData=null, onAfterWindowData=null, outputData=[1], type=CURRENT, next=null}
' org.wso2.siddhi.core.exception.StoreQueryRuntimeException: Error executing 'store_select_query_TradeClientAggregation_YEARS', null
at org.wso2.siddhi.core.query.SelectStoreQueryRuntime.execute(SelectStoreQueryRuntime.java:68)
at org.wso2.siddhi.core.aggregation.RecreateInMemoryData.recreateInMemoryData(RecreateInMemoryData.java:123)
at org.wso2.siddhi.core.aggregation.AggregationRuntime.recreateInMemoryData(AggregationRuntime.java:365)
at org.wso2.siddhi.core.aggregation.AggregationRuntime.find(AggregationRuntime.java:211)
at org.wso2.siddhi.core.query.processor.stream.window.AggregateWindowProcessor.find(AggregateWindowProcessor.java:78)
at org.wso2.siddhi.core.query.input.stream.join.JoinProcessor.process(JoinProcessor.java:87)
at org.wso2.siddhi.core.query.processor.stream.window.LengthWindowProcessor.process(LengthWindowProcessor.java:137)
at org.wso2.siddhi.core.query.processor.stream.window.WindowProcessor.processEventChunk(WindowProcessor.java:65)
at org.wso2.siddhi.core.query.processor.stream.AbstractStreamProcessor.process(AbstractStreamProcessor.java:123)
at org.wso2.siddhi.core.query.input.stream.join.JoinProcessor.process(JoinProcessor.java:123)
at org.wso2.siddhi.core.query.input.ProcessStreamReceiver.processAndClear(ProcessStreamReceiver.java:187)
at org.wso2.siddhi.core.query.input.ProcessStreamReceiver.process(ProcessStreamReceiver.java:97)
at org.wso2.siddhi.core.query.input.ProcessStreamReceiver.receive(ProcessStreamReceiver.java:122)
at org.wso2.siddhi.core.stream.StreamJunction.sendEvent(StreamJunction.java:181)
at org.wso2.siddhi.core.stream.StreamJunction$Publisher.send(StreamJunction.java:405)
at org.wso2.siddhi.core.query.output.callback.InsertIntoStreamCallback.send(InsertIntoStreamCallback.java:56)
at org.wso2.siddhi.core.query.output.ratelimit.OutputRateLimiter.sendToCallBacks(OutputRateLimiter.java:97)
at org.wso2.siddhi.core.query.output.ratelimit.PassThroughOutputRateLimiter.process(PassThroughOutputRateLimiter.java:46)
at org.wso2.siddhi.core.query.selector.QuerySelector.process(QuerySelector.java:98)
at org.wso2.siddhi.core.query.input.ProcessStreamReceiver.processAndClear(ProcessStreamReceiver.java:187)
at org.wso2.siddhi.core.query.input.ProcessStreamReceiver.process(ProcessStreamReceiver.java:97)
at org.wso2.siddhi.core.query.input.ProcessStreamReceiver.receive(ProcessStreamReceiver.java:133)
at org.wso2.siddhi.core.stream.StreamJunction.sendEvent(StreamJunction.java:204)
at org.wso2.siddhi.core.trigger.StartTrigger.start(StartTrigger.java:74)
at org.wso2.siddhi.core.SiddhiAppRuntime.startWithoutSources(SiddhiAppRuntime.java:398)
at org.wso2.siddhi.core.SiddhiAppRuntime.start(SiddhiAppRuntime.java:380)
at org.wso2.carbon.siddhi.editor.core.internal.DebugRuntime.start(DebugRuntime.java:68)
at org.wso2.carbon.siddhi.editor.core.internal.DebugProcessorService.start(DebugProcessorService.java:37)
at org.wso2.carbon.siddhi.editor.core.internal.EditorMicroservice.start(EditorMicroservice.java:650)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.wso2.msf4j.internal.router.HttpMethodInfo.invokeResource(HttpMethodInfo.java:187)
at org.wso2.msf4j.internal.router.HttpMethodInfo.invoke(HttpMethodInfo.java:143)
at org.wso2.msf4j.internal.MSF4JHttpConnectorListener.dispatchMethod(MSF4JHttpConnectorListener.java:218)
at org.wso2.msf4j.internal.MSF4JHttpConnectorListener.lambda$onMessage$57(MSF4JHttpConnectorListener.java:129)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at org.wso2.extension.siddhi.store.rdbms.RDBMSEventTable.getConnection(RDBMSEventTable.java:1423)
at org.wso2.extension.siddhi.store.rdbms.RDBMSEventTable.getConnection(RDBMSEventTable.java:1411)
at org.wso2.extension.siddhi.store.rdbms.RDBMSEventTable.query(RDBMSEventTable.java:1712)
at org.wso2.siddhi.core.table.record.AbstractQueryableRecordTable.query(AbstractQueryableRecordTable.java:90)
at org.wso2.siddhi.core.query.SelectStoreQueryRuntime.execute(SelectStoreQueryRuntime.java:55)
... 39 more

Suggested Labels:

Suggested Assignees:

Affected Product Version:
OS, DB, other environment details and versions:
Steps to reproduce:
Create a aggregation with store in DB Postgres or Mysql. Put several events in the aggregation.
Run the second script with read-only aggregation:
`@App:name("demoError1")
@App:description("Aggregation with store exception.")
-- Trade aggregation, read-only --
define stream TradesVolumeFake(    timestamp long,    exchange string,    client_id string,    trade_volume double );
@store(type = 'rdbms' , datasource = 'AF2_DB') @purge(enable="false")
define aggregation TradeClientAggregation
from TradesVolumeFake
select exchange, client_id,
sum(trade_volume) as totalVolume,
max(trade_volume) as maxVolume,
min(trade_volume) as minVolume,
count() as countTrades
group by exchange, client_id
aggregate  by timestamp every sec ... year;
define trigger TriggerPreLoadTrades at 'start';
define stream RebuildCmd (t int);
@sink(type='log', prefix='CalcStream')
define stream CalcStream(_timestamp long, exchange string, client_id string, countTrades long);
from TriggerPreLoadTrades select 1 as t insert into RebuildCmd;
from RebuildCmd as cmd right outer join  TradeClientAggregation as agg
on not (agg.exchange is null) --agg.exchange =='moex.eq' and  agg.client_id == 'BC15981'
within
--   '2019-05-09 00:00:00',  '2019-05-15 00:00:00' -- for tests only --
time:timestampInMilliseconds(time:dateSub(time:dateFormat(currentTimeMillis(), 'yyyy-MM-dd 00:00:00.000'),100,'DAY','yyyy-MM-dd HH:mm:ss.SSS')), -- 100 DAYS is parameter
time:timestampInMilliseconds(time:dateFormat(currentTimeMillis(), 'yyyy-MM-dd 00:00:00.000'))
per 'minutes'
select
agg.AGG_TIMESTAMP as _timestamp,
agg.exchange as exchange,
agg.client_id as client_id,
agg.countTrades as countTrades
--- time:dateFormat(agg.AGG_TIMESTAMP, 'yyyy-MM-dd HH:mm:ss') as time
order by _timestamp
---limit 10
insert into CalcStream;`
Related Issues:

@p-litvinov Was this run on SP editor or worker runtime?

I had tried to run it on both runtimes: editor and worker.
Every runtime has the issue in 4.4.0.
But with 4.3.0 version it works without any exception with worker and editor.

It seems the data source is not initialized properly, did you see any other errors? Was the app deployed successfully?

Yes. App is deployed successfully and data source is initialized properly.
I have another app where this aggregation with the same data source works in write mode. And it works fine.
In the 4.3.0 both apps work fine with the data source.

Maybe in the 4.4.0 it needs some additional rule in the app when using an aggregation in the read only mode?

No, it does not, read-only mode need not connect to a source that's all. Siddi app with the read-only aggregation lets define an event table and see if we can connect to the data source.
This is not reproducible in our end.


Image reassembly: CDS subtraction and deinterleaving

There's no direct documentation for the Little Dave camera. Technical information must be aggregated from Chun's TurboSM code, general documentation for camera hardware, direct observation, and correspondence with Chun.

Camera is behaving as Chun would expect.  subtractCDS() is a function in SM_take_tb-Chun.cpp which gets called when the cdsFlag is set.
Making sense of the algorithm used for this Correlated double sampling (CDS) noise reduction technique, it seems like this code is the heart of the method ( "The dark columns are the reset values for the next frame - image part of the same channel (16 channels for 2K)." ) --
 for (row = 0; row < rows; ++row) {
     for (col = cols; col; --col)
            *new_data++ = CDS_add + *old_data++ - *reset_data++;
      new_data += cols;
      reset_data += cols;
      old_data += cols;
}

Meyer produced the following image with a single channel acquisition. The upper right quadrant is false data (Meyer said he remapped top 1/4 to upper left quadrant, but left remnants of the raw data).
Seems the reset / data stripes are actually appearing as the noticeable horizontal stripes (rather than the smaller vertical stripes of single-diode width). This might make sense with the number of stripes expected being 4. In Chun's code, the number of stripes is taken to match the number of PDV channels. However, it's not entirely clear to me whether I'm looking at 1 or 2 pairs of stripe/reset regions in the first quadrant.
The white column pattern doesn't look like camera noise -- maybe it is an artifact that will disappear when acquiring all 4 channels

Meyer produced the following image with a single channel acquisition. The upper right quadrant is false data (Meyer said he remapped top 1/4 to upper left quadrant, but left remnants of the raw data).
Seems the reset / data stripes are actually appearing as the noticeable horizontal stripes (rather than the smaller vertical stripes of single-diode width). This might make sense with the number of stripes expected being 4. In Chun's code, the number of stripes is taken to match the number of PDV channels. However, it's not entirely clear to me whether I'm looking at 1 or 2 pairs of stripe/reset regions in the first quadrant.
The white column pattern doesn't look like camera noise -- maybe it is an artifact that will disappear when acquiring all 4 channels

if (strstr(cameraType, "DM2K")) {
		TwoK_flag = true;
		QuadFlag = FALSE;
		pdv_chan_num = 4;
	}

if (strstr(cameraType, "DM2K")) {
		TwoK_flag = true;
		QuadFlag = FALSE;
		pdv_chan_num = 4;
	}

Helpful info from Chun clarifying the specs in documentation/quadrant_readout.docx:
Let’s just focus on 1 quadrant (1 pdv channel). Let’s say you are working on 4000Hz - 512x80 CDSBIN4. Each quadrant you;ld be 256x40. The CDS data would be 512x40 because it always double the width. There 4 camera channels within each pdv channel, 256/4 = 64. So it means each  camera channel has 64 pixels per row.
Before deinterleaving, the raw data order for each row comes in like this (d for pixel data, r for pixel reset, which would be used for the next frame):
d1, d64, d128, d192, d2, d65, d129, d192, d3,…d256, r1, r64, r128, r192… r256 (total 512)
All other rows are the same.
If you shine light to the sensor, you will see the bright section is the data, and dark section is the reset for the next frame.
My notes:
I wasn't aware of the fact that the reason for the interleaving was there are camera channels within each PDV channel. This affects the code because I originally thought the interleaving was supposed to interleave across PDV channels, whereas in reality it only interleaves across camera channels within a quadrant.
I didn't know we needed to double the width to accomodate CDS. Below is suggested fix sent to Meyer.
Suggested following fix to Meyer to read out raw data, which I can use to get the image reassembly code correct. Double the memcpy striding:
memcpy(memory + (2*array_diodes*i), image, 2*array_diodes);

so that we stride the memory array by a full quadrant size (2 * array_diodes) for each image (the first quadrant of the i^th is read out).
To accommodate needing twice as much memory, you should go to MainControllerAcqui.cpp to make sure that the call from MainController:takeRli to DapController::takeRli allocates enough memory. Currently, this allocation is:
short *memory=new short[bufferSize*475];

where bufferSize is only the size of a single quadrant, and I think 475 is the number of images needed for taking RLI. I think we may want to multiply this by 4 to account for the fact that bufferSize is now a quadrant size, not an image size, and then by 2 to account for CDS (for a total factor of 8).

Helpful info from Chun clarifying the specs in documentation/quadrant_readout.docx:
Let’s just focus on 1 quadrant (1 pdv channel). Let’s say you are working on 4000Hz - 512x80 CDSBIN4. Each quadrant you;ld be 256x40. The CDS data would be 512x40 because it always double the width. There 4 camera channels within each pdv channel, 256/4 = 64. So it means each  camera channel has 64 pixels per row.
Before deinterleaving, the raw data order for each row comes in like this (d for pixel data, r for pixel reset, which would be used for the next frame):
d1, d64, d128, d192, d2, d65, d129, d192, d3,…d256, r1, r64, r128, r192… r256 (total 512)
All other rows are the same.
If you shine light to the sensor, you will see the bright section is the data, and dark section is the reset for the next frame.
My notes:
I wasn't aware of the fact that the reason for the interleaving was there are camera channels within each PDV channel. This affects the code because I originally thought the interleaving was supposed to interleave across PDV channels, whereas in reality it only interleaves across camera channels within a quadrant.
I didn't know we needed to double the width to accomodate CDS. Below is suggested fix sent to Meyer.
Suggested following fix to Meyer to read out raw data, which I can use to get the image reassembly code correct. Double the memcpy striding:
memcpy(memory + (2*array_diodes*i), image, 2*array_diodes);

so that we stride the memory array by a full quadrant size (2 * array_diodes) for each image (the first quadrant of the i^th is read out).
To accommodate needing twice as much memory, you should go to MainControllerAcqui.cpp to make sure that the call from MainController:takeRli to DapController::takeRli allocates enough memory. Currently, this allocation is:
short *memory=new short[bufferSize*475];

where bufferSize is only the size of a single quadrant, and I think 475 is the number of images needed for taking RLI. I think we may want to multiply this by 4 to account for the fact that bufferSize is now a quadrant size, not an image size, and then by 2 to account for CDS (for a total factor of 8).

Close, but some dimensions must be off.

Close, but some dimensions must be off.

The last piece of the puzzle was the channel readout order. In Chun's code, the channelOrder of the 4 camera channels is { 3, 2, 0, 1 }. I produced the above image with a channel readout order of { 2, 3, 1, 0 }. I'm not sure what the reason is for this difference.

The last piece of the puzzle was the channel readout order. In Chun's code, the channelOrder of the 4 camera channels is { 3, 2, 0, 1 }. I produced the above image with a channel readout order of { 2, 3, 1, 0 }. I'm not sure what the reason is for this difference.

Image Size Calculations
The char versus short size also affects the image size calculations. It might be causing the confusion with what you've noticed as seemingly inconsistent image sizes reported by PDV:
Unsigned char values are 1-byte.
Each unsigned short is 2 bytes, which means that when PDV reports:
image size (bytes per image) 10240
the actual array size is 5120 pixels, each pixel represented by a 2-byte short value.
Recommendations for pdv_setsize
Any changes we need to make to image dimensions should be done through the settings and directives in the .cfg files, rather than through pdv_setsize.
I don't believe pdv_setsize is needed based on 1) LilDave not needing superframes and 2) given the way PhotoZ is structured.
Setting the size manually with pdv_setsize would only be needed for one of two reasons:

High-speed camera configurations using superframe (Chun)
To transition between camera programs without multiple initcam calls. Probably not safe unless we have a very detailed understanding of the PDV API.

For reason #1 -- Chun's recommendation: "In general, once you load the *.cfg through initcam, the correct width and height are loaded." Chun described pdv_setsize only for superframe'd cameras such as "DaVinci". The idea is that the readout needs to be in batches of 10 for the software to keep up with the hardware, and Chun's method for this is to use pdv_setsize to override to superframe image sizes.
For reason #2 -- PhotoZ just uses multiple calls to initcam. No need to transition between image sizes manually.
Just for reference, a summary of how PhotoZ architecture uses multiple initcam calls to transition between camera programs:
When a user selects a new camera setting in PhotoZ, the choice of camera program (0-7) is stored in the DapController global object, dc. Only when the buttons trigger MainController's acqui or takeRli does the dc camera program setting get loaded into the newly created Camera object. The Camera object calls initcam, passing the .cfg filename based on that program setting, which sets the proper image height and width. Only after the Camera object is destroyed may the user select a new program, which will create a new Camera object to call initcam again with the new program setting.
Given that initcam is meant to be a command-line program, I'd be surprised if it weren't ok to call it multiple times. Since PDV's source file initcam.c code commeents mention freeing buffers needed between multiple calls to pdv_initcam, it seems like the PDV programmers took multiple calls into account.

Image Size Calculations
The char versus short size also affects the image size calculations. It might be causing the confusion with what you've noticed as seemingly inconsistent image sizes reported by PDV:
Unsigned char values are 1-byte.
Each unsigned short is 2 bytes, which means that when PDV reports:
image size (bytes per image) 10240
the actual array size is 5120 pixels, each pixel represented by a 2-byte short value.
Recommendations for pdv_setsize
Any changes we need to make to image dimensions should be done through the settings and directives in the .cfg files, rather than through pdv_setsize.
I don't believe pdv_setsize is needed based on 1) LilDave not needing superframes and 2) given the way PhotoZ is structured.
Setting the size manually with pdv_setsize would only be needed for one of two reasons:

High-speed camera configurations using superframe (Chun)
To transition between camera programs without multiple initcam calls. Probably not safe unless we have a very detailed understanding of the PDV API.

For reason #1 -- Chun's recommendation: "In general, once you load the *.cfg through initcam, the correct width and height are loaded." Chun described pdv_setsize only for superframe'd cameras such as "DaVinci". The idea is that the readout needs to be in batches of 10 for the software to keep up with the hardware, and Chun's method for this is to use pdv_setsize to override to superframe image sizes.
For reason #2 -- PhotoZ just uses multiple calls to initcam. No need to transition between image sizes manually.
Just for reference, a summary of how PhotoZ architecture uses multiple initcam calls to transition between camera programs:
When a user selects a new camera setting in PhotoZ, the choice of camera program (0-7) is stored in the DapController global object, dc. Only when the buttons trigger MainController's acqui or takeRli does the dc camera program setting get loaded into the newly created Camera object. The Camera object calls initcam, passing the .cfg filename based on that program setting, which sets the proper image height and width. Only after the Camera object is destroyed may the user select a new program, which will create a new Camera object to call initcam again with the new program setting.
Given that initcam is meant to be a command-line program, I'd be surprised if it weren't ok to call it multiple times. Since PDV's source file initcam.c code commeents mention freeing buffers needed between multiple calls to pdv_initcam, it seems like the PDV programmers took multiple calls into account.

Documenting technical details for byte alignment issue.
Short version: Little Dave reads out 2-byte pixels. Use a unsigned short* pointer to manipulate the raw image pixel-by-pixel.
Long explanation (for C++ beginners):
Meyer ran into an issue when trying to print out pixel values as follows:
for (int k = 0; k < array_diodes; k++) cout << "DapC line 667  " << k << " " << short (image[k]) << "\n";

The type of an array affects how C++ behaves when you use pointer arithmetic or access the array by index. In the above code, image is of type unsigned char*, so the kth char is found, i.e. we use 1-byte alignments for the access. It doesn't matter that you cast to short just after, because all that does is allow that 1-byte char to be padded with a prefix byte of zeros if needed.
What we really need is for the kth element to be found using 2-byte alignment, i.e find the kth short.
So the fix for the printout should be to 1) declare 'memory' as an unsigned short* and 2) update to this (look at the kth short of the last RLI image):
for (int k = 0; k < array_diodes; k++) cout << "DapC line 667  " << k << " " << memory[array_diodes * (rliPts-1) + k] << "\n";

Similarly, when we are "Arranging Data from Memory to traceData" on line 79-83 of MainControllerAcqui, having the wrong type will cause this to index into half-pieces of shorts, since our indexes are treated as 1-byte aligned rather than 2-byte aligned. This becomes an issue here:
traceData[i][j]=memory[i+j* bufferSize];

So, again, the 'memory' array should remain unsigned short* as it was before, to avoid more alignment issues. Yes, the return type of pdv_wait_image is unsigned char*, but memcpy handles the cast implicitly from the unsigned char* image to the unsigned short* memory as long as we tell it the correct number of bytes to copy.

Documenting technical details for byte alignment issue.
Short version: Little Dave reads out 2-byte pixels. Use a unsigned short* pointer to manipulate the raw image pixel-by-pixel.
Long explanation (for C++ beginners):
Meyer ran into an issue when trying to print out pixel values as follows:
for (int k = 0; k < array_diodes; k++) cout << "DapC line 667  " << k << " " << short (image[k]) << "\n";

The type of an array affects how C++ behaves when you use pointer arithmetic or access the array by index. In the above code, image is of type unsigned char*, so the kth char is found, i.e. we use 1-byte alignments for the access. It doesn't matter that you cast to short just after, because all that does is allow that 1-byte char to be padded with a prefix byte of zeros if needed.
What we really need is for the kth element to be found using 2-byte alignment, i.e find the kth short.
So the fix for the printout should be to 1) declare 'memory' as an unsigned short* and 2) update to this (look at the kth short of the last RLI image):
for (int k = 0; k < array_diodes; k++) cout << "DapC line 667  " << k << " " << memory[array_diodes * (rliPts-1) + k] << "\n";

Similarly, when we are "Arranging Data from Memory to traceData" on line 79-83 of MainControllerAcqui, having the wrong type will cause this to index into half-pieces of shorts, since our indexes are treated as 1-byte aligned rather than 2-byte aligned. This becomes an issue here:
traceData[i][j]=memory[i+j* bufferSize];

So, again, the 'memory' array should remain unsigned short* as it was before, to avoid more alignment issues. Yes, the return type of pdv_wait_image is unsigned char*, but memcpy handles the cast implicitly from the unsigned char* image to the unsigned short* memory as long as we tell it the correct number of bytes to copy.

This is the 300th image read out while we're taking the RLI.

allocated size      40960
image size (bytes per image) 40960
buffer size      40960
image height      20
cam height      20
image width      1024
cam width       1024
PDV said that the image size was 40960 bytes. Following Chun's current instructions for a 1024px row, we ended up with a 1024 x 10 px image for this quadrant.
This is the 450th image read out while we're taking the RLI.

Aligning all RLI images end-to-end, we don't see much except that the overall intensity is increasing over time (full data at https://drive.google.com/file/d/1nmx7Y68269VOFn3oVDTlZDf65Asw5_zz/view?usp=sharing):

Zooming in at this image on just the first 60 rows, there's some strange structure. The latter structure seems to persist for the rest of the image.
Rows 0 to 120 after CDS subtraction:

This introduces yet another puzzle.
Also, row size of 1024 px is unexpected. Is the expected row size of width 256 px met via downsampling or cropping? Meyer emailed Chun to ask.

Empirically arrived at this. Appears to be some bug causing the artifacts; not sure why there's a difference in overall intensity between the upper and lower halves; not sure why image appears to have discontinuity between halves. But this appears to reveal the true quadrant-specific camera channel orders.

int channelOrders[16] =
{ 2, 3, 1, 0,
  1, 0, 2, 3,
  2, 3, 1, 0,
  1, 0, 2, 3, };


In web browser the swipping function to close the drawer is not present.

.

swipe function always works on touch devices, if it is not then it won't work.


GATsol failed on test

You have two proteins examples in Predict. I assume those are your test cases, and should be well tested. However, when I run bash ./tools/Predict.sh, it failed. I checked step by step, and found the first step bash ./tools/pdb_to_cm/pdb_to_cm.sh actually requires to activate the pyg conda env, which we don't have.
I believe we should not use the shell scripts. I will try the python scripts.

Finally, I found it is matplotlib version issue, use 3.4.3. Problem resolved.

bash ./tools/pdb_to_cm/pdb_to_cm.sh

Sorry for the delayed response, and thank you for the feedback. Are all the issues resolved now? Is the command bash ./tools/pdb_to_cm/pdb_to_cm.sh running correctly? Please let me know if there's anything else I can assist with.

all work now. Thanks,

One more question: when using GATSol for analysing antibody solubility, the fasta should include both heavy and light chains. How to put them together in one .fasta file?


feat: add customizable calendar icon

🚀 Proposal:
Enhance the customization capabilities of the calendar icon in the DatePicker component, allowing the use of custom icons and not solely the default provided icon.
🏗 Changes Made:

New icon Property:

Introduced an icon prop that accepts either a string (icon class name) or a React component (e.g., a custom SVG).
If icon is a string, an <i> element is rendered with that string as its class name.
If icon is a React component, it is rendered as-is.

New calendarIconClassName Property:

Introduced an additional calendarIconClassName prop for further icon styling customization.
The value of calendarIconClassName will be added as an additional CSS class to the calendar icon, allowing enhanced style customization.

Code Refactor:

Extracted the calendar icon rendering into a separate component (CalendarIcon) for improved code readability and maintainability.
Updated the rendering logic in the renderInputContainer method to utilize the new CalendarIcon component.

🎯 Motivation:
The inspiration behind these changes is to bestow developers with greater control over the DatePicker's display. By enabling calendar icon customization, we enhance the developers' UI control over the DatePicker without sacrificing functionality or user experience.
👀 How to Use the New Feature:
You can now utilize various renowned icon libraries, such as Font Awesome, Material Icons, or your custom SVGs, with the new icon prop. Here are examples of how to implement this:
// Using an icon class name from Font Awesome.
<DatePicker
  showIcon={true}
  icon="fa fa-calendar-alt"
/>

// Using an icon class name from Material Icons.
<DatePicker
  showIcon={true}
  icon="material-icons calendar-icon"
/>

// Using a React component or custom SVG.
import MyCustomIcon from './path-to-icons/MyCustomIcon';

<DatePicker
  showIcon={true}
  icon={<MyCustomIcon />}
/>

🔄 Backward Compatibility:
It is pivotal to note that these changes have been implemented to ensure backward compatibility. Existing implementations of the DatePicker using the showIcon prop will continue to function as before, displaying the default calendar icon if no icon prop is provided.

📝 Final Notes:
These proposed changes aim to deliver a flexible solution to accommodate various needs without introducing significant overhead to the codebase or altering the API properties in a way that disrupts existing implementations. I am open to feedback and suggestions to refine this proposal and hope that this change brings valuable additions to the react-datepicker user community.

@martijnrusschen

This looks really useful, and thanks for writing so much in the PR description.
The only comment I really have for improvement is it could be nice to have some tests for this.
 Dallas
Reviewed with ❤ by PullRequest

Hi Dallas,
Absolutely! I've attached a few, looking forward to your feedback! 😄

Cheers!

Hey @martijnrusschen!
I'm Francisco, and I've been poking around and contributing a bit to react-datepicker lately. Just shot a PR your way with a feature that allows for more versatile calendar icon customization. Have you had a chance to take a look? I’d love to hear your thoughts and find out if there’s a chance we could merge it into main.
Along the way, I've also been thinking about a couple of things that could be cool for the project. For instance, I'm considering playing around with VitePress to propose a redesign of the documentation website. It’s not bad as it stands, but I’ve got some ideas that might make it a bit more polished and user-friendly. Would you be open to discussing this? I'm keen on continuing to contribute to the project, both in improvements and solving issues.
Looking forward to your feedback on the PR and chatting about these ideas.
Cheers!
Francisco

@frankops11 Thanks for your contribution. I'd love to hear your thoughts on improving the documentation site. The component has significantly grown over the years and could use some rework to make it more future proof.

@frankops11 Thanks for your contribution. I'd love to hear your thoughts on improving the documentation site. The component has significantly grown over the years and could use some rework to make it future proof.

Hey, thanks a lot for merging the PR and for being open to dialogue about improving the documentation site!
I'm particularly excited about infusing the documentation site with a modern, sleek aesthetic, and VitePress strikes me as an ideal tool for this. Despite its Vue.js foundation, we can utilize Whyframe to render React previews and examples. This would not only allow users to explore live demos but also interact with and understand the code in an approachable manner.
Diving into react-datepicker component enhancements:
TypeScript Compatibility: Generating or exposing TypeScript definitions should enhance the experience for TypeScript projects. A full TypeScript migration is in my thoughts too but let's indeed tread step by step.
Enhanced Customization: Implementing a root of CSS variables to facilitate user customization is another pivotal step forward. Drawing inspiration from the Swiper library and its philosophy, we can provide a quick and intuitive customization path, enhancing user experience while preserving functionality.
All of these considerations and potential improvements remain faithfully within the aesthetic and professional identity of HackerOne, ensuring that react-datepicker continues to flourish both in usability and community engagement.
Eager to dive into your thoughts and, upon approval, immerse myself in implementing these enhancements!
Warm regards,
Francisco

Let's move this discussion to an issue or discussion so we can chat about the initiatives.


Create a SECURITY_CONTACTS file.

As per the email sent to kubernetes-dev[1], please create a SECURITY_CONTACTS
file.
The template for the file can be found in the kubernetes-template repository[2].
A description for the file is in the steering-committee docs[3], you might need
to search that page for "Security Contacts".
Please feel free to ping me on the PR when you make it, otherwise I will see when
you close this issue. :)
Thanks so much, let me know if you have any questions.
(This issue was generated from a tool, apologies for any weirdness.)
[1] https://groups.google.com/forum/#!topic/kubernetes-dev/codeiIoQ6QE
[2] https://github.com/kubernetes/kubernetes-template-project/blob/master/SECURITY_CONTACTS
[3] https://github.com/kubernetes/community/blob/master/committee-steering/governance/sig-governance-template-short.md

/assign @deepak-vij

Thank you for creating a SECURITY_CONTACTS file. Please /close the issue.
/close


FOIA menu bar

The FOIA menu bar on the top of the homepage needs to be removed. We have decided to just keep it at the bottom right of the page, where it is also currently located (ie, leave that one there.

Ok, I've fixed this, but I wanted to also note that the FOIA link in the menu bar used to be under the "Reports" section of the menu bar, which makes sense since "FOIA Reports" comprises most of that section.  So it might make sense to move it back under "Reports" rather than removing it entirely from the top navbar.
In any case, though, for now I've followed this issue literally and just removed it entirely from the nav bar. We can open a separate issue if we decide to bring it back in under the "Reports" section if we want.


Fix up doc comments

Motivation
Unblock https://github.com/apple/swift-openapi-runtime/pull/122#issuecomment-2415982172
Modifications
Fixed up a doc comment.
Result
No more warnings with Swift 6 compiler docc.
Test Plan
Verified locally.

Will be merged as part of #122.


File not found on launch

Just pulled up a Mint VM. Ran the sh successfully.
navitgated to localhost: File not found.

could you check docker ps in you terminal? are 3 containers running?

Yup.

Please let me know if this is an easy thing I've overlooked or something!

ok, the problem is the php image. I pushed a new version to docker hub (instead of ghcr). Please clone the project again and delete all images locally.