0.3: Introduce life 🧬 into an otherwise static ⛰ environment

Do not worry about making your PR compatible with develop. After the dust settles here, we will integrate each PR into develop.

HasSqlType<T>: Database is now T: Type<Database> to mirror Encode and Decode
Row is now Row<'c> where 'c is bound to the lifetime of the Connection where the Row came from
Introduce a Cursor type that is now returned from Query::fetch(); this is simply a futures::Stream where the Item type is a higher-ranked trait bound so we can introduce a lifetime per iteration of the stream. Most usages should remain the same.
Executor is now implemented for &mut Connection and &Pool so hacks like &mut &Pool are no longer needed
Queries from the database are now zero-copy and no allocation beyond a shared read buffer for the TCP stream ( in other words, no per-query allocation )

[x] TLS on Postgres is still unimplemented in the new protocol implementation (all the same code is there, just needs tied together)
[x] Simple queries on postgres that return results
[x] Macros are broken ( cue summoning the amazing @abonander )
[x] Re-add support for query_as (merge old QueryAs with Query)
[x] Support for MySQL ( I understand Postgres a lot more so it was easier for me to experiment in Postgres, but the same concepts should transfer to MySQL  )
[x] Postgres / UUID / Text
[x] Postgres / Chrono / Text

@mehcode you should be able to fast-forward merge to ab/dev-fixes which fixes macros and reintroduces query_as().

@abonander This should be good to go ( tests pass locally ). Any idea why CI is crapping out?
     Running target/debug/deps/ui_tests-339cabbe753a12df

running 1 test
error: failed to download `quote v1.0.3`

Caused by:
  can't make HTTP request in the offline mode
test ui_tests ... FAILED

failures:

---- ui_tests stdout ----
thread 'ui_tests' panicked at 'tests failed', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/trybuild-1.0.23/src/run.rs:38:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

https://github.com/dtolnay/trybuild/issues/52#issuecomment-596808166


"Hănești", "Borolea", "Moara Jorii", "Sarata-Basarab" and "Slobozia Hănești" are listed in the drop-down menu

Description:
"Hănești", "Borolea", "Moara Jorii", "Sarata-Basarab" and "Slobozia Hănești" are listed in the drop-down menu alongside its corresponding county and commune, according to the law
Precondition:
The website is up an running.

Step 1
Type "Hănești" in the search bar.

Expected results
The location is listed in the drop-down menu as "Hănești, Botoșani (Hănești)".

Step 4
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 5
Type "Moara Jorii" in the search bar.

Expected results
The location is listed in the drop-down menu as "Moara Jorii, Botoșani (Hănești)".

Step 6
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 7
Type "Sarata-Basarab" in the search bar.

Expected results
The location is listed in the drop-down menu as "Sarata-Basarab, Botoșani (Hănești)".

Step 8
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 9
Type "Slobozia Hănești" in the search bar.

Expected results
The location is listed in the drop-down menu as "Slobozia Hănești, Botoșani (Hănești)".


KeyError: 'code' - not working anymore

Getting Error:
Traceback (most recent call last):   File "/home/pi/pypo-main/cli.py", line 4, in <module>     cli()   File "/home/pi/pypo-main/pyporscheconnectapi/cli.py", line 270, in cli     loop.run_until_complete(main(args))   File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete     return future.result()            ^^^^^^^^^^^^^^^   File "/home/pi/pypo-main/pyporscheconnectapi/cli.py", line 67, in main     data = await client.getCurrentOverview(vin)            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/home/pi/pypo-main/pyporscheconnectapi/client.py", line 460, in getCurrentOverview     progressResult = await self._connection.post(                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/home/pi/pypo-main/pyporscheconnectapi/connection.py", line 246, in post     headers = await self._createhead(application)               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/home/pi/pypo-main/pyporscheconnectapi/connection.py", line 291, in _createhead     token = await self._requestToken(             ^^^^^^^^^^^^^^^^^^^^^^^^^   File "/home/pi/pypo-main/pyporscheconnectapi/connection.py", line 206, in _requestToken     await self._login()   File "/home/pi/pypo-main/pyporscheconnectapi/connection.py", line 183, in _login     self.auth_state["code"] = params["code"][0]                               ~~~~~~^^^^^^^^ KeyError: 'code'
Anyone a fix for this or a workaround? Maybe Polling Time Settings?

Same problem for me...

Same here:
porschecli overview -v "WP1ZZZ..."
gives me
Traceback (most recent call last):
File "/usr/local/bin/porschecli", line 8, in
sys.exit(cli())
File "/usr/local/lib/python3.8/dist-packages/pyporscheconnectapi/cli.py", line 270, in cli
loop.run_until_complete(main(args))
File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
return future.result()
File "/usr/local/lib/python3.8/dist-packages/pyporscheconnectapi/cli.py", line 67, in main
data = await client.getCurrentOverview(vin)
File "/usr/local/lib/python3.8/dist-packages/pyporscheconnectapi/client.py", line 464, in getCurrentOverview
f"https://api.porsche.com/service-vehicle/{self.locale_str}/vehicle-data/{vin}/current/request/{progressResult['requestId']}/status"
KeyError: 'requestId'
ERROR:asyncio:Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7fcbcc275520>
ERROR:asyncio:Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x7fcbcc2918e0>, 5172133.566873318)]', '[(<aiohttp.client_proto.ResponseHandler object at 0x7fcbcc2554c0>, 5172133.873355753)]']
connector: <aiohttp.connector.TCPConnector object at 0x7fcbcc2756a0>
Yesterday and the day before already errors, but manual login and solving the captcha helped.
Today it dies not helt anymore.
Looks like they are either fiddling around or voluntarily blocking access.

Try to login via web browser and solve the captcha.
Also car going to privacy mode gives problems (check in porsche app).

Try to login via web browser and solve the captcha. Also car going to privacy mode gives problems (check in porsche app).

Login via Web Login with Capatcha from same IP is working, error is still there - car has no privacy on

Log out/in again until no captcha is shown.

Same here, if I switch IP (using VPN), no captcha is shown and this is working. We should identify what's the threshold in term of polling (which I believe is what is in place to force a captcha).

Same here, if I switch IP (using VPN), no captcha is shown and this is working. We should identify what's the threshold in term of polling (which I believe is what is in place to force a captcha).

IMHO there is such an easy thing like a threshold. evcc  uses also uses the Porsche API (with refresh tokens), and when my car is not polled for like 12 hours the captcha still shows the next morning.

Since a few days, it does not work for me either. Here is the error message:
Traceback (most recent call last):
File "/home/pi/.local/bin/porschecli", line 10, in
sys.exit(cli())
File "/home/pi/.local/lib/python3.7/site-packages/pyporscheconnectapi/cli.py", line 270, in cli
loop.run_until_complete(main(args))
File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
return future.result()
File "/home/pi/.local/lib/python3.7/site-packages/pyporscheconnectapi/cli.py", line 81, in main
data = await client.getEmobility(vin, model=args.model)
File "/home/pi/.local/lib/python3.7/site-packages/pyporscheconnectapi/client.py", line 534, in getEmobility
data = await self.getCapabilities(vin)
File "/home/pi/.local/lib/python3.7/site-packages/pyporscheconnectapi/client.py", line 494, in getCapabilities
f"https://api.porsche.com/service-vehicle/vcs/capabilities/{vin}"
File "/home/pi/.local/lib/python3.7/site-packages/pyporscheconnectapi/connection.py", line 237, in get
headers = await self._createhead(application)
File "/home/pi/.local/lib/python3.7/site-packages/pyporscheconnectapi/connection.py", line 292, in _createhead
application, wasExpired=(token is not None)
File "/home/pi/.local/lib/python3.7/site-packages/pyporscheconnectapi/connection.py", line 206, in _requestToken
await self._login()
File "/home/pi/.local/lib/python3.7/site-packages/pyporscheconnectapi/connection.py", line 183, in _login
self.auth_state["code"] = params["code"][0]
KeyError: 'code'
ERROR:asyncio:Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x734c76b0>
ERROR:asyncio:Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x734ce068>, 5497252.017260205)]']
connector: <aiohttp.connector.TCPConnector object at 0x734c75f0>
What could be the problem? Logging in via the website works

As written above a captcha is a common problem.
Sometimes you have to log on/off multiple times from the same IP until no captcha is shown.

ah ok, got it. Thanks

The problem is that even after several log on/offs, it works for several hours and then I am asked again for a captcha and I get the message: keyerror: code.

Duplicate of #37


add a simple single memory node example

Add a very simple example to let the user know how to use the Raft library basically.
PTAL @BusyJay @Hoverbear

@queenypingcap PTAL

PTAL @BusyJay

@lilin90 PTAL.

PTAL @lilin90 @BusyJay

LGTM

PTAL @BusyJay


[Android] Page re-renders every-time I change tab.

I have a listview in my page content, which loads some data from online.
But each time I switch to the tab, it re-renders making a new http request.
Is there a way to not re-render the page when I switch tab??

This component doesn't manage content, it is more like 'multi' button - you have to manage content by yourself. OR you could use react-native-router-flux with Container element to manage connect, so it will not re-render data each time, check react-native-router-flux demo project.


support iscsi backend storage

synchronize capture data to an iscsi backend stroage target .
this replaces the local HDD storage on FMAD10/20 and adds large backend stroage to FMAD20H/20F/80/100
target storage size is up to 300TB ( 256G OS) and up to 3PB (1T OS).
this assumes the iscsi target handles all RAID redundancy

FMAD 10/20 utilize the 10G or 1G management interface
FMADF 20F/80/100 have a dedidcated 10G/40G (and in future 100G) dedicated NIC port

iscsi target docs (LIO)
http://www.linux-iscsi.org/Doc/LIO Admin Manual.pdf

build setup:
git clone https://github.com/openssl/openssl.git
make; make install
git clone https://github.com/mikechristie/open-isns.git
make; make install
git clone https://github.com/open-iscsi/open-iscsi.git
sym link open-iscsi/include/libisns to open-isns base dir
make; make install
need to setup LD_LIBRARY_PATH to /usr/local/lib

FreeNAS supports iscsi targets. this will be the test system vmware guest os running FreeNAS with passhtru drives

