make system more responsive by using the fadvise DONTNEED

while attic is running, file system access is slowed down for the rest of the system. that can be expected, but its effects could be mitigated if attic used posix_fadvise(POSIX_FADV_DONTNEED) on the files it is backuping. this tells the operating tystem that the "data will not be accessed in the near future" (man 2 posix_fadvise).
this should minimize the amount of disk cache contents dropped from ram to accomodate attic's reads, while not slowing down attic. (it won't read over the same file itself (will it?), but the kernel can't know that without being told, and might keep the files around just in case attic wants to look at them again).

interesting, I'll have a look. can you test a patch?

I found that this (likely) needs to be done in the C code, after the read that fills the chunker's buffer.
Waiting until before close might not be good as the input file can be large (like a VM image).
But: it doesn't seem to work somehow, when backing up a VM image, I see the cache (see "top") growing at 30MB/s or so. Here's the diff if someone wants to play with it. See also the TODO in the src:
https://paste.thinkmo.de/7wKFPjYn#fadvise.diff

fadvise DONTNEED basically tells the kernel that the data in the cache is not needed anymore, but the data is already in the cache at that point. If the data is actually read only once, I think the solution would be to bypass the kernel cache by opening the file with O_DIRECT.

https://github.com/ThomasWaldmann/attic/commits/o_direct I did some O_DIRECT changes there (read  the commit comments). Somehow I still see the cache growing rather quickly - I suspect it is due to writes (I only changed input file reads to use O_DIRECT).

See PR #279 for posix_fadvise based solution, it works (on linux, py >= 3.3). \o/
Note:
With py 3.2, the repo writes will still spoil the cache as 3.2 does not have os.posix_fadvise.
The input data reads won't spoil the cache though as that is implemented in C and independent of Python version.

Is POSIX_FADV_DONTNEED really what we want? Just because we know that we will not need a specific piece of data again it is not our business to tell the kernel to remove it from the cache. We have no way of knowing if the data was originally loaded by us or by another process and how actively used it is.
Has anyone checked what (if any) posix_fadvise settings are used by other backup solutions (In the default configuration)?

from http://linux.die.net/man/2/posix_fadvise :
"""
Programs can use posix_fadvise() to announce an intention to access file data in a specific pattern in the future, thus allowing the kernel to perform appropriate optimizations.
The advice applies to a (not necessarily existent) region starting at offset and extending for len bytes (or until the end of the file if len is 0) within the file referred to by fd. The advice is not binding; it merely constitutes an expectation on behalf of the application.
"""
The phrasing "programs can ... announce an intention" and "constitutes an expectation on behalf of the application" rather clearly means to me that the scope of this is "application", not "system-wide". So the advice of the application "dontneed" is correct in our case.
I didn't do specific performance measurements, but I watched how the cache behaved:

without fadvise, attic blows up the cache to occupy almost all memory and I'ld bet it kills a lot of cached content of other applications all the time as long as it is running.
with fadvise, the cache doesn't grow, impact is minimal. and speed is about the same. I'ld expect that if another application running in parallel would need some cache, it would get and keep it most of the time - even if the non-local behaviour you suspect would happen for a little while (== after we called fadvise for that application's files).

As far as the specification goes, I'd agree with your interpretation. The actual implementation is, however, what ultimately counts. From what I could tell, Linux currently responds to a DONTNEED fadvise by immediately invalidating the pages, regardless of their use by any other process. One could argue that this isn't in the spirit of the specification of posix_fadvise(), but that doesn't change the fact that such a behavior is undesirable for any backup program.
The issue with your observation of cache usage is that it you can't infer anything from it. Assume for a moment that DONTNEED does in fact evict cache pages: Would anything change in your observation?

Rsync does use fadvise.
This page seems relevant: http://insights.oetiker.ch/linux/fadvise.html
On Tue, Apr 14, 2015 at 7:17 AM, dnnr<EMAIL_ADDRESS>wrote:

As far as the specification goes, I'd agree with your interpretation. The
actual implementation is, however, what ultimately counts. From what I
could tell, Linux currently responds to a DONTNEED fadvise by immediately
invalidating the pages, regardless of their use by any other process. One
could argue that this isn't in the spirit of the specification of
posix_fadvise(), but that doesn't change the fact that such a behavior is
undesirable for any backup program.
The issue with your observation of cache usage is that it you can't infer
anything from it. Assume for a moment that DONTNEED does in fact evict
cache pages: Would anything change in your observation?
—
Reply to this email directly or view it on GitHub
https://github.com/jborg/attic/issues/252#issuecomment-92634918.

--
Dmitry Astapov

Rsync does use fadvise. This page seems relevant: http://insights.oetiker.ch/linux/fadvise.html

This page seems to talk about a patch for rsync. Has this been accepted upstream?

I believe that in the middle of that page it says "the patch has been
accepted upstream"
On Wed, Apr 15, 2015 at 10:02 PM, Jonas Borgström<EMAIL_ADDRESS>wrote:

Rsync does use fadvise. This page seems relevant:
http://insights.oetiker.ch/linux/fadvise.html
This page seems to talk about a patch for rsync. Has this been accepted
upstream?
—
Reply to this email directly or view it on GitHub
https://github.com/jborg/attic/issues/252#issuecomment-93568455.

--
Dmitry Astapov

Hmm. Maybe I spoke too soon. Looking at https://tobi.oetiker.ch/patches/,
there are patches for several rsync versions there, so maybe it remained a
patch...
On Wed, Apr 15, 2015 at 10:06 PM, Dmitry Astapov<EMAIL_ADDRESS>wrote:

I believe that in the middle of that page it says "the patch has been
accepted upstream"
On Wed, Apr 15, 2015 at 10:02 PM, Jonas Borgström <
<EMAIL_ADDRESS>wrote:

Rsync does use fadvise. This page seems relevant:
http://insights.oetiker.ch/linux/fadvise.html
This page seems to talk about a patch for rsync. Has this been
accepted upstream?
—
Reply to this email directly or view it on GitHub
https://github.com/jborg/attic/issues/252#issuecomment-93568455.

--
Dmitry Astapov

--
Dmitry Astapov

It is pretty trivial to test.  Download rsync and check.
(apt-get source rsync; grep -R fadvice rsync-3.1.0)
Nope, not in rsync here.
On Wed, Apr 15, 2015 at 5:08 PM, Dmitry Astapov<EMAIL_ADDRESS>wrote:

Hmm. Maybe I spoke too soon. Looking at https://tobi.oetiker.ch/patches/,
there are patches for several rsync versions there, so maybe it remained a
patch...
On Wed, Apr 15, 2015 at 10:06 PM, Dmitry Astapov<EMAIL_ADDRESS>wrote:

I believe that in the middle of that page it says "the patch has been
accepted upstream"
On Wed, Apr 15, 2015 at 10:02 PM, Jonas Borgström <
<EMAIL_ADDRESS>wrote:

Rsync does use fadvise. This page seems relevant:
http://insights.oetiker.ch/linux/fadvise.html
This page seems to talk about a patch for rsync. Has this been
accepted upstream?
--
Reply to this email directly or view it on GitHub
https://github.com/jborg/attic/issues/252#issuecomment-93568455.

--
Dmitry Astapov

--
Dmitry Astapov
--
Reply to this email directly or view it on GitHub
https://github.com/jborg/attic/issues/252#issuecomment-93569920.

you need to grep again for fadvise (with "s").

Heh, well that is embarrassing. However the typo was in the email, I had
searched for the right string. Still not there.
On Wed, Apr 15, 2015 at 6:44 PM, TW<EMAIL_ADDRESS>wrote:

you need to grep again for fadvise (with "s").
--
Reply to this email directly or view it on GitHub
https://github.com/jborg/attic/issues/252#issuecomment-93589552.

take a look at the bup side before jumping into that ship. i heard they discoverd performance problems where such policies would actually remove good contents from the cache that was unrelated to backups, seriously impacting performance on production servers.
it is quite possible that POSIX_FADV_DONTNEED actually removes good pages from the cache! this could be a serious problem for database servers for example.

@anarcat do you have some more specific info? fadvise acts on a open filehandle (that belongs to the specific file opened by the backup process for reading).
I could imagine that a simplistic fadvise kernel implementation kills the cached blocks of THAT file for all processes, but even that would be better than not using fadvise because of the lower cache flooding pressure of all the files that are not used by any other process and that do not end up / remain in the cache when using fadvise.

the #bup people were kind enough to send me a few refs:
https://www.percona.com/blog/2010/04/02/fadvise-may-be-not-what-you-expect/
https://groups.google.com/forum/#!topic/bup-list/7D9b2at3MMc
https://groups.google.com/forum/#!topic/bup-list/nQ24WCT1g4E
it's still subject to discussion on the bup mailing list, but please do be careful about this - i don't believe it is process-specific...
it's nice to optimise attic: but if it's done at the depends of the rest of the system that is being backed up, that doesn't sound like a good tradeoff. :)

apparently, the issue came up in this thread:
https://groups.google.com/d/msg/bup-list/TXfSAgD9-ZM/saofDu1CdxcJ
where bup would trash the sqlite cache of a big file, which had to be reloaded in memory, which was basically breaking the site...

@anarcat I looked through the first 3 links. Lots of guessing and gut feelings (I can do that, too and I even posted reasons why I think it is good, while they didn't really reason about why they think it's worse than without).
I didn't find anything in the google groups link of previous post about fadvise, did you post wrong url?

the last link was where they discovered the issue apparently.
for me it makes sense that trashing the cache will have a performance impact. when you load a page in the kernel VM and tell the kernel to drop it when you close the FD, it will drop the page - it seems logical to me. the fact that another process was using it at the same time probably doesn't change anything.
but that's just me.

See my April 14 comment.

It shouldn't be too hard to test this experimentally.  E.g., on a system with 8GB RAM, create eight 1GB files named file1 through file8 as well as a 4GB file named big.  Then do:
sync; echo 3 > /proc/sys/vm/drop_caches; sync
time dd if=big of=/dev/null  [should be slow]
time dd if=big of=/dev/null  [should be fast]
use attic to backup file1 file2 ... file8
time dd if=big of=/dev/null  [might be slow]

Then do exactly the same thing, but using a version of attic patched to use fadvise.  Hopefully the last line would remain fast.
To address the concerns about losing data that you want in the cache, run the test a third time, this time including the file big in the attic backup (listed first?).  Hopefully the last line would remain fast.
For the record, my instinct is with TW here.  Why would the kernel provide this feature if it could trash the cache used by other processes?  But the only way to know is to test.  And from what I've read, it may depend on kernel version, so multiple testers is probably a good idea.  Maybe someone can provide a program that does the analog of cat > /dev/null with a flag indicating whether to use fadvise, to make it easier to test this cleanly?

This article provides a very good explanation of the complexity of using
fadvise on Linux:
http://insights.oetiker.ch/linux/fadvise.html
It is indeed the case that FADV_DONTNEED will purge the file from the cache
immediately if it is not dirty (and will do nothing if it is dirty).
I agree that this behavior isn't very helpful, but that is how it is.
It seems to me that the mincore hack in the article is not worth using.
On Mon, Jun 1, 2015 at 4:05 PM, Dan Christensen<EMAIL_ADDRESS>wrote:

It shouldn't be too hard to test this experimentally. E.g., on a system
with 8GB RAM, create eight 1GB files named file1 through file8 as well as
a 4GB file named big. Then do:
sync; echo 3 > /proc/sys/vm/drop_caches; sync
time dd if=big of=/dev/null  [should be slow]
time dd if=big of=/dev/null  [should be fast]
use attic to backup file1 file2 ... file8
time dd if=big of=/dev/null  [might be slow]
Then do exactly the same thing, but using a version of attic patched to
use fadvise. Hopefully the last line would remain fast.
To address the concerns about losing data that you want in the cache,
run the test a third time, this time including the file big in the attic
backup (listed first?). Hopefully the last line would remain fast.
For the record, my instinct is with TW here. Why would the kernel provide
this feature if it could trash the cache used by other processes? But the
only way to know is to test. And from what I've read, it may depend on
kernel version, so multiple testers is probably a good idea. Maybe someone
can provide a program that does the analog of cat > /dev/null with a flag
indicating whether to use fadvise, to make it easier to test this cleanly?
—
Reply to this email directly or view it on GitHub
https://github.com/jborg/attic/issues/252#issuecomment-107742409.

@jdchristensen that test just shows if fadvise dontneed removes the file from cache (or not). while that is a bit interesting, more interesting is comparing the effect from permanently flooding the cache with a lot of data only needed once (attic without fadvise) vs. avoiding to flood the cache (attic with fadvise).
@jbms I've read that article back then (but didn't want to put a lot of [C] code, like shown there) for a maybe negligible effect.

