Make master 4.7.0-SNAPSHOT and implement upgrade paths towards it

This bumps all pom.xml versions to 4.7.0-SNAPSHOT. It also implements upgrade paths from 4.6.0 and the upcoming 4.6.1 (branch 4.6 is now on 4.6.1-SNAPSHOT) towards 4.7.0.
I will be doing some upgrade tests, will post back results soon.

This is an upgrade from 4.6.1 to 4.7.0:
INFO  [c.c.u.DatabaseUpgradeChecker] (main:null) DB version = 4.6.1 Code Version = 4.7.0-SNAPSHOT
INFO  [c.c.u.DatabaseUpgradeChecker] (main:null) Database upgrade must be performed from 4.6.1 to 4.7.0-SNAPSHOT
INFO  [c.c.u.DatabaseUpgradeChecker] (main:null) Cleaning upgrades because all management server are now at the same version
INFO  [c.c.u.DatabaseUpgradeChecker] (main:null) Cleanup upgrade Upgrade461to470 to upgrade from 4.6.1-4.7.0 to 4.7.0

Will try an upgrade from 4.6.0 to 4.7.0 as well.

This is an 4.6.0 to 4.7.0 upgrade:
INFO  [c.c.u.DatabaseUpgradeChecker] (main:null) DB version = 4.6.0 Code Version = 4.7.0-SNAPSHOT
INFO  [c.c.u.DatabaseUpgradeChecker] (main:null) Database upgrade must be performed from 4.6.0 to 4.7.0-SNAPSHOT
INFO  [c.c.u.DatabaseUpgradeChecker] (main:null) Cleaning upgrades because all management server are now at the same version
INFO  [c.c.u.DatabaseUpgradeChecker] (main:null) Cleanup upgrade Upgrade460to470 to upgrade from 4.6.0-4.7.0 to 4.7.0

Database:
MariaDB [cloud]> select * from version;
+----+---------+---------------------+----------+
| id | version | updated             | step     |
+----+---------+---------------------+----------+
|  1 | 4.0.0   | 2015-11-10 15:51:18 | Complete |
|  2 | 4.1.0   | 2015-11-10 15:51:28 | Complete |
|  3 | 4.2.0   | 2015-11-10 15:51:28 | Complete |
|  4 | 4.2.1   | 2015-11-10 15:51:28 | Complete |
|  5 | 4.3.0   | 2015-11-10 15:51:28 | Complete |
|  6 | 4.4.0   | 2015-11-10 15:51:28 | Complete |
|  7 | 4.4.1   | 2015-11-10 15:51:28 | Complete |
|  8 | 4.4.2   | 2015-11-10 15:51:28 | Complete |
|  9 | 4.5.0   | 2015-11-10 15:51:28 | Complete |
| 10 | 4.5.1   | 2015-11-10 15:51:28 | Complete |
| 11 | 4.5.2   | 2015-11-10 15:51:28 | Complete |
| 12 | 4.6.0   | 2015-11-10 15:51:28 | Complete |
| 13 | 4.7.0   | 2015-11-15 19:20:03 | Complete |
+----+---------+---------------------+----------+
13 rows in set (0.00 sec)

LGTM
Tested on a 4.6.1 to 4.70 with success
2015-11-15 22:00:04,726 DEBUG [c.c.u.DatabaseUpgradeChecker] (main:null) Cleanup script /usr/share/cloudstack-management/setup/db/schema-461to470-cleanup.sql is executed successfully
2015-11-15 22:00:04,764 DEBUG [c.c.u.DatabaseUpgradeChecker] (main:null) Upgrade completed for version 4.7.0

compiled and started with no errors. tests are running but irrelevant for this PR: LGTM

4.6 has 4.6 to 4.6.1 upgrade path
and master has 4.6 to 4.7 upgrade path
once 4.6 is merged to master, wont there be a problem with upgrade path on master? May be we should do a manual edit of the upgrade paths during the first merge of 4.6 to master?

remi mentioned on slack that master already has 461to470. so, the merge wont be a problem.
In future, during the first merge after any release, we should take care of the upgrade paths (or better yet, move to commit to commit upgrades using something like liquibase or flywaydb :) )
:+1:


Best practice to avoid NSObject in Swift;

As we are all still pretty new in the Swift language, we sometimes write Objective-Swift =).
However, if we write in Swift, we should use as much as we can from that language. Recently I noticed that @Mourad-Aly and myself use the inheritance from NSObject for swift classes although it's not really needed and I personally think it's a leftover from Objective-C world.
The good explanation why we should avoid it is in PR change.

@Antondomashnev 👍 I read it.


Mypy issues in QROM / SelectSwapQROM

https://github.com/quantumlib/Qualtran/pull/986 adds 3 type ignores to qrom bloqs to make mypy happy; but its not clear why these issues arise in the first place.
Run check/mypy
qualtran/bloqs/data_loading/qrom.py:56: error: Definition of "controlled" in base class "Bloq" is incompatible with definition in base class "Gate"  [misc]
qualtran/bloqs/data_loading/select_swap_qrom.py:65: error: Definition of "controlled" in base class "Bloq" is incompatible with definition in base class "Gate"  [misc]
qualtran/bloqs/data_loading/select_swap_qrom.py:253: error: Missing return statement  [return]
Found 3 errors in 2 files (checked 436 source files)

This issue is to unblock the PR and track the potential fixes of these mypy issues at a later point.

[ ] For the first two, there is some nuance going on with multiple inheritance and type-ignores in controlled method of GateWithRegisters. Both QROM and SelectSwapQROM derive from GateWithRegisters and QROMBase (which is a new abstract base class). The only place where the controlled method should come from is the GateWithRegisters base class; but due to multiple inheritance mypy starts complaining. This issue doesn't arise for all other bloqs that only derive from GateWithRegisters. For some reason, having multiple parent classes is making mypy unhappy.

[ ] For the third issue, we have used the pattern of yielding operations without an explicit "return" statement when a function returns a cirq.OP_TREE forever in cirq; but for some reason its making mypy unhappy here.

cc @dstrain115

I thought cirq.OP_TREE is defined to be a union of Operation and an iterator over OpTree so we shouldn't nee to change the return type to an iterator?
https://github.com/quantumlib/Cirq/blob/e4b6ab2f1f01b3c2d06456eb7244430e691474ef/cirq-core/cirq/ops/op_tree.py#L56
Either way, it looks like https://github.com/python/mypy/issues/731 is now fixed so we should update the definition of cirq.OP_TREE to be a recursive type (cc @pavoljuhas can we do this before the next release?)

Either way, it looks like python/mypy#731 is now fixed so we should update the definition of cirq.OP_TREE to be a recursive type (cc @pavoljuhas can we do this before the next release?)

The problem with OP_TREE, whether defined as the current Union[Operation, OpTree] or a recursive Union[Operation, Iterable[OP_TREE]] type, is that it does not guarantee such types are iterable.  You would need to add isinstance(optree, Iterable) to pass mypy for every iteration over values that are returned as OP_TREE-s.
A proper way would be to redefine OP_TREE as Union[Iterable[Operation], Iterable[OP_TREE]], but I suspect that would necessitate a lot of changes to the cirq code and would be a breaking API change.
If I check cirq with mypy-1.10.0 as in qualtran I get a similar "Missing return statement" error for functions that yield after declaring an OP_TREE return type.
I suggest to change the return type of SelectSwapQROM.decompose_from_registers to Iterator[cirq.OP_TREE], there are already similar constructs in qualtran for example in TwoBitCSwap.decompose_from_registers.


unknown route - denon avr 2313

Hi Greg!
I'm trying to get Ytuner to work with my denon avr2313. When i change the DNS and select 'internet radio' on the denon it opens the playing screen with the message "track not found"
I cannot get to the navigation menu for internet radio.
The logging
5-10-24 12:31:28 : Inf : Starting services...
5-10-24 12:31:28 : Inf : Successfully loaded 3 my stations.
5-10-24 12:31:28 : Dbg : Database library : 3.37.2.
5-10-24 12:31:28 : Inf : Checking local database.
5-10-24 12:31:28 : Inf : Local database is ready.
5-10-24 12:31:28 : Inf : DNS Service: listening on: <IP_ADDRESS>:53.
5-10-24 12:31:28 : Inf : Web Service: listening on: <IP_ADDRESS>:80.
5-10-24 12:32:27 : Dbg : GET /setupapp/denon/asp/browsexm2/loginXML.asp?mac=F4A68170A1EDB49A20C42B87462AC99A&fver=1.754333&dlang=dut&startitems=1&enditems=10.
5-10-24 12:32:28 : Dbg : Unknown route : GET /setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592.

I tried both with a direct install as well as with docker, but the results are the same. I don't know if there are settings i should be trying. If you have an idea, please let me know!

how does your stations.ini look like?
try this:
[NPO]
NPO Radio 2=https://icecast.omroep.nl/radio2-bb-mp3|https://radioned.nl/radio2.png
NPO 3FM=https://icecast.omroep.nl/3fm-bb-mp3|https://radioned.nl/3fm.png
NPO Radio 5=https://icecast.omroep.nl/radio5-bb-mp3|https://radioned.nl/radio5.png
NPO Soul and Jazz=http://icecast.omroep.nl/radio6-bb-mp3|https://radioned.nl/nposouljazz.png

using your ini, so the ini looks like this:
cat config/stations.ini
[NPO]
NPO Radio 2=https://icecast.omroep.nl/radio2-bb-mp3|https://radioned.nl/radio2.png
NPO 3FM=https://icecast.omroep.nl/3fm-bb-mp3|https://radioned.nl/3fm.png
NPO Radio 5=https://icecast.omroep.nl/radio5-bb-mp3|https://radioned.nl/radio5.png
NPO Soul and Jazz=http://icecast.omroep.nl/radio6-bb-mp3|https://radioned.nl/nposouljazz.png

6-10-24 07:47:02 : Inf : Starting services...
6-10-24 07:47:02 : Inf : Successfully loaded 4 my stations.
6-10-24 07:47:02 : Dbg : Database library : 3.37.2.
6-10-24 07:47:02 : Inf : Checking local database.
6-10-24 07:47:02 : Inf : Local database is ready.
6-10-24 07:47:02 : Inf : DNS Service: listening on: <IP_ADDRESS>:53.
6-10-24 07:47:02 : Inf : Web Service: listening on: <IP_ADDRESS>:80.
6-10-24 07:47:07 : Dbg : GET /setupapp/denon/asp/BrowseXML/loginXML.asp?token=0.
6-10-24 07:47:07 : Dbg : GET /setupapp/denon/asp/browsexm2/loginXML.asp?mac=F4A68170A1EDB49A20C42B87462AC99A&fver=1.754333&dlang=dut&startitems=1&enditems=10.
6-10-24 07:47:08 : Dbg : Unknown route : GET /setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592

