Incompatibility with webpack-manifest-plugin

We use https://github.com/danethurber/webpack-manifest-plugin to output a JSON manifest of source filenames to output filenames, which our application then uses to write the <script> and <link> tags, and other references to Webpack-compiled assets into our server-side HTML templates.
Using the manual setup for DllPlugin, this meant we were producing two JSON manifest files: one for the DLL build, and one for the main build.
With autodll-webpack-plugin, I can see the JSON manifest file generated by webpack-manifest-plugin for the DLL build gets written to the cache directory (along with the JavaScript bundle and the DllPlugin manifest file), but that file doesn't make it into the final Webpack output; only the JSON manifest file generated by webpack-manifest-plugin for the main build is output.
Since the file is sitting there in the cache directory, I'm hoping there is some easy way to support plugins that generate additional assets on output.

Same problem here.

You can generate just 1 manifest file by adding a custom generate function
const seed = {};
const generate = (_, files) => files.reduce((_, { name, path }) => {
  // modify the shared seed object, so as to share it between the main and
  // DLL compiler instance
  seed[name] = path;
  return seed;
}),

module.exports = {
  plugins: [
    new WebpackManifestPlugin({ generate, seed }),
    new AutoDllPlugin({
      plugins: [new WebpackManifestPlugin({ generate, seed, fileName: '_throwaway.json' })]
    })
  ]
};

Still a bit hacky 😞 but generates 1 correct manifest file
In theory just doing the shared seed thing should solve the issue, but I'm guessing that something is causing the AutoDllPlugin's WebpackManifestPlugin instance to run first, but then output last (causing the staler manifest file to overwrite the newer file - hence the need for the _throwaway.json file)


Record metadata as part of Track

Record metadata (especially changes in metadata) as part of the Track. Example: what MMSI (ship-unique identifier) the ship is broadcasting at each detection.

@sdhiscocks can this be closed?

@sdhiscocks can this be closed?

Yes, I think so, as now you can add custom track only metadata since changes in #121.


UnicodeDecodeError: 'gbk' codec can't decode byte 0x9d in position 6304: illegal multibyte sequence

Environment: Windows 7
Python: 3.6.2
pip installation failed.
Collecting tangent
  Using cached tangent-0.1.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\ADMINI~1\AppData\Local\Temp\pip-build-k2pei7vz\tangent\setu
p.py", line 5, in <module>
        readme = f.read()
    UnicodeDecodeError: 'gbk' codec can't decode byte 0x9d in position 6304: ill
egal multibyte sequence

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\ADMINI~1
\AppData\Local\Temp\pip-build-k2pei7vz\tangent\

Got the same thing, so I had to clone and make minor changes to README.md before it worked. See my pull request for the exact changes:  https://github.com/google/tangent/pull/12

This issue can be solved by adding ", encoding='utf-8' "
Please refer to  .

@berseus Me too, I have also cloned and download it.

@Watesoyan I saw your fix as well, and it looks nice in case you prefer to keep the non-ascii symbols in the markdown file.

Doubly fixed in PRs #12 and #9. Thanks folks!

For Chinese system language users: 在 控制面板-区域-更改系统区域设置 中 勾选 Beta版：使用 Unicode UTF=8 提供全球语言支持(U) 选项 重启电脑后，就可以安装了。

This solved my problem when running !pip install CIRpy. Thanks so much!!!!!


Added clicrud

CLICRUD
Status

new pack
initial build works

Description
To add CLICRUD to ST2.
Checklist (tick everything that applies)

[ X ] Metadata: pack.yaml, icon, structure (required for new packs)
[ ] Version bump (required for changed packs)
[ ] Code linting (required, can be done after the PR checks)
[ ] Tests (not required but really recommended)

Closing this one in favour of #576


BUG - Mock Up Data for User Space / Badges

To keep and test space post , badges etc. there is a need for mock data work with database this the draft issue for us to remember. FYI @ceydaduzgec

Closed with PR https://github.com/swe574-spring23/SWE574/pull/113


SAML2 Keycloak: Unknown login requester error

Describe the bug
I tried following the examples by hugocortes, but I keep getting an 'Unkown login requester' error after it redirects to keycloak's login page.  Any thoughts?  I'm not too familiar with keycloak so I'm not too sure how to debug it
Your Configuration (please complete the following information):

Exact BookStack Version (Found in settings): v0.28.2
PHP Version: 7.3.15
Hosting Method (Nginx/Apache/Docker): Docker, behind nginx reverse proxy (linuxserver/bookstack)

double check your client id in keycloak, it has to be exactly the bookstack url from where you are coming.
Your config of keycloak and bookstack would help.

Where exactly I need to look at?

You need to check Client ID in keycloak and in the advanced section in SSO(SAML) settings in slack.
ex: both should be https://slack.com

You need to check Client ID in keycloak and in the advanced section in SSO(SAML) settings in slack.
ex: both should be https://slack.com

Not related to this project, but I also had this error looking at the keycloak quickstarts. The entityId attribute should map to what the client id is.

Due to the lack of response from the original issue author I will close this. Thanks to everyone above that's provided support.
If this issue remains please feel free to open a new issue, referencing this one.


Update main.cpp

A rate is a frequency. Frequency is 1/time. The terminology in the example is incorrect. This is a DELAY, not a RATE. Please use technical words correctly!

Done, as requested


missing gain config function for use with indi-allsky

Mar 10 13:07:38 astroberry [ERROR] MainProcess allsky.unhandled_exception() #41: '  File "/home/pi/indi-allsky/indi_allsky/camera/indi.py", line 990, in getCcdGain\n    raise Exception('Gain config not implemented for {0:s}, open an enhancement request'.format(indi_exec))\n'
Mar 10 13:07:38 astroberry [ERROR] MainProcess allsky.unhandled_exception() #41: '  File "/home/pi/indi-allsky/indi_allsky/camera/indi.py", line 548, in getCcdInfo\n    gain_info = self.getCcdGain()\n'
Mar 10 13:07:38 astroberry [ERROR] MainProcess allsky.unhandled_exception() #41: '  File "/home/pi/indi-allsky/indi_allsky/allsky.py", line 536, in _initialize\n    ccd_info = self.indiclient.getCcdInfo()\n'
Mar 10 13:07:38 astroberry [ERROR] MainProcess allsky.unhandled_exception() #41: '  File "/home/pi/indi-allsky/indi_allsky/allsky.py", line 884, in run\n    self._initialize()\n'
Mar 10 13:07:38 astroberry [ERROR] MainProcess allsky.unhandled_exception() #41: '  File "/home/pi/indi-allsky/allsky.py", line 119, in \n    action_func(*args_list, **kwargs_dict)\n'
Mar 10 13:07:38 astroberry [ERROR] MainProcess allsky.unhandled_exception() #36: Value: Gain config not implemented for ././indi_pylibcamera.py, open an enhancement request

Thank you so much for your kind analysis. I will report it to Aaron. I use the main branch of indi-allsky and had to manually start the indiserver to convince indi-allsky to use the puli camera.
CS, Markus
Am 10. März 2023, 16:30 +0100 schrieb scriptorron @.***>:

Sorry, this is something that needs to be fixed in indi-allsky. I even do not know which version of indi-allsky you use. The Git project https://github.com/aaronwmorris/indi-allsky/blob/main/indi_allsky has a main and a dev branch and both do not use indi_pylibcamera. Furthermore in both the line 990 of indi.py can not raise such an exception.
What I have seen so far the indi-allsky needs value GAIN of property CCD_GAIN. The indi_pylibcamera driver provides this. Likely it is just not handled the right way in indi-allsky. Please open an issue in the indi-allsky project.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Aaron, thank you very much. If all agree I would like to close this issue.


Added ability to use xxl as max

When using the xxl breakpoint as the max, such as in the following example:
@include bp(xl, xxl) {
    background:red;
}

The output would be something like the following (note the 1emem caused by line 71):
@media only screen and (min-width: 77.75em) and (max-width: 1emem) {
  body {
    background: red;
  }
}

Adding an xxl-max to the max list resolved this issue.

Hey @ryanmargheriti, can I ask what the use case for this is? If you want to add a new breakpoint above the current maximum of xxl you can actually adjust the configuration and add a new breakpoint to do this.
If you add the variables in the scss:
$bp-list-min: small 359, medium 768, large 1024, xlarge 1244;
$bp-list-max: small 767, medium 1023, large 1243;

and run the options function in the js:
DD.bp.options({
    breakpoints: [
        { name: 'small', px: 767 },
        { name: 'medium', px: 1023 },
        { name: 'large', px: 1243 }
    ]
});