@ThomasWaldmann I proposed running attic three times.  The difference between run 1 and run 2 would exactly show that not flooding the cache gives an improvement for other applications (dd, in this case).  The difference between run 1 and run 3 would show whether fadvise removes a file from the cache that was already there.  Both bits of information seem important for this discussion.
If the information at
http://insights.oetiker.ch/linux/fadvise.html
is correct, it does seem like the mincore hack would be good to use.

:-1:  We shouldn't DONTNEED the user's files.  bup reverted this to fix a reported bug.  We still haven't gathered any positive proof, and Linux was fixed in 2011:

https://lkml.org/lkml/2011/2/21/56

(found via un-merged patch https://lwn.net/Articles/480930/)

https://github.com/torvalds/linux/commit/278df9f451dc71dcd002246be48358a473504ad0

It's possible Linux can still be improved - as suggested by the un-merged patch which implements NOREUSE as a gentler alternative.  (Or that it's regressed :).
Everyone has this problem.  If we don't have the resources to test this properly (or implement the mincore hack), that means we just don't have the resources to do this.
If we had any reason to be worried in the first place, we could keep the DONTNEED on attic files only.  It shouldn't hurt anyone else; it'll hurt us but probably not where we care.  It could account for about half the cache buildup (when we're not working with virtual machine image files or similar).

Sorry, but I can't follow what you wanted to say.
But I am doing the fadvise DONTNEED thing in borg (after practically seeing beneficial effects), so comparing attic vs. borg (or borg with/without that call) should be easy.
I'll change things / accept pull requests for borg as soon as there is practical proof that change is needed / beneficial.

@ThomasWaldmann Since you have both attic and borg with fadvise handy, you could run the three tests I proposed and see if there is a problem.

@jdchristensen here are the results, completely as expected for me.
http://paste.thinkmo.de/rNXe3Mmm#fadv_test.txt
The problem is just that they are not that helpful in deciding whether fadvise DONTNEED is helpful or not.
With fadvise DONTNEED, they show that the cache isn't killed by the backup process (as expected).
Without fadvise DONTNEED, they show that backing up some stuff kills the cache for everything else.
With fadvise DONTNEED, it kills files from the cache which are backed up (as expected, due to the simple implementation in linux).
Without fadvise DONTNEED, it does not kill files from the cache which are backed up (also as expected).
So one might think one is as good as the other, but I still think fadvise DONTNEED is way better as it avoids that the cache is flooded with useless data (potentially for hours) which is much more benefit than killing the currently backed up file from the cache (in that moment, it can be cached again a second later) is harmful for the case when that file is in use.
The tests you proposed can't show that, though (and any simple test might be a bit unrealistic compared to real system behaviour).

hmm... well, the problem described earlier is specifically with stuff like mysql databases that get totally flushed out of the cache, having a major performance impact on the whole system. from what i understand, that performance problem is confirmed by those tests?
since this is a corner case (and linux doesn't deal well with this (yet)), maybe we should make DONTNEED optional somehow?

For what it's worth, I've found rsync also causes linux to fragment memory like no tomorrow creating cache entries for tiny files and then releasing some (but not all) of them over the next few hours. If you're not going to use the data again right away, it makes sense to avoid that.
YMMV, but you might check system memory usage - a significant free proportion and lots of small blocks in /proc/buddyinfo that can't be compacted with compact_memory but are when you drop_caches are a sign of fragmentation wastage. Note however that fragmentation can take time to build up - days in some cases, depending on how actively the system is used.

fadvise SEQUENTIAL is supposed to help as well, since about 2009.  Unfortunately not - at least not as well as DONTNEED.  Negative results published for any other project looking at this :).
I guess the DB case was a worst-case problem because there's suddenly a lot that needs reading back, and the reads will be very random (lots of disk seeks).  Btw with DONTNEED we're purging the entire file after reading each chunk - that "live database" case is really going to hate us.  (Not that I think it was a good case; for a database he should really have been using LVM snapshots).
The internet says you can hack O_DIRECT reads from pure python (using mmap and readinto).  I think the real annoyance would be needing manual buffering and a readahead thread.  If it wasn't for the threading I'd be pretty eager to code it.
mincore() looks pretty ugly especially with the mmap().  Maybe the performance side isn't too bad, if you avoid actually touching any of the pages (and you can batch the calls up a bit).

@ThomasWaldmann Thanks for doing the experiment!  Now we know for sure how linux handles DONTNEED (at least for your kernel version).  It's really unfortunate that DONTNEED kills things that were already in the cache, but that's life.
I suspect that for most uses, using DONTNEED will be much better.  But I suspect that some use cases might suffer, so providing a command line option to disable it seems reasonable (as @anarcat  suggested).

@sourcejedi i also tried using O_DIRECT, but that was a total pain.

@ThomasWaldmann, @jdchristensen:  My results, running it (Borg, 8cf0ead693) on a HDD via USB3, Intel Core M 5Y10 using Fedora 22: https://gist.github.com/pguth/481980bd67993984eda4

Testing this way the newest code ("call fadvise DONTNEED for the byterange we actually have read") I got these results (before/after): https://gist.github.com/pguth/4b436cf15c58549cbc4d/revisions

Right, so my concern in #158 wasn't an issue (<1%), and it was tested on a HDD over USB (so low-speed io).  Another entry for the journal of negative results, good work everyone :).
I'm surprised.  I guess this HDD might actually do enough read-ahead internally, or the kernel code we're using doesn't work how I thought.  (I still like not hammering DONTNEED multiple times if someone else is reading the file too :).

@sourcejedi yep, just had the same idea. :)

I think, the "cleaning cache of db files when using DONTNEED problem" is because people are doing things wrong way. Why do they backup a working database? If you need a consistent backup, please either:

stop the db and perform backup
OR
perform DUMP and backup that one

You don't want to backup the live&working db because of possible inconsistencies. If you use the right way (dump or db halt), there will be no problems with DONTNEED.

@neutrinus very true! I already thought the same, but did not document it yet.


Opening scratchpad in new workspace crashes Hyprland

Steps to reproduce:

Open Kitty in workspace 1.
Move it to the scratchpad.
Open and close the scratchpad to verify that Kitty is there.
Switch to workspace 2.
Open the scratchpad.

Expected behavior: The scratchpad opens with a Kitty window open.
Noted behavior: Hyprland crashes entirely.
I'll get a debug log in a second.

❯ cat /tmp/hypr/?_1657210584/hyprlandd.log
[LOG] Instance Signature: ?_1657210584
[LOG] ===== SYSTEM INFO: =====
[LOG] System name: Linux
[LOG] Node name: nixos
[LOG] Release: 5.15.52
[LOG] Version: #1-NixOS SMP Sat Jul 2 14:41:19 UTC 2022
[LOG] os-release:
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
BUILD_ID="22.11pre389925.a5c867d9fe9"
DOCUMENTATION_URL="https://nixos.org/learn.html"
HOME_URL="https://nixos.org/"
ID=nixos
LOGO="nix-snowflake"
NAME=NixOS
PRETTY_NAME="NixOS 22.11 (Raccoon)"
SUPPORT_URL="https://nixos.org/community.html"
VERSION="22.11 (Raccoon)"
VERSION_CODENAME=raccoon
VERSION_ID="22.11"

[LOG] ========================

[INFO] If you are crashing, or encounter any bugs, please consult https://github.com/hyprwm/Hyprland/wiki/Crashing-and-bugs