So it seems the ini gets loaded, but i get the same problem.

Hi @Stijn-Daniels
It looks like your Denon AVR-2313 generates slightly different queries than other AVRs we know of.
Correct recognition and handling of different types of queries generated by different types of AVR devices is the result of the work of our entire community of people who like YTuner. As you probably realize, I cannot own all the types of AVR equipment at home to support them via YTuner. This would be a very expensive hobby for me. :wink:
Of course I can add support for new types of queries that your Denon AVR-2313 is familiar but I will need your active help.
I will only need from you a precise description of what you select on your AVR screen and what entries YTuner generates in its log releated to your specific action in AVR.

And yeah i had the feeling this had to do with me having an older AVR. But if we can get it to work... awesome!
On the AVR i select 'internet radio'. the moment i select it, i get these log entries:
6-10-24 07:47:07 : Dbg : GET /setupapp/denon/asp/BrowseXML/loginXML.asp?token=0.
6-10-24 07:47:07 : Dbg : GET /setupapp/denon/asp/browsexm2/loginXML.asp?mac=F4A68170A1EDB49A20C42B87462AC99A&fver=1.754333&dlang=dut&startitems=1&enditems=10.
6-10-24 07:47:08 : Dbg : Unknown route : GET /setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592

To me it feels like it tries to start the previously playing station and cannot find it anymore?
Let me know what other info you can use!

As a radio listener, I am often ridiculed by the script kiddies of this world. They really only know Spotify and Netflix etc. These people have never actually heard of radio and television. I'm old because I'm the radio & TV generation. No, on the contrary, I'm just as happy about new technology and enjoy having my sound list presented to me by other people. For me, it's like when I used to go to the disco and play at the local radio station. I helped shape the program there.
happy radio
And Greg, I'm very amused by your comments 👍🤣🫶👍🙏
Sorry for me, that we never met in real life. Could have much fun 🙋♀.
And, I'm here to assist and support anybody with the same love ❤ to music and technic and Software and hardware.
Happy listening 👂 📻

One question, from my end, have you set debug to level 4 in the application.ini file ?

To me it feels like it tries to start the previously playing station and cannot find it anymore?

Exactly! :+1:
First of all we need to get rid of this annoying request to start the previously playing station. After that we will try to analyze all your avr requests and prepare an appropriate response for it. I'm not saying it will be easy but I think it's worth a try because your Denon AVR-2313 looks beautiful and I bet its sound is also incredibly clean. :sound: :notes:
Please note that you will have to forget about the same menu for "Internet Radio" that you have known so far :

YTuner creates its own menu which you can also customize to some extent. For more information, see README.MD or read some opened/closed issues or discussions.
Now, let me know about your YTuner machine platform : OS and CPU arch.
In the next steps I will try to prepare YTuner binaries for this platform for you until our tests are finished. Then there will be an official release of the new version with support for your avr ... of course if we can solve the mystery of its correct support. :thinking:

One question, from my end, have you set debug to level 4 in the application.ini file ?

yes

One question, from my end, have you set debug to level 4 in the application.ini file ?

Yes, he does :
6-10-24 07:47:08 : Dbg : Unknown route : GET /setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592

I run ytuner on linux 64 ( ytuner-1.2.3-x86_64-linux.zip ). Currently its running on ubuntu 22.04. I can also run it on Docker or spin up a different OS if needed.

As a radio listener, I am often ridiculed by the script kiddies of this world.

Yeah, me too... :wink:

They really only know Spotify and Netflix etc. These people have never actually heard of radio and television. I'm old because I'm the radio & TV generation.

I feel the same way... but I haven't watched TV in a long time. Too many commercials... :wink:

And Greg, I'm very amused by your comments 👍🤣🫶👍🙏
Sorry for me, that we never met in real life. Could have much fun 🙋♀.

Yeah... that could be interesting, fun... and again not so impossible :wink: :smile:

And, I'm here to assist and support anybody with the same love ❤ to music and technic and Software and hardware.

I confirm, :+1:  Beatrice is the most active and helpful member of our community. Without her, many features in YTuner would not exist. :rocket:

Then we now have the concentrated human intelligence at our disposal to solve any problem. 🙏🤣👍🫶

Ok. lets back to work :wink:
@Stijn-Daniels
After that :

6-10-24 07:47:07 : Dbg : GET /setupapp/denon/asp/BrowseXML/loginXML.asp?token=0.
6-10-24 07:47:07 : Dbg : GET /setupapp/denon/asp/browsexm2/loginXML.asp?mac=F4A68170A1EDB49A20C42B87462AC99A&fver=1.754333&dlang=dut&startitems=1&enditems=10.
6-10-24 07:47:08 : Dbg : Unknown route : GET /setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592

Have you tried to pressing stop or :thinking:  back or :thinking: any other button like menu ? :thinking:
any addional lines in YTuner's log ? Any other "GET" request(s) ?

While in the 'now playing' screen there is a large banner saying "track niet gevonden" (track not found).
i have to wait ~10 seconds before any new commands are registered.
back -> no entry -> goes to the 'network menu'
stop -> no entry -> goes to the 'network menu'
menu -> no entry -> nothing happens
Haven't found a button that has any effect. I also tried resetting the network settings in the hope that it would forget this 'previous station'

OK. First af all ... are you sure there is a connection between AVR and YTuner? Any firewalls?
In this GET query :

6-10-24 07:47:07 : Dbg : GET /setupapp/denon/asp/browsexm2/loginXML.asp?mac=F4A68170A1EDB49A20C42B87462AC99A&fver=1.754333&dlang=dut&startitems=1&enditems=10.

AVR should receive the answer like that :
<ListOfItems>
<ItemCount>4</ItemCount>
<Item>
<ItemType>Dir</ItemType>
<Title>*** YTuner ***</Title>
<UrlDir>http://<IP_ADDRESS>/ytuner/about?ytuner=true</UrlDir>
<UrlDirBackUp>http://<IP_ADDRESS>/ytuner/about?ytuner=true</UrlDirBackUp>
<DirCount>2</DirCount>
</Item>
<Item>
<ItemType>Dir</ItemType>
<Title>Favourites</Title>
<UrlDir>http://<IP_ADDRESS>/ytuner/bookmark?ytuner=true</UrlDir>
<UrlDirBackUp>http://<IP_ADDRESS>/ytuner/bookmark?ytuner=true</UrlDirBackUp>
<DirCount>0</DirCount>
</Item>
<Item>
<ItemType>Dir</ItemType>
<Title>My Stations</Title>
<UrlDir>http://<IP_ADDRESS>/ytuner/mystations?ytuner=true</UrlDir>
<UrlDirBackUp>http://<IP_ADDRESS>/ytuner/mystations?ytuner=true</UrlDirBackUp>
<DirCount>9</DirCount>
</Item>
<Item>
<ItemType>Dir</ItemType>
<Title>Radio Browser</Title>
<UrlDir>
http://<IP_ADDRESS>/ytuner/radiobrowser?ytuner=true
</UrlDir>
<UrlDirBackUp>
http://<IP_ADDRESS>/ytuner/radiobrowser?ytuner=true
</UrlDirBackUp>
<DirCount>4</DirCount>
</Item>
</ListOfItems>

This answer is suitable for YTuner v1.2.4 alpha but it doesn't matter at all.
Can you use a web browser (on other machine than YTuner) and query YTuner like this one :
http://[your-ytuner-machine-ipv4-address-or-domain-name]/setupapp/Yamaha/asp/BrowseXML/loginXML.asp?mac=xxxxxxxxxxxxxx&dlang=eng&fver=W&start=1&howmany=8
??

I get this in logging:
6-10-24 10:21:19 : Dbg : GET /setupapp/Yamaha/asp/BrowseXML/loginXML.asp?mac=xxxxxxxxxxxxxx&dlang=eng&fver=W&start=1&howmany=8.

My browser shows this:
<ListOfItems>
<ItemCount>3</ItemCount>
<Item>
<ItemType>Dir</ItemType>
<Title>My stations</Title>
<UrlDir>
http://<IP_ADDRESS>/ytuner/my_stations?ytuner=true
</UrlDir>
<UrlDirBackUp>
http://<IP_ADDRESS>/ytuner/my_stations?ytuner=true
</UrlDirBackUp>
<DirCount>1</DirCount>
</Item>
<Item>
<ItemType>Dir</ItemType>
<Title>Radio browser</Title>
<UrlDir>
http://<IP_ADDRESS>/ytuner/radiobrowser?ytuner=true
</UrlDir>
<UrlDirBackUp>
http://<IP_ADDRESS>/ytuner/radiobrowser?ytuner=true
</UrlDirBackUp>
<DirCount>4</DirCount>
</Item>
<Item>
<ItemType>Dir</ItemType>
<Title>Bookmark</Title>
<UrlDir>http://<IP_ADDRESS>/ytuner/bookmark?ytuner=true</UrlDir>
<UrlDirBackUp>http://<IP_ADDRESS>/ytuner/bookmark?ytuner=true</UrlDirBackUp>
<DirCount>1</DirCount>
</Item>
</ListOfItems>

What about this one :
http://[your-ytuner-machine-ipv4-address-or-domain-name]/setupapp/denon/asp/browsexm2/loginXML.asp?mac=F4A68170A1EDB49A20C42B87462AC99A&fver=1.754333&dlang=dut&startitems=1&enditems=10
?

6-10-24 10:32:29 : Dbg : GET /setupapp/denon/asp/browsexm2/loginXML.asp?mac=F4A68170A1EDB49A20C42B87462AC99A&fver=1.754333&dlang=dut&startitems=1&enditems=10.