You'll be able to create your own additional breakpoints above our default ones.
By using the code provided in your pull request with adding a new variable for xxl-max as 1px larger than the xxl-min it means that using @include bp(xxl, xxl) {} will give you a range of 1px only, which is very different to how the rest of the breakpoints work (which is going from the smallest to the largest size of the breakpoint.

I see what you mean about the 1px range.
I was pretty much just trying to fix the 1emem bug, perhaps this should be an issue, not a PR. I am headed away for a couple months, feel free to close it off and I will come up with a better solution when I return, unless you do in the mean time.

Thanks @ryanmargheriti I'll close this and open a bug ticket to resolve the 1emem issue


Lock mechanism should exist to protect services and stack from mishandling

Hi
In production, several stacks may exist inside the same SWARM.
To prevent any human errors when updating/stop/start... stacks or services, a looking mechanism should exist .
So, an administrator who wants to update  a service/stack  should first unlock it before to be able to  update it.

this locking mechanism should work at service and stack level.
This locking mechanism should also include a password protection (one password per stack )

Hey, @fabio-barile, two problems,
First off, we use the docker/swarmkit issues to track issues narrowly related to the swarmkit component, which is mostly user non-facing. So, this issue is in the wrong place.
Second, while this might be a cool feature, it's probably more the kind of thing best left to external components.  Docker does offer something called AuthZ that can be used to restrict user actions, I think based on plugins. I don't know much about it because I haven't used it, but it's probably what you'd use to build something like this as an external component.

@fabio-barile Thanks for the feature suggestion.
This is the kind of stuff that can be built on top of docker, we do not wish to add this to the core project for the time being. As @dperny mentioned, we do not have a notion of users for now.
Thanks


cv.yml doesn't change the website

I am trying to make changes in the CV section. In the file _pages/cv.md I was able to change the page description and the link to the pdf file of my cv. However, the next part that I thought was supposed to be changed in _data/cv.yml isn't displayed on the website after edits.
this is the cv.md file:

this is cv.yml:

and this is what the website looks like:

how to change the part "table of content" and everything after that?

Check #1611 for answers. But I will open a new feature request to make it clearer on the README.


INFORM6 messages are never accepted from dhcrelay

I am seeing continuous INFORM6  requests in the logs when starting dhcpcd on a server that talks to a dhcp server through dhcrelay:
Dec 28 17:31:58 user daemon.debug dhcpcd[6738]: eth0: requesting DHCPv6 information
Dec 28 17:31:58 user daemon.debug dhcpcd[6738]: eth0: delaying INFORM6 (xid 0x349b69), next in 1.0 seconds
Dec 28 17:31:59 user daemon.debug dhcpcd[6738]: eth0: multicasting INFORM6 (xid 0x349b69), next in 1.1 seconds
Dec 28 17:32:00 user daemon.debug dhcpcd[6738]: eth0: multicasting INFORM6 (xid 0x349b69), next in 2.3 seconds
Dec 28 17:32:02 user daemon.debug dhcpcd[6738]: eth0: multicasting INFORM6 (xid 0x349b69), next in 4.2 seconds
Dec 28 17:32:06 user daemon.debug dhcpcd[6738]: eth0: multicasting INFORM6 (xid 0x349b69), next in 8.5 seconds
Dec 28 17:32:08 user daemon.debug dhcpcd[6738]: eth0: failed to request DHCPv6 information
Dec 28 17:32:08 user daemon.debug dhcpcd[6738]: eth0: requesting DHCPv6 information

I am running dhcpcd 10.0.6 with the ipv6 and ipv6rs options. The router sets the managed flag to off, so INFORM is expected. The dhcp server doesn't provide ipv6 addresses but does provide DNS search lists.
I can see messages as expected in tcpdump output:
17:14:00.190098 eth0  Out IP6 (flowlabel 0x2cebe, hlim 1, next-header UDP (17) payload length: 52) fe80::5054:ff:fe7a:6238.546 > ff02::1:2.547: [udp sum ok] dhcp6 inf-req (xid=4957c2 (client-ID hwaddr/time type 1 time 756756214 5254007a6238) (option-request DNS-server DNS-search-list lifetime Client-FQDN opt_82 opt_83) (elapsed-time 106))
17:14:00.193048 eth0  In  IP6 (flowlabel 0x75905, hlim 64, next-header UDP (17) payload length: 111) fe80::5054:ff:fe81:fdff.547 > fe80::5054:ff:fe7a:6238.546: [udp sum ok] dhcp6 reply (xid=4957c2 (client-ID hwaddr/time type 1 time 756756214 5254007a6238) (server-ID hwaddr/time type 1 time 756752960 525400334d18) (DNS-server fd27:0:0:1::2) (DNS-search-list user.home.local. home.local.))

Note that I am using dhcrelay because this server is in a different vlan than the dhcp server. When I try from a server with the same configuration on the same vlan as the dhcp server, there is no issue. Why would a relay cause this issue? The configuration seems to be correct as the reply is making it back to the dhcpcd server.

I have no idea why a relay would not work.
How are you starting dhcpcd? What is the output of ps axu | grep dhcpcd?

Should have looked at that a long time ago. It was in a weird state with a non-manager process was still running on eth0. Killing that and starting a manager process at boot fixed that issue.
Would starting dhcpcd at boot, before carrier on eth0, cause accept_ra to be set to 0? I am using ifupdown-ng's use ipv6-ra setting for that interface and I confirmed that ifup calls echo 1 > /proc/sys/net/ipv6/conf/eth0/accept_ra before dhcpcd starts. But after boot, everything is configured correctly except no router advertisements are being received because the param is set back to 0. I think this will make dhcpcd delete the route eventually.

In your first comment you note that you use dhcpcd's ipv6rs option. This is also the default and causes dhcpcd to disable the kernel from doing it. This sets accept_ra to zero. You don't want both handling the RA.


🐝🐞🐜🐛🐝🐞🐜🐛🐝🐞🐜🐛🐝🐞🐜🐛🐝🐞🐜🐛🐝🐞🐜🐛🐝🐞🐜🐛🐝🐞🐜🐛

Version 0.4.17
If I modify the files near the end of my script, they don't get uploaded.

More info: putting a time.sleep(10) before the script ends allow the files to be uploaded

@lukas can you do a couple runs today and confirm @shawnlewis's fix works?

Even if it does, I think we should leave the issue open. Or create a new issue "Ensure that files are always uploaded" that references this one.

I have a theory for this. Pushing files happens on the watchdog thread. When the main script exits, we wait 10s then tell the watchdog thread to stop. If the watchdog thread is uploading a big file that takes longer than 10s, it'll only get to upload that one file before we tell it stop. If there are other files pending after that, they'll get dropped.
This is just a theory, haven't confirmed. But it seems reasonable.
Ideally the watchdog thread would just serve notifications to another thread that manages pushing files. The pusher thread would wait until all file modifications are saved before exiting.
Even more ideally we'd let the user know what's going on. Maybe after their script exits we enable more verbose logging. Or at the end of the script we print "syncing remaining files, please monitor "http://app.wandb.ai/.../run" for sync progress. And then show good progress in the UI. Or a combination of the two.

I agree we should throw the pushes onto a another thread, and they should ideally be able to happen in parallel.  I had thought watchdog handled calling handlers in parallel, we should confirm that a long running event handler blocks future event handlers from firing.

Here's a gist that shows the behavior: https://gist.github.com/shawnlewis/15c6903d3a653b6166e36ef4763ba30a

This is fixed now, with FilePusher, deferring saves til the end, and not ignoring 0-length file creations.


Read data from GowerLabs Lumo device in HDDOT format

Describe the new feature or enhancement
I would like to read data stored in the HDDOT format that was acquired using a GowerLab Lumo device.
The data format is described at: https://github.com/DOT-HUB/DOT-HUB_toolbox/blob/master/DOT-HUB_toolbox_Manual.pdf
Essentially:

The data is in .nirs format (was the Homer data format, but now they move to SNIRF).
Has a custom struct field for storing optode coordinates in 3D
Stores the landmark coordinates for Nz, Iz, Ar, Lr, Cz
The coordinates are digitised per participant, not template positions

Describe your proposed implementation

Convert the .nirs file to .snirf using the Homer3 function Nirs2Snirf.m. By default Homer3 throws away the 3D coordinates, so you need to use my branch at: https://github.com/rob-luke/DataTree/tree/lumo
This will produce a .snirf file but it loses the landmark positions, you need to write note these in the MATLAB command window.
Import the snirf file and then manually code in the landmark positions.

Describe possible alternatives

It would be better if Homer3 Nirs2Snirf.m:

Handled the 3D coordinates without using a custom branch, but I think the HDDOR SD3D structure is not standard?
Did not throw away the landmarks and encoded them in the SNIRF file. SNIRF can specify landmarks.

Write a .nirs reader. But this seems like lots of work and there is no specifications document and I think there are many versions running around. SNIRF was developed to overcome these problems.

Additional comments
Am I doing this correctly? How can we make this simpler?

Using this approach the following code can be used to import data.
import mne
import numpy as np
import os.path as op
from mne.channels import make_dig_montage
import mne_nirs

# %%
# Read data

raw = mne.io.read_raw_snirf("/some/lumo/data/file.snirf", optode_frame="head")
subjects_dir = op.join(mne.datasets.sample.data_path(), 'subjects')

# %%
# Landmarks taken from nirs.SD3D.Landmarks

nasion = np.array([0, 184, 0]) / 1000
rpa = np.array([66.2270, 87.7913, -2.6014]) / 1000  # flipped
lpa = np.array([-71.0591, 92.7675, -2.4886]) / 1000  # flipped

# %%
# Make Dig Montage with landmarks

srcs = mne_nirs.channels.list_sources(raw)
dets = mne_nirs.channels.list_detectors(raw)
ch_pos = dict()
for src in srcs:
    raw_s1 = mne_nirs.channels.pick_sources(raw.copy(), int(src)).pick(1)
    ch_pos[f"S{src}"] = raw_s1.info['chs'][0]['loc'][3:6]
for det in dets:
    raw_s1 = mne_nirs.channels.pick_detectors(raw.copy(), int(det)).pick(1)
    ch_pos[f"D{det}"] = raw_s1.info['chs'][0]['loc'][6:9]
dm = make_dig_montage(ch_pos=ch_pos, nasion=nasion, lpa=lpa, rpa=rpa)
raw.set_montage(dm)

# %%
# Plot result

brain = mne.viz.Brain('fsaverage', subjects_dir=subjects_dir, background='w', cortex='0.5', alpha=0.1)
brain.add_foci(raw.info['dig'][1]['r'] * 1000, hemi="lh", color='w')
brain.add_foci(raw.info['dig'][0]['r'] * 1000, hemi="lh", color='b')
brain.add_foci(raw.info['dig'][2]['r'] * 1000, hemi="lh", color='r')
brain.add_sensors(raw.info, trans='fsaverage', fnirs=['sources', 'detectors'])
brain.add_head()

# %%
# Plot result just brain

brain = mne.viz.Brain('fsaverage', subjects_dir=subjects_dir, background='w', cortex='0.5', alpha=0.1)
brain.add_sensors(raw.info, trans='fsaverage', fnirs=['sources', 'detectors'])

produces...

which looks approximately correct. It should match this figure from the paper: Evaluating a new generation of wearable high-density diffuse optical tomography technology via retinotopic mapping of the adult visual cortex

Which seems to roughly match with what MNE creates above. Some optodes seem to be slightly inside the head surface, but I guess this is due to discrepancies between the participants headshape + digitisation and the generic head model used here.
Any thoughts on the python script above and result @larsoner? Is there a cleaner way to achieve this? Can the coregistration functions in MNE-Python be used to tweak the final positions to sit nicely on the head surface, or is that not the use of it?

Any thoughts on the python script above and result @larsoner? Is there a cleaner way to achieve this? Can the coregistration functions in MNE-Python be used to tweak the final positions to sit nicely on the head surface, or is that not the use of it?

I have not read in detail what you actually did above, but if what you have is realistic / digitized sensor locations on a surrogate MRI head model... then yes I'd expect them not to sit properly on the head surface.
The best solution is to have an individualized MRI from that subject, and then use mne coreg or something similar to align the points with the MRI.
Without that, you could use mne coreg to take a surrogate MRI like fsaverage and rescale it to the digitized locations. We do this a lot for infant MEG for example because we rarely have individualized MRIs of 6 month olds, but have good templates and good / reliable Polhemus digitizations of their head shapes.
Regardless, with EEG at least what we do in forward modeling is take whatever digitized EEG locations we end up with via this alignment procedure (really realistic, or guesstimated using 10-20 + fsaverage) and project them to the head surface. In principle we could similarly project the fNIRS electrodes to the head surface (or to the head surface + some distance, if you know for example the sensors have some standardized standoff from the surface). We're probably going to need to build this sort of thing for MEG eventually with the advent of OPMs and flexible geometries, so it's definitely in scope of MNE-Python to do these things.

... and if those are fiducial points you plotted, your alignment appears to be off by quite a bit (needs to move/translate down and rotate/pitch forward)

Thanks @larsoner!

yes I'd expect them not to sit properly on the head surface

Good, then my intuition was ok.

what we do in forward modeling is take whatever digitized EEG locations we end up with via this alignment procedure (really realistic, or guesstimated using 10-20 + fsaverage) and project them to the head surface

What is this process called? Or is there a function name I can search for? Or internal function?

... and if those are fiducial points you plotted, your alignment appears to be off by quite a bit (needs to move/translate down and rotate/pitch forward)

Yes that's the fiducials. So I think something is off in what I am doing. I haven't done any individualised alignment before so I am struggling to grasp how this works. Does the fiducials being in the wrong spot mean I have imported the data incorrectly? Or is there a way I can programmatically generate a transformation? Or is it something you do visually and type the numbers out manually?

We're probably going to need to build this sort of thing for MEG eventually with the advent of OPMs and flexible geometries, so it's definitely in scope of MNE-Python to do these things.

Ok, good to know. I will try and make any code I write generic then.

Background
In M/EEG we call this "coordinate frame alignment" / "coregistration". See for example
https://mne.tools/dev/auto_tutorials/forward/25_automated_coreg.html
https://mne.tools/dev/auto_tutorials/forward/30_forward.html#visualizing-the-coregistration
The TL;DR is that your MRI is in some native scanner space (generally) and your electrodes start out in some native digitization space (generally). If you have LPA/Nasion/RPA digitized (in your digitization space) you can trivially transform all digitized points to what we call the "head" coordinate frame which is defined by these three points. Then mne coreg is designed to allow you to manually (or automatically, but it's less accurate) give you the rotation+translation known as the head_mri_t that defines the transformation from the head coordinate frame to the MRI coordinate frame.

Does the fiducials being in the wrong spot mean I have imported the data incorrectly?

No, generally it means 1) you probably need to convert them from their arbitrary digitization coordinate frame to the standard (Neuromag) anatomical "head" coordinate frame, if you haven't already, and then 2) you need to define the head_mri_t (trans as we usually call it) properly.
If you go to the MNE sample dataset folder and call something like this, you can start playing with these things in a standard dataset:
$ cd ~/mne_data/MNE-sample-data/
$ mne coreg -s sample -d subjects/ --fif MEG/sample/sample_audvis_raw.fif

You'll see that the identity transform trans / head_mri_t is a terrible alignment of the head and MRI coordinate frames (you might need to click "lock fiducials" to accept the MNI-based MRI fiducial estimates):

Clicking "fit fiducials" gets you to something closer to reasonable:

But if you want a good coreg, you have to manually adjust the MRI fiducials (unlock and click on the head a bit, then re-lock them) and then re-fit to fiducials, and now we're close enough that ticking "orient glyphs" generates something that is not terrible:

Finally, using "Fit ICP" (iterative closest point) after setting fiducial matching to "matched" (not nearest) mode we get something pretty good:

And it matches pretty well to the one that was actually originally created for this dataset:
$ mne coreg -s sample -d subjects/ --fif MEG/sample/sample_audvis_raw.fif --trans MEG/sample/sample_audvis_raw-trans.fif

What you should do

Ensure all these dig points and sensor locations you have are actually in head coordinates. In practice, all this means is use dig_head_t = mne.transforms.get_ras_to_neuromag_trans(nasion, lpa, rpa) to get a 4x4 transform you can dig['r'] = mne.apply_trans(dig_head_t, dig['r']) to all points.
Use mne coreg as above -- or an equivalent automated approach eventually -- to align your digitized points to the head surface
Someday add to MNE-Python sensor-to-scalp sensor position projection functions (maybe with an offset in mm that defaults to zero?)

Stores the landmark coordinates for Nz, Iz, Ar, Lr, Cz

For M/EEG/(ECoG/sEEG) so far we have standardized around LPA/Nz(asion)/RPA, it would be great if you could infer from these other ones where LPA/RPA are... but if not, then we might have to "fake it" and live with the "head" coord frame definition being off. And you'll have to manually use Nz/Iz/Ar/Lr/Cz (not sure what Ar/Lr are?) along the MRI scalp surface to do the mne coreg rather than relying on stuff like Fit Fiducials.

Thanks @larsoner! Thats amazing feedback.
So I think I've managed steps one and two (after slight modification to coreg.py). The only thing I cant get to work is the scaling mode in the gui, is it meant to scale something in the gui (either the head or the sensors?)? I have tried using both uniform and 3-axis, and varied sX, xY, and sZ parameters and nothing in the figure changes.

not sure what Ar/Lr are

I am assuming they are LPA and RPA, everything makes sense if I treat it that way. I took that language from the vendor manual.
Now the fit looks like below... (to get the sensors outside the head I had to shift LPA/RPA further back then I would like, but at least now I know how to!)

Argh yes scale mode should scale the MRI but it's currently broken

Argh yes scale mode should scale the MRI but it's currently broken

Good to know. I wasn't sure if it was because i was using fNIRS and should hunt the cause. But I'll leave the bug fix for upstream to fix.

Argh yes scale mode should scale the MRI but it's currently broken

Looks like this is getting fixed in https://github.com/mne-tools/mne-python/pull/10117
So I will put this issue on pause until that's resolved.

@rob-luke I'm keen to ensure that users can get their LUMO data into MNE-NIRS without any significant effort.
As such we've put together a small (MATLAB) package to convert native LUMO output files to standard compliant SNIRF files. The package is still in beta, as it requires some more testing, however master should work fine. This package should obviate the need for the first few steps you describe.
When exporting to SNIRF we provide an option for MNE-NIRS 'style' output. When choosing this option the SNIRF file is written with some modifications based upon my (possibly naïve) interpretation of what your code wants to see:

channels are re-ordered such that they alternate by wavelength (e.g. sorted by optode)
landmarks are renamed such that Nasion -> NASION, Al -> LPA, and Ar -> RPA

These files load into MNE-NIRS just fine, however registration does not seem to work out of the box. It's very possible I'm doing something wrong on the MNE-NIRS side, or that the SNIRF files aren't exactly what you expect. In any case if you're able to assist I can show you what we're doing and/or provide some sample SNIRF files here to make this work.

Hi @samuelpowell,
Thanks for taking the time to ensure your data works with MNE-NIRS. I just checked out your package, it looks great!

This package should obviate the need for the first few steps you describe.

Awesome!

When exporting to SNIRF we provide an option for MNE-NIRS 'style' output.

I am keen to ensure that MNE-NIRS can read any SNIRF compliant file. So far I have been pragmatic and only implemented reading of specification features that people actually use. I am pleased to make modifications to MNE-NIRS to accept your SNIRF files in their native format without conversion to a particular style.
For the two changes you highlight:

channels are re-ordered such that they alternate by wavelength (e.g. sorted by optode)

If you provide an example LUMO SNIRF file that has arbitrary ordering I can make the MNE reader more general to accept these.

landmarks are renamed such that Nasion -> NASION, Al -> LPA, and Ar -> RPA

Similarly, I can modify our reader to accept your naming.

Let's chat this afternoon and discuss in more detail. But I am excited to get the data working smoothly with MNE!

I will produce some sample files to make this work.
As discussed, the files will contain anatomical landmarks from a digitiser (which should be RAS but I will double check). I'm assuming that in MNE parlance the optode frame should "head" when the files are loaded.
To allow you to programmatically determine the optode frame and for us to guarantee the presence of the requisite landmarks, would you like for us to include an entry in /nirs(i)/probe/coordinateSystem, and if so, what would be appropriate?

@rob-luke further to the above I attach a sample SNIRF file.

The recording is made on a full-head cap with ~70k channels @ 6.67Hz. Because of https://github.com/fNIRS/snirf/issues/103 I have only populated the front portion of the cap. I have also removed a single tile on the right hand side to avoid any symmetry.
The file passes the validator with the exception of the dimension of the sourceLabels (though I think the array does match the spec).
I attach a quick plot of the layout which includes all of the positions and the landmarks. Note that in the SNIRF file we are outputting Al as LPA and Ar as RPA, to match up with that which is expected by MNE-NIRS. These are more conventional names so I'm happy to make sure this is a default.
I've also attached a screenshot of my naïve attempt to load this into MNE-NIRS, the obvious issues are the sample rate and the lack of registration.
The SNIRF file contains various event markers. Since these are timestamps rather than periods of stimulation, the length of the stimulation period will be zero (this will have to be adjusted by the user in post-processing).

As per question above, if there's anything we can do to get MNE-NIRS to automatically register, including an appropriate setting in  /nirs(i)/probe/coordinateSystem, just let me know.
mne_sample_54_F18_B_20_04_22_20_59_59.zip

@rob-luke Note that the above file uses our mne-nirs output style that does the channel reordering that you expect. You mentioned you'd like to get rid of that requirement. I can produce another sample file which doesn't reorder, but is that something to be handled here, or in the loader in mne-python?


Original random algorithm; 32 bit; eunit tests

Add support for original algorithm to be compatible with implementations
in other languages.
Make it work on 32 bit systems (fixes #2)
Add some eunit tests

It's based on #3 pull request. So, most likely, you want to merge #3 first. Or just this one and then just close #3.

Apologies for the delay getting back to this. :100: Feel free to add an AUTHORS file and add yourself or I can do that. Merging and tagging.

Thanks for merging!


Autocomplete SOLR words with accent mark ignored (Brazilian Portuguese)

Hello,
I´m having a problem with autocomplete feature in Dspace 7.5, whenever I have a word with accent mark like a name "José" autocomplete doesn't recognize it and doesn't display at sidebar filter
To reproduce it, clicking at search, on home page, and try to type it on the filter, and it doesn't show up
Working without accent mark

With accent mark

Seems like a bug, moving this to our 7.6.x maintenance board in search of a volunteer.

Confirmed the bug at local DSpace 7.6
But tried at https://demo.dspace.org (DSpace 7.6.1-SNAPSHOT) and it works fine.

Could you update DSpace and verify that the problem no longer occurs?

@aroman-arvo : Thanks for investigating this!   Looking at the changes made since 7.6 was released, and I came across a similar reported bug in #8914
So, I suspect this issue was already fixed by #8958 (which is the 7.x port of #8953)


Add offerwall mention to incompatible GPU message

This is a great suggestion, we are already working on an updated page that gives users more information. I'll merge this in for now, but it will likely be replaced in the coming few weeks 😃

I'm fine with that! (considering it's not any huge rewrite or something, just some text)

Hey @VukAnd - we're working on the Salad Newsletter and wanted to cover your community submission and work on Github for us. Would you mind if we talked about your contribution and linked to your Github profile in the email?
Thanks for your help! We appreciate it!

@JaredCarpenterSalad Go ahead!


FreeRTOS SMP

Hello, Our group used the FPGA-based SweRV EH2 core in a project, and wanted to use FreeRTOS SMP on it to make full use of the cores.
But the freertos and rtosal in WD-FW do not seem to  support SMP. Is there any RTOS adaptation based on the SMP version?

Hi Bob,
We have FreeRTOS SMP branch but it is not in the mainstream.
We can port it to the mainstream if it is something you want to use. Keep in mind that FreeRTOS SMP is still in WIP mode on Amazon.
Ofer

Hi Bob, We have FreeRTOS SMP branch but it is not in the mainstream. We can port it to the mainstream if it is something you want to use. Keep in mind that FreeRTOS SMP is still in WIP mode on Amazon.
Ofer

Hi Ofer,
Thanks for your reply and reminder . If possible, hope you can port it.
We just want to use FreeRTOS SMP to test dual-core, and the simulation based on whisper also makes debugging easy for us.
Bob

Hi Bob,
I'm working on porting FreeRTOS SMP to master branch (subject to priority with other tasks..)
Will update you when it is done
Nati

issue #1 will be closed once SMP migration will be complete

@bob1414 we added a static/branch for FreeRTOS-SMP.
Please check it out. I have updated the readme with a note for "quick how to build and run"
static/freertos-kernel-smp


Add more tests and functionality to animation class

Codecov Report

Merging #221 (e0cb663) into master (ddce8e4) will increase coverage by 1.26%.
The diff coverage is 88.88%.

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

@@            Coverage Diff             @@
##           master     #221      +/-   ##
==========================================
+ Coverage   91.06%   92.32%   +1.26%
==========================================
  Files         153      153
  Lines        3615     3624       +9
==========================================
+ Hits         3292     3346      +54
+ Misses        323      278      -45

Impacted Files
Coverage Δ

impl/jamtemplate/common/animation.cpp
94.66% <88.88%> (+19.20%)
:arrow_up:

impl/jamtemplate/common/strutils.hpp
92.18% <0.00%> (+6.25%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us.


issues with installation of torch-scatter

the error is as follows:
error: command 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe' failed with exit status 2
failed building wheel for torch scatter
same issue when trying to install other three.

I meet the same issue.

I got a similar problem (if not the same problem).
I'm not very familiar with installing things in general, but I did get a lot of warnings (and eventually errors) during installation using pip.
I logged them and  pasted them here: https://pastebin.com/HijkBwrP, hopefully this helps.

I've got the same issue on linux.

Closed in favour of https://github.com/rusty1s/pytorch_geometric/issues/77

I solved my problem, though it probably only applies for Windows.
My problem came from a version check in a header file in NVIDIA CUDA, the version of VS I had installed was too new.
Following the instructions from...
https://devtalk.nvidia.com/default/topic/1035535/cuda-setup-and-installation/cuda-9-2-does-not-work-with-visual-studio-2017-15-7-1/3
I just removed the version check and it compiled fine.

I solved my problem, though it probably only applies for Windows.
My problem came from a version check in a header file in NVIDIA CUDA, the version of VS I had installed was too new.
Following the instructions from...
https://devtalk.nvidia.com/default/topic/1035535/cuda-setup-and-installation/cuda-9-2-does-not-work-with-visual-studio-2017-15-7-1/3
I just removed the version check and it compiled fine.

could you please show us the details about  VS version, PYtorch version, Cuda version and so on?
much thanks!

could you please show us the details about VS version, PYtorch version, Cuda version and so on?
much thanks!

My system was a bit outdated compared to what you mentioned in your thread, but anyway:
Win10
Python 3.6
PyTorch 1.0.0
Cuda 9.0
Microsoft Visual Studio Community 2017 Version 15.9.9
gcc 5.4.0 (MinGW-W64)
(honestly i'm not sure how to check VS version, so I assume that's the one)

Did anyone install the cpu version and meet the same question?


Issue: #54

All Submissions:

[X] Have you followed the guidelines in our Contributing document?

New Feature Submissions:

[X] Does your submission pass build tests locally?

[X] Have you indented your code locally prior to submission?

Changes to Core Features:

[X] Have you added an explanation of what your changes do and why you'd like us to include them?

[X] Have you successfully ran tests with your changes locally?

Hope that you have followed the contribution guidelines. Please don't make a request anywhere to get a review. One of the maintainers will get back to it within a day or so. 😃
(Powered by GitMate.io)

ack b225975


Added filtering by title + minor improvements

Added option to configure title filtering in config.json
Exposed scraping function
Added package.json for easier installation
Added .gitignore file

Need some improvement, such as:

filter is always returning true
no filter text in config file

I would really love it if you could fix the problems so everyone could use it :)


Use Latest Released Version of v2ray-core: v4.37.2

The release process has been refactored. Thanks for your work though.


Provide #dig for Dry::Validation::Result

When building nested custom rules, one have to define a custom scoped builder method for that similar to this one:
def self.kafka_scope_rule(key, &block)
  rule(key, :kafka) do
    instance_exec(values[:kafka], &block)
  end
end

one problem with that approach is that with a multi-nested schemas with more complex stuff, this causes a lot of duplication.
If there would be a #dig we could do values.dig(*args) to prepare the scope dynamically and use one scope defined custom builder.

I added it in #520 which is a hash-like object now so Hash API is available


regarding the future

Hi,
I wanted to ask if you really plan on implementing -

Install available packages from conda + conda-forge before using pip.

And ! I wanted to ask how ?
Specifically, how you though to address

conda version spec is different than pypi's
some packages are named differently in conda

I think this feature will be very useful !
especially for packages that are not pure python, or python at all.
Many thanks,
Harel

Hi, good question.
I think it depends on how hatch is going to handle locking dependencies.
Hatch builds on top of pip so adding conda as a repository in the mix will have to involve some special handling by this library.
I do not plan on looking into this until the locking is in place in hatch.

https://github.com/conda/conda-lock is a great project that tackles locking conda environments. It alo supports locking conda+pip dependencies by using poetry's solver.

some packages are named differently in conda

We have a mapping of the known equivalents :D

some packages are named differently in conda

We have a mapping of the known equivalents :D

I can't believe I was not aware of that. thanks! now it's also clear why grayskul works :)