[LOG] Hyprland init finished.
[LOG] Creating the CHyprError!
[LOG] Creating the KeybindManager!
[LOG] Creating the AnimationManager!
[LOG] Created a bezier curve, baked 200 points, mem usage: 3.20kB, time to bake: 16.99µs. Estimated average calc time: 0.08µs.
[LOG] Creating the ConfigManager!
[LOG] Creating the ThreadManager!
[LOG] Creating the InputManager!
[LOG] Creating the CHyprOpenGLImpl!
[LOG] Creating the Hypr OpenGL Renderer!
[LOG] Reloading the config!
[LOG] Using: OpenGL ES 3.2 Mesa 22.1.1
[LOG] Vendor: AMD
[LOG] Renderer: AMD Radeon RX 6600 XT (dimgrey_cavefish, LLVM 13.0.1, DRM 3.42, 5.15.52)
[LOG] Supported extensions size: 147
[LOG] Created a bezier curve, baked 200 points, mem usage: 3.20kB, time to bake: 10.49µs. Estimated average calc time: 0.09µs.
[WARN] Config reading error. (No file? Attempting to generate, backing up old one if exists)
[LOG] Hypr socket started at /tmp/hypr/?_1657210584/.socket.sock
[LOG] Shaders initialized successfully.
[LOG] Creating the HyprRenderer!
[LOG] Creating the XWaylandManager!
[LOG] Registered signal for owner 1eb1fe0: 1eb2018 -> 4e83c0 (owner: XWayland Manager)
[LOG] Registered signal for owner 1eb1fe0: 1eb2028 -> 4e83a0 (owner: XWayland Manager)
[LOG] CHyprXWaylandManager started on display :1
[LOG] Creating the LayoutManager!
[LOG] Creating the EventManager!
[LOG] Creating the HyprDebugOverlay!
[LOG] Registered signal for owner 152b450: 152b478 -> 4e8310 (owner: Backend)
[LOG] Registered signal for owner 1dc6d50: 1dc6da0 -> 4e82d0 (owner: XDG Shell)
[LOG] Hypr socket 2 started at /tmp/hypr/?_1657210584/.socket2.sock
[LOG] Registered signal for owner 1dc6e20: 1dc6e38 -> 4e82b0 (owner: WLRCursor)
[LOG] Registered signal for owner 1dc6e20: 1dc6e48 -> 4e8290 (owner: WLRCursor)
[LOG] Registered signal for owner 1dc6e20: 1dc6e58 -> 4e8270 (owner: WLRCursor)
[LOG] Registered signal for owner 1dc6e20: 1dc6e68 -> 4e8250 (owner: WLRCursor)
[LOG] Registered signal for owner 1dc6e20: 1dc6e78 -> 4e8230 (owner: WLRCursor)
[LOG] Registered signal for owner 1dc6e20: 1dc6e88 -> 4e8050 (owner: WLRCursor)
[LOG] Registered signal for owner 1dc6e20: 1dc6e98 -> 4e8010 (owner: WLRCursor)
[LOG] Registered signal for owner 1dc6e20: 1dc6ea8 -> 4e8030 (owner: WLRCursor)
[LOG] Registered signal for owner 152b450: 152b468 -> 4e8210 (owner: Backend)
[LOG] Registered signal for owner 1520ba8: 1dd9028 -> 4e81b0 (owner: Seat)
[LOG] Registered signal for owner 1520ba8: 1dd9038 -> 4e8190 (owner: Seat)
[LOG] Registered signal for owner 1520ba8: 1dd9078 -> 4e8130 (owner: Seat)
[LOG] Registered signal for owner 1520ba8: 1dd9088 -> 4e8110 (owner: Seat)
[LOG] Registered signal for owner 1dd9270: 1dd9290 -> 4e82f0 (owner: LayerShell)
[LOG] Registered signal for owner 1dc6bb0: 1dc6bd0 -> 4e8330 (owner: OutputLayout)
[LOG] Registered signal for owner 1dd9580: 1dd95b8 -> 4e8170 (owner: OutputMgr)
[LOG] Registered signal for owner 1dd9580: 1dd95c8 -> 4e8150 (owner: OutputMgr)
[LOG] Registered signal for owner 1dc7320: 1dc7350 -> 4e80f0 (owner: InhibitMgr)
[LOG] Registered signal for owner 1dc7320: 1dc7360 -> 4e80d0 (owner: InhibitMgr)
[LOG] Registered signal for owner 1dc7560: 1dc7578 -> 4e81d0 (owner: PointerConstraints)
[LOG] Registered signal for owner 1dd93e0: 1dd9410 -> 4e80b0 (owner: XDGDecoMgr)
[LOG] Registered signal for owner 1dc7760: 1dc7790 -> 4e81f0 (owner: VirtPtrMgr)
[LOG] Registered signal for owner 16a3990: 16a39a0 -> 4e8090 (owner: WLRRenderer)
[LOG] Registered signal for owner 1dc79c0: 1dc79f0 -> 4e8070 (owner: WLRIdleInhibitMgr)
[LOG] Running on WAYLAND_DISPLAY: wayland-0
[LOG] Attached a keyboard with name Power Button
[LOG] Registered signal for owner 1f51c60: 1e66998 -> 1f51c68 (owner: Keyboard)
[LOG] Registered signal for owner 1f51c60: 1e66988 -> 1f51cd0 (owner: Keyboard)
[LOG] Registered signal for owner 1f51c60: 1e66868 -> 1f51d38 (owner: Keyboard)
[LOG] Attempting to create a keymap for layout  with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to  and variant to  for keyboard "Power Button"
[LOG] New keyboard created, pointers Hypr: 1f51c60 and WLR: 1e66848
[LOG] Attached a keyboard with name Power Button
[LOG] Registered signal for owner 1f56550: 1eebfe8 -> 1f56558 (owner: Keyboard)
[LOG] Registered signal for owner 1f56550: 1eebfd8 -> 1f565c0 (owner: Keyboard)
[LOG] Registered signal for owner 1f56550: 1eebeb8 -> 1f56628 (owner: Keyboard)
[LOG] Attempting to create a keymap for layout  with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to  and variant to  for keyboard "Power Button"
[LOG] New keyboard created, pointers Hypr: 1f56550 and WLR: 1eebe98
[LOG] Attached a keyboard with name SteelSeries  SteelSeries Arctis 7 Consumer Control
[LOG] Registered signal for owner 1e71f50: 1eedd58 -> 1e71f58 (owner: Keyboard)
[LOG] Registered signal for owner 1e71f50: 1eedd48 -> 1e71fc0 (owner: Keyboard)
[LOG] Registered signal for owner 1e71f50: 1eedc28 -> 1e72028 (owner: Keyboard)
[LOG] Attempting to create a keymap for layout  with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to  and variant to  for keyboard "SteelSeries  SteelSeries Arctis 7 Consumer Control"
[LOG] New keyboard created, pointers Hypr: 1e71f50 and WLR: 1eedc08
[LOG] Attached a mouse with name Razer Razer Basilisk X HyperSpeed
[LOG] Registered signal for owner 1f49090: 1fd8290 -> 1f49148 (owner: Mouse)
[LOG] New mouse created, pointer WLR: 1fd8270
[LOG] Attached a keyboard with name Razer Razer Basilisk X HyperSpeed Keyboard
[LOG] Registered signal for owner 1eee710: 1fd8a08 -> 1eee718 (owner: Keyboard)
[LOG] Registered signal for owner 1eee710: 1fd89f8 -> 1eee780 (owner: Keyboard)
[LOG] Registered signal for owner 1eee710: 1fd88d8 -> 1eee7e8 (owner: Keyboard)
[LOG] Attempting to create a keymap for layout  with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to  and variant to  for keyboard "Razer Razer Basilisk X HyperSpeed Keyboard"
[LOG] New keyboard created, pointers Hypr: 1eee710 and WLR: 1fd88b8
[LOG] Attached a mouse with name Razer Razer Basilisk X HyperSpeed Keyboard
[LOG] Registered signal for owner 1f29f20: 1fd8a60 -> 1f29fd8 (owner: Mouse)
[LOG] New mouse created, pointer WLR: 1fd8a40
[LOG] Attached a keyboard with name Razer Razer Basilisk X HyperSpeed
[LOG] Registered signal for owner 1ff3560: 2012808 -> 1ff3568 (owner: Keyboard)
[LOG] Registered signal for owner 1ff3560: 20127f8 -> 1ff35d0 (owner: Keyboard)
[LOG] Registered signal for owner 1ff3560: 20126d8 -> 1ff3638 (owner: Keyboard)
[LOG] Attempting to create a keymap for layout  with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to  and variant to  for keyboard "Razer Razer Basilisk X HyperSpeed"
[LOG] New keyboard created, pointers Hypr: 1ff3560 and WLR: 20126b8
[LOG] Attached a keyboard with name Ducky Ducky One2 SF RGB
[LOG] Registered signal for owner 1ffdd40: 204bf78 -> 1ffdd48 (owner: Keyboard)
[LOG] Registered signal for owner 1ffdd40: 204bf68 -> 1ffddb0 (owner: Keyboard)
[LOG] Registered signal for owner 1ffdd40: 204be48 -> 1ffde18 (owner: Keyboard)
[LOG] Attempting to create a keymap for layout  with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to  and variant to  for keyboard "Ducky Ducky One2 SF RGB"
[LOG] New keyboard created, pointers Hypr: 1ffdd40 and WLR: 204be28
[LOG] Attached a mouse with name Ducky Ducky One2 SF RGB
[LOG] Registered signal for owner 1f0b290: 20853b0 -> 1f0b348 (owner: Mouse)
[LOG] New mouse created, pointer WLR: 2085390
[LOG] Attached a keyboard with name Ducky Ducky One2 SF RGB
[LOG] Registered signal for owner 2037b70: 20858b8 -> 2037b78 (owner: Keyboard)
[LOG] Registered signal for owner 2037b70: 20858a8 -> 2037be0 (owner: Keyboard)
[LOG] Registered signal for owner 2037b70: 2085788 -> 2037c48 (owner: Keyboard)
[LOG] Attempting to create a keymap for layout  with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to  and variant to  for keyboard "Ducky Ducky One2 SF RGB"
[LOG] New keyboard created, pointers Hypr: 2037b70 and WLR: 2085768
[LOG] Attached a keyboard with name Ducky Ducky One2 SF RGB
[LOG] Registered signal for owner 2072260: 20bf008 -> 2072268 (owner: Keyboard)
[LOG] Registered signal for owner 2072260: 20beff8 -> 20722d0 (owner: Keyboard)
[LOG] Registered signal for owner 2072260: 20beed8 -> 2072338 (owner: Keyboard)
[LOG] Attempting to create a keymap for layout  with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to  and variant to  for keyboard "Ducky Ducky One2 SF RGB"
[LOG] New keyboard created, pointers Hypr: 2072260 and WLR: 20beeb8
[WARN] No rule found for DP-3, trying to use the first.
[LOG] Registered signal for owner 1e0f710: 20f87f0 -> 1e0f838 (owner: )
[LOG] Registered signal for owner 1e0f710: 20f8890 -> 1e0f8a0 (owner: )
[LOG] Applying monitor rule for DP-3
[LOG] Monitor DP-3: requested<EMAIL_ADDRESS>found available mode: 1920x1080@60000mHz, applying.
[LOG] Monitor DP-3 -> destroyed all render data
[LOG] Monitor DP-3 layers arranged: reserved: 0.000000 0.000000 0.000000 0.000000
[LOG] Added new monitor with name DP-3 at 0,0 with size 1920x1080, pointer 20f86b0
[LOG] New monitor: WORKSPACEID 1, exists: 0
[LOG] Hyprland is ready, running the event loop!
[LOG] Framebuffer created, status 36053
[LOG] Framebuffer created, status 36053
[LOG] Framebuffer created, status 36053
[LOG] Allocated texture for BGTex
[LOG] Keybind triggered, calling dispatcher (64, 81)
[LOG] Executing WAYLAND_DISPLAY=wayland-0 DISPLAY=:1 kitty
[LOG] Process Created with pid 8216
[LOG] New XDG Surface created. (class: kitty)
[LOG] Registered signal for owner 22cfae0: 22cf718 -> 22cfb48 (owner: XDG Window)
[LOG] Registered signal for owner 22cfae0: 22cf728 -> 22cfbb0 (owner: XDG Window)
[LOG] Registered signal for owner 22cfae0: 22cf6e8 -> 22cfc18 (owner: XDG Window)
[LOG] Searching for matching rules for kitty (title: kitty)
[LOG] OPENINGON: 2182da0, Workspace: 1, Monitor: 0
[LOG] Set keyboard focus to surface 22c8d90, with window name: kitty
[LOG] Window got assigned a surfaceTreeNode 0
[LOG] Registered signal for owner 22cfae0: 22c9050 -> 22cfae0 (owner: XDG Window Late)
[LOG] Registered signal for owner 22cfae0: 22cf8b0 -> 22cfc80 (owner: XDG Window Late)
[LOG] Registered signal for owner 22cfae0: 22cf850 -> 22cfce8 (owner: XDG Window Late)
[LOG] Registered signal for owner 22cfae0: 22cf708 -> 22cfd50 (owner: XDG Window Late)
[LOG] Registered signal for owner 21885e0: 22c9060 -> 21885e8 (owner: SurfaceTreeNode)
[LOG] Registered signal for owner 21885e0: 22c9050 -> 2188650 (owner: SurfaceTreeNode)
[LOG] Registered signal for owner 21885e0: 22c9070 -> 21886b8 (owner: SurfaceTreeNode)
[LOG] Creating a surfaceTree Root! (pWindow: 22cfae0)
[LOG] Map request dispatched, monitor DP-3, xywh: 22.000000 22.000000 1876.000000 1036.000000
[LOG] Window 22cfae0 set title to zsh
[LOG] Reloading the config!
[LOG] Created a bezier curve, baked 200 points, mem usage: 3.20kB, time to bake: 13.52µs. Estimated average calc time: 0.10µs.
[LOG] Config executing WAYLAND_DISPLAY=wayland-0 DISPLAY=:1 waybar &
[LOG] Process created with pid 8290
[LOG] Attempting to create a keymap for layout us with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to us and variant to  for keyboard "Power Button"
[LOG] Attempting to create a keymap for layout us with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to us and variant to  for keyboard "Power Button"
[LOG] Attempting to create a keymap for layout us with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to us and variant to  for keyboard "SteelSeries  SteelSeries Arctis 7 Consumer Control"
[LOG] Attempting to create a keymap for layout us with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to us and variant to  for keyboard "Razer Razer Basilisk X HyperSpeed Keyboard"
[LOG] Attempting to create a keymap for layout us with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to us and variant to  for keyboard "Razer Razer Basilisk X HyperSpeed"
[LOG] Attempting to create a keymap for layout us with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to us and variant to  for keyboard "Ducky Ducky One2 SF RGB"
[LOG] Attempting to create a keymap for layout us with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to us and variant to  for keyboard "Ducky Ducky One2 SF RGB"
[LOG] Attempting to create a keymap for layout us with variant  (rules: , model: , options: )
[LOG] Set the keyboard layout to us and variant to  for keyboard "Ducky Ducky One2 SF RGB"
[LOG] Applying monitor rule for DP-3
[LOG] Monitor DP-3: requested<EMAIL_ADDRESS>found available mode: 2560x1440@143972mHz, applying.
[LOG] Monitor DP-3 -> destroyed all render data
[LOG] Monitor DP-3 layers arranged: reserved: 0.000000 0.000000 0.000000 0.000000
[LOG] Framebuffer created, status 36053
[LOG] Framebuffer created, status 36053
[LOG] Framebuffer created, status 36053
[LOG] Allocated texture for BGTex
[LOG] Registered signal for owner 1f5fee0: 1f9a1e0 -> 1f60030 (owner: layerSurface)
[LOG] Registered signal for owner 1f5fee0: 1f9a200 -> 1f5fef8 (owner: layerSurface)
[LOG] Registered signal for owner 1f5fee0: 1f52088 -> 1f5ff60 (owner: layerSurface)
[LOG] Registered signal for owner 1f5fee0: 1f52098 -> 1f5ffc8 (owner: layerSurface)
[LOG] Registered signal for owner 1f5fee0: 1f520a8 -> 1f60098 (owner: layerSurface)
[LOG] LayerSurface 1f51fa0 (namespace waybar layer 2) created on monitor DP-3
[LOG] LayerSurface 1eb4ba0 arranged: x: 5 y: 5 w: 2550 h: 28 with margins: t: 5 l: 5 r: 5 b: 0
[LOG] Monitor DP-3 layers arranged: reserved: 0.000000 33.000000 0.000000 0.000000
[LOG] LayerSurface 1f51fa0 mapped
[LOG] LayerSurface 1eb4ba0 arranged: x: 5 y: 5 w: 2550 h: 28 with margins: t: 5 l: 5 r: 5 b: 0
[LOG] Monitor DP-3 layers arranged: reserved: 0.000000 33.000000 0.000000 0.000000
[LOG] Keybind triggered, calling dispatcher (64, 50)
[LOG] Changed to workspace 2
[LOG] Keybind triggered, calling dispatcher (64, 49)
[LOG] Changed to workspace 1
[LOG] Destroying workspace ID 2
[LOG] Keybind triggered, calling dispatcher (64, 50)
[LOG] Changed to workspace 2
[LOG] Keybind triggered, calling dispatcher (64, 49)
[LOG] Changed to workspace 1
[LOG] Destroying workspace ID 2
[LOG] Keybind triggered, calling dispatcher (64, 48)
[LOG] Can't open empty special workspace!
[LOG] Keybind triggered, calling dispatcher (64, 49)
[LOG] Changed to workspace 1
[LOG] Keybind triggered, calling dispatcher (64, 49)
[LOG] Changed to workspace 1
[LOG] Keybind triggered, calling dispatcher (64, 50)
[LOG] Changed to workspace 2
[LOG] Keybind triggered, calling dispatcher (64, 49)
[LOG] Changed to workspace 1
[LOG] Destroying workspace ID 2
[LOG] Keybind triggered, calling dispatcher (64, 67)
[LOG] Window 22cfae0 unmapped (class kitty)
[LOG] Unregistered late callbacks XDG: 22cfae0 22cfc80 22cfce8 22cfd50
[LOG] Callback d5738a30 -> 22cfae0, XDG Window Late removed.
[LOG] Callback d5738a30 -> 22cfae0, XDG Window Late removed.
[LOG] Callback d5738a30 -> 22cfae0, XDG Window Late removed.
[LOG] Callback d5738a30 -> 22cfae0, XDG Window Late removed.
[LOG] Framebuffer created, status 36053
[LOG] Destroying the SubSurface tree of unmapped window 22cfae0
[LOG] Callback d57389c0 -> 21885e0, SurfaceTreeNode removed.
[LOG] Callback d57389c0 -> 21885e0, SurfaceTreeNode removed.
[LOG] Callback d57389c0 -> 21885e0, SurfaceTreeNode removed.
[LOG] SurfaceTree Node removed
[ERR] Error in getAppIDClass: basic_string: construction from null is not valid
[LOG] Window 22cfae0 destroyed, queueing. (class )
[LOG] Callback d5738ab0 -> 22cfae0, XDG Window removed.
[LOG] Callback d5738ab0 -> 22cfae0, XDG Window removed.
[LOG] Callback d5738ab0 -> 22cfae0, XDG Window removed.
[LOG] Keybind triggered, calling dispatcher (64, 50)
[LOG] Changed to workspace 2
[LOG] Destroying workspace ID 1
[LOG] Cleanup: destroyed a window
[LOG] Keybind triggered, calling dispatcher (64, 49)
[LOG] Changed to workspace 1
[LOG] Destroying workspace ID 2
[LOG] Keybind triggered, calling dispatcher (64, 52)
[LOG] Changed to workspace 4
[LOG] Destroying workspace ID 1
[LOG] Keybind triggered, calling dispatcher (64, 50)
[LOG] Changed to workspace 2
[LOG] Destroying workspace ID 4
[LOG] Keybind triggered, calling dispatcher (64, 49)
[LOG] Changed to workspace 1
[LOG] Destroying workspace ID 2
[LOG] Keybind triggered, calling dispatcher (64, 65293)
[LOG] Executing WAYLAND_DISPLAY=wayland-0 DISPLAY=:1 kitty
[LOG] Process Created with pid 8336
[LOG] New XDG Surface created. (class: kitty)
[LOG] Registered signal for owner 2002fa0: 203ff68 -> 2003008 (owner: XDG Window)
[LOG] Registered signal for owner 2002fa0: 203ff78 -> 2003070 (owner: XDG Window)
[LOG] Registered signal for owner 2002fa0: 203ff38 -> 20030d8 (owner: XDG Window)
[LOG] Searching for matching rules for kitty (title: kitty)
[LOG] OPENINGON: 1f547a0, Workspace: 1, Monitor: 0
[LOG] Set keyboard focus to surface 20377d0, with window name: kitty
[LOG] Window got assigned a surfaceTreeNode 0
[LOG] Registered signal for owner 2002fa0: 2037a90 -> 2002fa0 (owner: XDG Window Late)
[LOG] Registered signal for owner 2002fa0: 1e81d00 -> 2003140 (owner: XDG Window Late)
[LOG] Registered signal for owner 2002fa0: 1e81ca0 -> 20031a8 (owner: XDG Window Late)
[LOG] Registered signal for owner 2002fa0: 203ff58 -> 2003210 (owner: XDG Window Late)
[LOG] Registered signal for owner 22dd880: 2037aa0 -> 22dd888 (owner: SurfaceTreeNode)
[LOG] Registered signal for owner 22dd880: 2037a90 -> 22dd8f0 (owner: SurfaceTreeNode)
[LOG] Registered signal for owner 22dd880: 2037ab0 -> 22dd958 (owner: SurfaceTreeNode)
[LOG] Creating a surfaceTree Root! (pWindow: 2002fa0)
[LOG] Map request dispatched, monitor DP-3, xywh: 7.000000 40.000000 2546.000000 1393.000000
[LOG] Window 2002fa0 set title to zsh
[LOG] Keybind triggered, calling dispatcher (65, 41)
[LOG] Changed to workspace -99
[LOG] OPENINGON: 0, Workspace: -99, Monitor: 0
[LOG] Changed to workspace 1
[LOG] Toggling special workspace to closed
[LOG] Keybind triggered, calling dispatcher (64, 48)
[LOG] Toggling special workspace to open
[LOG] Keybind triggered, calling dispatcher (64, 48)
[LOG] Toggling special workspace to closed
[LOG] Keybind triggered, calling dispatcher (64, 50)
[LOG] Changed to workspace 2
[LOG] Destroying workspace ID 1
[LOG] Destroying workspace ID -99
[LOG] Keybind triggered, calling dispatcher (64, 48)
[LOG] Toggling special workspace to open