included  fmadio/fmadio20@66c8bcb1d09edad7ba797c35700b6e8a4d3034c4
requires regression test + full SLT check
using the FeeNAS VM the writeback performance is extremely bad ~ 0.1Gbps. Its some what expected as that kind of iSCSI target`s performance will always suck (VM NAS with a single VMWare Disk)

released in firmware 20160912_0924

documentation updated
http://fmad.io/en.fmadio10-manual.html#software-iscsi
requires translation

feature likely depreciated and replaced with "fmadio grandmaster".
primary reason is the capture system requires more ram for the file system index. At 16TB everything fits nicely, but at 200TB+ it starts thrashing/swaping too much and will likely drop packets.


feat: improve useClickAway() hook

:tada: This PR is included in version 9.7.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Improve data viewing

Allow to view a wider range of files and datasets (some just say "There are no actions available for this file.")
Allow to view datasets
Provide a "View in ..." option allowing the user to choose what type of viewer. e.g. Popup viewer or new browser tab. In future we will have external viewers that can be used for some types e.g. Pose Viewer
Provide some way to limit contents that are shown for very big files

(more details to follow)

I think we should handle viewing files on new pages:

Datasets: /dataset/{id}/{version}
Files: /file/{path}

In each case we should only parse the first few MBs of the file to display. So we truncate the file and show a button below to download the whole file (save dialog not load the rest into the UI).
In each file / dataset modal we will have a view section with buttons to open different viewers. Of course we will just have a in browser text viewer route but we will also want some files to open directly in a new tab (html, images, pdfs, JSON, etc).

Should the new pages be implemented as a modal window (like the one implemented currently for project files) or should it be a page like the datasets page?
If the first, what should be the default action of the close button in case a user opens the URL directly in a fresh tab? If they were redirected there from an action from the app, you can pop the previous page from the history. If he gets there from a fresh tab, there's an issue since there are no pages in the history stack. We could probably push a default page in case the history is empty.
If the latter, how is the page supposed to look? Should it have the same navbar as the rest of the application? I suppose there should be a place for a 'Back' button to return to a page from where you came from. I suppose there will be the same issue as the one mentioned above.
And since both of the pages access the same download API which needs a file_id, wouldn't it make more sense to have one page? I suppose having two can be handy in case one of the pages is accessed from a fresh tab and you would want to redirect the user back to datasets or project files depending on it.
For the file display limit I suppose we can adjust the current API route which restreams the file to cut it after certain amount of bytes have been transferred. There might be an issue, however, that some characters consists of more bytes and cutting them in half might display a weird symbol instead. I don't think that such characters appear often but I think it should be kept in mind just in case. In any case, we need to create a custom stream pipe, which might be a bit difficult but should be doable. I am not sure if there's a better way to stop the download from client side.

Each a new NextJS page which always opens in a new tab

The page can just be a  component for now but I guess we want to model the viewer on how GitHub does it:

It could be the same page but the functionality for datasets and files might diverge

Yes I think the API route would be the best place to truncate the stream. I agree there's a problem here with regards to the encoding of the files. @tdudgeon I really do think we need to handle file encoding if we want to handle viewing files.

The file command does determine this information. I think it's what Git uses. Could this be used on the API?
100000.csv:                                   ASCII text
16-25-1000.smi:                               ASCII text
Mpro-x0387-x0072-3hop-best1-top1000.sdf.gz:   gzip compressed data, last modified: Wed Jul 29 15:44:15 2020, from Unix, original size modulo 2^32 3893723
Mpro-x0387-x0072-stage1-best1-top1000.sdf.gz: gzip compressed data, last modified: Wed Jul 29 15:51:53 2020, from Unix, original size modulo 2^32 3802362
Mpro-x0387-x0072-stage2-best1-top1000.sdf.gz: gzip compressed data, last modified: Wed Jul 29 15:52:33 2020, from Unix, original size modulo 2^32 3199728
Mpro-x0387-x0387-3hop-best1-top1000.sdf.gz:   gzip compressed data, last modified: Tue Jul 28 13:55:56 2020, from Unix, original size modulo 2^32 3518323
Mpro-x0387-x0387-stage1-best1-top1000.sdf.gz: gzip compressed data, last modified: Wed Jul 29 15:54:07 2020, from Unix, original size modulo 2^32 3612678
Mpro-x0387-x0387-stage2-best1-top1000.sdf.gz: gzip compressed data, last modified: Wed Jul 29 17:23:34 2020, from Unix, original size modulo 2^32 3732804
ScoreGalaxyGen3Ligands-best-500.sdf:          ASCII text
ScoreGalaxyGen3Ligands-best-5000.sdf:         ASCII text
ScoreGalaxyGen3Ligands-best-filtered.sdf:     ASCII text
candidates-100.sdf:                           ASCII text
dhfr-ligand.mol:                              ASCII text
dhfr-receptor-ph7.pdb:                        ASCII text
poses++.sdf:                                  ASCII text
poses++.sdf.txt:                              Little-endian UTF-16 Unicode text
poses.sdf:                                    ASCII text
poses.sdf.gz:                                 gzip compressed data, was "poses.sdf", last modified: Tue Jun  2 16:03:00 2020, from Unix, original size modulo 2^32 494418
protein.pdb:                                  ASCII text
protein.pdb.gz:                               gzip compressed data, was "protein.pdb", last modified: Tue Jun  2 16:04:20 2020, from Unix, original size modulo 2^32 191981
smina.tgz:                                    gzip compressed data, from Unix, original size modulo 2^32 727040

Is ASCII text sufficiently discriminating?
If Tim thinks this is acceptable then it saves a lot of work but I worry he is expecting more than ASCII text. After all the content of .csv is not the same as a .mol or a `.pbd file.
Do we ant more than ASCII text?
An, if this is the case, why does the DM need to do anything? Why not download the file and figure it out yourself?

The extension/mime-type + encoding from this should be sufficient to display a file and it's viewer options?

...also this relies on the file being sufficiently 'intact' in order for file to work. By using the file content (and not its extension) there's a race-condition in that a file might exist (in name) but have insufficient content for file to work.
Using types and extensions is more reliable?

Nearly all the text files we will have will be plain text. No funny characters.
So I don't see any major problems for now if we just assume the text files are plain us-ascii.
There are some rare exceptions, such as a SDF being in a unusual characterset so that the field values can contain Japanese characters. So in the longer term it would be useful to try to determine the charactrerset and send it along in the file/dataset description (and header when fetching the file?), and it might be useful to allow the user to change the characterset used in a viewer if the one used is not right. But I don't see this as a priority now. That said, as Ollie spotted using file -i does seem to give the info we need, so adding the characterset might be quite simple.

So to display files for now, we just display the first 1 MB of data and leave a link to download the rest?

Yes, something along those lines.


Fix android-studio zap :delete path

#10520 implemented the zap stanza, deriving it from the following Stack Overflow answer: http://stackoverflow.com/a/18458893
Since the commands in the SO answer did not have the paths in quotes, the space in ~/Library/Application\ Support/AndroidStudio* was escaped with a backslash. The backslash was imported in the commit as well, even though the path was in quotes, which causes the backslash to be
interpreted literally. This pull request fixes that by removing the backslash.

Thank you for the contribution. It was merged directly as a30cf73b71fd9988eaffd2dbe7299dd158b97bd8 to keep commit history cleaner. Your contribution is still credited to you.


Copy secrets from managed cluster to other clusters

What this PR does:
This PR copies all the secrets from the managed cluster to the remote clusters.
WIP: We need to handle the context storing and clients unlike we do now. Now they're bound to the information in K8ssandraCluster, but the secrets are not bound to the K8ssandraCluster. Or do we want to restrict which secrets are copied and only do the reconcile with K8ssandraCluster object? Lets talk in Discord..
Which issue(s) this PR fixes:
Fixes #30
Checklist

[ ] Changes manually tested
[x] Automated Tests added/updated
[ ] Documentation added/updated
[ ] CHANGELOG.md updated (not required for documentation PRs)
[x] CLA Signed:  DataStax CLA

┆Issue is synchronized with this Jiraserver Task by Unito
┆Issue Number: K8SSAND-752
┆Priority: Medium

