Sound output stops after working fine for a couple of songs

Hi,
at the beginning everything works fine for about 5-9 minutes. Then all of a sudden the sound gets interrupted. The Spotify app keeps connected and continues playing. On the rasperry there is no failure message in the verbose output. But instead continuously the following is being output:
Nov 28 16:19:09 raspberrypi librespot[1174]: [2021-11-28T15:19:09Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
Nov 28 16:19:09 raspberrypi librespot[1174]: [2021-11-28T15:19:09Z TRACE librespot_connect::spirc] ==> kPlayStatusPlay
And this goes on forever. After a reboot sound works again but stops after a while like before. Does anybody have an idea how to solve this ? Thanxs in advance.
Frank
++++++++++++++++++++
Raspberry Pi 3 Model B Rev 1.2
Raspbian GNU/Linux 11 (bullseye)
librespot 0.3.1 bbd575e (Built on 2021-11-26, Build ID: a6e0Ery3, Profile: release)
 /usr/bin/librespot --name Raspotify (raspberrypi) --device-type speaker --backend alsa --bitrate 160 --disable-audio-cache --enable-volume-normalisation --volume-ctrl linear --initial-volume 100 --verbose
Output device:
Karte 1: vc4hdmi [vc4-hdmi], Gerät 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]   Sub-Geräte: 0/1   Sub-Gerät #0: subdevice #0

Please post the full verbose logs from start to finish.
When this "hang" occurs, what is happening with the CPU and RAM usage?
If you control playback (e.g. pause, select other/next track, etc.) what do you see in the logs?

