Feature Request: Expand+collapse simultaneously

expandAndCollapse animation, for closing the last expanded item while simultaneously opening the next. This would allow the accordion UI type: http://jqueryui.com/accordion/
I believe one of your commenters on your blog also requested this. I will work on it in the meantime as I know you are busy, but I'm not sure I understand your library well enough to implement perfectly.
Ideally in long lists, the position of the clicked expanding item would have a sort of scroll lock for the group header while everything else moved, or the expanding header would smooth scroll to the top of the screen if the expanding group is too large to fit on the screen at once.

In combination with my fix for issue #34 , I accomplished the accordion by updating my activity as follows:
private int mLastExpandedGrp = -1;
...
    mGrpListView.setOnGroupClickListener(new OnGroupClickListener() {
        @Override
        public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
            if (mGrpListView.isGroupExpanded(groupPosition)) {
                mGrpListView.collapseGroupWithAnimation(groupPosition);
            } else {
                if (mLastExpandedGrp != groupPosition) {
                    mGrpListView.collapseGroupWithAnimation(mLastExpandedGrp);
                }
                mGrpListView.expandGroupWithAnimation(groupPosition);
                mLastExpandedGrp = groupPosition;
            }
            return true;
        }
    });

@doc-rj there seems to be a flicker before collapsing the previous animation.