@jsanda Would this approach work? (I'll add the missing features after that as marked with TODO notes).

I have another question. What happens (or what should happen) if the select of the ReplicatedSecret is changed?

@jsanda  When it's changed, the replication is targeting the new order. It's not going to rollback anything that was done previously as we don't have such state stored (for example, we could have overwritten some secrets the first time the ReplicatedSecret was created and it matched some secrets).
And I don't think we should. Unless we force that target cluster must be identical to the current one (and only replicated secrets are allowed to remain on the target cluster). But in that case we probably want a blank statement also "replicate everything".
But there's actually a single thing that's forgotten. How do we deal with namespaces? What if my K8ssandraCluster is running namespace A in cluster-1, but namespace B in cluster-2?

When it's changed, the replication is targeting the new order. It's not going to rollback anything that was done previously as we don't have such state stored (for example, we could have overwritten some secrets the first time the ReplicatedSecret was created and it matched some secrets).
And I don't think we should. Unless we force that target cluster must be identical to the current one (and only replicated secrets are allowed to remain on the target cluster). But in that case we probably want a blank statement also "replicate everything".

My concern here is that the operator creates secrets across various remote clusters and then leaves orphaned secrets if the label selector changes. We need to answer the following questions:

What happens if the ReplicatedSecret is deleted?
What happens if the label selector is changed to target a different secrect?
What happens if a k8s context is removed from the ReplicatedSecret?


Support for Jameco vendor

I just started using kicost, but really like it already.
I also source some of my parts from Jameco, (www.jameco.com) would it be possible to use them with kicost? I'm not afraid of coding, and would be glad to help where needed.

You could possibly make Jameco work with kicost. Here's what you need to do in kicost.py:

Put an entry with key jameco into the distributors dictionary. Set the function entry name to jameco. Set the label entry as Jameco. I don't know how to set the order_cols or order_delimiter since I don't know the format for Jameco order imports (or if it's even allowed).

Create a function called get_jameco_part_html_tree. This function searches for the page on the website with the given manufacturer part number or distributor catalog number. The page is parsed into a tree by BeautifulSoup and returned. The difficulty here is that the page returned by the website may not be the part page but a page with a list of possible pages for the part. Then you'll have to search that list to find the most likely matching page and return the tree for that. (The function for digikey does this.)

Create a function called get_jameco_qty_avail that looks in the page tree for the quantity of the part that's available. I don't see that the Jameco website gives this information, so maybe just return a default like 10000 or something.

Create a function called get_jameco_part_num that looks in the page tree for the manufacturer's part number and returns it as a string.

Create a function called get_jameco_price_tiers that looks in the page tree and returns a dictionary of quantities and associated prices.

Good luck!

@mkdutchman , opened an issue to discussions about new distributors support in #116.


Add structured data and fields

This PR is still a work in progress. Many changes are coming, but the basic structure is here. Data allows for both anonymous field names, as well as duplicate field names. Please Look this over and provide feedback.

Better way is to query the information schema:
https://cloud.google.com/spanner/docs/information-schema
On Tue, May 9, 2017 at 1:27 PM, Mike Moore<EMAIL_ADDRESS>wrote:

@blowmage commented on this pull request.
In google-cloud-spanner/lib/google/cloud/spanner/client.rb
https://github.com/GoogleCloudPlatform/google-cloud-ruby/pull/1461#discussion_r115593803
:

     #   db.insert "users", [{ id: 1, name: "Charlie", active: false },

     #                       { id: 2, name: "Harvey",  active: true }],
     #             types: users_types
     #

   def types_for table, pairs: false

     execute("SELECT * FROM #{table} WHERE 1 = 0").types pairs: pairs

   def fields_for table

Nowhere yet. I'm trying to make it easier to insert/upsert data. What is a
better wa to grab fields for a table?
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub
https://github.com/GoogleCloudPlatform/google-cloud-ruby/pull/1461#discussion_r115593803,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATdefyZcR63Cg32GgQ3x6komCAg--q-Lks5r4MxDgaJpZM4NUoNZ
.

@quartzmo @vkedia This is ready for review.


🐛 Bug Report: GitlabOrgDiscoveryEntityProvider for  no self hosted  gitlab,  is not getting inherited users members from groups

📜 Description
In version v1.19.6 the discovery provider only gets users who belongs to the first group company/teams
As I use a no self hosted gitlab instance with users inside sub grops, I would like to be able to see all the users including inherited
👍 Expected behavior
To see all users including inherited users members on backstage platform.
👎 Actual Behavior with Screenshots
When you have a gitlab where not all your users belongs to the first group, the discovery pattern dosent gets innerited users of subgroups.
👟 Reproduction steps
On gitlab

Create a base group with some users  'company/teams'
Crete other subgroups with diferent users

On Backstage
Configure the GitlabOrgDiscoveryEntityProvider as documented in https://backstage.io/docs/integrations/gitlab/org
📃 Provide the context for the Bug.
In this commit https://github.com/backstage/backstage/commit/753b35afb56268a2080875159f65ca1f449e51a2
@matteosilv hel us with the creation of the function listSaaSUsers, this functions use the /group/id/members API wich help us to get membes of a group (with not inherited) members, what will be grate is to have also the inherited members to,
By default, the REST API only returns direct members and excludes inherited ones, which may result in the query only fetching the users of the first group.
🖥 Your Environment
Backstage v1.19.6
👀 Have you spent some time to check if this bug has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
Yes I am willing to submit a PR!

I havent make any contribution to backstage, I can do it but i dont know if probably @matteosilv can have more context around it.

Anybody is welcome to contribute!

Alright, I've created the PR. Since I'm new to this process, I've made it up to this point. Is there anything else that needs to be done? Should I tag the reviewers?
Thanks.


Discriminator pretrained model missing

The discriminator pretrained model is not in the drive folder, if you have it... I'll be so glad if you could send it to me or upload it into the drive folder :) (I'm using PIRM_region2 as a SR pretrained model) Thank u so much!

The same requirements as you😭😭😭


[WIP] Check whether the Kite daemon is running when atom starts

This pr adds a function to check that Kite is installed, running, reachable, authenticated, and enabled in the current directory. If any of these checks fail then an appropriate noficiation is displayed with a button that lets the user fix the problem. It relies on the kite-installer package to perform the low-level checks, and to the installation / etc.
This is still quite a way from done. I am putting this up mostly to show where it's headed.

Moving this to the new atom kite repo: https://github.com/kiteco/atom-plugin/pull/1
Will not be merging here.


Add SK42/USK2000 coordinates converter and Graticule.

Add SK42/USK2000 coordinates convertor and Graticule (pages and kilometers).

UCS-2000 and SK-42 coordinate converters added in v1.2.20.
Graticule remained.

Graticule added in v1.3.4


use internal url to serve blackbox exporter

This PR proposes a fix for https://github.com/canonical/blackbox-exporter-k8s-operator/issues/36.
The ERR_TOO_MANY_REDIRECTS happens because, when the traefik relation is created, the self.external_url gets changed to http://traefik-ip/juju-model-blackbox.
This causes blackbox_exporter to be launched with –web.external-url=http://traefik-ip/juju-model-blackbox. Hence when we try to curl http://blackbox-unit:9115, blackbox ends up serving an html page pointing to  http://traefik-ip/juju-model-blackbox instead of the probes list. This generates an endless loop, because the requests to traefik are redirected to http://blackbox-unit:9115 which in turns redirects to traefik.
Since traefik is already redirecting the requests to the blackbox unit, the –web.external-url should be kept as the internal url.
With this fix, the catalogue item redirects correctly to the blackbox view as shown below:

Hey @giusebar, thanks for the PR :)
The problem is, with your change only the homepage works; the web-external-url is needed for any path after that (e.g., /probe, /config), and if you try clicking on "Configuration" it will probably give you 404 :(

UPDATE: instead of using the internal URL in the workload, the web.external-url has to be set to empty string ' '. Traefik is already doing the redirection from the external-url to the internal unit IP. In this way the paths generated by blackbox are simply /metrics, /logs and so on. The catalogue must direct to the blackbox unit with the / character, otherwise the traefik redirection does not work as expected.
This PR also includes the usage of the internal IP of blackbox when setting up the scrape_config. This is done because using the trafik ip generates a configuration issue. It follows the implementation of other charms such as AlertManager. (TODO: investigate how to properly use Traefik if necessary for TLS reasons).

We should fix the integration tests by retrying the charmcraft pack command until it succeeds.

Before approving this PR, we should make sure that:

the links in the main UI work;
the probes in Prometheus work correctly;

For posterity, the main issue here was that we were passing self._external_url.replace("http://", "") to the Prometheus scrape job: when using Traefik, this will contain a path (e.g. <traefik_ip>/<model>-<app>); however, Prometheus only accepts a hostname in the __address__ label, and has a separate one for metrics_path.
The solution to this problem is:

Only pass the hostname ("replacement": f"{external_url.hostname}") to __address__;
Pass the remaining path as part of the metrics_path (probes_path = f"{external_url.path.rstrip('/')}/probe").


Login 500 after gitea installation

Gitea version (or commit ref):1.13.0,1.13.1
Git version:2.25.1
Operating system:ubuntu20.04 lts

[ ] PostgreSQL
[ x] MySQL
[ ] MSSQL
[ ] SQLite

Can you reproduce the bug at https://try.gitea.io:

[ ] Yes (provide example URL)
[ ] No

Log gist:

Description
2021/01/19 08:19:22 ...c/net/http/server.go:3095:logf() [I] http: superfluous response.WriteHeader call from code.gitea.io/gitea/vendor/gitea.com/macaron/macaron.(*responseWriter).WriteHeader (response_writer.go:60)
[Macaron] 2021-01-19 08:19:22: Completed GET / 500 Internal Server Error in 55.284196671s
^C2021/01/19 08:19:31 ...eful/manager_unix.go:124:handleSignals() [W] PID 5323. Received SIGINT.

I think that's because you input wrong database information when installation?

I started to use utf8mb4 to report an error, and then I couldn't use utf8

I started to use utf8mb4 to report an error, and then I couldn't use utf8

I think we should upgrade the MySQL driver. Is my version of MySQL too new

I think we should upgrade the MySQL driver. Is my version of MySQL too new

utf8mb4 is irrelevant here and you should stick with it.
The problem is you have the incorrect database configuration.
You need to set within your app.ini [database] section the correct values for (at least):
DB_TYPE
HOST
NAME
USER
PASSWD
https://docs.gitea.io/en-us/config-cheat-sheet/#database-database
It would be likely more appropriate for you to ask for help on our discord.

utf8mb4 is irrelevant here and you should stick with it.
The problem is you have the incorrect database configuration.
You need to set within your app.ini [database] section the correct values for (at least):
DB_TYPE
HOST
NAME
USER
PASSWD
https://docs.gitea.io/en-us/config-cheat-sheet/#database-database
It would be likely more appropriate for you to ask for help on our discord.


gz2_hart16_small

Hello,
I am trying to get the project to work for me. Unfortunately I can't find the file gz2_hart16_small. On https://data.galaxyzoo.org/ I found only gz2_hart16. My first assumption that it contains only less columns was probably not correct, because e.g. later df.t01_1 is not found.
Would it be possible to share a pointer to the file?

Hi @andife, thanks for your interests in exploring the repository. We will realease our finalized catalog soon after we submit this work to a journal.

Hey @hungjinh, some interesting ideas in this body of work, any progress with formatting the training data?


Fix registry version argument

Typo fix

Please sign your commits following these rules:
https://github.com/moby/moby/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "patch-1" git@github.com:lazize/distribution.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

Amending updates the existing PR. You DO NOT need to open a new one.

LGTM


incorrect cisuseraccount ids fixed

Issue described in the following link is now fixed: https://github.com/mvdbent/CIS-macOS-Security/issues/1#issue-999646272

thank you, was planning to do this but didn't get around to it.


Test comment counter

in this pull request i configured jest and added a test for testing the adding number of comments function

thanks @HFG43


feat: settings improvements

This PR...
Changes

Fixes

How to test it

Screenshots

Checklist

[ ] tested locally
[ ] added new dependencies
[ ] updated the docs
[ ] added a test

Oops, I didn't see this was a Draft


chore: remove '@unocss/transformer-directives' and '@unocss/transformer-variant-group'

chore(dependencies): remove '@unocss/transformer-directives' and '@unocss/transformer-variant-group', merge 'transformerVariantGroup,transformerDirectives' into main package

Deleted '@unocss/transformer-directives' and '@unocss/transformer-variant-group' dependencies.
Merged functionality from 'transformerVariantGroup,transformerDirectives' dependency into the main package.

Update unocss configuration to exclude 'transformerVariantGroup,transformerDirectives' dependency content.

@ottocsb thanks

Yes, you are right. I forgot to update pnpm-lock.yaml. I will make an additional commit for it.

Thank you, this PR is Nice


Lights flickering

We managed to set it up properly, but for some reason the lights are flickering on and off irregularly and very fast, like multiple times a second. What could cause this?

Turns out if you connect multiple people to the ArtNet server, the lights will flicker between the two sources

Good to know. We currently don't support any artnet merging between multiple senders. We basically just send the incoming Artnet package to the hue bridge converted to a Hue entertainment packet. But if this is a common use-case i might try to support it


Added e2e IT for symmetric NAT

Provisions a apex five-node deployment with seven containers total. The additional two containers are doing ip masquerading to setup a symmetric NAT scenario.
This emulates the topology of two remote sites, both with firewalls facing the Internet with no inbress traffic allowed or any static NAT mappings from the outside to the inside interface of the NAT nodes.
What is validated in the test is in order for spoke traffic traversal to occur between net1 and net2, spoke nodes are relayed through the relay node.
Also validated is local address ICE pairing is reachable between nodes.

Signed-off-by: Brent Salisbury<EMAIL_ADDRESS>

Resolves #199
Example output from a relay node dump where you can see two sockets opened up from each network with the same IP but different port which enables the connectivity:
        wW6HhRQxY4vhhzOZFgHtXZ+842quEyOH8byAoxzXfmU=	(none)	<IP_ADDRESS>:11097	<IP_ADDRESS>/32<PHONE_NUMBER>	948	860	off
        HhZK5yMqh4T73zqEHIT0qWl1S7ZfunrUfa5lcn1Y4Qs=	(none)	<IP_ADDRESS>:51820	<IP_ADDRESS>/32<PHONE_NUMBER>	1204	1116	off
        uoLerL9yx7RwIa+RQGr6LvMZGsdRuFD/DyJhggfwMlw=	(none)	<IP_ADDRESS>:26600	<IP_ADDRESS>/32<PHONE_NUMBER>	692	604	off
        7ZwvxmSp5Fxv6rK+LkXlkNsmyi+KdepJ1e+qBIDcLHs=	(none)	<IP_ADDRESS>:51820	<IP_ADDRESS>/32<PHONE_NUMBER>	1460	1372	off


epidate python CLI unittest fails when an argument is passed to unittest module

It's occasionally useful for debugging to pass arguments to the unittest module to e.g. add output, run specific tests, etc. In fact, it may be a good idea to add the --verbose argument to the python unittest pipeline in the future. The argument does have the intended effect, additional output is produced. But the epidata unittest test_cli_correct_default fails, e.g. this command
python -m unittest --verbose

causes this failure
...
test_cli_correct_default (test_epidata_getDataIntoPandasDataFrame.Test_getDataIntoPandasDataFrame) ... usage: python -m unittest [-h] [-r] [-ff {json,hdf5,json_timeasstring}] [-o OUT_PATH]
python -m unittest: error: unrecognized arguments: --verbose
ERROR
...
ERROR: test_cli_correct_default (test_epidata_getDataIntoPandasDataFrame.Test_getDataIntoPandasDataFrame)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/abel_da/epidemiology/pycode/test/test_epidata_getDataIntoPandasDataFrame.py", line 25, in test_cli_correct_default
    [read_data, out_form, out_folder] = gd.cli("spain")
  File "/home/abel_da/epidemiology/pycode/epidemiology/epidata/getDataIntoPandasDataFrame.py", line 181, in cli
    args = parser.parse_args()
  File "/home/abel_da/spack/opt/spack/linux-ubuntu18.04-ivybridge/gcc-9.3.0/python-3.8.5-giziborwsbfygdhmvaz2jcmr7fammj6p/lib/python3.8/argparse.py", line 1771, in parse_args
    self.error(msg % ' '.join(argv))
  File "/home/abel_da/spack/opt/spack/linux-ubuntu18.04-ivybridge/gcc-9.3.0/python-3.8.5-giziborwsbfygdhmvaz2jcmr7fammj6p/lib/python3.8/argparse.py", line 2521, in error
    self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
  File "/home/abel_da/spack/opt/spack/linux-ubuntu18.04-ivybridge/gcc-9.3.0/python-3.8.5-giziborwsbfygdhmvaz2jcmr7fammj6p/lib/python3.8/argparse.py", line 2508, in exit
    _sys.exit(status)
SystemExit: 2

As you can see, for some reason a weird mixture of the unittest module help and the epidata help is printed during the test. --verbose is the correct argument for unittest, and it does have the intended effect, test_cli_correct_default (test_epidata_getDataIntoPandasDataFrame.Test_getDataIntoPandasDataFrame) is not normally printed.

The problem is: when called through the unittest module sys.args is loaded with arguments. When calling parser.parse_args() this leads to an exit error.
A quick fix is:
 def setUp(self):
        del sys.argv[1:]

This deletes all the arguments, but is certainly not an elegant way to solve this. Maybe someone knows a better way to solve it. Also with this the --verbose argument works just fine.
@dabele

not great. I think there should be a way to isolate the test. maybe a subprocess call? It's a test of the CLI anyway, so that may be  appropriate.


Add picks argument to Raw.plot()

Describe the new feature or enhancement
Raw.plot() currently does not accept a picks= argument, even though Evoked.plot() and Epochs.plot() do.
For a mostly-unified API it would be nice to add this parameter.
Describe your proposed implementation
This would be added as an argument to Raw.plot().
I suppose it can come after the n_channels argument. Ideally it would be the same for all classes, but that would break backward compatibility.
The behaviour and implementation should be similar to or identical to how it's done in Epochs.plot() and Evoked.plot().
Describe possible alternatives
Alternatively, the entire function call could be rewritten to match Evoked and Epochs. The would be nicer for the future, but it would break a lot of things in the short term, for a relatively minor improvement.
Additional context
Discussed on the MNE forum here: Unexpected behaviour Raw.pick

Technically order=pick_types(...) actually works like you suggest I think. But every time I want to do this I have to look up the argument name.
One backward-compatible way forward would be to do a legacy-style deprecation of order

put a * in the arg list for raw.plot before order
move order=None to the end
put picks=None where order=None was
allow order or picks to be specified, but not both

Eventually we could deprecate order but I suspect it's pretty widely used, and the backward compat code we'd need to keep around is only 5 lines I think:
if order is not None:
    if picks is not None:
        raise ValueError(...)
    picks = order
del order

then we can internally use picks instead of order, and process picks the normal way (_picks_to_idx internally will pass through the array of int that order currently supports!).
Let's see if others agree with this idea, but would you be interested in trying to make this change @ivopascal ?

Yes, I'd be happy to implement it :)

I'm fine with @larsoner's plan as long as picks=[4, 3, 2, 1, 0] works the same as order[4, 3, 2, 1, 0] (i.e., as long as it's still possible to put the channels in any arbitrary user-specified order on the plot)

I said I'd implement it but I'm actually swamped with work right now, and it's taking me a bit more time than I expected to figure out how to work with the existing code.
I'd still be happy to implement it in March, but if someone else wants to put this together instead of waiting that's also good.

Hmm, I don't think picks should replace order. Epochs.plot() and Evoked.plot() actually have both, which means you can have picks in an arbitrary order and preserve the "standard" ordering of channels. Only specifying order would then actually modify the order.
I think having as-much-as-possible uniformity between Epochs.plot(), Evoked.plot() and Raw.plot() would be nicest, so I propose having picks=[3,2,1] to be different than order=[3,2,1] and we should then keep both parameters.

Closing because #12467 is merged and fixes the issue.


Disabled dropdown still opens the dropdown items list

Describe the bug
Disabling a dropdown changes the button status and the cursor pointer, but if you click on the button, the dropdown items list is still opening.
To Reproduce

Create a dropdown with a dropdown list
Disable the component       <Dropdown disabled={true} ...> <Dropdown.Item ...>
Click on the disabled button and the dropdown list will appear.

Expected behavior
Disabled dropdowns shouldn't open the dropdown items list.
Screenshots

System information:

OS: Mac OS
Browser: Chrome
Version: 114.0.5735.198

Project information:

Tailwind: 3.2.4
Flowbite: 1.6.5
Flowbite React: 0.4.10
Type: CRA

#840 was merged yesterday but has not been released yet. It should fix this issue.

Thank you!


Packaging / Communication with Server

Say the user wants to build a simple CLI that produces speech synthesis using web APIs.
speech.js
var message = 'Hello world.'

var synth = window.speechSynthesis
synth.onvoiceschanged = function () {
  var msg = new window.SpeechSynthesisUtterance(message)
  var voices = synth.getVoices()
  var voice = voices.filter(function (voice) {
    return /zarvox/i.test(voice.name)
  })[0] || voices[0]

  msg.voice = voice
  msg.onend = function() {
    window.close()
  }

  synth.speak(msg)
  console.log("Speaking: %s", voice.name)
}

Currently it works with:
hihat speech.js --exec

Now, the problem is, the user wants to package this up as a CLI tool so that others can input their own message like so:
speech-synth --message="Goodbye"

How does the speech-synth communicate to the Electron server what the message is?
Ideally the user would just use process.argv.slice(2) as the input, but this does not work due to the nature of how we spawn electron.
process.argv.slice(2)
//=> [ 'speech.js', '--exec' ]

One approach is using IPC or some sort of socket thing to communicate.
Another idea:

export hihat's server.js code as a function
user can require('hihat')({ exec: true }) in their speech-server.js
their bin script just calls electron speech-server.js
result: they can use process.argv and minimist in their client.js

Similar approach could use ipc instead to send data, rather than relying on process.argv.
Downsides:

a bit more work for the user
Chromium logs are no longer stripped
--print and --raw-output have to be handled manually

users installing their module have to install electron-prebuilt twice (not sure if it makes a difference since it should be cached)

If you expose the electron instance to the caller it doesn't have to be included twice, right? e.g. require('hihat').electron.

FWIW, electron-spawn uses https://www.npmjs.com/package/npm-execspawn which will detect if electron has been globally installed. So if installing electron-prebuilt multiple times for a user was a problem, they could install it just once globally.

Another possible way for the child/parent to communicate is to create a file descriptor to write to (I've never tried this with electron though):
var spawn = require('child_process').spawn
var child = spawn(process.execPath, ['script.js'], {
  stdio: [null, null, null, 'pipe']
})
child.stdout.pipe(process.stdout)
child.stdio[3].write('testing')

Then in script.js:
var net = require('net')
var pipe = new net.Socket({ fd: 3 })
pipe.on('data', function (data) {
  console.log('got the data!', data.toString())
})

Or even stdio: [null, null, null, 'ipc'] and use .send() and process.on('message') which is basically what child_process.fork does (I've also not tried this with electron).

Thanks for the suggestions! :+1:
I have something working in feature/entry branch and it seems alright.
Taking some inspiration from electron-spawn... Now the full speech-server.js bin script looks like this:
#!/usr/bin/env node
if (!process.versions.electron) {
  require('hihat/spawn')(__filename, process.argv.slice(2))
} else {
  require('hihat')({
    basedir: __dirname,
    entries: 'speech.js',
    node: true,
    exec: true
  })
}

The speech.js (client) looks like it does earlier but with:
var argv = require('minimist')(process.argv.slice(2))
var message = argv.message || 'Hello world'

...

And the following works! :tada:
speech-server.js --message="woah dude"

Thoughts?

Rad! :sparkles: :+1: :sparkles:


dump input of distributed_actor_executor_ast test always to help debug

Trying to nail a very rarely flaky test

Thank you Erik, meanwhile trying to repro on ubi9 still, but it seems to be some "weird thing impacts some minor thing" in the ast dump and that happens once in a blue moon. Getting a full dump when it happens will help a lot!

Related radar rdar://107631491


Add an ErrorKind field in ContainerError

TL;DR
Add ErrorKind to ContainerError to enable flyteKit (and other SDKs) to identify the origin of the error as System/User... etc.
Type

[ ] Bug Fix
[X] Feature
[ ] Plugin

Are all requirements met?

[X] Code completed
[X] Smoke tested
[X] Unit tests added
[X] Code documentation added
[X] Any pending items have an associated Issue

Tracking Issue
https://github.com/lyft/flyte/issues/300

@kumare3


[PubgrubTests] Add DependencyGraphBuilder

Allows creation of mock containers with a lot less boilerplate, much like in original pubgrub's tests.

@swift-ci smoke test


Missing requirements

To be added:
software requirements

python >= 3.8, <=4.0

hardware requirements

10-15GB free memory
4 cores
~10GB

What is the max workers value you pass? (https://github.com/georgepar/kaldi-grpc-server/blob/main/Makefile#L24)
10-15gb ram sounds a bit excessive

Turns out I was running with the defaults, i.e. max_workers=10. I switched to 3 workers and it didn't take much RAM.
So, a rough estimation would be ~2GB*$max_workers

TODO: Specify memory requirements as a function of num-workers and model size


Add crewai to comfyui official registry

how to
Introduction
The Registry is a public collection of custom nodes. Developers can publish, version, deprecate, and track metrics related to their custom nodes. ComfyUI users can discover, install, and rate custom nodes from the registry.
Have you installed the comfy-cli? Do that first.

Why use the Registry?
The Comfy Registry helps the community by standardizing the development of custom nodes:
Canonical Names: A custom node on the Registry has a globally unique name and this allows Comfy Workflow JSON files to uniquely identify any custom node without collisions.
Immutability: Once a custom node version is published, it cannot be changed. This ensures that users can rely on the stability of the custom node over time.
Semantic Versioning: Custom nodes are versioned using semantic versioning. This allows users to understand the impact of upgrading to a new version.

Done this here


fix: migrating magic block tables with breaks

Ref CX-1112

🧰 Changes
Fixes breaks in magic block tables.
🧬 QA & Testing

Broken on production.
Working in this PR app.

This PR was released!
🚀 Changes included in v7.6.2


Make outputs optional on when addon

Currently it's required to define both truthy and falsy/otherwise outputs. Why not make them optional so you can define scenarios where only one outcome ends in an action and the other does nothing?

@maxfrigge could you provide some example code?

Take this use case
import setError from '../actions/setError'
import submitOrder from '../actions/submitOrder'
import setState from '../actions/setState'
import validateOrder from '../actions/validateOrder'
import redirectToUrl from '../actions/redirectToUrl'
import { when } from 'cerebral-addons'

const whenOrderIsValid = when(['checkout', 'orderForm', 'valid'], { valid: when.truthy })

const orderSubmitted = [
  validateOrder,
  whenOrderIsValid, {
    valid: [
      setState(['checkout', 'orderForm', 'loading'], true),
      [
        submitOrder, {
          success: [
            redirectToUrl('/thankyou')
          ],
          error: [
            setError,
            setState(['checkout', 'orderForm', 'loading'], false)
          ]
        }
      ]
    ]
  }
]

export default orderSubmitted

The action whenOrderIsValid throws an error on this line because the otherwise output doesn't exist.

I kind of like having all paths explicit. When you read this, I wonder what happens when the order is invalid?

Well nothing happens, because the validation updates the form state which updates the ui.
I get you point thought that it could be avoided by design .. but it would still be nice to have the option :)

Here is another use case where it don't see any reason to specify any other path then isTrue - if you decide to make that call inside the signal.
import whenFieldName from '../actions/whenFieldName'
import updateOrder from '../actions/updateOrder'
import validateOrderField from '../actions/validateOrderField'

const orderFieldChanged = [
  updateOrder,
  whenFieldName('acceptTerms'), {
    isTrue: [validateOrderField]
  }
]

export default orderFieldChanged

Don't you think that adding the isFalse condition clarifies what will happen when it's not true?
whenFieldName('acceptTerms'), {
  isTrue: [validateOrderField],
  isFalse: []
}

In every app I have I do something in the isFalse path like this
whenFieldName('acceptTerms'), {
  isTrue: [validateOrderField],
  isFalse: [showSnackbarMessage('Please accept the terms')]
}

My case is not about validation. I have a change and a blur signal for all form fields. All text inputs validate on blur, but the checkbox should validate on change too.
Well .. it doesn't really hurt to have those empty paths defined so I will close for now and get back in case I can't take it anymore :-)


wikipedia-sentences: Error during indexing

I'm trying to run the wikipedia-sentences example but I get an error when I run the python app.py -t index on OSX.
The environment details are following:
OS: OSX Big Sur V11.2
Python: Python 3.9.2
I'm getting the following logs on my terminal:
`
encoder@43439[I]:starting jina.peapods.runtimes.zmq.zed.ZEDRuntime...
encoder@43439[I]:input tcp://<IP_ADDRESS>:54492 (PULL_BIND) output tcp://<IP_ADDRESS>:54503 (PUSH_CONNECT) control over tcp://<IP_ADDRESS>:54490 (PAIR_BIND)
indexer@43440[I]:starting jina.peapods.runtimes.zmq.zed.ZEDRuntime...
indexer@43440[I]:input tcp://<IP_ADDRESS>:54503 (PULL_BIND) output tcp://<IP_ADDRESS>:54504 (PUSH_BIND) control over tcp://<IP_ADDRESS>:54502 (PAIR_BIND)
gateway@43441[I]:starting jina.peapods.runtimes.asyncio.grpc.GRPCRuntime...
gateway@43441[I]:input tcp://<IP_ADDRESS>:54504 (PULL_CONNECT) output tcp://<IP_ADDRESS>:54492 (PUSH_CONNECT) control over ipc:///var/folders/s4/4l6cbdrn7cq2m4vs14xz9qpm0000gn/T/tmpga_xzqut (PAIR_BIND)
gateway@43441[S]:GRPCRuntime is listening at: <IP_ADDRESS>:54512
TransformerTorchEncoder@43439[W]:"auto" pooling_strategy is deprecated, Defaulting to  "cls" to maintain the old default behavior.
TransformerTorchEncoder@43439[I]:post_init may take some time...
NumpyIndexer@43440[I]:post_init may take some time...
NumpyIndexer@43440[I]:post_init may take some time takes 0 seconds (0.00s)
NumpyIndexer@43440[S]:successfully built NumpyIndexer from a yaml config
BinaryPbIndexer@43440[I]:post_init may take some time...
BinaryPbIndexer@43440[I]:post_init may take some time takes 0 seconds (0.00s)
BinaryPbIndexer@43440[S]:successfully built BinaryPbIndexer from a yaml config
CompoundIndexer@43440[I]:post_init may take some time...
CompoundIndexer@43440[I]:post_init may take some time takes 0 seconds (0.00s)
CompoundIndexer@43440[S]:successfully built CompoundIndexer from a yaml config
CompoundIndexer@43440[W]:Setting workspace of vecidx to workspace/indexer
CompoundIndexer@43440[W]:Setting workspace of docidx to workspace/indexer
objc[43439]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called.
objc[43439]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
`

Hey @shahrukhx01 ,
This problem seems to be related to some specific MacOS configuration, disabling multithreaded and multiprocessing forks.
See if this thread may be helpful:
https://stackoverflow.com/questions/50168647/multiprocessing-causes-python-to-crash-and-gives-an-error-may-have-been-in-progr

@JoanFM  Thank you for your prompt response, I already did set the OBJC_DISABLE_INITIALIZE_FORK_SAFETY=yes, in .bash_profile, however, missed exporting the env variable, re-looking at it made me realize that. Cheers!


BUG: launch in binder errors out

e.g. with ERROR: Package 'networkx' requires a different Python: 3.9.19 not in '>=3.10'

Yeah, I think we need to bump this https://github.com/networkx/nx-guides/blob/main/runtime.txt


[Bug]: Stored procedure execution failed

ODC version
odc431
OB version
ob430,ob424
What happened?

What did you expect to happen?
The stored procedure can be executed normally
How can we reproduce it (as minimally and precisely as possible)?

Create stored procedure

create procedure `pro6` (INOUT `a` varchar(45)) begin
declare
  v1 int;
set
  a = 2;
set
  v1 = a + 1;
select
  v1;
end;

Anything else we need to know?
No response

this issue may be related to driver's parameter: sendConnectionAttributes.
I can execute this procedure if I set this parameter to true:

I failed to execute this procedure when I set this parameter to false:

this is a known issue for driver, this related issue id is 53824885.
we may solve this issue by upgrading driver's version

this is a known issue for driver, this related issue id is 53824885.
we may solve this issue by upgrading driver's version

<IP_ADDRESS> may work

pass


Add Support for CB38M4A(IB)-1

Please add support for the E7QB-MAX using Control Box model CB38M4A(IB)-1.

@joshuaspatrick have you tried https://github.com/iMicknl/LoctekMotion_IoT/issues/67 already? Most likely it is already supported.


Merge request for Persian langauge

I was looking through the forks and i saw someone localizing for Persian language, i would really appreciate it if this could be added to the master project.
Thank you.

Thank you - and sorry for such a long delay. Style changes need to be removed so only the relevant code changes are in the PR


Set up integration tests to run against the real Azure services

The PR is to resolve #37 by setting up the integration tests against the real Azure services,

if OICD authentication is enabled in Build / Quarkus ecosystem CI workflow
Otherwise run integration tests against mocked Azure services (DevServices or mocked http server)

Testing
Here're two successful runs of Build workflow in my fork:

run integration tests against real Azure services
run integration tests against mocked Azure services

TODOs
I have already configured a federated identity credential on a user-assigned managed identity (see https://aka.ms/config-federated-identity-on-uami). In order to run tests against the real Azure services, the following actions are required:

Create a GitHub environment ci in https://github.com/quarkiverse/quarkus-azure-services
Add AZURE_CLIENT_ID / AZURE_TENANT_ID / AZURE_SUBSCRIPTION_ID as secrets of environment "ci".

Since I don't have permission to create GitHub environment/secrets in https://github.com/quarkiverse/quarkus-azure-services, I need help on these TODOs, talk to @majguo for these secrets' values. @gastaldi @ppalaga @gsmet.
NOTE: TODOs are completed with help from @gastaldi. They're configured as Environment Variables (instead of Environment Secrets).
Signed-off-by: Jianguo Ma<EMAIL_ADDRESS>

@majguo we recommend adding the secrets using the Terraform file in https://github.com/quarkiverse/quarkiverse-devops/blob/main/quarkus-azure-services.tf:
Here is an example: https://registry.terraform.io/providers/integrations/github/latest/docs/resources/actions_environment_secret
Let me know if that works for you

@majguo we recommend adding the secrets using the Terraform file in https://github.com/quarkiverse/quarkiverse-devops/blob/main/quarkus-azure-services.tf:
Here is an example: https://registry.terraform.io/providers/integrations/github/latest/docs/resources/actions_environment_secret
Let me know if that works for you

Thanks for @gastaldi's help, we have set up Environment Variables (instead of Environment Secrets) in https://github.com/quarkiverse/quarkus-azure-services. However, it looks like the configured Environment Variables can't be accessed in Build workflow (see this) as it's triggered the PR issuer (in this case, it's me, but I can't access Environment Variables in quarkiverse/quarkus-azure-services). That's why I pushed commit set up integ test against real azure services in workflow 'Quarkus ecosystem CI' as workflow 'Quarkus ecosystem CI' is triggered by quarkusbot which has necessary permission.

Build successfully ran which executed the integration tests against the real Azure services: Merge pull request #108 from majguo/majguo/integ-test · quarkiverse/quarkus-azure-services@0aeeb83 (github.com).


hyper_params.json not found for embedding training

I cannot run train embedding after created it because of missing hyper_param.json.
How do I create it? or I have to prepare it before training?
Error completing request
Arguments: ('my_keyword', '0.005', 1, '/workspace/my_keyword', 'textual_inversion', 576, 1024, 100, 0, 0, '/workspace/my_keyword/prompt-template.txt', True, True, '', '', 20, 0, 7, -1.0, 512, 512, 10.0, '', True, True, 1, 1) {}
Traceback (most recent call last):
  File "/stable-diffusion-webui/modules/ui.py", line 185, in f
    res = list(func(*args, **kwargs))
  File "/stable-diffusion-webui/webui.py", line 54, in f
    res = func(*args, **kwargs)
  File "/stable-diffusion-webui/extensions/DreamArtist/scripts/dream_artist/ui.py", line 30, in train_embedding
    embedding, filename = dream_artist.cptuning.train_embedding(*args)
  File "/stable-diffusion-webui/extensions/DreamArtist/scripts/dream_artist/cptuning.py", line 367, in train_embedding
    with open(os.path.join(log_directory, 'hyper_param.json'), 'w') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'textual_inversion/2022-11-16/my_keyword/hyper_param.json'

Now I found just making the directory under your webui process is running works e.g. mkdir -p textual_inversion/2022-11-17/my_keyword in above case.


play_sound operation hijacks sound controls

In #98 a new play_sound operation is added. The PR describes:

First, it uses the worlds shortest viable MP3 (93 bytes!) to overcome Apple's annoying "click to play" constraint on Mobile Safari. This process should be transparent and invisible. It does this by capturing the first interaction with the page and using that to immediately start and then stop playback; this "unlocks" the DOM object used to play the sound, document.audio.

This method has some serious drawbacks:

With a strict Content Security Policy, the loaded audio file will generate an error on all pages:

Refused to load data:audio/mpeg;base64,... because it does not appear in the media-src directive of the Content Security Policy.

Because the tab now has audio, all audio controls on a Mac are now linked to the tab. Clicking "play" on a keyboard starts the MP3 file instead of controlling other audio sources.
When the page is opened on an iPhone, all other audio is paused to play the empty MP3 file. In our case it's a webview inside our native iPhone app.

We are forced to downgrade to 4.4.6, although we have no intention to use the play_sound operation. Maybe the audio for Mobile Safari hack should only be activated when using the play_sound operation?

You know, I completely agree with you - this functionality should have been opt-in. I had no idea it would cause this concern, or else I would have done so out of the gate.
Let me work something up and we'll try to get an update pushed ASAP.

Thanks for the fast respond @leastbad. And thanks for giving us a good laugh. We had some fun this morning to figure out why our accounting software suddenly was playing music 🤣

@edwinv feel free to stick your CR client to the commit associated with #112. Otherwise, there will be a patch release coming quite soon. Thanks for helping us catch this.

Our wine website also plays music, how fun :)

Our wine website also plays music, how fun :)

I really am sorry about this, but it's exactly why we pulled it out of core: we flew too close to the sun and could not anticipate every diverse scenario that might come up.
It's my hope that you can instead take the ideas I wanted to express from the source and cut your own custom operation that hits the sweet spot for your application. For example, you might need to test and see if audio is already playing? I don't know. Safari makes everything complicated.
The main takeaway from the hack I used is that the first sound has to be played in direct response to the event that captured it; you cannot delegate it, setTimeout it, or anything else. It has to be in the event handler function for the event, period.
Good luck!

Now worries!! I'm really happy you added it to SR, it's just kind of funny. We upgraded our version, thanks for the awesome work @leastbad !


ResponsiveRow bug in different sizes

Duplicate Check

[X] I have searched the opened issues and there are no duplicates

Describe the bug
ResponsiveRow bug in different sizes
Code sample
Code
import flet as ft

def main(page: ft.Page):
    page.add(
        ft.SafeArea(expand=True,
                    expand_loose=True,
                    content=ft.Container(content=ft.ResponsiveRow(controls=[
                        ft.Container(
                            col={
                                'xs': 0,
                                'sm': 0,
                                'md': 0,
                                'xl': 2
                            },
                            expand=True,
                            bgcolor=ft.colors.GREEN,
                        ),
                        ft.Container(
                            col={
                                'xs': 12,
                                'sm': 12,
                                'md': 9,
                                'xl': 8
                            },
                            expand=True,
                            bgcolor=ft.colors.RED,
                        ),
                        ft.Container(
                            col={
                                'xs': 0,
                                'sm': 0,
                                'md': 3,
                                'xl': 2
                            },
                            expand=True,
                            bgcolor=ft.colors.BLUE,
                        ),
                    ], ))))

ft.app(target=main)

To reproduce
run with  flet run --web .
F12, Look how it looks on the iPhone

Expected behavior
No response
Screenshots / Videos

Captures
[Upload media here]

Operating System
Windows
Operating system details
windows10
Flet version
0.23.2
Regression
I'm not sure / I don't know
Suggestions
No response
Logs
Logs
[Paste your logs here]

Additional details
No response

another question:
For example, not displaying certain buttons on a small screen and displaying them on a large screen. What should I do to realize such a feature? Is there an interface for media queries?


Add SPEEDY climate model

Within the extension of the project, we are adding a new model, speedy
Workflow

Call speedy bash script that

sets up inputs
executes Fortran executable

Read outputs from Fortran binary files and populate model_data

Tasks

[x] write new update_particle_dynamics! function
[ ] write IO function(s) for speedy output files

Issues with 2D vs 3D

Gaussian random field generator: Looks like it will work but needs testing
get_mean_and_var: Easy to generalise because we don't use the dimension. We can assert that size(statistics) == size(particles) - 1
copy_states: Needs to be generalised to use the "last" dimension. This should do it
State vectors: Are defined in the model

I am having difficulty with writing to a Fortran file that SPEEDY will accept. Please see my current write_fortran (line 520) function which relies on FortranFiles.jl. The files it creates can be read in correctly using our previous reading function. Unfortunately, SPEEDY will not accept them and they cause the SPEEDY model to crash - with no useful outputs appearing.
The write_fortran function should replicate the behaviour of the following SPEEDY write_grd4 function (line 197).
Perhaps this behaviour is due to the unformatted argument (padding the records before and after) in write_grd4 currently not being replicated in the Julia function. Your help would be much appreciated!

Could you please show exactly what you've tried?  For example, I tried to generate a file with your write_fortran function like this:
using .Model: write_fortran

nlon = 2
nlat =
nlev = 2
filename = tempname()
nij0 = nlon*nlat
iolen = 4
T = Float32
dataset = rand(T, nlon, nlat, nlev, 6)
write_fortran(filename, nlon, nlat, nlev, dataset)

and then I can read it back, always using the Julia package FortranFiles, with
f = FortranFile(filename, "r", convert="big-endian", access="direct", recl=(nij0*iolen))
read(f, T; rec=1)

Are you doing something similar to write the file?  How are you reading it from your Fortran program?  Anything simple I can try locally to debug it?

I have tested the reading and writing functions by running the following:
nlon = 96

nlat = 48

nlev = 8

T = Float64

n3d = 4

n2d = 2
# Read in the SPEEDY initial state file
(v2d, v3d) = read_grd("speedy/DATA/init/init.grd")

dataset =  zeros(T, nlon, nlat, nlev, (n3d+n2d))

dataset[:,:,:,1:4] .= v3d

dataset[:,:,1,5:6] .= v2d

write_fortran("test.grd", nlon, nlat, nlev, dataset)

(v2d_new, v3d_new) = read_grd("test.grd")

As expected when I compare (v2d, v3d) and  (v2d_new, v3d_new) they are identical.
My problem arises when I want to pass the test.grd (which will actually be called YYYYMMDDHH.grd) file to SPEEDY.
This is carried out by creating a symlink to the test.grd file in the following bash script. This will serve as the initial condition for the SPEEDY model.
ln -fs $OUTPUT/anal/$MEM/${YMDH}.grd fort.90
Would it help if I sent you a SPEEDY output file?

Note that the function read_grd4 in Speedy reads single-precision numbers (Float32 in Julia), here you're using double precision (Float64) instead.  That may be a source of problems.  Where is the read_grd function defined?  I don't see it anywhere in your fork, I could only find read_grd!

Would it help if I sent you a SPEEDY output file?

Not sure, but it doesn't hurt :slightly_smiling_face:

Apologies read_grd is defined as follows:
function read_grd(filename)

    nlon = 96
    nlat = 48
    nij0 = nlon*nlat
    iolen = 4
    nv3d = 4
    nv2d = 2
    nlev = 8

    v3d = Array{Float32, 4}(undef, nlon, nlat, nlev, nv3d)
    v2d = Array{Float32, 3}(undef, nlon, nlat, nv2d)

    f = FortranFile(filename, access="direct", recl=nij0*iolen, convert="big-endian")

    irec = 1

    for n = 1:nv3d
        for k = 1:nlev
            v3d[:,:,k,n] = read(f, (Float32, nlon, nlat), rec=irec)
            irec += 1
        end
    end

    for n = 1:nv2d
        v2d[:,:,n] = read(f, (Float32, nlon, nlat), rec = irec)
        irec += 1
    end

    close(f)

    return (v2d, v3d)
end

In my current write_fortran function, does defining v3d and v2d as the following ensure that we are writing single-precision?
v3d = Array{Float32, 4}(undef, nlon, nlat, nlev, nv3d)
v2d = Array{Float32, 3}(undef, nlon, nlat, nv2d)

Please find attached a SPEEDY output file
1982010100.grd.zip

In my current write_fortran function, does defining v3d and v2d as the following ensure that we are writing single-precision?

Yes, arrays with elements of type Float32 use single precision, which matches what speedy does to read the files.
For the record, I used this Julia script to write 2 arrays to file:
using FortranFiles

v3d = randn(Float32, 2, 2, 2, 2)
v2d = randn(Float32, 2, 2, 2)
f = FortranFile("/tmp/foo.dat", "w", access="direct", recl=(4 * 2 * 2))
irec = 1
for i in 1:2
    for j in 1:2
        write(f, v3d[:,:,j,i]; rec=irec)
        global irec += 1
    end
end
for i in 1:2
    write(f, v2d[:,:,i], rec=irec)
    global irec += 1
end
close(f)

and this Fortran program to read back the file from disk (closely based on how speedy reads files):
PROGRAM main
  IMPLICIT NONE
  INTEGER,PARAMETER :: r_sngl=kind(0.0e0)
  INTEGER,PARAMETER :: nlon=2,nlat=2,nlev=2,nv2d=2,nv3d=2
  CHARACTER(*),PARAMETER :: filename='/tmp/foo.dat'
  REAL(r_sngl) :: v3d(nlon,nlat,nlev,nv3d)
  REAL(r_sngl) :: v2d(nlon,nlat,nv2d)
  INTEGER :: iunit,iolen
  INTEGER :: i,j,k,n,irec,nij0

  nij0 = nlon * nlat
  iunit=11
  INQUIRE(IOLENGTH=iolen) iolen
  OPEN(iunit,FILE=filename,FORM='unformatted',ACCESS='direct',RECL=nij0*iolen)

  irec=1
  DO n=1,nv3d
    DO k=1,nlev
      READ(iunit,REC=irec) ((v3d(i,j,k,n),i=1,nlon),j=1,nlat)
      irec = irec + 1
    END DO
  END DO

  DO n=1,nv2d
    READ(iunit,REC=irec) ((v2d(i,j,n),i=1,nlon),j=1,nlat)
    irec = irec + 1
  END DO

  CLOSE(iunit)

  WRITE (*,*) v2d
  WRITE (*,*) v3d

END PROGRAM main

Output of this program:
  0.524990737     -0.189895257     -0.263706386       1.63854229     -0.300967187     -0.311691880       1.31338227      -1.32154751
   1.14990878     -0.255784541      0.512954772       1.13430202     -0.132320210       1.52468240      0.535124004     -0.408873230      -1.32983112     -0.611415625       8.83856416E-03 -0.359796703     -0.591043890     -0.356946021      0.459834397     -0.321428001

Arrays v3d and v2d written by the Julia script are
julia> v2d[:]
8-element Vector{Float32}:
  0.52499074
 -0.18989526
 -0.2637064
  1.6385423
 -0.3009672
 -0.31169188
  1.3133823
 -1.3215475

julia> v3d[:]
16-element Vector{Float32}:
  1.1499088
 -0.25578454
  0.5129548
  1.134302
 -0.13232021
  1.5246824
  0.535124
 -0.40887323
 -1.3298311
 -0.6114156
  0.008838564
 -0.3597967
 -0.5910439
 -0.35694602
  0.4598344
 -0.321428

As far as I can tell, the data is written and read back correctly.  Note that I'm not using big-endian format, unlike what you did in
https://github.com/Team-RADDISH/ParticleDA.jl/blob/ccb63ebc8794cc5a695eead3a8dda2e51db70500/speedy/model/model.jl#L531
Anyways, tomorrow we can discuss off-line to better understand what is not working for you.

Also, as a side note, the above Julia script to write data to file can be greatly simplified without using FortranFiles.jl:
v3d = randn(Float32, 2, 2, 2, 2)
v2d = randn(Float32, 2, 2, 2)
open("/tmp/foo.dat", "w") do io
    write(io, v3d)
    write(io, v2d)
end

As discussed in yesterday's meeting I am having some difficulty with implementing periodic covariance functions within the GaussianRandomFields package. My first draft of a code for generating the covariance matrix based on the geodesic distance is given here:
using LinearAlgebra, Statistics, Plots

function SphericalAngle(x::Tuple{Float64, Float64}, y::Tuple{Float64, Float64}) where d
    @inbounds λ₁, φ₁ = x
    @inbounds λ₂, φ₂ = y
    Δλ = λ₂ - λ₁  # longitude
    Δφ = φ₂ - φ₁  # latitude
    # haversine formula
    a = sin(Δφ/2)^2 + cos(φ₁)*cos(φ₂)*sin(Δλ/2)^2
    # distance
    a = 2 * ( asin( min(√a, one(a)) ))
    return a
end

function apply_spherical_periodic!(C::Matrix, x::NTuple{d,AbstractVector},
                                        y::NTuple{d,AbstractVector}) where d
    xiterator = enumerate(Iterators.product(x...))
    for (j, idy) in enumerate(Iterators.product(y...))
        for (i, idx) in Iterators.take(xiterator, j)
            z = SphericalAngle(idx, idy)
            @inbounds C[i, j] = squared_exponential(λ, z)
        end
    end
    Symmetric(C, :U)
end

function squared_exponential(λ::Real, z::Real)
    cov = exp(-(z/ λ)^2)
    return cov
end

# Setting up the coordinates
x = LinRange(0,360,96)
y = LinRange(0,180,48)
# Empty Covariance Matrix
C = zeros( prod(length, (x,y)), prod(length, (x,y)))
λ = 0.5 # correlation length λ of squared exponential covariance

C .= apply_spherical_periodic!(C, (x,y), (x,y))
# Plot
heatmap(C)

What is the best way to incorporate this covariance matrix with the GaussianRandomFields generators?
@matt-graham: If you have any other suggestions with regards to the sample code above please let me know.
Thanks

Hi @DanGiles. I've found an approach that sort of works. The idea is to write custom methods for the apply_symmetric! and apply_non_symmetric! functions which are used by GaussianRandomFields to construct the covariance matrix explicitly (which makes this applicable to I think the Cholesky, Spectral and KarhunenLoeve generators but not the CirculantEmbedding). We can replace the calculation of the difference between the two points with a call to a custom distance function which I define via a wrapper structure CustomDistanceCovarianceStructure which contains of an existing covariance structure plus singleton defining the distance function to use (@giordano might be able to advise on a better way of structuring this)
using Statistics
using GaussianRandomFields
import GaussianRandomFields: shortname, apply, apply_symmetric!, apply_non_symmetric!

abstract type Distance end

shortname(::Distance) = "custom distance"
function apply(::Distance, x::NTuple{d, Real}, y::NTuple{d, Real}) end

struct CustomDistanceCovarianceStructure{T} <: CovarianceStructure{T}
    distance::Distance
    cov::IsotropicCovarianceStructure{T}
end

apply(s::CustomDistanceCovarianceStructure, ρ::Real) = apply(s.cov, ρ)

shortname(s::CustomDistanceCovarianceStructure) = shortname(s.cov) * " on " * shortname(s.distance)

Statistics.std(c::IsotropicCovarianceStructure) = c.σ
Statistics.std(s::CustomDistanceCovarianceStructure) = Statistics.std(s.cov)
Statistics.std(f::AbstractCovarianceFunction) = Statistics.std(f.cov)

function apply_symmetric!(
    C::Matrix,
    s::CustomDistanceCovarianceStructure,
    x::NTuple{d, AbstractVector},
    y::NTuple{d, AbstractVector}
) where d
    xiterator = enumerate(Iterators.product(x...))
    for (j, idy) in enumerate(Iterators.product(y...))
        for (i, idx) in Iterators.take(xiterator, j)
            @inbounds C[i, j] = apply(s.cov, apply(s.distance, idx, idy))
        end
    end
    Symmetric(C, :U)
end

function apply_non_symmetric!(
    C::Matrix,
    s::CustomDistanceCovarianceStructure,
    x::NTuple{d, AbstractVector},
    y::NTuple{d, AbstractVector}
) where d
    xiterator = enumerate(Iterators.product(x...))
    for (j, idy) in enumerate(Iterators.product(y...))
        for (i, idx) in xiterator
            @inbounds C[i, j] = apply(s.cov, apply(s.distance, idx, idy))
        end
    end
    C
end

we can then adapt your definition of the spherical distance function as follows
struct SphericalDistance <: Distance end

shortname(::SphericalDistance) = "spherical distance"

function apply(::SphericalDistance, x::Tuple{Float64, Float64}, y::Tuple{Float64, Float64})
    @inbounds λ₁, φ₁ = x
    @inbounds λ₂, φ₂ = y
    Δλ = λ₂ - λ₁  # longitude difference
    Δφ = φ₂ - φ₁  # latitude difference
    # haversine formula
    a = sin(Δφ/2)^2 + cos(φ₁)*cos(φ₂)*sin(Δλ/2)^2
    # distance
    2 * ( asin( min(√a, one(a)) ))
end

For comparison we could also define a Euclidean distance corresponding to the existing default in the package as
struct EuclideanDistance <: Distance end
shortname(::EuclideanDistance) = "Euclidean distance"
apply(::EuclideanDistance, x::NTuple{d, Real}, y::NTuple{d, Real}) where d = norm(x .- y)

We can then construct a covariance function plus Gaussian random field using this distance function plus an isotropic covariance structure (using squared exponential here for consistency with your example) as follows
# Setting up the coordinates
longitudes = range(0, 2π, 48)
latitudes = range(0, π, 48)
λ = 1. # correlation length λ of squared exponential covariance
cov = CovarianceFunction(
    2,
    CustomDistanceCovarianceStructure(
        SphericalDistance(),
        SquaredExponential(λ)
    )
)
grf = GaussianRandomField(cov, Spectral(), longitudes, latitudes)

The definition you used for the spherical distance assumes the latitude and longitude are in radians rather than degrees so I adjusted the ranges compared to what you had. Also there seems to be a bug in the plotting code in GaussianRandomFields that means it doesn't plot fields with differing number of points along the two dimensions correctly hence I've made the resolution in the latitude and longitude directions equal here (this also seems to apply when using the inbuilt covariance structures rather than being specific to our adaptation here).
While we can generate samples from the resulting GaussianRandomField object, for example

there are a few issues:

The CirculantEmbedding generator doesn't use apply_symmetric! / apply_non_symmetric! but instead uses a lower-level apply method, so this doesn't work for that case. I'm also not sure the circulant embedding method is applicable for this case to start with as I think it assumes a stationary covariance function (which I don't think is the case with the spherical distance function)
The resulting covariance matrices seem to generally be non-positive definite (the package warns there are small negative eigenvalues though I think this could be a numerical artefact and that the matrices are instead just semi-definite), even when using a covariance structure which gives a positive definite covariance matrix with the Euclidean distance. This means the Cholesky generator doesn't work and the KarhunenLoeve generator fails if you select a number of basis functions which exceed the number of positive eigenvalues.
The sampled fields when plotted appear to be periodic along the latitude axis rather than longitude axis though I think this could be related to the bug causing the incorrect plot output with non-square grids.

The sampled fields when plotted appear to be periodic along the latitude axis rather than longitude axis though I think this could be related to the bug causing the incorrect plot output with non-square grids.

I have confirmed that the bug in the GaussianRandomField plotting code for non-square grids is the reason for this discrepancy (basically the transpose of the sampled field seems to be getting plotted), so I think the fields are being generated with the periodicity along the correct axis. I've raised an issue about this (PieterjanRobbe/GaussianRandomFields.jl/issues/41).


[ko] Translate the glossary term 'Cluster Infrastructure' into Korean

resolves #35424

Thanks !!
/approve


fix: unclosed </li>

Hi @nswbmw,
I'm very sorry I never noticed this PR. I've fixed my notifications so it won't happen again. Thanks for the effort putting this together. I'll take a look and make sure this works. Thanks!
Will


Make Error satisfy Send

When using parser-combinators with channels and threads, it is useful to be
able to send errors.  This changes Error so that it satisfies Send.

Thanks, forgot about the necessity of Send there. Will push a new version to cargo as well.


Full website

In this Milestone, I created a website consisting of 3 pages: Home, Calculator, and Quote. Using react route and style in react.

Thank you!!


Add labels support for rules

This little fun PR adds support for labels in PF rules.
Usage:
FilteRuleBuilder::default().label("😈")

PF Output:
TRANSLATION RULES:
rdr in inet proto tcp from any to <IP_ADDRESS> port = 3000 label "👉" -> <IP_ADDRESS> port 4000

FILTER RULES:
block drop inet from <IP_ADDRESS> to any
block drop inet from <IP_ADDRESS> to any port = 80 label "👮♀🚨🚓"

This change is

Nice. Can be useful. When the number of rules grow it becomes harder to understand what is what :)

Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