<ListOfItems>
<ItemCount>3</ItemCount>
<Item>
<ItemType>Dir</ItemType>
<Title>My stations</Title>
<UrlDir>
http://<IP_ADDRESS>/ytuner/my_stations?ytuner=true
</UrlDir>
<UrlDirBackUp>
http://<IP_ADDRESS>/ytuner/my_stations?ytuner=true
</UrlDirBackUp>
<DirCount>1</DirCount>
</Item>
<Item>
<ItemType>Dir</ItemType>
<Title>Radio browser</Title>
<UrlDir>
http://<IP_ADDRESS>/ytuner/radiobrowser?ytuner=true
</UrlDir>
<UrlDirBackUp>
http://<IP_ADDRESS>/ytuner/radiobrowser?ytuner=true
</UrlDirBackUp>
<DirCount>4</DirCount>
</Item>
<Item>
<ItemType>Dir</ItemType>
<Title>Bookmark</Title>
<UrlDir>http://<IP_ADDRESS>/ytuner/bookmark?ytuner=true</UrlDir>
<UrlDirBackUp>http://<IP_ADDRESS>/ytuner/bookmark?ytuner=true</UrlDirBackUp>
<DirCount>1</DirCount>
</Item>
</ListOfItems>

Yup, it looks like YTuner answer correct, but this "correct" reply is not valid for your Denon.
AVR-2313 expects another. The question is: what kind? :thinking:
Of course, this is not documented anywhere. All we have left is trial and error... I need to think and prepare something for the tests. :thinking:

Take your time and let me know what i can do to help!

Let's strip returned xml...
Try this test release:
ytuner-1.2.4+1-x86_64-linux.zip

6-10-24 11:50:24 : Dbg : GET /setupapp/denon/asp/browsexm2/loginXML.asp?mac=F4A68170A1EDB49A20C42B87462AC99A&fver=1.754333&dlang=dut&startitems=1&enditems=10.
6-10-24 11:50:24 : Dbg : GET /setupapp/denon/asp/browsexm2/loginXML.asp?mac=F4A68170A1EDB49A20C42B87462AC99A&fver=1.754333&dlang=dut&startitems=1&enditems=10.
6-10-24 11:50:26 : Dbg : Unknown route : GET /setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592.

I briefly saw a different menu before the 'now playing' was opened. The top of the Menu was Ytuner. But again, i'm unable to navigate to that menu, and am stuck in the 'now playing'.

I briefly saw a different menu before the 'now playing' was opened. The top of the Menu was Ytuner. But again, i'm unable to navigate to that menu, and am stuck in the 'now playing'.

There is little progress ... Have you seen this menu with *** YTuner *** at the top before or just in the new version? :thinking:
Try to press stop too.

There is little progress ...
Have you seen main menu with My stations at the top before (with YTuner v1.2.3)?

No not before. First time seeing that.
Buttons are still doing the same as before.
A different question, i noticed during startup of ytuner i get this message:
6-10-24 11:58:03 : Wrn : You are running out of INI file or your ytuner.ini file is outdated! Some features may not work properly! Check https://github.com/coffeegreg/YTuner/tree/master/cfg for the correct INI file for your version of YTuner.

The content of my stations.ini is pasted here
Can i ignore this warning for now?

Can i ignore this warning for now?
Please ignore this for now.
Have you seen main menu with My stations at the top before (with YTuner v1.2.3)?

Yup, i just used 1.2.3 and it shows My stations.

Yup, i just used 1.2.3 and it shows My stations.

Just for a moment you saw My staions and after that you stuck in the 'now playing' again?

YesOp 6 okt 2024 om 14:11 heeft Greg @.***> het volgende geschreven:
Yup, i just used 1.2.3 and it shows My stations.
Just for a moment you saw My Stations and after that you stuck in the 'now playing' again?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

Your Denon is a very stubborn beast :wink: It's hard to believe that it's impossible to interrupt the playback of a station that... no longer exists.
OK. Let's try to "cure" your AVR and cheat it. It's time for some magic ... :magic_wand:  Try this one:
ytuner-1.2.4+2-x86_64-linux.zip

And yeah i had the feeling this had to do with me having an older AVR. But if we can get it to work... awesome!

BTW ... "older" doesn't mean "worst". When I see the "quality" of "new" model products and what they are made of, I definitely prefer the older ones. This applies to everything that is currently being manufactured, not just AVR. :confused:

Is it possible that you have listened to SKYRADIO before? :thinking:
I did a little research and it turned out that vtuner does not throw any HTTP codes in response :

Very strange behavior. Maybe that's why your denon reacts so strangely because the lack of HTTP code is a vet rare occurrence. :open_mouth:

That could be the last station played yes.

BTW ... "older" doesn't mean "worst". When I see the "quality" of "new" model products and what they are made of, I definitely prefer the older ones. This applies to everything that is currently being manufactured, not just AVR. 😕

It works with home assistant, spotify and works with most codecs. So for me its still ideal (and everything local!)

Hah nice debug surprise :-)
6-10-24 15:04:25 : Dbg : GET /setupapp/denon/asp/BrowseXML/loginXML.asp?token=0.
6-10-24 15:04:25 : Dbg : GET /setupapp/denon/asp/browsexm2/loginXML.asp?mac=F4A68170A1EDB49A20C42B87462AC99A&fver=1.754333&dlang=dut&startitems=1&enditems=10.
6-10-24 15:04:25 : Dbg : GET /setupapp/denon/asp/browsexm2/loginXML.asp?mac=F4A68170A1EDB49A20C42B87462AC99A&fver=1.754333&dlang=dut&startitems=1&enditems=10.
6-10-24 15:04:27 : Dbg : GET /setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592.
6-10-24 15:04:27 : Dbg : Temporary test redirect to: http://mp3.ffh.de/ffhchannels/hqeurodance.mp3.
6-10-24 15:04:28 : Dbg : GET /setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592.
6-10-24 15:04:28 : Dbg : Temporary test redirect to: http://mp3.ffh.de/ffhchannels/hqeurodance.mp3.

I can now use version 1.2.3 as well!

What do we learn about that situation ?
A proper stations.ini or stations.yaml would solve lot's of issues.
I,do recommend using the stations.ini or yaml file before adding own channels into the list.

I have also issues with the stations.yaml file while starting with ytuner. Some of the issues are ytuner related but most of them are User issue. That's normal, we are humans.
Great Sunday evening !

Hah nice debug surprise :-)
I can now use version 1.2.3 as well!

Does this mean you see the full menu where you can select stations and listen to them? :smiley:

Hah nice debug surprise :-)
I can now use version 1.2.3 as well!

Does this mean you see the full menu where you can select categories and stations and listen to them? 😃

Yes it shows my stations as well as browsing through all stations. And the full menu ofcourse.
I don’t think it was a not working skyradio link. When i remove the dns redirect it works, and a second channel that i could still play had the exact same issues.
anyways, your fix of “changing the channel” did the trick

I'm glad to know that YTuner works for you. :smiley:
Read carefully the description in README.MD and in ytuner.ini and avr.ini. You may discover interesting functionalities. :+1:

When i remove the dns redirect it works

I don't really understand what "dns redirect" is all about. :thinking:  Could you write something more? Your experiences and observations may help others someday.

I'm glad to know that YTuner works for you. 😃 Read carefully the description in README.MD and in ytuner.ini and avr.ini. You may discover interesting functionalities. 👍

When i remove the dns redirect it works

I don't really understand what "dns redirect" is all about. 🤔 Could you write something more? Your experiences and observations may help others someday.

I meant removing the entry on my DNS provider (adguard) that points denon.vtuner.com to the ytuner server. So when the Denon is allowed to access the internet directly it succeeds in playing the skyradio channel. But when i add the DNS rewrite that points the traffic to Ytuner we got in the above situation. Which you managed to fix!

Please let me know when you finish testing YTuner with AVR-2313.
I'll be happy to add your Denon to the "Confirmed working" list. :rocket:

The issue needs to be clarified. It looks like a dns setup issue in general.
Have you set the dns redirection before powering the AVR to the network ?. My AVR has buffered settings on the Network interface.
Please do the following while using dns redirection.
If you have set the vtuner redirection check for backup dns entries your device is using like primary.vtuner.com and secondary.vtuner.com.
Check with dnslookup for .vtuner.com
I'm using dns redirect for Yamaha on pihole and on adguard and it worked fine while analyzed the vtuner ip addresses for Yamaha devices
Here are my entries for pihole and adguard. Greg, It could be part of the documentation, while some other guys needs redirection.

Bea... yes, you right. This case need more clarification. :+1:
It seems to me that we understand the word "redirect" differently here.
I tell you what I have done with my test case scenrio and latest test YTuner release :
This log entry:

6-10-24 07:47:08 : Dbg : Unknown route : GET /setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592

means that the AVR is trying to connect to the radio station whose URL points exactly to... the YTuner machine. :open_mouth:
And here we can see how differently YTuner and the original vTuner work.
The YTuner sends real radio stations link to the AVR like this one :
http://mp3.ffh.de/ffhchannels/hqeurodance.mp3
but vTuner sends to the AVR someting like this :
http://radio567.vtuner.com/setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592
... and when vTuner service get such request from AVR it does a HTTP 302 redirect to:
http://25453.live.streamtheworld.com/SKYRADIO.mp3?dist=vtuner
and AVR will start play a music. (Try it with your web browser :wink: )
But what happens when YTuner receives a link like this one:
http://radio567.vtuner.com/setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592 ?
... nothing, because YTuner does not support such endpoint and this log entry appear:

6-10-24 07:47:08 : Dbg : Unknown route : GET /setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2B126E&id=592

So to "cure" our Denon I made a temporary endpoint supporting the following URI part: func/dynamOD.asp. and make redirection (HTTP 302) to any corrent radio station link like http://mp3.ffh.de/ffhchannels/hqeurodance.mp3.
Yup.. From now on, Denon is "cured" because the last radio station it plays uses the real link, not the vTuner's URL used for later redirection. :wink:
:thinking:  An approach such as that used by vTuner may prove to be better. If a radio station URL changes and someone/something at vTuner monitors it and quickly updates the data about the URL change in its radio station database the user will not even know about this change because his AVR will still use the same link which will only redirect him to the right one. Yeah, solution "good" enough to "block" some AVRs too... :wink:
Therefore I believe that the whole case has nothing to do with DNS configuration. :wink:
BTW... What is wrong with YTuner's built-in DNS service? :thinking: Why do you use additional services such as dnsmasq, pihole or adguard? :thinking:

Hey Greg, everything is working as it should, better then before! So feel to mark it as  comfirmed.
The only caveat is that the issue i had is generic for this Denon type? But if that ever happens the solution is in the thread!

