Adds docstrings for build_ephem_interpolant()

Adds docstrings for build_ephem_interpolant().
Please, tell me if I got anything wrong!

Thanks for your pull request @Sedictious! Notice that the "quality" step found some issues:
src/poliastro/ephem.py:15:1: W293 blank line contains whitespace
src/poliastro/ephem.py:27:1: W293 blank line contains whitespace
src/poliastro/ephem.py:32:1: W293 blank line contains whitespace

To check these yourself, I recommend running tox -e check before committing or pushing.

@Juanlu001 Oops sorry, my bad! I tested locally and everything should run as expected.

Merging, thanks!


Consider parsing three-character hex color codes

CSS allows for the specification of colors as three hexadecimal digits; #39C is identical to #3399CC.
It would be great if the library was able to parse these natively via an extension to strToColor.

Feature added in commit #25218e4


Sentinel + Haproxy

Hi,
I have 1 sentinel ip, 1 haproxy master ip, 1 haproxy replica ip. I have tried specifying the sentinel ip address. I tried haproxy master + haproxy replica. I tried specifying haproxy master + haproxy replica + sentinel, but none of the options could work. I always get error(All sentinels are unreachable. Retrying from scratch after 10ms. Last error: Connection is closed.) Can you help me how to configure caching to work?

Example of my config:
module.exports = {   redis: {     config: {       connections: {         default: {           connection: {             sentinels: [               { host: 'localhost', port: 26379 },             ],             name: 'rendomName',           },           settings: {             debug: false,           },         },       },     },   }, };

I doubt this is related to my plugin, have you test this with something like redis insights?

Closing as no response


Added * to remove issue where LabNet has # at end

Change for consideration on addressing issue with Ethernet interfaces have a number at the end.  Obviously if there's a cleaner way to do it, it should be done that way.

Additional details of current functionality.
 Enable-Internet
        This is the Enable-Internet script. This script will perform the following:

        * Enable Internet to the VM's using NAT

        * Note! - If this generates an error, you are already enabled, or one of the default settings below
                  does not match your .PSD1 configuration

Get-NetAdapter : No MSFT_NetAdapter objects found with property 'Name' equal to 'vethernet (LabNet)'.  Verify the
value of the property and retry.
At C:\Program Files\WindowsPowerShell\Modules\PSAutoLab\4.3.0\functions\public.ps1:418 char:14
+ ...    $Index = Get-NetAdapter -name "vethernet ($LabSwitchName)" | Selec ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (vethernet (LabNet):String) [Get-NetAdapter], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound_Name,Get-NetAdapter

Name                             : LabNat
ExternalIPInterfaceAddressPrefix :
InternalIPInterfaceAddressPrefix : <IP_ADDRESS>/24
IcmpQueryTimeout                 : 30
TcpEstablishedConnectionTimeout  : 1800
TcpTransientConnectionTimeout    : 120
TcpFilteringBehavior             : AddressDependentFiltering
UdpFilteringBehavior             : AddressDependentFiltering
UdpIdleSessionTimeout            : 120
UdpInboundRefresh                : False
Store                            : Local
Active                           : True

It looks like this shouldn't be a problem but before I merge it, I'd like to know what result you see when you run this command:
Get-NetAdapter -name "vethernet (LabNet)*"

and this
get-vmswitch lab*

I am puzzled as to how you ended up with more than one item.


Add graceful shutdown support

This will change shutdown behaviour to wait for all multiplayer rooms and spectator sessions to end before shutting down the server. Until now I've been manually managing this with two deploys. The new behaviour is required to deploy to kubernetes, where the application lifetime will be automatically managed.
This works well because websocket connections persist to existing server instances, but new connections will be directed to the fresher instance. Client side handling of the new The server is shutting down. error message allows clients which are attempting to start new spectator sessions or multiplayer rooms to first trigger a reconnect and find the newer server.
Eventually we may want to use multiple endpoints or sticky cookies/headers to persist server across connection loss (aka cloudflare support, since cloudflare arbitrarily drops websocket connections) but for now we are avoiding this by dropping cloudflare temporarily.
Not sure if tests can be added for this kind of coverage. You'll have to take my word that it works. And some videos.
The case where graceful shutdown works:
https://user-images.githubusercontent.com/191335/170455093-37688cbe-5106-45e3-8d60-c6ea03b22620.mp4
The case where it times out:
https://user-images.githubusercontent.com/191335/170455511-aa5c1e23-a0da-4ec9-a111-c991d7090c91.mp4
I've chosen a very high number for the non-graceful timeout as there's no harm in having old instances sitting around. We'll adjust as necessary (and potentially move to envvar if we want to tune it further).

Does it work? I had exactly that along with three other iterations and could not make it work. SignalR would always exit first and drop all connections.

It seems all you need to do that is move the service warmup to after the hub endpoints are mapped.
Here's the relevant issue + workaround comment from a SignalR maintainer: https://github.com/dotnet/aspnetcore/issues/25069#issuecomment-912817907

I did test precisely that but it wasn't working. I'll give it another try to confirm if you haven't already.

To cover voice discussions:

This is still an initial step forward, mostly to match the existing process I'm using for deployment
@smoogipoo would prefer new users can't connect to existing games, to promote they move to the new server (aka adding the MultiplayClientState to blocked states during shutdown) but this means users on the same server potentially can't join rooms where they could previously. So for now I'd avoid doing this.

Follow up work to be done in near future:

Users in multiplayer rooms should be aware of the server migration (countdown timer visible on their screen)
Users with no server state should receive a message from the server to trigger a reconnect (moving them to the new server sooner rather than later). Note that this has the same effect of disallowing users to connect to existing rooms where they may have previously been able to, so requires further consideration for how to communicate this at the room listing or otherwise.
This flow change doesn't handle old (aka incompatible) client versions at all, and doesn't intend to do so. Old versions should be disallowed connection to the server via a negotiation process, and force their client to upgrade instead. This is different to how osu! has worked historically but will allow for agile development from our end (aka not supporting 5 different versions) and is a user expectation already (every other game does this).

My takeaways from the voice discussion:
Goals:

Clients should be updated ASAP, don't want to support multiple builds.
According to osu!stable, users naturally update their clients pretty quickly.
The drain on user experience should be minimised.
The server implementation is meant to support more agile deploys. Upgrade connections first and only force a client update if incompatible with the new server.

Issues raised:

Spectator connections are immediately upgraded upon a new play session

Q: Old clients are incompatible with the new server.
A: If detected to be incompatible with the new server the client update will be forced.

For multiplayer sessions the current functionality is only intended to match @peppy's manual labouring.

Q: This will delay updating clients ASAP.
A: Doesn't affect new connections and existing clients are expected to naturally update pretty quickly. The 6hr timeout is a best-effort guess and could be lowered this to something like 10 minutes if needed.
Q: Old multiplayer connections is used but the upgraded spectator connection is incompatible with the client version.
A: Will need to trigger a client update, but also send a message from server to client to upgrade the connection immediately rather than on failure.
Q: Rooms are created (osu!web-side) but the multiplayer connection fails.
A: Will need some process to rejoin the room after upgrading the connection.
Q: Rooms on the old client will be forcefully shut down after a while.
A: Will have some management of multiplayer rooms to handle them being managed by different servers, whether it's migrating them or having them not shown, having a countdown, or otherwise. This is a parallel issue and not relevant to my primary concerns.

I've refactored things using the workaround explained at https://github.com/dotnet/aspnetcore/issues/25069#issuecomment-912817907. Have re-tested the two scenarios I was testing previously and both still work as expected. Looking a lot cleaner now.


Fix fast_dev_run running validation twice

Before submitting

[ ] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[X ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure to update the docs?
[ ] Did you write any new necessary tests?
[ ] If you made a notable change (that affects users), did you update the CHANGELOG?

What does this PR do?
At the moment, when using fast_dev_run, the validation step is run twice. This is because validation_sanity_check is set to 1 so the sanity check is run on validation and then later it's run again because fast_dev_run is run again.

@tullie pls add note to changelog


Unable to resize

Here's my markup:
 <star-rating :rating="3.8"  :star-size="30" :read-only="true" :increment="0.01"></star-rating>

Seeing same issue. Works when I wrap it in spans (idk why) though.
<star-rating :star-size="30" :show-rating="false" :rating="4" :inline="true" :active-color="`darkgrey`" ></star-rating>

I can't seem to reproduce this. What browser is this appearing in? Also, do you have any styles that might be overriding the .star-rating, .star classes, something like this JSFiddle gets close to what you are seeing. If this is the case I will consider changing the class names inside the component so it's not so easy to override them.

I have Google Chrome Version 58.0.3029.110 (64-bit)
And for the js fiddle I'm not sure if this is what you meant but when I added the class "container__stars" to star-rating component then changed '.star-rating' to '.container__stars' in the CSS the stars were still cut off.

Do you still see cut off stars in this fiddle without any css?

w/o the css the stars aren't cut off

Ah, OK, then this may just be a case of making the overflow visible on the stars. Thanks for your responses, they are really appreciated.

@craigh411  Tested with empty .star-rating css and all is fine. Thanks for this component, btw!

OK, I've now changed the internal class names so it shouldn't be so easy to unintentionally override the default styles. See the release notes for version 1.4.0


Remove address parameter

Removed the address parameter in onData and onDataToken handler calls, plus the preparational statements to provide them.
The address is a partly valid reference only with function codes using it, those just executing commands without dedicated address would not benefit. The universal token parameter serves the same purpose, but regardless of function code. As it is a user-defined uint32_t value, uniqueness can be maintained by the application.

Please note that this PR is to be applied on top of the previous two #39 "Token implementation" and #41 "New Receive".


Issue #42 Loading Stay after Save Fails

Make sure to call stop loading on error callbacks
Make start and stop loading handlers and dispatch the action on change
This work connects to #42

connects to #42

👍


Bug in tools/ensemble.py/get_labels

The function returns label_ids. However, when print_name in ['sst-5', 'mr', 'cr', 'mpqa', 'subj', 'trec'], label_ids is not defined. I guess there should be return labels in this branch?

Thanks for reporting this! The bug has been fixed.


Show int as int not float

I'm using print_blocks in a script and only passing integers to it, but it always format it with decimal places.

@kelvan The issue is the format specifier!

@dufferzafar is correct, you can display the numbers any way you like using --format.
Here is an example which will remove the decimal and display as just integers.
> termgraph.py data/ex2.dat --format '{:.0f}'

label    : ▇▇ 2
longlabel: ▇▇▇ 3
foo      : ▇▇▇▇ 4
barrific : ▇▇▇▇▇ 5
wut      : ▇▇▇▇▇▇ 6


feat: enable lazy-loading by event and autoload func

May this PR violates the conciseness in itself compared to vim-plug, but I think it may be useful to people who'd like more lazy-load options to control their plugins.

Thank you for the nice improvement.
Could I offer adding tests and document for the stability and mentenancability?
Best

Surely, the PR is incomplete so do whatever as you wish

I am busy now. The new feature might be a low priority. Please wait until I complete your pull request.

Thank you for your contribution! I have added them ❤

TYVM!


Where to run AppScope - explanation

Thanks to Ed Bailey and @pdugas for the idea and content!

When I read this, I conclude:

We suggest that you might want to install scope under /opt, but that the choice is always up to you.  However, we recommend against installing it into a users home directory.  Do we want to add an explanation of why?  Maybe that: this isn't an ideal location because it's likely to cause file ownership and permissions issues if multiple users are involved?
I'm noodling over the distinction between "ad hoc" and "planned-out".  I think of this slightly differently I think.  Here's what I'm thinking: we might want to emphasize that by default, the CLI will output data on the local filesystem where it's running, and that while this might be acceptable for arbitrary "ad hoc" investigations, that this is likely to cause problem for long duration scenarios (like application monitoring).  For long durations scenarios, users will need to consider the destination thoughtfully to avoid overrunning the local filesystem.

Looks fantastic!  Thanks @abetones!  Merging.


Touch Screen Rotation

Thanks for your hard work, add diagrams to rotate the touch screen hardware

hiya - thanks for the contribution - we wont be merging this but if you would like to add rotation handling code let us know! :)