ESMValTool and observational (OBS) data uncertainties

This is a broad issue (and not even an issue per se) - and pretty skinny at the moment, since it contains just a shout out - we should start thinking about implementing the use of OBS data uncertainties in dedicated diagnostics, but before that we should probably ask ourselves if there are already any functions that deal with this. We will have a discussion about this at the UKESM retreat (November 11-12, 2019) and I will post whatever useful conclusions we get to. In the meantime, can people add anything to this if relevant functionality is planned/already exists pls? Another aspect would be to start thinking what sort of preprocessor functions we'd need to write to support various stats for OBS's :beer:
@ESMValGroup/esmvaltool-developmentteam

I also raised this at the ESA CCI CMUG integrration meeting. A lot of obs data doesn't include uncertainties and how these uncertainties are propagated when averaging or regridding needs a lot of care and expertise from the data providers.
As a starting point, if Obs4MIP data contains an estimate of uncertainties then ESMValTool should at least be able to utilise them but this is a very complex issue and probably not just something that can be easily integrated generically into the code.
It'd be useful to collect whatever thoughts/plans that ESA and CMUG might have in this area for ESMValTool.

We should also be aware of the place this kind of data has in the current and upcoming standards.
For example, in CF there is ancillary data for this purpose (see also CF appendix C).
There was a discussion of some ESMValTool implications about that also on the iris mailing list recently.
As for the state of support for ancillary variables in Iris, I give SciTools/iris#3483 as an entry point.
It is an area of rather active development and it seems Iris 3.0.0 will offer good support.