@TheBossME i meant DNS rewrite, my adguard setup looks exactly the same (with different ip ;-) )

BTW... What is wrong with YTuner's built-in DNS service? 🤔 Why do you use additional services such as dnsmasq, pihole or adguard? 🤔

I use adguard for filtering ads on my entire network, so mobile phones, laptop, computer. Saves us from a lot of commercials. And it offers functionality to redirect the DNS to Ytuner, so why not use it.


please add auto save with version system on the basis of time

Issue Type: Feature Request
If our code will save at a particular time in the form of history version . Then code recovery easy . It would be possible . vs code provide auto saving mode.
VS Code version: Code 1.66.2 (dfd34e8260c270da74b5c2d86d61aee4b6d56977, 2022-04-11T07:49:24.808Z)
OS version: Linux x64 5.13.0-40-generic snap
Restricted Mode: No

Isnt this https://code.visualstudio.com/updates/v1_66#_local-history ?


[10.x] Feature: Create non-primary autoincrements in migrations

The Problem
There is currently no easy and reliable way to add auto-increments into a migration without it being a primary key.
There is debate as to wether this should be desirable, however, I believe it should, at least, be possible. A valid usecase is wanting non-incrementing ids to avoid record number 4563 implicating the existance of 4562, 4561, etc., allowing for easy scraping of data in URLs. Instead, you may wish for your increments to be in a separate column to that which you use to primarily identify the record.
Currently, the only way to achieve this is with something as horrible as:
Schema::table('applications', function (Blueprint $table) {
    $table->unsignedBigInteger('contract_number')->unique()->nullable()->after('id');
});

\Illuminate\Support\Facades\DB::statement('ALTER TABLE applications MODIFY contract_number INT AUTO_INCREMENT');

This is ugly for two reasons: firstly, you have to do the ALTER TABLE outside of the migration function to ensure it runs in the correct order. Secondly, this will cause significant issues if you change the underlying database; the above code will only work for MySQL databases, and would throw errors for any other type. This breaks the purpose of having abstraction layers in the first place.
The Solution
This pull requests allows for backwards compatibility, still accepting the same behaviour for passing any of the integer-based columns a true or false value for $autoIncrements. However, it additionally adds the ability to pass in a string to indicate the key type. For the databases that support it (all grammars except sqlite), you can pass unique instead.
Eg.
Schema::table('users', function (Blueprint $table) {
     $table->uuid('id')->primary();
     $table->string('name');
     $blueprint->integer('customer_number', 'unique');
});

// or

Schema::table('users', function (Blueprint $table) {
     $table->uuid('id')->primary();
     $table->string('name');
     $blueprint->integer('customer_number')->autoIncrements('unique');
});

The Constraints
The primary constraint for this change is keeping it backwards compatible; this is not a big enough change to break BWC, and so this is the most eloquent way I could come up with to allow this functionality.
I considered adding an additional property, however this didn't make sense for when you didn't want a column to be auto incrementing. Instead, I have expanded the meaning of the increment parameter to include the key type.
If anyone has any suggestion of how to achieve this better, then I am open to changing the approach.
It is also worth noting that this raises another issue: sqlite. Sqlite is the only supported grammar that does not support non-primary auto-increments (at least, from what I can see from the documentation).

Why not leave the auto-incrementing ID as your primary key and have a secondary unique key on a uuid field?

I think that is definitely a valid, and, admittedly, good way of doing it.
However, I'm not sure that satisfies a reason to prohibit it. Following is a brain-dump several reasons in which I can think why someone might wish to do it. The truth of the matter is that none of these are absolutely game-breaking, but it feels unnecessarily limiting in an otherwise intuitive framework.
For starters, this provides problems for a development flow. You might well introduce auto-numbers as an afterthought in a down-the-line feature. It feels wrong to change your primary key on the table to a different column, and it could well cause large restructuring.
Secondly, primary keys and unique keys are almost the same, and can be the same, but not necessarily actually the same. By default, primary keys are clustered indexes, vs auto-increments being non-clustered. This could potentially have a performance impact if your primary key is different to the key in which you use to primarily identify the record. This is mitigable, but causes more friction in the development flow.
Thirdly, there is a potentially a case in which you would only want to auto-number new records, not legacy ones. By using the auto-number as a primary key, this is not possible.
Fourthly, I think syntactically it causes confusion: a lot of people will assume that the primary key is the column being matched on. Particularly if you are looking at the database, it feels wrong to access throughout the entire codebase the record via a non-primary ID, only to see that the primary ID is not what is being used.
And personally, I like to keep my identifying column called id (whether its a uuid or autoincrement ID). To me this is easiest for everyone else reading the code. And there's something that feels off about the following structure:
id - char(36) - unique
invoice_number - unsigned integer - primary
name - varchar
...

It feels dirty to not have the id column be the primary key, and to make another column the uuid feels like it causes unnecessary confusion (and model configuration) for other developers.
I apologise my response is a bit rambly, and very long winded, but I hope this gives some insight into why I think auto-numbers shouldn't be limited to primary keys only, particularly as its supported by most databases.

TLDR; I think that if you wish to not have non-primary auto-increment columns then that should be a per-team policy, not a framework-enforced policy.


Estimation of Caspian sea retreat using surface albedo_Last_Version

Data Type
Satellite ECVs - Atmospheric Composition
Assessment Category
consistency
Dataset Name
satellite-albedo
Question Number
3
Workflow ID
eqctier3-61980bcc-1443-4e9f-8281-97637a678ec8
Zipped Notebook
Last_V_ALBEDO_Caspian sea.zip
Environment

# Paste here

Anything else we need to know?
Hi Mattia,
Could you please provide the permalink for this updated version?
Thanks.

Hi @FaezehKarimian,

Could you please provide the permalink for this updated version?

Do you have an open issue for this notebook already?

Hi @malmans2,
Member
malmans2,
Yes, on June 7th, I had opened an issue. The issue can be found at "https://github.com/ecmwf-projects/c3s2-eqc-quality-assessment/issues/105#issue-2340410004", which I have attached.

Then you should use that issue as explained in my comment: https://github.com/ecmwf-projects/c3s2-eqc-quality-assessment/issues/105#issuecomment-2158140494
I'm going to close this issue. Please send the new notebook in #105.
Also, please let me know if you have more duplicates as we would need to close some issues.

Okay, sure. Thanks.
On Fri, Oct 25, 2024 at 9:27 AM Mattia Almansi @.***>
wrote:

Then you should use that issue as explained in my comment: #105 (comment)
https://github.com/ecmwf-projects/c3s2-eqc-quality-assessment/issues/105#issuecomment-2158140494
I'm going to close this issue. Please send the new notebook in #105
https://github.com/ecmwf-projects/c3s2-eqc-quality-assessment/issues/105
.
Also, please let me know if you have more duplicates as we would need to
close some issues.
—
Reply to this email directly, view it on GitHub
https://github.com/ecmwf-projects/c3s2-eqc-quality-assessment/issues/245#issuecomment-2437086890,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BBHQ3D6DK2H4LNVLHVPKDJ3Z5HXGXAVCNFSM6AAAAABQQY64XOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMZXGA4DMOBZGA
.
You are receiving this because you were mentioned.Message ID:
@.***
com>


React script caching

Right now the React scripts are inlined causing each hydration script to re-bundle it. The hydration scripts should reference a reusable, cacheable React script instead.

Depends on https://github.com/lucacasonato/esbuild_deno_loader/issues/31.


⚠ Turnos 24x7 has degraded performance

In ad52658, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 984 ms

Resolved: Turnos 24x7 performance has improved in 3167467.


KeyError on LambdaRank Tutorial

I basically follow the exact step with your tutorial on /tutorial/ptranking_demo_ltr.ipynb file. I used the same dataset from LETOR 4.0 MQ2008 but got a KeyError in this line of code lambdarank_losses, lambdarank_train_ndcgs, lambdarank_test_ndcgs = ltr_evaluator.naive_train(ranker=lambdarank, eval_dict=eval_dict, train_data=train_data, test_data=test_data). It was fine with the RankNet though.
Error:
label_type = kwargs['label_type']
     32         assert LABEL_TYPE.MultiLabel == label_type
     33         assert 'presort' in kwargs and kwargs['presort'] is True  # aiming for direct usage of ideal ranking

KeyError: 'label_type'

这里修改一下就OK了


Refactor GraphQL documents generator package to remove CLI specific operations.

Description of changes

Moves the steps to read the input GraphQL schema from user's file system to amplify-codegen package.
Also moves the step to write back the generated GraphQL operations to user's file system to amplify-codegen package.
GraphQL documents generator package now accepts the GraphQL SDL/introspection schema as a string and returns a map of generated operations that looks like:

{
    queries: "<all get/list queries>",
    mutations: "<all create/update/delete mutations>",
    subscriptions: "<all onCreate/onUpdate/onDelete subscriptions>",
    fragments: "<all fragments if any defined in the input>"
}

Issue #, if available

Description of how you validated changes
Unit testing, running amplify-dev codegen statements in iOS sample app
Checklist

[x] PR description included
[x] yarn test passes
[x] Tests are changed or added
[ ] Relevant documentation is changed or added (and PR referenced)
[ ] Breaking changes to existing customers are released behind a feature flag or major version update
[ ] Changes are tested using sample applications for all relevant platforms (iOS/android/flutter/Javascript) that use the feature added/modified

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@906ffab). Click here to learn what that means.
The diff coverage is 66.10%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@           Coverage Diff           @@
##             main     #562   +/-   ##
=======================================
  Coverage        ?   85.59%
=======================================
  Files           ?      149
  Lines           ?     7393
  Branches        ?     1964
=======================================
  Hits            ?     6328
  Misses          ?      965
  Partials        ?      100

Impacted Files
Coverage Δ

packages/graphql-docs-generator/src/cli.ts
0.00% <0.00%> (ø)

...s/graphql-docs-generator/src/generator/generate.ts
91.66% <ø> (ø)

packages/amplify-codegen/src/utils/loading.js
27.27% <27.27%> (ø)

...ackages/amplify-codegen/src/commands/statements.js
76.56% <52.63%> (ø)

packages/graphql-docs-generator/src/index.ts
94.73% <85.71%> (ø)

packages/amplify-codegen/src/utils/index.js
100.00% <100.00%> (ø)

...ages/graphql-docs-generator/src/generator/index.ts
100.00% <100.00%> (ø)