Add ability to use tags (eg. dryrun)

Is this a BUG REPORT or FEATURE REQUEST? (choose one): Feature request
kraken (k2cli) version:
1.0.7-stable+git.sha.d7454e05aab6b0a3078b660fb44497dfa25a853a

The underlying shell scripts support the passing of a tags parameter to limit the actions to a specific subset, for instance dryrun will not perform actions that require a working provider.
Please add the ability to use the --tags switch.

already implemented called stages, but this doesnt make sense, or well rather kinda make sense. I will rename the variable with its expected shorthand. Stages will still behave as usually but will also allow you to do the tags you need. Default is all.


Organize the dagger/examples repo by SDK

Organize the dagger/examples repo by SDK: transpose the contents of the v0.2.x branch of dagger/examples into main, under an sdk-specific subdirectory

@kpenfound @jpadams I know you were already doing clean-up on the examples repo, so does it make sense to assign this to one of you?

@mircubed yup either of us!

Great, thank you @kpenfound! Do you think it is worth adding context about this repo in the docs FAQ?

Oh I think I mixed up some threads here 😆 My understanding was that we would move to sdk specific examples living alongside their sdk, as in sdk/go/examples/, which now may be dagger-go-sdk/examples/

I think we can close this now right @kpenfound ? Should we document it anywhere in the Readme?

Yeah I think the last remaining task is to mention dagger/examples in the dagger/dagger README

@kpenfound can you submit a PR to the readme and then close this issue? You can add Solomon as the PR reviewer for the Readme update


Please use constant containing the file path + name, might be provided by config module

https://github.com/walker76/code-duplication/blob/0c37db7afaeefc155b80f4b3ed7bb91327c00446/stackoversight/gitpickler.py#L13

@tisnik this file will be deprecated as soon as our permanent solution for serialization is implemented, this was just to temporarily store our API requests. But for future prototyping we will make sure to stick to guidelines such as this!

Sure @johnsimmons2 . Thanks for info -> I'm closing this bug :)


fix: add z-index to BBackTop

Fixes #1970
Changes
Summary of changes you made.

Add z-index to BBackTop

Test plan

[x] Go to: http://localhost:3000 and login.
[x] Find post with 15+ comments.
[x] Scroll down so comments load.
[x] Scroll up so BBackTop would appear above reply form

Demo
Before:

After:

I cant reproduce this issue on staging do you @Sekhmet ?

I can.

Weird, anyway both are working fine for me


add R.pair

pair :: a -> b -> (a,b)

Didn't someone once say that all numbers except 0 and 1 are arbitrary? In the context of Ramda, I disagree: 2 is also a number with special significance. R.fromPairs and R.toPairs use a pair to represent a map entry.
This morning I wanted to transform [{ name :: String, sig :: String, description :: String }] into Map String { name :: String, sig :: String, description :: String }. Here's my solution:
R.fromPairs(R.map(R.converge(R.concat, R.compose(R.of, R.prop('name')), R.of), list))

With R.pair, I could have written:
R.fromPairs(R.map(R.converge(R.pair, R.prop('name'), R.identity), list))

I believe this function would be a good companion of R.createMapEntry. The implementation is trivial.

:cow2:

I've wanted it often enough too.  :herb:

Didn't someone once say that all numbers except 0 and 1 are arbitrary?

That much surely have been a computer scientist and not a mathematician ;)
This function looks useful to me.
One might also consider something like this:
function createArray(length) {
  return _arity(length, function() { return _slice(arguments); };
}

Then pair could be defined like this:
var pair = createArray(2);

I have no idea if that is useful and worth the additional complexity though.

Same problem #931 ?

@kedashoe:
Pardon?  Although tuples were briefly discussed in that issue, that was never the goal there.  I suppose this would offer a way to solve that issue without dedicated code, based on your suggestion in that thread, but I think the idea there was that people were looking for a named function not a recipe.

Sorry, I actually meant the bigger problem.. wasn't fyyy trying to do the exact same thing in that issue that @davidchambers is here? I know I have also done it. Still maybe too specific for Ramda, just bringing up that thread as this reminded me of it.
I'm all for pair! :+1:


chore: setup docs with docusaurus

Summary

Test plan

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

Project coverage is 100.00%. Comparing base (53fa452) to head (2bcd94e).
Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #67   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           14        14
  Lines          165       165
  Branches        39        39
=========================================
  Hits           165       165

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


copyright content

This is tool has been copied

Don't use it ,
Otherwise you will lose your data


Add backup to VSHNPostgreSQL

Checklist

[ ] The PR has a meaningful title. It will be used to auto generate the
changelog.
The PR has a meaningful description that sums up the change. It will be
linked in the changelog.
[ ] PR contains a single logical change (to build a better changelog).
[ ] Update the documentation.
[ ] Categorize the PR by adding one of the labels:
bug, enhancement, documentation, change, breaking, dependency
as they show up in the changelog.
[ ] Link this PR to related issues or PRs.

@glrf @Kidswiss can I ask You for second reading?


Fixed notebook toolbar icon issue in dark and hc-black themes. (#10802)

This PR fixes #10801

Coverage decreased (-0.06%) to 34.14% when pulling 146bf53225b230d93686c7fc6f88a36e38c4d236 on 10801-notebook-ui-clear-results-button-icon into d6ba3c5d48279a13f2b7ceaf909cbf410d7e5b4b on release/1.19.


ARROW-15837: [C++][Python] Clarify documentation for ListArray::offsets()

If there is a way to reconstruct a ListArray using the offsets and values, maybe it could be worth mentioning it as well ?

There seem to be conda-related issues, I'm going to force-push.

A list array has three pieces, values, offsets, and validity. It isn't clear why the offsets would be expected to contain the validity. I would think it just as likely someone assumes the values contains the validity.

While "a list array has three pieces, values, offsets, and validity" is of course correct, I think many people will think about (or explain) a list array as consisting of two pieces: values and offsets (those are also the two "child" arrays for which we have properties on ListArray to access them, and are the two arrays from which you can recreate a new ListArray in from_arrays). So I don't think the confusion from ARROW-15837 is that uncommon, and the clarification here seems helpful IMO.
Since the values array doesn't have a 1:1 relationship with the list values (and can have nulls itself, independent from nulls at the list level), I would find it less expected to think that those would contain the list validity.
ARROW-15839 will indeed help, but then it's maybe also the question if we want to make it easier to get the "mask" / validity bitmap of an existing ListArray (although that's not specific to a ListArray).


feat(BTable): using head(...) slots will now keep the sorting icons, …

…fixes #1976
Describe the PR
Redeclares the head(...) slots in BTable.vue in such a way that the sorting icons are kept in any instance of BTable.
This is to maintain a similar expected behaviour from bootstrap-vue.
There are still many existing ways to effect the sorting icons.  For example, the slots sortAsc, sortDesc, and sortDefault which exist for all field names can be used to modify the sort icons in any way for any specific field (or all of them).  You can also still use noSortableIcon to remove all sorting icons.
This resolves #1976 as you could put inputs in the headers without losing the sorting icons.
Small replication
A crude example component demonstrating how the head() and head(<field>) slots keep the sorting icons
table_example.patch
PR checklist

What kind of change does this PR introduce? (check at least one)

[ ] Bugfix :bug: - fix(...)
[x] Feature - feat(...)
[ ] ARIA accessibility - fix(...)
[ ] Documentation update - docs(...)
[ ] Other (please describe)

The PR fulfills these requirements:

[x] Pull request title and all commits follow the Conventional Commits convention or has an override in this pull request body This is very important, as the CHANGELOG is generated from these messages, and determines the next version type. Pull requests that do not follow conventional commits or do not have an override will be denied

Had to make some additional changes otherwise this would have broken instances where only a string was provided for a field.
To fix this I changed the type of computedFields to TableField (from TableFieldRaw).  This is similar to how computedFields is constructed in BTableLite.

Failing build could be related to this
https://github.com/pnpm/action-setup/issues/135

I opened a different that should hopefully resolve the CI issues here:
https://github.com/bootstrap-vue-next/bootstrap-vue-next/pull/1997

Updated to fix eslint errors,
On line 337 call to isTableItem changed to isTableField.
On line 359 casting added to el to make it (el as TableField)


"Only a ReactOwner can have refs" error with react-datepicker and minified versions of react, react-dom

When I include the react, and react-com minified versions for a production build, I get the below  error coming from react-datepicker (the error goes away if I remove react-datepicker). I am running react version 15.5.4, react-datepicker 0.52.0
Error:
Uncaught Error: addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component's render method, or you have multiple copies of React loaded
Pertinent WebpackConfig
webpackConfig.resolve.alias = {
react$: path.join(basePath, 'node_modules', 'react', 'dist', 'react.min.js'),
'react-dom$': path.join(
basePath,
'node_modules',
'react-dom',
'dist',
'react-dom.min.js'
),
redux$: path.join(basePath, 'node_modules', 'redux', 'dist', 'redux.min.js'),
'react-redux$': path.join(
basePath,
'node_modules',
'react-redux',
'dist',
'react-redux.min.js'
)
};

I'm getting this issue at well. Seems to be related to the calendar ref.

I think this comes up when the datepicker component is used inside of a stateless functional component.  Unfortunately refs don't work inside of SFCs.

I am not using inside a SFC, it's only happening when I use minified react.

@gregpasha – Is there any chance that you are running two copies of React on your page?
It turns out we were. Spent many hours trying to remove the extra version and see if it fixes this issue but our build system is complicated so this is unfortunately not trivial.
Here's a blog post to help see if you have two versions of React running:
https://medium.com/@dan_abramov/two-weird-tricks-that-fix-react-7cf9bbdef375

Just want to circle back and point out that the issue we were having was indeed related to loading two versions of React on our pages.


pos 0 out of range for stringb'' at index 0

Does someone meet this issue before? I tried to retrain the model by sovling the chinese character recognition. And I used the number to replace the character, and splite by '$'. But when I run the train.py script, here the issue showed.
INFO:tensorflow:Error reported to Coordinator: <class 'tensorflow.python.framework.errors_impl.InvalidArgumentError'>, pos 0 out of range for stringb'' at index 0
[[Node: Input/case_1/If_0/decode_image/Substr = Substr[T=DT_INT32, _device="/job:localhost/replica:0/task:0/device:CPU:0"](Input/case_1/If_0/decode_image/Substr/Switch:1, Input/case_1/If_0/decode_image/Substr/pos, Input/case_1/If_0/decode_image/Substr/len)]]
INFO:tensorflow:Saving checkpoints for 68 into /home/tanggy/aster/experiments/demo/log/model.ckpt.
Traceback (most recent call last):
File "aster/train.py", line 216, in
tf.app.run()
File "/home/tanggy/anaconda3/envs/py36/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 48, in run
_sys.exit(main(_sys.argv[:1] + flags_passthrough))
File "aster/train.py", line 212, in main
worker_job_name, is_chief, train_dir)
File "/home/tanggy/aster/trainer.py", line 268, in train
config=session_config
File "/home/tanggy/anaconda3/envs/py36/lib/python3.6/site-packages/tensorflow/contrib/training/python/training/training.py", line 538, in train
loss = session.run(train_op)
File "/home/tanggy/anaconda3/envs/py36/lib/python3.6/site-packages/tensorflow/python/training/monitored_session.py", line 537, in exit
self._close_internal(exception_type)
File "/home/tanggy/anaconda3/envs/py36/lib/python3.6/site-packages/tensorflow/python/training/monitored_session.py", line 574, in _close_internal
self._sess.close()
File "/home/tanggy/anaconda3/envs/py36/lib/python3.6/site-packages/tensorflow/python/training/monitored_session.py", line 820, in close
self._sess.close()
File "/home/tanggy/anaconda3/envs/py36/lib/python3.6/site-packages/tensorflow/python/training/monitored_session.py", line 941, in close
ignore_live_threads=True)
File "/home/tanggy/anaconda3/envs/py36/lib/python3.6/site-packages/tensorflow/python/training/coordinator.py", line 389, in join
six.reraise(*self._exc_info_to_raise)
File "/home/tanggy/anaconda3/envs/py36/lib/python3.6/site-packages/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/home/tanggy/anaconda3/envs/py36/lib/python3.6/site-packages/tensorflow/python/training/queue_runner_impl.py", line 238, in _run
enqueue_callable()
File "/home/tanggy/anaconda3/envs/py36/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1231, in _single_operation_run
target_list_as_strings, status, None)
File "/home/tanggy/anaconda3/envs/py36/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py", line 473, in exit
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: pos 0 out of range for stringb'' at index 0
[[Node: Input/case_1/If_0/decode_image/Substr = Substr[T=DT_INT32, _device="/job:localhost/replica:0/task:0/device:CPU:0"](Input/case_1/If_0/decode_image/Substr/Switch:1, Input/case_1/If_0/decode_image/Substr/pos, Input/case_1/If_0/decode_image/Substr/len)]]