@rjp23 would you be ok to upload your presentation from yesterday's retreat session? That'd be great, it was very informative to me :beer:

Rob @rjp23 did you have a chance to plop them slides here, pls :beer:


Store password as hash in .env

Storing the password as plain is horrible.

I just removed the hashPassword function in this line and used the hash directly as password:
https://github.com/mtrossbach/noah-mqtt/blob/main/internal/growatt/client.go#L42

While using the hashed password works in specific cases, it's not a sustainable solution for all users due to the complexities of Growatt's password hashing. Their non-standard and region-specific algorithm makes it difficult for most users to maintain them correctly if Growatt decides to change it (again).
Providing a way for users to hash their passwords would be ideal, but requires further investigation into Growatt's hashing methods for each region and API version.


dvc: random order in html

If I regenerate html periodically during the training I'm getting random order of the plots.
The order should be stable and ideally, the same as the reporting order and metrics diff output order.

We tried to reproduce this, so far with no result. Keeping open, maybe someone will stumble upon that and we will be able to reproduce.

I was able to reproduce the bug. It's more on the DVC side as it is related to how plots_data is collected with fs.walk.


How to limit returning results when using find_all_by_secondary_index?

Tried to look up the docs for something that caps returning records when quering by a secondary index. found nothing!
Any advice?