I am going to commit multiple crimes I fucking hate the special workspace

Maybe it wasn't the special workspace rule that was causing the crash.


NativeModule.RNDeviceInfo is null error - Android 11 Device

React Native Version ->  0.64.3
| Affected OS | Android |
| OS Version  | 11 |
Current behavior

I'm trying to get Android id from the device but the app show me that error always.
I have read the rest of issues/posts and i don't know how to solve it.
I'm using Expo framework.

Before closing this error, I wish you had written how you solved it. So that we could take advantage of it.

@OkancanCosar the error message itself contains the root cause. If you are an Expo user this module is likely not built in to your native code so it is null, leading back to that same root cause. No native module in your app? javascript fails to load it. Troubleshoot accordingly


A new tool for monitoring org quota upgrades

What
This commit adds a small new tool named org_quota_history. When invoked using the instructions in its source code, it will output a CSV of the orgs that exist, when/if they were upgraded to be billable, etc.
Data is sourced from paas-billing's cfstore. That stores a record  of the quotas PaaS orgs have had since we started recording data in mid-2018.
Ideally this should be put in a better place than paas-cf but that's left for later. I have some ideas for a private paas-growth repo to store visualisations, scripts, etc without having to build them into paas-admin.
How to review
The code is intentionally not very good--just about maintainable. This PR is largely so that Mark has somewhere to link people to learn how to regenerate the CSVs next time.
Who can review
Anyone.

Ready for review.


KeyError: u'doCompact' error

Hi, @joowani can you please look into this issue?
whenever i tried to find an edge property, i have the following error popping up.
igraph = mygraph.edge_collection('basicgraph')
igraph.properties()

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/home/afidegnum/mystore/local/lib/python2.7/site-packages/arango/api.py", line 22, in wrapped_method
    return conn.handle_request(request, handler)
  File "/home/afidegnum/mystore/local/lib/python2.7/site-packages/arango/connection.py", line 164, in handle_request
    return handler(getattr(self, request.method)(**request.kwargs))
  File "/home/afidegnum/mystore/local/lib/python2.7/site-packages/arango/collections/base.py", line 239, in handler
    'compact': res.body['doCompact'],
KeyError: u'doCompact'

Hi @afidegnum
Thanks for the bug report.
I've made a new release with the bug fix: https://github.com/joowani/python-arango/releases/tag/3.10.1.
Please upgrade python-arango to the latest version and try again.
Best,
Joohwan

@afidegnum Please let me know if the latest release fixed your issue. Thanks

ok, thanks, i will be checking

Hi @afidegnum.
Haven't heard back from you but the error should've been fixed so I'm closing this one out. Feel free to reopen if you face any more problems.
Thanks,
Joohwan


Better error message when using CouchDB <=1.6.1

The current messaging around this is super confusing: https://github.com/nolanlawson/pouchdb-find/issues/148

This issue was moved to pouchdb/pouchdb#6278


[url_launcher] Uri.toString() for "mailto" does not encode spaces properly (+ instead of %20)

Hi.
Supposing one wants to encode a mailto subject or body containing spaces. It's not clear if there should be converted to + (encodeQueryComponent()) or to %20 (encodeComponent()).
There is two examples in the url_launcher Readme and they do not use the same encoding:

mailto:smith@example.org?subject=News&body=New%20plugin

mailto:smith@example.com?subject=Example+Subject+%26+Symbols+are+allowed%21.

The second one is automatically constructed after calling Uri(...).toString(). The main issue is that the subject will be displayed like this in the mail app:

Example+Subject+&+Symbols+are+allowed!

The mail app does not seems to handle + correctly, while it works fine using %20.
I tested this with url_launcher v5.7.5 on Android v8.0.0 and opening the link with Gmail app.
Should the spaces be automatically converted to %20 instead to ensure portability?
Related:

#10032
#42279
https://github.com/flutter/plugins/pull/2172

Hey @Delgan , since this is an issue with Uri which is a part of the dart core library, please open this issue here

@sidrao2006 Thanks for pointing that out. :+1:
I moved the issue to https://github.com/dart-lang/sdk/issues/43838.


Mark an instance as DOWN when the application context is stopped.

Fixes gh-377

+1 for this PR.
An Eureka instance that don't want to receive traffic should set its status to DOWN.
OUT_OF_SERVICE should be used when traffic should be closed for administrative reasons or else (but the instance itself cannot report this status).

Looks useful. Can you fill in the contributor's agreement (link in README) please?

Individual Contributor Agreement No:<PHONE_NUMBER>05045930


ISSUE #1376 Created script.js for habit tracker app

Ihave added script file for habit tracker app. I got an issue so im adding files one by one.

fix #1376


MRG, ENH: Add REST

Closes #7973
@sappelhoff can you try it and see if it looks correct? Based on the math I think it should be, but based on the output it looks quite different from other referencing schemes.
If it's incorrect, it would be great if we could get a gain matrix and REST-ed data from FieldTrip or some other software with a working implementation, and compare to their results.

Updated example here produces:

+1 for MRG provided CIs are greeen

agreed, but I'd understand if this were out of the scope for this PR.

I don't really want to add the test data, but in a week or so I'll check to see if I can test against some data in FieldTrip. I have some EEG FEM lead fields I calculated for sample at one point I can try to reuse.

Okay testing against FieldTrip shows something a bit weird. Their code uses pinv(Gave, 0.05) which means that all components with an absolute (not relative) singular value greater than 0.05 get used. This greatly affects the smoothness of the result. I'm not sure what scale factors the gain matrices FieldTrip uses typically have, but it's probably a bug that theirs is not a relative condition.
Using rcond=1e-6 in our code instead of 0.05 Basically it puts us back to the image we had before:

I guess it's more correct that way even though it's less smooth. The smoother plot above was using 25 components instead of 58 (out of 59).

Thanks, @larsoner!


app engine guide

Close: https://github.com/micronaut-projects/micronaut-guides/issues/39
See: https://github.com/micronaut-projects/micronaut-starter/pull/777

I am going to create an app engine feature in starter.


Npgsql: handle date/timespan related deprecations

Neon.Postgres and most of the other projects that reference Npgsql are on an older version 5.0.5.  We need to upgrade these to 6.0.1.  We need to handle some deprecation:
NpgsqlDate
NpgsqlTimeSpan

I'm going to mark our impacted extension methods as obsolete.  We're going to retain these obsolete APIs as long as Npgsql does.

DONE


What should the default collection policy be?

Recently the functionality of collections was changed to default to empty collections, instead of null (#71), but this technically breaks the contract with AutoValue, since the property is not annotation with @Nullable.  That means that it should technically exist in the JSON.  This potentially masks JSON encoding issues.
IMHO, the issue here is that deserializing and serializing are now no longer compatible, i.e. if you deserialize JSON that has a null collection property then serialize it using this extension, you won't be able to reproduce the original JSON, potentially with different meaning.
Recognizing the usefulness of this functionality, @hzsweers has proposed making this a non-default option configurable using apt arguments.  This ticket is to discuss the implications and determine what the default collection policy should be.

Yeah I think the default behavior should be strict (not present == null). In our case, we actually expect this behavior as part of validation, so we can throw out invalid models and track metrics around invalid responses. It also more accurately reflects the shape of the object passed, rather than making it a tribal knowledge-y "oh yeah we just do that".
I can see the value of coercing to empty lists to avoid the nullcheck and dealing with finicky APIs, but I think that should be an opt-in rather than an opt-out.

Any update on this?

I agree with you that coercing null collections to empty collections should be opt in, and am in favor of your proposal of the apt argument config.

Alrighty, I can send a pr soon :)


Identify layout patterns based on journey system and page categories

larahanlon created the following on Jun 27:

As a maker of ibm.com pages, I need guidance and examples for best layout patterns so that my users can find and enjoy page content on ibm.com.
Additional information
We want to identify, create and share layout designs and guidelines for different experiences across ibm.com. Content can be composited in many ways across a single user journey to support user intent. The layout of each page will change depending on the overall purpose of that page.
Tasks

[ ] Collect journey system map (5 E's) and content types
[ ] Identify page categories based on Jill's list
[ ] Update Airtable with layout pattern types

Original issue: https://github.ibm.com/webstandards/digital-design/issues/1137

Closing this out because it's not our work anymore. It's for Web Simplification.


Feature/partial dataframe

@mrmasterplan , this is already implemted in atc-dataplatform: https://github.com/atc-net/atc-dataplatform/blob/0f21d6207c542f006a50fd3072ddfa17273ce293/src/atc/utils/DataframeCreator.py


Remove Previewnet

Closes #1744
Description
Removes all remaining references to previewnet.

For contributor use:

[ ] Targeted PR against master branch
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work
[ ] Code follows the standards mentioned here
[ ] Updated relevant documentation
[ ] Re-reviewed Files changed in the Github PR explorer
[ ] Added appropriate labels

Codecov Report
Attention: Patch coverage is 0% with 4 lines in your changes missing coverage. Please review.

Project coverage is 29.58%. Comparing base (9b92775) to head (614d78f).

Files with missing lines
Patch %
Lines

internal/prompt/prompt.go
0.00%
3 Missing :warning:

internal/evm/gateway.go
0.00%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1750      +/-   ##
==========================================
+ Coverage   29.50%   29.58%   +0.07%
==========================================
  Files          88       88
  Lines        5161     5148      -13
==========================================
  Hits         1523     1523
+ Misses       3451     3438      -13
  Partials      187      187

Flag
Coverage Δ

unittests
29.58% <0.00%> (+0.07%)
:arrow_up:

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

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


Initialize DBSReaderModel before NATS as it initializes logger

@yuyi, Yuyi I confirm that with this change the NATS is working and there is no longer issue in DBS Writer. I tested this setup (manually applying this change) in k8s testbed cluster. Then I run the following commands to change DBS dataset status:
# scurl is defined as curl -L -k --key ~/.globus/userkey.pem --cert ~/.globus/usercert.pem "$@"

url_w=https://cmsweb-k8s-testbed.cern.ch/dbs/int/global/DBSWriter
url_r=https://cmsweb-k8s-testbed.cern.ch/dbs/int/global/DBSReader
dataset=/ZMM/Summer11-DESIGN42_V11_428_SLHC1-v1/GEN-SIM
scurl "$url_r/datasets?dataset=$dataset&detail=True&dataset_access_type=*"
scurl -X PUT -d 'dataset=/ZMM/Summer11-DESIGN42_V11_428_SLHC1-v1/GEN-SIM&dataset_access_type=PRODUCTION' $url_w/datasets
scurl "$url_r/datasets?dataset=$dataset&detail=True&dataset_access_type=*"
scurl -X PUT -d 'dataset=/ZMM/Summer11-DESIGN42_V11_428_SLHC1-v1/GEN-SIM&dataset_access_type=VALID' $url_w/datasets
scurl "$url_r/datasets?dataset=$dataset&detail=True&dataset_access_type=*"

Then, I checked NATS server and found these nice messages:
klogs nats nats-sub-dbs-6b6cbb5875-x8dsv
Listening on [cms-nats.cern.ch/cms.dbs.>]
2020/02/19 14:13:41 /ZMM/Summer11-DESIGN42_V11_428_SLHC1-v1/GEN-SIM PRODUCTION
2020/02/19 14:13:57 /ZMM/Summer11-DESIGN42_V11_428_SLHC1-v1/GEN-SIM VALID

Please include this PR into upcoming cmsweb upgrade. I already provided proper configuration to Muhammad to enable NATS in k8s.

@vkuznet
Thanks for testing your code. I have to run the DBS unit tests to verify the changes before they can be included in the release.


sharp.format is not a function on require

After installing sharp I get
TypeError: sharp.format is not a function
I already tried reinstalling. I'm using electron and webpack, is there any relation or does this error appear for more people?

If you minify the code, it may be related to https://github.com/lovell/sharp/issues/1474

Hm, I dont use minification in development, but as in the comment in your reference I think its something about the sharp.node file... running an older version I had versions with missing phyton installation... are there hidden dependencies?

I'm afraid this is then way above my knowledge of the internals of sharp then :/
I remember toying with sharp in electron at one point but it was before it came with prebuilts. I just know I had to rebuild the dependency when switching from normal node to electron. Not sure it may be related to your problem.
Let us summon @lovell ;)

Thank you sir @jaubourg and well, that was an quick answer @lovell!
I am using electron dev server with create-react-app... I think the app is just started by "electron ."

https://electronjs.org/docs/tutorial/using-native-node-modules

Keeps on failing, I dont get it...

"python (v2.7 recommended, v3.x.x is not supported)"

https://github.com/nodejs/node-gyp#installation

Thank you. Rebuild went trough now, but error does still occur.
Maybe the following warning helps you out:

It appears after the error in the console, might also be useless.
I also tried 0.20.8, different error which cannot be fixed with the given instructions

Alright, I totaly agree with you. I will move my question to stackoverflow


Make component page definition into modules in separate files

for page definition that pass attribute data and methods, moved to separate files as modules.

benefit    : less code in public/app.js, easier to debug when error found
drawback : more network requests

in production env, the separate files modules definition may be combined with tool like webpack.


Custom IDs now start and end with underscores and have words separate…

…d by underscores

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 84.81%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
215

Relevant Lines:
242

💛  - Coveralls


Working with variable translation keys

Hello,
I'm wondering if there is a way to register translation keys that come from other sources rather than being hardcoded.
Example use case is having a set of data (e.g. API or local constants), which need to be translated, but they would need to be changed over time.
I would envision a need for a separate scanning tool, that would require a script to be fully functional and therefore would be able to read variables/constants runtime.
Use example:
class User  {
    const ROLE_ADMIN = 'admin';
}

//dynamic-translations.php
rtp('enums.user-roles', User::ROLE_ADMIN);

//config/translation.php
'scan_runtime' => [
    'runnable-file.php'
];

//Result:
msgctxt "enums.user-roles"
msgid "admin"
msgstr ""

If one wants to change the value of ROLE_ADMIN to let's say, administrator, it would need to be done in just one place.
In theory, is this something that you would be eager to have as a part of your package?

Another solution would be creating non-runnable scannable files that use those enums.
return [
   'enums' => [
       'user-roles' => [
            User::ROLE_ADMIN => p('enums.user-roles', 'admin')
       ]
   ],
];

And then creating a function to access those runtime.
Any thoughts on the subject are appreciated :)

Maybe it should be better explained in the docs, but if you have a definite set of enums to translate, you can just put these enums somewhere in the code (maybe in your model?) and they will be parsed by GetText:
// User.php
private const I18N_ROLES = [
  t('admin'),
  t('manager'),
  t('customer'),
];