This is my dataset issue. I resovled by clean the dirty data.


Could I use LossOverview.PNG for the class material?

Hi. Could I use LossOverview.PNG for the class material with reference?
The class is not public, but non commercial.
Thank you.

Hi @ohwi ,
Of course!
Thanks for your interest very much:)
Best,
Jun

Thank you!!


Make screenshot model optional, and auto identify the model using the "*IDN?"

Feature request by @RoGeorge in the EEVBlog forum.

Implemented in 4b07a40e1c07afb099b0842a34e1f01e8031b462


Custom MetricSet only called once

I'm observing a strange behavior when implementing the MetricSet interface.  Essentially the "getMetrics" method only gets called once.  I've searched the existing issues, looked at other implementations of the MetricSet interface, etc. and cannot find any mention of this specific issue.
I'm using other MetricsSet implementations, like "com.codahale.metrics.jvm.MemoryUsageGaugeSet" and they work fine.
Below are code snippets.  Any help would be appreciated.
 <metrics:register metric-registry="metrics">
        <bean metrics:name="jvm.gc" class="com.codahale.metrics.jvm.GarbageCollectorMetricSet" />
        <bean metrics:name="jvm.memory" class="com.codahale.metrics.jvm.MemoryUsageGaugeSet" />
        <bean metrics:name="jvm.thread-states" class="com.codahale.metrics.jvm.ThreadStatesGaugeSet" />
        <bean metrics:name="jvm.fd.usage" class="com.codahale.metrics.jvm.FileDescriptorRatioGauge" />
        <bean metrics:name="hystrix.metrics" class="com.mycompany.util.metrics.HystrixCodahaleMetricSet" />
    </metrics:register>

public class HystrixCodahaleMetricSet implements MetricSet {

  @Override
    public Map<String, Metric> getMetrics() {

        final Map<String, Metric> gauges = new HashMap<String, Metric>();

        // code to add gauges left out for brevity, but is similar to that in the MemoryUsageGaugeSet class

        return Collections.unmodifiableMap(gauges);
}

MetricSet.getMetrics() will only be called once when registering the metrics via the MetricRegistry so this may be the expected behavior, see here - https://github.com/dropwizard/metrics/blob/master/metrics-core/src/main/java/com/codahale/metrics/MetricRegistry.java#L385 - so if the MetricRegistry is told to register a MetricSet (via MetricRegistry.register) it checks if it's a MetricSet and if so just calls getMetrics() once on it to get the set of metrics and registers each one.
Do you see the metrics being registered via JMX?

That was the piece I was missing (i.e. gauge instances are registered and then called directly).  Thanks Ryan!!

Thanks @ryanrupp!


Reversed address and data for SW command.

I'm using the cpu 1port.  When I try to store word, it looks like it reverses the address and data.
The code is:
addi x1, x0, 4
addi x2, x0, 200
sw x1, 0(x2)
It trys to write to address 4 with data 200 instead of writing to address 200 with data 4.  I'm not sure where they are getting swapped.
(Originally I was trying to write 2 to address 200, but I kept getting a misalignment error.)

That would be quite surprising, I wouldn't expect any compiled code to run if this were broken.
Could you attach a binary (.bin or .elf) so I can reproduce?

I found the problem.  Looks like my conversion from assembly to hex was bad.  To understand RISC-V better I was using this website to generate each hex line one by one.
For sw x2, 0(x1) it gave 0x00112023.
When I used a few other assemblers I got the correct answer, 0x0020A023.  Looks like that site has the mistake with flipping registers.
Sorry to have wasted your time on it, but also thanks for looking at it.


Entire content

Is it possible for you to provide entre content and note [+4994]

hi, he is getting this whole news info from newsapi and they only provide this much info

hi, he is getting this whole news info from newsapi and they only provide this much info


The page you are looking for is temporarily unavailable. NGNIX

Something has triggered an error on your website. This is the default error page for nginx that is distributed with the Amazon Linux AMI. It is located at /usr/share/nginx/html/50x.html
You should customize this error page for your own site or edit the error_page directive in the nginx configuration file /etc/nginx/nginx.conf.

Back up

Hello,
Same problem here.
;)


[🪢] Merge dev into master

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


#31 Post about prohibiting writing objects formed differently into cage

Closes: #31

PR-Codex overview
Detailed summary

The PR focuses on prohibiting the storage of objects formed differently in the cage object.
The writing mechanism of the cage object has been changed to only allow objects with the same "form" to be stored.
The PR also mentions future plans to make EO stronger and stricter.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

@Graur please review this one

@Graur please have a look one more time

@yegor256 please have a look

@rultor merge

@rultor merge

@yegor256 OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@yegor256 Done! FYI, the full log is here (took me 2min)


Fix test md api violation

Description
Add a call to mbedtls_md_starts() in the mbedtls_md_process()
test, as it violates the API usage. Fixes #2227.
Status
READY
Requires Backporting
Yes
Which branch?
mbedtls-2.28
Additional comments
This was discovered by running the test suite on NRF52840_DK target
Todos

[x] Tests
[ ] Documentation
[x] Changelog updated
[ ] Backported

@tom-cosgrove-arm Since you're on this, would you mind adding valid signoff lines?


Introduction of Barriers, Position barrier

This PR is first from the series of PRs, aimed at introduction of Control Barrier Functions, mentioned in #86 . introduces safety sets in the form of Control Barrier Function (CBF) in the presented framework.
For the theory, see our fork, particularly this Jupyter Notebook.
As for implementation, each Barrier defines constraint, and might also define penalization term, if corresponding weight is non-zero. To do this, each barrier has to be able to compute it's value, jacobian, and (optionally) recovery velocity.
Features:

General notion of barrier.
Position barrier for given frame.
Unit tests that cover 100% of presented functionality.

Examples:

Manipulator UR5 with limiting y-plane.
Quadruped Robot Go2 with limiting x and y planes.