I think, look for eval_limit in the Readme (recently updated!)


readme: point service links to readme intro docs

Fixes #637
This changes the heading links to point to the local README sections for those services.
Also, changed Pub/Sub (Alpha) to Pub/Sub (Beta).

LGTM


Example script for computing  n-novelty?

This looks like a very promising project! Thanks for making it available.
Is there an example script to compute the n-novelty for some document  wrt to a corpus (as done in the paper)? I've been able to construct and load the CDAWG of the corpus, but I'm still trying to figure out how to use it to compute n-novelty.

Glad to hear you've found the CDAWG useful!
I've actually split a lot of the experimental code for the paper in a separate repo  which uses Rusty-DAWG as a dependency (I should update the paper to make this clear).
Specifically, you can compute n-novelty from the output of Rusty-DAWG in the get_proportion_unique using the method here. The method expects a list of lists of suffix lengths (returned by Rusty-DAWG), and gives back two arrays: an array of n-gram sizes, and an array of corresponding novelty values in [0, 1] for each size.


Mangohud not worked

Describe the bug
Mangohud does not work in Intel + NVIDIA configuration.
Steps To Reproduce
Steps to reproduce the behavior:

environment.systemPackages = with pkgs; [ mangohud ];
mangohud {glxgears,vkcube}