here is the log.  At 17:46:40 the sound is off. Then I press next and stop and then the connection is lost. CPU usage is about 10% going up to 20% when fetching data. RAM is about 1%.
Nov 28 17:37:09 raspberrypi librespot[851]: [2021-11-28T16:37:09Z DEBUG librespot_discovery::server] POST "/" {}
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z INFO  librespot_core::session] Connecting to AP "gew1-accesspoint-c-lzsz.ap.spotify.com:4070"
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z INFO  librespot_core::session] Authenticated as "cq7zbehe72iwlqkydm402orib" !
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_core::session] new Session[0]
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z INFO  librespot_playback::mixer::softmixer] Mixing with softvol and volume control: Linear
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_playback::player] Normalisation Type: Auto
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_playback::player] Normalisation Pregain: 0.0 dB
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_playback::player] Normalisation Threshold: -2.0 dBFS
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_playback::player] Normalisation Method: Dynamic
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_playback::player] Normalisation Attack: 5ms
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_playback::player] Normalisation Release: 100ms
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_playback::player] Normalisation Knee: 1.0
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_connect::spirc] new Spirc[0]
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_connect::spirc] canonical_username: cq7zbehe72iwlqkydm402orib
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_core::mercury] new MercuryManager
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_playback::player] new Player[0]
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z INFO  librespot_playback::convert] Converting with ditherer: tpdf
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z INFO  librespot_playback::audio_backend::alsa] Using AlsaSink with format: S16
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_playback::player] command=AddEventSender
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_playback::player] command=VolumeSet(65535)
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_core::session] Session[0] strong=3 weak=2
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z INFO  librespot_core::session] Country: "DE"
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_core::mercury] subscribed uri=hm://remote/user/cq7zbehe72iwlqkydm402orib/ count=0
Nov 28 17:37:10 raspberrypi librespot[851]: [2021-11-28T16:37:10Z DEBUG librespot_connect::spirc] kMessageTypeNotify "Galaxy S8" 3b42cdf22b5020cff23862de1eb670b188960a64<PHONE_NUMBER><PHONE_NUMBER>760 kPlayStatusPlay
Nov 28 17:37:11 raspberrypi librespot[851]: [2021-11-28T16:37:11Z DEBUG librespot_connect::spirc] kMessageTypeLoad "Galaxy S8" 3b42cdf22b5020cff23862de1eb670b188960a64<PHONE_NUMBER><PHONE_NUMBER>760 kPlayStatusPlay
Nov 28 17:37:11 raspberrypi librespot[851]: [2021-11-28T16:37:11Z DEBUG librespot_connect::spirc] State: context_uri: "spotify:user:spotify:playlist:37i9dQZF1DZ06evO26voPu" index: 0 posit.............
Nov 28 17:37:11 raspberrypi librespot[851]: [2021-11-28T16:37:11Z DEBUG librespot_connect::spirc] Frame has 50 tracks
Nov 28 17:37:11 raspberrypi librespot[851]: [2021-11-28T16:37:11Z DEBUG librespot_playback::player] command=SetAutoNormaliseAsAlbum(false)
Nov 28 17:37:11 raspberrypi librespot[851]: [2021-11-28T16:37:11Z DEBUG librespot_playback::player] command=Load(SpotifyId { id:<PHONE_NUMBER>40386428389092238834088520055, audio_type: Track }, true, 37354)
Nov 28 17:37:11 raspberrypi librespot[851]: [2021-11-28T16:37:11Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
Nov 28 17:37:11 raspberrypi librespot[851]: [2021-11-28T16:37:11Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
Nov 28 17:37:11 raspberrypi librespot[851]: [2021-11-28T16:37:11Z INFO  librespot_playback::player] Loading <The Cinema Show - Remastered 2008> with Spotify URI spotify:track:3WBXyS9Isg4aQBPCuX2GwL
Nov 28 17:37:11 raspberrypi librespot[851]: [2021-11-28T16:37:11Z DEBUG librespot_audio::fetch] Downloading file 5d46cd4e9165d3b9e3d6bdced42d907f5ee7275d
Nov 28 17:37:11 raspberrypi librespot[851]: [2021-11-28T16:37:11Z DEBUG librespot_core::channel] new ChannelManager
Nov 28 17:37:11 raspberrypi librespot[851]: [2021-11-28T16:37:11Z DEBUG librespot_core::audio_key] new AudioKeyManager
Nov 28 17:37:12 raspberrypi librespot[851]: [2021-11-28T16:37:12Z DEBUG librespot_connect::spirc] kMessageTypeNotify "Galaxy S8" 3b42cdf22b5020cff23862de1eb670b188960a64<PHONE_NUMBER><PHONE_NUMBER>030 kPlayStatusStop
Nov 28 17:37:12 raspberrypi librespot[851]: [2021-11-28T16:37:12Z INFO  librespot_playback::player] <The Cinema Show - Remastered 2008> (641320 ms) loaded
Nov 28 17:37:12 raspberrypi librespot[851]: [2021-11-28T16:37:12Z DEBUG librespot_playback::player] Normalisation Data: NormalisationData { track_gain_db: -7.2300034, track_peak: 1.1413236, album_gain_db: -6.239998, album_peak: 1.1413236 }
Nov 28 17:37:12 raspberrypi librespot[851]: [2021-11-28T16:37:12Z DEBUG librespot_playback::player] Calculated Normalisation Factor for Track: 43.50%
Nov 28 17:37:12 raspberrypi librespot[851]: [2021-11-28T16:37:12Z TRACE librespot_playback::player] == Starting sink ==
Nov 28 17:37:12 raspberrypi librespot[851]: [2021-11-28T16:37:12Z TRACE librespot_playback::audio_backend::alsa] Frames per Buffer: 22050
Nov 28 17:37:12 raspberrypi librespot[851]: [2021-11-28T16:37:12Z TRACE librespot_playback::audio_backend::alsa] Frames per Period: 4410
Nov 28 17:37:12 raspberrypi librespot[851]: [2021-11-28T16:37:12Z TRACE librespot_playback::audio_backend::alsa] Period Buffer size in bytes: 17640
Nov 28 17:37:12 raspberrypi librespot[851]: [2021-11-28T16:37:12Z TRACE librespot_playback::audio_backend::alsa] Period Buffer capacity: 17640
Nov 28 17:37:12 raspberrypi librespot[851]: [2021-11-28T16:37:12Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
Nov 28 17:37:12 raspberrypi librespot[851]: [2021-11-28T16:37:12Z TRACE librespot_connect::spirc] ==> kPlayStatusPlay
Nov 28 17:37:38 raspberrypi librespot[851]: [2021-11-28T16:37:38Z DEBUG librespot_audio::fetch] File 5d46cd4e9165d3b9e3d6bdced42d907f5ee7275d complete, saving to cache
Nov 28 17:39:10 raspberrypi librespot[851]: [2021-11-28T16:39:10Z DEBUG librespot_core::session] Session[0] strong=3 weak=4
Nov 28 17:41:10 raspberrypi librespot[851]: [2021-11-28T16:41:10Z DEBUG librespot_core::session] Session[0] strong=3 weak=4
Nov 28 17:43:10 raspberrypi librespot[851]: [2021-11-28T16:43:10Z DEBUG librespot_core::session] Session[0] strong=3 weak=4
Nov 28 17:45:10 raspberrypi librespot[851]: [2021-11-28T16:45:10Z DEBUG librespot_core::session] Session[0] strong=3 weak=4
Nov 28 17:46:40 raspberrypi librespot[851]: [2021-11-28T16:46:40Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
Nov 28 17:46:40 raspberrypi librespot[851]: [2021-11-28T16:46:40Z TRACE librespot_connect::spirc] ==> kPlayStatusPlay
Nov 28 17:46:44 raspberrypi librespot[851]: [2021-11-28T16:46:44Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
Nov 28 17:46:44 raspberrypi librespot[851]: [2021-11-28T16:46:44Z TRACE librespot_connect::spirc] ==> kPlayStatusPlay
Nov 28 17:46:48 raspberrypi librespot[851]: [2021-11-28T16:46:48Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
Nov 28 17:46:48 raspberrypi librespot[851]: [2021-11-28T16:46:48Z TRACE librespot_connect::spirc] ==> kPlayStatusPlay
Nov 28 17:46:49 raspberrypi librespot[851]: [2021-11-28T16:46:49Z DEBUG librespot_connect::spirc] kMessageTypeNext "Galaxy S8" 3b42cdf22b5020cff23862de1eb670b188960a64<PHONE_NUMBER><PHONE_NUMBER>125 kPlayStatusStop
Nov 28 17:46:49 raspberrypi librespot[851]: [2021-11-28T16:46:49Z DEBUG librespot_connect::spirc] At track 2 of 50 <"spotify:user:spotify:playlist:37i9dQZF1DZ06evO26voPu"> update [false]
Nov 28 17:46:49 raspberrypi librespot[851]: [2021-11-28T16:46:49Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
Nov 28 17:46:49 raspberrypi librespot[851]: [2021-11-28T16:46:49Z DEBUG librespot_playback::player] command=Load(SpotifyId { id:<PHONE_NUMBER>35966632960678697024285907059, audio_type: Track }, true, 0)
Nov 28 17:46:49 raspberrypi librespot[851]: [2021-11-28T16:46:49Z TRACE librespot_playback::player] == Stopping sink ==
Nov 28 17:46:50 raspberrypi librespot[851]: [2021-11-28T16:46:50Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
Nov 28 17:46:50 raspberrypi librespot[851]: [2021-11-28T16:46:50Z INFO  librespot_playback::player] Loading  with Spotify URI spotify:track:3Bfm9m97HUCH9dXjME7NBN
Nov 28 17:46:50 raspberrypi librespot[851]: [2021-11-28T16:46:50Z DEBUG librespot_audio::fetch] Downloading file 6e4bcbd539a715c642d9577d542bac76a8b5484a
Nov 28 17:46:50 raspberrypi librespot[851]: [2021-11-28T16:46:50Z INFO  librespot_playback::player]  (132520 ms) loaded
Nov 28 17:46:50 raspberrypi librespot[851]: [2021-11-28T16:46:50Z DEBUG librespot_playback::player] Normalisation Data: NormalisationData { track_gain_db: -7.1500015, track_peak: 1.0329142, album_gain_db: -8.260002, album_peak: 1.1733925 }
Nov 28 17:46:50 raspberrypi librespot[851]: [2021-11-28T16:46:50Z DEBUG librespot_playback::player] Calculated Normalisation Factor for Track: 43.90%
Nov 28 17:46:50 raspberrypi librespot[851]: [2021-11-28T16:46:50Z TRACE librespot_playback::player] == Starting sink ==
Nov 28 17:46:50 raspberrypi librespot[851]: [2021-11-28T16:46:50Z ERROR librespot_playback::player] Audio Sink Error Connection Refused:  Device default May be Invalid, Busy, or Already in Use, ALSA function 'snd_pcm_open' failed with error 'ENODEV: No such device'
Nov 28 17:46:50 raspberrypi kernel: [  631.643209] hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_dai_startup on i2s-hifi: -19
Nov 28 17:46:50 raspberrypi systemd[1]: raspotify.service: Main process exited, code=exited, status=1/FAILURE
Nov 28 17:46:50 raspberrypi systemd[1]: raspotify.service: Failed with result 'exit-code'.
Nov 28 17:46:50 raspberrypi systemd[1]: raspotify.service: Consumed 1min 4.690s CPU time.
Nov 28 17:47:00 raspberrypi systemd[1]: raspotify.service: Scheduled restart job, restart counter is at 2.
Nov 28 17:47:00 raspberrypi systemd[1]: Stopped Raspotify (Spotify Connect Client).
Nov 28 17:47:00 raspberrypi systemd[1]: raspotify.service: Consumed 1min 4.690s CPU time.
Nov 28 17:47:00 raspberrypi systemd[1]: Started Raspotify (Spotify Connect Client).
Nov 28 17:47:00 raspberrypi librespot[1204]: [2021-11-28T16:47:00Z INFO  librespot] librespot 0.3.1 bbd575e (Built on 2021-11-26, Build ID: a6e0Ery3, Profile: release)
Nov 28 17:47:00 raspberrypi librespot[1204]: [2021-11-28T16:47:00Z DEBUG librespot_discovery::server] Zeroconf server listening on <IP_ADDRESS>:44573

@JasonLG1979 only thing that comes to mind is hanging due to buffers not being filled or flushed, what do you think?

Fetching and downloading/preloading works fine and the song starts. This sequence is ending with
librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
librespot_connect::spirc] ==> kPlayStatusPlay
The problem then occurs in the middle of playing the second, third track e.g. 1 min of 4:11. Then the above sequence is constantly repeated. Maybe somebody knows why the "Sending status to server" command could be triggered again thus then causing the connection to fail.

@JasonLG1979 only thing that comes to mind is hanging due to buffers not being filled or flushed, what do you think?

I'm not sure for the reason for the multiple kPlayStatusPlay's? That's not my area of expertise But as far as the audio is concerned everything looks fine except:
Audio Sink Error Connection Refused: Device default May be Invalid, Busy, or Already in Use, ALSA function 'snd_pcm_open' failed with error 'ENODEV: No such device'

After that is log entry that not from librespot but still interesting:
hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_dai_startup on i2s-hifi: -19

error at snd_soc_dai_startup is an upstream issue with Raspberry Pi audio over HDMI:
See this:
https://github.com/raspberrypi/linux/issues/4575
And all the results if you Google error at snd_soc_dai_startup:
https://www.google.com/search?q=error+at+snd_soc_dai_startup

In short I'd say you have possibly slightly less than ideal network/connection quality and you're suffering from an upstream driver bug.

Even if librespot was sending illegal messages from spirc (the "Connect thing") to the player, the player should be immune to that. It would log when it received illegal messages in its current state.

Even if librespot was sending illegal messages from spirc (the "Connect thing") to the player, the player should be immune to that. It would log when it received illegal messages in its current state.

That is out of my wheel house. All I know is that this is really 2 issues:

The spirc issue.

The audio issue.

The audio issue is not a problem with librespot but is in fact an upstream.

The upstream audio issue may be triggering the multiple kPlayStatusPlay messages I don't know?

@JasonLG1979 hinted a couple times at it, but you haven't gone into it: what is the speed and quality of your network connection?
With reference to spirc it may be that messages are sent to early by the preloader but I've never seen this happen before. Also please don't jump to conclusions because this is a very early suspicion that would need more debugging to find out whether it's actually so.
I can't reproduce it, only you, so if you want to find out please sprinkle trace!("TRIGGERED AT LINE X"); and trace!("TRIGGERED AT LINE Y"); everywhere you see a set_status(PlayStatus::kPlayStatusPlay);, right before it and recompile.

I have done a new installation. But this time the  headless minimum image. Now I'm missing the second sound output (hdmi) completely. raspi-config shows only interface 0 (headphones).
Dec  2 16:52:47 raspberrypi librespot[626]: ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.vc4-hdmi.pcm.hdmi.1:CARD=1,AES0=4,AES1=130,AES2=0,AES3=2'
pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
pi@raspberrypi:~ $ lsmod | grep snd
snd_soc_hdmi_codec     20480  1
snd_soc_core          225280  2 vc4,snd_soc_hdmi_codec
snd_compress           20480  1 snd_soc_core
snd_pcm_dmaengine      16384  1 snd_soc_core
snd_bcm2835            24576  0
snd_pcm               110592  5 snd_compress,snd_pcm_dmaengine,snd_soc_hdmi_codec,snd_bcm2835,snd_soc_core
snd_timer              32768  1 snd_pcm
snd                    77824  6 snd_compress,snd_soc_hdmi_codec,snd_timer,snd_bcm2835,snd_soc_core,snd_pcm

I have done a new installation. But this time the headless minimum image. Now I'm missing the second sound output (hdmi) completely. raspi-config shows only interface 0 (headphones).

That's way out of scope of librespot you should file a bug with Raspberry Pi OS on that. I don't use the the HDMI nor headphone out so I usually just completely disable all built-in audio anyway.
Even if you manage to get them working neither is going to sound very good. The analog out is ofc garbage and audio over HDMI in general isn't the greatest so I'm told.
I would advise picking up a DAC HAT or a USB DAC. They'll sound better and probably work better than the built-in audio as you can already tell.
The HiFiBerry DAC+ Zero (that can be had for as little as $15 if you look around) is what I use most of the time and it is rock solid and doesn't sound too bad especially considering the price.

Closing this for now. Feel free to reopen if you are sure this is a librespot issue and not with your host.


IE user could not see public workspace items

in workshop

here is more info. I see more than 1/3 participants

@dmachi do you know what is going on?

Seems like a bug on Edge browser.
https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12046299/

This is fixed by @olsonanl . Thanks.


Helpful Aliases for structs

          Yes we could and I agree that would be good for another issue (i.e add alieas for example making `AutoRegressive` exist and `AR`, `RandomWalk` and `RW` but the key issue we have here is making sure we have a standard and following it.

Thee big thing that stands out to me is the the module is called EpiObsModels and we have RecordExpectedObs but everything else uses Observations
Originally posted by @seabbs in https://github.com/CDCgov/Rt-without-renewal/issues/499#issuecomment-2407110193
This issue is about choosing helpful aliases for common struct names. From my point of view, we want the most natural thing for the largest number of people to "just work".

Close in favour of #499


Fix multiple segfault-causing bugs

This commit closes two major holes, one related to the use of local
garbage bags, and the other to reclaiming participant data from exited
threads. After making these changes, I am no longer able to reproduce
segfaults or assertion failures. (I had previously build some aggressive
testing that was able to consistently segfault in a few seconds on every try.)
The use of local bags was creating a problem in which garbage could be
collected too early. It's crucial that when unlinked is called, the
data to be reclaimed is associated with the current global
epoch (and not the current local snapshot of the epoch). The reason
is that other threads may have outstanding pointers to the data, and may
be an epoch ahead; when the thread calling unlinked unpins, the epoch
could move forward again, causing the unlinked data to be collected
while pointers to it remain.
I was aware of this issue with the epoch algorithm, but Crossbeam
attempted to optimize things by using local bags of garbage nodes. These
local bags, however, did not manage to avoid the above problem.
This commit reverts the use of local bags (which has caused other
problems), returning to something closer to the original epoch algorithm
for the time being.
There was also a bug in freeing participant data from threads that have
exited after being involved in epoch management -- essentially, the code
removing a node from the middle of a linked-list was subject to race
conditions in which a previously-unlinked node could suddenly
reappear.
For the time being, I have simply removed all reclamation of participant
nodes. This is a memory leak, but a rather small one: it's proportional
to the number of threads that have ever used epochs and have since
terminated.
In a follow-up PR, I will try to roll out a working algorithm for
participant reclamation, likely based on marked pointers.
r? @alexcrichton

You'd know more than I but all the logic seems sound to me. Perhaps an issue could be opened about leaking participants?
otherwise lgtm

Issue here: https://github.com/aturon/crossbeam/issues/37
Nit addressed, merging now.

I think I am missing something about the local bags bug. My reading of the situation is that after something gets added to thread A's local bag, thread A needs to witness three epoch advancements before the garbage gets removed, and I only see how two can happen.
So thread A enter()s, reads an epoch of 0. Thread B enter()s, advances the global epoch to 1, reads some pointer p out of a data structure. Thread A removes p from the data structure and calls unlinked(p), p goes into A's new set. If A then exit()s and enter()s again, it will observe the global epoch is 1 and trigger a collection, moving p into cur. It can then immediately trigger a collection and advance the epoch to 2, which will move p into old. But I don't see how the epoch could advance again before thread B exit()s, which would be required for p to get freed.
What am I missing?

Local is definitely free from this, but I had thought that migration to global could falsely move some garbage backwards and proposed a change to fix it.
Let's see...

Thread A enters, reads epoch of 0 (must happen before 2)
Thread B enters, advances epoch to 1, reads p (must happen before 3)
A unlinks p
A migrates garbage to global, putting new (and p with it) into global 1 ( while 0 is mayyyybe possible by memory orderings, I doubt the relaxed read of global here was reordered that far back although who knows what the compiler did.
A exits.
Any non-B thread enters, updates the global epoch to 2 and GCs global 0. With some extreme reordering, this would cause issues for B. but I really doubt that's the case.

Another global GC can't happen until B exits, and then there's no problem. I also can't see some ordering of this where p somehow ends up in global 0 before the second global GC without crazy memory reordering.
Did the tests still segfault when only the fix to participant list was made?

@aturon could you check in or post the aggressive testing that you had causing consistent crashes?

Hmm! I thought I'd found a possible execution that triggered this problem, but I'm unable to reconstruct it.
But yes, the segfaults happen even with just the "fix" to the participant list. They also continue to happen when I change all memory orderings to SeqCst.
As I think I've said elsewhere, I sadly have very limited time on crossbeam so (1) I really appreciate the help! and (2) I ended up just moving the whole library to a maximally-conservative position, with global garbage lists and participant leakage. I'm hoping we can start from this basis and make performance improvements over time.
I've just pushed up a file, stress-msq.rs, which is a variant of the spmc test. To quickly generate a segfault, used a little script to repeatedly launch copies of the test in parallel processes. It's a weird setup, but I get segfaults in < 10s on my 4 core machine.
Script:
use std::thread;
use std::process::{self, Command};
use std::io::prelude::*;

fn one_loop() {
    loop {
        let res = Command::new("target/release/stress-msq")
                      .status()
                      .unwrap();
        if !res.success() {
            println!("Bad exit: {:?}", res);
            std::io::stdout().flush();
            process::exit(1);
        }
    }
}

fn main() {
    println!("Slamming...");
    for _i in 0..3 {
        thread::spawn(one_loop);
    }
    one_loop();
}

Great, I'll take a look at that. I can dedicate a fair bit of time to crossbeam stuff since I'm planning to use it as the basis for a case study in my thesis.

Interesting. I haven't been able to reproduce a segfault yet but am able to get the new > cur assertion to fail in stress-msq after about a minute or so usually.

Are your tests using the 64-bit or 32-bit build?

Using nightly or something else?

64-bit nightly.

Hm. I can not reproduce a segfault with participant reclamation disabled but with local bags still in use. I have observed an assertion failure on new > cur, in which a wrong value sometimes comes out of the queue, but infrequently. I think this might happen more often with local bags but I have observed it without them also.

@msullivan I definitely am able to reproduce. Are you compiling in debug or release, btw? I was using release.

Release. Platform?

Weird. I have been totally unable to get https://github.com/msullivan/crossbeam/tree/crashes (crossbeam with the elimination of local garbage reverted) to segfault. Tested on two linux machines (a quad core and a quad core with HT) and one OS X machine (quad core).

I also can't reproduce the segfault, although I do get the assertion error after ~20 minutes. It seems like the queue needs some validating.


Integer i defined inside gmfCloseMesh function

Dear sir,
I just highlight the fact that the integer variable i of libMeshb7.c line 776 (commit 61eacd4) is defined inside the function gmfCloseMesh. Although it is correct with the C99 standard, I suggest to place this declaration at the beginning of the function because for it makes some IDE like Visual Studio complaining about it.
Regards.
Jeremy Dalphin

Hi Jeremy,
thanks for pointing that out.
I declared the "i" counter at the begginning of the procedure.
Regards,
Loïc


Do not run plan again before every apply

Currently digger apply always runs runs terraform plan before terraform apply. This is the tradeoff made while building the policy overrides feature. There are 2 problems with this:

runs take longer
if stored plan is different, it would not be taken into account

Potential solutions

Only check plan policy for persistent plans. This will make it work for stored plans.
Only check plan policy if explicitly enabled (by adding a policy and / or per-project config option in digger.yml). This way the duplicate check will only be run for projects that need the extra policy check.

Reported by user A.T.

Addressed in #1098


How to tansfer the the coordinate system to the blender's coordinate system

Thanks for the great work. Now I have the glb file and want to transform and scale it in blender to match the rendering result in G-objaverse. But I failed, the json file provided in G-objaverse seems can't be used directly in Blender when doing transform in Blender. How can I get the righe transform parameters? thanks a lot.

I saw the original scaling scripts that demonstrates the following operation:
def normalize_scene(mesh):
    bounds = mesh.bounding_box.bounds
    bounds_min = bounds[0]
    bounds_max = bounds[1]
    scale_tmp = max((bounds_max[0] - bounds_min[0]), (bounds_max[1]-bounds_min[1]))
    scale_tmp = max((bounds_max[2] - bounds_min[2]), scale_tmp)
    scale_tmp = 0.9 / scale_tmp

    offset = -(bounds_max + bounds_min) / 2
    return scale_tmp, offset

mesh = trimesh.load("xxx.glb", process=False)
scale, offset = normalize_scene(mesh)
new_mesh = scale * (trimesh.verts + offset)
Then you can use our providing  intrinsic and extrinsic parameters to blender's coordinates.

I will give you an example to demonstrate how to transfer *.glb to Pytorch3D coordiante. Then, you can simply transfer pytorch3D coordinates to blender coordinate system following this issues and this documents

def generate_obja_camera(view_dir, num_views=24, stride=1, start_idx=0):
    view_dir = Path(view_dir)
    R_lst = []
    T_lst = []
    scale_lst = []

    for view_idx in range(0, num_views, stride):
        view_json = view_dir / f"{view_idx:05d}" / f"{view_idx:05d}.json"
        with open(view_json, "r") as fp:
            cam_json = json.load(fp)

        cam_pos = np.array(cam_json["origin"], dtype=np.float32)
        cam_pos = cam_pos[[0, 2, 1]] * np.array([1, 1, -1], dtype=np.float32)  # unity to pytorch3d?

        pytorch3d_R = look_at_rotation(torch.from_numpy(cam_pos[None, :]))
        # camera.set_intrin_params(img_h, img_w, focal, max(img_w, img_h))
        pytorch3d_T = -pytorch3d_R[0].T @ torch.from_numpy(cam_pos).to(pytorch3d_R)

        R_lst.append(pytorch3d_R)
        T_lst.append(pytorch3d_T)
        # scale_lst.append(torch.from_numpy(scale[None, :]).to(pytorch3d_R))

    assert cam_json["x_fov"] == cam_json["y_fov"]
    fov = cam_json["x_fov"]
    R_lst = R_lst[start_idx:] + R_lst[:start_idx]
    T_lst = T_lst[start_idx:] + T_lst[:start_idx]
    R_lst.append(R_lst[0])
    T_lst.append(T_lst[0])
    # scale_lst.append(scale_lst[0])
    Rs = torch.cat(R_lst, dim=0)
    Ts = torch.stack(T_lst, dim=0)
    # scales = torch.cat(scale_lst, dim=0)
    mesh_scale = cam_json["scale"][0]
    mesh_offset = torch.from_numpy(np.array(cam_json["offset"], dtype=np.float32)).to(pytorch3d_R)
    # mesh_offset = mesh_offset[[0, 2, 1]]

    return Rs, Ts, fov, mesh_scale, mesh_offset

def normalize_scene(mesh):
    bounds = mesh.bounding_box.bounds
    bounds_min = bounds[0]
    bounds_max = bounds[1]
    scale_tmp = max((bounds_max[0] - bounds_min[0]), (bounds_max[1]-bounds_min[1]))
    scale_tmp = max((bounds_max[2] - bounds_min[2]), scale_tmp)
    scale_tmp = 0.9 / scale_tmp

    offset = -(bounds_max + bounds_min) / 2
    return scale_tmp, offset

    Rs, Ts, fov, mesh_scale, mesh_offset = generate_obja_camera(image_dir, start_idx=start_idx)
    # rgb_uvp.load_glb_mesh(mesh_path, scale_factor=mesh_scale, auto_center=False, autouv=True, include_textures=False, offset=mesh_offset)

    mesh = trimesh.load(mesh_path)
    scale_tmp, offset = normalize_scene(mesh)
    offset = torch.from_numpy(offset).to(mesh_offset)
    mesh.export("./tmp.obj")

   # for rednering
   # following the pytorch3D or blender.
   .......

Thank you for your assistance, but I am still confused.
For certain cases (e.g., Gobjda: 458441, obja: ae857bd7749f46fd8829be990788b809.glb), the scale computed from the normalize_scene function differs from the scale provided in the JSON file.
def normalize_scene(mesh):
    bounds = mesh.bounding_box.bounds
    bounds_min = bounds[0]
    bounds_max = bounds[1]
    scale_tmp = max((bounds_max[0] - bounds_min[0]), (bounds_max[1] - bounds_min[1]))
    scale_tmp = max((bounds_max[2] - bounds_min[2]), scale_tmp)
    scale_tmp = 0.9 / scale_tmp

    offset = -(bounds_max + bounds_min) / 2
    return scale_tmp, offset

# Pseudo code.
mesh = trimesh.load("C:\project\datasets\obja_glb/ae857bd7749f46fd8829be990788b809.glb", force="mesh")
scale, offset = normalize_scene(mesh)
print(scale, offset)

Output:
0.4256730844402861 [ 1.2111664e-08 -5.0454730e-01  6.8111748e-01]

However, the scale and offset provided in the JSON file are:

When I attempt to use the computed scale and offset to transform the glb file and compare it with the point cloud (pcd) fused from the depth map, there is a misalignment. The black points represent the pcd fused from the depth map, and the noise points can be ignored.

Why does this happen? How can I obtain the correctly transformed mesh to align with the fused pcd and the rendered RGB/depth?
Thank you very much. The code for fusing the depth map is as follows:
`   folder ="../datasets/458441/campos_512_v4"
    def depth_2_pcd(depths, c2ws, intrinsic):
        '''
        depths:[V,H,W]
        c2w: [V,4,4]
        intrinsic: [3,3]
        '''
        desired_num_points = 2048

        intrinsic = o3d.camera.PinholeCameraIntrinsic(width=depths.shape[2], height=depths.shape[1],
                                                    fx=intrinsic[0, 0], fy=intrinsic[1, 1],
                                                    cx=intrinsic[0, 2], cy=intrinsic[1, 2])

        xyz_list = []
        merged_pcd = o3d.geometry.PointCloud()

        for i in range(depths.shape[0]):
            depth = depths[i]
            c2w = c2ws[i]
            depth= np.ascontiguousarray(depth, dtype=np.float32)
            depth_image = o3d.geometry.Image(depth)

            pcd = o3d.geometry.PointCloud.create_from_depth_image(depth_image, intrinsic)
            points = np.asarray(pcd.points)
            points[:,2] = -points[:,2] #open3d 是基于opencv的相机坐标系，所以要进行变换
            points[:,1] = -points[:,1]

            # print(depth,points)
            pcd.points = o3d.utility.Vector3dVector(points)
            # o3d.visualization.draw_geometries([pcd])
            # o3d.io.write_point_cloud(f"pcd_{i}.ply", pcd)

            pcd_transformed = pcd.transform(c2w.astype(np.float64))
            # o3d.io.write_point_cloud(f"pcd{i}.ply", pcd)
            merged_pcd += pcd_transformed

        xyz = np.asarray(merged_pcd.points)

        return xyz

    def read_dnormal(normald_path, cond_pos):
        cond_cam_dis = np.linalg.norm(cond_pos, 2)

        near = 0.867 #sqrt(3) * 0.5
        near_distance = cond_cam_dis - near

        normald = cv2.imread(normald_path, cv2.IMREAD_UNCHANGED).astype(np.float32)
        depth = normald[...,3:]

        depth[depth<near_distance] = 0

        return depth

    def read_camera_matrix_single(json_file):
        print(json_file)
        with open(json_file, 'r', encoding='utf8') as reader:
            json_content = json.load(reader)

        # NOTE that different from unity2blender experiments.
        camera_matrix = np.eye(4)
        camera_matrix[:3, 0] = np.array(json_content['x'])
        camera_matrix[:3, 1] = -np.array(json_content['y'])
        camera_matrix[:3, 2] = -np.array(json_content['z'])
        camera_matrix[:3, 3] = np.array(json_content['origin'])

        # '''
        # camera_matrix = np.eye(4)
        # camera_matrix[:3, 0] = np.array(json_content['x'])
        # camera_matrix[:3, 1] = np.array(json_content['y'])
        # camera_matrix[:3, 2] = np.array(json_content['z'])
        # camera_matrix[:3, 3] = np.array(json_content['origin'])
        # print(camera_matrix)
        # '''

        return camera_matrix

    def get_intr(target_im):
        h, w = target_im.shape[:2]

        fx = fy = 1422.222
        res_raw = 1024
        f_x = f_y = fx * h / res_raw
        K = torch.tensor([f_x, 0, w / 2, 0, f_y, h / 2, 0, 0, 1]).reshape(3, 3)
        # print("intr: ", K)
        return K
    images = []
    masks = []
    cam_poses = []
    depths = []
    vid_cnt = 0

    for name in os.listdir(folder):
        depth_filename = os.path.join(folder,name, name+"_nd.exr")
        json_name = os.path.join(folder, name,name+".json")

        print(json_name)
        c2w = read_camera_matrix_single(json_name)
        # print(c2w)
        depth = read_dnormal(depth_filename, c2w)

        cam_poses.append(c2w)
        depths.append(depth)
        intrinsic = get_intr(depth).numpy()
    cam_poses = np.stack(cam_poses, axis=0) # [V, 4, 4]
    depths = np.stack(depths, axis=0)

    pcd_list = []

    pcd = depth_2_pcd(depths, cam_poses, intrinsic)
    pcd_fuse = o3d.geometry.PointCloud()
    pcd_fuse.points = o3d.utility.Vector3dVector(pcd)

    o3d.io.write_point_cloud("fuse.ply", pcd_fuse)
`
```python

the offset key is not used in JSON file; this is a bug for rendering system. Please use   (normalize)[https://github.com/modelscope/richdreamer/issues/53#issuecomment-2366150631] to get scale and offset

Thank you for your prompt response. However, when I use the scale and offset computed from normalize_scene, there is a misalignment between the transformed object and the point cloud fused from the depth map, as illustrated in the example I provided in https://github.com/modelscope/richdreamer/issues/53#issuecomment-2370701004. Why does this occur?


[New Feature]Option to add Attractions and Places of Interests when creating a new Trip

In My Trips, when adding a new trip

Give an option to add Attractions to visit in and around the city
It needs to be integrated into the server side as well

Similar to https://github.com/project-travel-mate/Travel-Mate/issues/174
Marking as duplicate.


Audio

Add Audio support.
I think I can do this if I understood the structure of the engine. If you created some template classes to put te audio code I could write the OpenAL code. What do you think?

I like the idea. Only problem is that right now I am completely focused on getting text to work as I need it for multiple upcoming projects. I can create the template for you and link it in CMake. Do you want the audio player to be static and usable from everywhere or a class that you have to create?

I added OpenAL as a dependency to the CMake to start working on it.

Thanks for adding OpenAL to the cmake file. I'll get to adding it this weekend probably. Also, do you have a UI engine yet, because you can use my GLUI library; it works with OpenGL 3.3+ really well. Anyways, I'll contribute more soon!

I actually have just finished the framework and I will work on implementing you GLUI library later! I wanted to add graphs and I immediately thought of your library.

thanks for adding OpenAL! Could you make some template Sound and Sound Manager classes for me that integrate the engine's module architecture?
Can you please make a SoundManager class that has functions for:

initializing OpenAL
adding a Sound
stopping all sounds

and a Sound class that has functions for:

starting the sound
stopping the sound
setting if it will loop

just leave these functions back and I will figure out the OpenAL for making them work.
Also, give the sound class a constructor that takes in a path to the sound, I'll write something to read the file.

should be about 2 hours of coding

Ok there is now a header file called Utility/Audio.h and a corresponding source file. I put some basic framework and I included the al.h header. Go ahead!

Properties are managed via the BitField class which uses the bits in a byte to store boolean values. You can store 8 bools in the same space as the normal bool primitive. To add more properties, all you need to do is to add a value to the enum called Properties in Sound. Then you can use the setProperty() function to edit it. Currently, the only property there is looping, but you can add more.

The BitField class is fully documented so you can read up on that.

I just added some play and stop functionality to the Sound class. I'll work on adding volume controls and other features soon.

Should I still work on other audio features, or should we close this issue?

Should I still work on other audio features, or should we close this issue?

Up to you. It's very basic right now, but if you want to work on it you can. It's not really a top priority though


Always showing "Not Moving"

The speed is always 0 in iOS 12.

hi! did you find a better solution ?


server crashes when loading a specific mine colony area

Minecraft version
1.20.1
LibX version
1.20.1-5.0.5
UtilitiX version
1.20.1-0.8.8
Forge version
47.1.3
The latest.log file
https://gist.github.com/domshi/b6718dfa59408f6caf3e56ca6c589ba2
Issue description
when i load into the server to my mine colony area it produces these errors and crashes the server 15 seconds later
Steps to reproduce
unknown as other mine colonies are unaffected, however if anyone loads my mine colony area, the server crashes
Other information
console error log

Please read in the template:

Please use a paste site such as gist / pastebin / etc.
For more information, see https://git.io/mclogs

Please read in the template:

Please use a paste site such as gist / pastebin / etc.
For more information, see https://git.io/mclogs

ok, sorry didn't know if links to other things are standard.

Is it always a crash with UtilitiX? And if you create a backup and try without UtilitiX, does it still crash? For me, it looks like the server is just too busy. And maybe AE2 does a bit too much (in this stacktrace). I think it’s not UtilitiX fault, but you need to test this.


In BetterVisualizerEditText '-' continues to add on after lenght has been crossed

Example : "999-999-999----" (endless '-' can be added)

Started to use space Instead


[Improvement][Task Plugin] Built-in time parameters not working for zeppelin task

Search before asking

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

Description

Built-in time parameters not working for zeppelin task, seems the same for spark task.
We need to support it so that users could pass in formatted dynamic time parameters.
For more info on Built-in time parameters, see: https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/guide/parameter/built-in.html

Are you willing to submit a PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

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

This issue has been automatically marked as stale because it has not had recent activity for 30 days. It will be closed in next 7 days if no further activity occurs.

No stale


Update kafka-schema-registry-client to 7.2.6

About this PR
📦 Updates io.confluent:kafka-schema-registry-client from 7.2.2 to 7.2.6
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "io.confluent", artifactId = "kafka-schema-registry-client" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "io.confluent", artifactId = "kafka-schema-registry-client" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #1101
Also, going to 7.4.1


How control systems should be made

This issue is for bookkeeping purposes.
When designing a control systems, whatever scheme you use it often involves a diagram of blocks and arrows; a block represents some calculation/process, and arrows represents how the output of one block feeds into another or input/output.
(Sometimes this involves block algebra/matrix stuff, but we don't want to require that as we don't want linear algebra to be a prerequisite to using the library. So instead the blocks are still kept in a more abstract form as simply some process with inputs and/or outputs.)
The library currently has 2 schemes for designing systems, but they have issues:
it currently relies on the ReferenceFollower, Observer, Controller, Plant interfaces. A BasicControlSystem has 1 of each, while a ChainedControlSystem has one Follower and one Plant and multiple "links" of Observers and Controllers in the middle.
First of all, the Observer Controller naming of the interfaces doesn't really explain how these things are used in practice (or in theory, right now). A Controller/Observer can simply be a mapping function, or ignore inputs.
Second, while this scheme works for some specific use cases, their defined structure is restrictive and unintuitive. First of all, all Observes/Controllers must take 2 inputs and have 1 output, from predetermined locations. There is no nonconvoluted way to get information from another component down the line.
This makes several useful structures impossible: For example, making use of multiple measuring devices (wheel encoders, extra odometry wheels, camera localization, gyroscope) is currently hard to do.
Third, there is Generics Hell, and we don't need 6 generics in one class which is only the Builder.
A better system might have components with a number of inputs and outputs and a way of connecting them in any manner. A new ControlComponent interface which can take any number of inputs and output any number of outputs is proposed.
Advantages:
Solves all the problems described earlier
Disadvantages:
More complicated to create and use, and making something simple work is harder. Also, handling a "loop" in control is also harder.

Verdict: let's go with it, then see if its better enough to warrant removal of the old version


Update to 2.1.26/2.1.522 build 20210212-02-4489682.

OSX issue is https://github.com/dotnet/source-build/issues/2091.


Migrate to MongoDB Driver 2.0

Migrating to MongoDB Driver 2.0 for new async capabilities of the c# driver.

Hey, I’ll be taking a look at this later in the week, thanks so much for taking
this on
On Sun, Apr 5, 2015 at 11:34 AM, Rodrigo Graúdo <<EMAIL_ADDRESS><EMAIL_ADDRESS>> wrote:
Migrating to MongoDB Driver 2.0 for new async capabilities of the c# driver.

YOU CAN VIEW, COMMENT ON, OR MERGE THIS PULL REQUEST ONLINE AT:
https://github.com/g0t4/ aspnet-identity-mongo/pull/8
[https://github.com/g0t4/aspnet-identity-mongo/pull/8]
COMMIT SUMMARY

Migrate to MongoDB.Driver 2.0
Migrate to MongoDB.Driver 2.0

FILE CHANGES

D src/.nuget/packages.config
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-0] (4)
M src/AspNet.Identity.MongoDB. sln
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-1] (3)
M src/AspNet.Identity.MongoDB. sln.DotSettings
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-2] (3)
M src/AspNet.Identity.MongoDB/ AspNet.Identity.MongoDB.csproj
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-3] (16)
D src/AspNet.Identity.MongoDB/ IdentityContext.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-4] (31)
M src/AspNet.Identity.MongoDB/ IndexChecks.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-5] (50)
M src/AspNet.Identity.MongoDB/ RoleStore.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-6] (110)
M src/AspNet.Identity.MongoDB/ UserStore.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-7] (507)
M src/AspNet.Identity.MongoDB/ packages.config
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-8] (6)
M src/IntegrationTests/ EnsureWeCanExtendIdentityRoleT ests.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-9] (101)
M src/IntegrationTests/ EnsureWeCanExtendIdentityUserT ests.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-10] (101)
M src/IntegrationTests/ IdentityUserTests.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-11] (38)
M src/IntegrationTests/ IndexChecksTests.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-12] (60)
M src/IntegrationTests/ IntegrationTests.csproj
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-13] (25)
M src/IntegrationTests/ RoleStoreTests.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-14] (13)
M src/IntegrationTests/ UserIntegrationTestsBase.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-15] (62)
M src/IntegrationTests/ UserLoginStoreTests.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-16] (195)
M src/IntegrationTests/ UserPasswordStoreTests.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-17] (95)
M src/IntegrationTests/ UserRoleStoreTests.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-18] (99)
M src/IntegrationTests/ UserSecurityStampStoreTests.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-19] (53)
M src/IntegrationTests/ UserStoreTests.cs
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-20] (203)
M src/IntegrationTests/packages. config
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-21] (10)
M src/Tests/Tests.csproj
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-22] (25)
M src/Tests/packages.config
[https://github.com/g0t4/aspnet-identity-mongo/pull/8/files#diff-23] (10)

PATCH LINKS:

https://github.com/g0t4/ aspnet-identity-mongo/pull/8. patch
[https://github.com/g0t4/aspnet-identity-mongo/pull/8.patch]
https://github.com/g0t4/ aspnet-identity-mongo/pull/8. diff
[https://github.com/g0t4/aspnet-identity-mongo/pull/8.diff]

—
Reply to this email directly or view it on GitHub [https://github.com/g0t4/aspnet-identity-mongo/pull/8] .[https://ci3.googleusercontent.com/proxy/seyNNUH8JBuBMq9WCXQ1R56nf_ulFiUoEPdOsUZLXIM86HHHgtiFGf9YaQb29hCZsfRXGhbFRKIfpskUKq9YK_XpKKp_RIYWIyx5_PAfJVaOFfA0VeLxsrjidkWBB_qCPieaXYnXhsTEUIx_Xm7t7cWH-gAbdg=s0-d-e1-ft#https://github.com/notifications/beacon/AAK_3ZxTlNT71aQa7YXgC9gfFYFyNLY0ks5n8U2EgaJpZM4D6hZU.gif]
[https://app.mixmax.com/api/track/v2/6ShmP3I21Enxuy7co/wes.mcclure%40gmail.com/gIt92YuIWdoRXan5SesBXZyB0MiRjZ1Y2MwU2Y5YTMhJTO0ADOxkzMxETMwADMwADMwY2YykzN5cDOmhjMlJmN1IWZ4UmM5EmM3gTZ0ITO5EmN3IWOiVTMkBzMyQTZkRmZiJDMwAzK5xGclJnI/gIvdmbv1WL5RXa05WZklWL0VmbwNXYvQDdwcmI?sc=false]
Sent with Mixmax [https://mixmax.com/s/yAvqbondLzZrHjgqb]

No problem. You helped me a lot creating this. =)
If you need any help just ask.

I'm looking forward to getting my hands on this - Am running into the same problem, and need to update.

Possibly dumb question, so forgive me if I'm missing something obvious: why are methods still being wrapped in Task.Run(() => ... if the underlying Mongo calls are now fully awaitable?

My mistake =X
I made this in a night really need some review.

No worries. :) For the record, it does work! (compiled and tested these commits with a project I'm working on) I do think it would be cleaner to simply return await where possible.

Done @nbarbettini! Can you test it?

Cool! I can test later today.

So awesome to see this PR, would be happy to test it soon too

@rodrigograudo My testing is by no means comprehensive, but it's working so far in the small sample app I've been playing with.

Hey guys I'll test this out soon and yes I'll remove the Task.Run calls
On Thu, Apr 9, 2015 at 6:52 PM, nbarbettini<EMAIL_ADDRESS>wrote:

@rodrigograudo https://github.com/rodrigograudo My testing is by no
means comprehensive, but it's working so far in the small sample app I've
been playing with.
—
Reply to this email directly or view it on GitHub
https://github.com/g0t4/aspnet-identity-mongo/pull/8#issuecomment-91374721
.

Already removed @g0t4 but review is good

I ported the library to the 2.0 driver, I want to leave the tests as-is as much as possible so I just updated the existing code and won't be merging this PR, though I've reviewed my changes and they look the same as yours for the most part. A few notes:

I nuked IdentityContext, it wasn't serving much of a purpose anymore.
IndexChecks, I made individual methods generic instead of the entire class.

https://www.nuget.org/packages/AspNet.Identity.MongoDB/2.0.4-alpha

When you plan to release?

Released on Friday
On Sunday, April 12, 2015, Rodrigo Graúdo<EMAIL_ADDRESS>wrote:

When you plan to release?
—
Reply to this email directly or view it on GitHub
https://github.com/g0t4/aspnet-identity-mongo/pull/8#issuecomment-92191322
.

I mean a stable version.

It's stable I just put it out as alpha in case people want to poke at it,
all tests are passing. I should just mark it as stable :)
On Mon, Apr 13, 2015 at 7:21 AM, Rodrigo Graúdo<EMAIL_ADDRESS>wrote:

I mean a stable version.
—
Reply to this email directly or view it on GitHub
https://github.com/g0t4/aspnet-identity-mongo/pull/8#issuecomment-92318944
.

Stable is out 2.0.8
On Mon, Apr 13, 2015 at 2:19 PM, Wes Higbee<EMAIL_ADDRESS>wrote:

It's stable I just put it out as alpha in case people want to poke at it,
all tests are passing. I should just mark it as stable :)
On Mon, Apr 13, 2015 at 7:21 AM, Rodrigo Graúdo<EMAIL_ADDRESS>wrote:

I mean a stable version.
—
Reply to this email directly or view it on GitHub
https://github.com/g0t4/aspnet-identity-mongo/pull/8#issuecomment-92318944
.


Gist: Link directly to token creation

The older style of PAT allows the crafting of a link which pre-populates the desired fields:
https://github.com/settings/tokens/new?description=Stan Playground&scopes=gist
I can't find if this is possible for the newer fine-grained ones, but this may be a reason to switch our instructions/recommendation

Working on this


Feat Yarn PnP

Fixes issues related to https://github.com/pmizio/typescript-tools.nvim/issues/192.
Adds support for Yarn's Plug n Play features.

LGTM! thanks for your input!


Error on YARN START

I followed the steps in your guide exactly and soon as I run YARN START I get the following error.

`Failed to compile.
./node_modules/react-apexcharts/dist/react-apexcharts.min.js
Module not found: Can't resolve 'apexcharts/dist/apexcharts.common' in 'D:\Development\UI-Templates\sofia-react-template\node_modules\react-apexcharts\dist'`

Steps to reproduce:

Git clone the repo
YARN (Install all dependencies)
YARN START

yarn add react-apexcharts apexcharts

Thanks for the feedback, @exlnt
The problem has been resolved. I added the required library and updated the existing charts libs.


Random error on .explode()

System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 21.04
Modin version (modin.__version__):  0.10.2
Python version: 3.7
Code we can use to reproduce:

import modin.pandas as pd
# create a bunch of pd.DataFrame-s
df = df.explode([_bunch of col names_])

Describe the problem
Random error, works again once all the cells in Jupyter are ran again (without any modifications):
UserWarning: `DataFrame.explode` defaulting to pandas implementation.

---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<timed exec> in <module>

~/anaconda3/envs/venv_ray/lib/python3.7/site-packages/modin/pandas/dataframe.py in explode(self, column, ignore_index)
    817         """
    818         return self._default_to_pandas(
--> 819             pandas.DataFrame.explode, column, ignore_index=ignore_index
    820         )
    821

~/anaconda3/envs/venv_ray/lib/python3.7/site-packages/modin/pandas/base.py in _default_to_pandas(self, op, *args, **kwargs)
    455         args = try_cast_to_pandas(args)
    456         kwargs = try_cast_to_pandas(kwargs)
--> 457         pandas_obj = self._to_pandas()
    458         if callable(op):
    459             result = op(pandas_obj, *args, **kwargs)

~/anaconda3/envs/venv_ray/lib/python3.7/site-packages/modin/pandas/dataframe.py in _to_pandas(self)
   2848         pandas.DataFrame
   2849         """
-> 2850         return self._query_compiler.to_pandas()
   2851
   2852     def _validate_eval_query(self, expr, **kwargs):

~/anaconda3/envs/venv_ray/lib/python3.7/site-packages/modin/backends/pandas/query_compiler.py in to_pandas(self)
    253
    254     def to_pandas(self):
--> 255         return self._modin_frame.to_pandas()
    256
    257     @classmethod

~/anaconda3/envs/venv_ray/lib/python3.7/site-packages/modin/engines/base/frame/data.py in to_pandas(self)
   2232                 ErrorMessage.catch_bugs_and_request_email(
   2233                     not df.axes[axis].equals(self.axes[axis]),
-> 2234                     f"Internal and external indices on axis {axis} do not match.",
   2235                 )
   2236             df.index = self.index

~/anaconda3/envs/venv_ray/lib/python3.7/site-packages/modin/error_message.py in catch_bugs_and_request_email(cls, failure_condition, extra_log)
     61                 "Internal Error. "
     62                 "Please email<EMAIL_ADDRESS>with the traceback and command that"
---> 63                 " caused this error.\n{}".format(extra_log)
     64             )
     65

Exception: Internal Error. Please email<EMAIL_ADDRESS>with the traceback and command that caused this error.
Internal and external indices on axis 1 do not match.

Source code / logs

Hi @jmakov thanks for the details!
This is probably happening in a previous line with a metadata desync. How are you creating the dataframes? Are you able to share a few more lines above the explode? Thanks again!

Not sure I'm doing any strange acrobatics, cannot share the actual code, but the gist:
%%time
import modin.pandas as pd

df = pd.DataFrame(pd.Series(_some_np_array_data_)
df.set_index(pd.Index(_some_other_np_array_data_, inplace=True)

# so we can run this cell again with modified code, if we wish
if "col_name" in df.columns:
  df.drop(["col_name"], axis=1, inplace=True)

# this improves performance by at least x10 for some reason compared to doing `.concat` on all dfs at once
df_tmp = pd.concat([_multiple_dfs_of_the_same_size_created_like_the_one_above_], axis=1)
df = pd.concat([df, df_tmp), axis=1)  all dfs at once

df = df.explode([_multiple_columns_])

This is super helpful @jmakov. Can we insert a line to force synchronization of the columns and index?
%%time
import modin.pandas as pd

df = pd.DataFrame(pd.Series(_some_np_array_data_)
df.set_index(pd.Index(_some_other_np_array_data_, inplace=True)

# so we can run this cell again with modified code, if we wish
if "col_name" in df.columns:
  df.drop(["col_name"], axis=1, inplace=True)

# this improves performance by at least x10 for some reason compared to doing `.concat` on all dfs at once
df_tmp = pd.concat([_multiple_dfs_of_the_same_size_created_like_the_one_above_], axis=1)
df = pd.concat([df, df_tmp), axis=1)  all dfs at once

# new line here
df._query_compiler._modin_frame.synchronize_labels()

df = df.explode([_multiple_columns_])

I would like to figure out why they desynced, but let's see if this fixed your issue first to see if it really is a desync.

I'm having trouble reproducing the problem. That happened twice in a week and after rerunning the df creation cell, .explode() was also happy. What I think I could do is to have .explode() in a separate cell and if the error shows up again, I'll try to rerun only that cell. And if the error remains I'll insert the new line in the same cell and run it again and report. Hope we get the errors so we can fix the issue :).

Haha, sounds good. The elusive bugs are always the most fun to work on. Please let us know if it happens again!

Closing this for now, please let us know if it happens again @jmakov!


Normalize: TheDocumentFoundation.LibreOffice.HelpPack version <IP_ADDRESS>

This is an automated pull request
Microsoft Reviewers: Open in CodeFlow

@wingetbot waivers Add Validation-No-Executables


Adjust empty/initial values for select fields in DDF schemas

Because carbon has four different dropdowns, the DDF schemas need to have explicit initialValue or includeEmpty settings in order to make the form validation work.
@miq-bot assign @agrare

Closing in favor of https://github.com/ManageIQ/manageiq-providers-autosde/pull/59


Support Lock10 with custom fields

This would be helpful to help mitigate #202 for new users. The username could be stored in wp_users > user_login and the public display name could be stored in wp_usermeta > nickname.
I do understand that the nickname can be changed to something other than the login name by the user, but 95% of our users never do that.


heinhtetzor.com

http://heinhtetzor.com

Thank you for creating this issue. I am afraid, I will not be adding this website to the list now because it does not satisfy rules 1, 4, and 5. Especially, the transfer size is more than 10 KB.
$ node src/metrics.js http://heinhtetzor.com/
url: http://heinhtetzor.com/
htmlSize: 1640
jsonSize: 0
imageSize: 0
base64Size: 0
videoSize: 0
cssSize: 624
jsSize: 39483
webfontSize: 0
otherSize: 0
contentSize: 1640
extraSize: 40107
totalSize: 41747

total size: 40.8 KB
content size: 1.6 KB
content ratio: 4%


Introduce each Dockerfile keyword with a one-line of what it's for first.

File: engine/reference/builder.md, CC @gbarr01
May I suggest that for each key word described in the dockerfile reference, the first sentence should answer the question "what is this for/what does this do?" before describing syntax, options and issues surrounding the feature.
For example, the current doc for Dockerfile COPY first describes the syntax and details, and only many points later the purpose. Here is what it currently says:
COPY
COPY has two forms:

COPY [--chown=<user>:<group>] <src>... <dest>
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"] (this form is required for paths containing whitespace)
Note: The --chown feature is only supported on Dockerfiles used to build Linux containers, and will not work on Windows containers. Since user and group ownership concepts do not translate between Linux and Windows, the use of /etc/passwd and /etc/group for translating user and group names to IDs restricts this feature to only be viable for for Linux OS-based containers.

And only after reading all of this, do I find out what COPY is for, with the following text:
The COPY instruction copies new files or directories from <src> and adds them to the
filesystem of the container at the path <dest>.

While this provides all the information, it is possible to make it even more straightforward.  I would suggest to start the entire section with something like this:
The COPY instruction copies files from the host file system into the container at build time.

This statement is sufficient, clear, and guides the reader immediately to understand:
a) whether to read
b) what to expect.
I think this principle could be applied elsewhere in the documentation, but as I am learning Dockerfile at the moment, I noticed this here.
--Moshe Pfeffer

Closing this ticket due to its age, and the impending refactor. If you think this is in error, feel free to reopen. Thanks!


Convert_nwb_to_spike_mat error

Hi,
I'm getting this error when I run convert_nwb_to_spikes_mat:
Error: Index (272) out of range (0-271).
It only happens if the nwb file was made with kilosort3. I never get this error when I convert the nwb to mat if the it was made with ironclust.
Thanks for the help!

@LuRodForster Cany you send me the NWBFile you made via kilosort? I've seen this type of error before but thought I had debugged it; of course, it's possible different sorters have different indexing conventions... I'll have to think of a way around that, because the channel indexing there is actually pretty important to a number of data extractions

Hi Cody,
I'm going to send it to you by email because I can't upload it here.
Also I just realized that if I pick kilosort2.5 as the sorter if gives a different error:

I'll send you both the kilosort3 and kilosort2_5 nwb files.
Also when I make the nwb files after doing the manual sorting with phy2 and the automatic curation part of the pipeline. I get these warnings:


Release checklist for 0.4

[x] documentation #131
[ ] bump version numbers
[ ] new pypi package
[ ] new docs on pythonhosted

FYI to @josePhoenix - As of commit faf3e56 I think poppy is all ready to go. I am just going to hold off on pulling the trigger in case any last minute minor fixes are needed in the course of polishing the webbpsf release.

Sounds good.
The only other thing I can think of is whether you want to fiddle with the way the Instrument.display() or Instrument.calcPSF(display=True) plots look. That might not be worth the trouble, because I think at least one of those is totally overridden in WebbPSF anyway.


Make tsigGenerateProvider public

Make it public as TsigGenerateWithProvider and update the docs a little.
Signed-off-by: Miek Gieben<EMAIL_ADDRESS>

This is only for generation, my PR was for verification also.
@miekg can you make tsigVerifyProvider public also?


Build container on pr

Describe the pull request:

[ ] Bug fix
[ ] Functional change
[ ] New feature
[ ] Unit/integration tests
[ ] Code cleanup
[ ] Build system change
[ ] Documentation change

Pull request long description:

Build and publish a container for each PR in order to simplify testing in a proper environment.
A cronjob is used to delete old containers.
Related issues:

Additional information:

@kjellp are you interested in this PR. I think we should merge this one or close it.

@viklund thanks, we are working through all open PR in this repo, and will act on it this week (the failed trivvy test is likely fixed now by other Issues fixed in the meantime, so hopefully will be an easy merge).


Run upgrade tests in PR/mergequeue CI

It seems like it's been very easy to break the upgrade tests. We need to run the upgrade tests in PR/mergequeue CI.

Maybe we could add admin-test and upgrade-test in the merge queue and add two labels skip-admin-test and skip-upgrade-test to skip those?
These tests takes pretty long time, we shouldn't be blocked by these when changing updating a comment for example


Add default models to model catalog

openai/clip, torchvision/fasterrcnn, etc.

Deprecated, closing


Package installation causing Atom to crash.

The installation of the package causes the Atom Editor to simply crash. When it happened the first time, I thought some configuration of mine caused the editor to crash, so I removed the install as well cleared all the configuration files. Then, after I reinstalled Atom from scratch, I downloaded the package again, and again the editor simply crashes every time I try to load the application.

The same happened here. The only solutions was to reinstall Atom...

The installation of the package causes the Atom Editor to simply crash. When it happened the first time, I thought some configuration of mine caused the editor to crash, so I removed the install as well cleared all the configuration files. Then, after I reinstalled Atom from scratch, I downloaded the package again, and again the editor simply crashes every time I try to load the application.

same here. delete the package folder fix the crashes.

Funny thing is it kept on crashing even after I did that. So any help as to why it happened or what I could do to remedy it would be appreciated.

In my case I couldn't wait for a fix and went with platformIO plugin, it works great for my arduino project. (upload, monitor and more..)

I tried the new official beta 2.0 IDE, but it's absolutely underwhelming compared to Atom (but still better than the legacy one, of course).
Did anyone tried to downgrade Atom? Could that work?
@donaca4555 I'm tempted trying that way too. Does it work without signing up and with local (non-cloud) projects?

Same issue here, none of the tools worked at any point, kept crashing atom once installed. Fix for the crashes was running apm disable arduino-upload.
Really wish this worked at the moment, would have saved me a lot of time.

I ended up using Arduino CLI and implementing some toolbar command launched in a terminal plugin. Not bad: Arduino CLI is a very nice piece of software, my Atom integration is a little cumbersome, but I'm happy with it.
If someone is interested, I will spend some minutes to share it.

I’d love to know the setup, as mine currently is just the beta IDE, which as described before is underwhelming.

So, here's my setup. First thing, I installed Arduino CLI and followed the Getting started guide to make sure it runs fine from the command line.
Then, these are the Atom packages to install for toolbar and terminal:
flex-tool-bar
language-arduino
terminal-commands
tool-bar
x-terminal

This is the configuration for the terminal package:
  "x-terminal":
    spawnPtySettings:
      projectCwd: true
    terminalSettings:
      colors:
        selection: "#ffffff"
      defaultOpenPosition: "Split Down"
      leaveOpenAfterExit: false
      runInActive: true
      title: "Terminal"
    xtermAddons: {}

This is the terminal-commands.json file:
{
  "arduino-cli:compile": [
      "direnv allow \"${project}\"",
      "arduino-cli compile -b \"$ARDUINO_FQBN\" \"${dir}\""
  ],
  "arduino-cli:upload": [
      "direnv allow \"${project}\"",
      "arduino-cli compile -b \"$ARDUINO_FQBN\" -u -p \"$ARDUINO_PORT\" \"${dir}\" && echo \"Done uploading.\""
  ],
  "arduino-cli:board-list": [
      "test -f \"${project}/.envrc\" && atom \"${project}/.envrc\"",
      "arduino-cli board list"
  ],
  "arduino-cli:serial-monitor": [
      "screen $ARDUINO_PORT"
  ]
}

I use direnv to store and change $ARDUINO_FQBN and $ARDUINO_PORT at will. It's optional, since those variable can be replaced by actual fixed values in terminal-commands.json (if so, remove all direnv allow commandsfrom it). If used, here's an example.envrc` file:
export ARDUINO_FQBN=arduino:avr:nano:cpu=atmega328old
export ARDUINO_PORT=/dev/ttyUSB0

Finally, here's the toolbar.cson:
[
  {
    type: "button"
    icon: "check"
    callback: ["window:save-all", "arduino-cli:compile"]
    tooltip: "Arduino: Save all and Compile"
  }
  {
    type: "button"
    icon: "arrow-right"
    callback: ["window:save-all", "arduino-cli:upload"]
    tooltip: "Arduino: Save all and Upload"
  }
  {
    type: "button"
    icon: "terminal"
    callback: "arduino-cli:serial-monitor"
    tooltip: "Arduino: Serial monitor"
  }
  {
    type: "button"
    icon: "plug"
    callback: "arduino-cli:board-list"
    tooltip: "Arduino: List connected boards"
  }
  {
    type: "spacer"
  }
  {
    type: "url"
    icon: "circuit-board"
    url: "https://www.arduino.cc/reference/en/"
    tooltip: "Open: Arduino reference"
  }
  {
    type: "spacer"
  }
  {
    type: "button"
    icon: "tools"
    callback: "settings-view:view-installed-packages"
    tooltip: "Atom packages settings"
  }
  {
    type: "button"
    icon: "gear"
    callback: "flex-tool-bar:edit-config-file"
    tooltip: "Edit Toolbar"
  }
]

Sounds good. Thanks for giving the setup, I’ll try it when I get the chance to do so.

Got the same result - totally trashed my entire Atom set up!!!!!!!!!!
Thanks for that....
Never had a problem with other Atom extensions.

still crashing...
For Ubuntu (and most Linux systems) run this command in a terminal;
apm uninstall arduino-upload
That is using Atom's package manager to remove the broken package, without having to re-install Atom.
Atoms Flight Manual

So, here's my setup.
First thing, I installed Arduino CLI and followed the getting started guide to make sure it runs fine from the command line.
Then, these are the Atom packages to install for toolbar and terminal:
flex-tool-bar
language-arduino
terminal-commands
tool-bar
x-terminal

This is the configuration for the terminal package:
  "x-terminal":
    spawnPtySettings:
      projectCwd: true
    terminalSettings:
      colors:
        selection: "#ffffff"
      defaultOpenPosition: "Split Down"
      leaveOpenAfterExit: false
      runInActive: true
      title: "Terminal"
    xtermAddons: {}

This is the terminal-commands.json file:
{
  "arduino-cli:compile": [
      "direnv allow \"${project}\"",
      "arduino-cli compile -b \"$ARDUINO_FQBN\" \"${dir}\""
  ],
  "arduino-cli:upload": [
      "direnv allow \"${project}\"",
      "arduino-cli compile -b \"$ARDUINO_FQBN\" -u -p \"$ARDUINO_PORT\" \"${dir}\" && echo \"Done uploading.\""
  ],
  "arduino-cli:board-list": [
      "test -f \"${project}/.envrc\" && atom \"${project}/.envrc\"",
      "arduino-cli board list"
  ],
  "arduino-cli:serial-monitor": [
      "screen $ARDUINO_PORT"
  ]
}

I use direnv to store and change $ARDUINO_FQBN and $ARDUINO_PORT at will. It's optional, since those variable can be replaced by actual fixed values in terminal-commands.json (if so, remove all direnv allow commands from it). If used, here's an example .envrc file:
export ARDUINO_FQBN=arduino:avr:nano
export ARDUINO_PORT=/dev/ttyUSB0

Finally, here's the toolbar.cson:
[
  {
    type: "button"
    icon: "check"
    callback: ["window:save-all", "arduino-cli:compile"]
    tooltip: "Arduino: Save all and Compile"
  }
  {
    type: "button"
    icon: "arrow-right"
    callback: ["window:save-all", "arduino-cli:upload"]
    tooltip: "Arduino: Save all and Upload"
  }
  {
    type: "button"
    icon: "terminal"
    callback: "arduino-cli:serial-monitor"
    tooltip: "Arduino: Serial monitor"
  }
  {
    type: "button"
    icon: "plug"
    callback: "arduino-cli:board-list"
    tooltip: "Arduino: List connected boards"
  }
  {
    type: "spacer"
  }
  {
    type: "url"
    icon: "circuit-board"
    url: "https://www.arduino.cc/reference/en/"
    tooltip: "Open: Arduino reference"
  }
  {
    type: "spacer"
  }
  {
    type: "button"
    icon: "tools"
    callback: "settings-view:view-installed-packages"
    tooltip: "Atom packages settings"
  }
  {
    type: "button"
    icon: "gear"
    callback: "flex-tool-bar:edit-config-file"
    tooltip: "Edit Toolbar"
  }
]

Is it worth creating a package that uses android-cli? I'm planning of creating one.

Is it worth creating a package that uses android-cli? I'm planning of creating one.

I don't know :man_shrugging: I still think it's better fixing this issue. My setup works, but IMHO it has too many dependencies to make a package out of it (not only arduino-cli, but also multiple toolbar and terminal packages); it also has some annoyances I found later, such as: it won't work if you launch the commands while the terminal tab has focus, instead of the editor tab with your sketch...
But, if you're thinking of creating a package that relies on arduino-cli only, that implements all the rest itself, yeah, that would be definitely great. arduino-cli works great, it's well engineered, and I think it's in fact the officially suggested approach: as they say, it "contains all you need to easily build applications around the Arduino ecosystem".


Memory issue with multiclass training

Thank you so much for the guidance on multiclass training in #15 and #29 . I was able to start the training on my dataset (470 images total, same size as Kitti). My computer has 8GB GPU, 8GB RAM. The process gets killed every time at step 1900/12000 evaluation. No error was shown in the log files also.
Could anyone advise on this issue please?
Thanks!

Are you sure it is a memory issue? Can you share the stacktrace or output stderr to some log file? Errors may have been printed to stderr but not to the output.log files.
You need to write your own eval code because TensorVision currently only works in the binary case. See the FAQ: https://github.com/MarvinTeichmann/KittiSeg/blob/master/docu/FAQ.md for more details. In particular:

In addition, you will need to write new evaluation code. The current evaluator file computes kitti scores which are only defined on binary segmentation problems.

The training script calls the evaluator during training at the steps defined in your hypes .json (default is KittiSeg.json). See:
"logging": {
    "display_iter": 20,
    "eval_iter": 100,
    "write_iter": 100,
    "save_iter": 2000,
    "image_iter": 20000
  },

In the above case, for example, the eval script will be called at every 100th training step.
In order to allow the training script to run without writing your own eval code, you must comment out the following lines:

L261-L316
https://github.com/TensorVision/TensorVision/blob/master/tensorvision/train.py#L261-L316
L328-L330 https://github.com/TensorVision/TensorVision/blob/master/tensorvision/train.py#L328-L330


[Question] iOS8 support

hi,
i just recognized that the library wasn't updated since dec. 17th, 2014.
there wasn't made any effort in supporting iOS8. (function "- (NSString *)platformName" of PiwikTracker does not even contain the iPhone6/6+)
did you guys stop working on the project
would be sad as this is a really cool library.
cheers

Been busy, sorry.
Fixed.


By default show only current engines with rai list-engines

rai list-engines lists all the deleted engines, which is not super useful to the user. It would be great if by default it would show the currently usable engines.

Note: This issue has been migrated to https://relationalai.atlassian.net/browse/RAI-5297.
This link is only accessible to employees of RelationalAI.


ci: adds separate doc checks for markdown files and not triggering the build_and_test ci

Problem
Making any doc changes triggers the entire ci/cd for build and test.
Summary of changes
This is an attempt to start refactoring the ci for avoiding unnecessary builds for docs.
The change includes: ignoring *.md and docs/*.md files in PR for build_and_test and neon_extra_builds, and adding a doc_checks.yml ci to handle the docs separately.

Ignores *.md and docs folder in "build_and_test.yml" and "neon_extra_builds.yml".
Adds a new doc-checks for the markdown files that are present in the current pull request.
Uses rust dprint for *.md formatting, mlc for markdown link checking
Finally runs cargo doc to run any additional rust documentation checks.

Checklist before requesting a review

[x] I have performed a self-review of my code.
[x] If it is a core feature, I have added thorough tests.
[x] Do we need to implement analytics? if so did you add the relevant metrics to the dashboard?
[x] If this PR requires public announcement, mark it with /release-notes label and add several sentences in this section.

Checklist before merging

[ ] Do not forget to reformat commit message to not include the above checklist

Hi Neon Team,
Sorry, for the linter changes. It seems like my linter made a lot of unnecessary diffs. Do you guys have any specific linter configurations for it? I will format it according to it.
Other than that, the idea proposes a node ci pipeline. This can actually also be done in rust packages to achieve the same for the doc_checks.yml. Though it won't be any different to either use rust or node, I went with node, coz the installation seems faster for the ci pipeline and considering the low changes in any PR (since we will be only checking the doc files that are in the PR), the node packages seems to perform equally good. But let me know what you think of it, and if you would like the doc pipeline to use rust packages instead.

Just tell your editor to not format on save. Also needs a rebase.

Just tell your editor to not format on save. Also needs a rebase.

Cool. Will do the changes.

@bayandin Can you please add your thoughts and comments?

@bayandin Thanks for the review. Sorry, I was on a vacation.
Let's split this into 2 PRs as you suggested.


lagrange-tui: 1.17.5 -> 1.17.6

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for lagrange-tui is: A Beautiful Gemini Client
meta.homepage for lagrange-tui is: https://gmi.skyjake.fi/lagrange/
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.17.6 with grep in /nix/store/xmh5byr7d0vyq610z0jyd2a7jszs27vm-lagrange-1.17.6
found 1.17.6 in filename of file in /nix/store/xmh5byr7d0vyq610z0jyd2a7jszs27vm-lagrange-1.17.6

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
lagrange
lagrange-tui

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/xmh5byr7d0vyq610z0jyd2a7jszs27vm-lagrange-1.17.6 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A lagrange-tui https://github.com/r-ryantm/nixpkgs/archive/cbf15cbb9d95c51c1229ef0073d28002924a5336.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/cbf15cbb9d95c51c1229ef0073d28002924a5336#lagrange-tui

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/xmh5byr7d0vyq610z0jyd2a7jszs27vm-lagrange-1.17.6
ls -la /nix/store/xmh5byr7d0vyq610z0jyd2a7jszs27vm-lagrange-1.17.6/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

lagrange
lagrange-tui

Maintainer pings
cc @sikmir for testing.

Result of nixpkgs-review pr 281541 run on x86_64-darwin 1

2 packages built:

lagrange
lagrange-tui


fix (input):  ng-touched applied to ion-input on blur

Short description of what this resolves:
Solve the problem of ng-touched is being applied only on keyup
Ionic Version: 3.4.x
Fixes: #12102

Created PR #12812 which replaces this PR. I will close this one.


Unrecoverable exit status vs duplication found exit status

Currently, it is possible for a configuration error or file system (e.g. file not found) errors to have the same exit code as if the tool found offending matches. Is it possible for the tool to return a negative result to indicate an unrecoverable error and a positive result to indicate that the tool ran without error but found problems? This should make it easier for users integrating the tool to distinguish problems with an environment or script vs search results from the tool.

Can you point to examples where negative status codes are found? It's unclear to me how common that approach is, and whether or not it's considered bad style.
Perhaps I shouldn't overload the exit code to report the number of matches herehttps://github.com/danielstjules/jsinspect/blob/master/bin/jsinspect#L113
Instead, a better practice might be:
0 - success (no matches)
1 - any general error
3 - failing to load paths
4 - failing to run jsinspect
5 - failing due to matches being found


Lb/reactivate scw fetch ssh keys

scaleway-ubuntu-stable-bionic.list why was this only added to Stretch?


Hello World using C#

Display of "Hello World" using C#
What does the program do ?
Displays “Hello World”, depending on user’s choice
In what programming language it is written?
C# :)

Yay. That’s it

Awesome!🎉😁
Lindsey will be submitting hers, soon.
Thanks 🙂

Cool....sounds good....if there are any questions or any hiccups let me know. PS. I think the "fork" change needs to be something like chtompki/Hello-world as the exact string when you're trying to open pull requests against my repo.


pr-common gem no longer exists, so bundle install fails

This line
gem 'pr-common', git: 'https://github.com/pemberton-rank/common.git', tag: 'v0.3.0'

in the Gemfile fails since there is no pr-common gem anymore.

Have you found a solution?

@jesster2k10 I did not find one so I stopped using it and followed a different approach.


Create a documentation site for Windi CSS

Description 📖
This pull request adds a documentation site for Windi CSS.
The plan for now is to host it in GitHub Pages, though Netlify would be a great choice if we apply for their Open Source plan.
Future Work 🔮
I'm going to probably start fledging out different sections based on the content we have on the Wiki.
Let's make sure to chat with each other before starting on a section, to avoid rework 😃
Also, would be nice to crawl it using Algolia, need to check if there's a plan that would work for the windicss organization.
Screenshots 📷

Introduction

Excellent!

I can handle the Netlify and apply for the Open Source Plan. @voorjaar is that ok for me to host the site on my account first and then transfer it to the Neflify org (might need a few days for the approval)? If so, I can setup the site now.

Algolia

I can apply for it as well

That doesn't matter, do it.

https://github.com/windicss/windicss/blob/26d763afbdcbf43079642cb0f85939c9c87c7dc7/docs/.vitepress/theme/index.js This page miss a style maybe. @ElMassimo

@voorjaar Created a Discord server so that we can communicate more easily, please join here 😃

Think it's better for docs to be in a separate repo so it won't be messed up with the core's setup. Is that good for you @voorjaar? @ElMassimo and I can handle that. -> https://github.com/windicss/docs


FIX Unexpected message issue

Description
Additional class name '.no-change-track' was appended to search field in GridFieldFilterHeader to avoid check any changes that user does in search field.
Parent issue

[x] https://github.com/silverstripe/silverstripe-admin/issues/1313

This issue appears time to time and it depends on what kind of steps user did has done before. Probably, creating behat tests will be quite complicated and not 100% stable result.
But I'll add Unit tests.


fix(postgres) postgres requires a password now

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


Impulse_Drive: Updated apostrophes from â�� to character 39

Character Sheet for Impulse Drive.
Changes / Comments
Characters for apostrophes was causing display issues in Roll20 (using Chrome).
Original:  Iâ��m Rattled: Youâ��re shaken and shocked
Updated: I'm Rattled: You're shaken and shocked
Roll20 Requests
Comments are very helpful for reviewing the code changes. Please answer the relevant questions below in your comment.

[Y] Does the pull request title have the sheet name(s)? Include each sheet name.
[Y] Is this a bug fix?
[N] Does this add functional enhancements (new features or extending existing features) ?
[N] Does this add or change functional aesthetics (such as layout or color scheme) ?
[N] If changing or removing attributes, what steps have you taken, if any, to preserve player data ?
[N/A] If this is a new sheet, did you follow Building Character Sheets standards ?

If you do not know English. Please leave a comment in your native language.

Character Sheet Info Roll20 Internal Use only.


Timeseries data check failing - coersion issue

# Get data
data = et.data.get_data("colorado-flood")
os.chdir(os.path.join(et.io.HOME, 'earth-analytics'))

import matplotcheck.notebook as nb
import matplotcheck.timeseries as ts
import matplotcheck.raster as ra
# BEGIN SOLUTION
import os
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.dates import DateFormatter
import seaborn as sns
import numpy as np
import pandas as pd
import earthpy as et
import hydrofunctions as hf
import urllib

from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

# prettier plotting with seaborn
sns.set(font_scale=1.5)
sns.set_style("whitegrid")

# import file
f = "data/colorado-flood/discharge/06730200-discharge-daily-1986-2013.txt"
discharge = pd.read_csv(f,
                        skiprows=23,
                        header=[1, 2],
                        sep='\t',
                        parse_dates=[2])
# drop one level of index
discharge.columns = discharge.columns.droplevel(1)
# set the date column as the index
discharge = discharge.set_index(["datetime"])

monthly_max_all = discharge.resample("M").max()
monthly_max = monthly_max_all['1990':'2014']

fig, ax = plt.subplots(figsize=(10, 8))
ax.scatter(x=monthly_max.index,
           y=monthly_max["17663_00060_00003"],
           color="purple")
ax.set_title(
    "HW Plot 1: Stream Discharge - Monthly Max Value\n be sure to add x and y labels (not shown here)")

ax.set(xlabel="Date")

# END SOLUTION

### DO NOT REMOVE LINE BELOW ###
plot_1_ts = nb.convert_axes(plt, which_axes="current")

mpc_plot_1_ts = mts.TimeSeriesTester(plot_1_ts)
results = []

TEST
mts.TimeSeriesTester(plot_1_ts)
mpc_plot_1_ts.assert_xydata(xy_expected = precip.reset_index(),
                           xtime=True,
                           xcol="DATE",
                           ycol="HPCP")

Output error: i suspect this has something to do with NAN values but i am not sure
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-38-1b4d8c2d48dc> in <module>
      4                            xtime=True,
      5                            xcol="DATE",
----> 6                            ycol="HPCP")
      7
      8 #precip

~/Documents/github/0-python/matplotcheck/matplotcheck/base.py in assert_xydata(self, xy_expected, xcol, ycol, points_only, xtime, xlabels, tolerence, message)
    938             try:
    939                 np.testing.assert_array_max_ulp(
--> 940                     np.array(xy_data["x"]), np.array(xy_expected[xcol])
    941                 )
    942             except AssertionError:

~/miniconda3/envs/earth-analytics-python/lib/python3.7/site-packages/numpy/testing/_private/utils.py in assert_array_max_ulp(a, b, maxulp, dtype)
   1617     __tracebackhide__ = True  # Hide traceback for py.test
   1618     import numpy as np
-> 1619     ret = nulp_diff(a, b, dtype)
   1620     if not np.all(ret <= maxulp):
   1621         raise AssertionError("Arrays are not almost equal up to %g ULP" %

~/miniconda3/envs/earth-analytics-python/lib/python3.7/site-packages/numpy/testing/_private/utils.py in nulp_diff(x, y, dtype)
   1658         y = np.array(y)
   1659
-> 1660     t = np.common_type(x, y)
   1661     if np.iscomplexobj(x) or np.iscomplexobj(y):
   1662         raise NotImplementedError("_nulp not implemented for complex array")

<__array_function__ internals> in common_type(*args, **kwargs)

~/miniconda3/envs/earth-analytics-python/lib/python3.7/site-packages/numpy/lib/type_check.py in common_type(*arrays)
    719             p = array_precision.get(t, None)
    720             if p is None:
--> 721                 raise TypeError("can't get common type for non-numeric array")
    722         precision = max(precision, p)
    723     if is_complex:

TypeError: can't get common type for non-numeric array

i suspect this has to do with NA values. we need to clear those out

it looks like we have a fix with this in #185  !! yay! @ryla5068  will test this fix against homework 1. and if it works, he will update the tests there that don't work now... and then we can merge this PR!! Next step will be writing tests for the time series module!!

notes about this issue
""""
matplotlib stores datetime data in a very... unique way. It stores everything
as the number of days since some epoch. If you plot a dataframe containing
datetime.datetime objects or pandas.Timestamp objects, it will convert it days
since epoch. Sometimes matplotlib chooses Jan 1, 1970 as the epoch. Other
times it chooses Jan 1, 0001. If your data contains time data (i.e. higher
precision than just dates), matplotlib will store it as fractional days since
epoch, down to millisecond precision (or whatever precision your data is in).
For datetime data between these epochs, sometimes it will choose to store it as
negative days since 1970, other times it will store it as positive days since
the year 0001.
matplotlib DOES provide functions for converting data from this weird format
back to datetime.datetime or pandas.Timestamp. However, these functions
always assume that the 1970 epoch was used.
matplotlib's documentation claims that negative values for datetime data are
not supported, and therefore data representing dates before 1970 are not
supported. However, matplotlib will happily plot data before 1970 and its
conversion functions will happily accept negative numbers and try to convert
them.
As you might imagine, this presents a number of issues for comparing datetime
data. Most obviously, it gets unreliable when we have to guess which epoch
matplotlib chose to use. We have tried a few different methods here: different
ways of converting the data, converting using both epochs and comparing both,
etc. All of them were pretty messy.
Additionally, there is the issue of floating point truncation error. matplotlib
stores this data with numpy.float64, which has 52 mantissa bits, or about 15
base-10 digits of accuracy. Since the number of days since epoch is often in
the tens-of-thousands, this means that matplotlib may not be able to accurately
represent data with millisecond precision. (Basically, the datatype isn't able
to store such a huge number with such small precision.) The actual available
precision will depend on the dates being used and the epoch matplotlib chooses.
So to solve these problems, we have done two things:
First, we don't bother to try to convert from matplotlib's data ourselves.
Instead, we require that instructors provide the expected data in matplotlib's
format when using assert_xydata(). The easiest way for instructors to do this
is for them to plot the data themselves, create a matplotcheck object from it,
and then extract the data using get_xy(). One weird quirk is that matplotlib
seems to consistently choose the same epoch when plotting the same dataset.
(However, we are unable to predict which epoch this will be for a given
dataset, and matplotlib's conversion functions don't always choose the same
epoch as when the data is plotted.) This solves the problem of being able to
convert the data.
Second, we use numpy.testing.assert_array_max_ulp() for comparing datetime data
(or any other type of numeric data). This method of comparison ensures that
floating-point roundoff error does not cause the assertion to erroneously fail.
However, this cannot prevent truncation error, and therefore cannot prevent a
loss of precision. Practically, what this means is that assert_xydata() cannot
tell the difference between times with differences of tens of milliseconds. If
it can't tell the difference, it will err on the side of passing.
For more info about the issues we've faced with this, take a look at PR #185
"""

this will be closed via #219 which is almost done!!

@lwasser now that #219 is ready to be merged, this can be closed!

This can be closed, fixed in #274 @lwasser

closing!!


Add spacing after each bib item in seach results

hot-fix to the spacing issue at the end of each <li>  now at 4rems

@EdwinGuzman got it.


Provide presentation metadata in the JSON payload

In order to render Atlas data via the JSON API correctly (without having to fully understand the query language) presentation metadata (such as colors, area, number of axis, etc) would be very useful.

Initial version done in #298.


Added missing visitor implementations

Forgot about these with #1967 . Maybe some tests to ensure correlation are in order?
Installed EditorConfig and now it shows the entire file as deletions and additions. Don't know why.

Thanks for the PR @jonyadamit; I added a unit test to assert we have Visit() methods for all Aggregations :+1:

@russcam since #1967 was merged into master as well, I believe so should this one along with your test.  What's the deal with version 5 anyway?   Why skip 3 and 4, and how do you choose what gets merged in there and what's not?

Yep, I'll merge it into master today; I had plans to, was just getting later in the day here in Australia yesterday :smile:
The current plan is to number the next major version of NEST and Elasticsearch.Net as version 5.x to align with the next major version of Elasticsearch, the intention being that major versions of the client are compatible with major versions of Elasticsearch.

I was wondering why Elasticsearch itself is being versioned 5. Couldn't find an explanation anywhere and my best guess currently is that it's done to match the lucene version (?)..

Close  :smile:  It's to align versions across the Elastic stack

Elasticsearch
Logstash
Kibana
Beats

etc... and to reduce the burden in understanding the compatibility across products i.e. Elasticsearch 2.3.0 is compatible with Kibana 4.5.0 but not with Kibana x. Version 5 was decided as it is the next nearest major version across all products.
You can find out more details in the Elasticon video "What's Evolving in Elasticsearch" and also in the Opening Keynote :+1:
This PR has been cherry-picked for merge into master now.


Unable to load Gdk

Hi, Seems like Avalonia is throwing me the following error:
Unhandled Exception: System.AggregateException: Unable to load Gdk (Exception of type 'Avalonia.Platform.Interop.DynamicLibraryLoaderException' was thrown.) ---> Avalonia.Platform.Interop.DynamicLibraryLoaderException: Exception of type 'Avalonia.Platform.Interop.DynamicLibraryLoaderException' was thrown.
   at Avalonia.Shared.PlatformSupport.UnixLoader.LoadLibrary(String dll)
   at Avalonia.Gtk3.Interop.Resolver.LoadDll(IDynamicLibraryLoader loader, GtkDll dll)
   --- End of inner exception stack trace ---
   at Avalonia.Gtk3.Interop.Resolver.LoadDll(IDynamicLibraryLoader loader, GtkDll dll)
   at Avalonia.Gtk3.Interop.Resolver.<>c__DisplayClass8_0.<Resolve>b__1(GtkDll x)
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](TSource[] source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   at Avalonia.Gtk3.Interop.Resolver.Resolve(String basePath)
   at Avalonia.Gtk3.X11.XInitThreads()
   at Avalonia.Gtk3.Gtk3Platform.Initialize(Gtk3PlatformOptions options)
   at Avalonia.Gtk3AppBuilderExtensions.<>c__DisplayClass0_0`1.<UseGtk3>b__0()
   at Avalonia.Controls.AppBuilderBase`1.Setup()
   at Avalonia.Controls.AppBuilderBase`1.Start[TMainWindow](Func`1 dataContextProvider)

I supose that there is some libraries missing in my OS.
The OS is build with Buildroot an Arch is ARM.
Code published using the linux-arm. What *.so is expected the OS to have?

So, libgtk-3-0 and rebuild SkiaSharp for ARM. Thanks ;)


Is there any difference between diffusers unet_2d_condition and yours unet_2d_condition?

Thanks for your great job.
Is there any difference between diffusers unet_2d_condition and yours unet_2d_condition? Why need rewrite this model?

I have the same question. I have compared them, and the difference is slight.