...phql-docs-generator/src/generator/utils/loading.ts
93.33% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Break up ComputedFile::process_computed_file method

Context

ComputedFile::process_computed_file is responsible for saving the passed computed file, uploading it to s3, removing it from the local filesystem, and then closing the DB connection that was opened for the current thread.
Solution or next step
This method should be broken up into two methods:

One called upload_to_s3 which uploads the inputted computed file to s3
Another called clean_up_local_computed_file (or something similar) which removes/unlinks the local computed file.

As well, the closing of the DB connection should be passed up to the caller function and should be closer to the ThreadPoolExecutor for better clarity.

Addressed in PR https://github.com/AlexsLemonade/scpca-portal/pull/798


Prevent auto seeking when user click to canvas

Hi, I need to save all of functionality but also have to cancel seeking position when user works with wavesurfer (create ranges).
I've separated seeking by alternative playback, and I wanna use canvas only for working with ranges and my extension - for seeking. A lot of our real users want it...
It looks like

Thx.

interact: false?

doh... sorry for stupid question, I thought this option can cancel creating of ranges. Thx a lot.


Better user experience when library is not in shared_preload_libraries

Related to #200. I think there are (at least) two pain points when using the extension, while not putting it in shared_preload_libraries:

If you call read_csv/read_parquet you get an error saying it cannot be executed in postgres. I think this can be fixed by making these functions C functions, then the library will be automatically loaded when you call them.
Setting duckdb.execution = true is a no-op. I don't think there's a way to make this experience better, except try to educate people better. Right now the README doesn't mention any of the options to load the library, except for doing "create extension". I think the README should mention LOAD, session_preload_libraries and shared_preload_libraries.

Moving to long term. For now we require shared_preload_libraries, we can reconsider that in the future.


[Thumbs] Enter or space doesn't activate slide

Swiper Version: 6.5.0
Platform/Target and Browser Versions: macOS, any browser (latest versions)

What You Did
Pressing enter or space when a thumbnail slide is focused doesn't activate the slide like it should, even when the slides themselves are button elements. A similar issue was posted almost a year ago on Stack Overflow: https://stackoverflow.com/questions/61110557/swiper-js-enter-button-doesnt-do-anything-on-the-thumbnail-for-accessibility.
Code example: https://codesandbox.io/s/swiper-thumbs-gallery-forked-229z5?file=/index.html
Expected Behavior
Pressing enter or space when a thumbnail slide is focused should activate the slide.
Actual Behavior
Nothing happens when enter or space is pressed when a thumbnail slide is focused.

As a workaround you can just assign keydown event listener to thumbs slides, watch for Enter key down and trigger click on thumb

@nolimits4web Thanks for the quick reply. I've tried adding a keydown listener to the thumbs slider, but it doesn't trigger. I've updated the sandbox: https://codesandbox.io/s/swiper-thumbs-gallery-forked-229z5?file=/index.html. Am I missing something?

I have a working workaround here: https://codesandbox.io/s/swiper-thumbs-gallery-forked-2d1up?file=/index.html.
Basically, add data-slide-index to all thumbs and add a keydown listener:
galleryThumbs.$el.on("keydown", (e) => {
  if (e.keyCode !== 13 && e.keyCode !== 32) return;

  var slideIndex = e.target.dataset.slideIndex;

  if (!slideIndex) return;

  galleryThumbs.slideTo(slideIndex);
  galleryTop.slideTo(slideIndex);
});

Hi,
A simpler way is to change the div to a button. No js needed.

A simpler way is to change the div to a button. No js needed.

Do you have an example?
Still unable to fix in React without mentioned
<Swiper {...swiperOptions}>
    {items.map((item) => (
        <SwiperSlide
            tag={'button'}
            key={item.id}
        >
            <Component item={item} />
        </SwiperSlide>
    ))}
</Swiper>

A simpler way is to change the div to a button. No js needed.

Do you have an example? Still unable to fix in React without mentioned
<Swiper {...swiperOptions}>
    {items.map((item) => (
        <SwiperSlide
            tag={'button'}     <---- change from div to button
            key={item.id}
        >
            <Component item={item} />
        </SwiperSlide>
    ))}
</Swiper>

Everything I did is:
<button class="swiper-button-prev"></button> <button class="swiper-button-next"></button>
Maybe you also have to add the 'A11y' module but I don't know.

Resolved with this one... but I am still not happy with that.
const HandleSlideKeyDown = (e: KeyboardEvent<HTMLElement>, index: number) => {
    if (e.key !== 'Enter' && e.key !== ' ') return;
    mySwiper?.slideTo(index);
};

<Swiper {...swiperOptions}>
    {items.map((item, index) => (
        <SwiperSlide
            tag={'button'}
            key={item.id}
            onKeyDown={(e) => HandleSlideKeyDown(e, index)}
        >
            <Component item={item} />
        </SwiperSlide>
    ))}
</Swiper>


Support for SRTP with rtpengine

I am using drachtio-server, this repo with RTPEngine. Siprec is working fine for me and the recording files are getting generated. I need to support SRTP with the existing setup. I know the configuration of certs at drachtio-server but not sure what configuration I need to do at rtpengine. Need help to make SRTP working.

This is mainly a case of familiarizing yourself with the rtpengine docs.

ok, I will go through the docs but is it possible to do that with the existing setup?

yes, its a matter of the rtpengine configs, but it can be done


[QUESTION] Pathways performance in Teams

Has anyone come across the performance difference between opening up Pathways directly from the browser vs. opening it up in Teams.  We have notice that it can take up to 10-15 seconds to load in Teams.  Navigating to the different training tabs takes longer than expected too.  Is this normal behavior?

You're authenticating and then dynamically loading the SharePoint page into an iFrame so, yeah, I think it could absolutely take longer.


Use HtmlSelect instead of Menu for Intent in examples

This is a task just for you :slightly_smiling_face: @Yozhgoor
A good picture is better than a long explanation.
Instead of having this:

I want this:

In all examples everywhere.

am in


Auto snippet matches alpha and \alpha

Hey, just wanted to say I really appreciate this plugin. In math mode, typing alpha turns into \alpha and typing \alpha turns into \\alpha. Is this intended? I would expect typing \alpha to not trigger the snippet and return \alpha (unaffected). This issue is not noticed with \angle, for example.

Ah, this is because there's no regex pattern to prevent this snippet from triggering again when prefaced by a backslash. This should be a pretty quick fix; it should be updated now.

Thank you for the quick response and fix!

A similar issue exists with \sqrt, and I've implemented a similar fix in my fork of this repository but wanted to let you know.

Essentially the issue lies with snippets which have some trigger trig but produce something like \trig[optional stuff]; therefore I found a more efficient fix - just need to put a check that context.trig is contained within the command. This also eliminates the need for the backslash flag.


[Feature Request] "Hands-off" screen recording

The way ScreenToGif works right now is very intuitive and helpful for fine-tuning of a recorded video. However, I'm used to a more "hands-off" approach, which consists of the following:

Potential command-line invocation with parameters such as output file, video format, whether to select the region or to use something else (fixed rect or last rect; you can already do most of this)
If region select is chosen, prompt for the area to record. Once the mouse is released, begin recording
Stop upon normal execution or invocation of the app again with a parameter such as --stop
Once the video is finished, automatically save & encode the video.

This workflow is incredibly helpful with hotkeys; I'm able to achieve this in my normal setup with this script and another "shim" script I made to toggle the recording with hotkeys.
It's very similar to how a screenshot would work, e.g. Windows' Snip & Sketch invocation with Win + Shift + S; the difference is, since it's a video, you'd press the hotkey twice. Once to start the recording, once to stop.
This might be a bit of an undertaking, but I think it would be worth it. Please let me know your thoughts!

Here are some videos demonstrating the behavior.
Video of desktop during process (mp4)
Video resulting from process (mp4)

Wanted to ditto this ask.
If we can script against an API or use the CLI we could automate this app and implement it into our QA Test Automation workflow in CI/CD. It would be used in place of or in tandem with technologies like ffmpeg for video recording. This would allow us to record the screen as a browser is being interacted with by automation for test purposes in the cloud. We would then be able to store the test run recording as a hopefully compact gif and link to that in our test report which is a generated HTML file. We would then be able to review and quickly figure out what went wrong if a test fails without having to manually reproduce the error or run the test multiple times to "see" what went wrong.


mate.mate-user-guide: 1.20.0 -> 1.20.1

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools.
This update was made based on information from https://repology.org/metapackage/mate-user-guide/versions.
These checks were done:

built on NixOS

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

directory tree listing: https://gist.github.com/69230e142f75a0bf18525c97d28a5fae

du listing: https://gist.github.com/82fdc8e01e8e7a7c1fc4250a582e480a

meta.description for mate.mate-user-guide is: '"MATE User Guide"'.
cc @romildo for testing.
Experimental: this build is cached with Cachix. To use the cache follow these experimental instructions:
One time setup in nixpkgs Git checkout:
cachix use r-ryantm
git remote add r-ryantm https://github.com/r-ryantm/nixpkgs.git

Test this build:
git fetch r-ryantm && git checkout 85ad4464930b21cc438c20940aba69750b2eddf9 && nix-shell --pure -I nixpkgs=. -p mate.mate-user-guide

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: mate.mate-user-guide
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.

Success on x86_64-linux (full log)
Attempted: mate.mate-user-guide
Partial log (click to expand)
make[2]: Nothing to be done for 'install-exec-am'.
 /nix/store/n7qp8pffvcb5ff52l2nrc3g2wvxfrk75-coreutils-8.29/bin/mkdir -p '/nix/store/0lv44nhic10r7ig8q4xy439b1byzv8ya-mate-user-guide-1.20.1/share/applications'
 /nix/store/n7qp8pffvcb5ff52l2nrc3g2wvxfrk75-coreutils-8.29/bin/install -c -m 644 mate-user-guide.desktop '/nix/store/0lv44nhic10r7ig8q4xy439b1byzv8ya-mate-user-guide-1.20.1/share/applications'
make[2]: Leaving directory '/build/mate-user-guide-1.20.1'
make[1]: Leaving directory '/build/mate-user-guide-1.20.1'
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/0lv44nhic10r7ig8q4xy439b1byzv8ya-mate-user-guide-1.20.1
strip is /nix/store/4qvrxzxa535y8304mk195x50b6p9607d-binutils-2.30/bin/strip
patching script interpreter paths in /nix/store/0lv44nhic10r7ig8q4xy439b1byzv8ya-mate-user-guide-1.20.1
checking for references to /build in /nix/store/0lv44nhic10r7ig8q4xy439b1byzv8ya-mate-user-guide-1.20.1...