Expected behavior
MANGOHUD: Failed to open 64bit libXNVCtrl.so.0: libXNVCtrl.so.0: cannot open shared object file: No such file or directory
MANGOHUD: XNVCtrl loader failed to load
Screenshots

Additional context
I think this is due to my iron laptop Intel + Nvidia
Notify maintainers
@ZerataX
Metadata
λ ~ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 5.13.10-xanmod1-cacule, NixOS, 21.11 (Porcupine)`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.4pre20210802_47e96bb`
 - nixpkgs: `/nix/store/1inzjq0zh5qrl0196qxicl0j83fia916-source`

Maintainer information:
attribute: mangohud

My notebook

xsever.videoDrivers = [ "nvidia" ];
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 5500 (rev 09)
Subsystem: ASUSTeK Computer Inc. Device 10d0
Kernel driver in use: i915
Kernel modules: i915
04:00.0 3D controller: NVIDIA Corporation GK208BM [GeForce 920M] (rev a1)
Subsystem: ASUSTeK Computer Inc. Device 105e
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia

Hmm, that's strange. I added addOpenGLRunpath.driverLink to LD_LIBRARY_PATH in #127469 to support Nvidia cards. The way this library is loaded is impure though, and depends on how your system is set up.
Do you see libXNVCtrl.so.0 under /run/opengl-driver/lib?
@ZerataX Is MangoHud still working on your computer with the Nvidia card?