Hi, good question. I think it depends on how hatch is going to handle locking dependencies. Hatch builds on top of pip so adding conda as a repository in the mix will have to involve some special handling by this library. I do not plan on looking into this until the locking is in place in hatch.

@OldGrumpyViking -
I'm not sure I understand how you imagine hatch deps mechanism will play along with mamba ( conda ). If you can explain in more detail - please do. As for lock, well, this is painful, also with regards to poetry as it's not PEP 665 compliant, where as hatch wants to be afaik. All that said, conda has its own long established lock schema, and it also provides "pypi" lock like @maximlt mentioned.
At least in my use case, I'll say that conda envs means conda env YAML, along with all it's features - e.g. at least channels specification and the ability to explicitly decide what comes from pip and what from conda.  Either Way, I'm not sure abstracting env YAML into pyproject / hatch toml sections is a good idea.


[#454] Update generating project example script to be in Fenced Code Block

Closes https://github.com/nimblehq/android-templates/issues/454

What happened 👀
Update code block script from double backticks code (``) to the Fenced Code Block
Insight 📝
N/A
Proof Of Work 📹

Can we ignore this error? 😢

Can we ignore this error? 😢

@lydiasama @ryan-conway I think we should create a task to switch to using Chucker from Maven Central instead of Jitpack. Jitpack server is not stable sometimes, so use it only if there is no other way 🤓
FYI: I faced the same issue in the Gulf project but forget to raise a ticket.

@luongvo Haven't we set it from the maven? 🤔

@luongvo Haven't we set it from the maven? 🤔

@lydiasama maybe, we MUST move up the mavenCentral config here. That needs time for investigation 🤷♂

@ryan-conway Since the CI error is related to Chunker dependency, shall we merge this PR first and then create another issue to resolve it? 🙏🏻

@luongvo Haven't we set it from the maven? 🤔

@lydiasama maybe, we MUST move up the mavenCentral config here as both use the same dependency id. That needs time for investigation 🤷♂

@luongvo I found the root cause. It's not related to Jitpack connection, instead, it's about the syntax we implemented. With this solution, It's resolved it https://github.com/nimblehq/android-templates/pull/484 🤓


Metrics deployment

Partially addresses: #281
cc @RobotSail @vishnoianil @nerdalert
Changes:

App of apps architecture for argo
Umami deployment manifests for openshift and kind

Everything here works, but I cannot access the ingress for umami after first deploying the kind.yaml and the kind-ingress.yaml and then deploying the umami stack. That being said I tried the same thing with the Instructlab-ui kind manifests, and the ingress for that also didn't work so I assume this is a non-issue.

Some kind docs on stuff I learned through struggling with it

After this PR lands, we need to deploy it, make sure its working, and then go in and configure the settings. After that is done, we can setup a sites for QA and Prod, and grab their respective tracker codes to to embed in the TS codebase. Then we simply do check on the env variable and inject the correct script tag.

I would consider your review addressed @vishnoianil. I did try to make the route changes you were talking about but they would require another refactor (swapping to ingress or something else). For that reason, lets keep a separate route for the umami portal disconnected from the UI domain. We can iterate as we go - I would love to eventually see it as tab in our UI.


my side of the story

Hi! Thanks for your submission.
Unfortunately it seems that there were changes in the main that conflict with yours.
Could you please perform a merge as described in Tutorial 2 slides 102-114 and integrate those changes?
Read the theory in slides 102-104 and then start the practice
by synchronizing your local and remote main with my upstream main as described in slide 105.
We do not want to lose any existing content, so you should keep what others have written and add yours.
You're free to reorganize the content blocks so that it still makes a story, but please do minimal changes
to the content of what others have written to integrate them with yours.
You have time until the 9th of October at 11:00.
If you can't make it by that time or you are done before the deadline,
please add a comment in GitHub so that I can progress with another student.

I cannot see any merge done on this branch. Even if the branch is deleted, the logs remain.


Merge pull request #1 from twbs/master

合并原作者更新

Hi @satcon!
Thanks for wanting to contribute to Bootstrap by sending this pull request!
Unfortunately, your pull request seems to have some problems:

The title of this pull request strongly suggests that you were using Bootstrap to test out Git or GitHub, rather than proposing a legitimate change. If that's accurate, please DON'T do that again! Instead, use your own personal repositories to experiment with how to use Git or GitHub. Using the repos of public projects (such as Bootstrap) for such experiments wastes the time of those projects' maintainers and is thus considered rude.

You'll need to fix these mistakes and revise your pull request before we can proceed further.
Once you've fixed these problems, you can either ask the maintainers to re-open this pull request, or you can create a new pull request.
Thanks!
(Please note that this is a fully automated comment.)

OK


Fuzzy Searches on Author

It seems that at different times in this project's development, fuzzy searches on an author's name have been discussed and were even implemented at one stage (using WHERE author LIKE in https://github.com/c-w/Gutenberg/blob/710052ce5cab7ea45b101ab756c7f1b29091236a/gutenberg/corpus.py#L48), so I apologise if this is redundant.
My use case for this project is essentially grabbing the text content of texts written by a given author. Judging by the README, the functionality provided by `get_etexts("author", "Melville, Hermann") is able to provide the file IDs, which can then be easily downloaded.
However, get_etexts("author", "Melville, Herman") (i.e dropping the second "n", as the author's name is actually shown at http://www.gutenberg.org/ebooks/author/9) returns an empty frozenset.
Should I assume that this project currently does not support this feature? If not, I'd be happy to contribute, but the current RDF-based implementation isn't something I currently have any experience with.

Hi @chriswait. Thanks for getting in touch.
One way to implement fuzzy matching would be to provide an alternative implementation of MetadataExtractor.get_etexts that uses Sparql instead of tuple-indexing for retrieval.
Let me know what you find out!

@chriswait Given that it's been over a year, I'm going to close this issue.
Note that we've recently made querying by author name more like what you'd expect (see #43) which should alleviate the problem you mentioned: querying for "Melville, Herman" now returns the correct results.

@c-w thanks for following this up! It looks like #43 is indeed pretty close to what I wanted at the time.

@c-w I'm hoping to get texts by subject with fuzzy matching rather than knowing the exact matches for subjects... so does your suggestion from two years ago about

One way to implement fuzzy matching would be to provide an alternative implementation of MetadataExtractor.get_etexts that uses Sparql instead of tuple-indexing for retrieval.

still applies?
Thanks!

@wwymak Yes that suggestion still applies.


Buttons to add row under or above current one

Is your feature request related to a problem? Please describe.
I can't make a row under or above the current one in preview mode.
Describe the solution you'd like
Make 2 additional buttons in the 3 dots menu to the right :

Button to add a row under the current one
Button to add a row above the current one

Describe alternatives you've considered
Add the row in edit source mode.

@imeed166 Thank you for this suggestion. I am thinking about making both the columns and rows draggable, so you can reorder them. Would that cover the functionality that you're describing here?

That would be a workaround to what I'm describing, yes, but with more steps.
For example, in a table with 3 rows. If I want to create a row under the second row, I would have to create a 4th row then drag it under the second row.

@imeed166 Implemented in 1.2.0. Check it out!


Fast-forward cookiecutter

Pull Request Checklist:

[ ] This PR addresses an already opened issue (for bug fixes / features)

This PR fixes #xyz

[ ] (If applicable) Documentation has been added / updated (for bug fixes / features).
[ ] (If applicable) Tests have been added.
[ ] CHANGELOG.rst has been updated (with summary of main changes).

[ ] Link to issue (:issue:number) and pull request (:pull:number) has been added.

What kind of change does this PR introduce?

Fast-forwards the cookiecutter

Does this PR introduce a breaking change?
No.

coverage: 100.0%. remained the same
when pulling e0a6a7907635892d7c26ed27792eb8fc6052cb40 on cruft-update
into 7488d42c641fef7cefd41af1f9f14f30c0abfc6c on main.

coverage: 100.0%. remained the same
when pulling e88b5b6c46c3d3da242793ef20162d348ced9b23 on cruft-update
into 7488d42c641fef7cefd41af1f9f14f30c0abfc6c on main.


How to add lib.rs to a cxx bin crate package?

I write a simple "hello_cxx" package, it contains ["test.h", "main.rs"] and it compiles ok.
but when I add an empty lib.rs to the package, compile failed and the error says:
"/home/centos/rust/hello_cxx/src/main.rs:5: undefined reference to `cxxbridge1$new_abc'"
Here is my code:
test.h:

#ifndef __TEST_H__
#define __TEST_H__
#include <stdio.h>

void new_abc() {
    printf("Just test it");
}

#endif // __TEST_H__

path: "/home/centos/rust/hello_cxx/cpp/test.h
main.rs:

#[cxx::bridge]
mod ffi {
    extern "C++" {
        include!("test.h");
        unsafe fn new_abc();
    }
}

fn main() {
    unsafe {
        ffi::new_abc();
    }
}

and build.rs

fn main() -> miette::Result<()> {
    let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR was not set");
    let manifest_path = std::path::PathBuf::from(manifest_dir);

    // This assumes all your C++ bindings are in main.rs
    println!("cargo:rerun-if-changed=src/main.rs");

    // Define path to resolve #include relative position
    let include_paths = vec![
        manifest_path.join("cpp"),
    ];

    // Bridge -- cxx
    cxx_build::bridge("src/main.rs")
        .flag_if_supported("-std=c++14")
        .includes(&include_paths)
        .compile("cxxbridge-demo");

    // Add instructions to link to any C++ libraries you need.
    Ok(())
}

From the output, I found that for single bin crate, the "-l static=cxxbridge-demo" options was add to bin crate correctly like this:
“Running `CARGO=/home/centos/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo CARGO_CRATE_NAME=hello_cxx ... -l static=cxxbridge-demo ...”
But for both bin and lib crate, the "-l static=cxxbridge-demo" was add to the lib crate only like this:
"Running CARGO=/home/centos/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo CARGO_CRATE_NAME=hello_cxx ... -l static=cxxbridge-demo ..."     "Running CARGO=/home/centos/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo CARGO_BIN_NAME=hello-cxx ... ... "
My build.rs:

fn main() -> miette::Result<()> {
    let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR was not set");
    let manifest_path = std::path::PathBuf::from(manifest_dir);

    // This assumes all your C++ bindings are in main.rs
    println!("cargo:rerun-if-changed=src/main.rs");

    // Define path to resolve #include relative position
    let include_paths = vec![
        manifest_path.join("cpp"),
    ];

    // Bridge -- cxx
    cxx_build::bridge("src/main.rs")
        .flag_if_supported("-std=c++14")
        .includes(&include_paths)
        .compile("cxxbridge-demo");

    // Add instructions to link to any C++ libraries you need.
    Ok(())
}

How can I make the cxx-build add the "-l static=cxxbridge-demo" to the BIN CRATE correctly when a lib.rs exists?

and here is my full project:
hello_cxx.zip

Add "l static=cxxbridge-demo" to lib crate is not the proper way, it still doesn't work if the cpp code in a extern cpp lib.
Is there a rule says that must only one bin crate exist in the package?


Question Prompts

Question Prompts
User Story
AS A coding boot camp student
I WANT to take a timed quiz on JavaScript fundamentals that stores high scores
SO THAT I can gauge my progress compared to my peers
Acceptance Criteria
GIVEN I am taking a code quiz
WHEN I answer a question
THEN I am presented with another question

This has been completed.


Implicit links not working.

Any course content which is of a ‘link type’.  Say course EEE F245 has experiment 1 as one of the topics. The topic is not hyperlinked to the content. It’s just plain text.

@palindrome69 can you please update the issue description with screenshot(s) ?

All experiments under topic 3 are supposed to be links to a pdf file instead it is plain text.

@palindrome69 thanks, will look into it soon


Output and Logs Not Captured by Pytest When Using APIRouter

First Check

[X] I added a very descriptive title to this issue.
[X] I used the GitHub search to find a similar issue and didn't find it.
[X] I searched the FastAPI documentation, with the integrated search.
[X] I already searched in Google "How to X in FastAPI" and didn't find any information.
[X] I already read and followed all the tutorial in the docs and didn't find an answer.
[X] I already checked if it is not related to FastAPI but to Pydantic.
[X] I already checked if it is not related to FastAPI but to Swagger UI.
[X] I already checked if it is not related to FastAPI but to ReDoc.

Commit to Help

[X] I commit to help with one of those options 👆

Example Code
import logging

import uvicorn
from fastapi import APIRouter, FastAPI
from fastapi.testclient import TestClient

import main

logger = logging.getLogger(__name__)

app = FastAPI()
api_router = APIRouter()

@app.get("/")
def root():
    logger.warning("root")

def dependant():
    logger.warning("dependant")

@api_router.get("/")
def router():
    logger.warning("router")
    dependant()

app.include_router(api_router, prefix="/router")

# Test Stuff
client = TestClient(main.app)

def test_root_logging():
    client.get("/")
    assert False

def test_route_logging():
    client.get("/route")
    assert False

Description
When using Pytest, all output (stdout, stderr, and log handlers) are intercepted and captured. By default, upon a test failing, said output is displayed alongside a trackback and other details. This feature greatly assists in resolving the failing test.
stdout and stderr capture appears to not work at all, but I don't care too much about that (though it may be related). What is really problematic though, is that log capturing does not work when the function it is in is called by a APIRouter decorated function. I think this has been reported before (https://github.com/tiangolo/fastapi/issues/970), but the original reporter either figured it out and neglected to share the solution or gave up.
To be clear, the issue is not that logs don't work at all. If you run the above snippet, you will see that they do:

The issue is that in Pytest, the logs are not captured and displayed with failed tests in the way they are for functions that are not decorated by APIRouter:

I'm at somewhat of a loss as to how to proceed. I've tried all kinds of things as far as changing log handlers and such, but none of that seemed to make a difference. Any insight would be greatly appreciated.
Operating System
Linux
Operating System Details
No response
FastAPI Version
0.68.0
Python Version
Python 3.9.2
Additional Context
No response

I was unable to reproduce:

I had to fix your example (to remove import main and other things), but it's basically the same as far as I can tell:
import logging

from fastapi import APIRouter, FastAPI
from fastapi.testclient import TestClient

logger = logging.getLogger(__name__)

app = FastAPI()
api_router = APIRouter()

@app.get("/")
def root():
    logger.warning("root")

def dependant():
    logger.warning("dependant")

@api_router.get("/")
def router():
    logger.warning("router")
    dependant()

app.include_router(api_router, prefix="/router")

# Test Stuff
client = TestClient(app)

def test_root_logging():
    client.get("/")
    assert False

def test_route_logging():
    client.get("/router/")
    assert False

Okay.. so your example also works for me, but my original still does not...

Are there any differences I'm missing? As far as I can tell I just removed the invalid import.

:facepalm:
client.get("/route")
Turns out I'm just an idiot.

Happens! Glad we figured it out.

Doesn't explain why I can't get the logs to work in my main app, back to the drawing board I guess.
Thanks!

@adriangb btw, how do you get your pytest looking so slick? :sweat_smile:

https://github.com/Teemu/pytest-sugar


Found something that I think should be changed

So... I was looking at raylib.com, then I saw this: "raylib is highly inspired by Borland BGI graphics lib and by XNA framework." I think highly isn't the right word to use. I think heavily should be used instead of highly. Please contact me on my main profile, @dugo3number2, because I am at school right now and have to use this account.

yup I agree


Send March Newsletter

Summary
It's time to draft the next AutSPACEs newsletter!
Draft is here: https://hackmd.io/0gbef2oHQJiI1KJ1DdmvGQ
Deadline
March 31st
What needs to be done?

select topics
draft newsletter
review
send out

Who can help?
Add updates in comments below or in the #autspaces Slack!

Thanks @Davsarper and @gedankenstuecke !!

@GeorgiaHCA could you also upload the newsletter into the project management folder so that we have a copy of it here too? :)


Add support for Grafana rendering configuration

Description
This change adds support for Grafana's rendering configuration.
This is not currently supported by our default Grafana image,
but is supported in the latest Grafana version.
Our current default version will not experience errors if it
receives this config block, it will instead silently ignore it.
Relevant issues/tickets
Resolves #163
Type of change

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

Checklist

[ ] This change requires a documentation update
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have added a test case that will be used to verify my changes
[ ] Verified independently on a cluster by reviewer

Verification steps

Created a Grafana resource without the rendering field set, verified that it still functions.
With existing default image, verified that adding the rendering field translates to config in the ini file without causing Grafana to error
With latest Grafana image, verified that adding the rendering field translate to config in the ini file and causes Grafana to use a remote rendering service.

Looks good, I'll take a look and verify locally soon


Convex Collision Sibling wrong margin with Bullet

Godot version:
3.1
OS/device including version:
Windows 10 x64 / NVIDIA GeForce GTX 1060 6GB / Intel Core i7 4790K
Issue description:
When a CollisionShape is created from a mesh using "Create Convex Collision Sibling", it's being it is getting away from the bottom cube by the "collision margin" distance (0.04):

This only happens with ConvexPolygonShape.
With ConcavePolygonShape or even a BoxShape or other native collision shapes, this does not occur.

Steps to reproduce:

Run the attached project. It's with a CollisionShape as ConvexPolygonShape and you'll see the margin.
Change the red cube CollisionShape to BoxShape or generate a ConcavePolygonShape and the margin is not there.

Minimal reproduction project:
testes.zip

This is still reproducible in 3.2.2 RC 2 with the above project.
It only affects the Bullet backend, GodotPhysics doesn't have this margin.
CC @AndreaCatania @madmiraal

It's how bullet handles the margin. Depending the shape type, it may add or remove the specified amount of margin; this because each algorithm perform better with positive or negative margin.
Try to lower the 0.04 margin to something smaller or increase the mesh size.
Make the engine to automatically mask this margin is not a good idea IMO.

Maybe this should be documented in the ConvexPolygonShape class reference?
And/or it might be worth having a doc page about differences between GodotPhysics and Bullet, like we have for GLES2 vs GLES3.

Yes, I think that would be useful have the list of the various differences.
Document this behaviour would be really usefull to, but I would add somewhere globally, because it's true for all the shapes.

I would still consider this a bug, because the type of Shape used shouldn't change it's behaviour.
It brings up the debate on why collision masks are required and how they are used. As @AndreaCatania points out, the margin makes the GJK distance algorithm an efficient way of determining collisions by terminating if the distance is known to be less than the margin.
In Bullet physics Spheres and Capsules are all margin around a point or a line respectively, whereas Boxes become rounded as shown beautifully here. To make sure a BoxShape is not bigger than expected, the size can be adjusted proportionally. However, this is not happening with the ConvexPolygonShape; hence the gap presented in this issue.
Godot uses collision margins differently. I've described this in detail here, but the short, over-simplified version is: it uses the margin to push objects apart and then allows them to come back together again.

The reason why I would not mark this as bug is because try to mask this issue by making the shape bigger or smaller than the mesh, when generating the collision shape is not a good option: Each physics engine has its own way to handle the margins and just mask this issue will just invert the problem, that will be then present with Godot Physics.
However, this is not all; because someone may add another physics engine (even if not supported by the Godot community, or just privately for their game).
In any case, the differences between physics engines exists (otherwise would not even make sense integrate a new one), and all the features of the Game Engine should just do the "right" thing. So is better document instead of mask the various differences between physics engines.
Of course, this is not always true, but for this case I think that is better document the difference and allow the developer choose how to deal with it:

Use Godot Physics.
Generate a bigger mesh or a smaller shape.
Change the margin value.

I don't know what the solution is. I haven't looked into it. I'm definitely not suggesting the issue is masked; for all the reasons stated and more. But not knowing what the solution is doesn't stop it from being a bug. Whether the issue lies within Bullet or within Godot's implementation of Bullet doesn't stop it from being a bug. In the meantime, I agree that, as long as there isn't a solution, the known issue should be documented.

I think the best solution at the moment is to make the margin very small and use double precision in bullet.  The 4cm margin (8cm total between 2 objects) is pretty massive, and not only does it create gaps, but it creates potentially undesired behavior along edges (unexpected normals).

The issue isn't easily fixable for CollisionPolygons due to the lack of a margin property. You'd have to create new ConvexPolygonShapes with the mesh data and corrected margins.


The admin displays all users instead of paginating them while scrolling

The task needs frontend and backend development, it can be either handled as a single task or both.
Frontend:

The view must stay responsive.
Scrolling should look for the next users based on the current displayed ones.
The view must load a fixed number of users (10 by default), ideally, there is an option to change this value.
Each user must be include a number to easily identify them, for example, the first displayed user is tagged with #1, the second displayed user is tagged with #2 and so on.
It must be clear when there are no more results.

Backend:

Accepts the  optional limit argument, which is how many results will be returned, use a sane default like 10.
Accepts the scrollId optional argument, which is the way to identify what results to return.
Returns the scrollId value, which is the id from the last result being returned or the empty string when there are no results.
There are integration tests for the API.

This won't be necessary anymore because we are getting the react-admin integration.


Polyfit uses dimension as x and not coordinate as stated in the documentation

What happened?
The documentation of both the DataArray and Dataset method polyfit state for the first parameter:
dim : hashable
            Coordinate along which to fit the polynomials.

But looking at the code:
x = get_clean_interp_index(self, dim, strict=False)

For which the documentation states
Return index to use for x values in interpolation or curve fitting.

    Parameters
    ----------
    arr : DataArray
        Array to interpolate or fit to a curve.
    dim : str
        Name of dimension along which to fit.
    use_coordinate : str or bool
        If use_coordinate is True, the coordinate that shares the name of the
        dimension along which interpolation is being performed will be used as the
        x values. If False, the x values are set as an equally spaced sequence.

Therefore, the x used for fitting here is not the coordinate, but the coordinate that shares the same name as a dimension.
To give an example why this is a problem:
I want to make a fit on a time series. The data has the dimension "time" for which there is a coordinate "time" which consists of datetime64 objects. However, I want to control the units of the fit parameters and have another coordinate called "time_in_days" associated with the "time" dimension, which contains the number of days since a specific date as integers.
A nice and easy fix would be to actually let dim be the label of a coordinate (contrary to what the name suggests) and get the associated dimension to know along which axis to perform the fit.
This would not change the behavior of any existing code, but it would just allow for more versatility.
The curvefit function correctly uses coords as a first parameter, which makes a lot more sense. But changing the name of the parameter would likely change or break some of the existing code which uses polyfit.
What did you expect to happen?
No response
Minimal Complete Verifiable Example
No response
MVCE confirmation

[ ] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
[ ] Complete example — the example is self-contained, including all data and the text of any traceback.
[ ] Verifiable example — the example copy & pastes into an IPython prompt or Binder notebook, returning the result.
[ ] New issue — a search of GitHub Issues suggests this is not a duplicate.

Relevant log output
No response
Anything else we need to know?
No response
Environment

irrelevant

Thanks for raising this, this isn't the first time that the issue of an argument being named dim when it should really be coord has come up, see https://github.com/pydata/xarray/pull/3993 for example.


Exception when delete StableDiffusion pointer

Exception when delete StableDiffusion pointer:

ggml_backend_buffer_t should be initialized with NULL:
source file stable-diffusion.cpp have 5 places need change:
line: 1364, 1365
line: 2286, 2287
line: 3516, 3517
line: 4187, 4188
line: 4626, 4617

This exception not triggered every time, cause StableDiffusion's pointer usually be delete before process exit, sometimes process exit faster than delete be executed, will not triggered this exception.

Thank you for the feedback. The issue has now been fixed.

.


[Bug-FE][UI Next][V1.0.0-Alpha]The letters overlap with the input field

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
The letters overlap with the input field

What you expected to happen
There is some space between the letters and the input field
How to reproduce
When saving the workflow
Anything else
No response
Version
dev
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

I will fix it.


feat: update circleci config file

BREAKING CHANGE: upgrade to latest li2

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[stable-1.77] Do not strip debuginfo by default for MSVC

Stable backports:

https://github.com/rust-lang/cargo/pull/13630

In order to make CI pass, the following PRs are also cherry-picked:

@bors r+

:pushpin: Commit 2cb25a237b60ed972fd364760acb8a92f5e4cf93 has been approved by epage
It is now in the queue for this repository.

Assumed we're going to release the new version of cargo crate, I bumped it to 0.78.1. Let me know if we don't want that.

:hourglass: Testing commit 2cb25a237b60ed972fd364760acb8a92f5e4cf93 with merge e52e360061cacbbeac79f7f1215a7a90b6f08442...

check-version-bump job failed because of rustdoc.json version incompatibility. I am not too worried about that as we don't really have any semver-major change in this backport.

:sunny: Test successful - checks-actions
Approved by: epage
Pushing e52e360061cacbbeac79f7f1215a7a90b6f08442 to rust-1.77.0...


How to test my own imges on multi GPU with my trained model?

Thank for your reply! Can i use this code  for testing images https://github.com/open-mmlab/mmdetection#test-images on MulGPUs?  because  the images i wanna to test is obtained from videos, i dont wanna to save it,   @hellock

Then you can write your own video dataset instead of using CustomDataset.
Another approach is to implement multi-gpu testing for your case, which is not very straight forward.
Here is a reference of how multi-gpu testing works.


Healthz API calls not using DAPR_API_TOKEN

Expected Behavior

The Dapr sidecar healthz endpoints may require the api token for authentication (depending on the usecase and Dapr deployment). For that reason when the DAPR_API_TOKEN environment variable is set the SDK should pass the dapr-api-token header in the http request to the Dapr sidecar.
Actual Behavior

The functions CheckHealthAsync and CheckOutboundHealthAsync located here: https://github.com/dapr/dotnet-sdk/blob/master/src/Dapr.Client/DaprClientGrpc.cs#L1742  , are not setting the dapr-api-token header whenever the DAPR_API_TOKEN env var is set.
Steps to Reproduce the Problem

Release Note

RELEASE NOTE: FIX Add dapr-api-token header to healthz requests when needed

I'll create a PR with a simple change to address this


List Past Orders or Find A Specific Order by ID

As a customer
I need a page to view all my existing orders
So that I can keep track of what I purchased
Details and Assumptions

A list of orders or
A specific order by order ID

Acceptance Criteria
Given the list of existing orders
When I click on an existing order
Then I can see the information about the items in this order, the transaction details, date, and etc...

Feature completed, awaiting previous pull request to be reviewed and merge so that a new pull request can be submitted for this issue with the latest commit on create order branch. Feature description: Find an order with id, if no order id is provided, return all orders as a list.

Add: This feature is needed in the testing procedure of create an order. (which we failed to anticipate beforehand)


Keep path of tested files

It would be useful to keep the complete path of the tested files, especially when using es6 modules.
Now, in the Istanbul report, all files are shown as if they were in the root of the project. This is specially confusing when you have multiple files with same name in different directories (ie: "models/record.js", "views/record.js") - in this case all files but one get there name changed with an appended integer:
--------------|----------|----------|----------|----------|-------------------|
File          |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
--------------|----------|----------|----------|----------|-------------------|
All files     |       90 |      100 |      100 |       90 |                   |
 index.js     |      100 |      100 |      100 |      100 |                   |
 record-1.js  |    93.33 |      100 |      100 |    93.33 |                14 |
 record.js    |      100 |      100 |      100 |      100 |                   |
--------------|----------|----------|----------|----------|-------------------|

Your request definitely makes sense. I've marked this as a bug and indicated that we would love contribution on resolving this issue

Fixed by #17.


Removing the manifest from another folder corrupts SteamVR settings

Absolute bruh moment.

Solved by https://github.com/Louka3000/OpenVR-Dynamic-Resolution/commit/f6fad6e716c64dd0c9583e69bf0788e1b7357cef


Using v-component with template-tag, paramAttribuets & replace options not work.

Plz see these fiddles http://jsfiddle.net/fowmc814/1/ http://jsfiddle.net/87fyt57q/1/
compileParamAttributes & copyAttributes are expected element-node. But actually received document-fragment.

You should probably not use v-component on a <template> tag to start with. I use a template block only when I must define a template for a component in the DOM as opposed to using a templating engine like Jade or Handlebars

<template> elements have a special usage in Vue: it is used as a block container for v-if and v-repeat. It doesn't work with v-component.

Thank you for reply!
These fiddles are minimum code for caused error. Actually, I'd like to use [v-repeat with template] and [v-component with paramAttribetus].
For explain, I created new fiddles.
http://jsfiddle.net/nakajmg/p5a3pjr9/1/
This fiddle work fine. But I wouldn't like to nested-div. Then I tryed change from div to template. But doesn't work.
http://jsfiddle.net/nakajmg/cpj5s9pa/2/
Then I tryed v-repeat with template at outside, v-component with v-with at inside & enable replace-option. But doesn't work too.
http://jsfiddle.net/nakajmg/2kpehmdb/1/
How do i implement to use paramAttributes-option without nested-div in v-repeat with v-component? Or might be wrong way?

I don't think you'll be able to use both a template and then specify an el property. Seems like what you were trying to do is this: http://jsfiddle.net/2kpehmdb/2/

Oh that makes sense! But I wouldn't like write template on HTML. Actually, I use $mount() & $appendTo('body') for building large app.
After, I used custom-tag instead of v-component. Then it was expected!
http://jsfiddle.net/nakajmg/fdehy3ad/1/

You can use just $mount('body'), appendTo is there from an older Vue version


Convert TipRequest to return Header instead of (id,date).

Codecov Report

Merging #479 into master will not change coverage.
The diff coverage is 0%.

@@           Coverage Diff           @@
##           master     #479   +/-   ##
=======================================
  Coverage   45.89%   45.89%
=======================================
  Files         131      131
  Lines       13295    13295
=======================================
  Hits         6102     6102
  Misses       7193     7193

Impacted Files
Coverage Δ

network-core/src/server/block.rs
0% <ø> (ø)
:arrow_up:

exe-common/src/network/ntt.rs
0% <ø> (ø)
:arrow_up:

network-ntt/src/client.rs
0% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


chore(github): shorten ci.yaml workflow and job names

Commit to be reviewed

chore(github): shorten ci.yaml workflow and job names
Primary Changes
----------------
ce - cactus-example
cp - cactus-plugin
cpk - cactus-plugin-keychain
cpl - cactus-plugin-ledger
cplc - cactus-plugin-ledger-connector
plc - plugin-ledger-connector
cpp - cactus-plugin-persistence
ct - cactus-test
ctp - cactus-test-plugin

Fixes: hyperledger#2624
Pull Request Requirements

[x] Rebased onto upstream/main branch and squashed into single commit to help maintainers review it more efficient and to avoid spaghetti git commit graphs that obfuscate which commit did exactly what change, when and, why.
[x] Have git sign off at the end of commit message to avoid being marked red. You can add -s flag when using git commit command. You may refer to this link for more information.
[x] Follow the Commit Linting specification. You may refer to this link for more information.

Character Limit

[x] Pull Request Title and Commit Subject must not exceed 72 characters (including spaces and special characters).
[x] Commit Message per line must not exceed 80 characters (including spaces and special characters).

A Must Read for Beginners
For rebasing and squashing, here's a must read guide for beginners.

Hi @zondervancalvez May be it'd good if you can add the short-full form mappings (whatever you have in description) as comment in the ci.yaml? Just for anyone new trying to contribute.

@zondervancalvez Thank you for this! Please resolve the merge conflicts and then we should be good to go (I see that the comments with the mappings are already added as requested by @sandeepnRES so I'm assuming that is taken care of)

@zondervancalvez Please resolve the merge conflicts that just arose!

Conflicts has been addressed

@zondervancalvez OK, thank you. Next time please also hit the re-request review button otherwise it doesn't show up in my review queue.


Tweak SchemaType to consolidate logic for creating attributes

Goal

Testing

Release Notes

WHAT:
WHY:
WHO:

#639  👈
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @bidetofevil and the rest of your teammates on  Graphite


Broken link

The link in section Where can I find the images used for Microsoft-hosted agents? for routing to scripts results in a 404 on GitHub.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 0b2476ab-d8db-bd41-689c-8d3b7c4a16d8
Version Independent ID: 6d2e5dd0-8678-d850-a1f3-f664a653bac3
Content: Azure virtual machine scale set agents - Azure Pipelines
Content Source: docs/pipelines/agents/scale-set-agents.md
Product: devops
Technology: devops-cicd-agents
GitHub Login: @steved0x
Microsoft Alias: sdanie

@tompostler Thank you for the feedback.
The link appears to direct to https://github.com/actions/virtual-environments/tree/main/images, so you should confirm access to the virtual-environments repo and the actions user and try again.
For help with access permissions on GitHub, see here.


Socket Closes when navigating away and back to page

In Chrome
1.) http://soundbitefm.azurewebsites.net/
2.) Click on podcast art
3.) hit back in browers
4.) white screen
Web socket created
ooui.js:46 WebSocket connection to 'ws://soundbitefm.azurewebsites.net/ooui.ws?id=ec584595b3b64d00a35977d6aaf659aa&w=1920&h=949' failed: Error during WebSocket handshake: Unexpected response code: 400
ooui @ ooui.js:46
ooui.js:54 Web socket error Event
(anonymous) @ ooui.js:54
ooui.js:58 Web socket close CloseEvent
(anonymous) @ ooui.js:58
ooui.js:110 WebSocket is already in CLOSING or CLOSED state.

I seem to still be getting this :(
Works on Edge normal Windows 10 though


Source dependencies do not support dependencySubstitution

Gradle Composite Builds and Source Dependencies automatically resolve the component from the included build. In some conditions, the dependency may not declare those as part of Gradle project property. Some of the libraries just declare them as part of maven publication only.
When that's the case, we get the following error:

Git repository at<EMAIL_ADDRESS>did not contain a project publishing the specified dependency.

Composite Builds have dependencySubstitution feature where it allows you to substitute a module with a project within the included build. In the example below, the dependent project is a simple library and the folder they have is just library
includeBuild('../') {
    dependencySubstitution {
        substitute module('com.company:foo') with project(':library')
    }
}

Expected Behavior
Just like composite builds, source dependencies should also support dependencySubstitution
Current Behavior
Source dependencies does not support dependencySubstitution
Related to #10559

Source dependencies are a feature that needs some attention before it integrates properly with the rest.
There is unfortunately no plan for doing that in the short or medium term.


New doc comment resolver tool

Fixes dotnet/docs#35500
The code for this tool was largely taken from https://github.com/dotnet/api-docs-sync/tree/main/src/PortToDocs and then modified to update the IntelliSense XML file instead of the ECMAXML file.
cc @carlossanlop

@IEvangelist Can you re-review when you get a chance?


Bagfiles for running your code

Hi,
Thank you for making your code available. your paper contains a really interesting approach to system identification and control design for the F1Tenth platform. Could you please provide the rosbag files which are referred to in the code?
Thanks!!

I'll try to get to it early tomorrow morning, I need to touch base with my coauthor to figure out where the data is stored.

I have added them. Let me know if there are any other issues.


bevy_render: Provide a way to opt-out of the built-in frustum culling

Objective

Allow opting-out of the built-in frustum culling for cases where its behaviour would be incorrect
Make use of the this in the shader_instancing example that uses a custom instancing method. The built-in frustum culling breaks the custom instancing in the shader_instancing example if the camera is moved to:

    commands.spawn_bundle(PerspectiveCameraBundle {
        transform: Transform::from_xyz(12.0, 0.0, 15.0)
            .looking_at(Vec3::new(12.0, 0.0, 0.0), Vec3::Y),
        ..Default::default()
    });

...such that the Aabb of the cube Mesh that is at the origin goes completely out of view. This incorrectly (for the purpose of the custom instancing) culls the Mesh and so culls all instances even though some may be visible.
Solution

Add a NoFrustumCulling marker component
Do not compute and add an Aabb to Mesh entities without an Aabb if they have a NoFrustumCulling marker component
Do not apply frustum culling to entities with the NoFrustumCulling marker component

Sorry, misclicked

Could we instead use ComputedVisibility a an opt-in component?

Could we instead use ComputedVisibility a an opt-in component?

That would also disable RenderLayer functionality.

ComputedVisibility is the "go-to component to check whether or not to draw something". It includes things like "frustum culling results", "manually configured visibility", and "layer visibility". Drawn entities should generally have a ComputedVisibility.

bors r+


Update foundational-infrastructure.md

Is it possible to add me as a reviewer? ;)
Thanks!

I just generated the contribution's of Felix who is a member of the BOSH team at SAP
Foundational Infrastructure: VM deployment lifecycle (BOSH) Contributions
PRs Commented on/Reviewed:
Issues that may be relevant:

2022-06-21T14:28:19Z: Fix regression: Deployment manifests can contain yaml anchors
2023-03-23T12:33:02Z: Update aws.md
2023-04-04T18:17:29Z: Update post-stop.md
2023-04-13T07:47:12Z: Update dns.md
2023-05-04T13:33:37Z: correct the diskID for device path resolution
2023-05-04T14:22:24Z: Device path resolution times out for aws and ali
2023-07-14T14:46:10Z: introduce -v flag to show version information
2023-07-18T13:19:16Z: auto bump the azure storage cli
2023-07-25T09:36:07Z: update docs for azure storage account
2023-10-26T10:00:07Z: append global flags to deploy cmd
2023-10-26T16:42:17Z: Update configs.md
2023-10-31T16:19:11Z: enable global flags for deploy command
2023-11-03T09:17:19Z: bumped dependencies for nats-pure and ruby-prof to the most recent versions
2023-11-07T16:55:08Z: update documentation
2023-11-09T12:57:03Z: update global cli flags documentation
2023-12-12T13:53:01Z: Include deploy config documentation
2023-12-13T16:33:11Z: enable metrics for deploy config
2024-01-11T13:37:42Z: fix typo
2024-01-11T13:44:44Z: bosh scp command failing if used according to documentation
2024-02-14T13:05:36Z: use octavia endpoint instead of neutron for lb activites
2024-05-15T06:59:59Z: bump fog openstack gem to new version 1.1.1 & enable application credential authentication
2024-07-05T15:11:06Z: bump ruby-prof version from 1.6.3 to 1.7.0
2024-08-07T13:25:05Z: update gosigar version
2024-08-09T07:11:03Z: fix formatting for configure blobstore for gcp section
2024-08-13T14:12:56Z: introduce support for ceph blobstore

Code contributions:

2023-03-23T12:32:37Z: Update aws.md
2023-04-04T18:17:16Z: Update post-stop.md
2023-04-13T07:47:00Z: Update dns.md
2023-07-14T14:39:55Z: introduce -v flag to show version information
2023-07-18T13:15:27Z: auto bump the azure storage cli
2023-07-18T13:19:24Z: auto bump the azure storage cli
2023-07-19T07:56:16Z: introduce -v flag to show version information
2023-07-20T09:45:02Z: add integration test
2023-07-25T09:35:44Z: update docs for azure storage account
2023-10-26T16:41:26Z: Update configs.md
2023-11-07T16:51:19Z: update documentation
2023-11-08T10:13:38Z: add global flags to bosh deploy command
2023-11-09T12:25:46Z: add excluding of deployments and tests
2023-11-09T12:56:53Z: update global cli flags documentation
2023-11-09T15:20:32Z: add excluding of deployments and tests
2023-11-23T09:17:38Z: color the cli output in case deployment flags are used
2023-11-23T09:19:37Z: rename the search function
2023-11-23T16:00:47Z: fix issues
2023-11-23T16:31:41Z: fix some more issues
2023-11-30T13:03:33Z: Update cli-v2.md
2023-11-30T13:03:54Z: Update deploy-config.md
2023-12-12T13:51:48Z: Include deploy config documentation
2023-12-18T14:04:27Z: Introduce monitoring metrics for deploy config enablement
2023-12-18T16:21:04Z: Update config_manager_spec.rb
2023-12-18T16:47:44Z: Update config_manager.rb
2024-01-03T08:26:56Z: Update config_manager.rb
2024-01-11T13:30:21Z: fix typo
2024-01-11T13:39:44Z: We used bosh scp today and faced the issue mentioned here:
2024-05-15T06:57:25Z: bump fog openstack gem to new version 1.1.1
2024-05-15T07:58:04Z: enable application credential authentication
2024-05-15T12:37:16Z: Update cloud.rb
2024-05-15T12:38:54Z: Update cloud_spec.rb
2024-07-05T14:40:37Z: bump ruby-prof version from 1.6.3 to 1.7.0
2024-07-09T12:37:17Z: bump ruby-prof version from 1.6.3 to 1.7.0
2024-08-07T13:24:53Z: update gosigar version
2024-08-08T08:33:14Z: update gosigar version
2024-08-09T06:40:52Z: fix formatting for configure blobstore for gcp section

Foundational Infrastructure: Ali Cloud VM deployment lifecycle (BOSH) Contributions
PRs Commented on/Reviewed:
Issues that may be relevant:

2023-08-14T11:48:57Z: Changing Tags from uppercase to lowercase ends in
2023-11-23T11:24:07Z: update dependencies
2023-11-28T17:20:05Z: Update Documentation

Code contributions:

2023-11-23T11:23:20Z: update dependencies
2023-11-28T17:18:16Z: Update Documentation

@fmoehler could you pls resolve the conflict.

@beyhan resolved!


Node Proxy: query string values aren't transferred properly

Description
The node proxy with sitecore-jss-proxy package does not transfer querystring values properly. As result it returns 404 error to client when query string value wasn't passed properly.
Expected behavior
The node proxy should pass query string values and shouldn't return 404 error if it isn't page
Steps To Reproduce

Use the headless SSR via sitecore-jss-proxy
Go to the sitecore admin and create a campaign
It will provide the campaign link (like sc_camp=1D53C9EF8A9D413BE7B254EB4C8A6E3E)
Try to do a request via browser like {DOMAIN}/?sc_camp={CAMP}
It throws the 404 error

Your Environment

Sitecore Version: 9.0.2
JSS Version: 11.0.2
Browser Name and version: Chrome
Operating System and version (desktop or mobile): client: Win 10, Node proxy: Win 10, CentOS 7, Sitecore host: Win 10, Windows 2016

There is workaround for packages -> sitecore-jss-proxy -> src -> index.ts
Just replace line in the rewriteRequestPath method:
const routeParams = parseRouteUrl(decodedReqPath);
to:
const routeParams = parseRouteUrl(finalReqPath);
Be careful as it may corrupt the method with same name in app

@aweber1 Any updates on this or anyone know how this changes in 9.1? Still seeing query strings breaking routing in the node-jss-proxy.

Two new workarounds, neither require forking or patching.
Option 1:
Assuming you've used the JSS sample as a basis, in server/server.js in your JSS app:

Add new import

import { URL } from 'url'; // standard node lib, only available on server/server

Modify the parseRouteUrl function

// parse the `url` value provided by the SSR proxy
const parsedUrl = new URL(url, 'http://anyvalue.jss');
routePatterns.some((pattern) => {
  // Pass `parsedUrl.pathname` to `matchPath`. This ensures that the matched
  // params returned by the router won't contain any querystring value found in `url`.
  const match = matchPath(parsedUrl.pathname, { path: pattern });
  if (match && match.params) {
    result = match.params;
    return true;
  }

  return false;
});

Option 2:
Modify config.js for the node ssr proxy sample app.

NOTE: the code below is not a replacement for the config.js file, you need to merge the code into the existing config.js file.

// Resolve `layoutServiceRoute` and `apiHost` outside of the `config` object
// so that we can use the values when determining whether or not to rewrite
// the proxy request path.
const layoutServiceRoute = process.env.SITECORE_LAYOUT_SERVICE_ROUTE || '/sitecore/api/layout/render/jss';
const apiHost = process.env.SITECORE_API_HOST || '';

// New function to remove erroneous querystring value(s) from the `item` parameter
// that is passed to the Layout Service endpoint.
const fixProxyRequestPath = (requestPath) => {
  // We only need to fix layout service requests, ignore anything else.
  if (requestPath.toLowerCase().indexOf(layoutServiceRoute.toLowerCase()) === -1) {
    return requestPath;
  }

  const parsedUrl = new URL(requestPath, apiHost);
  if (!parsedUrl.search || !parsedUrl.searchParams.has('item')) {
    return requestPath;
  }

  const itemPath = decodeURIComponent(parsedUrl.searchParams.get('item'));
  const qsIndex = itemPath.indexOf('?');
  if (qsIndex === -1) {
    return requestPath;
  }

  const correctedItemPath = itemPath.slice(0, qsIndex);
  parsedUrl.searchParams.set('item', correctedItemPath);
  return `${parsedUrl.pathname}${parsedUrl.search}`;
};

// In the `config` object, need to modify the `layoutServiceRoute` and `apiHost` properties to use
// the resolved values above.
// Also need to add a line to the end of `config.proxyOptions.onProxyReq` to call the
// `fixProxyRequestPath` function. It will adjust the path for layout service requests if needed.
const config = {
    // keep existing properties
    // ...

    // modify `config.layoutServiceRoute` to use the resolved `layoutServiceRoute` value from above
    layoutServiceHost,
    // modify `config.apiHost` to use the resolved `apiHost` value from above
    apiHost,

    proxyOptions: {
        // keep existing properties

        onProxyReq: (proxyReq, req, res) => {
          // keep existing code

          // fix/modify the proxy request path
          proxyReq.path = fixProxyRequestPath(proxyReq.path);
        }
    }

    // keep existing properties
}

The underlying issue stems from this line in the JSS proxy: https://github.com/Sitecore/jss/blob/46e8ce2dd39c3cbb39bd04635a8770b52c9fed1a/packages/sitecore-jss-proxy/src/index.ts#L321
Essentially, when the JSS proxy is rewriting a URL, for instance /about?sc_camp=1234, into a Layout Service URL it passes that URL into the parseRouteUrl function exposed by the server bundle.
That function attempts to invoke the app router to "match" the URL to a route pattern used in the app, and then return any route parameters back to the proxy. For instance, the url above /about?sc_camp=1234 would match on the /:sitecoreRoute* pattern defined in AppRoot.js, and the matching result object would be:
{
  sitecoreRoute: '/about?sc_camp=1234'
}

That sitecoreRoute value is then what is passed to the Layout Service endpoint for the item parameter. And therein is the issue. The item parameter should be a path to a Sitecore item or a guid, it shouldn't contain any querystring params.
So both of the workaround options above address the issue, but in different ways.
In option 1, we basically parse the URL provided by the JSS proxy, then use only the URL pathname when trying to match route patterns. The router can still do its pattern matching and extract route parameters as usual and we don't have to worry about querystring values leaking into the matched route parameters. This is the more elegant solution.
In option 2, we let everything happen as usual, but before the proxy request is made, we inspect the request and if it's a Layout Service request and the item parameter for the request has a querystring value, we just strip out that querystring value.

Not sure if it's related, but I have a custom route in Sitecore which isn't working on the JSS proxy.
This is the route:
var paymentInvoiceUrl = "invoice/pay/";

RouteTable.Routes.MapRoute(
    "PaymentInvoice",
    paymentInvoiceUrl + "{id}",
    new { scItemPath = paymentInvoiceUrl });

When I visit /invoice/pay/56e46c3c-19d5-458c-a1a5-58f7ba190e47 on CM or CD it works and I get correct page and I have the id in the route data. When I visit it on the JSS proxy I get a 404 message. Is MapRoute supported?

It now also works after adding to the pathRewriteExcludeRoutes in the config.js file:
/**
   * pathRewriteExcludeRoutes: A list of absolute paths
   * that are NOT app routes and should not attempt to render a route
   * using SSR. These route prefixes are directly proxied to the apiHost,
   * allowing the proxy to also proxy GraphQL requests, REST requests, etc.
   * Local static assets, Sitecore API paths, Sitecore asset paths, etc should be listed here.
   */
    pathRewriteExcludeRoutes: ['/dist', '/assets', '/sitecore/api', '/api', '/-/jssmedia', '/en/-/media', '/nl/-/media', '/-/media', '/sitemap.xml', '/robots.txt', '/invoice/pay/'],

@Eugenio161288 Fixed in
Commit

Would this fix also fix the following problem: https://github.com/Sitecore/jss/issues/171 ?
Might be worth testing if the percentage symbol in query string also works.

@jbreuer No, it wasn't fixed. Currently, I'm working on it


Fix overwritten context variables on task join

Refactor the internal data structure for storing task context. Previously, if there is change in context at task transition after publish, an entire copy of the context is stored. So when a task join happens and one branch modifies one variable and another branch modifies another variable, the last branch that merges the context for the join task will overwrite the variables for the other branch. With this change, only diff in the context is stored after each task transition and the join task will merge the diffs chronologically. This will also reduce the memory footprint used by the internal data structure because only diffs are stored. Fixes #112

Codecov Report

Merging #135 into master will increase coverage by 0.01%.
The diff coverage is 95.55%.

@@            Coverage Diff             @@
##           master     #135      +/-   ##
==========================================
+ Coverage      94%   94.02%   +0.01%
==========================================
  Files          39       39
  Lines        2404     2378      -26
  Branches      466      463       -3
==========================================
- Hits         2260     2236      -24
+ Misses         84       83       -1
+ Partials       60       59       -1

Impacted Files
Coverage Δ

orquesta/specs/mistral/v2/tasks.py
95.2% <100%> (ø)
:arrow_up:

orquesta/specs/native/v1/models.py
97.92% <100%> (ø)
:arrow_up:

orquesta/conducting.py
93% <95.23%> (+0.03%)
:arrow_up:

Continue to review full report at Codecov.

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