Note that this code already fixes problems, mentioned in the #86. Any further suggestions would be welcome

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

203 of 204 (99.51%)  changed or added relevant lines in 8 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.09%) to 98.929%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

tests/test_barrier.py
45
46
97.83%

Totals

Change from base Build<PHONE_NUMBER>:
0.09%

Covered Lines:
1478

Relevant Lines:
1494

💛  - Coveralls

Good evening. We've fixed most of the suggested points. Moreover, we've started a discussion here.
Waiting for your answer, while @simeon-ned is finalising the documentation on his website.

Thank you for your patience and attention, it is great to see so much involvement in the process from you.
We've added a link to extended documentation, and we made an attempt to fix the pipelines (except for mentioned one). If they succeed now, we believe that everything is ready to merge!
Also, since we expect this is not the last MR we would have, we'd like to ask you several quesitons:

As far as we could see, the commits are not squashed at the MR, so is there any style of commit names that we should follow then?
When we are replying to you, should we also create a review, or it's fine to answer via single message?

Sounds great :smiley:

As far as we could see, the commits are not squashed at the MR, so is there any style of commit names that we should follow then?

We don't enforce a particular style. As long as the commit messages are informative and help navigate the change history (in my opinion yours are :+1:) that's good to go. When the PR is ready we will merge it into main with a merge commit.

When we are replying to you, should we also create a review, or it's fine to answer via single message?

In PRs there are two kinds of discussions: code-related discussions (associated with code) and free discussions (on the PR page). When reviewers read the code they mostly start code-related discussions. The point of code-related discussions is that we want to make sure all of them are marked as "resolved" before merging the PR.
Thus you don't need to create a review when you reply. It is fine to reply separately in each code-related discussion, as you have done. And if there is something else (maybe not code-related) to discuss you can shoot a single message on the PR page separately.

We have tried to fix the pipeline yet again, but it is hard to check documentation build, since we have to wait for your approval each time to see a result. The linting pipeline should be fine.
Do you have any suggestion on a better way of repairing documentation pipeline apart from fixing errors one by one?

Yes, pipelines have to be approved for first-time contributors. After this PR is merged you won't need approval any more for the following ones.
Don't worry about the documentation, I can fix it quickly afterwards. Let me know when everything else is ready, then I will roundup all code-related discussions and move ahead with the merge.

If documentation could be fixed later, then everything else is ready!

Alright, let's move forward. Thank you both for this first contribution, looking forward to the next barriers :smiley:


gradio version issue

set gradio version as 3.26.0

The requirements.txt. should be updated with this version


Avoid using static global variables in Constants

This can cause issues across shared object boundaries, only ever use constexpr in Constants.hpp.
One way to fix this is to convert this:
const MyType value;

to
const MyType& GetVal() {
  static MyType val;
  return val;
}

constexpr MyType value; will work as well as long as there's a constexpr constructor.


[Event Change Request] TAB39 Purchase Line - procedure CopyPurchDocLine - Event OnValidateLocationCodeOnBeforeDropShipmentError

Describe the request
We would like add PurchaseLine(var) to the following events.
Original:
TAB39 - Purchase Line - procedure Validate "No."- Event OnValidateLocationCodeOnBeforeDropShipmentError

    [IntegrationEvent(false, false)]
    local procedure OnValidateLocationCodeOnBeforeDropShipmentError(PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; xPurchaseLine: Record "Purchase Line")
    begin
    end;

Change:
    [IntegrationEvent(false, false)]
    local procedure OnValidateLocationCodeOnBeforeDropShipmentError(VAR PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; xPurchaseLine: Record "Purchase Line")
    begin
    end;

Additional context
Modify the Purchase Line in the Event
Internal work item: AB#557545

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 26919.


Test with multiple versions of node

It would be nice that we are actually maintaining multiple versions of node (at least the ones supported by AWS Lambda)

Added with #38


Broken link in faq.md

The link with the description Filtering Data in the FAQ leads to the repo readme which does not include such anchor.
Is this resource even still existing or should this link be removed?

This is the section: https://ajv.js.org/guide/modifying-data.html#removing-additional-properties
Feel free to update in PR


Test both endpoints and slices for unit tests

This change makes our controller tests run twice, once with endpoints
and once with endpoint slice. A few tests are not relevant to this, so
they are just using Endpoints as before. Additionally, the probing tests
were combined to use a table driven test to make this change simpler.

@howardjohn: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

gencheck_istio
c070811b37166f7a6894ee2bc72445bb5a20da47
link
/test gencheck_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

gencheck_istio
c070811b37166f7a6894ee2bc72445bb5a20da47
link
/test gencheck_istio

lint_istio
c070811b37166f7a6894ee2bc72445bb5a20da47
link
/test lint_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

lint_istio
a7436d59cd227bb269fdeaf3df9582372abf293e
link
/test lint_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

lint_istio
ecbfdf588d536b1cef177c19f9f5cb592a49e147
link
/test lint_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@rshriram @hzxuzhonghu please take a look

@howardjohn: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

unit-tests_istio
fd0bdc23f1eeb07553c9f370cc20e279977cf29f
link
/test unit-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest


Added axes to _invert_yaxis call in _draw_1d_from_points

In code that was running in batch mode and not using matplotlib.pyplot, I came across a failure that was a direct result of pyplot being invoked to identify the figure and axes I was working on. If the figure was not created with pyplot then pyplot cannot find the figure and hence the axes.
In this particular case the call to _invert_yaxis from _draw_1d_from_points does not include the axes argument hence _invert_yaxis tries to identify the active axes using pyplot. Adding axes to the _invert_yaxis call prevents this and also matches the behaviour in _draw_2d_from_points and _draw_2d_from_bounds.

Thanks @pdearnshaw


Hi, the zoom section is far to the top left of page after couple of zooming.

Hi,
I appreciate your contribution. It helps me save time a lot. However, I just spotted a small issue out. After zooming a couple of zooming, the zoom container appear at the left top of the page. I do not know how to fix it. I have gotten stuck here for several days. Look at the pictures.

Please help me.
Thanks,
Justin.

Hi Justin, just came back from vacactions. :)
I'm not 100% familiar with the base code, but I have had an scenario where the zoom comes dynamically to different images.
I had to reset the zoom when switching to other images. See the code of
https://github.com/igorlino/angular-elevatezoom-plus/blob/master/js/angular-ezplus.js
in particular, checkout the hideZoom and showZoom methods.
There is still one issue when the browser is resized, somehow some state gets stuck, and the zoomContainer is not adjusting properly.


Issues/127/true nz

Problem & Solution Description (including issue #)
Code Quality

[ ] My code follows the code style of this project
[ ] I have written unit tests or justified all instances of #pragma: no cover; in the case of a bugfix, a new test that breaks as a result of the bug has been added
[ ] My code contains relevant comments and necessary documentation for future maintainers; the change is reflected in applicable demos/tutorials (with output cleared!) and added/updated docstrings use the NumPy docstring format
[ ] Any breaking changes, described above, are accompanied by backwards compatibility and deprecation warnings

Still need to add tests.


Dragging Schedule across dates

Is it possible to drag a schedule across days?
Something like this.

Not atm. adding this to the feature requests list.


Support for op_type "Resize"

WIP Implementation for Resize Operator
fixes https://github.com/elixir-nx/axon_onnx/issues/34

Regarding the tests: Where can I get the backend-test-tools?
mix test cannot find System.cmd("backend-test-tools", ["generate-data"], [])

I believe it comes with ONNX runtime Python package!

Is there something I could do to help here? I could use this PR but it seems "frozen". Any major changes in the approach/library?

@jnnks @NotQuiteLagom Sorry I let this one fall off. There is an open issue upstream to fix Axon's resize operator. I will add it in later as I have a working implementation from another library, then I will come back to this PR for review :)

Note that constant! forces the input you're giving it to be a constant, so you can always convert it into a flat list

This does not work unfortunately. scales and sizes are not constant in the unit tests:
** (ArgumentError) unable to build model from ONNX graph, expected value scales to be constant value, but was :input

And when using the input! macro, the call to_flat_list fails, as scales is an Axon, no Tensor or number:
 ** (ArgumentError) expected a %Nx.Tensor{} or a number, got:
     -------------------------------------------------------------------------------
                                          Model
     ===============================================================================
      Layer              Shape   Policy              Parameters   Parameters Memory
     ===============================================================================
      scales ( input )   {4}     p=f32 c=f32 o=f32   0            0 bytes
     -------------------------------------------------------------------------------
     Total Parameters: 0
     Total Parameters Memory: 0 bytes
     Inputs: %{"scales" => {4}}

@seanmor5 I need your wisdom :)

The values from scales and sizes are not known during deserialization and are only available during inference.
So I am going for an Axon.layer with Axon.Layers.resize inside the lambda function.
This does not work either, since I don't know how to get the output shape as a tuple instead of a Tensor.

@jnnks If the tests depend on non-constant inputs and raise, then it's okay to ignore them in that case. For a lot of functions we cannot implement the tests because of this dependency on constants, a better test is probably an integration test which involves a model that uses a Resize

It seems counter intuitive to me to use an industry standard and then deviate from it. Especially since the standard has well defined unit tests this seems strange to me.
I'll convert the predefined onnx models to use constant inputs so we can test against those.

We don't really have a choice, Nx does not support dynamic input shapes and so we need to enforce this constraint. In most cases it ends up being fine, there are only a few edge cases you encounter in practice where dynamic shapes are needed and for the most part they can be mitigated or refactored to meet a static shape requirement

Looks like 'Axon.resize' does not deliver the results expected by the 'onnx' test case (test_resize_downsample_scales_nearest).
I rebuilt one of the onnx model files to use constant inputs and it seems to work fine, however the test case fails because of mismatched outputs:
Input
#Nx.Tensor<
  f32[1][1][2][4]
  [
    [
      [
        [1.0, 2.0, 3.0, 4.0],
        [5.0, 6.0, 7.0, 8.0]
      ]
    ]
  ]
>

Scales
#Nx.Tensor<
  f32[4]
  [1.0, 1.0, 0.6000000238418579, 0.6000000238418579]
>

Output
     ** (RuntimeError) expected #Nx.Tensor<
       f32[1][1][1][2]
       [
         [
           [
             [6.0, 8.0]
           ]
         ]
       ]
     > to be within tolerance of #Nx.Tensor<
       f32[1][1][1][2]
       [
         [
           [
             [1.0, 3.0]
           ]
         ]
       ]
     >