Failure on aarch64-linux (full log)
Attempted: mate.mate-user-guide
Partial log (click to expand)
[1744/2152] Building CXX object Source/WebKit/CMakeFiles/WebKit.dir/WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.cpp.o
[1745/2152] Building CXX object Source/WebKit/CMakeFiles/WebKit.dir/WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp.o
[1746/2152] Building CXX object Source/WebKit/CMakeFiles/WebKit.dir/Shared/WebPlatformTouchPoint.cpp.o
[1747/2152] Building CXX object Source/WebKit/CMakeFiles/WebKit.dir/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp.o
[1748/2152] Building CXX object Source/WebKit/CMakeFiles/WebKit.dir/WebProcess/InjectedBundle/DOM/InjectedBundleFileHandle.cpp.o
[1749/2152] Building CXX object Source/WebKit/CMakeFiles/WebKit.dir/WebProcess/FullScreen/WebFullScreenManager.cpp.o
building of '/nix/store/k89cdp455jvgza4vhknls7qa1zh3vh13-webkitgtk-2.20.3.drv' timed out after 3600 seconds
cannot build derivation '/nix/store/wabnj5wjaqm7ap1jcn9nnjdwf7ylssb0-yelp-3.28.1.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/2gw5xjq37304ciiimymzyax85mdn1jfa-mate-user-guide-1.20.1.drv': 1 dependencies couldn't be built
error: build of '/nix/store/2gw5xjq37304ciiimymzyax85mdn1jfa-mate-user-guide-1.20.1.drv' failed


[BD-46] docs: changed text description code editable button in code example

Description

[ ] Replace "Show/hide code example" with "Show/hide editable code example"
[ ] Add helper text describing the editable live code editor's capability (i.e.,
Any Paragon component or export may be added to the code example.
).

Issue: https://github.com/openedx/paragon/issues/2189
Deploy Preview
Paragon
Merge Checklist

[ ] If your update includes visual changes, have they been reviewed by a designer? Send them a link to the Netlify deploy preview, if applicable.
[ ] Does your change adhere to the documented style conventions?
[ ] Do any prop types have missing descriptions in the Props API tables in the documentation site (check deploy preview)?
[x] Were your changes tested using all available themes (see theme switcher in the header of the deploy preview, under the "Settings" icon)?
[ ] Were your changes tested in the example app?
[x] Is there adequate test coverage for your changes?
[ ] Consider whether this change needs to reviewed/QA'ed for accessibility (a11y). If so, please add wittjeff and adamstankiewicz as reviewers on this PR.

Post-merge Checklist

[ ] Verify your changes were released to NPM at the expected version.
[ ] If you'd like, share your contribution in #show-and-tell.
[ ] 🎉 🙌 Celebrate! Thanks for your contribution.

Thanks for the pull request, @PKulkoRaccoonGang!
When this pull request is ready, tag your edX technical lead.

@PKulkoRaccoonGang Even though your pull request wasn’t merged, please take a moment  to answer a two question survey so we can improve your experience in the future.


feat(types): Added types in useApiCall hooks

Completed the migration to typescript for all the API calls in pages .

After merging #538 there are some conflicts on this branch.

After merging #538 there are some conflicts on this branch.

My end semester are going on will be resolving it after the week

My end exams semester are going on will be resolving it after the week

No worries at all, take your time and good luck.

Ready to review @frouioui

@frouioui can we merge this soon, its types are very important to migrate other component


Added nicer errors when you do invalid operations on a ChaiBuffer from device

Say you try and capture an Array by value in a device lambda, I think we've all made this mistake before
Array< int, 1, RAJA::PERM_I, std::ptrdiff_t, ChaiBuffer > phi( 10 );
  forall< RAJA::cuda_exec< 32 > >( 10, [=] LVARRAY_DEVICE ( std::ptrdiff_t const i )
  {
    phi( i ) = i;
  } );

Previous error message was the result of calling a host function on device
unknown file: Failure
C++ exception with description "campCudaErrchk(cudaStreamSynchronize(stream)) an illegal memory access was encountered /usr/gapps/GEOSX/thirdPartyLibs/2023-01-23/install-lassen-clang13-cuda11-release/raja/include/camp/resource/cuda.hpp:172" thrown in the test body.