Then, later, you can decide to call GetText directly with your role variable like this:
t($user->role)
or with the interpolated syntax (notice both t):
t("Your role is %s", t($user->role));
Since GetText will convert $user->role in runtime to one of "admin", "manager" or "customer", and since it already knows that these 3 words exist and have been localized, it will return the correct translation.

This method also works for an outside set of data (API etc.). Just create a small script that will reach the API and generate a dummy PHP file in your project directory that will contain all the words/sentences to translate. And then, execute it each time just before syncing.
Is this solution what you were looking for?

Thank you for your input! I think as a generic solution, it works very well with specifying the keys separately.
As for scannable files, how does the concept sound like in general?
What value that brings is that if code ever gets refactored (e.g. constants removed, values changes), it would automatically update/remove the translation keys. While using an IDE, it would be also possible to track whether a particular constant is translated.
Search usages -> runnable-file.php -> See also translation parameters and context.
In theory, assuming there would be a PR with tests, what there be some reasons not to integrate it?
Could, of course implement some own standalone solution, but I'd find very convenient to have in one place.

As for scannable files, how does the concept sound like in general?

I'm sorry but I'm not really sure I understand what your solution would bring.
Your suggested scannable file (1) would be very similar to what I'm proposing (2) and both would be scanned and processed by GetText in the same way.
// (1)
return [
   'enums' => [
       'user-roles' => [
            User::ROLE_ADMIN => p('enums.user-roles', 'admin'),
            User::ROLE_MANAGER => p('enums.user-roles', 'manager'),
            User::ROLE_CUSTOMER => p('enums.user-roles', 'customer'),
       ]
   ],
];

// (2)
private const I18N_ROLES = [
    p('enums.user-roles', 'admin'),
    p('enums.user-roles', 'manager'),
    p('enums.user-roles', 'customer'),
];

What value that brings is that if code ever gets refactored (e.g. constants removed, values changes), it would automatically update/remove the translation keys. While using an IDE, it would be also possible to track whether a particular constant is translated.

It's also the case with the solution (2), or maybe I'm missing something.

In theory, assuming there would be a PR with tests, what there be some reasons not to integrate it?
Could, of course implement some own standalone solution, but I'd find very convenient to have in one place

I don't see any reason not to integrate it, but I'm not 100% convinced it would bring something more than what already exists.


⚠ NCAA has degraded performance

In 97f98c6, NCAA (https://www.ncaa.com) experienced degraded performance:

HTTP code: 200
Response time: 835 ms

Resolved: NCAA performance has improved in 4006172.


.groupBy method does not recognise model column alias

I have noticed that both PostgreSQL column names and and Waterfront column name aliases, such as
        region: {
            type: "string",
            columnName: 'operations_region_code',
        },

are accepted indiscriminately by .find. However, when I chain
        Model.find({select:['region']}).groupBy(['region'])

I get undefined. On the other hand, if I chain
        Model.find({select:['region']}).groupBy(['operations_region_code'])

I get the expected response.

Marked as bug– reopening.

+1
I encountered this but when trying to get some nested attributes to work
It seems that if there is an association attribute waterline doesn't play well with data manipulation


Monitoring Documentation

What this PR does / why we need it: This PR adds docs for the monitoring aspect of LitmusChaos.
Which issue this PR fixes: fixes #363
Special notes for your reviewer: None.
Checklist:

[x] Fixes #363
[ ] Labelled this PR & related issue with documentation tag

@ksatchit @umamukkara @divya-mohan0209 @ajeshbaby PTAL.

@divya-mohan0209 @ksatchit PTAL.


Legend tooltips

This adds legend tooltips to all overview and hostorical charts. In addition, I've padded the computed report items with null datum objects, representing missing data.
This allows us to display a "no data" message in the tooltip, which helps distinguish between zero values and when there is no data available.
In addition, I refactrored to sync the chart and legend colors -- colors were not matching.
Overview cost chart

Overview usage chart

Historical cost chart

Codecov Report

Merging #1581 into master will decrease coverage by 0.24%.
The diff coverage is 66.66%.

@@            Coverage Diff             @@
##           master    #1581      +/-   ##
==========================================
- Coverage   78.66%   78.41%   -0.25%
==========================================
  Files         235      235
  Lines        3843     3860      +17
  Branches      705      702       -3
==========================================
+ Hits         3023     3027       +4
- Misses        732      739       +7
- Partials       88       94       +6

Impacted Files
Coverage Δ

...rc/components/charts/costChart/costChart.styles.ts
100.00% <ø> (ø)

.../historicalCostChart/historicalCostChart.styles.ts
100.00% <ø> (ø)

...istoricalTrendChart/historicalTrendChart.styles.ts
100.00% <ø> (ø)

...istoricalUsageChart/historicalUsageChart.styles.ts
100.00% <ø> (ø)

.../components/charts/trendChart/trendChart.styles.ts
100.00% <ø> (ø)

...ges/dashboard/components/dashboardWidget.styles.ts
100.00% <ø> (ø)

src/components/charts/costChart/costChart.tsx
7.37% <12.50%> (-0.26%)
:arrow_down:

src/components/charts/common/chartUtils.ts
72.34% <53.84%> (-5.08%)
:arrow_down:

src/utils/computedReport/getComputedReportItems.ts
70.96% <83.33%> (+1.47%)
:arrow_up:

...charts/historicalCostChart/historicalCostChart.tsx
83.18% <85.71%> (+0.27%)
:arrow_up:

... and 5 more

Continue to review full report at Codecov.

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


Overhaul for link creators

Need to support more use cases, plenty of things are cumbersome now.
Some scenarios to have in mind:

Linking to a route while preserving its parent path param values
Linking to a route while preserving all current query params that are valid for that route

among the use cases I have that are not well covered today:

link to a child route while preserving its parent path param and query values (to open a modal for example)
modifying a query param even though you don't know in which route you are (to open/close the login menu for example no matter how deep you are in the child routes)


Remove required checks from SES metadata

Description
I am not a GO developer, but from my understanding this should fix this issues, other components related to AWS does not have this check, only this one. If there it's a reason for this. I will decline this PR.
Issue reference
Should fix #2698
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[ ] Code compiles correctly
[ ] Created/updated tests
[ ] Extended the documentation / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]

@robertojrojas  can you please take a look too?

@ItalyPaleAle Code changes look good, but I'd like to try the changes locally. I won't have time until tomorrow or over the weekend.

Thanks, @robertojrojas ! Please approve this PR when you're able to confirm things work, and I'll merge following your approval :)

Will wait for @robertojrojas to verify this.

@ItalyPaleAle I just tested the code changes and it worked for me.  Just a reminder that the Bindings AWS SES docs need to be updated to reflect the changes made.

@cciobanu98 should complete this docs issue: https://github.com/dapr/docs/issues/3292

Thanks for this contribution @cciobanu98


Add tests for various variable features

This PR adds tests for the following PRs:

#835
#806

They both rely on @vinistock's addition of the gather_variables method extract the behavior of collecting variables.
This method is explained in a comment from #884:

To avoid having to assert every single global variable using an array (which is a big number considering Ruby's built in globals), I extracted part of assert_locals_result into gather_variables, so that we can get all available globals in the test and just verify a few of them.

@egiurleo Sorry for late response.
Thank you for the tests.
I can not run github actions (tests) on this PR.
I'm not sure why but could you rebase the PR and I'll check it later we can run GH actions (tests).

@ko1 done!

Tests seem failed 😢
Error: test_binary_data_gets_encoded(DEBUGGER__::BinaryDataDAPTest): NoMethodError: undefined method `gather_dap_variables' for an instance of DEBUGGER__::BinaryDataDAPTest
/home/runner/work/debug/debug/test/support/protocol_test_case.rb:246:in `assert_locals_result'
/home/runner/work/debug/debug/test/protocol/binary_data_dap_test.rb:25:in `block in test_binary_data_gets_encoded'
     22:       run_protocol_scenario(program, cdp: false) do
     23:         req_add_breakpoint 12
     24:         req_continue
  => 25:         assert_locals_result(
     [26](https://github.com/ruby/debug/actions/runs/4355848307/jobs/7615161572#step:4:27):           [
     [27](https://github.com/ruby/debug/actions/runs/4355848307/jobs/7615161572#step:4:28):             { name: '%self', value: 'main', type: 'Object' },
     [28](https://github.com/ruby/debug/actions/runs/4355848307/jobs/7615161572#step:4:29):             { name: 'with_binary_data', value: [8, 200, 1].pack('CCC').encode(Encoding::UTF_8, invalid: :replace, undef: :replace), type: 'PassthroughInspect' }```

I've pushed a fix for this, however one check is failing because of the shorter timeout on ruby-macos:

The job running on runner GitHub Actions 23 has exceeded the maximum execution time of 15 minutes

Thank you!


Added toast message

Fix : #174

can you share the video of it @AyushGakre

@Saurav-Pant
https://github.com/Saurav-Pant/Blood-Donation-Project/assets/122914231/445207e8-7b97-41c8-8d52-d03061f6d29c

Looks Good,   Thanks @AyushGakre


Error with eager loading

LaravelMessenger Version: ^7.1
Laravel Version: 6.5
PHP Version: 7.3

Description:
When I try to consult a discussion it brings me the discussion with the wrong id. That is to say I only have one discussion in the database, and when the query tells me that the id is 2, also when I add with('messages') to bring all the messages all right, but when I add the scope forUser does not bring me any message.
Steps To Reproduce:
use Arcanedev\LaravelMessenger\Models\Discussion as Thread;

/**
 * Show all of the message threads to the user.
 *
 * @return mixed
 */
public function index()
{
    $user = Auth::user();
    $threads = Thread::with('messages')->forUser($user)->paginate(15);

    return response()->json($threads);
}

Response
{
    "current_page": 1,
    "data": [
        {
            "id": 2,
            "subject": "First Message",
            "created_at": "2019-11-14 20:58:15",
            "updated_at": "2019-11-14 20:58:15",
            "deleted_at": null,
            "discussion_id": 1,
            "participable_type": "App\\User",
            "participable_id": 1,
            "last_read": null,
            "messages": []
        }
    ],
    "first_page_url": "url.com/api/messages?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "url.com/api/messages?page=1",
    "next_page_url": null,
    "path": "url.com/api/messages",
    "per_page": 15,
    "prev_page_url": null,
    "to": 1,
    "total": 1
}

Are you sure you're using the correct package ?
The response isn't similar to what our package offer.
Try to use these steps and see what you got:
1- Install our package with a fresh laravel installation

Setup the database (try with sqlite)

2- Add a seeder
<?php

// database/seeds/MessengerSeeder.php

declare(strict_types=1);

use App\User;
use Arcanedev\LaravelMessenger\Models\Discussion;
use Arcanedev\LaravelMessenger\Models\Message;
use Illuminate\Database\Seeder;

class MessengerSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        /**
         * @var User $john
         * @var User $jane
         * @var User $stranger
         */
        $john     = factory(User::class)->create(['id' => 1, 'name' => 'John DOE']);
        $jane     = factory(User::class)->create(['id' => 2, 'name' => 'Jane DOE']);
        $stranger = factory(User::class)->create(['id' => 3, 'name' => 'xX_ZONDA_KILLER69_Xx']);

        // CREATING DISCUSSION #1
        tap(
            Discussion::query()->create(['subject' => 'Welcome to the public chat']),
            function (Discussion $discussion) use ($jane, $john, $stranger) {
                /* Participants */
                $discussion->addParticipants([$john, $jane, $stranger]);

                /* Messages */
                $discussion->messages()->saveMany([
                    $this->makeMessage($stranger, 'First !!!'),
                    $this->makeMessage($john, 'Nooo, i was too late :('),
                    $this->makeMessage($jane, 'Heyoooooo ( ^_^)b'),
                ]);
            }
        );

        // CREATING DISCUSSION #2
        tap(
            Discussion::query()->create(['subject' => 'Private messages between John & Jane']),
            function (Discussion $discussion) use ($jane, $john) {
                /* Participants */
                $discussion->addParticipants([$john, $jane]);

                /* Messages */
                $discussion->messages()->saveMany([
                    $this->makeMessage($john, 'Hi jane! Long time no see :)'),
                    $this->makeMessage($jane, 'Wadup!'),
                ]);
            }
        );
    }

    /**
     * Make a new message.
     *
     * @param  \Illuminate\Database\Eloquent\Model|mixed  $participant
     * @param  string                                     $body
     *
     * @return \Arcanedev\LaravelMessenger\Models\Message
     */
    protected function makeMessage($participant, $body)
    {
        return new Message([
            'participable_type' => $participant->getMorphClass(),
            'participable_id'   => $participant->getKey(),
            'body'              => $body,
        ]);
    }
}