There is also a problem when a group with many items is expanded, then the user scrolls down to another group and expands it. If we simply collapse the group above and expand the new one, list will not scroll up accordingly after the first group is collapsed and user will be looking at about the middle of the newly expanded group (or completely off if it's short).
I fixed this by adding this method to AnimatedExpandableListView
private void restorePositionAfterCollapse(int groupPos) {
        //If collapse was below the current position, we don't move
        if(groupPos >= getFirstVisiblePosition()) {
            return;
        }
        setSelection(getFirstVisiblePosition() - adapter.getChildrenCount(groupPos));
    }

And calling it inside collapseGroupWithAnimation() before returning/starting animation. I also needed to make sure that collapse finishes first and then start the expansion (otherwise the visible position can be wrong). There is a little flicker as I don't address the situation when we see only a half of first visible item (we need to add a little vertical scroll), but this should be easy to fix.

@sladek-jan Nice approach. If only you posted this six months back, would have saved me a lot of headaches..

Sorry for not being helpful @amalChandran!
In the end, I didn't like how user needed to wait for the collapse to finish. This approach seems to work well and allows simultaneous collapse & expansion.
I added the following to class managing the adapter and listview.
`
private int mLastExpandedGroupIndex = -1;
...
mListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
if (mListView.isGroupExpanded(groupPosition)) {
//Collapse group
mListView.collapseGroupWithAnimation(groupPosition);
mLastExpandedGroupIndex = -1;
} else {
//Collapse last expanded group & expand new
if (mLastExpandedGroupIndex != -1 && mSongGroups.size() > mLastExpandedGroupIndex) {
//If we will now collapse group above us, we need to restore scroll position
//to keep user looking at the same position
boolean needsToRestore = mLastExpandedGroupIndex < mListView.getFirstVisiblePosition();
View firstChild = mListView.getChildAt(0);
int restoreYOffset = (firstChild == null) ? 0 : (firstChild.getTop() - mListView.getPaddingTop());
mListView.collapseGroupWithAnimation(mLastExpandedGroupIndex);
mListView.expandGroupWithAnimation(groupPosition);
if(needsToRestore ) {
SongGroup lastExpandedGroup = mSongGroups.get(mLastExpandedGroupIndex);
int restorePosition = mListView.getFirstVisiblePosition() -
mSongGroupsAndSongs.get(lastExpandedGroup).size();
mListView.setSelectionFromTop(restorePosition, restoreYOffset);
}
                    mLastExpandedGroupIndex = groupPosition;
                } else {
                    //No group to collapse, so expand immediately
                    mListView.expandGroupWithAnimation(groupPosition);
                    mLastExpandedGroupIndex = groupPosition;
                }
            }
            return true;
        }

`


feat(priority): added a priority call

This work is to add priority caller for the generic actor
Usage is as simple as having:
prioritized_call_def get_priorized, nil, Int32 do
     @value
end

Updated to define priority during method definition. I wanted to define queues as soon they need (during prioritized/regular method definition) at https://github.com/NeuraLegion/generic_actor/pull/6/commits/660b74444f2e0e4d2e9266478d29f44c5edafd3f but it didn't compiled

@oitnes actually this looks good, I think we can merge.
@cheusov @dammer want a final look?


chore(roadmap): update for May planning meeting

This looks great to me @slack. Deis v1 LTS testing is temporarily broken until I sort out some issues on the new CI nodes, so disregard the failure here: you can see in the logs that the make -C docs build test passed.

Ah cool. Thanks for the heads up!


Change date format from gregorian to jalali

Is it possible to show Persian date in DateTimepicker?

@AliBayatGH You can change the CultureInfo with the Culture property.


 The real utf8-conforming character set in MySQL is utf8mb4. In 2018, we should be using that and encouraging to use that as a default for MySQL.
Any hypothetical compatibility issue with old MySQL versions, I don't think is any more stringent, and worth caring about, than current existing incompatibilities with obsolete php versions, for example.
And the disastrous effects of using MySQL's "utf8" charset are much worse.

I installed the Advanced Application Project template, I created a database for it with utf8mb4 utf8mb4_unicode_ci as the default collation. Then I configured main_local.php with

            'dsn' => 'mysql:host=localhost;dbname=iframe2',
            //...
            'charset' => 'utf8mb4',

I followed the rest of instructions (including running the migration) and have the application up and running, and I notice that the user table that has been created has utf8_unicode_ci (i.e. "utf8" charset) as its default and for all its fields.
I'm not sure whether this is a specific choice for the User model table based on the belief that allowing 4-byte characters such as smilies in a username wouldn't be a good idea (which could be questionable but arguable) or if this comes from a general "we use utf8 everywhere by default" policy. If it's the latter, then I'm seriously worried.
I wouldn't like to see any more tables created by the framework with utf8 specifically forced as the charset despite the database default being utf8mb4. I can understand forcing a specific charset rather than using the database default for some things, but then that specific charset should be utf8mb4 (which again is true utf-8) for anything that doesn't have a specific reason to be something else.

In the Getting Started guides both for the basic and advanced apps I see you suggest utf8 as the charset in the configuration for a MySQL database. Again, it should be utf8mb4

the actual config file provided with the basic app also has utf8.

Hopefully it's just a matter of the default configuration files provided with the template application projects and the examples in the docs (and apparently something else in  the Advanced app, because utf8 was assigned to the user model table despite the database default and the config), and not much more than that.

Related to #16489, https://github.com/yiisoft/yii2/issues/5119#issuecomment-226990694, https://github.com/yiisoft/yii2/issues/16545,

Note that switching from a 3 byte utf8 to 4 byte utf8 causes some problems with maximum index sizes in Mysql, e.g. https://github.com/luyadev/luya-module-admin/issues/109
I agree that the default should be utf8mb4 though.

/move to yiisoft/db


unique symbol type for Cmd.getState, Cmd.dispatch

Typescript 2.7 added unique symbol to describe symbol types which are unique. Otherwise the types of Cmd.getState and Cmd.dispatch are assignable to each other.

Is this backwards compatible? Does this raise the minimum typescript version? Or are 2.7 features already being used?

These are good questions.
No unique symbol is not backwards compatible. It will cause an syntax exception for anyone using an earlier version of typescript.
I'm not sure if any other syntax being used requires >=2.7. The only way to ensure that would be to downgrade the typescript version in package.json and run the tests. Therefore, I assumed that the minimum version is what is specified in the package.json (typescript 3.2.2). Is a minimum version specified somewhere else?

If it is important to maintain backwards compatibility, it is possible to specify multiple index.d.ts files which will be used by different versions of the typescript compiler:
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-1.html#version-selection-with-typesversions

@bdwain I tested a range of typescript versions and it seems that redux is already using syntax that requires >=2.8. So it is safe to say that unique symbol does not raise the minimum typescript version for redux-loop.

@laszlopandy great sorry for the delay thanks for looking into that


!HERE'S WAY TO WATCH Italy vs Argentina LIVE Streams Free Rugby On TV Channel, 09 November 2024 #580

Italy v Argentina: How to watch, live stream, TV channel, kick-off time and head-to-head stats
Italy begin a triple-header of Autumn Internationals with the visit of Argentina in Udine on Saturday.
Live streaming of Italy v Argentina will also be available to watch via Discovery+. Subscription fees may apply for Italy v Argentina live streaming.
Italy v Argentina kick-off time, date and venue
Italy v Argentina will be played at the Stadio Friuli in Udine, Italy and kick-off is at 17:40 GMT on Saturday 9th November 2024.
Italy v Argentina stats and head-to-head record (H2H)
Winning two matches in the 2024 Six Nations, Italy have maintained their positive trajectory with victories over Tonga and Japan in their last two outings.
Argentina proved no pushovers in the 2024 Rugby Championship and ended the competition by claiming victories over all three opponents in New Zealand, Australia and South Africa.
Argentina have enjoyed plenty of success in this matchup and have won the previous eight clashes between the two nations.
Italy v Argentina head-to-head record (H2H)
Italy wins
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
Argentina’s Los Pumas will face Italy in what is sure to be an exciting and competitive Test match, with both teams eager to build on their recent performances and continue progressing. Los Pumas, known for their aggressive forward play and physicality, will look to dominate the set-piece and bring a strong, direct approach to the game. Their forwards, particularly in the scrum and breakdown, will be key in laying the foundation for quick ball to the backs. Argentina’s backline, capable of dangerous counter-attacks and quick, expansive play, will look to exploit any space or turnovers created by their forwards. The Pumas will focus on their typical strengths: high work rate, big hits, and direct ball carrying.
Italy, on the other hand, will approach the match with a solid game plan, looking to challenge Los Pumas with a disciplined, tactical approach. Known for their robust defense and structured play, Italy will look to frustrate Argentina by limiting space and slowing down the breakdown. Their forwards will need to compete fiercely at the set-piece and in the loose, while their backs, led by key playmakers, will aim to capitalize on any turnover ball or mistakes made by the Pumas. Italy will be hoping to execute a well-balanced game, mixing strong physical play with moments of creativity in attack.
This match promises to be a physical, hard-fought encounter, with Los Pumas looking to impose their power and intensity, while Italy will rely on discipline and tactical awareness to counteract Argentina’s strengths. Both teams are evenly matched, making it a highly unpredictable contest where execution, composure, and key moments of individual brilliance will decide the outcome. Expect a game full of intensity, passion, and drama, with both teams hungry for victory.
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪
ℝ𝕦𝕘𝕓𝕪

ytutyu

💻Best RUGBY Streams for PC/MAC 1080p/720p 👇👇
🔴Full HD:🏉 Today Rugby Live Streams For fRee
📲Mobile friendly 1080p/720p 👇👇
🔴Mobile Free:🏉 https://tinyurl.com/Today-Rugby-Live
🏉England vs Australia Live Streams For fRee
🏉USA vs Portugal Live Streams For fRee
🏉Italy vs Argentina Live Streams For fRee
🏉France vs Japan Live Streams For fRee
💻Best RUGBY Streams for PC/MAC 1080p/720p 👇👇
🔴Full HD:🏉 Today Rugby Live Streams For fRee
📲Mobile friendly 1080p/720p 👇👇
🔴Mobile Free:🏉 https://tinyurl.com/Today-Rugby-Live
🏉England vs Australia Live Streams For fRee
🏉USA vs Portugal Live Streams For fRee
🏉Italy vs Argentina Live Streams For fRee
🏉France vs Japan Live Streams For fRee
💻Best RUGBY Streams for PC/MAC 1080p/720p 👇👇
🔴Full HD:🏉 Today Rugby Live Streams For fRee
📲Mobile friendly 1080p/720p 👇👇
🔴Mobile Free:🏉 https://tinyurl.com/Today-Rugby-Live
🏉England vs Australia Live Streams For fRee
🏉USA vs Portugal Live Streams For fRee
🏉Italy vs Argentina Live Streams For fRee
🏉France vs Japan Live Streams For fRee
💻Best RUGBY Streams for PC/MAC 1080p/720p 👇👇
🔴Full HD:🏉 Today Rugby Live Streams For fRee
📲Mobile friendly 1080p/720p 👇👇
🔴Mobile Free:🏉 https://tinyurl.com/Today-Rugby-Live
🏉England vs Australia Live Streams For fRee
🏉USA vs Portugal Live Streams For fRee
🏉Italy vs Argentina Live Streams For fRee
🏉France vs Japan Live Streams For fRee
💻Best RUGBY Streams for PC/MAC 1080p/720p 👇👇
🔴Full HD:🏉 Today Rugby Live Streams For fRee
📲Mobile friendly 1080p/720p 👇👇
🔴Mobile Free:🏉 https://tinyurl.com/Today-Rugby-Live
🏉England vs Australia Live Streams For fRee
🏉USA vs Portugal Live Streams For fRee
🏉Italy vs Argentina Live Streams For fRee
🏉France vs Japan Live Streams For fRee
💻Best RUGBY Streams for PC/MAC 1080p/720p 👇👇
🔴Full HD:🏉 Today Rugby Live Streams For fRee
📲Mobile friendly 1080p/720p 👇👇
🔴Mobile Free:🏉 https://tinyurl.com/Today-Rugby-Live
🏉England vs Australia Live Streams For fRee
🏉USA vs Portugal Live Streams For fRee
🏉Italy vs Argentina Live Streams For fRee
🏉France vs Japan Live Streams For fRee
💻Best RUGBY Streams for PC/MAC 1080p/720p 👇👇
🔴Full HD:🏉 Today Rugby Live Streams For fRee
📲Mobile friendly 1080p/720p 👇👇
🔴Mobile Free:🏉 https://tinyurl.com/Today-Rugby-Live
🏉England vs Australia Live Streams For fRee
🏉USA vs Portugal Live Streams For fRee
🏉Italy vs Argentina Live Streams For fRee
🏉France vs Japan Live Streams For fRee


Issue with camera (flip method)

I am working on this using jetson nano. The current xavier version camera code is making my output display upside down because of flip method. May I know how to modify the codes to display the camera normally.

If you are on master, you can use the --flip-method command line option.  Run the program with --help to see the options to it.

From: spy-maker<EMAIL_ADDRESS>Sent: Thursday, August 20, 2020 9:39:26 PM
To: dusty-nv/jetson-inference<EMAIL_ADDRESS>Cc: Subscribed<EMAIL_ADDRESS>Subject: [dusty-nv/jetson-inference] Issue with camera (flip method) (#689)
I am working on this using jetson nano. The current xavier version camera code is making my output display upside down because of flip method. May I know how to modify the codes to display the camera normally.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/dusty-nv/jetson-inference/issues/689, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADVEGK6OS6AICQFHHPUL44TSBXF45ANCNFSM4QGY2OWA.

Do I need to change this part in gstCamera.cpp file?

If you are on master, you can use the --flip-method command line option.  Run the program with --help to see the options to it.

From: spy-maker<EMAIL_ADDRESS>Sent: Thursday, August 20, 2020 9:39:26 PM
To: dusty-nv/jetson-inference<EMAIL_ADDRESS>Cc: Subscribed<EMAIL_ADDRESS>Subject: [dusty-nv/jetson-inference] Issue with camera (flip method) (#689)
I am working on this using jetson nano. The current xavier version camera code is making my output display upside down because of flip method. May I know how to modify the codes to display the camera normally.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/dusty-nv/jetson-inference/issues/689, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADVEGK6OS6AICQFHHPUL44TSBXF45ANCNFSM4QGY2OWA.

Hi,
I still cannot fix the issue. I tried to modify the codes in gstcamera.cpp file but I still can't solve it.
Can you provide me a detailed step on how to fix the flip method issue?

Hi,
I still cannot fix the issue. I tried to modify the codes in gstcamera.cpp file but I still can't solve it.
Can you provide me a detailed step on how to fix the flip method issue?

If you update your repo to master, you don't need to edit any file anymore.  You can just use the --flip-method command line argument:
$ video-viewer.py --flip-method=rotate-180 csi://0

If you update your repo to master, you don't need to edit any file anymore.  You can just use the --flip-method command line argument:
$ video-viewer.py --flip-method=rotate-180 csi://0

Thanks for reply. Now I can the see the normal display. But how can I make this change applicable to all the programs?
Currently only the camera output for video-viewer.py is solved.

If you update your repo to master, you don't need to edit any file anymore.  You can just use the --flip-method command line argument:
$ video-viewer.py --flip-method=rotate-180 csi://0

Thanks for the reply. The problem is fixed for few program files. Is there any steps to make this change permanent instead of typing everytime in Terminal?

Hi, I'm looking for the same answer as spy-maker

@mfreyne , have you tried running with --flip-method=rotate-180 argument?

Hi dusty-nv,
I have not tried this as I'm unsure where to put this code, can I place it in my-detection.py?
or
in gstCamera.cpp?
Hints and help greatly appreciated!
Thank you

--flip-method=rotate-180 is a command line argument to the detectnet/imagenet/segnet/video-viewer sample programs.
If you wanted to add support for this argument to my-detection.py, change the videoSource line to:
import sys
camera = jetson.utils.videoSource("csi://0", argv=sys.argv)

Sorry dusty-nv
I think that I am in over my depth, I cant figure it out

dusty-nv
The penny just dropped, I got it working
Thank you so much and I really enjoy this Jetson Nano

OK cool, glad you got it working @mfreyne !

i am implementing this on the TX2 i am having the same issue of inverted image. i tried the suggested comments above and changing the code but does not seem to work. Could anyone help me out?

Hi @peter58-blip, does running video-viewer utility with --flip-method=rotate-180 result in the correct orientation of the image?

https://gstreamer.freedesktop.org/documentation/videofilter/videoflip.html?gi-language=c
video-viewer --flip-method=
none (0) – Identity (no rotation)
clockwise (1) – Rotate clockwise 90 degrees
rotate-180 (2) – Rotate 180 degrees
counterclockwise (3) – Rotate counter-clockwise 90 degrees
horizontal-flip (4) – Flip horizontally
vertical-flip (5) – Flip vertically
upper-left-diagonal (6) – Flip across upper left/lower right diagonal
upper-right-diagonal (7) – Flip across upper right/lower left diagonal
automatic (8) – Select flip method based on image-orientation tag

The "--flip-method" is not applicable for webcam (from the docs :" flip method to apply to input (excludes V4L2)".
is there a way to to flip with image on the GPU (without opencv)?

Hi @captain-crypto, I just added support for --input-flip method for V4L2 webcams in https://github.com/dusty-nv/jetson-inference/commit/9c255b9e48229665428e086f2e268d21c7763314
Can you let me know if it works for you?

I am currently having problems with the FLIP method with picamera csi: // 0
the video stream of the camera is upside down.
When I try with ./detectnet.py --flip-method = horizontal csi: // 0 ---> flip vertical
./detectnet.py --flip-method = vertical csi: // 0 ---> flip horizontal
./detectnet.py --flip-method = rotate-180 csi: // 0 ---> crash or freeze why ??????
./detectnet.py --flip-method = clockwise csi: // 0 ---> counterclockwise
./detectnet.py --flip-method = counterclockwise csi: // 0 ---> clockwise
I have the same problem using --input-flip
./detectnet.py --input-flip = vertical csi: // 0 ---> flip horizontal
./detectnet.py --input-flip = rotate-180 csi: // 0 ---> crash or freeze why ??????
./detectnet.py --input-flip = clockwise csi: // 0 ---> counterclockwise
./detectnet.py --input-flip = counterclockwise csi: // 0 ---> clockwise
What can this malfunction depend on?I leave a photo of my jetson nano environment

For example:
jack@jack-desktop:~/jetson-inference/build/aarch64/bin$ ./detectnet.py --flip-method=rotate-180  --network=ssd-inception-v2

Same problem here. :)
While using --inpute-rate=rotate-180 in python code and also while trying to change flip method in gstcamera.cpp.
In python code:
camera1 = jetson_utils.videoSource('csi://0', argv=['--input-width=3840', '--input-height=2160', '--input-rate=10', '--input-flip=rotate-180'])
Terminal log:
[gstreamer] initialized gstreamer, version <IP_ADDRESS>
[gstreamer] gstCamera -- attempting to create device csi://0
[gstreamer] gstCamera pipeline string:
[gstreamer] nvarguscamerasrc sensor-id=0 wbmode=3 tnr-mode=2 tnr-strength=1 ee-mode=2 ee-strength=1 exposurecompensation=0 ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=10/1, format=(string)NV12 ! nvvidconv flip-method=0 ! video/x-raw(memory:NVMM) ! appsink name=mysink
[gstreamer] gstCamera successfully created device csi://0
[video]  created gstCamera from csi://0
gstCamera video options:
-- URI: csi://0
- protocol:  csi
- location:  0
-- deviceType: csi
-- ioType:     input
-- width:      3840
-- height:     2160
-- frameRate:  10
-- numBuffers: 4
-- zeroCopy:   true
-- flipMethod: none
[gstreamer] opening gstCamera for streaming, transitioning pipeline to GST_STATE_PLAYING
[gstreamer] gstreamer changed state from NULL to READY ==> mysink
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter1
[gstreamer] gstreamer changed state from NULL to READY ==> nvvconv0
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter0
[gstreamer] gstreamer changed state from NULL to READY ==> nvarguscamerasrc0
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter1
[gstreamer] gstreamer changed state from READY to PAUSED ==> nvvconv0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter0
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> nvarguscamerasrc0
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline0
[gstreamer] gstreamer message new-clock ==> pipeline0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nvvconv0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nvarguscamerasrc0
[gstreamer] gstreamer message stream-start ==> pipeline0
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3840 x 2160 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 22.250000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1920 x 1080 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 22.250000; Exposure Range min 13000, max 683709000;
GST_ARGUS: Running with following settings:
Camera index = 0
Camera mode  = 0
Output Stream W = 3840 H = 2160
seconds to Run    = 0
Frame Rate = 29.999999
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
[gstreamer] gstCamera -- onPreroll
[gstreamer] gstBufferManager recieve caps:  video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, format=(string)NV12, framerate=(fraction)10/1
[gstreamer] gstBufferManager -- recieved first frame, codec=raw format=nv12 width=3840 height=2160 size=1008
[gstreamer] gstBufferManager -- recieved NVMM memory
[cuda]   allocated 4 ring buffers (8 bytes each, 32 bytes total)
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysink
[gstreamer] gstreamer message async-done ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysink
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline0
nvbuf_utils: dmabuf_fd 1256 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD... Exiting...
NvBufferGetParams failed for dst_dmabuf_fd
nvbuffer_transform Failed
[cuda]   allocated 4 ring buffers (24883200 bytes each, 99532800 bytes total)
When flipping "horisontal" or "vertical" it works, it seems like only rotate-180 doesn't.

Hi @raulo987, due to this code, it's actually the default to use rotate-180 as most cameras need rotated:
https://github.com/dusty-nv/jetson-utils/blob/b29cf49639224351d55b66647e2adf89124626bf/camera/gstCamera.cpp#L156
Can you try either running it with --input-flip=none or commenting out that code block and recompiling/reinstalling?

I'm having the same crashing issue using 'rotate-180' with the CSI camera...
@dusty-nv I tried running with --input-flip=none, which didn't have an effect on the camera stream (gave the original upside-down output)

@paulblum can you provide your terminal log from when you run it?

@dusty-nv
pb@jetson-nano:~$ cd jetson-inference/build/aarch64/bin
pb@jetson-nano:~/jetson-inference/build/aarch64/bin$ video-viewer 0 --input-flip=rotate-180
[gstreamer] initialized gstreamer, version <IP_ADDRESS>
[gstreamer] gstCamera -- attempting to create device csi://0
[gstreamer] gstCamera pipeline string:
[gstreamer] nvarguscamerasrc sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=30/1, format=(string)NV12 ! nvvidconv flip-method=0 ! video/x-raw(memory:NVMM) ! appsink name=mysink
[gstreamer] gstCamera successfully created device csi://0
[video]  created gstCamera from csi://0
------------------------------------------------
gstCamera video options:
------------------------------------------------
  -- URI: csi://0
     - protocol:  csi
     - location:  0
  -- deviceType: csi
  -- ioType:     input
  -- width:      1280
  -- height:     720
  -- frameRate:  30
  -- numBuffers: 4
  -- zeroCopy:   true
  -- flipMethod: none
------------------------------------------------
[OpenGL] glDisplay -- X screen 0 resolution:  1920x1080
[OpenGL] glDisplay -- X window resolution:    1920x1080
[OpenGL] glDisplay -- display device initialized (1920x1080)
[video]  created glDisplay from display://0
------------------------------------------------
glDisplay video options:
------------------------------------------------
  -- URI: display://0
     - protocol:  display
     - location:  0
  -- deviceType: display
  -- ioType:     output
  -- width:      1920
  -- height:     1080
  -- frameRate:  0
  -- numBuffers: 4
  -- zeroCopy:   true
------------------------------------------------
[gstreamer] opening gstCamera for streaming, transitioning pipeline to GST_STATE_PLAYING
[gstreamer] gstreamer changed state from NULL to READY ==> mysink
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter1
[gstreamer] gstreamer changed state from NULL to READY ==> nvvconv0
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter0
[gstreamer] gstreamer changed state from NULL to READY ==> nvarguscamerasrc0
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter1
[gstreamer] gstreamer changed state from READY to PAUSED ==> nvvconv0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter0
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> nvarguscamerasrc0
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer message new-clock ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nvvconv0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nvarguscamerasrc0
[gstreamer] gstreamer message stream-start ==> pipeline0
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3264 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 3264 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1640 x 1232 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 120.000005 fps Duration = 8333333 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
   Camera index = 0
   Camera mode  = 5
   Output Stream W = 1280 H = 720
   seconds to Run    = 0
   Frame Rate = 120.000005
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
[gstreamer] gstCamera -- onPreroll
[gstreamer] gstBufferManager recieve caps:  video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, format=(string)NV12, framerate=(fraction)30/1
[gstreamer] gstBufferManager -- recieved first frame, codec=raw format=nv12 width=1280 height=720 size=1008
[gstreamer] gstBufferManager -- recieved NVMM memory
[cuda]   allocated 4 ring buffers (8 bytes each, 32 bytes total)
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysink
[gstreamer] gstreamer message async-done ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysink
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline0
[cuda]   allocated 4 ring buffers (2764800 bytes each, 11059200 bytes total)
video-viewer:  captured 0 frames (1280x720)
[OpenGL] glDisplay -- set the window size to 1280x720
[OpenGL] creating 1280x720 texture (GL_RGB8 format, 2764800 bytes)
[cuda]   registered openGL texture for interop access (1280x720, GL_RGB8, 2764800 bytes)
video-viewer:  captured 1 frames (1280x720)
nvbuf_utils: dmabuf_fd 1052 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD... Exiting...
NvBufferGetParams failed for dst_dmabuf_fd
nvbuffer_transform Failed
[gstreamer] gstCamera::Capture() -- a timeout occurred waiting for the next image buffer
[gstreamer] gstCamera::Capture() -- a timeout occurred waiting for the next image buffer
[gstreamer] gstCamera::Capture() -- a timeout occurred waiting for the next image buffer
^Creceived SIGINT
[gstreamer] gstCamera::Capture() -- a timeout occurred waiting for the next image buffer
video-viewer:  shutting down...
[gstreamer] gstCamera -- stopping pipeline, transitioning to GST_STATE_NULL
GST_ARGUS: Cleaning up
CONSUMER: Done Success
GST_ARGUS: Done Success
[gstreamer] gstCamera -- pipeline stopped
video-viewer:  shutdown complete

terminal.log

@paulblum please see my suggestion in https://github.com/dusty-nv/jetson-inference/issues/1673#issuecomment-1587825211


Optimize write_to_file in windows-bindgen to avoid unnecessary file writes

Alternative to #3072 to avoid unnecessary file writes that trigger side effects in build systems and IDEs.
I ended up doing the same thing for cppwinrt years ago as msbuild and razzle had a real problem for similar reasons.

Unfortunately, I think there's a compelling reason not to do this unconditionally.  Many build systems expect that the timestamps on the output files of a task will be newer than the timestamps of the inputs of a task, after running a task.  If we don't update the output timestamps, then build systems will re-run bindgen every time.  So this breaks incremental builds in environments that use timestamps.
Maybe this could be a configuration option?

Interesting, the github workflow doesn't seem to like it either.

Maybe it could be a boolean parameter to bindgen: Always update output?  If the output reads the same, then maybe we just "touch" the output to update its last-modified time.  I don't see a way to do that directly in std::fs, so maybe we just call std::fs::File::open with the "open existing for write" parameters, then do nothing, then close the file.  I'm not sure if that's guaranteed to update the mod time though.

I'm not sure if that's guaranteed to update the mod time though.

File::set_times was stabilized a few versions ago.

Ah, good.  I wasn't aware of File::set_times.  That's perfect.
Still, I would like this behavior to be controllable.  The caller should be able to choose between "do a single unconditional write" vs. this diffing behavior.  I say this because my team manages build systems (the Windows build lab), and our buidl systems do a lot of introspection into the file access patterns of tools that they execute.  This "read and verify" pattern will be flagged as a very problematic behavior by several major build systems because it looks like a false dependency on a previous state, when it's really not.

For what it's worth, cppwinrt has done this for years without any trouble.
https://github.com/microsoft/cppwinrt/blob/master/cppwinrt/text_writer.h#L178
Anyway if this is not desirable, I'd rather just leave the current behavior alone. If developers have problems with rust-analyzer they can temporarily disable it while working on the windows-rs repo. I never use it for this reason.
We can also separately reduce the overhead and optimize things, like using windows-bindgen rather than riddle in the standalone tests.


request.authorization.password missing characters

sent curl -u 'me@someaddress.net':'=eers3e^X:7' http://localhost:8080/oauth/token
Expected Behavior
request.authorization.password should be =eers3e^X:7
curl -u 'me@someaddress.net':'=eers3e^X:7' http://localhost:8080/oauth/token

@app.route('/oauth/token')
#@http_auth_required
def token():
    logger.info(request.authorization.password )

Actual Behavior
request.authorization.password should is =eers3eX:7
Notice the request.authorization.password is missing this character "^" between the e and X.
Environment

Python version: 3.6.5 (win x64)
Flask version:  1.1.1
Werkzeug version: 0.16.0

Please use Stack Overflow for questions about your own code. This tracker is for issues related to the project itself. Be sure to include a minimal, complete, and verifiable example.


add docs to develop dashboard and shell apps within ood itself

Modify this link to include the branch name, and possibly the page this PR modifies:
https://osc.github.io/ood-documentation-test/ood-in-ood-dev/
Add your description here
This PR adds sections on how to use the sandbox capability of OOD to do development work, from within the production system, on a separate dev dashboard or shell app.
This also includes tips in presenting all this in how you can set new environment variables for this dev dashboard along with how to set your very own configuration directory for the dev dashboard as well.
Similarly, the shell app entry shows a user how to make their own dev shell, how to make changes to this shell, and then how to rebuild correctly to see the changes.
I'd like to add some more to this such as work on the Files app as well, the goal being to show the world how we do this internally at OSC.

To-do

add some pictures for the dev dashboard with color variation
cleanup some wording
add a "Kitchen Sink" entry to show users the env variables

I think I'm happy with this at this point and good with a review and pulling it in. We can enrich the entries more if desired later, but I think this at least gives good fundamentals on how to do this type of work on ood.


Stop handling HTTP_PROXY

The urllib.getproxies code that currently exists has a bug where it handles the HTTP_PROXY environment variable other than the http_proxy one it should actually handle.

This might be acceptable because they have another workaround in place.


fix(Card): Animation Fixes and Gamut migration

Overview

PR Checklist

[ ] Related to designs:
[ ] Related to JIRA ticket: ABC-123
[ ] I have run this code to verify it works
[ ] This PR includes unit tests for the code change

📬Published Alpha Packages:@codecademy/gamut-kit@0.2.14-alpha.81eea5.0@codecademy/gamut-labs@11.2.2-alpha.81eea5.0@codecademy/gamut@26.2.3-alpha.81eea5.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://604992664f76640b6f95884f--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.2.14-alpha.1b8e8c.0@codecademy/gamut-labs@11.2.2-alpha.1b8e8c.0@codecademy/gamut@26.2.3-alpha.1b8e8c.0<EMAIL_ADDRESS>
📬Published Alpha Packages:@codecademy/gamut-kit@0.2.14-alpha.8349c0.0@codecademy/gamut-labs@11.2.2-alpha.8349c0.0@codecademy/gamut@26.2.3-alpha.8349c0.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://604a3cdcbf3ebe13c0e71cd2--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.2.19-alpha.531202.0@codecademy/gamut-labs@11.4.2-alpha.531202.0@codecademy/gamut@26.5.1-alpha.531202.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://6050ba61ee00f3f104703758--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.2.20-alpha.c2e674.0@codecademy/gamut-labs@11.4.3-alpha.c2e674.0@codecademy/gamut@26.5.2-alpha.c2e674.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://6050bc4f688cf5d0123fffa0--gamut-preview.netlify.appDeploy Logs


Adapt Project resource according to latest decisions

What this PR does / why we need it:
We have added the Project resource to the Garden API with #330. However, it was not possible to manage the members of a project directly with the resource. Moreover, the implementation was violating some best-practices and conventions of Kubernetes (e.g., an admission controller created resources, effectively causing side-effects).
Which issue(s) this PR fixes:
Fixes #357
Fixes #409
Special notes for your reviewer:
With this change we

add a new optional field .spec.createdBy (*rbacv1.Subject, immutable).
add a new optional field .spec.members ([]rbacv1.Subject, resulting in RoleBindings in the corresponding Namespace that binds the members to the "project-member" ClusterRole (this was done by the Dashboard before)).
change a required field to an optional field .spec.owner (*rbacv1.Subject).
do no longer generate conditions for Projects (.status.conditions removed).
do generate Events for Projects and write its state into .status.phase (one of Pending, Ready, Terminating, Failed).
remove the introduced admission controller that was creating Namespaces for Projects.
move all responsibilities/logic for creating, reconciling, and deleting Projects to the Project controller (we are now leveraging Kubernetes' optimistic concurrency controls to prevent race conditions).
remove the migration loop that was automatically creating Project resources out of properly labelled Namespaces before starting the "shoot" controller.
remove the "project-namespace controller" that was automatically creating Project resources out of properly labelled Namespaces (during runtime).
migrate all existing RoleBindings created by prior versions of Gardener dashboard, i.e. we add all the subjects to the new .spec.members field of the corresponding Project (after that we delete these legacy RoleBindings).

:warning: The Gardener dashboard is finalizing the adaptation of these changes (gardener/dashboard#231). Hence, once this is merged the next Gardener version won't work with dashboard versions < 1.23.
PS: I have prefixed the api-versions and tls-cipher-suites charts with utils- and adapted all remaining charts. /cc @mvladev
Release note:
The `Project` resource has been changed to support management of project members (by setting `.spec.members`, please take a look at the [example `Project` resource](https://github.com/gardener/gardener/blob/master/example/05-project-dev.yaml)).

:warning: The migration logic for automatically creating `Project` resource out of properly labelled `Namespace`s has been removed. Upgrading from a Gardener version prior 0.11.0 is not supported. Also, this Gardener version is not compatible with Gardener Dashboard versions prior 1.23.0.

Thanks for the feedback, I've addressed it and rebased the branch.


Update and implementation of UMP SDK to 2.2.0/2.3.0

Description
Updated the UMP SDK version for Android and iOS and surfaced the missing methods on the dart layer.
Related Issues

https://github.com/googleads/googleads-mobile-flutter/issues/944

Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]).
This will ensure a smooth and quick review process. Updating the pubspec.yaml and changelogs is not required.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
[x] All existing and new tests are passing.
[x] I updated/added relevant documentation (doc comments with ///).
[x] The analyzer (flutter analyze) does not report any problems on my PR.
[x] I read and followed the Flutter Style Guide.
[x] I signed the CLA.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
[x] No, this is not a breaking change.

ACK: https://github.com/googleads/googleads-mobile-flutter/issues/1024

I definitely do appreciate a more Dart-like approach with these new APIs. Could there also be a loadAndShowPrivacyOptionsFormIfRequired? (maybe too long of a name)

I definitely do appreciate a more Dart-like approach with these new APIs. Could there also be a loadAndShowPrivacyOptionsFormIfRequired? (maybe too long of a name)

There is a showPrivacyOptionsForm() API that can be triggered from a button in your app settings, for example. You can query getPrivacyOptionsRequirementStatus() to determine if you need to show this button or not.

@LTPhantom iOS recently updated their UMP SDK version to 2.4.0 last week

@LTPhantom iOS recently updated their UMP SDK version to 2.4.0 last week

Acknowledged. Current code in this PR should be compatible with it.


function-name rule has mismatches in options schema/meta, readme description, and actually accepted rules

Feature request
Is your feature request that we implement a new rule?
No
Is your feature request related to a problem? Please describe.

README description of function-name has only description of object with regular expression, but no mention of string flag.

function-name rule meta has only description, schema, and examples of string flags.

function-name rule schema and examples expect string flags right after true that enables rule, but implementation will parse these flags only as second option.

Describe the solution you'd like

Update README.md, rules metadata (options description, schema, and examples) to represent both object and string flags.

Update rule options parsing so that string flags can be in first position, if configuration object is not provided (when defaults are OK, but need to control over static private validation)

Describe alternatives you've considered

Update only README.md - this will provide info for end user, but will require some effort and may be missed during implementation of #575 or similar

Restrict string flags to second position - is doesn't look great set flag as [true, {}, "validate-private-statics-as-private"]

Additional context
Noticed in scope of #665

☠  It's time! ☠
Per #876, this repository is no longer accepting feature pull requests. TSLint is being deprecated and we recommend you switch to https://typescript-eslint.io.
Thanks for open sourcing with us, everyone!


notebooks\devs\toy-strain-model.ipynb

In the notebooks\devs\toy-strain-model.ipynb, "import holodeck.evolution" and "import holodeck.population" weren't working, so I replaced them with "import holodeck.discrete.evolution" and "import holodeck.discrete.population". Maybe the directory was changed? "import zcode.math" is also not working, but I don't know what to change it by.

Thanks for pointing this out.  This notebook is very old and almost completely deprecated.  (Much of the materials in the notebooks/devs subfolder are deprecated/defuct in some way.)  That being said: the two zmath methods that are being used are (1) random_power (which can also be found in holodeck.utils), and (2) spacing -- and this one can be replaced by np.logspace(*np.log10(masses), NBINS+1).  Let me know if there are particular components from this notebook that would be helpful for you!

Okay thank you! No worries, I was just wondering.


[Feature Request] Add grouped by folder view to git

VSCode Version: 1.8.1
OS Version: Ubuntu 16.10

It would be nice to have a grouped by folder visualization mode for the git pane. It is quite useful when you're verifying what you're gonna pack in a commit.

// CC @joaomoreno

I'd love this!

#14582


TemplateLiteralMatch populates its own importPath and importIdentifier

This is a PoC of how to do #42 and help unblock template imports in ember-template-lint.

My approach populates the import path and the import name in a TemplateLiteralMatch
Removes the ParseTemplatesOptions. Instead of supplying that information, it is derived from the parsed imports and compared to an allow list of import paths and names. This seems more correct, as previously a string like lol`hahah` would return a parsed template if a templateTag: 'template' option were passed, but return [] if a templateLiteral option array were passed but there were no import matches.

This may completely miss the mark, but it's a good jumping off point.
cc: @rwjblue @chriskrycho

@rwjblue I think I misunderstood 42 then. Do we just want to pass the info coming from ParseTemplatesOptions and populate importPath and importIdentifier in TemplateLiteralMatch?

Do we just want to pass the info coming from ParseTemplatesOptions and populate importPath and importIdentifier in TemplateLiteralMatch?

Yes, I think so...


Sync not matching some methods

Sync is ignoring @lang and @choice if they are used just after an HTML tag.
For example: <p>@lang('language.line')</p>
The problem is that the regex is ignoring them because the first part: [^\w|>]
Is that the expected behavior?
I have been playing with the regex in https://regex101.com/r/jS5fX0/2 but I'm not sure how to solve this in the right way.

I was wondering about this same thing today...
The regex is explicitly ignoring anything that starts with an > (because ->trans('lang.line')), but this causes a lot of trouble with Blade one-liners as the one stated by @gregoriohc.
Maybe this could be fixed with a negative lookbehind on the > char to assert that it doesn't have a - before. Something like this: https://regex101.com/r/jS5fX0/3.
What dou you think @themsaid?

That regex here would fix it (https://regex101.com/r/jS5fX0/3) I believe, are you willing to make a PR? :)

Of course. Done!


how to create a 'nothing' transition

i was wondering if there is a way to create a (custom) transition that does nothing. i.e. immediately jumps from one view to the next.
for transitioning between two views this appearance can be achieved by clearing and immediately setting the navigation path.
but for the transition from an empty path to a single element or from a single element to to an empty path the default transition is always used.
thanks
andre

.navigationTransition(.default.animation(.none))


replace the license for all files under storm directory

for files under storm directory, we respect the original storm license

@nlu90 - we need to fix the styling as well in order for the copyright to go through.

👍 for the checkstyle change

@kramasamy Can you have a look at this PR?

looks good - shit it!


Load operation signing key directly.

Add a way for client to directly load the signing key.
From the loader, load the derived key without persisting the seed.

Current dependencies on/for this PR:

main

PR #30   👈

This stack of pull requests is managed by Graphite.


to predict handwritten digit

i have used mnist dataset which is inbuilt in keras library

What is this?


WinCE version of localtime not thread safe

The Windows CE implementation of localtime() uses an array to store the return values of the function. This array can store the same amount of values as LibHTTP starts worker threads. If the main application however also uses the LibHTTP provided localtime function in additional threads created outside of the scope of LibHTTP, this may cause overwriting the values belonging to other threads.
Thread local storage should be used in this function, or better, all calls to localtime() should be replaced to calls to localtime_s() which uses storage provided by the calling thread.
The same problem is also existing in the Windows CE implementation for gmtime() which is the UTC equivalent of localtime().

Fixed since https://github.com/lammertb/libhttp/commit/93bed0739e95c5e3f8fc913b17ec4fbb6b645a04 Local time can now be obtained with httplib_localtime_r() which is both platform independent and thread safe.


net/http: set http.Request.Host from Host header

What version of Go are you using (go version)?

$ go version
go version go1.12.5 darwin/amd64

Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GOARCH="amd64"
GOOS="darwin"

What did you do?
https://play.golang.org/p/O5Y6dEi_hqx
What did you expect to see?
I expected to see that setting a Host: header actually sends hosts and sets req.Host
map[Accept-Encoding:[gzip] Host:[example.com] User-Agent:[My Test User Agent 1.1]]
What did you see instead?
I see that it just sets Hosts from url and uses req.Host if exists.
map[Accept-Encoding:[gzip] Host:[<IP_ADDRESS>:2] User-Agent:[My Test User Agent 1.1]]
I see some closed issues, but I have a few more words about it, It is documented that we need to set .Host to send host header and there are few more headers that calculated in request.write but for example User-Agent is being overwritten but it does not do this for Host.
https://github.com/golang/go/blob/master/src/net/http/request.go#L553 on this comment we see that it says
// Find the target host. Prefer the Host: header, but if that
	// is not given, use the host from the request URL.

but it does not even look at host header.

/cc @bradfitz


Add a GitHub Actions workflow for CI

The workflow will perform all the checks described in the all.sh script
which has been moved to tests.
Signed-off-by: Hugues de Valon<EMAIL_ADDRESS>

I did not add the logic that was in the Dockerfile about downloading and compiling Mbed Crypto. We can see if that takes too much time or not. If it does we can still execute this workflow in the Dockerfile that we had.

Would that be even faster?


Port the gate for testing app clean symbols

WIP: Add a gate for testing CLEAN symbols in AL files
CC: @grobyns

taking over and adding to other PR


Enhancement: complete object storage and multiple features

What this PR does / why we need it:

Implemented more Amazon S3-compatible object storage interfaces to improve compatibility.
Implemented a command line interface (CLI) tool for cluster management.
Implemented user security and authorization system to improve resource access control.
Implemented extend attributes (xattr) support to metadata and posix-compatible file system interface (mountable client).

Which issue this PR fixes

fixes #263: Feature request: object storage interface
fixes #383: multi-tenancy security
fixes #409: Feature request: command line interface (CLI) for cluster operations
fixes #423: Feature request: user security and authorization
fixes #425: Feature request: support extend attribute (xattr)

Special notes for your reviewer:
NONE.
Release note:

Features:
- A command line interface (CLI) tool for cluster management.
- User security and authorization for both mountable client and s3-compatible object storage interface.
- Extend attributes (xattr) support to metadata and posix-compatible file system interface (mountable client)

Improvements:
- More Amazon S3-compatible object storage interfaces.

There may be a problem with Travis CI or Github.
The CI has been successfully executed, but the status in PR is always displayed as pendding.
Close this issue and reopen a new issue #438 .


Tests: Home

Relies on #8 to be completed
Develop tests for the home resource. Tests are being developed late as it is unclear what the requirements are yet

Closing in favour of #93 and #94


Moved partner to past partner, removed #meta from the join page

Moved home depot to past partner and removed #meta from the join section for allies
resolves https://github.com/techqueria/website/issues/847
resolves https://github.com/techqueria/website/issues/848
Deploy preview: https://deploy-preview-850--techqueria.netlify.app/

✅ By submitting this PR, I have verified the following

[x] Checked to see if a similar PR has already been opened 🤔
[x] Reviewed the contributing guidelines 🔍
[x] Added my name to the bottom of the list under the Contributors section in the README.md with a link to my personal website or GitHub profile 👥 (Optional)

LGTM

LGTM


Render thread slowed down by communication thread

The GIL may be impacting our rendering speed performance - when the communication thread is disabled, the backend can train/render much faster - up to 3x it seems. There may be a better way to engineer the backend threads to be more efficient.
One solution might be to use multiprocessing to launch the communicator as its own process, so it can truly send and receive messages in parallel to the rendering/training threads. Then, we just need some way for the 2 processes to talk to each other without introducing another thread and overhead.

Oops duplicate of #20


Read up on alternative evaluation metrics to WER

Included CER in https://github.com/alexandrainst/coral_models/pull/56


Repository is too heavy.

Remove the history big oracle rpm files which have been moved into the wiki to keep the repository lean.

Duplicate of #93


[RELAY][AUTOTVM] Extract tuning tasks from Relay programs

This is a copy-paste of nnvm task extraction for relay for autotvm tuning.
CC @merrymercy @jroesch

If someone has pointers on the current way to do realy inference, we can also add relay versions of the tune_nnvm_* scripts.

see https://github.com/dmlc/tvm/blob/master/tests/python/frontend/mxnet/test_forward.py

I am also porting the test_autotvm_task_extraction test, but it looks like we also need to the clear the cache for relay. Is that function currently exposed? I do see a clear cache function registered.

https://github.com/dmlc/tvm/blob/master/python/tvm/relay/backend/compile_engine.py#L107

I'm not sure about the details here, but is TOPI a blackbox from the perspective of Relay? It seems we would still need to go through TOPI's dispatch system even if we had complete information for Relay's side. But overall this is just a case of "don't fix it if ain't broke" as this implementation is basically borrowed from the NNVM version.

Not sure what the build error is here; do I need to do a rebase or just retrigger CI?

Looks good to me. I maybe will do a follow up refactor for VTA.

Sorry, can you add the test case?

@yzhliu please take another look at the pr


class-free load in CLI

An example is here: https://github.com/theislab/sfaira/blob/dev/sfaira/data/dataloaders/loaders/d10_1038_s41586_020_2922_4/human_lung_2020_x_travaglini_001.py. I would suggest the following templates:
If sample_fns is not empty:
# import statements

def load(data_dir, sample_fn, **kwargs):
    fn = os.path.join(data_dir, sample_fn)   # adapt file name if necessary or add additional file names.
    # Prepare adata here.
    return adata

else:
# import statements

def load(data_dir, **kwargs):
    fn = os.path.join(data_dir, "some name")   # adapt file name if necessary or add additional file names.
    # Prepare adata here.
    return adata

@davidsebfischer So we will just have two types of templates from now on (both yaml based ofc)

Several dataloaders -> sample_fns won't be empty
Single dataloader -> sample_fns won't exist/be empty

We had 4 earlier

Yes, I simplified this. Technically these two are even the same as the second one also receives sample_fn=None in kwargs but I'd like to hide this to not confuse users.

If you think we should move it to one (it would have to be the first one then) I'd also be fine with that though.


tessel rename

Fixes #77

This PR is nearly ready. I still need to figure out how to properly reset mdns with the new name.

Ready for review. @Frijol?

seems like it would be a good idea to have someone else take a look at this as well

@Frijol I addressed your comments. @nplus11 want to also give a review?

lgtm


Unable to get gltf models displayed on map

Hi,
I am trying to get the LoD2 example data of https://geobroker.geobasis-bb.de/gbss.php?MODE=GetProductInformation&PRODUCTID=0414a37a-a749-4ee6-9f59-a41226919c58 in web-map working - but unfortunately l can only see the rectangle of bounding box border.
Is this a bug/misconfiguration /corrupt material? I'm lost on that one.
Works fine with Google Earth Pro.
My Settings are based on default except:
KML/COLLADA/glTFExport:General:Show bounding box borders [X]
KML/COLLADA/glTFExport:General:Write JSON file [X]
General:Logging:Console:Log level "DEBUG"
I did following:

Imported LoD2 data into PostGIS (EPSG:25833)
Exported to COLLADA/glTF visible from 0

Bounding Box 369194.628:5805164.942, 369283.314:5805275.978 (created by Database => Bounding box)
Automatic tiling
LoD2
All Objects

Result:
[13:47:02 INFO] Initializing database export...
[13:47:02 INFO] Checking for spatial indexes on geometry columns of involved tables...
[13:47:02 INFO] 1 (1x1x1) tiles will be generated.
[13:47:02 INFO] Exporting to file: /.../test6/Tiles/0/0/test_Tile_0_0_collada.kml
[13:47:02 DEBUG] 268 candidate objects found for Tile_0_0.
[13:47:02 INFO] Exported CityGML features:
[13:47:02 INFO] BUILDING: 7
[13:47:02 INFO] Processed geometry objects: 246
[13:47:02 INFO] Total export time: 00 s.
[13:47:02 INFO] Database export successfully finished.
Unfortunately converting to glTF does not work inside 3D City Database Importer/Exporter. There are no error message but no glTF files as well.
Therefore I converted all files by COLLADA2glTF (latest version) by myself (default options)
Added Layer to web-map with only MasterJSON and name provided

Result:

added successfully (?) - But only bounding box border is visible
No errors in console
test_Tile_0_0_collada.kml file processed
gltf files processed
found glTF models in _cesiumviewer._dataSourceCollection._dataSource
tested with Vivaldi, Firefox

Hi @BS666
did you see any errors or warnings in the browser while running the web map? Could you provide us the glTF you exported?
Best,
Son

Hi @Son-HNguyen
3dcitydb-web-map-test.tar.gz
thx in advance

Hi @BS666
your glTF files seem to produce incorrect results on the web map, but I could still see the buildings (not only the bouding box).
I used the CityGML file in the link you provided and exported again and this is what I have on my computer:

I guess the problem was somewhere while you were exporting the building. Follow our tutorial here and you should be able to get the same results.
Best,
Son

Hello,
I have the same kind of problem with a LOD3 CityGML file.
When I try to display my KML model in the web-map-client I can see only the blue bounding box.
The file is defined with EPGS:32632 and works fine on google earth.
Any suggestion?
You will find the exported file here attached.
Thank you in advance,
Cristina.

UNIPV.zip

What errors were shown in the developer mode in your browser?
I was able to visualize your provided data set without any problems (see picture).
 Make sure the KML/COLLADA/glTF files and the web client are hosted on the same domain or use a proxy server to start the web client, otherwise you'd probably run into CORS problems (see #9, #26, #33, #39).

Thank you for your answer.
From the developer console in the browser it seems that it fails to load the Tails even though they are in the same directory where the json file is.
I have already checked the CORS related problem and I should have solved it with reference to #39.
I will keep trying!

Closed. Feel free to reopen if you still have any issues.


fix: mina-signer repo url

It was difficult to locate the src for this package, hopefully updating these will save others time in the future.

I'm so happy to see this lucky PR #1000 milestone PR submitted by a community member, thank you @blorgon1 !!


Dynamic Component Generation fails in docker container

Current Behavior
Dynamic component generation exits with status 127
Expected Behavior
Dynamic component generation should work without any issues
Environment

Host OS: Linux
Platform: Docker and Kubernetes
Meshery Server Version: any
Meshery Client Version: any
Meshery Adapter Version: any

Contributor Guides and Resources

🛠 Meshery Build & Release Strategy
📚 Instructions for contributing to documentation

Meshery documentation site and source

🎨 Wireframes and designs for Meshery UI in Figma
🙋🏾🙋🏼 Questions: Layer5 Discussion Forum and Layer5 Community Slack

@Revolyssup I think the packaged kubeopenapi-jsonschema binary is too old, please check that too as you work through this issue.


Dockerfile

SyntaxError: Invalid URL:
    at initAsClient (/app/node_modules/ws/lib/websocket.js:673:13)
    at new WebSocket (/app/node_modules/ws/lib/websocket.js:85:7)
    at SubscriptionClient.connect (/app/node_modules/subscriptions-transport-ws/dist/client.js:446:23)
    at new SubscriptionClient (/app/node_modules/subscriptions-transport-ws/dist/client.js:99:18)
    at new WebSocketLink (/app/node_modules/@apollo/client/link/ws/ws.cjs:17:40)
    at 20539 (/app/.next/server/pages/_app.js:56:16)
    at __webpack_require__ (/app/.next/server/webpack-runtime.js:25:42)
    at /app/.next/server/pages/_app.js:509:77
    at __webpack_require__.a (/app/.next/server/webpack-runtime.js:89:13)
    at 6592 (/app/.next/server/pages/_app.js:495:21)
SyntaxError: Invalid URL:
    at initAsClient (/app/node_modules/ws/lib/websocket.js:673:13)
    at new WebSocket (/app/node_modules/ws/lib/websocket.js:85:7)
    at SubscriptionClient.connect (/app/node_modules/subscriptions-transport-ws/dist/client.js:446:23)
    at new SubscriptionClient (/app/node_modules/subscriptions-transport-ws/dist/client.js:99:18)
    at new WebSocketLink (/app/node_modules/@apollo/client/link/ws/ws.cjs:17:40)
    at 20539 (/app/.next/server/pages/_app.js:56:16)
    at __webpack_require__ (/app/.next/server/webpack-runtime.js:25:42)
    at /app/.next/server/pages/_app.js:509:77
    at __webpack_require__.a (/app/.next/server/webpack-runtime.js:89:13)
    at 6592 (/app/.next/server/pages/_app.js:495:21)

> Build error occurred
Error: Failed to collect page data for /accounts/[address]
    at /app/node_modules/next/dist/build/utils.js:916:15
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  type: 'Error'
}
The command '/bin/sh -c yarn install && yarn build' returned a non-zero code: 1

I guess issue r is related to changing the package manager from npm to yarn

sorry for the late reply
what's your GRAPHQL_WS  environment variable?
by default it is set to ws://localhost:8080/v1/graphql
do you have the Hasura server running on 8080 port?

Hi there, I hope this message finds you well. I noticed that there has been no activity on this issue for a while now. If you have any further questions or updates, please let me know and I'd be happy to assist. I'll go ahead and close this issue to keep our GitHub repository organized. If you need to revisit this issue in the future, feel free to open a new one. Thank you for your understanding.

Hi there, I hope this message finds you well. I noticed that there has been no activity on this issue for a while now. If you have any further questions or updates, please let me know and I'd be happy to assist. I'll go ahead and close this issue to keep our GitHub repository organized. If you need to revisit this issue in the future, feel free to open a new one. Thank you for your understanding.

I'm sorry, I completely forgot to answer.
Yes, I tried running locally, the problem was that Hasura was not running.


Racy tests

I haven't investigated, but the following tests broke on my last run. Rerunning "solved" it. Feels like a race condition:
  Installed services can be executed immediately rather than waiting for next run and after running generates data in mongo
    ✓ successfully
{ name: 'testSynclet',
  frequency: 1200,
  run: 'testSynclet.js',
  status: 'running',
  nextRun: Thu, 13 Oct 2011 16:56:35 GMT,
  workingDirectory: '/Users/Simon/dev/Locker/tests/Data/testSynclet' }
  Installed services can be executed immediately rather than waiting for next run
    ✗ successfully
      » expected null, got 'already running' // lsyncmanager-test-local.js:178
    ✗ and services specifying a positive nextRun time in the past get rescheduled at the next interval time
      » expected expression to evaluate to true, but was false // lsyncmanager-test-local.js:183

  Running testSynclet again
    ✗ with no data will leave everything intact
      » An unexpected error was caught: "already running"
  If the source doesn't return an ID
    ✗ it will generate a delete event and remove the row from mongo
      » expected 1,
	got	 0 (==) // lsyncmanager-test-local.js:291
  Running testSynclet again
    ✗ with no value for 'notId'
      » expected 'no value for primary key',
	got	 undefined (==) // lsyncmanager-test-local.js:302

Dupe of #291


Fix math tests to allow ftz in relaxed mode.

In recent spec clarification, it is agreed that ftz is
a valid optimization in case of cl-fast-math-relaxed
and doesn't require cl-denorms-are-zero to be passed
explicitly to enforce ftz behavior for implementations
that already support this.
GitHub Spec Issue KhronosGroup#579
GitHub CTS Issue KhronosGroup#1267

@bashbaug
Can you take a look and let me know if there is anything left here to address?
If not, can we merge this one?

For easier future reference, the correct links to the spec issue and PR are:

https://github.com/KhronosGroup/OpenCL-Docs/issues/579
https://github.com/KhronosGroup/OpenCL-Docs/pull/597

@alycm @kpet
Can one of you take a look at this one and help approve the same?
Ben had already approved, but had one last suggestion to extend the fix to few other places which is addressed in the latest patch.

These changes look good to me - thanks!
I found a couple of other checks that may possibly need updating:
$ grep -r "if (ftz" *
...
binary_two_results_i_double.cpp:                if (ftz && fail)
binary_two_results_i_float.cpp:                if (ftz && fail)
i_unary_double.cpp:                    if (ftz && IsDoubleSubnormal(s[j]))
i_unary_float.cpp:                    if (ftz && IsFloatSubnormal(s[j]))
...

The "i_unary" cases are all for ilogb and hence probably are not affected by denorms, but the "binary_two_results_i" cases are for remquo. Should this be updated for fast relaxed math also?

Have fixed for remaining places mentioned here. Let me know if we are good to merge this one.

Did a grep for a slightly different variant of ftz conditional code in the bruteforce tests.
$ grep "&& ftz"
binary_double.cpp:                if (fail && ftz)
binary_float.cpp:    if (isFDim && ftz) RestoreFPState(&oldMode);
binary_float.cpp:                    if (fail && ftz)
binary_i_double.cpp:                if (fail && ftz)
binary_i_float.cpp:                if (fail && ftz)
binary_operator_double.cpp:                if (fail && ftz)
binary_operator_float.cpp:                if (fail && ftz)
ternary_double.cpp:                    if (fail && ftz)
ternary_float.cpp:                    if (fail && ftz)
unary_two_results_float.cpp:        if (isFract && ftz) RestoreFPState(&oldMode);

Do any of these need updated too?

I just did a grep for ftz and went through all files to avoid missing out places to edit. I have updated few more places that I found.
Hopefully, this covers all, but let me know if anything is still missed out.

Merged as agreed in OpenCL WG call on 07/05.


Errors on commands

Errors with undo command
Errors with flip command
The commands just show error while being used

I don't see no errors. Close this.

Anything command you run //set, //replace and a few others, it will say there is nothing to undo. You can't undo what you just used //set for?

Fixed in last commit


´aks browse´ disconnects constantly

Describe the bug
Using Azure cli, I connect to AKS cluster and use the dashboard without problems, but after a couple of minutes the connection just drops out. This happens time after time. You can see error details below.
Command Name
az aks browse
Errors:
HTTPConnectionPool(host='localhost', port=8888): Max retries exceeded with url: /closeport/8001 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x05B6E9D0>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it',))
Traceback (most recent call last):
pip-install-oxpg5sa3\urllib3\urllib3\connection.py, ln 159, in _new_conn
urllib3\urllib3\util\connection.py, ln 80, in create_connection
urllib3\urllib3\util\connection.py, ln 70, in create_connection
...
pip-install-ygnynjtx\requests\requests\adapters.py, ln 516, in send
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8888): Max retries exceeded with url: /closeport/8001 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x05B6E9D0>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it',))

To Reproduce:
Steps to reproduce the behaviour. Note that argument values have been redacted, as they may contain sensitive information.

Put any pre-requisite steps here...
az aks browse -g {} -n {}

Expected Behavior
Environment Summary
Windows-10-10.0.17763-SP0
Python 3.6.6
Shell: powershell.exe

azure-cli 2.0.66

Extensions:
dev-spaces 1.0.1
dev-spaces-preview 0.1.6

Additional Context

Duplicate of #7686


[Bug] Turning off and on the wifi network and guest network is not available

The problem
The wifi and guest network control buttons are not available.
I tried to reconfigure the integration and the problem still persists.
Your device model
RT-AX56U
Firmware type
Merlin
Firmware version
<IP_ADDRESS>.388.2_2
Integration version with the issue
0.22.0
Method of the integration installation
HACS
What version and type of Home Assistant installation do you use
2023.6.2
Is there anything useful in the logs?
No response
Diagnostics information
No response
Additional information
No response

Hello. Was it never available or just stopped working? Did you change device FW before it happened? Any errors in the HA log?

It worked before and stopped, I uninstalled the integration and reinstalled and still not working.  There are no errors in the log

It may have happened because of a router version update

Waiting for a reply
thanks

?

Hello and sorry for the late reply
After all the tests with the same FW version, it does not seem to be related to the FW update. The integration supports 388.2_2
Can you turn on/off the guest WLAN in the device admin panel? If you reboot your router and then reload the integration, are the switches still not available?
Also, can you please upload diagnostics of the integration (use the Download diagnostics button)

Yes, I can turn off the guest network in the router settings.
I restarted the router and the integration and it did not solve the problem.
I have attached diagnostics
Tank's

Sorry, should have explained better. The Download diagnostics button should allow you to save diagnostics as a txt file. Please, upload it here as a file or send the file to me at<EMAIL_ADDRESS>

txt file is attached
I also sent you an email
config_entry-asusrouter-e3d16920a2d6d99f7836bbbbd4c625cf.json.txt

Sorry, should have explained better. The Download diagnostics button should allow you to save diagnostics as a txt file. Please, upload it here as a file or send the file to me at<EMAIL_ADDRESS>

Waiting for a reply
thanks

@Vaskivskyi   ??

Hello. I'm currently still working on the issue. Sorry for taking so long

Hello, can you check the new versions 0.23.0+?

Yes, working.
Thank you

Great! 👍🏻


Scroll Element into View

Hello
I have a upload element in the page. I want to upload a file, but the functionality does not happen as the element is not in view.
Is there any way i can scrollElementInto  View.
I do see there is a method in TagUI_header file. Is there a way to call it in the TagUI script
Thanks,
Neha

TagUI automatically scroll the element into view before clicking or hovering on it. You can try using hover selector to scroll the element into view and see if that works for this website.
Calling chrome.scrollIntoViewIfNeeded(selector); works but it is easier to use hover step.

Does not work for me. The problem i have to keep scrolling multiple times to the bottom of the page and then the element loads.
Any suggestions

Chrome cannot scroll to an element that is not yet loaded. Try this and maybe combine with wait step to scroll a few times to bottom of the webpage. https://github.com/kelaberetiv/TagUI/issues/198#issuecomment-394164409
More details on this JavaScript code here - https://www.w3schools.com/jsref/met_win_scrollto.asp

am using the code below to scroll down a windows service page on my desktop and its not working.
how can i scroll down a page on a desktop. not a webpage.
vision type(Key.PAGE_DOWN)

Replying at the new issue you've raised - https://github.com/kelaberetiv/TagUI/issues/588

Hi! I am also facing the same issue. TagUI is not scrolling down the chrome window on my system. I have installed TagUI and SikuliX. Then why this is happening?
Thanks for the suggestions

First try using the hover step on the element, TagUI should try to scroll it into view. You can try testing in Chrome Inspector the XPath to check if the identifier you provide is correct, or in TagUI live mode to try to click it.
For SikuliX automation, check that you have set up the steps here -
https://github.com/kelaberetiv/TagUI#visual-automation

Hi Kensoh,
I have one page where the element only loads when we scroll down. What needs to be done in that case? I am initialising tagui in Python code and then calling t.fucntions()

Hi @soorejmg for RPA for Python, raise issues over there as it is a separate personal project - https://github.com/tebelorg/RPA-Python/issues
If the element does not show up, you can't use any of the step to automatically scroll to it and interact with it. There are 2 solutions.
First solution is use the dom() function to tell browser to scroll down, for eg below will scroll down by 1000 pixels. So you just scroll accordingly for the element you need.
r.dom('window.scrollBy(0, 1000);')

Second solution is use the visual automation method to use keyboard keys to scroll down on the browser. See examples on how to use visual automation method. To use this method, make sure to click somewhere on the browser first using visual automation to ensure that browser is the active window.
r.keyboard('[down][down][down][down][down]')
r.keyboard('[pagedown]')


modularize code

simplify color declaration. I wrote it to be compatible with older versions of bash

Simple fix, I'll fix it on Monday


Request for Performance Insights in AWS Aurora RDS

Description
Request to enhance the Aurora DB cluster creation scripts with the option to enable performance insights based on a conditional flag such as AURORA_PERFORMANCE_INSIGHTS with the value being a boolean true/false.
We can achieve this in AWS CLI using a similar command and argument combo
aws rds create-db-cluster \
    --db-cluster-identifier my-aurora-cluster \
    --engine aurora-mysql \
    --master-username admin \
    --master-user-password secretPassword123 \
    --enable-performance-insights \
    --performance-insights-kms-key-id <your-kms-key-id> \
    --performance-insights-retention-period 7 \
    --region <your-region>

And below is an example for the Terraform resource module
resource "aws_rds_cluster_instance" "good_example" {
  name                 = "bar"
  performance_insights_enabled = true
  performance_insights_kms_key_id = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/rds_cluster_instance#performance_insights_enabled
Optional:
While we do this, we could explore if we do this per RDS node, if possible to contain the costs etc., as we might be interested in only the writer nodes or reader nodes based on the load test we perform.
Discussion
No response
Motivation
Enabling performance insights in AWS Aurora RDS nodes, will be beneficial to have on-demand additional performance observability on AWS Aurora instances. It will make the debugging faster to peek at slow queries and specific bottlenecks in the RDS instances.
Below are a couple of screenshots of the Performance Insights metrics from a load test run:

Details
Performance Insights is an advanced database performance monitoring feature that makes it easy to diagnose and solve performance challenges on Amazon RDS databases. It offers a free tier with 7 days of rolling data retention, and a paid long-term data retention option. For more information about Performance Insights, please visit the documentation
Performance Insights offers a rolling seven days of performance data history at no charge. This is enough time to troubleshoot a wide variety of issues. The Performance Insights free tier includes:

7 days of performance data history
1 million API requests per month

As an example, say you create a custom dashboard that makes calls to RDS Performance Insights’ two APIs, DescribeDimensionKeys, and GetResourceMetrics. The dashboard calls these two APIs every 5 seconds. That would be:

2 API calls * (30 days * 24 hours * 60 minutes * 60 seconds) / (5 seconds) = 1,036,800 API calls.
The first 1M API calls are free per account and are $0.01 for each 1,000 calls after that. Thus, in this example the cost would be:
((1,036,800 - 1,000,000) / 1,000) * 0.01 = $0.37 per month
If we monitored two instances with our custom dashboard refreshing every 5 seconds, the cost would be:
((2 * 1,036,800 - 1,000,000) / 1,000) * 0.01 = $10.74 per month

Thank you for suggesting this, I think it is great idea. If we are using dashboard in AWS, they would AFAIK only pull data when we're displaying them, so we should be fine.
If we choose to have a dashboard in Grafana, we would IMHO need to ensure that we use a datasource which pulls the metrics directly from AWS when we need them. If we would first import all data into Prometheus, this would incur the costs even if we don't look at the graph.
I would assume we would start with the default dashboard hosted on AWS?

correct @ahus1 the starting point would be to start off with the AWS dashboard, similar to how we are monitoring the Aurora RDS Cluster using Cloud Watch metrics. This would be an augmentation to our current approach. But its a good point to call out, the cost per metric would be different when we use a metric scraper like Prometheus.


fix(members): ensure group and project users are case-insensitive

Meddle with group and project membership checks to ensure that
usernames are case-insensitive. This change ensures that users
are not added again by mistake, causing an error where a given
user already exists within the repository.

Addresses #555 and continues the work from #475.

Hey @J4Numbers, thank you for your contribution! And sorry for the CI problem, I noticed that there are HTTP 401 thrown. That's strange because it works for me locally. :/ I will try to troubleshoot it over the next few days.

Ok, now it seems to be failing on something related to your code, @J4Numbers:
FAILED tests/acceptance/premium/test_branches_users_case_insensitive.py::TestBranchesUsersCaseInsensitive::test__users_case_insensitive - TypeError: cannot unpack non-iterable ProjectProtectedBranch object

Can you check it out please?

Thanks for kicking it off! Full error is below:
FAILED tests/acceptance/standard/test_members_enforce.py::TestMembersEnforce::test__enforce_keep_bots - assert 5 == 2
 +  where 5 = len([<ProjectMember id:37 username:gitlabform_user_maroon_4>, <ProjectMember id:40 username:gitlabform_user_maroon_5>, <Pr...:45 username:project_25_bot_016e6e53920e5925458ecb37e324d4a0>, <ProjectMember id:46 username:gitlabform_user_maroon_7>])

Thanks for kicking it off! Full error is below:
FAILED tests/acceptance/standard/test_members_enforce.py::TestMembersEnforce::test__enforce_keep_bots - assert 5 == 2
 +  where 5 = len([<ProjectMember id:37 username:gitlabform_user_maroon_4>, <ProjectMember id:40 username:gitlabform_user_maroon_5>, <Pr...:45 username:project_25_bot_016e6e53920e5925458ecb37e324d4a0>, <ProjectMember id:46 username:gitlabform_user_maroon_7>])

This might be a bit of trial and error since I can't test the premium items locally...

This is fixed now.
But

Thanks for picking up the missed import!

This is fixed now.
But

Guessing something got cut off here. But it does look like there's a race condition or some test overlap in this somewhere (with the odd failure between different python versions). Want me to raise an issue for it?

This is fixed now.
But

Guessing something got cut off here. But it does look like there's a race condition or some test overlap in this somewhere (with the odd failure between different python versions). Want me to raise an issue for it?

This may be caused by the fact that many tests depend on each other, see https://github.com/gitlabform/gitlabform/pull/561#pullrequestreview-1528759477 for more info.

Fair enough. Let me know if you need me to do anything else!

@J4Numbers - Would you be able to update your PR branch please? Another change was merged recently and looks like now there's a bit of conflict that will need to be resolved manually.

types is now failing for some reason, despite me not having touched it and the relevant lines last being updated in May...

types is now failing for some reason, despite me not having touched it and the relevant lines last being updated in May...

This is coming from the last PR merge. It should be fixed in #570, I think.

@gdubicki - Should we merge this?

@J4Numbers - Pushed the latest update to your branch. Noticed a test failure from one of your test case.
https://github.com/gitlabform/gitlabform/actions/runs/5767054764/job/15636113972?pr=556
Is this an intermittent test failure? If yes, would you be able to look into the test setup? It'd be good to have it fixed if possible as intermittent failures take away too much time in processing other PRs.
Hopefully we can merge this PR soon.

@J4Numbers - Did you get a chance to look at the test failure mentioned above?

Ah, sorry. I started looking into it, but then real life got in the way slightly. From what I can tell, a lot of the code should be pretty segregated due to the random group creation that the tests are separated between (something similar to group_1234) which then has its own projects and users - all of which follow that format of gitlabform_{basename}_{random_xkcd_string} which makes unpicking why the tests are interdependent... fun.
I can keep looking into it if required, but the base logic for generating random groups/projects/users/etc. seems sound, which makes me suspect that it might be something to do with the fixtures holding state when they shouldn't...

So, as far as I can tell, separating the two project member tests into their own fixtures seems to have resolved my issue. And this run seems to have rolled a lucky six so far in terms of pipelines behaving...
I did notice one other intermittent failure, which was regarding a branch protection test. (See: https://github.com/gitlabform/gitlabform/actions/runs/6031288955/job/16364708681)

I started looking into it, but then real life got in the way slightly.

Hey @J4Numbers . Completely understandable. Hope all is well. Thanks for continuing with this PR. Really appreciate it 🙏 .

makes me suspect that it might be something to do with the fixtures holding state when they shouldn't...

So, as far as I can tell, separating the two project member tests into their own fixtures seems to have resolved my issue. And this run seems to have rolled a lucky six so far in terms of pipelines behaving...

First of all, thanks for making it more reliable. I'm not an expert at this but think you're on the right path. Looks like you've split your original tests into 2 separate test class (i.e. tests/acceptance/standard/test_project_members_case_insensitve.py and tests/acceptance/standard/test_project_group_members_case_insensitive.py`).
I believe what was happening before is that the tests were in the same class. Both tests were using the project fixture whose scope is at the class level. So, when the first test's membership is updated and verified, the 2nd test's evaluation will need to keep in mind the result from the earlier test, unless that one manually did the cleanup of members so that the project is at it's initial state. Why this happens intermittently, I'm not sure. Another similar intermittent issue was addressed by switching to project_for_function fixture in the test cases instead of using the project fixture. This has the same effect as splitting the tests into separate classes as you've done.
It would probably be nice if those tests were in the same class. Reduce some duplication and logically grouped; might be easier to maintain.
@gdubicki - Would you be able to do another review, please?

I did notice one other intermittent failure, which was regarding a branch protection test. (See: https://github.com/gitlabform/gitlabform/actions/runs/6031288955/job/16364708681)

Yeah, I noticed it a few times too. It's annoying 😄 .


Support "Auto Flush"

Not to be confused with what appears to be the autoFlush option in past version, but how hibernate implements it here:
https://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/chapters/flushing/Flushing.html
In particular, this feature: prior to executing a JPQL/HQL query that overlaps with the queued entity actions
There are parts of my service layer which can touch many models at once and multiple inserts/updates, and depending on the order of things, it isn't always appropriate (for performance purposes) to introduce a manual flush, because you aren't sure how upstream services will consume the method running a query. This is particularly true for "long" transactions with a lot of business logic.
Example:
Service A

async function parent(){
  const newModel = new Model();

  em.persist(newModel);

  await this.serviceb.child();
}

Service B
async function child(){
  const activity = await em.find(Model, {})
}

I would expect that if any models are persisted, any non-identity query (whether using find or createQueryBuilder), would automatically flush the query'd model prior to executing.

here is a crude monkey patch example (in one of my test cases) of how it could work:
const persist = em.persist;

em.persist = (obj) => {
  actions.add(obj.constructor.name);

  return persist.call(em, obj);
};

const find = em.find;

em.find = async (...args) => {
  if (actions.has(args[0].constructor.name)) {
    await em.flush();
  }

  return find.apply(em, args);
};

a better/smarter of that implementation, would only flush the relevant model (and any cascades) instead of the entire session

Interesting! I guess this should work with all operations, not just insertions, right?
Sounds like a reasonable default, if it could make it to v5.0. The implementation could be also quite easy.

i updated my example above, one potential gotcha in how i do PK detection is it wont work for composite keys. given that the where clause on findOne and doing a lookup by a "key object" could not be distinguished. i don't use composite keys so won't put much thought into that, but something to consider

Do you know if hibernate is actually doing that "partial flush"? The docs look like they flush the whole session all the time.

not sure, it has been a long time since i've worked in Java :)
probably doesn't matter with v1 of the feature, because you'd have to weigh the benefit of (digging through the session models and determine if there are any cascaded entities, or some bi-directional logic) which cause CPU time, vs. just committing to DB.

Yeah, that part would definitely have a performance penalty and added complexity of the implementation, let's keep it simple for now.

i check extends because I use discriminators and often query by the abstract class and use switch cases based on the implementation.

i tried to think about the joined relation bit, only scenario i could see where maybe it gets tripped up, when adding an unpersisted entry into a one-to-many. so long as there isn't a case where you could run a future query, make changes to the query results, then later flush and the original collection overwrites or does something funky. i don't think such a risk would appear for many-to-one.

It feels like a safe way to implement this would be to compute all the change sets, as persist needs to be called only for new entities (it is called on managed entities during flush too), and is not called for removed ones at all. We could cache the results if we don't actually flush so we don't compute it twice.
Regarding the relations, I can imagine problems with cascading:
const book = await em.find(Book, 1);
book.author = new Author();
const authors = await em.find(Author, {}); // if we ignore author relation, we would not auto flush here

first example:
i could see that, though i'm in the camp of "always persist", vs relying on implicit cascades.. to some extent, i'd prefer the flush mechanism to throw an exception if it hit an object that hadn't explicitly been persisted. for my project, it is rare to generate multiple associated models at once, so i'd prefer to opt-out of the CPU penalty of "cascade scanning" (if there is a penalty)
second example:
wouldn't await em.find(Book, { author: { name: 'abc' } }); realize that the author is already in the identity map and swap it out? if not, this scares me :) but perhaps that is a new issue to discuss (eg: if versioning is enabled on an entity, if they. match, replace, otherwise throw a conflict exception). i really don't ever want someone to query from db and lose unflushed updates.

(if there is a penalty)

The flush would still happen later, and if we cache the change sets, it is just about when, not really a penalty.

wouldn't await em.find(Book, { author: { name: 'abc' } }); realize that the author is already in the identity map and swap it out? if not, this scares me :)

This is not about swapping entity instance, you would not find the book, as it's author has the old name, until we auto flush (but book entity was not changed).

i really don't ever want someone to query from db and lose unflushed updates.

This should never happen, in v4 you explicitly need to pass FindOptions.refresh: true to reload such entities including their state (so you can only loose the state if you ask for it explicitly).
v5 is smarter thanks to this #2263 - there is a heuristic whether we should reload entities, and loaded data are always merged to the entity, with exception of properties that were changed since the entity was loaded - so you get the best of both approaches, no need for explicit refreshing, but never loose something you already changed.

oh sorry, i misread the query (eg: abc search)..i could see this being a more common case with boolean flags and the like. it would seem the only way to solve it is either a) eat the flush cost by include the referenced entities, or b) eat the potential cpu cost of tracking "paths", eg: ['author','name'] and only refresh if that path is hit
w/r/t tp refresh: 👍

per our conversion in nestjs, a complication can be parallel flushes...
const model = new MyModel();
em.persist(model);
await Promise.all([
this.servicea.work(em),
this.serviceb.work(em),
]);
if service A and B both do a query on MyModel, could introduce race conditions. one solution could be some type of event-loop tick magic (kind of how the DataLoader project works), where the queries aren't evaluated until the next event loop cycle, that way we can dedupe or batch somehow

I don't see that as a complication, you need to use separate forks to be able to flush in parallel. While autoflushing might trigger flush on find/findOne, you would still flush later even without the autoflush, so you still need separate forks to allow it.

i'm not sure i follow. if have an N+1 behavior downstream, eg:
em.transaction((tx) => {
  const entities:MyModel[]; = await em.find(MyModel, {});
  entities[0].foo = 'bar';

  await Promise.all(entities.map(async (entity) => {
    const secondaryQuery = await em.find(MyModel, {baz: 'bum'});
  });
});

each find within the Promises could both see a "dirty" state and result in an autoflush. the secondaryQuery logic could be encapsulated in a service layer, potentially multiple layers deep, so you really won't be able to know if you need to be forking things or not.

I see, still this was always a non goal for me personally, never really suggested using Promise.all anywhere, I believe that in most cases you can get better results without it (true performance comes from firing less queries, not making them run parallel). Not really a friend with GQL and dataloaders either - if you wanna see that happen, you will need to contribute :]

will also need to watch for Collection.loadItems() since it may query for entities which are dirty

something i ran into with my auto-flush feature:
const newEntity = em.assign(MyEntity, {
  manyToOne: 1
});

// assume this method runs a query which would force a flush
// if MyEntity.foobar is a required field, i will get a non-null exception
const value = service.calculateSomething(em);

// this would never be reached
newEntity.foobar = value;

em.persist(newEntity);

whether using em.assign or em.create, if your entity gets associated with something in the identity map and you weren't done building the object, errors can occur. of course, simple fix is to just move the service call up, but it makes me wonder if the propagation should not happen until you explicitly do a em.persist (or add via a collection)

Well, if you ask me, you should not have entity in invalid state. The required props should be constructor parameters and it should be used directly instead of em.create() (it would use the ctor anyway, so you might as well validate this from inside ctor and keep using it). Its a matter of preference, but this style will mitigate such issues. And em.assign wont get you to such problems, only if you would try to unset required field explicitly.

I made some progress on this. I didn't like the idea of requiring em.persist() for managed entities, as well as I saw how slow flushing can be when not needed, so I ended up using a bit smarter approach. All entity properties are defined as get/set, so we know which entity is touched by the user. Then the tryFlush check just iterates thru the identity map and checks this boolean flag on each entity. This way we only trigger the flush if some entity actually changed.
Need to spend more time testing this and polish the code, but already got a WIP and most tests are passing.