Now you get something clearer, although albeit much longer
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [0,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [1,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [2,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [3,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [4,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [5,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [6,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [7,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [8,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [9,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [10,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [11,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [12,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [13,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [14,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [15,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [16,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [17,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [18,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [19,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [20,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [21,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [22,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [23,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [24,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [25,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [26,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [27,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [28,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [29,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [30,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
/usr/WS2/corbett5/geosx/GEOSX/src/coreComponents/LvArray/unitTests/../src/ChaiBuffer.hpp:146: LvArray::ChaiBuffer<T>::ChaiBuffer(__nv_bool) [with T = int]: block: [0,0,0], thread: [31,0,0] Assertion `false && "EXP = " "true" "MSG = " "\"Creating a new ChaiBuffer on device is not supported.\""` failed.
unknown file: Failure
C++ exception with description "campCudaErrchk(cudaStreamSynchronize(stream)) device-side assert triggered /usr/gapps/GEOSX/thirdPartyLibs/2023-01-23/install-lassen-clang13-cuda11-release/raja/include/camp/resource/cuda.hpp:172" thrown in the test body.

The only downside I see is that I have to mark certain function in ChaiBuffer which should really be host only as host-device. But I don't really see this as a problem since clearly the compiler was fine calling these host functions from device.

If we really wanted to we could put error messages up higher in the call stack so that say the Array copy constructor would say something like "can't copy construct an Array< ..., ChaiBuffer> on device". But that seems a bit excessive to me.

I updated the error message you see when you capture an Array on device.

Now part of https://github.com/GEOS-DEV/LvArray/pull/288


Show number of files and folders in overview and interactive mode

It would be really amazing, if dua could show the number of files and folders per displayed directory next to the size. Also in interactive mode this would be greatly appreciated.
Thanks :)

Thanks for the suggestion. What helps with feature requests is to elaborate on the workflow that it would support.
In interactive mode, this already works today to some extend. Press C to add the 'count' column, displaying the amount of entries, i.e. directories + files + symlinks . Press ? for all the hotkeys.

What this issue is asking it to split the entry count into files & folders.
Further, it asks to add such counts in the non-interactive version.

Thanks for the info. I think it would be convenient to show the total number of files and folders directly in interactive mode by default, with the option to hide them when pressing c. In most terminals there is enough horizontal space available.
Splitting the count into files and folders would be good too.


generic_fp stacktrace: aarch64 frame pointer may be 8 byte aligned

The aarch64 ABI does not specify the alignment of the frame pointer, it only specify the alignment of the stack frame.
From the ABI doc:

SP mod 16 = 0. The stack must be quad-word aligned.
...
The location of the frame record within a stack frame is not specified.

Clang in particularly would generate such code. Example:

Thanks a lot. Applied.


Update esm-samples to 4.26

Updated all samples. No notable changes.

Good catch. Updated.

Good catch. Updated.

The first known issue could be removed too: https://github.com/Esri/jsapi-resources/tree/update-esm-4.26/esm-samples/rollup#known-issues

@ignore the last github action error on this PR. I cycled the action to verify that a small update worked.

Github action fix was applied and build was successful. Something changed in the public github that invalidated the pattern we used to stash and pop. Merging.


Duvet refuses to let go of files

Background
Running a Django project (1.6.11 - making the upgrade, please no shaming.) with duvet 0.1.2, coverage 3.7.1 and python 2.7.10.
Issue
This probably isn't a bug per se but I deleted a file from my repo (an admin.py file that no one used), ran coverage.py (which complained a bit that the file was missing) but when running duvet with duvet I encountered an error message alert:
Couldn't load coverage data -- data file may be corrupted (Error was: No source for code: '/path/to/my/app/admin.py': [Errno 2] No such file or directory: '/path/to/my/app/admin.py')

If I click retry, the behavior is as expected - it still can't find the file, nothing crazy there.
If I click cancel it exits duvet. I would assume that this is so duvet doesn't end up in some strange error state but maybe this type of exception is worth handling so I can still interact with my coverage reports.
Really loving the PyBee suite so far, thanks!

Thanks to all involved!


Remove sensitive identifiers from Github Actions and Terraform

🗣 Description

Move accounts ids to Github Secrets, and reference them in Github Actions.
Remove account ids from terraform var files.
Restructure deployment to make use of secrets.

Closing #10

💭 Motivation and context

Account ids are considered sensitive and should not be publicly accessible.

✅ Checklist

[x] This PR has an informative and human-readable title.
[x] Changes are limited to a single goal - eschew scope creep!
[x] All future TODOs are captured in issues, which are referenced
in code comments.
[x] All relevant type-of-change labels have been added.
[x] I have read the CONTRIBUTING document.
[x] These code changes follow cisagov code standards.
[x] All relevant repo and/or project documentation has been updated
to reflect the changes in this PR.
[x] Tests have been added and/or modified to cover the changes in this PR.
[x] All new and existing tests pass.

@zenine07 - you should also turn on the branch protection in this and any other repos of yours that don't have it. This page shows the settings we use.

Great. I'll go take care of that.

@zenine07 Pinging on this as a reminder.

@zenine07 - you should also turn on the branch protection in this and any other repos of yours that don't have it. This page shows the settings we use.

Great. I'll go take care of that.

@zenine07 Pinging on this as a reminder.

@dav3r Thanks for the reminder. Completed now.

@zenine07 - you should also turn on the branch protection in this and any other repos of yours that don't have it. This page shows the settings we use.

Great. I'll go take care of that.

@zenine07 Pinging on this as a reminder.

@dav3r Thanks for the reminder. Completed now.

Excellent, thanks! 👍


Data nondeterminism in Redis Commands

Right now, DEI precision for data nondeterminism ignores the arguments (which are variable execution-to-execution) and keeps everything else.
This ensures that a test that generates a random user identifier in the payloads of RPCs doesn't impact id generation for each RPC by ignoring the components of the argument list that are subject to data nondeterminism.
--
With Redis, a SET method has arguments ["KEY", "VALUE"].  Which should be ignored for data nondeterminism?
For example,

We want two executions that use random ids issuing e_1 : SET RAND1 TRUE, e_2: SET RAND2 TRUE to have the same id across executions.  Therefore, we want to omit the arguments under data nondeterminism: this reduces id precision to the SET command excluding arguments and these are distinguished by SET_1, SET_2.
However, if we issue in a single execution SET CUSTOMER_ID 1, SET USER_ID 2, we also want to distinguish them.  Without arguments (dataNondeterminism=true), these just look like SET_1, SET_2 or SET_2, SET_1 and may be permuted under concurrent execution, violating completeness.

Generally speaking, we do not know if the key is subject to data nondeterminism: the key could be fixed (e.g., CUSTOMER_ID) or it could be variable from execution-to-execution (e.g., THE_USER_ID.)
We also don't know which operations take one key argument vs. multiple key arguments.  For example:

SET takes the key in argument 1 and value in argument 2.
ZADD takes the key in argument 1, position (key) in argument 2, and value in argument 3.

Therefore, even if we assumed the key was not subject to data nondeterminism -- which, it's often not -- we don't know which of the arguments are keys.
I'm not sure how we solve this problem, as I'm assuming most applications contain a mix of all of the aforementioned use cases.
One way of solving this is through the stack trace of the callsite: when the stack trace is available, we will be able to distinguish the writes using the trace.  In Kotlin, stack traces are unavailable.

Given that the problem only really occurs in Kotlin where we don't have stack traces, I'm assuming that right now the stack trace, along with synchronized entry into the instrumentation method, will be enough to distinguish the calls.
Therefore, I suggest:

[ ] Write up all of the scenarios above as examples in the test suite.
[ ] Come up with a counterexample demonstrating the problem of permutation where we inject a fault on the wrong command.
[ ] Investigate the stack trace problem in Kotlin.
[ ] See if we can learn a new heuristic from the examples.

Research Ideas:

[ ] One interesting research idea might be to whitelist/blacklist keys vs. values in the interceptor itself and provide more granular interposition/data-nondeterminism options.  For example, data-nondeterminism on keys and not values or both.  This might get us 80% of the way there, as I'm assuming it's pretty unlikely that identifiers are written into keys, and if they are, probably have fallback logic if Redis is only being used as a cache.


Error: Detected file "Contents/Resources/app/node_modules/usb/build/node_gyp_bins/python3" that's the same in both x64 and arm64 builds and not covered by the x64ArchFiles rule: "undefined"

• packaging       platform=darwin arch=universal electron=31.6.0 appOutDir=/Users/admin/files.localized/code/car-app/dist/mac-universal
  ⨯ Detected file "Contents/Resources/app/node_modules/usb/build/node_gyp_bins/python3" that's the same in both x64 and arm64 builds and not covered by the x64ArchFiles rule: "undefined"  failedTask=build stackTrace=Error: Detected file "Contents/Resources/app/node_modules/usb/build/node_gyp_bins/python3" that's the same in both x64 and arm64 builds and not covered by the x64ArchFiles rule: "undefined"

This looks like an electron issue. No idea why you are packaging python, you shouldn't have a build directory if you are just using prebuilds


pcase takes upatterns

On at least Emacs 24.3, one sees completions that are just basenames, i.e. "foo" instead of "foo(int)". That's because ...
(pcase "a"
((or "a" "b") "unsurprising")
(_ "surprising"))
... yields "surprising".
On 25, it looks like things are unsurprising.
Backquoting the strings (to make them "upatterns" in pcase parlance) fixes the problem.

Thanks for the PR! Good catch!

Thanks! Awesome stuff!


Update identifier

In API Platform (https://github.com/api-platform/core), we would like to allow an update of the identifier.
However it is not possible in mongodb-odm.
For instance, given this id of a document:
 /**
 * @ODM\Id(strategy="NONE", type="string")
 */
private $slug;

It's not possible to update it because of:
https://github.com/doctrine/mongodb-odm/blob/da5074b8b54f0e4c0d342d15c56dd054d4a136a7/lib/Doctrine/ODM/MongoDB/Persisters/PersistenceBuilder.php#L121-L124
(first related commit: https://github.com/doctrine/mongodb-odm/commit/ed789d7e7d5a75d41b8d49e04a4c65bd97343a96)
I think it should be possible if the document is replaced by another with the modified identifier.
WDYT?

Can't do, _id is immutable in MongoDB. Offhand, updating identifier doesn't sound like a wise thing to do :)

The field name _id is reserved for use as a primary key; its value must be unique in the collection, is immutable, and may be of any type other than an array.

That's why I said not updating the _id but replacing the targeted document with another one.
It's possible in Doctrine ORM though and it can be really useful like the slug example I wrote.

Current commit flow is orphan removals, upserts, inserts, updates and lastly deletions. If we were to insert new document and later delete "old" one this can break if one would have an unique index on some other field. If we'd switch removals to be first and something would break before insertion (i.e. other operation) then data would be lost. Even if we'd work this around with transactions, there could be invalid references left in the db, as other documents would still have ref to original-slug, not to updated-slug and ODM can't track all references to a document.
All in all I believe there are way too many things that can go south and user should do such non-trivial operation on his/her own. Or treat ids as immutable, as MongoDB suggests. Reopening, but I'm still 👎 on this. @alcaeus @jmikola thoughts?

I agree with @malarzm here, this sounds like a lot of complexity for nothing. I don't quite understand why you'd want to persist the same document with a different identifier? At this time, I don't think this is something we're going to implement here.

IMO using user-modifiable data as an identifier is asking for trouble and shouldn't be advocated. If something seems like an id provided by user (be it slug or email as per your examples), put an unique index on the field and use auto-generated value for the actual identifier (be it MongoId or UUID in case of ODM). The auto-generated id can be hidden from user/developer but will be there for references or can be more performant for the storage. The only cost of this is writing a method to fetch document/entity basing on "user provider id" and using that instead of $dm->find()/$repository->find() calls.


Add support for GPDB 6.X versions

Additional Author: Jingyi Mei<EMAIL_ADDRESS>

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/266/

I pulled your branch and I was able to install madlib with gpdb 6. 👍


COMP: Update C++ builds to use latest release-5.4 branch

Incorporates libtiff symbol conflicts addressed in https://github.com/InsightSoftwareConsortium/ITK/pull/4958 which has started to cause issues on Windows builds.

thanks @thewtex


Rename scripts and update GPU tests

@myshkov I've added an update to logging in run_lm_eval.py as it was broken before: the lm eval harness has its own logger which was overriding the one we had. Could you please check if my fix is sensible?


Corrected analyzer for SA1623 and SA1624 to report the correct diagnostic

Fixes #2253. Also found a number of similar cases that were not reported correctly either.

 Last update e179221...ab77a8f

Updated according to @vweijsters comments. Also noticed some outdated comments in the code which I removed.


Unable to batch transcode videos on Windows 10

I have written my commands into notepad and saved it as batch.bat (attached here as a text file). When I start the batch, it will transcode the first video just fine then quit upon completion of the first file and will not continue down the line.
Here are the versions of dependencies

Ruby v.2.3.3
video-transcoding v.0.16.0
HandbrakeCLI v.1.0.2
ffmpeg v.3.2.2,
mkvtoolnix v.9.8.0
mplayer v.37905
mp4v2 v.504

I am hoping that either you, @samhutchins or @JMoVS can weigh in on what may be happening or if I have something misconfigured.
 Is anyone else experiencing this too? (sample log file)

@OspreyPrey I don't think you have anything misconfigured. And I simply don't know enough about Windows batch files to know what could be wrong there. Hopefully, @samhutchins will come to the rescue on that one.
As to the .log size, that's also odd although a megabyte-sized file wouldn't really surprise me.
You should expect your command prompt window to inaccessible during transcoding.

@OspreyPrey
You need to put call in front of every command, I've updated your provided batch file:
batch_bat.txt
When ruby gems are installed on Windows they are invoked through a .bat file which essentially wraps a ruby command. Batch files can't call multiple other batch files without using the call command, because "legacy". More info here: http://stackoverflow.com/a/1104093
Looking at your script you could probably replace it with a for loop though:
CMD version:
for %i in (C:\Users\Rusaw Family\Videos\MKV\*.mkv) do call transcode-video --no-log --output "C:\Users\Rusaw Family\Videos\Library" "%i"

batch file version:
@echo off
for %%i in (C:\Users\Rusaw Family\Videos\MKV\*.mkv) do call transcode-video --no-log --output "C:\Users\Rusaw Family\Videos\Library" "%%i"

The difference between the two is the double %, which is needed in batch files. Go Microsoft

@samhutchins Thanks! I would have never figured this out for @OspreyPrey.

Thanks @samhutchins
This seems like a simple enough issue, maybe it should be included in the readme? If not the main readme then definitely the one for installing video-transcoding on windows.
@donmelton I will test this later tonight when I have a few movies to transcode. Doesn't sound like I should have any problems.

@OspreyPrey Cool. OK, I'll close this for now but comment here again if you're still having trouble.

@OspreyPrey I thought so too: https://github.com/JMoVS/installing_video_transcoding_on_windows/pull/6 :-D

@samhutchins That's the perfect example script, too. Thanks!


Use integer instead of boolean to represent data

I want to use this package to create a timetable. However, it has to support multiple states. Is there a way to use an integer instead of a boolean in the cells array?

Not presently but it's a good idea. If a get a spare moment I'll add that feature.
A PR is always welcome.

I'll probably need to figure out a good API for doing more than just boolean state. If you have any thoughts on that I'd be interested to hear it.

@mcjohnalds @Studio384 We needed something along the lines of this, so I took a stab at an implementation - would be interested to know if this matches what you would look for


Output: Round numbers for cleaner output

We recently had the following output in our project
E   AssertionError: <schema1>.<table> has 0.21356959387452668 of #rows of <schema2>.<table>.
It was only allowed to increase 0.2102716914986854.

I know that the error that 0.21 should be 1.21 has been fixed, but I'd like to think about ways we could make the user output more readable.
Naive idea:
Allow the user to set the rounding, e.g. when the user allows an increase of 0.1 than they maybe don't want to see 0.1000023423020234 as output. (hard to make it right for all cases)
Another solution
Easy: Just show the numbers up to the first change! This would print
E   AssertionError: <schema1>.<table> has 0.213 of #rows of <schema2>.<table>.
It was only allowed to increase 0.21.

here
and we could even just convert to percentages
E   AssertionError: <schema1>.<table> has 21.3% of #rows of <schema2>.<table>.
It was only allowed to increase 21%.

Another solution

Sounds great! :)


bug: ./startDatabase CLI in says the database is alive when it's not in WSL.

Provide environment information
It's not but here is the version
"initVersion": "7.37.0"
Describe the bug
If you run the ./startDatabase command inside WSLand the docker desktop on windows is running, it works fine. But if you pause the docker desktop on Windows side the WSL cli breaks. As the condition to check if docker is present is met, but is docker running is not. This can be checked by running docker info which fails to output a valid status runtime code that triggers the condition that the docker desktop is not running but is present in the env PATH.
Reproduction repo
https://github.com/Sapython/interior-design-project
To reproduce

Just create a new project inside WSL
Stop docker desktop from running on windows.
Then run start-database.sh and it will show a success message.

Additional information

The First line is with Docker desktop running and the second one is without but in both cases it shows that the container is operational.

Pull request for this fix is https://github.com/t3-oss/create-t3-app/pull/1984

Closed by https://github.com/t3-oss/create-t3-app/pull/1975


feat: Add custom formatting to config files as well

Describe the feature
We already format blocks when we add them it should be pretty easy to just format the json config files before we write them.
Validations

[X] I have checked other issues to see if my feature was already requested or added

This won't be possible for build since we don't know anything about that environment.


US Data only for the last 14 days

Seems like the US data is truncated in the last file pushed to the AWS. Values only start on the 10th of March. This might be a bug in the processing, since the original JHU data has earlier dates. Sorry to bug twice in such a short period of time...

Closing since it's fixed. I guess I caught the lag time between the JHU format update and yours. Thanks!


"docker-compose up" Error : Unsupported config option for services service: 'fcd-collector'

Error... T.T
How could i solve it??
env:
docker-compose version: 1.3.3
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

could you tell me your docker-compose version

I'm using 1.29.2.

thx working!!~~


Update Pangram test case from cannonical data

Update Pangram test case from cannonical data. The test suite is out of date.

https://github.com/exercism/x-common/pull/741

Oops this is a dupe of #331.

I just spotted an approved iteration for this exercise with a bug that is not caught in the current test cases:
object Pangrams {
  def isPangram(s: String): Boolean =
    s.filter(_.isLetter)
      .distinct
      .length == 26
}

The bug is with sentences containing upper and lower case of the same character,
which is caught in this test case

Have you thought of another test case that could be added that would
indicate the code is incorrect?
Thanks
On Thu, May 11, 2017 at 11:05 AM Luciano Palma<EMAIL_ADDRESS>wrote:

I just spotted an approved iteration for this exercise with a bug that
is not caught in the current test cases:
object Pangrams {
def isPangram(s: String): Boolean =
s.filter(_.isLetter)
.distinct
.length == 26
}
The bug is with sentences containing upper and lower case of the same
character,
which is caught in this test case
https://github.com/exercism/x-common/blob/master/exercises/pangram/canonical-data.json#L63-L66
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/exercism/xscala/issues/349#issuecomment-300870744,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABeHG0073LBRXviVlVmkJKuCN5fnyoESks5r403pgaJpZM4Mr70v
.

Have you thought of another test case that could be added that would indicate the code is incorrect?

not really. Since the test case mentioned already catches this particular bug, I think it is enough to add it to the track. I don't see much value in having multiple tests for the same scenario.
In any case, should we update the exercise, or wait for #331?
My initial comment was more like calling our attention to reassure the importance of keeping tests up-to-date.

I am confused..
What do you mean by "approved" iteration for the exercise?
Looking at the canonical test data and comparing to the test suite - the "upper
and lower case versions of the same character should not be counted
separately" test case is included. I beleive that the test suite was
generated from the most recent canonical data.
The example solution at
https://github.com/exercism/xscala/blob/master/exercises/pangram/example.scala
passes the test suite.
Thanks
On Thu, May 11, 2017 at 12:00 PM Luciano Palma<EMAIL_ADDRESS>wrote:

Have you thought of another test case that could be added that would
indicate the code is incorrect?
not really. Since the test case mentioned already catches this particular
bug, I think it is enough to add it to the track. I don't see much value in
having multiple tests for the same scenario.
In any case, should we update the exercise, or wait for #331
https://github.com/exercism/xscala/issues/331?
My initial comment was more like calling our attention to reassure the
importance of keeping tests up-to-date.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/exercism/xscala/issues/349#issuecomment-300885561,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABeHG2XhuA0GSLve4OBS4yLT4PENHfRIks5r41q0gaJpZM4Mr70v
.

I am confused..
What do you mean by "approved" iteration for the exercise?

Ah, sorry about that. Maybe Approved is not the right word.
Firstly, the code I mentioned in my first comment is a student's solution.
The student submitted the code and another student gave a thumbs up (that's what I meant by approved). I spotted the bug because I was checking other students solutions and was surprised to see that this student's code passed the tests.
So, I commented in the student's iteration, informing the bug and the lack of test coverage, then I came
here to open an issue, but saw this related issue already opened.
The fact that the student's solution passed the tests and was even complimented (pressed the Looks great! button) by other student raised an alert on my head, about the importance of keeping tests up-to-date.

Oh, ok.
The "students" solution does pass the unit tests including the last
test - "upper
and lower case versions of the same character should not be counted
separately".
I think that test case has a bit of a problem. If the uppercase letters are
treated separately from lowercase letters then the number of unique chars
ends up being 27. Which returns false from the method. If the uppercase
letters are treated properly and combined with the lowercase letters than
24 is the number of unique chars. Which ends up returning false from the
method.
So.. The test case works regardless of how uppercase letters are handled.
Possibly a better testcase would be to have a test case that expects true.
And, include uppercase chars that have duplicate lowercase chars in the
string.
test("upper and lower case versions of the same character should not
be counted separately") {
Pangrams.isPangram("the 1 quick brown fox jumps over the 2 lazy
DOGS") should be (true)
}
On Thu, May 11, 2017 at 1:55 PM Luciano Palma<EMAIL_ADDRESS>wrote:

I am confused..
What do you mean by "approved" iteration for the exercise?
Ah, sorry about that. Maybe Approved is not the right word.
Firstly, the code I mentioned in my first comment is a student's solution.
The student submitted the code and another student gave a thumbs up
(that's what I meant by approved). I spotted the bug because I was
checking other students solutions and was surprised to see that this
student's code passed the tests.
So, I commented in the student's iteration, informing the bug and the lack
of test coverage, then I came
here to open an issue, but saw this related issue already opened.
The fact that the student's solution passed the tests and was even
complimented (pressed the Looks great! button) by other student raised
an alert on my head, about the importance of keeping tests up-to-date.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/exercism/xscala/issues/349#issuecomment-300914300,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABeHG92Gr-NTCW_OFzuC1r4gAz7xd8wAks5r43XBgaJpZM4Mr70v
.

@lpalma You are right, I just oversaw the problem with case in that solution. So I retracted my "approval" thumbs up.
The thing to do here IMO is to

have a list of all exercises either in #331 or a new issue.
then go through add test suite generators to all of them and update their test suite.
install a mechanism that checks whether the test suite version is out of date.

All in all a major endeavour but probably inevitable?

Closing. The original issue was addressed.


carbonserver: various fixes, part2 (CacheHit/Miss, logging)

Please don't merge for now

I think it's safe to merge now.


Deprecated Atom APIs will be removed June 1st

Atom will no longer load this package after June 1st without changes. There are a couple deprecations on the latest version (0.1.2) of this package:

Use activationCommands instead of activationEvents in your package.json Commands should be grouped by selector as follows: json "activationCommands": { "atom-workspace": ["foo:bar", "foo:baz"], "atom-text-editor": ["foo:quux"] }
atom.workspaceView is no longer available. In most cases you will not need the view. See the Workspace docs for alternatives: https://atom.io/docs/api/latest/Workspace. If you do need the view, please use atom.views.getView(atom.workspace), which returns an HTMLElement.
Use Workspace::getActivePaneItem instead
Use Project::getDirectories()[0]?.resolve() instead
Use editor.lineTextForBufferRow(row).length instead

Visit https://gist.github.com/benogle/6d09e295c84b717ef9b4 and search for your package name to see up-to-date deprecations.
If this package has been replaced by another package or functionality in core, please reply with this information.
See https://github.com/atom/atom/issues/6867 for more info. Thanks!

@benogle @bruce  It seems a lot of the deprecation issues have been addressed in PRs but have not been merged.

Use activationCommands instead of activationEvents in package.json

Addressed by PR #28

atom.workspaceView is no longer available.

Addressed by PR #20

Use Workspace::getActivePaneItem instead of ____ ?

Needs addressed.

Use Project::getDirectories()[0]?.resolve() instead of _____?

Needs addressed.

Use editor.lineTextForBufferRow(row).length instead of _____?

Needs addressed.

Other deprecated commands not listed in original list:

Use atom-workspace tag instead of the workspace class

Addressed by PR #18. PR #21 should be closed in favor of #18.

Package Specific PRs that need addressed:

Updates the project dependencies as well as cleans up the coding style of the project

Addressed by PR #16. PR #11 should be closed in favor of #16.

Update to allow SASS files to be combed

Addressed by PR #13

@bruce I am tempted to fork this project and consolidate all the changes and/or push out a separate project that is updated and maintained.

Completed and released v0.3.0
Thank you for your help @benogle, @bruce, and all that submitted PRs.


Access values stored in the acceleration data structure

Add (non-modifying) access to the values stored in the BVH and BF
Opening PR early to  get feedback.
In the current version the test is meant to check that we can retrieve the values and that users shall not rely on the order in which they are stored in the data acceleration structure.

For BruteForce, everything is straightforward.
For BVH, though, the semantics are interesting. What we are saying, essentially, is that we can get a value by index. But we don't know which one. We can guarantee that spanning the set of indices a user will retrieve the set of the original values.
So, the question is, what benefit would a user have from having this operator?
Boost rtree does not have value accessor, only begin() and end() that could be used to go through the stored values.

Closed for no action and no plan. Feel free to reopen if there is a way to proceed.

I think being access to values can be useful regardless of the order but I am fine to wait for an actual ask before we provide it.