Edit the DatabaseSeeder class.
<?php
// database/seeds/MessengerSeeder.php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // $this->call(UsersTableSeeder::class);

        $this->call(MessengerSeeder::class);
    }
}

3- Run migrations with seeds
php artisan migrate:fresh --seed

4- Routes
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
use Arcanedev\LaravelMessenger\Models\Discussion;

Route::get('disscussions/{user_id}', function (int $userId) {
    /** @var \App\User $user */
    $user = Auth::loginUsingId($userId);

    return Discussion::forUser($user)
        ->with(['messages.participable'])
        ->paginate(15);
});

5- Testing
You can test the package by visiting http://your-project/disscussions/{user_id}, user_id is in [1, 2, 3] (3 users).
This is what the response looks like when you visit http://your-project/disscussions/1
{
    "current_page": 1,
    "data": [
        {
            "id": 1,
            "subject": "Welcome to the public chat",
            "created_at": "2020-02-07 11:43:13",
            "updated_at": "2020-02-07 11:43:17",
            "deleted_at": null,
            "messages": [
                {
                    "id": 1,
                    "discussion_id": 1,
                    "participable_type": "App\\User",
                    "participable_id": 3,
                    "body": "First !!!",
                    "created_at": "2020-02-07 11:43:15",
                    "updated_at": "2020-02-07 11:43:15",
                    "deleted_at": null,
                    "participable": {
                        "id": 3,
                        "name": "xX_ZONDA_KILLER69_Xx",
                        "email"<EMAIL_ADDRESS>                        "email_verified_at": "2020-02-07 11:43:13",
                        "created_at": "2020-02-07 11:43:13",
                        "updated_at": "2020-02-07 11:43:13"
                    }
                },
                {
                    "id": 2,
                    "discussion_id": 1,
                    "participable_type": "App\\User",
                    "participable_id": 1,
                    "body": "Nooo, i was too late :(",
                    "created_at": "2020-02-07 11:43:16",
                    "updated_at": "2020-02-07 11:43:16",
                    "deleted_at": null,
                    "participable": {
                        "id": 1,
                        "name": "John DOE",
                        "email"<EMAIL_ADDRESS>                        "email_verified_at": "2020-02-07 11:43:12",
                        "created_at": "2020-02-07 11:43:12",
                        "updated_at": "2020-02-07 11:43:12"
                    }
                },
                {
                    "id": 3,
                    "discussion_id": 1,
                    "participable_type": "App\\User",
                    "participable_id": 2,
                    "body": "Heyoooooo ( ^_^)b",
                    "created_at": "2020-02-07 11:43:16",
                    "updated_at": "2020-02-07 11:43:16",
                    "deleted_at": null,
                    "participable": {
                        "id": 2,
                        "name": "Jane DOE",
                        "email"<EMAIL_ADDRESS>                        "email_verified_at": "2020-02-07 11:43:12",
                        "created_at": "2020-02-07 11:43:12",
                        "updated_at": "2020-02-07 11:43:12"
                    }
                }
            ]
        },
        {
            "id": 2,
            "subject": "Private messages between John & Jane",
            "created_at": "2020-02-07 11:43:17",
            "updated_at": "2020-02-07 11:43:19",
            "deleted_at": null,
            "messages": [
                {
                    "id": 4,
                    "discussion_id": 2,
                    "participable_type": "App\\User",
                    "participable_id": 1,
                    "body": "Hi jane! Long time no see :)",
                    "created_at": "2020-02-07 11:43:18",
                    "updated_at": "2020-02-07 11:43:18",
                    "deleted_at": null,
                    "participable": {
                        "id": 1,
                        "name": "John DOE",
                        "email"<EMAIL_ADDRESS>                        "email_verified_at": "2020-02-07 11:43:12",
                        "created_at": "2020-02-07 11:43:12",
                        "updated_at": "2020-02-07 11:43:12"
                    }
                },
                {
                    "id": 5,
                    "discussion_id": 2,
                    "participable_type": "App\\User",
                    "participable_id": 2,
                    "body": "Wadup!",
                    "created_at": "2020-02-07 11:43:19",
                    "updated_at": "2020-02-07 11:43:19",
                    "deleted_at": null,
                    "participable": {
                        "id": 2,
                        "name": "Jane DOE",
                        "email"<EMAIL_ADDRESS>                        "email_verified_at": "2020-02-07 11:43:12",
                        "created_at": "2020-02-07 11:43:12",
                        "updated_at": "2020-02-07 11:43:12"
                    }
                }
            ]
        }
    ],
    "first_page_url": "http://your-project/disscussions/1?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "http://your-project/disscussions/1?page=1",
    "next_page_url": null,
    "path": "http://your-project/disscussions/1",
    "per_page": 15,
    "prev_page_url": null,
    "to": 2,
    "total": 2
}

Thanks for the answer, but I had to stop using this package because I could not fix the error at the time.


dl fail

Good afternoon,
I'm really interested in using your sftwr on my new FitBit.
Unfortunately, I cannot get it to install; having done syncs, refreshes, restarts, etc.
Any suggestions?  TY
-Jacen
Versa 2, ver <IP_ADDRESS>, 1.1GB available

Interesting. A few questions.
Is it only the Push-ups app you're having trouble installing?
Have you been able to successfully install the Push-ups app before?
Have you tried the generic Fitbit troubleshooting steps?

Restarting the watch
Restarting Bluetooth on your phone

Fitbit has collected a list of steps for general app troubleshooting here
I see there is a Fitbit forum post where one user experienced a similar issue. Their resolution was to delete the app before trying to re-download it.

Good day!
Yes, indeed, only this app.
My watch syncs and I have 20 other apps from 3rd party Devs.  All with
expected levels of success.
I consider myself tech savvy.  I searched through normal Fitbit TS first,
conducting a watch and phone restart (after resetting settings, like your
suggestions below).
I only just discovered your App today.  I tried uninstalling a different
app to see if the Fitbit store was experiencing problems.  That worked.
The only other hiccups I've noticed have been sync issues if my phone is
not on the same Wi-Fi as the watch or longer than expected install times;
but this was left for greater than 20min a few different times.
Sometimes during a phone app restart (closing it or even attempting a Force
Stop) when I enter the My Apps tab I get a pop-up asking if I'd like to
continue Install (as it perpetually never finishes -- thereby not providing
a 'check mark' next to it in the All Apps tab).
I appreciate you taking the time to respond.
I will likely try another full shutdown this evening and attempt to sync
while charging (battery is currently above 50 on both devices).  I am
running on a fully updated Note 8.
Thank you,
Jacen
On Sat, Jul 25, 2020, 19:02 Matt Mallett<EMAIL_ADDRESS>wrote:

Interesting. A few questions.
Is it only the Push-ups app you're having trouble installing?
Have you been able to successfully install the Push-ups app before?
Have you tried the generic Fitbit troubleshooting steps?

Restarting the watch
Restarting Bluetooth on your phone

Fitbit has collected a list of steps for general app troubleshooting here
https://help.fitbit.com/articles/en_US/Help_article/2275.htm
I see there is a Fitbit forum post where one user experienced a similar
issue
https://community.fitbit.com/t5/Versa-Smartwatches/Can-t-install-apps-or-clock-face/td-p/2643703.
Their resolution was to delete the app before trying to re-download it.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/mmallett/pushups/issues/3#issuecomment-663926032, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AQM4FFENCJYVHTVQG5OGTF3R5OFCDANCNFSM4PHXQG6Q
.

Works!!
Gave it 5 stars!

Fantastic! I'm glad you got it working and I hope you enjoy the app!


Dead linked file in Darwin x64 release

It seems that Electron.app/Contents/Frameworks/Electron Framework.framework/Frameworks links to a file that no longer exists. Not a problem basically, but maxogden's electron-packager fails due to this.

Same goes for these ones:
Electron.app/Contents/Frameworks/Electron Framework.framework/Libraries/Libraries
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/Libraries
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/Current/Libraries/Libraries


Proof of Concept: Bootstrap backend from specified directory

Alternative to #41. See discussion here: https://discuss.python.org/t/pep-517-backend-bootstrapping/789/

Closing in favour of #46.


Corrections for windows

lesson 2 - some scripts were pointing to .sh and not .bat
Add more memory to the DB process to handle the larger reverse engineering
Missing .bat setup file in lesson 2

Done pull request #10


Getting error 20 code (SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_EXECUTION_MODE) when trying to use functions from extension GL_ARB_fragment_shader_interlock

Hello,
Added GL_ARB_fragment_shader_interlock extension to code with a regular beginInvocationInterlockARB() - endInvocationInterlockARB()usage.
Code is compiled all right, but spvReflectCreateShaderModule gives me error code 20.
If I remove references to beginInvocationInterlockARB, endInvocationInterlockARB and sample_interlock_ordered, error goes away, but obviously, that's not a solution.
Any idea what can be done about this?

Adding a "special case" for 5336 inside spirv_reflect.c ParseExecutionModes line 3279 removed the error for me:

I guess, the clean solution would be to add an enumeration value to SpvExecutionMode_ and add case at the end of that switch-case statement; I can make a pull request, but I am not familiar enough with the project internals to be sure that it will not break anything

Small update:
I found interlocking enumeration values already in spirv.h; All that's actually needed is inserting those in switch-case statement

Added a pull request: https://github.com/KhronosGroup/SPIRV-Reflect/pull/186

@TheDonsky  did https://github.com/KhronosGroup/SPIRV-Reflect/pull/186 solve this? Can we close this issue then?

Yes, it seems to be resolved on my side


Panels in JSON don't look like Panels

When using nesting of fields that are themselves in Panels. It would think that panels look like the panels that nova uses, but instead they end up just being sort of smooshed together fields with a heading instead of a panel type view on the detail page.

Sorry about the late replay. We were very busy lately with client work. Can you provide code examples or / and screenshots of what you are getting?

Fix available on 0.17.0


mapper映射器

Can Kubeedge currently map a machine node through the current mapper

I think you can abstract a machine node into a device, use CRD to describe the attributes of your node. Your idea is very interesting, welcome to continue providing some details. :)

I have considered this approach, but I am uncertain if the nodes support CRDs. Additionally, there are differences in the way devices and nodes operate

CRD has some custom fields that allow developers to customize thier device, u can find some example in this, for example random-device-instance.yaml and random-device-model.yaml implemented a virtual device that generates random numbers. For another question, I think that u can establish a server on the node, which collects indicators that need to be reported to kubeedge. The mapper can obtain and change the corresponding data through the GET/POST method. You can attend our community meeting every Wednesday afternoon and we can discuss more details. Of course, if you have any questions, you can continue to communicate with me here.