Oh, I also noticed, you might be using a channel that doesn't have the latest version. This was fixed in v0.6.3. Maybe this fix should be backported.

libXNVCtrl.so.0

ls: cannot access '/run/opengl-driver-32/lib/libXNVCtrl.so.0': No such file or directory
λ ~ ls /run/opengl-driver/lib/libXNVCtrl.so.0
ls: cannot access '/run/opengl-driver/lib/libXNVCtrl.so.0': No such file or directory
λ ~

@kira-bruneau What does it mean?

Well, then now I understand this error. But I do not understand why there is no biblet

@kira-bruneau

 mhmm on nixos 21.05 with mangohud from unstable i get:

system: "x86_64-linux"
host os: Linux 5.10.57, NixOS, 21.05.2521.7bbca9877ca (Okapi)
multi-user?: yes
sandbox: yes
version: nix-env (Nix) 2.3.15
channels(root): "nixos-21.05.2521.7bbca9877ca, nixos-hardware, nixos-unstable-21.11pre309670.253aecf69ed"
channels(kaine): "home-manager-21.05"
nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

vkcube: /nix/store/gk42f59363p82rg2wv2mfy71jn5w4q4c-glibc-2.32-48/lib/libc.so.6: version `GLIBC_2.33' not found (required by /nix/store/ag4r80ffsdmq08ngvsbw4kz18kzxbvr4-mangohud-0.6.5/lib/mangohud/libMangoHud.so)
vkcube: /nix/store/gk42f59363p82rg2wv2mfy71jn5w4q4c-glibc-2.32-48/lib/libc.so.6: version `GLIBC_2.33' not found (required by /nix/store/lg104nh0szci8slz5z6494m457jm5y3p-gcc-10.3.0-lib/lib/libstdc++.so.6)

and I can't get a display manager to run on nixos-unstable :/
also libXNVCtrl.so.0 is for me also not on /run/opengl-driver/lib
@dan4ik605743 what does your mangohud config look like? i am a little bit surprised to see the mangohud window anyways, even if it is empty

@ZerataX Is MangoHud still working on your computer with the Nvidia card?
It works for me, on a nvidia-intel prime setup, although the library is also not in /run/opengl-drivers/lib 🤔

@ZerataX Is MangoHud still working on your computer with the Nvidia card?

It works for me, on a nvidia-intel prime setup, although the library is also not in /run/opengl-drivers/lib

################### File Generated by GOverlay ###################
#fps_limit=
toggle_fps_limit=F1
vsync=1
gl_vsync=0
legacy_layout=false
gpu_stats
gpu_temp
gpu_load_change
gpu_load_value=50,90
gpu_load_color=FFFFFF,FF7800,CC0000
gpu_text=GPU
cpu_stats
cpu_temp
cpu_load_change
core_load_change
cpu_load_value=50,90
cpu_load_color=FFFFFF,FF7800,CC0000
cpu_color=2e97cb
cpu_text=CPU
io_color=a491d3
swap
vram
vram_color=ad64c1
ram
ram_color=c26693
fps
engine_color=eb5b5b
gpu_color=2e9762
wine_color=eb5b5b
frame_timing=1
frametime_color=00ff00
media_player_color=ffffff
background_alpha=0.4
font_size=24
background_color=020202
position=top-left
text_color=ffffff
toggle_hud=Shift_R+F12
toggle_logging=Shift_L+F2
output_folder=/home/uncouteau
media_player_name=spotify

@ZerataX Is MangoHud still working on your computer with the Nvidia card?

It works for me, on a nvidia-intel prime setup, although the library is also not in /run/opengl-drivers/lib

And how can I be ... okay now I will try to lower the package version.

I don't even know what to think and what to five.

I don't even know what to think and what to five.

Apparently Mangohud is not where it does not work with my laptop characteristic


Logging: Calling "Catalog Browser" creates 2 MB log

Bug Report
Describe the Bug
When opening the "Catalog Browser" 2 MBs of logs are created. Log level is debug, but we can optimize here.
Expected Behavior
The application should not log so extensive. In our azure environment we have to pay for the service "Log Analytics" which saves all logs.
Observed Behavior

TokenizedAsset does not contain @id

summarize this warning like 40 TokenizedAsset does not contain @id

TokenziedAsset test-document-134 does not contain @context - Skipping

summarize this warning: following TokenziedAssets does not contain @context - Skipping: {list of ids}

TokenizedPolicyDefinition is null or does not contain @id

summarize to: {count} TokenizedPolicyDefinition is null or does not contain @id

fetching contract 109

set this to loglevel DEBUG

Not able to find the Asset with id test-document-9 or policy with id d5f0472b-660d-4a16-b4bd-a426a652a7b5 for the contract 129

@JulianLegler is this really SEVERE in our scenario? Or can we summarize it without the detail infos (IDs)?

if not already possible: give the possibility to adjust the log level with ENV-Variable.

Steps to Reproduce
Steps to reproduce the behavior:
Open the Catalog Browser and view the logs.
Context Information
Detailed Description
Possible Implementation

I will start to investigate on the topic adjustment of loglevel.

@JulianLegler FYI. Please give me some feedback to the proposals.

Yes I guess we can cut down a lot of these messages or omit them completely.
Background
Currently, the EDC is fetching all existing tokens  (Contracts, Assets, Policies) from the blockchain and then tries to "rebuild" the edc contracts from these data internally to provide the Catalog. During this process, all assets and policies will be parsed and checked against the contract tokens if they build together a valid edc contract. So these log messages basically reflect exact this step. And as we are extensively testing and developing lately, staying with the same blockchain address, these blockchain contracts are now filled with tokens resulting in this extensive logging. Also, as there are old versions of tokens in these blockchain contracts, they result in errors like the above-mentioned, as they don't fulfill the new mandatory fields.
Internally are we currently working on a new way to achieve this matching without this extensive comparison of all existing tokens. Until this work is finished, we could easily just, as you suggested, set the logging level for these to something very low and then raise the monitor log level at which these events are actually logged. The latter should also be possible using environment parameters.

Thanks Julian,
I was trying to adjust the loglevel with ENV variables but this seems not to work out.
I am testing the documented way now: https://github.com/eclipse-edc/Connector/tree/main/extensions/common/monitor/monitor-jdk-logger
--> adding logging.properties.
If this will be successful, i would just push it into the existing branch of the blockchain-catalog. If you prefer a separate branch let me know.

Bad news. Adding logging.properties and -Djava.util.logging.config.file=logging.properties didn't have any effect. Still debug logs in the log.

Managed to configure the debug level with logging.properties (https://github.com/eclipse-edc/Connector/tree/main/extensions/common/monitor/monitor-jdk-logger)
fetching contract 109
loglevel is debug now
TokenizedAsset does not contain @id
loglevel is debug now
TokenziedAsset test-document-134 does not contain @context - Skipping
loglevel is debug now
TokenizedPolicyDefinition is null or does not contain @id
loglevel is debug now
Not able to find the Asset with id test-document-9 or policy with id d5f0472b-660d-4a16-b4bd-a426a652a7b5 for the contract 129
loglevel is debug now

@JulianLegler
Not sure if you want to also put the logging.properties to your launcher. If yes, just copy the approach in the dockerfile. Make sure you are calling the build with the correct build context which is edc-blockchain-broker\EDC-Blockchain-Catalog (and not the path of the Dockerfile).
I will create the PR tomorrow after my tests.

PRs:
https://github.com/GAIA-X4PLC-AAD/edc-blockchain-broker/pull/5
https://github.com/GAIA-X4PLC-AAD/EDC-Blockchain-Catalog/pull/12

PR merged, close ticket


Using Nlog variable to declare CsvLayout

Hi,
I've a Csv template:
 <layout xsi:type="CSVLayout" delimiter="Tab">
        <column name="date" layout="${dateLayout}" />
        <column name="time" layout="${timeLayout}" />
        <column name="level" layout="${level}"/>
        <column name="Category" layout="${event-context:item=Category}"/>
        <column name="Message" layout="${message}" />
        <column name="Value" layout="${event-context:item=Value}"/>
        <column name="exception" layout="${exception_inline}" />
        <column name="logger" layout="${logger}"/>
      </layout>

I would like to know if its possible to use a <variable ... /> syntax to declare it and use it for several targets without redeclaring it.
Thanks the incoming help.
Sincerely

Hi,
With the <variable ... /> you can reuse the content of a layout attribute. The <variable ... /> can be used in multiple targets.

Could you give me the valid syntax to put my layout into a variable ?
Thanks for the help!

https://github.com/nlog/nlog/wiki/Configuration-file#variables

So could I do this :
  <variable name="csvLayout">
<layout xsi:type="CSVLayout" delimiter="Tab">
        <column name="date" layout="${dateLayout}" />
        <column name="time" layout="${timeLayout}" />
        <column name="level" layout="${level}"/>
        <column name="Category" layout="${event-context:item=Category}"/>
        <column name="Message" layout="${message}" />
        <column name="Value" layout="${event-context:item=Value}"/>
        <column name="exception" layout="${exception_inline}" />
        <column name="logger" layout="${logger}"/>
      </layout>
<value>
</value
</variable

And then use the variable as layout ?

I misunderstood your question. Your example probably won't gonna work. This is not supported.
I would advice to use the api or T4 templates to do this.

Oh that's unfortunately :(
Thanks for the answer!

#3459 adds support for having complex layout-types like CSVLayout inside NLog-varaibles