...[1.0, 3.0]... is the output desired by onnx.
Since the scales are both 0.6 I would argue that onnx is expecting the wrong output.
What are your thoughts on this @seanmor5 ?

@jnnks I think you might be right, but is there a parameter we're not handling that might affect the behavior here?

We have two problems:

ONNX expects different values from what Axon.Layers.resize returns [1]
ONNX uses the scales and sizes as input values instead of constants in the graph [2]

To make the operator testable we need to do the following:

decode the test model and test data

can be done using protobuf-compiler protoc --decode onnx.ModelProto onnx.proto < file_path > out_path.txt, (requires https://github.com/onnx/onnx/blob/main/onnx/onnx.proto in the same directory)

decode the test dataset

can be done with OnnxTestHelper.pb_to_tensor(pb_path)

inject the scales/sizes into the decoded model text file [3]
reencode the model file also using protoc
run Axon.Layers.resize with the test data to get the expected resize result
reencode the test data, not sure how yet

[1] Different return values
input: #Nx.Tensor<
  f32[1][1][2][4]
  [
    [
      [
        [1.0, 2.0, 3.0, 4.0],
        [5.0, 6.0, 7.0, 8.0]
      ]
    ]
  ]
>

resize with: {"scales",
 #Nx.Tensor<
   f32[4]
   [1.0, 1.0, 0.6000000238418579, 0.6000000238418579]
 >}

expected_output: #Nx.Tensor<
  f32[1][1][1][2]
  [
    [
      [
        [2.6666665077209473, 4.3333330154418945]
      ]
    ]
  ]
>

actual_output: #Nx.Tensor<
  f32[1][1][1][2]
  [
    [
      [
        [4.199999809265137, 5.466666221618652]
      ]
    ]
  ]
>

[2] input values instead of constants
(ArgumentError) unable to build model from ONNX graph, expected value scales to be constant value, but was :input

[3] Nx.Tensor to Protobuf
input:
#Nx.Tensor<
   f32[4]
   [1.0, 1.0, 0.6, 0.6]
 >
output:
  initializer {
    dims: 4
    data_type: 1
    float_data: 1
    float_data: 1
    float_data: 0.6
    float_data: 0.6
    name: "scales"
  }

See: https://github.com/onnx/onnx/blob/4b2d50334914621835cc1e8dadd4fe82b6b9876c/onnx/onnx-ml.proto#L484


Can't create a new profile

After install Thorium and login my Google accout, I can't add more profile.
I was try restart my laptop but nothing change.
When I click to add profile, Thorium will shutdown immediately.

Facing the same issue on M121.0.6167.204 - 56th Release

@sohanglal @laam-la4m Fixed in latest M122 version.


Set starting features and roadmap

We need a roadmap to start creating the issues and assigning them.
It will be a good idea to have a launch meeting but I think that having an etherpad is great to work async.
We can discuss the initial roadmap here but I want to propose to have the documentation in this etherpad.
I will be pushing this to get everyone on the same page and start ASAP.

Since we have other priorities right now, I'm closing this.


automatic fisher not working with Transfer Nodes from extrautils2

tried every side nothing works with or without filter

I never thought about this, since if you had a transfer node on one side, there wouldnt be any water there, so it would stop fishing.
If its full, it will keep fishing and drop the items below out in the world.
But it shouldnt be hard to also let it work with hoppers/nodes as well.

correct , hoppers work fine but is a hassle. thanks i hope it gets fixed soon :)

Fixing this for 1.9.2 release coming soon.
Well, after these changes it works with hoppers, and works with enderio item conduits.  Doesnt appear to work with extrautils2, but i had an old version , must be a bug on their end that got fixed later on i hope (extrautils2-1.10.2-alpha-1.2.1)

thanks for the commit :)


Edit the size of category images NOT possible

Expected behavior:
I can edit the size of menu item pictures and category images.
Actual behavior:
I can edit the size of menu item pictures, but NOT of category images.
Reproduce steps:
(Describe the steps to reproduce the problem here)
Version:
v.3.0.4-beta.23.2
Additional Information:

.img-responsive {
    /*Collection images fix on desktop*/
    max-height: 80px;
}

Quick workaround

This would be a good first PR/contribution:
Steps:
Fork local extension and set up a branch on your git repo
Edit: https://github.com/tastyigniter/ti-ext-local/blob/master/components/Menu.php
Define new properties for menuCategoryWidth/Height (borrow from menuImageWidth/Height) in defineProperties
Commit and open a PR against the master branch
Thats it - the rest is already in place as onRun() and the partials are already looking for a variable called menuCategoryWidth/Height


Erasing window content during resizing and moving and while popups are displayed - Win32

This feature will automatically erase the windows content to a user-requested color while it is being resized, dragged back into the screen, or a popup is being displayed (e.g. MessageBox or Open/Save dialog box).
The implementation aims to have as little impact on the existing SFML design as possible.
A new API was added to enable the feature and set the color.
Tested on Windows in the above-mentioned scenarios. Should have no effect on other platforms.

Is this a really needed use-case? I think a more popular request was that the window keeps updating even during resize, but I understand that may be much more complex to implement.
Also, why is the API based on separate sf::Uint8 parameters, when we have sf::Color?

Sf window can be updated when resized when event loop and drawing are in others threads. Event loop freeze when resizing. But drawing loop can get changed size change view and draw. And it works.

@Bromeon - this feature provides a simple mitigation that does not require the user to factor out resize-handling or rendering code from their main loop, or to use a separate thread as @1aam2am1 suggested.
Off-hand, I don't think that a full implementation should be complex (and I may do it in the future).
As for sf::Color, it currently resides in Graphics, which Window cannot depend on. I can adjust the API to use it if it moves to System.
BTW the feature has since been tested on Windows 7 & 10, with/without DWM (composition), with/without high DPI and with/without sRGB.

I've seen people request this sort of feature and as such, I wouldn't mind adding it.
Some questions:

Since you changed the window classes, does this work fine with custom window styles or window recreation with different style (e.g. borderless, fullscreen -> non-fullscreen, etc.)?
Since there's currently no stub implementation for Linux, macOS, Android or iOS, wouldn't this lead to a linker or worse runtime error?
What's the default behavior when no color is set?
Once I've set a color, how can I return to the default behavior?
What about implementations for different OSs?

Since you changed the window classes, does this work fine with custom window styles or window recreation with different style (e.g. borderless, fullscreen -> non-fullscreen, etc.)?

This change only affects which rectangles get invalidated when the window is resized (damage regions). Not passing CS_HREDRAW | CS_VREDRAW actually told Windows that the upper-left part of the window did not change upon resizes, so for example when the window got expanded, Windows could redraw only the right and bottom parts. That optimization could never have worked for SFML, but with the rendering loop running it did not matter much.

Since there's currently no stub implementation for Linux, macOS, Android or iOS, wouldn't this lead to a linker or worse runtime error?

There's a no-op default implementation in the base class. I'm adding a comment to make it more clear.

What's the default behavior when no color is set?

Same as without this feature.
In Windows, you can have the content and border of your window (or the popup window) smeared all over the place. The actual behavior depends on the OS version, whether composition is used, user settings, which operation is involved, the type of popup windows, how far the user drags windows, and more.

Once I've set a color, how can I return to the default behavior?

This can be implemented, but I believe that once a developer opts-in to this feature, they may only want to continue modifying the color (which is supported), not go back to having artifacts.

What about implementations for different OSs?

Windows is the most critical: first, only Windows runs its own message loop while windows are being dragged or resized. Secondly, Windows doesn't automatically erase the content of windows that do not repaint themselves, giving room for all these artifacts.
Having said that, I'm committing an implementation for X11 that I regard as purely cosmetic, so that instead of black the WM will use the supplied color.

Again, as in #1604 - the solution to use is to do multithreading and event processing in another thread.
Usually in games you have something like this:
while (running) {
    processEvents();
    update(dt);
    draw(window);
}

The drawing is sometimes implemented in another thread - and the fact that you might have drawing during event processing breaks this common pattern and takes you back to square one.
I understand that multithreading event processing and update/draw is very tricky, and I'd be happy to see a tutorial for that, instead of adding a very specific use case, which will couple event processing and drawing (and make it possible to do in a single thread only)


Answer questions badge

When answering questions and finishing these we should hide the "answer questions?" badge, it stays if the questions are still open which they probably stay when just one answered, so we would check this locally

Superseeded by #1352


Can SWR totally replace react-apollo?

I'm maintaining a Next js application that relies on Apollo to fetch data, infinite scroll and do updates in realtime (chat like updates). SWR seems to work better with Next js with no boilerplate code. I'm considering migrating to SWR but have no idea how to replicate some react-apollo features like components subscribing to updates via Graphql. Are there any examples of SWR working with graphql Subscriptions as in react-apollo https://www.apollographql.com/docs/react/data/subscriptions/?

Although I generally understand this example: https://github.com/zeit/swr/issues/41#issuecomment-548190601,  I have no idea how on a socket event, a newComment for e.g, we update the data from api/allComments.
Can you please provide a full cycle example? something like fetching api/allComments > emitting a new comment > reacting to the new comment by appending it to api/allComments data.
With react apollo, it's something like:
const GET_COMMENTS_QUERY = gql`
  query GetComments() {
      comments {
        id
        content
      }
  }
`;

const COMMENTS_SUBSCRIPTION = gql`
  subscription onCommentAdded() {
    commentAdded() {
      id
      content
    }
  }
`;