Alright, thank you very much.


Segmentation Fault when using keyboard shortcuts - Ubuntu 20.04 - Trezor One - hwi-qt

I have imported my Trezor descriptors into Bitcoin Core 0.21.0 and have it running.

I startup hwi-qt from hwi-2.0.0-rc.2-linux-amd64.tar.gz and unlock the Trezor.
I create a test transaction to another Trezor address in the same wallet in Bitcoin Core.  The transactions is copied to clipboard.
I go back to hwi-qt and go to "Sign PSBT" and press Ctrl + V
Results in Segmentation Fault

I played around with this and if I right click in the box and press the paste shortcut it works fine.
Similarly when I wanted to use Alt + Tab to switch from hwi-qt it also has a segmentation fault just when I press Alt even before the Tab.
Additional keys causing issues on single press

Ctrl
Alt
Del

The happens on the default opening window of hwi-qt too.  Doesn't have to be the Sign PSBT dialog.
Last lines on terminal:
Fontconfig error: "/etc/fonts/conf.d/80-delicious.conf", line 6: invalid attribute 'version'
Fontconfig warning: "/etc/fonts/conf.d/90-synthetic.conf", line 4: unknown element "its:rules"
Fontconfig warning: "/etc/fonts/conf.d/90-synthetic.conf", line 5: unknown element "its:translateRule"
Fontconfig error: "/etc/fonts/conf.d/90-synthetic.conf", line 5: invalid attribute 'translate'
Fontconfig error: "/etc/fonts/conf.d/90-synthetic.conf", line 5: invalid attribute 'selector'
Fontconfig error: "/etc/fonts/conf.d/90-synthetic.conf", line 6: invalid attribute 'xmlns:its'
Fontconfig error: "/etc/fonts/conf.d/90-synthetic.conf", line 6: invalid attribute 'version'
Fontconfig error: Cannot load default config file
libGL error: MESA-LOADER: failed to open iris (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: iris
libGL error: MESA-LOADER: failed to open swrast (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: swrast
Segmentation fault (core dumped)

It seems like this problem is due to pyinstaller. When I run the hwi-qt.py script directly, there's no such issue. Only when I use the pyinstaller build does it crash.
I'm not sure if there is anything that we can do about this. I'll keep investigating.

One thing I would then add is how to run from source.  I don't think hwi-qt.py is not documented in the README.md.  There are additional requirements.


Lack of familiarisation with Machine Learning techniques and tools causes less efficiency and risks to scientific integrity

Aspect
Description

Challenges
Few experts in the ICES community, but there is a working group now. On the short term there is too few experts, but in the long run there will be more. WGMLEARN has been out of commission for a couple of years.

Action required
DIG to Monitor. Follow up on the WGMLEARN.

Ownership
No specific owner

Linked to Opportunity #581
legacy entry

This has been converted from the original issue to cover challenges only, the opportunities are better covered by other working groups (especially the ML one mentioned above).
I deemed the impact medium because although ML can exploit data in new ways, the data collection, curation, standardisation and sharing has to come before this is possible.
I deemed the likelihood as medium because ML outputs will probably become one of the important data streams for ICES but traditional streams will continue to be crucial as well.

Reviewed


Add Travis CI config

You'll need to switch on the Travis integration in your Travis profile.

Currently a few of the jobs still fail but I wasn't able to make sense of these problems yet.

Cheers!


Content Creator: Add comments to content create/edit

As a Content Creator, I want the ability to leave a comment when creating or editing content so that I can give some context and rationale for the changes I make.
Feature: Add comments
  As a Content Creator,
  I want the ability to leave a comment when creating or editing content
  So that I can give some context and rationale for the changes I make.

  Scenario: When I create content
    Given I am creating content
      And I might need to provide more information about what I am creating and why
     When I go to create new content
     Then I will see a textarea available for comments
       And I will be able to leave a comment any time I create content

  Scenario: When I edit content
    Given I am editing content
      And I might need to provide more information about what I am editing and why
     When I go to edit existing content
     Then I will see a textarea available for comments
       And I will be able to leave a comment any time I edit content

[ ] Add comments / When I create content
[ ] Add comments /  When I edit content

🎱
@joshkimmell @poofichu @mkiang3051 @scottnath - Ready for review.

@ineedsubstance Do the comments need to be persistent in future revisions of said content? If so, let's add a scenario about that.

@joshkimmell I think there is a story I created for that somewhere. Let me dig it up.

@joshkimmell @ineedsubstance
I wrote this story from the POV of a content creator - I had debated writing a companion story for the Editor/Approver, but didn't. Let me know what you guys think. I am more than happy to go in and modify this story and/or create a new one for the Editor/Approver as well. [#223] (https://github.com/punchcard-cms/punchcard/issues/223)

oh perfect! I'll review that one next.
related to #223

🎱 🎱

@joshkimmell @mkiang3051 - yeah we talked about having the comments follow all the revision so both creator and approver could see how they got there.

@scottnath: please comment on functionality. This is a UX story that would require another story to make it so.


Update README.md

Hello Xermon,
I didn't notice this pull request but I did notice the README.md wasn't correct as I tried to reinstall the plugin myself a few days ago. So I updated it a few days ago.
I'm closing this PR, but thanks for the contribution :)
Regards,


How to configure CLion Project

Apologies if this is the wrong place to ask this question but I am trying get my current platformio project working on CLion.
I have a working platformio project that is getting bigger and difficult to manage and I was hoping to use CLion IDE. Any help is appreciated.

You can integrate PlatformIO into any IDE. Which type of problem do you have? From CLion site:

CLion supports the well-known CMake build system

You can replace built-in cmake system with platformio run command. Could I ask you to write an article about it and I will place it to main PlatformIO documentation?
Thanks in advance!

Here is interesting example how to replace built-in Eclipse builder with PlatformIO: Building and debugging Atmel AVR (Arduino-based) project using Eclipse IDE+PlatformIO

I'd be interested in any results on this as well, I use IntelliJ regularly and have considered trying out CLion.  If it supports a any standard makefile system you could always put together a config that mapped to platformio commands, if CLion doesn't let you do that directly within its preferences.

Friends,
Who can help PlatformIO with short manual with pictures how to configure CLion and PlatformIO? It can be any format: PDF/DOC/RTF/etc., the we will convert it to RST and put to core documentation with preserving author's rights.
We could do it, but you can see how much issues we have opened. In this situation I want to concentrate our forces to the new features for PlatformIO.

 I would gladly contribute this write up if I could figure it out on my own. I hope someone has already gone through the trouble and could share their setup.

@valeros has tried to configure CLion with PlatformIO, but didn't received any results. They don't allow to redefine own builder. I've just posted the comments to their issues tracker:
https://youtrack.jetbrains.com/issue/CPP-871#comment=27-960431
Here is explanation by CLion owners: http://blog.jetbrains.com/clion/2014/09/cmake-vs-the-others-round-1/

thanks for the update

Just tried this feature out, seems like it generates a solid CMakeLists.txt but trying to build from inside clion pops a dialog asking for an executable. It seems like I can specify any old executable (i picked the platformio file). The build will then be allowed to run, and it definitely uploads the code to my board, but it then replaces the output on the console with the standard "platformio" help message. Also, when importing the project that platformio generates, every file except CMakeLists.txt is "grayed out" in the project pane, as in CLion doesn't think it's part of the project. Thoughts?

@jimbojsb which PlatformIO version do you use? I've just re-tested it under Mac. See my results:

I used this example: https://github.com/platformio/platformio/tree/develop/examples/wiring-blink and this command:
platformio init --project-dir examples/wiring-blink --ide clion -b uno

As for "auto-complete" - see explanation in Warning block: http://docs.platformio.org/en/latest/ide/clion.html

I got auto complete working by setting include_directories as absolute paths and adding a line like
add_executable(Test src/test.cpp)

Dear friends,
Please re-test full support of CLion IDE in the latest development version http://docs.platformio.org/en/latest/installation.html#development-version
Waiting for your feedbacks.

@voneiden thanks a lot for the hint! :+1:

@ivankravets Nice, no problem.

I have followed all the documentations, and this is what I get:

I am having the problem that Clion doesn't resolve my own library in the lib folder, platformio created. platformio run works quite well without any error but I cannot use the code completion from the IDE because the editor displays me the error: Cannot find Foo.h which I include in my mainProgram.c which is in the src folder.
Can someone help me, please? Thanks in advance.

@earliestearl see docs http://docs.platformio.org/en/stable/ide/clion.html

The libraries which are added, installed or used in the project after generating process wont be reflected in IDE. To fix it please run PLATFORMIO_REBUILD_PROJECT_INDEX target.

@ivankravets Sorry, I should have read the instructions more carefully. But thank you so much for your fast and good reply. Now, everything's working. Thanks for your great work, PlatformIO!

@earliestearl Would be thankful for a star ⭐ https://github.com/platformio/platformio/stargazers and don't forget to follow us on https://twitter.com/PlatformIO_Org


Dbus wait script - improve failure

See comment here - https://github.com/NebraLtd/helium-miner-software/pull/159#commitcomment-57722628
When it fails with "no such file or directory" it still shows "dbus now accepting connections" and continues, when it should not

fixed by https://github.com/NebraLtd/hm-miner/commit/77f954817be7c2e5ce3de7383134fd7417fc507b


Filtering button when not focused on current position does nothing

Click current position button
Flitering button works correctly
Pan the map
Filtering button does nothing

This bug was added in c5a74ab762b3ef39c97014b509c65b66165296c1
Low quality GIF:

Fixed in 1.0, thanks for finding.


Bot's New Update - BitDefender Total Security - Virus Alert

After new update, Bitdefender has removed bot's exe file.
It worked for 2 hours; but now it has been blocked in terms of firewall attack.

False Positive, Disable Firewall or apply an exception.

@OneGoodMan Where did you find an exe file? What was the path to it? What did it say the virus was?

bot.exe? this is python code, it doesn't have binary files.


Redirect /config.json to /zipkin/config.json in order to work with the chrome extension

For some reason the path is cut off when added to the chrome extension, meaning I can't specify/zipkin there.
Hopefully the extension follows redirects...
https://github.com/openzipkin/zipkin-browser-extension

The extension could be updated to support both... check one and fallback to the other

Probably a better idea, I just noticed that the URLs in the table generated by the plugin are missing /zipkin as well

@SimenB up for updating the plugin?

I can take a whack at it, sure. How should we check if /zipkin path is needed? Make a request to root, and if we're redirected, use that?

you could check /zipkin/config.json first and if 404 try /config.json

Cool, I'll get a PR out soonish. I'll try to fix the issue I reported as well

A bit tricky if /zipkin/config.json returns index.html though... Maybe it's possible to check the content-type header, or check if the payload is valid json...


Adding new verification methods

Hi guys
We were asked to process two another verification methods, but I can't find mappings for them in the latest SDK version.
Could you please add these two ASAP?
//VerfiicationMethodType.swift
case cardholderToCallForAutomatedOTPCode = "CARDHOLDER_TO_CALL_FOR_AUTOMATED_OTP_CODE"
case agentToCallCardholderNumber = "AGENT_TO_CALL_CARDHOLDER_NUMBER"

We have merged this into develop and improved comments.


Fetch SteamVR path instead of steam path

Getting steamvr path from registry rather than using default steamvr path. Also removed unneeded directory existence check as File.Exists() still works correctly as it accounts for directories.

Lgtm!