High memory pressure with live dash playback

Have you read the FAQ and checked for duplicate open issues?
Yes
If the problem is related to FairPlay, have you read the tutorial?
Not applicable
What version of Shaka Player are you using?
4.7.0
Can you reproduce the issue with our latest release version?
Not tested, but compared the branch against 4.7.0
Can you reproduce the issue with the latest code from main?
Not tested, but compared the branch against main
Are you using the demo app or your own custom app?
Custom app (just a page with shaka player)
If custom app, can you reproduce the issue using our demo app?
Not tried
What browser and OS are you using?
Web: Windows Chrome 120.0.6099.199 (Official Build) (64-bit)
webos 4,6: chromium 53 and 79 respectively
tizen 4: chromium 56
For embedded devices (smart TVs, etc.), what model and firmware version are you using?
webos 4: 43UM7300PLB (2019)
webos 6: 43UP81006LA (2021)
tizen 4: UE43NU7400U (2018)
What are the manifest and license server URIs?
I will send you the URL via email.
What configuration are you using?  What is the output of player.getConfiguration()?
Player configuration is attached.
player_config_web.txt
What did you do?
Started playback of identical live dash stream with 4.3.0 and 4.7.0 shaka versions and kept it up to 2 hours. I monitored memory with distinct tools (depending on the platform), but namely on web I made heapdumps every 10-30 minutes.
What did you expect to happen?
Memory footprint should not be growing after buffer filling for 4.7.0 (as it is true for 4.3.0). Also, memory allocation rate should be smaller for 4.7.0 similar to 4.3.0 (tested on smart tv devices with webos 4/6 and tizen 4).
What actually happened?
Shaka 4.7.0 memory footprint grew over time during live playback (no interaction with the custom demo app, tested on web and webos 4/6). Allegedly, memory growth depends on DVR window size since it stabilized after 60 minutes of test on web (timeShiftBufferDepth is 1 hour). During two tests I observed heap reaching 39 and 68 MB respectively whereas with shaka 4.3.0 playback its size was around 11-12 MB.

Another one issue - memory allocation/clean up magnitude is much higher for 4.7.0 in comparison to 4.3.0 under the same testing conditions (tested on webos 4/6 and tizen 4 with 1h DVR). The consequence of high memory pressure on low-end smart tv devices is UI freezing during interaction with the app: OS and browser are busy with memory housekeeping tasks like swapping, GC, OS level memory allocation delays etc. Mere live playback with our own app started to freeze on webos 4 2019 device after ~15 minutes without any UI interaction.