function CommentsPage({ params }) {
  const { subscribeToMore, ...result } = useQuery(GET_COMMENTS_QUERY);

  return (
    <CommentsPage
      {...result}
      subscribeToNewComments={() =>
        subscribeToMore({
          document: COMMENTS_SUBSCRIPTION,
          variables: { repoName: params.repoName },
          updateQuery: (prev, { subscriptionData }) => {
            if (!subscriptionData.data) return prev;
            const newFeedItem = subscriptionData.data.commentAdded;

            return Object.assign({}, prev, {
              entry: {
                comments: [newFeedItem, ...prev.entry.comments]
              }
            });
          }
        })
      }
    />
  );
}```

Thank you!

can the swr mutation run a refetchQueries like apolo useMutation does?

@vasco3 if you have the query you used to get the data in useSWR you could run mutate(GET_COMMENTS_QUERY) and SWR will revalidate that query which means it will run it again, but you need to know the exact queries you want to run, to be more correct you need to know the keys useSWR received so that could be the query + variables in some cases.

@sergiodxa that would work. Thanks

Intresting! Going to play with this!

Now that I'm implementing, I realize that mutate only mutates locally but doesn't replaces useMutation.. am I correct? In case of using Swr SWRConfig I need to pass the fetcher through React Context to the component where I want to replace useMutation. Am I correct?
Would be convenient that the fetcher would be available as an output from useSWR(). That way i wouldn't need to import an additional context to reuse the global fetcher.

You don’t need fetcher to call mutate, if you only pass the cache key that will make the useSWR calls revalidate the data

I know, but I need to also mutate the database. According to the docs

mutate: function to mutate the cached data

I'm using the fetcher to post the mutation to the serverside. Or which would be the ideal case?
For example: I'm fetching a list of users (id and user name). Then I edit a  user name. I use mutate to update locally and useSWR([updateUser, newUserName], fetcher) to update de database.

This is what I usually do (simplified):
function UserList() {
  const { data } = useSWR("/api/users", fetcher, { suspense: true });

  return data.map(user => <User key={user.id} {...user} />)
}

Then, somewhere else, when I need to update a single user, let's say inside the User component, I have a function like this:
async function updateUser(id, fields) {
  const res = await fetch(`/api/users/${id}`, { method: "PATCH", body: JSON.stringify(fields) });
  mutate("/api/users");
}

And now my list of users will revalidate itself and get the updated user, so I first mutate the DB (PATCH to the API) and then trigger a revalidate to GET the updated list, most of the time the GET is fast enough to don't feel a difference, if I needed and Optimistic UI update I would do something like:
async function updateUser(id, fields) {
  // this does the optimistic UI to the list
  mutate("/api/users", users => { /* find and update user here */ }, false);
  // here we mutate the DB
  const res = await fetch(`/api/users/${id}`, { method: "PATCH", body: JSON.stringify(fields) });
  // here we revalidate the list to ensure we are always up-to-date with the DB
  mutate("/api/users");
}

Ok I see. In my case I'm using import { GraphQLClient } from 'graphql-request'; and I need to add an authorization header since I'm using FaunaDB's graphql (I also use Monday.com's graphql API).
So my fetcher is passed in nextjs _app.js
<SWRConfig value={{ fetcher }}>
    <Component {...pageProps} />)}
</SWRConfig>

and my fetcher looks like this
   const fetcher = (query, source = 'FAUNA', ...args) => {
      const graphQLClient = (src => {
        switch (src) {
          case 'MONDAY':
            return new GraphQLClient('https://api.monday.com/v2', {
              headers: { authorization: org?.settings?.mondayApiKey?.config },
            });

          case 'FAUNA':
          default:
            return new GraphQLClient('https://graphql.fauna.com/graphql', {
              headers: {
                authorization: `Bearer ${org?.serverSecret}`,
                'X-Schema-Preview': 'partial-update-mutation',
              },
            });
        }
      })(source);

      // Creates an object. Odd indexes are keys and even indexes are values.
      // Needs to be flat to avoid unnecessary rerendering since swr does shallow comparison.
      const variables = [...(args || [])].reduce((acc, arg, index, arr) => {
        if (index % 2 === 0) acc[arg] = arr[index + 1];
        return acc;
      }, {});

      return graphQLClient.request(print(query), variables);
    };

That's why I would like to reuse the fetcher to call my external mutation calls.
I'm not happy about having the auth token on runtime JS. I would rather have it on an http-only cookie, but I see no other way to make it work with Fauna's graphql (I think they are working on this case).
It helps to see your approach, thanks

@vasco3 we use a service worker to inject auth headers into specific requests. You could try use that here?

@HofmannZ what is the advantage of using a service worker for this? I'll take a look


elements.comp scene traversal may leave gaps in paths

The fill algorithm implemented by path_coarse.comp assumes that closed paths contain no gaps. Unfortunately, the non-deterministic scene tracersal in elements.comp may introduce gaps in otherwise gap-less paths.
Consider two fill path segments through endpoints A, B, C in a scene fragment with three preceding transforms. The segments are initialized with the identity transform, I.
T₁·T₂·T₃·S(I, A, B)·S(I, B, C)
Since scene element operations are associative, elements.comp evaluates them in a GPU-friendly but non-deterministic order. In particular, it may use the ordering
S((T₁·T₂)·T₃, A, B)·S(T₁·(T₂·T₃), B, C)
Because of numerical imprecision, the path segments may end up with slightly different transformations,
S(M₁, A, B)·S(M₂, B, C)
Finally, M₁·B is not in general equal to M₂·B, leading to a gap in the path that includes the two segments.
To verify my claim, I made the following change,
diff --git gpu/shaders/elements.comp gpu/shaders/elements.comp
index a43c270..b5f2342 100644
--- gpu/shaders/elements.comp
+++ gpu/shaders/elements.comp
@@ -259,34 +259,8 @@ void main() {
                     State their_prefix = State_read(state_prefix_ref(look_back_ix));
                     exclusive = combine_state(their_prefix, exclusive);
                     break;
-                } else if (flag == FLAG_AGGREGATE_READY) {
-                    their_agg = State_read(state_aggregate_ref(look_back_ix));
-                    exclusive = combine_state(their_agg, exclusive);
-                    look_back_ix--;
-                    their_ix = 0;
-                    continue;
-                }
+                }
                 // else spin
-
-                // Unfortunately there's no guarantee of forward progress of other
-                // workgroups, so compute a bit of the aggregate before trying again.
-                // In the worst case, spinning stops when the aggregate is complete.
-                ElementRef ref = ElementRef((look_back_ix * PARTITION_SIZE + their_ix) * Element_size);
-                State s = map_element(ref);
-                if (their_ix == 0) {
-                    their_agg = s;
-                } else {
-                    their_agg = combine_state(their_agg, s);
-                }
-                their_ix++;
-                if (their_ix == PARTITION_SIZE) {
-                    exclusive = combine_state(their_agg, exclusive);
-                    if (look_back_ix == 0) {
-                        break;
-                    }
-                    look_back_ix--;
-                    their_ix = 0;
-                }
             }

             // step 5 of paper: compute inclusive prefix

which removes the non-deterministic evaluation order. As expected, the path gaps disappeared.
I don't have a good fix yet. It's possible that the endpoints can be propagated in the scene traversal, at the cost of state memory. Perhaps a PathSeparator scene element should be added to delimit closed paths. It may also be a good idea to make path scene segment have implicit start points, saving a bit of memory.

This is a very interesting problem, thanks for bringing it to my attention. I will study your solution, but also consider some alternatives. Just to brainstorm, one is to represent the affine transformation using fixed point arithmetic, which should make the math deterministic, but with limitations.

@raphlinus I'd like to take a stab at implementing your idea of combining transformations in their own monoid in elements.comp. Are you currently (or anyone else) working on this?
Related, is the comment about shared arrays of structs in elements.comp still relevant? If we're going to have two monoid passes, it would be a big readability to work on structs.
FWIW, the malloc functionality (example) uses shared arrays of structs, and I haven't heard you complain.

I'm open to you having a crack at it. If you would like to write a brief design doc before digging into the code, I'll try to prioritize it (I've had difficulty switching gears to focus on piet-gpu, but plan for it to be my main work over the next weeks).
I think we can do shared structs now, the bug in the NV shader compiler has been fixed a while ago and we're not at the point where we have to accumulate workarounds for driver bugs - yet.

Please review https://github.com/linebender/piet-gpu/pull/71 which contains an implementation of your separate transformation monoid. It works for me in Gio, and the piet-gpu tiger.

Ok, I believe I found a correct (and simpler) fix, a hybrid between your resolved transforms and my tracking of path endpoints. I abandoned the second pass, because I ended up needing both the resolved transformations (for path segments) and the relative transformations (for the bounding box monoid). The new approach keeps a single pass, and doesn't need an end path flag.
Tested with Gio and the piet-gpu tiger.
Please review at https://github.com/linebender/piet-gpu/pull/72.


Hundreds of errors + Crash on entering the Test Level

for some strange reason, after opening orbinaut im left with a shit ton of errors and i cant seem to make any real gameplay work
screenshot of errors:

footage of crash:
https://github.com/TrianglyRU/OrbinautFramework/assets/111393199/0f5601f9-c849-4215-a513-02056a68d338
screenshot of crash message:

ill admit im very new to gamemaker, but i cant seem to find any way around these issues
any help would be greatly appreciated

nevermind turns out it was a version issue
IMPORTANT:
if anyone has this issue too, use the STABLE version of gamemaker 2 NOT the monthly version

That's correct. Orbinaut is expected to be used with latest stable GameMaker version. I'd also recommend to turn off the Feather because the framework was not designed with it in mind

I Downloaded the LTS version but with OrbinautFramework 1.4, it opens to read only mode, which I looked up and it means there's something LTS isn't compatible with in the code. What's the big deal? Which version do I use???


[Bug]: redirect_urls should not be required for managed installs

Please confirm that you have:

[X] Searched existing issues to see if your issue is a duplicate. (If you’ve found a duplicate issue, feel free to add additional information in a comment on it.)
[X] Reproduced the issue in the latest CLI version.

In which of these areas are you experiencing a problem?
App
Expected behavior
The app should deploy without the requirement to add redirection URLs when using Shopify's managed installation.
The following works:
[auth]
redirect_urls = []
But when you deploy, the CLI will update the config and remove the redirect_urls = [] from the config, causing the next deploy to fail.
It also prevents me from updating my app via the dashboard:

Actual behavior
The following error was thrown:
 Fix a schema error in shopify.app.production.toml:                                                      │
│  [                                                                                │
│    {                                                                                │
│      "code": "invalid_type",                                                                             │
│      "expected": "array",                                                                                │
│      "received": "undefined",                                                                            │
│      "path": [                                                                                │
│        "auth",                                                                                │
│        "redirect_urls"                                                                                │
│      ],                                                                                │
│      "message": "Required"                                                                               │
│    }                                                                                │
│  ]

Verbose output
Reporting handled error to Bugsnag: Fix a schema error in shopify.app.production.toml:
[
  {
    "code": "invalid_type",
    "expected": "array",
    "received": "undefined",
    "path": [
      "auth",
      "redirect_urls"
    ],
    "message": "Required"
  }
]

Reproduction steps

Remove the redirect redirect_urls from the .toml config
Run deploy command

Operating System
MacOS darwin arm64
Shopify CLI version (check your project's package.json if you're not sure)
0.0.0-nightly-20240223150810
Shell
zsh
Node version (run node -v if you're not sure)
v18.17.0
What language and version are you using in your application?
No response

Hey @PhiloNL !, thanks for rising up this issue. We have found out a couple of bugs that causes this wrong behaviour. We are working on solving this as soon as possible.
In the meantime as a workaround you could set the default redirect url using the dashboard
https://shopify.dev/apps/default-app-home/api/auth

Once it's done the deploy command should start working again. As your app uses managed installation this should not have any impact
Sorry for the inconveniences


make Linux Distro dectection extendable

Before this change, the detected OS must be defined in OperatingSystem class. With this change, a distro can be defined like an extension.

merge due to timeout to wait comments


Can't pickle Actors

I get an error when I want to write actors to a pickle file.
import vtkplotter
import pickle

obj = vtkplotter.Sphere()

data = {'actors': obj}
with open('actors.pickle', 'wb') as f:
    pickle.dump(data, f)

TypeError: can't pickle Actor objects

Hi, you cannot pickle vtk objects, but you can still save single or multiple object to file, eg:
from vtkplotter import *

obj1 = Sphere()
obj2 = Torus().pos(0,0,1)

# single mesh
obj1.write('mysphere.vtk')

# multiple meshes/volumes
write([obj1, obj2], 'myobjs.npy')

then you can read them back with vtkplotter.load() or in terminal by command line:
> vtkplotter myobjs.npy


[SPARK-48238][BUILD][YARN] Replace AmIpFilter with re-implemented YarnAMIpFilter

What changes were proposed in this pull request?

This PR replaces AmIpFilter with a re-implemented YarnAMIpFilter, and removes the dependency hadoop-yarn-server-web-proxy
Why are the changes needed?

SPARK-47118 upgraded Spark built-in Jetty from 10 to 11, and migrated from javax.servlet to jakarta.servlet, which breaks the Spark on YARN.
Caused by: java.lang.IllegalStateException: class org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter is not a jakarta.servlet.Filter
    at org.sparkproject.jetty.servlet.FilterHolder.doStart(FilterHolder.java:99)
    at org.sparkproject.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.sparkproject.jetty.servlet.ServletHandler.lambda$initialize$2(ServletHandler.java:724)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
    at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
    at org.sparkproject.jetty.servlet.ServletHandler.initialize(ServletHandler.java:749)
    ... 38 more

During the investigation, I found a comment here https://github.com/apache/spark/pull/31642#issuecomment-786257114

Agree that in the long term we should either: 1) consider to re-implement the logic in Spark which allows us to get away from server-side dependency in Hadoop ...

This should be a simple and clean way to address the exact issue, then we don't need to wait for Hadoop jakarta.servlet migration, and it also strips a Hadoop dependency.
Does this PR introduce any user-facing change?

No, this recovers the bootstrap of the Spark application on YARN mode, keeping the same behavior with Spark 3.5 and earlier versions.
How was this patch tested?

UTs are added. (refer to org.apache.hadoop.yarn.server.webproxy.amfilter.TestAmFilter)
I tested it in a YARN cluster.
Spark successfully started.
root@hadoop-master1:/opt/spark-SPARK-48238# JAVA_HOME=/opt/openjdk-17 bin/spark-sql --conf spark.yarn.appMasterEnv.JAVA_HOME=/opt/openjdk-17 --conf spark.executorEnv.JAVA_HOME=/opt/openjdk-17
WARNING: Using incubator modules: jdk.incubator.vector
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
2024-05-16 09:09:43 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2024-05-16 09:09:44 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive} is set, falling back to uploading libraries under SPARK_HOME.
Spark Web UI available at http://hadoop-master1.orb.local:4040
Spark master: yarn, Application Id: application_1715850346568_0002
spark-sql (default)> select version();
4.0.0 ac9008b502492398c9aef078d494b5d72fcee624
Time taken: 1.609 seconds, Fetched 1 row(s)
spark-sql (default)>

When access http://hadoop-master1.orb.local:4040, it redirects to http://hadoop-master1.orb.local:8088/proxy/redirect/application_1715850346568_0002/, and the UI looks correct.

Was this patch authored or co-authored using generative AI tooling?

No

+CC @tgravescs

The patch makes sense to me, and supposedly the workaround will be removed when the Yarn side upgrades their J2EE?

... supposedly the workaround will be removed when the Yarn side upgrades their J2EE?

I suppose not. According to the discussion in https://github.com/apache/spark/pull/31642 org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter should be part of hadoop-client-api but actually not, and

Agree that in the long term we should either: 1) consider to re-implement the logic in Spark which allows us to get away from server-side dependency in Hadoop ...

cc @cloud-fan @dongjoon-hyun @LuciferYang @srowen

This looks like a good idea to get rid of the conflicting dependency. We should clarify https://github.com/apache/spark/pull/46611#discussion_r1605001322 though.

@cloud-fan I updated the code to reserve original code as much as possible, also leave comments to clarify the modifications.

Merged into master for Spark 4.0. Thanks @pan3793 and @cloud-fan


Get inspiration from https://funfedi.dev/support_tables/ etc

Review and learn :-)
FIrst step would be to create issues here for what they cover and we don't have issues for yet.

Superseded by #46.


Rewrite with cleaner API and no patching into MARC classes

@terrellt or @flyingzumwalt Let me know what you think.
When this is OK, I can proceed with pulibrary/plum#1.

@jpstroop It seems like the old version had more information from pulfa (IE https://github.com/pulibrary/pul_metadata_services/blob/71d537910bb62b0e91993362095bdd60b6d84e93/lib/pul_metadata_services/external_metadata_source.rb#L370). Do you want to do that work here, or just open another ticket?

I'd also like to see a #attributes method which we can use for plum. (so that we can do https://github.com/pulibrary/plum/blob/master/app/models/scanned_book.rb#L28)

I was just sitting down to add more to the EAD extraction piece. With this PR I'm primarily concerned about how the code is organized. I'll open another issue.
I see what you're doing w/ #attributes. Just an instance method on the *Record classes is what you have in mind, right?

@jpstroop Yup, that's what I have in mind. We can make it another ticket if you'd prefer.

#5 and #6

:+1:


SSL Certificate expired

While the site worked the previous days, it now comes up with an expired SSL certificate, as also proven by link. Was already reported in the past by 55 but apparently not closed.

It should be fixed now.


BitMEX Perpetual Connector

Build new BitMEX perpetual connector targeted to release this August (v0.42) or September (v0.43).
Official site: https://www.bitmex.com/
API docs: https://www.bitmex.com/app/apiOverview
Perpetual contracts guide: https://www.bitmex.com/app/perpetualContractsGuide
┆Issue is synchronized with this Clickup task by Unito

Bitmex perpetual connector has been added


Usage of the Driver for Linux generic without ROS

Hi,
I work with a sick multiscan 100 ( or 136 did not get the difference yet ) and try to write a wrapper for the driver to provide the sensor data to my software.
Therefore I installed the driver ( which seems to work fine ) and used the cpp example ( https://github.com/SICKAG/sick_scan_xd/blob/master/examples/cpp/minimum_sick_scan_api_client.cpp ) to start my implementation.
The problem is now I came across different problems ( I didn't know if i should open one issue per problem so I went with a overall usage in generic Linux ticket ):

When I use the functions SickScanApiLoadLibrary and SickScanApiUnloadLibrary as used in the example I get a linking error with "undefined reference to ..." but I am able to find the functions in the included header so I am not sure whats the problem there ?
But this is also not that big of a problem because without those functions it still works and I get the data in the callback to a function defined like in the example.
Now I want to use the driver by using a member function of my wrapper class but because there is no parameter in the function call for a instance of my wrapper I am not sure how to use the functions to get the data of the sensor inside my member function callback.
Could you please explain to me how to get this working or what the thoughts are on how to use the driver?
I miss some functions to get sensor information is there something like that what I did not find or is there something planned like that ?

If I did not find something in the documentation or there is something obvious I am sorry I was not able to find answers to my questions by going through the repository. Also I did not find anything in the open or closed issues after some search.
Thank you and best regards
Manuel Freudenreich

Thanks for your feedback! The example minimum_sick_scan_api_client.cpp is a good starting point for implementation and integration of the driver into your own application.

About the undefined reference to SickScanApiLoadLibrary and SickScanApiUnloadLibrary: These functions only load and unload the shared library (libsick_scan_shared_lib.so on Linux resp. sick_scan_shared_lib.dll on Windows). They are declared in sick_scan_api.h and implemented in sick_scan_xd_api_wrapper.c. We recommend to compile and link sick_scan_xd_api_wrapper.c in your own project to load and unload the shared library during runtime. If your application can call the SickScanApi-functions without SickScanApiLoadLibrary resp. SickScanApiUnloadLibrary, you probably link directly (statically) against the library. This is possible and correct, as long as the library and the application are bundled and compiled with identical compilers and compiler settings. To reduce dependencies, we recommend to build your application with sick_scan_xd_api_wrapper.c and to load resp. unload the shared libsick_scan_shared_lib.so during runtime.

About member function callbacks: Since each process should serve only one lidar with a single TCP-connection, the idea is to use the API and the library callbacks as a singleton. This means, that you can have only one (singleton) set of callbacks in your application for communication and data exchange with your lidar. E.g. you can declare a member function static to implement the callback. Alternatively, you could define a static function, which simply delegates the data to a member function of your instance. Or you could implement a wrapper class using a singleton pattern with static callbacks. Within the static callback, we recommend to just copy the scan data into a threadsafe fifo and to process the data in a different thread. This way the data processing thread will avoid blocking any callbacks.

About sensor information: Currently the sensor status is only given by the API return values. If SickScanApiInit returns succesful (SICK_SCAN_API_SUCCESS resp. 0) and a registered callback receives pointcloud messages continously, both lidar and library are working as expected.

Thank you for the detailed and quick response. I will look into it an give you feedback if it worked for me when I find time.

I found time to look further into the topic and I have the following comments:

Fine for me and understandable.

First of all I understand the concept how you intend to use the software and I can imagine this is influenced by the way ros is used. The problem is for my use case and for example a small application just fusing the data of two sensors together the approach "each process should serve only one lidar" seems very limiting to me. In the small application example it should from my perspective not be necessary to implement inter process communication and such things. Therefore my experiences using libraries is to be able to use a context for such callbacks works great and enables for example multi threaded application to use the library in a very flexible way. Just as an example and to be clear what I mean here is link for more information "https://rufflewind.com/2016-09-21/function-pointer-context".

Ok thank you good to know but what is with information about the sensor as for example model type, number of layers or number of high resolution layers. Something to be able to distinguish different types of sensors and provide information to the user.

I also have a new question: Why is the point cloud message I get from the sensor unordered ( in my understanding it should be clear how its ordered from sensor side ) or could this be depending on the sensor I have ?

Thanks in advance.

Thank you for your valuable feedback. Regarding your new question:
For most lidars, a well-ordered point cloud is returned. With multiScan, however, a different principle is used. Here, so-called segments are transmitted. The starting angles of the different segments are different. This is due to the measuring principle of this type of lidar. In order to enable a timely processing of the point clouds, we parse the segments and convert them into point clouds. If the application does not necessarily need the data close to real time, you can subscribe to the topic "/cloud_fullframe". There, the segment data is collected internally in the driver and exported when a 360 degree round trip has been completed. Again, the starting values are different for each layer. But they always contain one 360 degree round trip per layer.

Thank you for the explanation about the new question.
For me at the moment point 2 is very important so are you able to give a statement about that ? Will there be effort to change the code in the direction it is usable in a I would say more general way ?

Hello,
we are currently looking into how we can solve your issue in the best way and integrate it into the next release. In the mean time, for the application fusing data from two sensors you could try a workaround based on the apiHandle parameter which is passed to the callback function. This is unique per driver instance and therefore should allow you to recover the context from within the callback function.
Best regards
Manuel

Thank you for the response and I am looking forward to here from you. I also thought about using the apiHandle I will think about it.
At the moment I have another question related to having two sensors simultaneously running in the same network.
I use launch files for the sensors but I have some trouble with it. I created one launch file for every sensor. I changed the "hostname" to the ip address of the sensor, the "udp_receiver_ip" to the ip of my laptop and tried to get data from both sensors. As expected it does not work like that because they use the same udp settings where data is getting some kind of "fused" but also the interfere each other.
Because of that I thought i would just need to change the "udp_port" in the launch file and the "Port" in the "Streaming settings" of the web interface of the second sensor. Unfortunately I was not able to get both running like that at the same time.
My question is now where is my error and how do I need to configure both sensors and launch files ?
Also do I assume it correct the settings value "port" in the launch file needs to stay on 2115 because it defines the port on the sensor not on the laptop ?
Thank you for the help.

Thank you for your feedback. Currently you can run two sensors simultaneously by starting two processes with two different launchfiles. For each sensor, its IP address and UDP port must be configured differently in the corresponding launchfile. Example with client IP <IP_ADDRESS> (your laptop running sick_scan_xd):
Launchfile configuration for  1.st sensor (sensor IP <IP_ADDRESS>, udp port 2115):
        <param name="hostname" type="string" value="<IP_ADDRESS>" />           <!-- IP address of multiScan136 to post start and stop commands, f.e. "<IP_ADDRESS>" (default) -->
        <param name="udp_receiver_ip" type="string" value="<IP_ADDRESS>" />  <!-- UDP destination IP address (ip address of udp receiver), f.e. "<IP_ADDRESS>" -->
        <param name="udp_port" type="int" value="2115" />                     <!-- default udp port for multiScan136 resp. multiScan136 emulator is 2115 -->

Launchfile configuration for 2.nd sensor (sensor ip <IP_ADDRESS>, udp port 2116):
        <param name="hostname" type="string" value="<IP_ADDRESS>" />           <!-- IP address of multiScan136 to post start and stop commands, f.e. "<IP_ADDRESS>" (default) -->
        <param name="udp_receiver_ip" type="string" value="<IP_ADDRESS>" />  <!-- UDP destination IP address (ip address of udp receiver), f.e. "<IP_ADDRESS>" -->
        <param name="udp_port" type="int" value="2116" />                     <!-- default udp port for multiScan136 resp. multiScan136 emulator is 2115 -->

The sensor's IP address and UDP port must be configured and written to the sensor's EEPROM using SOPAS Air (web GUI, open sensor ip in your browser, http://<IP_ADDRESS> or http://<IP_ADDRESS>) or SOPAS ET under Windows.
Please note that the sick_scan_xd library is currently not guaranteed to be fully thread-safe. We recommend the use of ROS-1 or ROS-2 for multi-sensor systems.

Many thanks for the hint about UDP port configuration by parameter  udp_port versus port. Currently both parameter must be set identical to the UDP port of the Multiscan lidar. The launchfile configuration for a 2. nd sensor with e.g. sensor ip <IP_ADDRESS> and udp port 2116 is therefore:
        <param name="hostname" type="string" value="<IP_ADDRESS>" />           <!-- IP address of multiScan136 to post start and stop commands, f.e. "<IP_ADDRESS>" (default) -->
        <param name="udp_receiver_ip" type="string" value="<IP_ADDRESS>" />  <!-- UDP destination IP address (ip address of udp receiver), f.e. "<IP_ADDRESS>" -->
        <param name="udp_port" type="int" value="2116" />                     <!-- default udp port for multiScan136 resp. multiScan136 emulator is 2115 -->
        <param name="port" type="int" value="2116" />                         <!-- IP port of multiScan136 to post start and stop commands -->

We will remove the port parameter in the future (i.e. the UDP port is set exclusively by parameter udp_port). Until then, please set both udp_port and port to identical values.

Hello,
If I understand correctly what you have montioned in this last answer: we have to set up two processes (1 and 2) for the two scanners, then we change the configuration as you have done in each launch file(sick_multiscan.launch) of the two scanners.
My question is: which launch file should I put in the command argument on visual studio?
thanks for your help

@bazzou-mohammed You're right. Start the application twice with different launchfiles for each scanner. You can debug one of them in Visual Studio, or both concurrently in 2 Visual Studio instances, or attach the debugger at runtime alternating to one or the other process (Debug -> Attach to Process).

Hello,
Thank you for your reply. Trying to start the application for one of the two scanners using the corresponding launcher file, here is where I ended up:

thanks for your help

Sopas commands "LFPangleRangeFilter" and "ScanDataEthSettings" are specific for the Multiscan136 lidar. Make sure that the launchfile corresponds to your lidar. Use e.g. sick_lms_5xx.launch for LMS-511 scanners, sick_multiscan.launch for Multiscan136 scanner, and so on. See https://github.com/SICKAG/sick_scan_xd/blob/master/USAGE.md for a list of supported scanners and their corresponding launchfile.
Please post all log messages or screenshots of the complete initialization from start, if the problem remains.

Thank you for your reply. The scanner I'm working with is not the Multiscan136, but rather an LMS-511. Can you give me some specific advice about this scanner model?

To use two LMS-511 scanners simultanously in two processes, both scanners must have different IP addresses, e.g. <IP_ADDRESS> (default ip address) and <IP_ADDRESS> (2.nd ip address). Use SOPAS ET to configure the IP addresses and store them in the lidars EEPROM.
Then start sick_scan_xd_api_test (resp. an application using these lidars) with sick_lms_5xx.launch and overwrite the IP address by commandline, e.g.
start "sick_scan_xd_api_test <IP_ADDRESS>" .\build_win64\Debug\sick_scan_xd_api_test.exe ./launch/sick_lms_5xx.launch hostname:=<IP_ADDRESS>
start "sick_scan_xd_api_test <IP_ADDRESS>" .\build_win64\Debug\sick_scan_xd_api_test.exe ./launch/sick_lms_5xx.launch hostname:=<IP_ADDRESS>

This way you have started two processes using the same launchfile, just with a different hostname (IP-address) for each scanner. Attach the Visual Studio Debugger to one or both processes if required.
Alternatively, you can specify the scanners IP addresses in two different launchfiles (i.e. change parameter hostname to <IP_ADDRESS> in the 2.nd launchfile). For ROS, parameter cloud_topic and nodename must also be different for both lidars. See https://github.com/SICKAG/sick_scan_xd/blob/master/FAQ.md#how-to-run-multiple-sensors-concurrently for a TiM-7xx example.

I am closing this issue for now. Please do not hesitate to reopen the ticket if required.


snapshot comparison is weird

Hi,
I am wondering if I am missing something or why this is happening.
I created my snapshots like I always do
cy.get(element).scrollIntoView(); cy.get(element).matchImageSnapshot(options)
they weird thing is that I added a component before the one for which I take snapshots and suddenly some snapshots are failing, with a diff between 1% and 11%. The diff snapshots do show diffs but honesty none of them have diffs that I even can see with my eyes.
Here is an example.

I don't see why this one and few others are randomly now failing (the component itself did not change), if I remove the component added before this one it never fails again.
Not sure why adding that component makes the snapshots fail.

What settings did you use to achieve that snapshot result?
At first glance it looks like something has shifted the layout, perhaps inserted elsewhere

hey,
these are my setting, I also initially thought that there were layout shifts but there is nothing in that component that moves
const options: CypressImageSnapshotOptions = {
			failureThreshold: 0.01,
			allowSizeMismatch: true,
			failureThresholdType: 'percent',
			capture: 'viewport',
			comparisonMethod: 'ssim',
			customSnapshotsDir: `./cypress/reports/mochareports/snapshots/something`,
			e2eSpecDir: Cypress.spec.relative,
			snapFilenameExtension: '.snap',
		};

It seems like your comparison image is lacking detail. For example the defaults look like this:

That would help you identifiy the cause I imagine

hi, that would indeed already help, but I don't really see how I can improve them, everything is run in a docker via Github actions. do you have any ideas ?

Is it possible to reproduce in some way? Not much I can do from here otherwise


Regarding assign removal

Hi ,
How to remove assigns in my netlist  and convert to buffer ?
assign N10103 = N10102;
assign N10838 = N10837;
Thanks

Run clean -purge at the end of synthesis before exporting.

Using , but not able to remove those. closing now