Heapdumps comparison refers to memory kept by SegmentIndex/XML DOM data structures. As for high memory allocation rate, I am pondering about evict() changes in TimelineSegmentIndex class:  slice() was added to timeline and references objects, which is about shallow copies of arrays (relevant changes may be in https://github.com/shaka-project/shaka-player/pull/5061).

Interesting. I will start to investigate this a bit too. Maybe using splice instead of slice would avoid some of the extra allocations.

Thanks for the feedback @ricardo-a-alves-alb and thanks @nrcrast, sounds like u might know possible root cause, we were about to start doing bisect to find the PR that started it but from these comments maybe u can spot it faster then us

It's probably just the PR that introduced the TimelineSegmentIndex -- #5061. Not 100% sure but that was a large change and I'd imagine if there was a memory issue with it, it would have been there since the beginning.

I remember this PR, and I actually think @avelad mentioned it to me on another issue related to performance on smart TV but we didn't notice improvement with VST specifically and assumed our app might consume too much memory maybe to feel the gains so we started improving more on FE side.
I also suspect that if you do not see this issue it might be related to dash manifest features, and maybe specific manifests suffer more than others, just a guess but it seems you did impressive work in that PR and I believe u would have saw such issues.
Are you able to check this and maybe create some PR? I will be able to test it on our side and provide a feedback

I think I've found one of the issues -- the initSegmentReference sticks around forever. When all references have been evicted from the TimelineSegmentIndex, we should be freeing everything we can so it can be garbage collected.
At that point, the TimelineSegmentIndex really only exists as a shell to keep track of numEvicted.

@nrcrast thanks for the update, any chance you are planning to push this fix so we can test it?

Hi! I will push at some point this week. I want to do some long running tests here myself so I'm confident in the fix myself before I push anything. I can push a branch though at some point if you want to do some preliminary testing before I open a PR.

I think I've found one of the issues -- the initSegmentReference sticks around forever. When all references have been evicted from the TimelineSegmentIndex, we should be freeing everything we can so it can be garbage collected.
At that point, the TimelineSegmentIndex really only exists as a shell to keep track of numEvicted.

you mean in the release function of "shaka.dash.TimelineSegmentIndex" we should also this.initSegmentReference_ = null;
Happy to check your branch, i'm testing it too

It cannot be released in the release method, as the init segment reference can only be released once it's guaranteed that the SegmentIndex has evicted all of its entries.
The issue with releasing everything in the overridden release method is that release is called also when you switch variants. When you switch variant, the segment index for Variant A is closed and then re-opened if you then switch back to that variant. At that time, all information needed to re-create the segment index must still exist somewhere in memory.
I am still chasing down the issue here -- it seems that for some reason even though I'm setting initSegmentReference to null in the TimelineSegmentIndex, something is still holding onto it preventing it from being garbage collected.
I've just made a branch with this change in it as well as using splice if you also want to do some testing:
https://github.com/nrcrast/shaka-player/tree/timeline-segment-index-free-all

Hi @nrcrast  I tried to chase it down till the segment reference "partialReferences" and "initSegmentReference" but i'm not sure it's correct.
Thanks for the information about release and it's at the end what i thought reading more deeply the code.

Hello. Seems that leaking memory and high allocation rate are still present in timeline-segment-index-free-all branch.

Heap snapshots for the same demo app (shaka live playback with a hardcoded fullhd channel) on web:

The said heap snapshots with debug build:
debug-smtv-web-shaka.zip
Some thoughts on the heap leak:
references arrays of two TimelineSegmentIndex (playing audio and video) grow over time due to growing amount of SegmentRefernce elements. Each of them retains ~9 KB of heap memory through InitSegmentReference after its assigning:

As of high memory allocation rate:  tizen/webos tests reveal that it fluctuates by magnitude of up to 50-70 MB and it happens not within the heap itself. It is up to native memory underlying data structures, which in turn may be related to dash manifest in-memory manipulation changes.

Interesting. From what I can tell, the eviction logic in the TimelineSegmentIndex seems to work pretty much the same way as the eviction logic in the base SegmentIndex, plus it only creates SegmentReference objects when it's asked to.
So I'm surprised at the number still remaining. That's definitely concerning.

Some more interesting info!
Here is a comparison of my fork of v3.3.10 on the left and current shaka main on the right. Both contain the Timeline Segment Index, but my fork does not contain #5762 or any other changes that happened since my initial contribution.

Going to play the "binary search" game and see if I can reproduce similar results using official shaka releases and not my own fork.

Comparison of current main Shaka (on right) and commit 8d2b6574de6d0510ae752637c3507df93fbf3591 (https://github.com/shaka-project/shaka-player/pull/5842). This is after a bug fix for a race condition in the Timeline Segment Index. So seems like something went sideways sometime after this.
Continuing the hunt!

Have we checked if #5762 had any impact? I have no reason to suspect that it did, but it would be an interesting test.
I just tagged and checked 2 versions from timeline-segment-index-free-all branch on web: a commit right before #5762 (#5848 ) and #5762 itself. Looks like the heap size is quite stable, no known memory leak being detected:

Seems that I found the root cause (checked on web and webos 6 for memory leaking atm) - #5899
calling appendTemplateInfo() of TimelineSegmentIndex on manifest arrival assigns init segment references by this.initSegmentReference_ = initSegmentReference and thereby "binds" the referenced data to the long-living object.
Compared tagged build of PR #5899 vs its preceding #5729  (4.6 release).
web:

webos 6:

Memory allocation magnitude is still high on webos 6 for dash live playback:

25-30 MB for 4.3 release.
45-55 MB for #5729 build (release 4.6).
70-80 MB for timeline-segment-index-free-all branch.
One need to perform some additional investigation of that on TV devices.

Interesting.
I don't fully understand though what the real difference is or how that PR could cause this. Even before that PR, the TSI was holding a reference to an initSegmentReference -- that PR just makes it so that reference changes periodically.
It's also unclear to me why my timeline-segment-index-free-all wouldn't have fixed this issue.
 One thing that can be a gotcha is that the code we see and code we ship is not the same in JS land. Maybe the code change seems safe but maybe compiled code optimizes and creates some closure.

According to heapdumps, we assign init segment references to initSegmentReference property of SegmentReference objects on fresh manifest arrival and appendTemplateInfo() calls. TimelineSegmentIndex and its references array have a lot of SegmentReference elements: with 1h DVR it is about 1800+ for video and audio indexes respectively.

According to heapdumps, we assign init segment references to initSegmentReference property of SegmentReference objects on fresh manifest arrival and appendTemplateInfo() calls. TimelineSegmentIndex and its references array have a lot of SegmentReference elements: with 1h DVR it is about 1800+ for video and audio indexes respectively.

@Illmatikx I think this has always been the case, though.
Before the Timeline Segment Index was introduced, all of these SegmentReferences were created during manifest parse time, and each Segment Reference had a ref to the InitSegmentReference.
With the introduction of the Timeline Segment Index, these Segment References are only created upon retrieval (SegmentIndex.get).
@OrenMe The only difference between your two tests was that single commit for https://github.com/shaka-project/shaka-player/pull/5899? It just seems like such an innocuous change! @avelad any idea?
Maybe this is some weird compilation issue, but on a linear stream Segment References will be periodically evicted. They should then be garbage collected. As long as there is no other reference to the InitSegmentReference (which I tried to fix in my branch), the InitSegmentReference should be collected as well eventually.
In practice, I must be missing something, because it's not happening that way 😆 .

@nrcrast  hello! Yes, the only difference during the last test was #5899
I think the problem is that TimelineSegmentIndex is a long-living object and it keeps the references itself (references-> SegmentReference -> InitSegmentReference). For the duration of availability window - 1+ hour with 1h DVR - the references are not evicted, hence memory leaks for an hour for our streams. Before the said commit appendTemplateInfo() didn't assign initSegmentReference, which in turn retains 9-20 KB of memory per each SegmentReference object.

Before the said commit, though, initSegmentReference was still in TimelineSegmentIndex.
Ah maybe it's that appendTemplateInfo re-assigns initSegmentReference so it's keeping a bunch of different initSegmentReference objects in memory instead of just having all of the references in the TSI share the same initSegmentReference.
I'm not really sure of a solution, to be honest, as I don't have much context around #5899 . 🤔

@nrcrast Greetings! Any updates on the subject maybe?

Greetings! @nrcrast @avelad maybe any updates or thoughts on the subject?

I have conducted some memory tests on webos 6 2021 device with beanviser. The purpose was to compare distinct shaka versions and seek for any difference in terms of memory allocation during live dash playback. The results are the following:

I am thinking of #5061 added in 4.4 being a culprit for the memory usage growth: it may be improving manifest parsing time at the cost of excessive memory pressure, which in turn is the most costly resource on low-end smart tv devices (on par with main thread availability). The memory pressure presumably became even worse with shaka 4.6.1 #5899 - the PR introduced the ticket subject memory leak through addition of initSegmentReference parameter to appendTemplateInfo().

Does anyone want to submit a PR that improves what was implemented in https://github.com/shaka-project/shaka-player/pull/5899 to reduce the pressure? Thanks!

I created a branch with the suggested change in the last comment: https://github.com/cristian-atehortua/shaka-player/tree/bugfix/6070--high-memory-pressure
Can you please help me to test behavior and memory usage?
@pszemus Since this is related to a bug fix of an issue you reported, can you please help me test how your streams work on that branch?

I share some reduced MPDs of the problem that occurred:
1º
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns:scte35="urn:scte:scte35:2013:xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="urn:mpeg:dash:schema:mpd:2011"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
     profiles="urn:mpeg:dash:profile:isoff-live:2011"
     type="dynamic"
     minimumUpdatePeriod="PT5.18S"
     publishTime="2024-04-29T10:53:08.094Z"
     availabilityStartTime="2022-01-01T00:00:00.000Z"
     timeShiftBufferDepth="PT25.0S"
     suggestedPresentationDelay="PT20.0S"
     minBufferTime="PT6.0S">
<Period id="0" start="PT0.0S">
    <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml"></EventStream>
    <AdaptationSet id="0" group="1" mimeType="video/mp4" maxWidth="1920" maxHeight="1080" par="16:9" frameRate="25" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
        <SegmentTemplate timescale="90000" media="segment_6740c147d_ctvideo_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="segment_6740c147d_ctvideo_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
            <SegmentTimeline>
                <S t="6605347805640" d="450000"/>
                <S d="450000"/>
                <S d="450000"/>
                <S d="450000"/>
                <S d="450000"/>
            </SegmentTimeline>
        </SegmentTemplate>
        <Representation id="p0va0br150000" codecs="avc1.42c00c" width="256" height="144" sar="1:1" bandwidth="150000" />
    </AdaptationSet>
</Period>
</MPD>

After some time:

<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns:scte35="urn:scte:scte35:2013:xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="urn:mpeg:dash:schema:mpd:2011"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
     profiles="urn:mpeg:dash:profile:isoff-live:2011"
     type="dynamic"
     minimumUpdatePeriod="PT5.127S"
     publishTime="2024-04-29T10:53:43.097Z"
     availabilityStartTime="2022-01-01T00:00:00.000Z"
     timeShiftBufferDepth="PT25.0S"
     suggestedPresentationDelay="PT20.0S"
     minBufferTime="PT6.0S">
<Period id="0" start="PT0.0S">
    <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml"></EventStream>
    <AdaptationSet id="0" group="1" mimeType="video/mp4" maxWidth="1920" maxHeight="1080" par="16:9" frameRate="25" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
        <SegmentTemplate timescale="90000" media="segment_b2415eee8_ctvideo_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="segment_b2415eee8_ctvideo_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
            <SegmentTimeline>
                <S t="6605350955640" d="450000"/>
                <S d="450000"/>
                <S d="450000"/>
                <S d="450000"/>
                <S d="450000"/>
            </SegmentTimeline>
        </SegmentTemplate>
        <Representation id="p0va0br150000" codecs="avc1.42c00c" width="256" height="144" sar="1:1" bandwidth="150000" />
    </AdaptationSet>
</Period>
</MPD>

@cristian-atehortua It is valid to update the old segments and it is what should be done.
I'll be happy to review your PR

I have tested it and it works fine with the stream I had to fix, can anyone confirm that it reduces memory pressure?

Hi @avelad l'll be back from holiday tomorrow and check if we can do a quick test

Apart from that, do you think it is appropriate to create a new initSegmentReference on each call to SegmentTemplate.createStreamInfo?
Shouldn't we check if the properties used to create the initSegementReference have changed and only in that case create a new one?

Shouldn't we check if the properties used to create the initSegementReference have changed and only in that case create a new one?

Yes, please do it

@Illmatikx Can you share the same comparison against 4.8.1? Thanks!

@avelad that is the plan from my side, but I am blocked atm by https://github.com/shaka-project/shaka-player/issues/6533
I managed to run some heap memory comparison tests on web though and 4.8.1 looks fine in terms of the notorious memory leak:

I intend to run the test on a webOS device and monitor memory allocation rate with the changes. It is a must for us since UI scrolling freezes were caused not by the leak but by high memory allocation.

@Illmatikx Yesterday we released 4.8.3, can you test on WebOS if this issue is fixed now?

Hello @avelad sorry for the late response, but I managed to take a glance at 4.,8.4 version with our demo app. The test targeted a start-over video with 15h35m timeShiftBufferDepth. so It was a kind of an edge use case.
Memory allocation magnitude has reduced from 40-65 (shaka 4.6.1) to 5-8 MB on account of manifest processing changes for TImelineSegmentIndex.

At the same time, there was still a "benign" leak observed on webos 6 device, which is about TimeSegmentIndex in-memory structure itself:

It was about leaking a couple of dozens of MB during 1h20m test.

@avelad is it doable to enable/disable usage of TimelineSegmentIndex from https://github.com/shaka-project/shaka-player/pull/5061 by a flag/configuration option? This way one can opt for each specific use case: either go for manifest parsing time improvement or memory saving,

@Illmatikx can you test if https://github.com/shaka-project/shaka-player/issues/6610#issuecomment-2110138873 reduce the pressure?  I would be willing to add it if it works for everyone). Thanks!

In version 4.10.6 we have introduced some improvements, can you validate if it is enough or do we need more improvements? Thanks!


Add gap between the icon in the button

Ticket: #529
In this PR, I added a gap property for the button widget

please also update ensemble-schema.yaml

@vinothvino42 please update schema and you can merge

@vinothvino42 please update schema and you can merge

I added a gap to the button-payload schema. Please check the recent changes.


inotify not working

dhcpd changes file but no notification event is triggered.

Instead of monitoring and parsing the leases files, a dhcpd hook script can be used to notify stratux when a new client connects.
http://manpages.ubuntu.com/manpages/raring/man8/dhcpcd-run-hooks.8.html


chore: add vanilla-extract plugin to storybook vite config

#169  👈
main

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

Join @kylemcd and the rest of your teammates on  Graphite


How to wirelessly view 2 devices at the same time

So i have been able to only view one device wired and one wireless using the scrcpy -s command on linux

List them with adb devices. You should be able to start scrcpy -s for each one.

List them with adb devices. You should be able to start scrcpy -s for each one.

when I run one, and I start another with scrcpy -s it error !
This is error info:
bind: Address already in use
scrcpy[15070:1261952] ERROR: Could not listen on port 27183

It listens only until the device is connected, so if you start the second one few seconds after the first one is connected, it should work.
Alternatively, you could use a different port for the other device: scrcpy -p 27184.

I think I will improve the -p option to support a range: -p start:end, with a default range 27183:27200, so that it try the ports sequentially until one works. That would avoid this kind of problem.

I think I will improve the -p option to support a range: -p start:end, with a default range 27183:27200, so that it try the ports sequentially until one works. That would avoid this kind of problem.

Great! It work! Thanks! It's a good idea about this change

Released in v1.13.


Predictable error format

first of all , nice job and good luck to you , your api are being used for recruiting team couples of days ago so lots of people will be happy to hear your good news.
about the error handling what I have seen in other teams is that they have a simple error object with a text in it conveying the error . now handling couples of error at the same time might be subjective ! You can still send back an error object with just text , so in front end they can render all of them with a simple loop , or just send back the first error , cause at then end of the they showing 3 errors in a blink of an eye cannot be so good for ux . the important thing is that you always have the object name and structure for the errors that you send to the client (it should be Predictable !!
this is how errors look like in client

In my idea the best and easiest way is that just send the error string in this case : 'title must be uniqe'
right now is error object then name of the error field ( which is Predictable ) and an array!!! of what went wrong
if you want to handle multiple errors you can do : errors:[ 'title required ' , 'name required ' ]
single error , error: 'name required'
Originally posted by @hosseinghs in https://github.com/gothinkster/realworld/issues/900#issuecomment-1075173814

discontinued task


Issues migrating postgres DB from docker to helm instance

Gitea Version
1.15.10
Git Version
No response
Operating System
Ubuntu 20.04
How are you running Gitea?
Helm Chart
Database
PostgreSQL
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
No response
Description
I am trying to migrate a docker instance (v1.15.10) to a (fresh) helm instance (v1.15.10).
I created a .dump of the postgres DB and aiming to restore it within the helm deployment.
Postgres version docker instance: 13.5
Postgres version helm instance: 13.5
(The helm instance is using AWS RDS whereas the docker instance is running official postgres.)
When restoring, I get the following
pg_restore -c -h <host> -U gitea -d giteadb gitea_daily_db_backup.dump

pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 325; 1259 32051 SEQUENCE reaction_id_seq1 gitea
pg_restore: error: could not execute query: ERROR:  sequence "reaction_id_seq1" does not exist
Command was: DROP SEQUENCE public.reaction_id_seq1;

The docker instance was initially created with v1.13 and since then upgraded without missing any patch release.
WRT to the restore, it seems it partially restored the DB until the error occured.
I have no idea how to address the issue. Any help is appreciated.
Screenshots
No response

Hm, tried again today and the error did not appear (anymore). Strange 🤔


Hidden accordians - Permanetly unhide selctor in theme config

SYSTEM INFORMATION

OS type and version
Ubuntu Linux 22.04.4

Webmin version
2.111

Usermin version
2.010

Virtualmin version
7.20.1

Theme version
21.10

Package updates
All installed packages are up to date

I don't think I every did a GitHub issue for this, I have had a look in this repo, Webmin and Virtualmin and could not find one. I also was not sure if @iliajie add this feature.
the background

The issue
Unless you hide any of the panels on your dashboard the hidden accordians selector will not be shown
I spent hours looking for this before I was willing to hide a panel I might need again
proposed solution
make the Hidden accordians selector in theme config visible all the time as there is no need for it to be hidden.
Additional
discussed here
https://forum.virtualmin.com/t/where-do-you-unhide-dashboard-panels/126925/5

Hello,
For the latest release, I already made it clear in the alert where it can be un-hidden after it was hidden.

This is great but not what I meant, althought this is helpful. I meant always show Hidden accordions in theme config

Code
https://github.com/webmin/authentic-theme/blob/0ca0f9e215fdad49e028158f1f0d5096295a8595/tconfig-lib.pl#L201C1-L204C6
# Exclude hidden panels if none
if (!$theme_config{'settings_sysinfo_hidden_panels_user'}) {
    push(@theme_settings_filter, 'settings_sysinfo_hidden_panels_user');
}

Goes too -->
# Hidden panels
push(@theme_settings_filter, 'settings_sysinfo_hidden_panels_user');

This is great but not what I meant, althought this is helpful. I meant always show Hidden accordions in theme config

Sure, makes sense, thanks! I'll take a look.

bump 😄
this is a nice easy one to fix

Unless you hide any of the panels on your dashboard the hidden accordians selector will not be shown
I spent hours looking for this before I was willing to hide a panel I might need again

Why would you search for something that doesn’t exist?
I’m not sure displaying an empty select will be less confusing, but I did improve the message after the accordion was hidden, explaining where it can be found.

This is an easy one

before I hid the panels I wanted to make sure I knew where to unhide them.
I could not find where to unhide the panels, ironically because this feature was hidden.
As an end user this does not make sense that it is hidden and a few others on the forum had this issue, jimr thought the only way to restore the panels was to reset the the theme. I am sure there are other people and he has been using Webmin for years.
I have never used a software where a setting like this would be hidden like this.

before I hid the panels I wanted to make sure I knew where to unhide them.

You can't really know what will happen until you actually hide the panel. :-)

I could not find where to unhide the panels, ironically because this feature was hidden.

You couldn’t find where it was hidden because we didn’t specify where to look. Now we do., e.g.:

As an end user this does not make sense that it is hidden and a few others on the forum had this issue, jimr thought the only way to restore the panels was to reset the the theme. I am sure there are other people and he has been using Webmin for years.

Ah, okay! Then in this case, we should always display a select with all available panels (whether selected or deselected), rather than showing an empty one. It's probably not an easy fix, but I’ll take a look!

I have never used a software where a setting like this would be hidden like this.

You actually did!! :--))

One additional thought.
When this is implemented, the visible panels should be highlighted in the list.

When this is implemented, the visible panels should be highlighted in the list.

Yes, just it is now for disabled ones.


Add placeholder for otherwise empty docstrings

Fixed here: https://github.com/JanEricNitschke/pyment/commit/eaf95e282bc3d7f1ccfbdbba6cd26944fdfde26b


Account Validation

light validation against blank fields when creating cloud accounts

fix oxford comma reference from QA

Coverage remained the same at 61.366% when pulling 682d31199ece7f6d3ffe71bb109db3e97cef4cdc on josephkane:cloud-accounts-validation into 6365ee6e011a70ef8bf5c60a30d73370dd415239 on supergiant:master.


added merge sort in java

Hi @Amisha-Mohapatra,
Could you help me check this PR?

Hi @Amisha-Mohapatra,
Could you help me check this PR?


filtering hierarchy

hi, i have a dimension animals, which contains  hierarchy animal. under animals there are element cat and dog. under cat there is a  separate element cat-owner and under dog element there is the element dog owner. so we have the following structure.
animals (dimension)
- animals (hierarchy)
- cat (element)
- cat owner (element)
- dog (element)
- dog owner (element)
if i do
with TM1Service(**config['tm1srv01']) as tm1:
    dimension = tm1.dimensions.get(dimension_name=animals)
    hierarchy = dimension.hierarchies[0]

i get the entire animal hierarchy (i.e cat, cat owner, dog, dog owner).
is there some way to filter the hierarchy so i only get everything under cat only, so  cat, cat-owner ?

Hi, thank that works great.
However is there some way to get the edges between the elements as this produces a list of element. I need to know how the element are connected on the hierarchy. i.e the parent name of cat owner is cat.

Hi @an5ir ,
unfornutely not. TM1py does not yet have a function that gives you a slice of a dimension, including the relevant parent child relationships.
There are two things you can do now:

Query the entire hierarchy and then remove everything you don't need in python.
This code gives you all elements in the hierarchy and all parent-child relationships.
If your Hierarchy is < Members this is probably the best way to go.

from TM1py import TM1Service

with TM1Service(address='<IP_ADDRESS>', port=12354, user='admin', password='apple', ssl=True) as tm1:
    hierarchy = tm1.dimensions.hierarchies.get(
        dimension_name="Date",
        hierarchy_name="Date")
    elements = hierarchy.elements
    edges = hierarchy.edges

Write a new function like get_elements_and_edges_under_consolidation that works similar to get_members_under_consolidation, but instead of the element names it returns elements and edges.


GenesisBuild split

This PR removes the storage building part from the GenesisBuild trait.
assimilate_storage and build_storage methods were moved to new GenesisBuildStorage which is implemented only for pallets GenesisConfig (and not RuntimeGenesisConfig). PalletGenesisConfig marker trait was added to facilitate this.
The rationale behind this is as follows: since #14306 GenesisBuild is implemented for RuntimeGenesisConfig. As the BuildStorage is also implemented for RuntimeGenesisConfig there was some duality - RuntiemGenesisConfig had two bulid_storage implementations.
Trait split is implemented in 13d66fd5d0, renaming in ad3b7df4ba.
Step towards: https://github.com/paritytech/substrate/issues/13334

The CI pipeline was cancelled due to failure one of the required jobs.
Job name: test-linux-stable
Logs: https://gitlab.parity.io/parity/mirrors/substrate/-/jobs/2961603

The CI pipeline was cancelled due to failure one of the required jobs.
Job name: test-linux-stable
Logs: https://gitlab.parity.io/parity/mirrors/substrate/-/jobs/2961605


Fix plots

fix and simplify loading of runhistories (now responsibility of each smac/configurator-run)
fix order of 2d-footprints

Codecov Report

Merging #131 into development will decrease coverage by 0.07%.
The diff coverage is 80%.

@@               Coverage Diff               @@
##           development     #131      +/-   ##
===============================================
- Coverage        72.46%   72.38%   -0.08%
===============================================
  Files               18       18
  Lines             2128     2126       -2
===============================================
- Hits              1542     1539       -3
- Misses             586      587       +1

Impacted Files
Coverage Δ

cave/cave_cli.py
90.14% <100%> (+0.14%)
:arrow_up:

cave/plot/plotter.py
93.83% <100%> (+0.04%)
:arrow_up:

cave/analyzer.py
77.54% <100%> (ø)
:arrow_up:

cave/cavefacade.py
68.04% <100%> (-0.57%)
:arrow_down:

cave/smacrun.py
94.33% <50%> (-3.62%)
:arrow_down:

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 eb9f448...21d47b2. Read the comment docs.


feat: add hello-world example for kubebb component

What type of PR is this?
/kind feat

What this PR does / why we need it
Which issue(s) this PR fixes

Fixes #128
Special notes for your reviewer

pls remove charts/hello-world/.DS_Store file

@Carrotzpc pls review this hello-world component.

@Carrotzpc


remove GetNodeRescanInterval(), as it is no longer needed

Description
Duration environment variables are now validated upon registration and retrieval. See https://github.com/stackrox/stackrox/blob/master/pkg/env/durationsetting.go#L46 for more information
Checklist

[x] Investigated and inspected CI test results
~[ ] Unit test and regression tests added~
~[ ] Evaluated and added CHANGELOG entry if required~
~[ ] Determined and documented upgrade steps~
~[ ] Documented user facing changes (create PR based on openshift/openshift-docs and merge into rhacs-docs)~

Testing Performed
CI

@RTann, we added this function, because providing 0 or negative rescan interval causes a panic. The user is an actor who  configures this, so the input validation is something that may make sense.

@RTann, we added this function, because providing 0 or negative rescan interval causes a panic. The user is an actor who configures this, so the input validation is something that may make sense.

I probably should have added this to the description, but this is already validated as-is. I'll do it now: https://github.com/stackrox/stackrox/blob/master/pkg/env/durationsetting.go#L46

Could you give it a quick test with
kubectl -n stackrox set env daemonsets/collector --containers="compliance" ROX_NODE_RESCAN_INTERVAL="0s"
or
kubectl -n stackrox set env daemonsets/collector --containers="compliance" ROX_NODE_RESCAN_INTERVAL="-5s"

@RTann, we added this function, because providing 0 or negative rescan interval causes a panic. The user is an actor who configures this, so the input validation is something that may make sense.

I probably should have added this to the description, but this is already validated as-is. I'll do it now: https://github.com/stackrox/stackrox/blob/master/pkg/env/durationsetting.go#L46

Oh, I see now, this looks good!


Is the old version of ROMP still available for webcam demo?

Hi, Is the old version of ROMP still available for webcam demo now?  I have just cloned the newest repo without any change at all and run by the old command of webcam demo:
python -u -m romp.predict.webcam --configs_yml ./configs/webcam_blender.yml
This new version of can not drive the character correctly (only pelvis moves correctly, other parts keep still as T-pose), and there are several mistakes happened:

key 'smpl_joints24' no longer exists in the output of newest version of ROMP but it still remains in the base_predictor.py and webcam.py.
function 'convert_can_to_3d_trans()' no longer exists in cam_utils.py.
The detection flag and reorganize index sometimes don't match and throw an error in that case:

args().smpl_model_path seems to be wrong. And There is no SMPL_NEUTRAL.pkl  and J_regressir_extra in the newest model_data.zip

I will get back to debugging later since now I'm too busy. But if this old one's going to be abandoned, just ignore these questions.

Fixed. The character can only move without temporal optimzation, not sure what's going on here.

Fixed.
Add from older version
add code below to L272~273 in results_parser.py:

else:
                outputs['detection_flag'] = torch.Tensor([True for _ in range(len(batch_ids))]).cuda()

add from older version


Build FOAM as single JS file.

From<EMAIL_ADDRESS>on November 19, 2013 16:59:38
Create a script to build a version of FOAM as a single js file.
Should build versions with and without minification and with and without GUI support.
Original issue: http://code.google.com/p/foam-framework/issues/detail?id=104

This is now very well supported by the build tool, foam.build.BuildApp.


I am getting an Unauthorized Request Error

So I followed the youtube video from your official channel and got the client ID and secret from sketch fab. But I am getting an unauthorized request error when trying to log in. I can assure that the email and password are correct.

Hello Shubhra, thanks for reaching out.
May I ask you what is your Unity Version in order to try to reproduce the problem?
Thanks in advance.

I m using the unity 2020.3 LTS version.

Ok I see, I am going to download the version that you mentioned and let you know what I find out. (I currently did the test on a newer version 2021.3.0f1 even though your version should not be a problem)
Meanwhile could you please check if the Client ID and the Client Secret are correct in the SketchfabSettings object? (Maybe they are swapped or there is an extra space or some typo)
I made a quick test and I added an additional letter to either of those and I get unauthorized requests even if the username and passwords are correct in the GetAccessToken method if the API credentials are wrong / swapped...
For guidance as you can see on the image, the client ID is substantially shorter than the client secret: (Maybe it is trivial but let's try to discard the easy ones in parallel while I have time to download the version and reach back to you as soon as possible)

Also, something else could be to make sure that the SketchfabSettings object is under a "Resources" folder:
Sketchfab/Resources in our case but any Resources folder should be nice.

Thanks for the detailed answer! I actually checked that, but will check it again. My assumption is that probably the redirect link that I provided while app registration need to change or something? I have provided the redirect link as https://joysticklab.com/ which has nothing to do with my app. (It’s my future app website)

The redirecting link sounds indeed like a good hypothesis It would be great if you could try to disable it and test it again if everything that I mentioned before was correct.
If the redirecting link is the problem we will ask the users of the wrapper to avoid using it for now until we fix it on our side.
I add this observation to our "to check" list in case it is not possible for you to conduct the test.
Thank you again for your time and consideration as you might have found a bug that might need to be addressed, do not hesitate to write us as soon as you have news.

I am not quite sure how can I disable the redirect link. I have looked into the other recommendations and can confirm that everything else was set properly.

Hi, I wrote to the sketchfab support team. The grant type they used seems not supported for this plugin. So, now they changed it to the username/password grant type, previously it was the Authorization Code type. . Now my app is running fine. Thanks for the help.

Hi,
Could you please share the video link/YouTube channel you mentioned?
Thank you!


added optiongroup resource

Issue #, if available:
Description of changes:
AWS::RDS::OptionGroup
Originally OptionGroup has OptionConfiguration as immutable, despite it allows immutable update for certain groups.
There are two issues: cfn does not allow version downgrade on rollback.

The aim to check the APEX version is to prevent version downgrading when doing update-rollback.
* 2 Downgrade will happen only when there is an APEX option to add, because only APEX has version.
* 3 There will be at most one APEX option in an OptionGroup

Since it was implemented there appeared some other option groups that support versioning.
Not sure what's the point of avoiding version downgrade (intentional or on rollback) it does not affect the state of target resource.
Here is the list of all available option groups for each database engine:

MariaDB
Microsoft SQL Server
MySQL
Oracle

Testing
Unittests: 97% Instructions Cov., 90% Branches Cov.
Integ Tests: Manually tested:

Unversioned option groups - create/update/delete
Versioned option groups with no failures:

APEX - 4.1.1.v1 -> 4.2.6.v1 -> 4.1.1.v1
SQLT - 12.1.160429 -> 12.2.180331 -> 12.1.160429

Do we need to maintain the rollback limitation if so what's the rationale?
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Implemented in https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds/pull/35


Child process hangs

I'm using the library to execute a command in terminal:
process = spawn(command, params, options);
process.stdout.on('data', onLine);
process.stderr.on('data', onLine);
process.on('error', onError);
process.on('close', onClose);

It enters onLine several times with the output, but then just hangs and does nothing (no exit, no error). What are the possible reasons for that? Is that a bug?
If I execute the command in Terminal, everything's fine. The command is linking a module to react native application (react-native link).

It's hard to tell if that's a bug from your side or our side. I suggest that you use Node's spawn and see if the bug still manifests. If it does, then it's a bug on your side, otherwise it's on our side.
Makes sense?

@satazor actually one of the reasons I switched to your lib is that node's spawn was giving me spawn raect-native ENOENT

@satazor Oh you mean use local react-native.cmd with Node spawn? No, it still gives me  spawn "/node_modules/.bin/react-native.cmd" ENOENT

The path should be relative, it seems you are using it absolutely because of the trailing /

Anyway, it would be more helpful if you could give me a reproducible test case so that I can help you in a easier way.

How is it then? Same for ./node_modules/.bin/react-native.cmd and node_modules/.bin/react-native.cmd
I'm using it to run a react-native link inside of the RN app:
react-native init sample-app
cd sample-app
react-native i appcenter appcenter-analytics
Then in my node js app, inside of the sample app folder, I use the following code to execute react-native link automatically:
process = spawn("react-native", ["link", "appcenter"], {cwd: <absolute path to app here>});
process.stdout.on('data', onLine);
process.stderr.on('data', onLine);
process.on('error', onError);
process.on('close', onClose);

Then I check whether it hits any of the callbacks, I get some of the output lines in onLine callback, then it disappears.

Alright, I will try to replicate. Give me a few minutes.

@satazor Have found a hint... The process gives no output because it waits for the input. But it doesn't send the actual line that is before the output (where is it lost?). So, in short, it waits for the input a line earlier than it is in reality.
In example, the command output is:
Configuring Analytics...
What is the Android app secret?
<waits for the input>

What I actually get in stdout callback is just Configuring Analytics... and that' all.

I see.
Have you tried setting stdio to inherit? https://nodejs.org/api/child_process.html#child_process_options_stdio

@satazor No it didn't help. Actually I have found out that the issue is deeper and actually is in node, not your lib, and the process hangs even with eexec and even if the input is provided..
So anyway, huge thanks for help, I think im gonna open an issue in their repo.


fix: keep consistency with backend email validation

Fixed Issues
$ https://github.com/Expensify/App/issues/17387
Proposal: https://github.com/Expensify/App/issues/17387#issuecomment-1514794314, https://github.com/Expensify/App/issues/17387#issuecomment-1630415664
Tests

Go to a chat and send following valid emails and verify that all are parsed as email

Valid emails
        // Domain length (63 chars in each label)
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
        // Address length (64 chars)
<EMAIL_ADDRESS>
        // Overall length (254 chars)
<EMAIL_ADDRESS>
        // Domain with lots of dashes
<EMAIL_ADDRESS><EMAIL_ADDRESS>
        // Domain with repeated labels of 63 chars
<EMAIL_ADDRESS>
        // TLD >=2 chars
<EMAIL_ADDRESS><EMAIL_ADDRESS>
        // Very short address
<EMAIL_ADDRESS>
        // xn-- style domain name
<EMAIL_ADDRESS>
        // Unusual but valid prefixes
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>

send following invalid emails and verify that the emails are not parsed as email, but only valid parts are extracted as email

Invalid emails
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
        // Invalid period location
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
        // Domain too long (>63 chars in each label)
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
        // Address too long (>64 chars)
<EMAIL_ADDRESS>
        // Incorrect domains start/end
<EMAIL_ADDRESS><EMAIL_ADDRESS>
        // TLD too short
<EMAIL_ADDRESS>
        // TLD too long
<EMAIL_ADDRESS>

Navigate to Settings > Profile > Contact Method > New Contact Method, try an valid / invalid email

QA
same as test
Offline Test
same as test
PR Author checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/139204153/8349663e-6413-4aa3-997e-221ae7a8c228

Mobile Web - Chrome
https://github.com/Expensify/App/assets/139204153/96d76ef7-58c2-4b17-8a8c-1c76e19db5c8

Mobile Web - Safari
https://github.com/Expensify/App/assets/139204153/c52ef5bd-96e2-492e-9e42-0c7c74d1345e
https://github.com/Expensify/App/assets/139204153/08e19510-6479-44c7-9047-8b88ffb37510

Desktop
https://github.com/Expensify/App/assets/139204153/2f5c63bd-ff14-4d69-b7eb-31030abfb8a8

iOS
https://github.com/Expensify/App/assets/139204153/402bcd81-d272-408c-be7e-418f1fb0b0c4
https://github.com/Expensify/App/assets/139204153/18cabaf3-a3eb-49cf-b16c-9e897b939e94

Android
https://github.com/Expensify/App/assets/139204153/c22ee894-80a9-4257-816a-f34e3f3250b9
https://github.com/Expensify/App/assets/139204153/3be612e6-d2bd-4ecb-9a16-9ed74a83a96b

@aimane-chnaif
I am not sure why author checklist is failed. Could you hint me ?

@aimane-chnaif Thanks for your support.
now checklist has been passed

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/NikkiWines in version: 1.3.59-0 🚀

platform
result

🤖 android 🤖
failure ❌

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/NikkiWines in version: 1.3.60-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/NikkiWines in version: 1.3.60-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/luacmartins in version: 1.3.59-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/luacmartins in version: 1.3.60-3 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


feat: S3PathMatchingResourcePatternResolver 3.x.x

:loudspeaker: Type of change

[ ] Bugfix
[x] New feature
[ ] Enhancement
[ ] Refactoring

:scroll: Description
Port of PathMatchingSimpleStorageResourcePatternResolver to 3.x.x with AWS SDK V2
Addresses: https://github.com/awspring/spring-cloud-aws/issues/432
:bulb: Motivation and Context
We need this functionality to resolve all resource in a given bucket with patterns.
:green_heart: How did you test it?
I only tested it directly with a S3 Bucket.
:pencil: Checklist

[ ] I reviewed submitted code
[ ] I added tests to verify changes
[ ] I updated reference documentation to reflect the change
[x] All tests passing
[x] No breaking changes

:crystal_ball: Next steps

[x] Test changes against S3 bucket
[ ] Write JUnit tests

Awesome, thanks this PR! Regarding tests - look at other integration tests for S3 - there is no point in adding unit tests with mocked S3 client. Use Localstack via Testcontainers, create bucket with files, and write test against it.

I just tested it and will provide a running version soon!

I just simplified the previous version, because S3 lists objects in a non hierarchical way so we don't need to use a delimiter, but just list all objects in a paginated way.
s3 bucket: my-s3-bucket-dev
pattern: s3://my-s3-bucket-dev/folder1/folder3/folder4/*.gz
selected file: folder1/folder3/folder4/compressedfile.gz
Here is a debug output:
{"timestamp":"2022-11-11T12:07:12.169+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"Get resources of the following location pattern s3://my-s3-bucket-dev/folder1/folder3/folder4/*.gz","context":"default"}
{"timestamp":"2022-11-11T12:07:12.171+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"The s3 bucket name pattern is my-s3-bucket-dev","context":"default"}
{"timestamp":"2022-11-11T12:07:12.172+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"The s3 key pattern is folder1/folder3/folder4/*.gz","context":"default"}
{"timestamp":"2022-11-11T12:07:12.667+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"List of s3 objects: 5","context":"default"}
{"timestamp":"2022-11-11T12:07:12.667+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"The s3 object key (folder2/folder3/folder5/textfile1.txt) matches the s3 key pattern (folder1/folder3/folder4/*.gz): false","context":"default"}
{"timestamp":"2022-11-11T12:07:12.667+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"The s3 object key (folder1/folder3/folder4/) matches the s3 key pattern (folder1/folder3/folder4/*.gz): false","context":"default"}
{"timestamp":"2022-11-11T12:07:12.667+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"The s3 object key (folder1/folder3/folder4/compressedfile.gz) matches the s3 key pattern (folder1/folder3/folder4/*.gz): true","context":"default"}
{"timestamp":"2022-11-11T12:07:12.667+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"Resolved key: folder1/folder3/folder4/compressedfile.gz based on pattern: folder1/folder3/folder4/*.gz","context":"default"}
{"timestamp":"2022-11-11T12:07:12.671+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"Get resource of the following location s3://my-s3-bucket-dev/folder1/folder3/folder4/compressedfile.gz","context":"default"}
{"timestamp":"2022-11-11T12:07:12.671+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"Creating resource based on location: s3://my-s3-bucket-dev/folder1/folder3/folder4/compressedfile.gz","context":"default"}
{"timestamp":"2022-11-11T12:07:12.672+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"Found the following resource: <resource_with_no_filename>","context":"default"}
{"timestamp":"2022-11-11T12:07:12.672+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"The s3 object key (folder1/folder3/folder5/) matches the s3 key pattern (folder1/folder3/folder4/*.gz): false","context":"default"}
{"timestamp":"2022-11-11T12:07:12.672+0100","level":"DEBUG","thread":"main","logger":"io.awspring.cloud.s3.S3PathMatchingResourcePatternResolver","message":"The s3 object key (folder1/folder3/folder5/compressedfile.gz) matches the s3 key pattern (folder1/folder3/folder4/*.gz): false","context":"default"}

I am going to adjust the debug of the single resource, because s3 resources don't have any file names. I am going to use the uri instead.

Okay, now you can check it. 👍

@maciejwalkowiak - can you help by writing the tests? I don't know when I have time for that. It would be really nice! 👍

We have also troubles with S3Resource as it does not provide any kind of getFilename() from AbstractResource.
To allow a better customization I make the createS3Resource of S3PathMatchingResourcePatternResolver protected so that you are able to adjust the functionality if needed.
new S3PathMatchingResourcePatternResolver(s3Client, resourcePatternResolver){
  @Override
  protected S3Resource createS3Resource(String location){
    return S3ExtendedResource.create(...);
  }
}

Also S3Resource is public and you can write something like S3Resource.create(....), but you are not able to customize the S3Resource, because Location is package default.
For better customization I am going to make Location public so that you can extend S3Resource with S3ExtendedResource extends S3Resource and apply a getFilename()
@Override
public String getFilename(){
  return Pattern.compile("^.*/(.*)\\.?(.*)$")
    .matcher(location.getObject())
    .results().map(m->group(1))
    .findFirst()
    .orElseThrow(() -> new IllegalStateException("Couldn't resolve file name of S3Resource of location:"
    + location))
}

@klopfdreh I'll add tests and address your issues. Thanks for help and feedback!

Just one more question. Is there any reason why you build the url like this?
	@Override
	public URL getURL() throws IOException {
		List<String> splits = new ArrayList<>();
		for (String split : location.getObject().split("/")) {
			splits.add(URLEncoder.encode(split, StandardCharsets.UTF_8.toString()));
		}
		String encodedObjectName = String.join("/", splits);
		return new URL("https", location.getBucket() + ".s3.amazonaws.com", "/" + encodedObjectName);
	}

I would suggest to use:
        GetUrlRequest getUrlRequest = GetUrlRequest.builder().bucket(bucketName).key(key).build();
        URL url = s3Client.utilities().getUrl(getUrlRequest);

@klopfdreh nope. I think we just didn't realise there is a method utilities() on S3Client.

@klopfdreh I've added tests but had to modify one line to get them working - remove the delimiter. I am not sure why it was there and how did that work for you but I guess there was a reason for it which makes me wonder what use case am I missing in tests.
One thing that is still to polish: get rid of commons-lang3 dependency. Either we must use some existing util we already have on the classpath or even copy paste the methods from commons-lang3. We should avoid adding dependencies as much as we can.

Hey @maciejwalkowiak in our case the key of the s3 resources contain delimiters. Example: /test1/test2/myfile.txt. What I did was to split after the last one and added it back again and list all files in this logical parent key. As mentioned this is only a performance improvement to not list all files again.
Regarding common-lang3: I don‘t know if there is an equivalent in Spring which can be used.
All in all I am glad that it is working for your as well. 👍

Hey @maciejwalkowiak - I added the methods to the S3PathMatchingResourcePatternResolver itself. Are you able to have a look at the changes and maybe improve it further more?

I think we're done here. @MatejNedic can you take a look?

I've added the constructor. I agree with @MatejNedic that it should be there - it is unlikely that users will set custom patterns or matcher but quite likely they will want to set custom output stream provider.

I've added the constructor. I agree with @MatejNedic that it should be there - it is unlikely that users will set custom patterns or matcher but quite likely they will want to set custom output stream provider.

All right - I see what you mean, know. 👍

Thanks @klopfdreh for contribution!


chore: onboard out of band security

Added terraform-google-out-of-band-security to list of CFT modules.

this has been applied


Homu users can close any PR or Issue of any other Homu enabled project

I had a PR in kbknapp/clap-rs#921 that said, "Fixes BurntSushi/ripgrep#426" in order to ping the ripgrep author. Once that PR merged, Homu closed BurntSushi/ripgrep#426 even though I have no rights to the ripgrep project.
IMO Humo should probably check if the issue it's closing is in the same repo (or maybe even just org/owner) as the merging PR.

@kbknapp homu was designed for projects that span repositories. I'd expect this behaviour based on that understanding and the understanding that the repository owner for ripgrep set up Homu sometime back and didn't appropriately remove the authorizations.

@sigmavirus24 spanning multiple repositories inside a single org/user is fine and makes perfect sense. But crossing organization boundaries (or user boundaries if the repo isn't part of an org) seems wrong. The fact that the ripgrep author didn't remove the Homu authorizations is orthogonal to this issue.


incorrect date (-1 day)

Thank you for your feedback!
i use your documentation for calculating
https://docs.microsoft.com/en-us/azure/devops/report/powerbi/create-timeinstate-report
but i see problem, last date it seems isn't correct, because if compare with value in azure devops boards, then difference in one day
For example:
User Story in Azure Devops

data in powerbi

this problem starts to create difficulties when calculating general indicators, for example, calculating cycle time per week (values shift slightly)
The issues in this repo are for documentation feedback.
If you are submitting your documentation feedback issue directly through GitHub, please provide the URL of the article so we can route the feedback to the correct author.
Please report Azure DevOps or TFS software bugs, feedback, or questions in the Azure DevOps Developer Community.

@w0nders Thank you for the feedback, assigning this to the author for further review.
If this issue becomes product-related, we recommend soliciting feedback from our product team using the Azure DevOps community.

@KathrynEE @chcomley Can you take a look at this one?

Hi @KathrynEE, This appears to be in your realm. It also appears that is may be an issue for the Dev Community, rather than this article, however I'll leave that determination up to you. Thanks for your patience, @w0nders.

Hi @KathrynEE, This appears to be in your realm. It also appears that is may be an issue for the Dev Community, rather than this article, however I'll leave that determination up to you. Thanks for your patience, @w0nders.

@w0nders Looking into this. We store data into Analytics according to account's timezone but data in Boards could be based on user locale also. Just wanted to confirm is the timezone same for user as account's timezone? This could lead to some difference?

@w0nders Looking into this. We store data into Analytics according to account's timezone but data in Boards could be based on user locale also. Just wanted to confirm is the timezone same for user as account's timezone? This could lead to some difference?

@w0nders any progress on the above ask?

@chcomley Can we close this issue?

@ksmis-gh - Yes, closing this now.


Validation of TP inputs

In the master script, number of trapping stimuli given as input should be checked to have enough items. Currently it is done in the method which create the hit_app whereas it should be moved to method which compiles the input csv.

solved in #18


Inline editing, add extra field

Describe the problem your feature will solve.
My records has a key field named xid which is int type. I'd like to send this xid when saving the inline editing.
Describe the solution you'd like
I found event onSave of grid, but don't know how to do the job correctly. please help.
Describe alternatives you've considered
Can I using xid to replace builtin recid ? How?
Additional context

I just added recid into json with value of xid.  works for some extent.

In the configuration for a grid component you can assign any property from row as 'recid' - for example 'xid'.
recid is just a record identifier, so, if 'xid' can be treat as identifier - just do it.
Example:
let grid = new w2grid({
   recid: 'xid',
   ...rest config
})


plugins/lsp/ccls: fix initOptions

ccls wasn't passing the init options to it's own configuration so they were being ignored..

Nice catch, thanks !

I was trying to look into an issue in a project and was confused why my compile_commands.json wasn't being loaded lol


services.xserver doesn't support multiple GPU setups

The problem
The current NixOS xserver module generates Device and Screen sections for each driver listed in services.xserver.videoDrivers. While this works fine for detecting which driver to use for single-GPU setups, it's completely incompatible with multi-GPU setups.
e.g:
Input: services.xserver.videoDrivers = [ "nvidia" "amdgpu" ];
Resulting X config:
Section "ServerLayout"
  Identifier "Layout[all]"

  # Reference the Screen sections for each driver.  This will
  # cause the X server to try each in turn.
  Screen "Screen-nvidia[0]"
  Screen "Screen-amdgpu[0]"
EndSection

# For each supported driver, add a "Device" and "Screen"
# section.

Section "Device"
  Identifier "Device-nvidia[0]"
  Driver "nvidia"
EndSection

Section "Screen"
  Identifier "Screen-nvidia[0]"
  Device "Device-nvidia[0]"
EndSection

Section "Device"
  Identifier "Device-amdgpu[0]"
  Driver "amdgpu"
EndSection

Section "Screen"
  Identifier "Screen-amdgpu[0]"
  Device "Device-amdgpu[0]"
EndSection

This also has the unintended side-effect of picking up the first GPU that matches the "Driver" directive (most likely dependent on PCI enumeration order).
While I can't speak for everyone, I personally configure my monitor layout through the Xorg config (other solutions include RandR scripts):
{
  services.xserver = {
    enable = true;
    videoDrivers = [ "nvidia" ];
    screenSection = ''
      Option "nvidiaXineramaInfoOrder" "DP-4"
      Option "metamodes" "DP-4: nvidia-auto-detect, DP-2: nvidia-auto-detect"
    '';
  };
}

However, this doesn't work for multi-GPU configurations because screenSection is injected into all Screen sections.
Currently, the only way to fix this is to write the entire config by hand, bypassing most of the xserver options:
{
  services.xserver = {
    enable = true;
    videoDrivers = [ "nvidia" ];
    config = lib.mkForce ''
      # X config here
    '';
  };
}

The solution
In order to address this issue, major refactoring of the xserver module would be required. However, I don't think it's a good idea since a lot of options would get deprecated and/or break backwards compatibility. Perhaps a better idea would be to deprecate services.xserver and move the Xorg configuration to a different module? (this ties into #53394, #94799 and discourse#8051)
The only GPU I have is an NVIDIA one so I can't compare configuration differences. Personally, I don't think it's possible to come up with a good driver-agnostic solution.
Perhaps moving the monitor configuration to vendor-specific namespaces would be a better idea? e.g:
{
  # this is just a random suggestion; there's probably a more appropriate namespace for this
  services.graphics.nvidia-x11 = {
    enable = true;
    devices = {
      gpu0 = {
        # the gpu id can be found using `nvidia-settings -q gpus`
        gpuId = "GPU-eb1363bc-1951-8e58-1103-03e2a08a3dec.GPU-0";
        busId = "PCI:1:0:0";
        primary = true;
      };
      gpu1 = {
        gpuId = "GPU-70ca8357-d891-40eb-8c90-da3abb2522e0.GPU-0";
        busId = "PCI:2:0:0";
      };
    };
    monitors = [
      {
        device = "gpu0";
        port = "DP-2";
        width = 3440;
        height = 1440;
        offsetX = 1440;
        offsetY = 560;
        refreshRate = 120;
        primary = true;
      }
      {
        device = "gpu1";
        port = "DP-4";
        width = 1440;
        height = 2560;
        refreshRate = 120;
        attributes = {
          Rotation = "right";
        };
      }
    ];
  };
}

would generate something like this:
# This is not a working example. It's missing some things like the ServerLayout section
Section "Device"
  Identifier "Device-gpu0"
  Driver "nvidia"
  BusID "PCI:1:0:0"
EndSection

Section "Device"
  Identifier "Device-gpu1"
  Driver "nvidia"
  BusID "PCI:2:0:0"
EndSection

Section "Screen"
  Identifier "Screen0"

  # This is decided by which device has `primary = true`
  # (I have no idea what this does when combined with the metamodes directive below)
  Device "Device-gpu0"

  # This is decided by which monitor has `primary = true`
  Option "nvidiaXineramaInfoOrder" "GPU-eb1363bc-1951-8e58-1103-03e2a08a3dec.GPU-0.DP-2"

  # Apparently you can list displays from different GPUs in the same metamodes directive? See https://collaboradev.com/2016/09/30/arch-linux-hydra-build/
  Option "metamodes" "GPU-eb1363bc-1951-8e58-1103-03e2a08a3dec.GPU-0.DP-2: 3440x1440_120 +1440+560, GPU-70ca8357-d891-40eb-8c90-da3abb2522e0.GPU-0.DP-4: 1440x2560_120 +0+0 {Rotation=right}"
EndSection

This is all untested as I don't own a second NVIDIA GPU. This topic came up on IRC (@KarlJoad)
Other related issues: #96999 #75007

Maybe in this scenario the user supplying their own completely custom xorg.conf is the best option. I believe that can be achieved with
services.xserver.config = lib.mkForce ''
# xorg.conf custom contents
'';

This is similar with issue https://github.com/NixOS/nixpkgs/issues/75007 (lack of flexibility in multi-devices configuration using libinput).
I think a refactoring of the Xserver related modules is really needed, those limitations are kinda bad and surprising for the users.

@aanderse even though in this case writing the config manually might be preferable (due to the large amount of nvidia-specific stuff), the xserver module remains very much inflexible.
After seeing how powerful nix can be, it just leaves me wishing the xserver module was just a little better :)

Fair enough. Is this something you're interested in tackling?

I'm interested but I'm not sure where to start. There's also the part where the display managers are too tightly coupled with the X server... so I guess the question is more about where does the X server settings belong?

Do you think it would help if there was a settings option as in https://github.com/NixOS/rfcs/pull/42 and the existing interface only set settings through the settings options? This way you could use mkForce on the relevant sections.

Do you think it would help if there was a settings option as in https://github.com/NixOS/rfcs/pull/42 and the existing interface only set settings through the settings options? This way you could use mkForce on the relevant sections.

It might take some creativity to coerce xorg.conf into nix attributes... but if you could it would be the basis for a great module.

It might take some creativity to coerce xorg.conf into nix attributes... but if you could it would be the basis for a great module.

It might take some creativity to coerce xorg.conf into nix attributes... but if you could it would be the basis for a great module.

Yeah, for the most part it doesn't look to hard:
Section "Screen"
        Identifier "dummy_screen"
        Device "dummy_card"
        Monitor "dummy_monitor"
        SubSection "Display"
        EndSubSection
EndSection

g

But things like Options or Modelines looks like a pain:
{
				services.xserver-new.settings = {
								Screen = {
												Identifier = "dummy_screen";
												Device = "dummy_card";
												Monitor = "dummy_monitor";
												Display = {
																SomeOption = "foo";
												};
								};
				};
}

It might take some creativity to coerce xorg.conf into nix attributes... but if you could it would be the basis for a great module.

Yeah, for the most part it doesn't look to hard:
Section "Screen"
        Identifier "dummy_screen"
        Device "dummy_card"
        Monitor "dummy_monitor"
        SubSection "Display"
        EndSubSection
EndSection

g

But things like Options or Modelines looks like a pain:
{
				services.xserver-new.settings = {
								Screen = {
												Identifier = "dummy_screen";
												Device = "dummy_card";
												Monitor = "dummy_monitor";
												Display = {
																SomeOption = "foo";
												};
								};
				};
}

it is possible to leave hard things as strings. The goal is to reduce the amount of string that the user with special needs must mkForce.
In you specific case, I'm not xorg conf expert but this looks like reasonable:
{
Modeline = { "1920x1080" = [ 172.80 1920 2040 2248 2576 1080 1081 1084 1118 ]; };
Options = { DPI = "96 x 96"; }
}

it is possible to leave hard things as strings. The goal is to reduce the amount of string that the user with special needs must mkForce.
In you specific case, I'm not xorg conf expert but this looks like reasonable:
{
Modeline = { "1920x1080" = [ 172.80 1920 2040 2248 2576 1080 1081 1084 1118 ]; };
Options = { DPI = "96 x 96"; }
}

@symphorien But in this case we would need to have a special case for Modeline and Options, so they would be blocks right? Not that I am complaining, your idea seems better than mine:
{
  services.xserver-new.settings = {
    Screen = {
      Identifier = "dummy_screen";
      HorizSync = "28.0-80.0";
      VertRefresh = "48.0-75.0";
      Modeline = [ "1920x1080" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 ];
      Option = [ "DPI" "96 x 96" ];
    };
  };
}

@symphorien But in this case we would need to have a special case for Modeline and Options, so they would be blocks right? Not that I am complaining, your idea seems better than mine:
{
  services.xserver-new.settings = {
    Screen = {
      Identifier = "dummy_screen";
      HorizSync = "28.0-80.0";
      VertRefresh = "48.0-75.0";
      Modeline = [ "1920x1080" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 ];
      Option = [ "DPI" "96 x 96" ];
    };
  };
}

Yes, special casing some keys does not sound unreasonable to me. It somewhat increases complexity however, that's the implementer's call to make I guess.
I think Option = [ "DPI" "96 x 96" ]; is not going to fly if it is expected that you can set option twice (no idea if it's really possible, just gessing)
Option "Foo" bar
Option "Baz" bar2

does not easily map to an attrset, because you can't set the key "Option" twice in nix. That's the kind of gotchas you need to be careful of when designing RFC 42 settings options I think.

Yes, special casing some keys does not sound unreasonable to me. It somewhat increases complexity however, that's the implementer's call to make I guess.
I think Option = [ "DPI" "96 x 96" ]; is not going to fly if it is expected that you can set option twice (no idea if it's really possible, just gessing)
Option "Foo" bar
Option "Baz" bar2

does not easily map to an attrset, because you can't set the key "Option" twice in nix. That's the kind of gotchas you need to be careful of when designing RFC 42 settings options I think.

You can use arrays for duplicate keys and keep the "array" values as a pure string. So maybe something like
settings = [
  {  Section = {
     Option = [
       { AllowMouseOpenFail = "on";
          DontZap = "on";
       }
     ];
  }}
];

I'm not sure if this is possible, if Xorg parses the configuration in order than it'll be impossible if a Device depends on a Screen or if any order is to be enforced, it'll probably be a mess of mkOrder, mkBefore, and mkAfter in which case I would just prefer the existing schematic that's less messy.

You can use arrays for duplicate keys and keep the "array" values as a pure string. So maybe something like
settings = [
  {  Section = {
     Option = [
       { AllowMouseOpenFail = "on";
          DontZap = "on";
       }
     ];
  }}
];

I'm not sure if this is possible, if Xorg parses the configuration in order than it'll be impossible if a Device depends on a Screen or if any order is to be enforced, it'll probably be a mess of mkOrder, mkBefore, and mkAfter in which case I would just prefer the existing schematic that's less messy.

I'd be interested in getting this sorted as I've just added a 2nd gpu (nvidia) to my PC (first one is amd) and I'm not getting video output from the second one. I'm using it mostly for CUDA workloads atm but it would be nice to be able to use it for video at some point, especially that I'm also not able to set Coolbits to enable oc and advanced fan control. Anything I could to to help pushing this forward?

+1 Would like this too

Any update on this?


Implement TCP auth

Currently TCP auth is skeleton code. WH should check the AuthControl and AuthTunnel messages.
https://github.com/superfly/wormhole/blob/master/session/tcp_session.go#L118-L123

Being addressed at https://github.com/doodles526/wormhole/tree/handler-rewrite


UX Copy | Capitalization consistency

Please check the CapitAlizaTioN for the menUs to ensure they are all Sentence case (vs Title Case) to make sure we're consistent

Property management -> all flyouts should have 'property' in lower case
Dialog management -> Replace and Repeat have 'dialog' in lower case
Conditions -> Branch: if/else
Conditions -> Branch: Switch

Please update
Connect to QnA Knowledge base to - Connect to QnA Maker

This was addressed in the recent Naming party


Fixed incorrect padding of knobAfter

In this issue #1419 it was found that the rendering knobBefore taking in consideration the padding of the background was incorrect. The same was true for knobAfter yet nothing was done about it (fix was only applied to knobBefore). This results in knobBefore getting drawn up to the end of the bar without caring about the padding of the background:

Fixed version:

Note that this only affects: Uses of ProgressBar with knobAfter that have a background with non-zero padding. It is possible that nobody noticed this bug for many years given how uncommon the use of knobAfter is. (Even myself don't really need it in a vanilla type of way)
Another issue with progress bar was later fixed after the initial one I mentionned: #4446  But this issue only address the typo which caused the bar to have an extra length of the size of the knob. The test example for this has no padding and doesn't mention the padding problem I am fixing here in anyway.
To test this bug fix: make a progress bar with a ninepatch background with padding, and add both knobBefore and knobAfter to be something.

Cheers!


Module 1 Exercise 2 on Time Series [Bako]

Please "drag & drop" exercise 2 file below.

Please UPDATE THE TITLE of this "Issue" in the title bar above with your name.

Excellent graphs!


Support Intellisense in markdown code chunks

https://github.com/Microsoft/RTVS/commit/080da5457cc2e72ce0becb078822e6de85a18cc9


delete unnecessary files

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

F1/1-d-endpoints-section-visio-vis_dss-chm82251289.md
:white_check_mark:Succeeded

F1/1-d-endpoints-section-visio-vis_sdr-chm2000.md
:white_check_mark:Succeeded

F1/a-cell-geometry-sectionvisio-vis_dss-chm51215.md
:white_check_mark:Succeeded

F1/a-cell-geometry-sectionvisio-vis_dss-chm82253224.md
:white_check_mark:Succeeded

F1/a-compatible-activex-component-must-be-a-visual-basic-executable-or-a-dll-office.md
:white_check_mark:Succeeded

F1/a-module-is-not-a-valid-type-office-shared-vblr6-chm1015669.md
:white_check_mark:Succeeded

F1/a-procedure-of-that-name-already-exists-office-shared-vblr6-chm50097.md
:white_check_mark:Succeeded

F1/a-procedure-with-a-paramarray-argument-cannot-be-called-with-named-arguments-off.md
:white_check_mark:Succeeded

F1/about-automation-visio-vis_sdr-chm81901859.md
:white_check_mark:Succeeded

F1/about-compressing-the-data-in-a-text-memo-or-hyperlink-field-access-vbaac10-chm4.md
:white_check_mark:Succeeded

F1/about-strings-visio-vis_dss-chm0.md
:white_check_mark:Succeeded

F1/about-the-formula-tracing-window-visio-vis_dss-chm1037816.md
:white_check_mark:Succeeded

F1/about-the-style-explorer-window-visio-vis_dss-chm1037817.md
:white_check_mark:Succeeded

F1/accelerator-property-office-shared-fm20-chm5225000.md
:white_check_mark:Succeeded

F1/action-cell-actions-sectionvisio-vis_dss-chm5.md
:white_check_mark:Succeeded

F1/action-cell-actions-sectionvisio-vis_dss-chm82251333.md
:white_check_mark:Succeeded

F1/action-query-access-vbaac10-chm47375.md
:white_check_mark:Succeeded

F1/action-tag-section-visio-vis_dss-chm1024511.md
:white_check_mark:Succeeded

F1/action-tag-section-visio-vis_dss-chm60016.md
:white_check_mark:Succeeded

F1/actions-row-actions-sectionvisio-vis_dss-chm1024640.md
:white_check_mark:Succeeded

F1/actions-row-actions-sectionvisio-vis_sdr-chm60017.md
:white_check_mark:Succeeded

F1/actions-section-visio-vis_dss-chm2005.md
:white_check_mark:Succeeded

F1/actions-section-visio-vis_dss-chm82251332.md
:white_check_mark:Succeeded

F1/activate-deactivate-events-office-shared-vblr6-chm102202.md
:white_check_mark:Succeeded

F1/activate-deactivate-events-office-shared-vblr6-chm1100690.md
:white_check_mark:Succeeded

F1/activate-deactivate-events-office-shared-vblr6-chm916334.md
:white_check_mark:Succeeded

F1/activate-method-excel-vbagr10-chm65840.md
:white_check_mark:Succeeded

F1/active-cell-layers-sectionvisio-vis_dss-chm82253226.md
:white_check_mark:Succeeded

F1/active-cell-layers-sectionvisio-vis_sdr-chm10.md
:white_check_mark:Succeeded

F1/activecell-property-excel-vbaxl10-chm132073.md
:white_check_mark:Succeeded

F1/activechart-property-excel-vbaxl10-chm132074.md
:white_check_mark:Succeeded

F1/activecodepane-property-vba-add-in-object-modeloffice-shared-vbob6-chm100176.md
:white_check_mark:Succeeded

F1/activecontrol-property-office-shared-fm20-chm2000700.md
:white_check_mark:Succeeded

F1/activepresentation-property-powerpoint-vbapp10-chm502005.md
:white_check_mark:Succeeded

F1/activeprinter-property-excel-vbaxl10-chm132077.md
:white_check_mark:Succeeded

F1/activeprotectedviewwindow-property-powerpoint-vbapp10-chm502065.md
:white_check_mark:Succeeded

F1/activesheet-property-excel-vbaxl10-chm183079.md
:white_check_mark:Succeeded

F1/activevbproject-property-vba-add-in-object-modeloffice-shared-vbob6-chm1070957.md
:white_check_mark:Succeeded

F1/activewindow-property-excel-vbaxl10-chm183080.md
:white_check_mark:Succeeded

F1/activewindow-property-powerpoint-vbapp10-chm503002.md
:white_check_mark:Succeeded

F1/activewindow-property-vba-add-in-object-modeloffice-shared-vbob6-chm100134.md
:white_check_mark:Succeeded

F1/activeworkbook-property-excel-vbaxl10-chm132080.md
:white_check_mark:Succeeded

F1/activex-component-can-t-create-object-or-return-reference-to-this-object-error-4.md
:white_check_mark:Succeeded

F1/activex-component-did-not-run-correctly-error-338office-shared-vblr6-chm1117819.md
:white_check_mark:Succeeded

F1/activex-component-not-correctly-registered-error-336office-shared-vblr6-chm11177.md
:white_check_mark:Succeeded

F1/activex-control-access-vbaac10-chm108082.md
:white_check_mark:Succeeded

F1/activex-control-item-not-found-error-363office-shared-vblr6-chm363.md
:white_check_mark:Succeeded

F1/add-method-excel-vbagr10-chm65717.md
:white_check_mark:Succeeded

F1/add-method-excel-vbaxl10-chm772077.md
:white_check_mark:Succeeded

F1/add-method-excel-vbaxl10-chm776075.md
:white_check_mark:Succeeded

This comment lists only the first 50 files in the pull request.
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Sliding Window Guidance missing UI options on reForge

Hi there, thanks for all your great work!
I saw you added Sliding Window Guidance recently, and added support on the backend on reForge.
But the UI itself to manage this isn't on either pag.py or seg.py
Could be possible to add the options to use this feature on reForge?
Many thanks!

Hi! I've added "Sliding Window Guidance" tab to reforge in a0cfaad.
Though I'm not really sure about my SWG implementation. I haven't found any relevant code in https://github.com/KaiserTim/diffusion_toy, and the algorithm from their paper (Figure 6.) produces stripe artifacts together with context leaking.

Many thanks for the update!


❓ Question:  How to set the local user PUID and GUID?

🙋♂ Question
Hi - I noticed in your release v0.18.1 that local users are supported instead of the root user.
How do I set this?  Do I have to set an environment variable for e.g., UID and GID?
Thanks!

This isn't possible but feel free to create a feature request. In v0.18.0 the permissions were changed but there wasn't an option to set UID and GID.


Atom opening into Web Developer Tools

When I start Atom, the following window appears:

Ubuntu 16.04 LTS

Please click the red X icon with the 1 next to it and tell us what the error is.

Error: EACCES: permission denied, open '/home/kunzseverin/.atom/compile-cache/less/df1b7fbc57dbeed23a8f1f8de95b4dfebcc06066/imports.json'
  at Object.fs.openSync (fs.js:558:18)
  at Object.module.(anonymous function) [as openSync] (ELECTRON_ASAR.js:173:20)
  at Object.fs.writeFileSync (fs.js:1233:33)
  at Proxy.writeFileSync (<embedded>:17433:29)
  at LessCache.module.exports.LessCache.writeJson (<embedded>:129818:23)
  at LessCache.module.exports.LessCache.setImportPaths (<embedded>:129767:18)
  at new LessCache (<embedded>:129674:18)
  at new LessCompileCache (<embedded>:72289:26)
  at ThemeManager.module.exports.ThemeManager.loadLessStylesheet (<embedded>:24608:32)
  at ThemeManager.module.exports.ThemeManager.loadStylesheet (<embedded>:24596:27)
  at ThemeManager.module.exports.ThemeManager.requireStylesheet (<embedded>:24516:30)
  at ThemeManager.module.exports.ThemeManager.reloadBaseStylesheets (<embedded>:24577:25)
  at ThemeManager.module.exports.ThemeManager.loadBaseStylesheets (<embedded>:24573:25)
  at AtomEnvironment.module.exports.AtomEnvironment.initialize (<embedded>:577:25)
  at module.exports (<embedded>:211:29)
  at setupWindow (file:///usr/share/atom/resources/app.asar/static/index.js:106:12)
  at window.onload (file:///usr/share/atom/resources/app.asar/static/index.js:67:9)

Thanks!  You should be able to fix this by removing the ~/.atom/compile-cache folder and trying again.  Did you perhaps run Atom using sudo atom before this error occurred?

I deleted that folder and it still won't work.
Yes I had to open a file with su rights and therefore I open atom with sudo.

@sevku thanks for the extra info.  Are you still receiving an error in the dev tools?

Alright I had to delete the whole .atom folder. Now it works again. Thanks for your patience.


Offline usage - ERROR! 'collections' is not a valid attribute for a RoleMetadata

Question
Pose question here.
Environment (please complete the following information):
ansible --version
ansible <IP_ADDRESS>
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/user1/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /bin/ansible
python version = 2.7.5 (default, Oct  6 2023, 09:53:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
Looking to add this to our offline network. Kind of an ansible newbie but have run and modified existing playbooks previously. We have a plain RHEL 7.9 server with 'some STIGS's applied. Would like to give these playbooks a go but off to a bad start. Pretty sure I'm missing a ton of dependencies.
Error is: ERROR! 'collections' is not a valid attribute for a RoleMetadata
Any help would be appreciated

Hey @hearts1137,
From the environment setup you posted (thanks for sending that) it looks like you are on a pretty old version of Ansible, 2.4. which came out around 2017. Can you confirm that is the version of the Ansible CLI or Ansible Core software you are using? If you are on version 2.4 of the Ansible CLI/Ansible Core would you be able to upgrade Ansible to a newer version (you'll probably have to move to python3 as well)?
The gist is in late 2.9 they introduced the concept of collections and I think around 2.10 they forced collections. So we had to adjust to make our roles into collection supported roles. There were some other changes along the way with how Ansible handles linting and other things that caused us to make additional changes as well that don't work with older versions. Which is why the minimum supported version for the roles is 2.12.

I'm reading that ansible 2.10 and later is not supported in RHEL7. I do have a rhel8 on my local network with redhat subscription access. Seems like RHEL8 has 2.15.3 in the repo
`[root@server2 ~]# yum info ansible.noarch
Updating Subscription Management repositories.
Last metadata expiration check: 0:00:09 ago on Mon 25 Mar 2024 04:38:57 PM CDT.
Available Packages
Name         : ansible
Version      : 8.3.0
Release      : 1.el8
Architecture : noarch
Size         : 41 M
Source       : ansible-8.3.0-1.el8.src.rpm
Repository   : epel
Summary      : Curated set of Ansible collections included in addition to ansible-core
URL          : https://ansible.com
License      : GPL-3.0-or-later AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND MIT AND MPL-2.0 AND PSF-2.0
Description  : Ansible is a radically simple model-driven configuration management,
: multi-node deployment, and remote task execution system. Ansible works
: over SSH and does not require any software or daemons to be installed
: on remote nodes. Extension modules can be written in any language and
: are transferred to managed machines automatically.
:
: This package provides a curated set of Ansible collections included in addition
: to ansible-core.
[root@server2 ~]# yum info ansible-core.x86_64
Updating Subscription Management repositories.
Last metadata expiration check: 0:00:40 ago on Mon 25 Mar 2024 04:38:57 PM CDT.
Installed Packages
Name         : ansible-core
Version      : 2.15.3
Release      : 1.el8
Architecture : x86_64
Size         : 14 M
Source       : ansible-core-2.15.3-1.el8.src.rpm
Repository   : @System
From repo    : rhel-8-for-x86_64-appstream-rpms
Summary      : SSH-based configuration management, deployment, and task execution system
URL          : http://ansible.com
License      : GPLv3+
Description  : Ansible is a radically simple model-driven configuration management,
: multi-node deployment, and remote task execution system. Ansible works
: over SSH and does not require any software or daemons to be installed
: on remote nodes. Extension modules can be written in any language and
: are transferred to managed machines automatically.
`
Is it possible to get these playbooks running on RHEL7 or do I need RHEL8? Our systems that are air-gapped are all RHEL7.9.

hi @hearts1137
Ideally, it would be good to have a rhel8 (9 preferably) control node for ansible within your airgapped environment, this will future proof you for some time and make life alot easier.
The playbooks should run on ansible 2.10, you will also need the jmespath library installed in order for the playbook to run.
Alternatively you could add a later version of python (3.8+) on your system and install a later ansible versions.
I hope that helps, please let us know if you have any further questions.
uk-bolly

hi @hearts1137
Just to follow up on this, we have removed the jmespath dependancy now. The rate ansible is changing it maybe more advisable to move to rhel9 system unless you are able to setup and install virtual environments with the relevant python version.
I will close this issue as unfortunately there is nothing we are able to assist with beyond this and this has been stale for a few months
Kindest regards
uk-bolly


protocol: block safety index

Description
Proposal to enshrine the idea of a "block safety index", such that other (existing and new) features can be built against this in a unified way.
In particular, as we enter Holocene steady-batch-derivation work, and Interop devnet 2, I believe there is a need for a shared block-safety-index feature, to reduce overall protocol complexity by unifying solutions to the same problem.

This is not really a blocker for the design itself, but worth noting a chore we should do: in various places in our docs, we talk about the statelessness of our components. That statelessness is much weaker already with things like the SafeDB, but this would definitely push us far enough that we'd want to amend documentation.

This is stale, a version of this called fromda package, to store L1 <> L2 increments in a stupid-simple append-only way (single type of entry), was implemented in the op-supervisor.


ComboBox DropDownButton WebView2 menu MenuFlyout not dismissed when dragging the title bar or clicking outside the window

Describe the bug
This issue is bugging WinUI2, WinUI3, Xaml island app, causing this ridiculous UX.
WinUI2 gallery:

WinUI3 gallery:

Xaml island (Task manager):

Steps to reproduce the bug
See screenshot.
Expected behavior
I don't know what to expect
Screenshots
No response
NuGet package version
WinUI 3 - Windows App SDK 1.4.4: 1.4.231219000
Windows version
Windows 11 (22H2): Build 22621
Additional context
Somewhat related to #4554

And WebView2 menu too

And MenuFlyout too


Acceptance tests time out often when run locally

Problem
When running the acceptance tests locally they often time out.
Solution
Let's investigate and figure out why that is and what we can do to optimize the runs.
Alternatives
No response

Tried to reproduce locally multiple times without success. Closing this for now.


Fix usage of reST syntax in prefix parameter of meta

The usage of the prefix parameter of the meta layout function (as per the docs) does not work. There are two problems with this:

The documentation for meta does not mention that backslashes need to be escaped and shows unescaped backslashes instead. The docs for meta_all do not make this mistake.
Since version 0.16, docutils inserts null-characters when parsing escaped backslashes, which in turn is not accepted by ast.parse. The solution is described in the release notes for docutils 0.16: Using node.astext() instead of str(node)

Thanks for the PR and the updated docs :+1:
If you like, you can also add yourself to the AUTHORS list.
I will merge this PR tomorrow, so hurry up ;) (Or create a second PR for the AUTHORS update later)


Steam Audio is not initialized when using Real Time Audio in Unreal Engine

IPLSimulationSettings FSteamAudioManager::GetRealTimeSettings(IPLSimulationFlags Flags)
{
    check(bSettingsLoaded); // <--- fails from OnInitSource call (callback from audio mixer)

Real Time audio can be enabled in the level editor viewport to listen to sounds without a PIE session.

We have just released Steam Audio v4.4.1 (https://github.com/ValveSoftware/steam-audio/releases/tag/v4.4.1), which contains a fix for this issue.


Teleport augmentation

/mvtp world has the quality of teleporting a player to the exact spawn point (within safe constraints). The problem I experience in testing is that a player or mob already standing on the spawnpoint "swallows up" the arriving player. I have searched in vain for a configuration or command option to include an existing entity in the definition of "safe" or otherwise transport the new arrival a little to the side if another entity is already there. I appreciate that this might not always be desirable -- for example, in a default void world the spawn area might consist of a single block -- but sometimes it might be desirable. Any ideas?

My skills are insufficient to create a PR. If someone else would like to take that on, I would be happy to test.