Error log in improve run need to be investigated

Error while fetching<EMAIL_ADDRESS>410
NoneType: None
error while fetching version info for helm.sh/helm/v3/v3.0.0-beta.1 from goproxy
Error while fetching<EMAIL_ADDRESS>410
NoneType: None
error while fetching version info for helm.sh/helm/v3/v3.0.0-beta.2 from goproxy
Error while fetching<EMAIL_ADDRESS>410
NoneType: None
error while fetching version info for helm.sh/helm/v3/v3.0.0-alpha.2 from goproxy
Error while fetching<EMAIL_ADDRESS>410
NoneType: None
error while fetching version info for helm.sh/helm/v3/v3.0.0-beta.3 from goproxy
Error while fetching<EMAIL_ADDRESS>410
NoneType: None
error while fetching version info for helm.sh/helm/v3/v3.0.0-alpha.1 from goproxy

Inconsistent summary for <Vulnerability: VULCOID-8567e659-5e4b-451f-9471-c20ad183f318>. Existing: None, provided: Cross-site Scripting i
n Django
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 174, in _new_conn
    conn = connection.create_connection(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/connection.py", line 95, in create_connection
    raise err
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/connection.py", line 85, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 386, in _make_request
    self._validate_conn(conn)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 1040, in _validate_conn
    conn.connect()
  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 358, in connect
    self.sock = conn = self._new_conn()
  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 186, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7fbe2cf435b0>: Failed to establish a new connection: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 440, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 785, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 592, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='proxy.golang.org', port=443): Max retries exceeded with url: /golang.org/x/crypto/@v/list (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fbe2cf435b0>: Failed to establish a new connection: [Errno 111] Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/vulnerabilities/package_managers_2.py", line 36, in get_response
    resp = requests.get(url=url)
  File "/usr/local/lib/python3.9/site-packages/requests/api.py", line 75, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 529, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 645, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 519, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='proxy.golang.org', port=443): Max retries exceeded with url: /golang.org/x/crypto/@v/list (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fbe2cf435b0>: Failed to establish a new connection: [Errno 111] Connection refused'))

This may be in part related to https://nvd.nist.gov/vuln/detail/CVE-2022-22818 but I cannot fathom why we call on Go?


Fix android Base64 decoding

.toString() requires a charset to be be specified else it just returns the object ID.
Without this fix the addPass method will always result in INVALID_JSON.

Thanks for fix


Move to JuliaML or JuliaAI

It would be great to move this repo to JuliaML or JuliaAI for support from those folks.

Welcome!

Thanks!


routing+channeldb: create new sub-system to keep track of "fitness" of various nodes

Throughout the operation of lnd, we indirectly and directly interact with various nodes within the network. It may be that we see a new NodeAnnouncement for a node, successfully route a payment where the node was a vertex traversed, receive an HTLC routing failure from that node, or need to force close a channel due to a node being inactive. This is all very valuable information that currently isn't being persistently tracked at all. If we start to collate this information persistently, we can begin to use it in several sub-systems within the daemon. For example, within the autopilot subsystem, we can use this information to weed out a node as it's been known to be unreliable historically. Another example for usage lies in the interaction with the missionControl sub-system: we can preemptively black list any path that includes known historically faulty vertexes.
Steps To Completion

[ ] Create a new NodeHistory sub-bucket within the current channeldb package. Starting points for desirable metrics to track include:

first time a node was seen
last time a node was seen
number of times they were included within an attempted route
number of times a route they were involved w/ was successfully settled
number of times a route they were involved w/ was cancelled back (can be more granular: sent error or was source of error)
number of times a route they were involved w/ had to timeout
number of times we had to force close a channel w/ the node due to inactivity
number of times the node incurred a protocol violation (invalid commit or the like)
largest number of channels closed in single or consecutive blocks by the node
number of attempted breaches
number of successful breaches
frequency of channel turn over (are channels opened, then closed only a few blocks after wards?)

[ ] Due the that nature of each of the fields, we'll likely want to adopt a sort of "columnar" schema within the database. This can be implemented by using key || nodeID prefixes. This schema will allow for efficient queries/scans as all the data will be laid out contiguously. Metrics for a particular node can still be obtained by fully populating the two-tuple key.

[ ] Start to populate/integrate incrementing counters for the various metrics in the ChannelRouter as well as within missionControl. For example, each successful/failed payment should trigger an update (or several updates) to the NodeHistory database.

[ ] As a bonus, we can start to proactively probe nodes within the missionControl sub-system by using specially crafted HTLCs. If we find a node that we want to update our statistics for, we'll locate the smallest possible HTLC that all nodes in paths to that node will accept. We'll then create an HTLC with this value, but use some random unknown payment hash to the node. If the node is online, then they should cancel back with an UnknownPayment hash error. Otherwise, we'll get various other types of errors back.

[ ] Create a set of RPCs to allow users/UIs/monitoring tools to query (and possibly manually update) these metrics.

The approach described in this issue is to start with (persistently) tracking various metrics and from there start to use those metrics to improve autopilot and routing behaviour.
I find it difficult to define the metrics without yet knowing what exactly is needed.
How would this work if the process was turned around? Start with trying to come up with the metrics that could improve routing and/or autopilot, create an in-memory implementation first to validate that the behaviour indeed improves and only then move on to database schemes.
Looking just at routing, there are already some metrics being tracked in memory. There are black lists for nodes and channels with decay periods and there is a "second chance" after the first failure. Pull request #1734 contains some thoughts about how to extend this to sets of channels.
An idea is to try to unify all this using the following mechanism: Expose for every node and channel a "success chance" to the path finding algorithm. For a successful payment, none of the nodes and channels should fail. The success chance for a payment is the multiplication of all the success chances of nodes and channels along the path. This could be factored into the edge weight function, so that routing does not only take into account fee and timelock, but success chance as well. A trade off needs to be set here.
Then there needs to be a unit to provide those chances. First step could be to rewrite the current black list logic as a "success chances provider". The second attempt mechanism can be incorporated into this unit and also the time decay can be translated into a success chance that slowly recovers. This first step alone might already bring up some interesting questions.
Looking at how to extend this, a further step could be to keep track of the success chance for unknown nodes and channels. This is the base chance when no other information is available.
Next, based on successes or failures, the chance may be adjusted upward or downward. As time passes, the chance slowly moves back to the base chance.
Interesting here is how to deal with timeouts. It can take a long time before a htlc times out, but already one minute after no response has been received, you may want to starting lowering the success chance of that node or channel.
Another aspect that could be a factor in calculating the success chance is payment amount and payment amount in relation to total capacity.
It may require quite some experimentation (or even simulation) to get this right. At that point, it will also be clear what kind of information needs to be tracked. A subsequent step is to save this information in the db. Maybe it will result in more or less the same metrics as suggested in the description of this issue, but at least then you already know exactly why you need those metrics.


William/look ahead design changes

Is it for readability or did you add something that would break the code without the .data?

The latter; The Menu struct is now a container for what used to be menu dictionaries.


Mention notify_expectation_failures in custom matcher docs

I defined a custom matcher that defined some expect(...).to ... expectations inside the #match block. I got one of these expectations to fail, and then was stumped as to why the file and line number of this failure didn't appear in the backtrace. Then I stumbled across the notify_expectation_failures option for #match, and realized that I needed to set it to true to get the failure to appear in the backtrace.
I think this would be good to mention in the relishapp documentation? It's currently mentioned in the API documentation, which is good, but I feel this documentation a little more obscure.

The feature failure with older Rubies appears to be due to a slightly different backtrace format.
See features/aggregating_failures.feature for an example on how to deal with this.
Alternatively, it is fine to just skip running this feature on older Rubies (1.8.7) (see cucumber.yml for an example of excluding 1.9).

Installing 1.8.7 nowdays is challenging. I hope this helps https://github.com/rbenv/homebrew-tap

I've found that I have another problem if I get past the bundler version problem. The gemspec file has a manifest argument which is not compatible with the version of bundler that I can use with ruby 1.8.7 (bundler version 1.*). And if I comment out this repo's manifest block, it hits an error with the manifest block of rspec-support.

gemspec file has a manifest argument

Sorry, I can't find this manifest. Can you point it out?
For rspec-support, you can check out its repo next to rspec-expectation, and the Gemfile will pick it up.

Apologies, I misspoke, it was metadata. In any case, I'm not sure what I was doing (24 hours ago) when I hit this problem. I found this very simple approach works:

Run the docker container as mentioned above.
gem install bundler -v 1.17.3
mv Gemfile.lock Gemfile.lock.backup (because it wants bundler version 2.3.8).
script/legacy_setup.sh
bundle exec cucumber features/custom_matchers/define_matcher.feature:458

And this works -- now I can reproduce the error from CI. So I'll keep working on this 🔨

@pirj Glad to have figured it out, thank you for the help!
Regarding be_close_to_pi, I noticed that the error message printed one less digit on ruby 1.8.7. And so I thought that even though the fuzzy matching of the the output should contain all of these step could handle this difference, I'd rather not burden future maintainers with this potentially tricky situation.

Thank you for your contribution, @johnnymo87 !


Update .git-blame-ignore-revs

Hi @owenvallis I thought the previous commit wouldn't be squashed but because it was we need to update the commit for git ignore to ignore

Thanks for catching this.


Documentation Updated

Solved issue no. #11

Thanks for your valuable contribution.
Don't forget to star this repo.


run_with_tb - not runner on Windows

No exec script/runner.bat... :infinity: running.
Also, the issue hasn't fixed:

https://github.com/tigerbeetledb/tigerbeetle/issues/794

Related by:

https://github.com/kassane/tb-client-cpp/pull/6#issuecomment-1565555046

Dropped on upstream

https://github.com/tigerbeetle/tigerbeetle/pull/1418


EMMG/PDG <->MUX and datainject plugin

Hi Thierry,
TSduck is a great contribution to the open source community.
I'm using tsduck for CAS end-to-end validation.
I have sample.ts transport stream in which I'm trying to insert ECM and scramble the stream and parallelly insert Private Data into the stream (NOTE : EMM not required in my case).
To insert ECM , tsecmg utility being used and similarly for Private Data  tsmmg being used with data inject plugin.
Commands as follows:
terminal 1:
tsecmg -v
terminal 2:
tsp -m -v -I file sample.ts -P scrambler HDPVR\Capture --ecmg localhost:2222 --super-cas-id 0x4ad40000 --log-protocol=verbose -P datainject -r -s localhost:3333 -u localhost:3333 -p 0x1000 -O file test.ts
terminal 3:
tsemmg -v --mux localhost:3333 -u localhost:3333 --log-protocol=info --log-data=debug
ECMG able to insert packets into the stream but I'm facing some issues with Private data part insertion.
As per my understanding, private data is a part of CA descriptor in PMT. PDG should generate and datainject suppose to update PMT with private data according to CA_system_id and ECM_pid.
So, the question is , In TSDUCK whether EMMG/PDG able to generate Private data and parallelly data inject plugin, Is it able to update the PMT with the same?
Regards,
Arvind

PDG should generate and datainject suppose to update PMT with private data according to CA_system_id and ECM_pid.

Not at all. A CA_descriptor in the PMT is used to signal an ECM PID only. ECM's are inserted by the scrambler plugin. So, this plugin adds the CA_descriptor in the PMT. ECM's are related to a service. This is why they are signaled in the PMT of this service.
The EMMG/PDG, on the other hand, generates global data, unrelated to any service. So, there is no point signaling the inserted data in any PMT. If the data are EMM's, then the corresponding PID is signaled in a CA_descriptor in the CAT (which is a global table, not bound to any service). See the TSDuck user's guide section 5.2.19 for a CAS example. The cat plugin is used just before the datainject plugin to add the CA_descriptor in the CAT.
If the PDG is used to insert private data, not EMM's, then the PID shall probably be signaled through some private mechanism. But not a CAT.
If the PDG generates private data which are somehow related to one single service, you may want to reference this PID in the PMT of the service. But not in a CA_descriptor. It is reserved for ECM's. In the case of a private data PID in a service, you must add this PID as a component of the service. Important: never reference a PID into a private descriptor, this would not be resistant to PID remapping.
Remember:

ECM = service-specific data => CA_descriptor in PMT of this service
EMM = global data => CA_descriptor in TS-wide CAT

That being said, I suppose that this configuration is just for educational purpose. Because using tsecmg/tsmmeg and also tsp -P scrambler ... -P datainject ... makes a completely fake system. In reality, you may want to test a CAS (and you use a real ECMG/ECMG and tsp as test tool) or you want to test a MUX (and you use tsecmg/tsmmeg as test tools and a real MUX).

Hi Thierry,
Thanks for detailed response.
We are developing ECMG and PDG. We have taken TSDuck's ECMG and EMMG as references.
Using our ECMG, we are able to generate an ECM and insert into the TS using the scrambler plugin.
The private data which we are generating is specific to the service and has to be put into PMT as a descriptor. However, when using our PDG, we see that the data is generated properly, but it is not getting inserted into the PMT as a descriptor.
Also, we found that we have to use "-s" to include the data as a section and "-t 1" to consider the data as private data. Accordingly, we have updated our terminal 3 command as follows:
tsemmg -v -s -t 1 --mux localhost:3333 -u localhost:3333 --log-protocol=info --log-data=debug
However, when we specify PMT PID in datainject plugin, it throws the following error:
Error: datainject: data PID conflict, specified 4096 (0x1000), now found as input PID, try another one
If we use a different PID, then the data is getting inserted into a separate table, not into the PMT which we need. Also, tstables shows the data as EMM and not as private data.
How to resolve this conflict? Is there any way to indicate that the private data generated should be inserted as part of an existing PMT?
Regards
Arvind

We are developing ECMG and PDG. We have taken TSDuck's ECMG and EMMG as references.

Take care. tsecmg and tsemmg are simple test tools. I have already developed a real ECMG years ago and the architecture was quite different. A robust production-grade ECMG shall handle situations which are not implemented in tsecmg. Typically, the simple one-client / synchronous dialog which is implemented in tsecmg is not sufficient. For instance, the ECMG shall process any unsollicited status request at any time which must be handled differently as expected responses. The real ECMG I developed included multi-client support, full asynchronous design (using a "reactor" design pattern), load management, timeout management, status / keep-alive handling, etc.

The private data which we are generating is specific to the service and has to be put into PMT as a descriptor. However, when using our PDG, we see that the data is generated properly, but it is not getting inserted into the PMT as a descriptor.

I suspect a misunderstanding here. What does your PDG generate?

A stream of sections to be inserted in a dedicated PID (ie. the PID contains exactly what you are inserting, nothing less, nothing more). And you want to reference this PID (its PID number) in the PMT.
Some data which are descriptors to be inserted in the PMT.

The EMMG/PDG <=> MUX interface is designed for the first case. The second case is meaningless.

However, when we specify PMT PID in datainject plugin, it throws the following error:

Because you ask the plugin to create the entire content of the PID with the injected data. And since this is the PMT PID, the PID already exists.

Hi Thierry,
Thanks for prompt response.

I suspect a misunderstanding here. What does your PDG generate?

Some data which are descriptors to be inserted in the PMT.
Our PDG generates private data which is a part of CA_descriptor in PMT.
CA_descriptor has format tag/tag_length/CA system id/CA pid/private_data
We need to put private data into PMT's CA_decriptor.
Is there any way to indicate that the private data generated should be inserted/updated as part of an existing PMT's CA_decriptor?
The EMMG/PDG <=> MUX interface is designed for the first case. The second case is meaningless.
Is there any way around or TSDuck plugin to generate private data and insert it into PMT's CA_decriptor?

Regards
Arvind

OK, so I see where the misunderstanding is. A PDG (in the sense of DVB SimulCrypt) is designed to generate a stream of data, meaning the complete content of a dedicated PID, typically sections but in fact whatever you want if you work in packet mode. A PDG cannot generate private data for a CA descriptor in a PMT. This is not a limitation of TSDuck; this is simply incompatible with the DVB SimulCrypt head-end architecture (see ETSI TS 103 197).
To insert private data in the CA descriptor for your ECM PID, use option --private-data in the scrambler plugin.
But note that these private data must be mostly static. They cannot change too often. Each time you change them, you must generate a new PMT, cycling the version number, etc. Typically, changing the CA_descriptor private data either occurs ahead of access criteria transition or simply never occurs. See annex G in ETSI TS 103 197. If you want to change the private data of the CA descriptor too often, then you probably have a system design issue.

Hi Thierry,
Thank you so much for the clarification.
In ETSI TS 103 197 V1.5.1 section 4.3.3 PDG ⇔ MUX, it is mentioned as below:

The interface is identical to the EMMG ⇔ MUX interface and may be used for providing CA related private data to the MUX for insertion in the transport stream. This interface is optional; if implemented it shall be implemented as per the EMMG ⇔ MUX interface

Our understanding is CA related private data is of PMT's CA descriptor. Are we missing anything?
If we use "-s" and "-t 1" as options with the tsemmg plugin, it will generate sections.
Can't we insert these sections in existing PMT instead of specifying new PID?
Regards
Arvind

Our understanding is CA related private data is of PMT's CA descriptor. Are we missing anything?

In general, a CA system may generate a lot of different forms of private data. The private data in the CA descriptor is just one form of private data. But this kind of data cannot be inserted using the EMMG/PDG <=> MUX interface. The PDG, in the sense of DVB SimulCrypt, can only insert a complete PID of private sections, typically EMM's which are different forms of CA private data.
In fact, this interface was primarily designed to inject EMM's. But, unlike the ECMG <=> SCS interface which is very specific to ECM insertion, the EMMG <=> MUX interface happened to have nothing specific to EMM's. So, it was somewhat useful to declare it more generic as Private Data Generator in case someone would like to insert application-specific data such as HbbTV or DSM-CC carousel.

If we use "-s" and "-t 1" as options with the tsemmg plugin, it will generate sections. Can't we insert these sections in existing PMT instead of specifying new PID?

Don't try to use tsemmg to do what you want. You went too far the wrong way in your analysis. You need to step back and reconsider your design.
First question: Are your private data really associated to an ECM stream?

If yes, go on.
If no, your system design is wrong and reconsider it.

Second question is: Are your private data static? Meaning do you want to insert the same binary blob all the time in the CA_descriptor for a given ECM stream?

If yes, use option --private-data in scrambler plugin.
If no, your system design is wrong and reconsider it.


Issue when using send-deso post

I get the following error per subject reference: 'error': 'SubmitTransactionRequest: Problem deserializing transaction from bytes: MsgDeSoTxn.FromBytes: Problem reading txn: : ReadTransaction: Problem reading extra transaction fields: ReadTransactionV1Fields: Problem parsing DeSoTxn.TxnNonce bytes: binary: varint overflows a 64-bit integer'
Views? could it be update to sign method

Faced the above error as well as below error.
{'error': 'SubmitTransaction: Problem processing transaction: VerifyAndBroadcastTransaction: Problem validating txn: ValidateTransaction: Problem validating transaction: : ConnectTransaction: : _connectSubmitPost: : _connectBasicTransferWithExtraSpend Problem verifying txn signature: : _verifySignature: Transaction signature is empty'}
Letting others know that updating to latest code solves this issue.

i have also faced this a few time. i guess this is more of a issue with deso's API? sometimes it works sometimes it does not


Dupe Exploit

Expected behavior
shulker should be paid for and deducted from shop inventory
Observed/Actual behavior
it stayed there resulting in a dupe
Steps/models to reproduce
make tradeshop
put shulker in
buy from tradeshop
Plugin list
BanAnnouncer, BetterRTP, ChatSentry, Chunky, ChunkyBorder, CoreProtect, DiscordSRV, EntityDetection, Essentials, EssentialsAntiBuild, EssentialsProtect, EssentialsSpawn, GSit, GSit-Addon, Geyser-Spigot, Graves, HolographicDisplays, InventoryRollbackPlus, LPC, LiteBans, LuckPerms, PL-Hide-Pro, PlaceholderAPI, Plan, PremiumVanish, ProtocolLib, RealisticSeasons, ServerUtils, Spicord, TAB, TradeShop, VanillaTweaks, Vault, Vulcan, WorldEdit, dynmap, eGlow, floodgate, spark and voicechat
TradeShop version and Minecraft version (CraftBukkit/Spigot/Paper/...)
tradeshop-2.3.1-STABLE-2021-09-09T15.04.37.jar
[22:50:47 INFO]: Previous version: git-Purpur-1406 (MC: 1.17.1)
Agreements

[X] I have searched for and ensured there isn't already an open issue regarding this.
[X] My version of Minecraft and TradeShop are supported by the TradeShop Dev Team (when in doubt, first ask on the Discord).

Other
bruh its a dupe

Fixed in #111

Thank you for fixing this! Thankfully it was not heavily exploited on my server, if at all.


⚠ Redacted has degraded performance

In e8d721a, Redacted ($RED) experienced degraded performance:

HTTP code: 502
Response time: 1737 ms

Resolved: Redacted performance has improved in 17be7d2 after 15 minutes.


improvement log desensitization without displaying user info

Proposed changes
redirect will record user name and password in log.For example:
redirect url: http://test%40default_cluster:123456@<IP_ADDRESS>:8030/api/db/lineitem/_stream_load?

This pr is is to desensitize logs without displaying username and password.For example:
Redirect url: http://<IP_ADDRESS>:8030/api/db/lineitem/_stream_load

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall


Automatically delete old GCP Artifact Registry Storage test images

Motivation
They are costing us a bit, and it's increasing every month.
We want to keep them around long enough so that PRs that are still on the same commit can be re-run with the same image.
Designs
Delete test images from GCP Artifact Registry Storage after 3 weeks.
(Most PRs get updated every few days, and merge within 1-2 weeks.)

Hey team! Please add your planning poker estimate with Zenhub @arya2 @conradoplg @dconnolly @gustavovalverde @oxarbitrage @teor2345 @upbqdn

@mpguerra as I'm finishing this one. I'd prefer to have it in this sprint.


AssemblerError: Could not find the library: ../../src/utils.s from the relative path from the file.

I am trying to use this debugger for the following working code with .import using relative path:
https://github.com/chakpongchung/cs61c-1/blob/master/proj2/tests/assembly/test_argmax.s
but I see the following error:
AssemblerError: Could not find the library: ../../src/utils.s from the relative path from the file. Parent file not found! This library was imported by Import(path=/home/tom/Dropbox/leetcode/python/su20-proj2-starter/tests/assembly/test_argmax.s, relative=false).

Hello @chakpongchung, thanks for the issue.
Our current Version published on the Marketplace doesn't support imports/Multifile yet. This is because, like also mentioned here #62 our imports are not that much tested. Because the extension is actively used at our Univesity during the semester/term, also for graded assignments, we decided not to update during the semester.
Unfortunately the vscode marketplace doesn't allow for beta releases :( If you need imports right now your options would be:

Clone this repository and build the extension yourself.
Wait for the next release.

The current Semester is almost over so we might release the update soon. I will post here again when i know more.

@m1n1 Thanks! looking forward to it!

Hello @chakpongchung, thanks for the issue.
Our current Version published on the Marketplace doesn't support imports/Multifile yet. This is because, like also mentioned here #62 our imports are not that much tested. Because the extension is actively used at our Univesity during the semester/term, also for graded assignments, we decided not to update during the semester.
Unfortunately the vscode marketplace doesn't allow for beta releases :( If you need imports right now your options would be:

Clone this repository and build the extension yourself.
Wait for the next release.

The current Semester is almost over so we might release the update soon. I will post here again when i know more.

Hello, I'm also using this extension debuging my CS61C project, and multi file support is needed for the project, but sadly I don't have experience on developing vscode extenstions, is there a tutorial or guide I can refer to on building this extenstion locally?thanks very much.

Hello @chakpongchung and @PointBreaker i just released v1.6.0, which includes multifile/import support. Relative imports should work for both Linux and Windows (and MacOS although untested) and there is also support for absolute imports on Linux.
Note that other file operations are NOT supported, like reading and writing to files from an assembly programm! So not all examples from https://github.com/chakpongchung/cs61c-1 will work.

Hello @chakpongchung and @PointBreaker i just released v1.6.0, which includes multifile/import support. Relative imports should work for both Linux and Windows (and MacOS although untested) and there is also support for absolute imports on Linux.
Note that other file operations are NOT supported, like reading and writing to files from an assembly programm! So not all examples from https://github.com/chakpongchung/cs61c-1 will work.

that's amazing! thank you for your contribution!


Unify CLI tools commands names

We need to come up with proper commands names for all CLI tools that would be also proper to the context. Currently we are using a single command named run.
Some suggestions could be:

export or convert command to create a target compose YAML, Helm values file, or Humanitec deployment draft
deploy to trigger Humanitec deployment
lint to validate input SCORE file and all other settings. Or, may be, introduce --dry-run flag instead.

Some CLI tools to check for reference:

https://docs.docker.com/engine/reference/commandline/compose/#child-commands
https://helm.sh/docs/helm/

User feedback to take into account when working on this issue:

"curious what the reasoning is for the score-foo run commands generating config files, rather than actually performing a deploy. I would expect that to actually execute the workload, and for a config rendering command to be something like generate"

"I really like score, but in it’s current state it requires a lot of glue. For example, I would prefer score-compose to be able to invoke docker-compose on my behalf so i don’t have to look up how to execute that command every time. This is especially painful when you use multiple of these commands because each command takes a different combination of arguments. The arguments that these commands accept are not coherent so I end up having to jump around documentation and look at source code to figure out how to invoke them."

For reference: https://scorecommunity.slack.com/archives/C046Z0N0R9B/p1685492569212239

Closing this issue as the above named items have been largely addressed with the latest release of the score-compose reference implementation. For more information see the release announcement here: https://github.com/score-spec/spec/discussions/75
We'll continue to gather feedback as part of Project Melody - If you notice any weirdness or inconsistencies when using the score-compose CLI don't hesitate to create a new issue or ping us on Slack. Thank you!


Android can't resume activity when launching from app-icon in launcher

Describe the bug
Almost all bank customers in Sweden have to do a 3DS-OOB-verification through another Native App called BankID. When switching to that app and coming back, not all issuers support redirectUri, so that has to be done manually.
To go back to our app, some of our Android-users use the app launcher and press our app-icon to resume the payment and submit additional details. This results in our app staying on the same screen(somehow magically through react-navigation I presume), but the Adyen Drop-In Component has now destroyed it's session so we never get any getAdditionalDetails-callback and the offer session is lost.
To Reproduce
Steps to reproduce the behavior:

Open Drop-In component
Enter details for 3DS-required-card
Minimize the app
Resume app from app-launcher (not app switcher)

Expected behavior
If we swap point 4 above with "Resume app from app swithcer", then the adyen drop-in component is still visible.
When starting the app from appIcon I expect to have the same behaviour that the drop-in component is still active
Screenshots
https://github.com/Adyen/adyen-react-native/assets/457653/0ded4e53-d7fc-4d45-a2b2-b8e7b788a952
Smartphone (please complete the following information):

Device: Simulator/Samsung Galaxy A13/Huawei
OS, at least: Android 11-13
Browser n/a
Version n/a

Additional context
adyen-react-native: 1.2.0

A potential workaround would be for us to store data from our api-request in the onSubmit-callback in local storage, then on component render, check for that data and somehow be able to call nativeComponent.handle(data), but we don't have access to nativeComponent in that scope.

Hey @StefanWallin
This is known issue.
I would suggest to continue discussion in original topic.


Error"Error initializing db."

Describe the bug
new class A  extend DRMLibraryService, initializing cause crushing by error"Error initializing db."
How to reproduce?
1 spm like  this

2 new class  LCPLibraryService  extend DRMLibraryService

3   LCPLibraryService *lcpService = [[LCPLibraryService alloc] init];
Readium version
2.6.1
OS version
IPADOS 17.3.1
Testing device
iPad 10
Environment
MACOS 14
Platform arm64
Carthage: 0.39.1
XCODE 15.3

Additional context

I'm not sure what's causing this. Maybe a permissions issue on the folder? Can you run fine on a real device?
I would open an issue on https://github.com/stephencelis/SQLite.swift, as the error is triggered by this third-party dependency.

in addition   I run test app. by  Carthage making , replace my own bundle id of "org.readium.TestApp",
I find that it run crush on device when launching with。another error. "unable to open database file"

This looks like the same error but in a different context : in the Test App SQLite database with the GRDB dependency instead of SQLite.swift.
I do have the same warnings about _TtC6SQLite* symbols, I don't know if this is the culprit for the crash you observe, but it is definitely concerning with the StackOverflow link you shared.
There's another relevant SQLite.swift issue reported there: https://github.com/stephencelis/SQLite.swift/issues/1177
I think this will increase the priority of a task that was postponed: removing the SQLite database from the ReadiumLCP package, for the v3.
Unfortunately I don't have any solution to offer right now.

Just for debugging purposes, do you still have the same crash if you don't enable LCP in the Test App and your app? ReadiumLCP is the only package that depend on SQLite.swift.

I find that test app run successfully in simulator but crush in  device,
here is the key point
there. is no database.dbfile file to init with  Appmodel class ,

I intergate LCP to my own app，app run successfully，but when I use some lcp class，it crush!
when I new a class extend DRMLibraryService，run in device. and  new that class it also crush without daabase.db file

If you remove LCP in the Test App (generate with make dev for example, without using the lcp= parameter), are you able to run the app without crash on your device?
I want to know if the problem is triggered by embedding SQLite.swift in the toolkit.

I make by  Carthage
here is my operation
Run only”make  carthage”  instead of   “make carthage lcp=https://lixxx/ios/XX/liblcp.json”
found that test app without LCPClient  also crush in device

Hmm okay, then I'm not sure it's related to the StackOverflow you shared earlier. Besides something weird with your device, I don't have a better idea.

I have intergated to my  app run successfully and open lcpl format file to read in simulator  but faile d in  device with the above problem

No
From:Mickaël Menu @.>
Sent At:2024 Mar. 28 (Thu.) 19:12
To:readium/swift-toolkit @.>
Cc:Travis Xu @.>; Author @.>
Subject:Re: [readium/swift-toolkit] Error"Error initializing db." (Issue #405)
If you remove LCP in the Test App (generate with make dev for example, without using the lcp= parameter), are you able to run the app without crash on your device?
I want to know if the problem is triggered by embedding SQLite.swift in the toolkit.
—
Reply to this email directly, view it on GitHub <https://github.com/readium/swift-toolkit/issues/405#issuecomment-2024933899 >, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ADD2ICEQYR3BK6IU377IMB3Y2PUHNAVCNFSM6AAAAABFIPD63SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMRUHEZTGOBZHE >.
You are receiving this because you authored the thread.Message ID: @.***>


Using jsonpath as expression inside a filter expression returns always 0 results

I'm using a complex expression searching for an element , but the value for the attribute in the filter comes from another json element.
<EMAIL_ADDRESS>==<EMAIL_ADDRESS>== 1)].ems_cluster_id)].v_parent_datacenter
Can I use this kind of expressions of in the filter I can only use constants ?

Hi,

Can I use this kind of expressions of in the filter I can only use constants ?

Based on the minimal example on jsonpath.herokuapp.com it is possible.
$.store.book[?(@.category==$['store']['book'][0]['category'])]
But I don't know how many levels of nested filters are actually supported. Would you mind providing the JSON structure you're trying to apply the given path to?

@hf-kklein I believe this is a different problem from the example you provided.  Your example provides hard coded references, but the issue is using references within references.
@jonathanvila I think the actual problem is that nested jsonpath expressions are not evaluated at all.  The reason why it doesn't work in a filter expression is because it's comparing the path expression itself, not what you expect the path expression to evaluate to.  I'm not sure if that is by design, an unimplemented feature, or a bug.
Given the JSON document
{
   id: 2,
   array: ["zero", "one", "two"]
}

The path $.array[$.id] causes  Could not parse token starting at position 7. Expected ?, ', 0-9, * .

Thank you both @hf-kklein , @JeremyFossTemple
My issue was about what Jeremy says, and I have understood by the code that JSONPath is not able to expand expresssions in filters, just because it expexts the filter as a constant.
Probably it's a feature not implemented.
Tbh, I feel JSONPath is still poor in features compared to XPath so I will try to move to another approach : convert XML into JSon , then use XPath.


FormControl broken

[x] The issue is present in the latest release.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯

FormControl with fieldset component prop mismatch when I am using a styled FormControl or not.
Expected Behavior 🤔

Should be the same in both cases
Steps to Reproduce 🕹
https://codesandbox.io/s/mui-orgmaterial-uiissues18145-ig4d7
Steps:

Create a FormControl with component="fieldset" prop
Create a  styled FormControl with component="fieldset" prop  without any CSS
Notice that the CSS is mismatching between

Context 🔦

Use fieldset as component of FormControl
Your Environment 🌎
Check the code sandbox package.json

This is hard to find. It's a duplicate of #14470


hi,I have encountered a problem，and how to solve this problem

Load messages...
Segment messages...
Segmentation by inflections of sigma-0.6-gauss-filtered bit-variance.
Refine segmentation (NullBytes, CropChars)...
Traceback (most recent call last):
File "nemesys.py", line 52, in
refinedPerMsg = refinements(segmentsPerMsg, unused=None)
File "/tmp/nemesys/src/nemere/inference/segmentHandler.py", line 328, in refinements
return zerocharPCAmocoSFrefinements(segmentsPerMsg, **kwargs)
File "/tmp/nemesys/src/nemere/inference/segmentHandler.py", line 752, in zerocharPCAmocoSFrefinements
pcaRound = [refine.CropChars(segs).split() for segs in zeroSlicedMessages]
File "/tmp/nemesys/src/nemere/inference/segmentHandler.py", line 752, in
pcaRound = [refine.CropChars(segs).split() for segs in zeroSlicedMessages]
File "/tmp/nemesys/src/nemere/inference/formatRefinement.py", line 2484, in split
from nemere.inference.fieldTypeLibrary import BinaryProtocolsFieldTypeRecognizer
ModuleNotFoundError: No module named 'nemere.inference.fieldTypeLibrary'

This was due to me messing up merging of branches. It should be fixed now.


Problem getting the filtered data

There seems to be a problem getting the filtered data.

As you can see I have the data in my firestore project, and I created the indexes.

but I still don't get any response, even if I I'm clearly calling the first item from the list

Thanks @manucho007, there was indeed an error in the filtering code. Just fixed it :)

Basically when we were not filtering by price we were adding a price=0 filter anyways which never returns any results (all entries have a 1-4 price).

I had fixed it downstream, but the code from here in codelabs has overwritten my fix
https://github.com/firebase/quickstart-js/pull/171

cc @abehaskins


Does not work with buffer commands

I'm not sure if this can be fixed but since this plugin opens a new buffer all buffer local commands aren't available.

They don't? At least set filetype works fine.
Which command can I use to test this? I think there is a solution.

Please try this:
:command -buffer Hiho echo 'hiho'
Then try to complete Hiho in the fine commandline.

You got me there. Completion doesn't work.
I should still be able to use omnifunc to complete  buffer commands. They would be on a different keybinding, but I think is possible.

I too was unable to find all the commands. Example - rust.vim gives me a few
global functions/commands such as RustRun & RustPlay but only RustPlay is available in the pattern completion. RustRun wouldn't show up in completion list.

I found a solution for this, but I'm gonna need you to test it, because it involves replacing the default keybinding for autocompletion. Don't want to merge it just yet.
The good thing is this could be tested in userland, meaning your config.
function FineCmdlineOmnifunc(start, base)
  -- If you changed the prompt make sure
  -- to update this variable
  local prompt_length = 2
  local line = vim.fn.getline('.')
  local input = line:sub(prompt_length + 1)

  if start == 1 then
    local split = vim.split(input, ' ')
    local last_word = split[#split]

    return #line - #last_word
  end

  return vim.api.nvim_buf_call(vim.fn.bufnr('#'), function()
    return vim.fn.getcompletion(input .. base, 'cmdline')
  end)
end

require('fine-cmdline').setup({
  hooks = {
    after_mount = function(input)
      vim.api.nvim_buf_set_option(
        0,
        'omnifunc',
        "v:lua.FineCmdlineOmnifunc"
      )
    end,
    set_keymaps = function(imap, feedkeys)
      imap('<Tab>', function()
        if vim.fn.pumvisible() == 1 then
          feedkeys('<C-n>')
        else
          feedkeys('<C-x><C-o>')
        end
      end)
    end
  }
})

At first glance it seems like it is as good as the built-in completion.

This does work for me 👍
It works for both buffer local commands as well as their completion 🙂

Awesome. Let me know if something breaks. I'll be testing the omnifunc myself for a few weeks before adding it to the plugin.

Just checking.  Does the omnifunc work fine for you?
I did find an edge case where it's not consistent with the built-in completion. Other then that I think is okay.

Haven't used nvim much in the last weeks.
For what it's worth I didn't catch any issues. And the completion is much nearer to the original completion than the previous one 👍

The fix for this one has been merged. The omnifunc is now built into the plugin.
A nice side effect is that now since I control the completion the prompt no longer affects the suggestions. It's safe to use a custom prompt.
This works now.
require('fine-cmdline').setup({
  cmdline = {
    prompt = '❯ '
  },
})


fetchJSON - using "text()" method on response blocks body stream

Hi. I wanted my fetchWithToken function to return Promise<Response> like regular fetch.
When working with fetch, I usually return response as response.json(), but request returned by configureRefreshFetch gave me an error: Failed to execute 'json' on 'Response': body stream is locked.
https://stackoverflow.com/q/53511974
This can be solved by cloning response in getResponseBody func before using text().

Hey, yeah, good point. Changed and released as v0.7.0


[AutoPR resources/resource-manager] Fix typo, the provider should be Microsoft.Authorization

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/3960

This PR has been merged into https://github.com/Azure/azure-sdk-for-go/pull/2758


Update 81.json

Scenario 81 had Living Spirits in its file, instead of Night Demons. Just something small I noticed during last night's game. Wasn't a show stopper.

Thanks @Northburns !
I'll get this merged into main and released as a patch build :-)


Profile MongoDb service

Profile MongoDbModelService. Time required to fingerprint data from an audio file is unfeasible. This is strongly related to groupby functionality used by the algorithm.

MongoDb migrated to a separate github repository. This issue should be discussed here https://github.com/AddictedCS/soundfingerprinting.mongodb


Flag set by npm config set msvs_version 2015 --global  is not being honored by electron-rebuild

Issue:
I originally had a problem building my application after upgrading from VS 2013 to VS 2015, but that problem was solved by setting msvs_version 2015. While that worked for the npm install (and its node compiles), it somehow is being ignored at the electron-rebuild stage.
Details:
Initial issue
Specifically, my build process once had this issue (when I first upgraded):
22:07:39 c:\work-projects\my-application>c:\CM\elevated_cmd.exe /C "npm install > npm_install.log"
22:22:38
22:22:38 c:\work-projects\my-application>type npm_install.log
22:22:38
22:22:38 ><EMAIL_ADDRESS>install c:\work-projects\my-application\node_modules\libxmljs-mt
22:22:38 > node-gyp rebuild
22:22:38
22:22:38
22:22:38 c:\work-projects\my-application\node_modules\libxmljs-mt>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "" rebuild )
22:22:38 Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
22:22:38 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Platform.targets(57,5): error MSB8020: The build tools for v120 (Platform Toolset = 'v120') cannot be found. To build using the v120 build tools, please install v120 build tools.  Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution". [c:\work-projects\my-application\node_modules\libxmljs-mt\build\xmljs.vcxproj]

Initial solution
But that was quickly remedied by this command setting:
npm config set msvs_version 2015 --global
Current Issue
Once I set the command above, things seemed to be working fine. (the initial compiles that happen during npm install started working fine). But once I got to the build part that uses electron-rebuild, I found the same error returned but only during the electron-rebuild compiles, as follows:
13:15:32 c:\work-projects\my-application>c:\CM\elevated_cmd.exe /C "gulp erebuild > erebuild.log"
13:16:05
13:16:05 c:\work-projects\my-application>type erebuild.log
13:16:05 [13:15:41] Using gulpfile c:\work-projects\my-application\gulpfile.js
13:16:05 [13:15:41] Starting 'erebuild'...
13:16:05 [13:15:41] Finished 'erebuild' after 394 ms
13:16:05 [13:16:04] Rebuilding modules against Electron didn't work: Error: gyp info it worked if it ends with ok
13:16:05 gyp info using<EMAIL_ADDRESS>13:16:05 gyp info using<EMAIL_ADDRESS>| win32 | x64
13:16:05 gyp http GET https://atom.io/download/electron/v1.8.2-beta.4/iojs-v1.8.2-beta.4.tar.gz
13:16:05 gyp http 200 https://atom.io/download/electron/v1.8.2-beta.4/iojs-v1.8.2-beta.4.tar.gz
13:16:05 gyp http GET https://atom.io/download/electron/v1.8.2-beta.4/SHASUMS256.txt
13:16:05 gyp http GET https://atom.io/download/electron/v1.8.2-beta.4/win-x64/iojs.lib
13:16:05 gyp http GET https://atom.io/download/electron/v1.8.2-beta.4/win-x86/iojs.lib
13:16:05 gyp http 200 https://atom.io/download/electron/v1.8.2-beta.4/win-x64/iojs.lib
13:16:05 gyp http 200 https://atom.io/download/electron/v1.8.2-beta.4/SHASUMS256.txt
13:16:05 gyp http 200 https://atom.io/download/electron/v1.8.2-beta.4/win-x86/iojs.lib
13:16:05 gyp info spawn C:\Python27\python.exe
13:16:05 gyp info spawn args [ 'c:\\work-projects\\my-application\\node_modules\\node-gyp\\gyp\\gyp_main.py',
13:16:05 gyp info spawn args   'binding.gyp',
13:16:05 gyp info spawn args   '-f',
13:16:05 gyp info spawn args   'msvs',
13:16:05 gyp info spawn args   '-G',
13:16:05 gyp info spawn args   'msvs_version=auto',
13:16:05 gyp info spawn args   '-I',
13:16:05 gyp info spawn args   'c:\\work-projects\\my-application\\node_modules\\libxml-xsd\\build\\config.gypi',
13:16:05 gyp info spawn args   '-I',
13:16:05 gyp info spawn args   'c:\\work-projects\\my-application\\node_modules\\libxml-xsd\\common.gypi',
13:16:05 gyp info spawn args   '-I',
13:16:05 gyp info spawn args   'c:\\work-projects\\my-application\\node_modules\\node-gyp\\addon.gypi',
13:16:05 gyp info spawn args   '-I',
13:16:05 gyp info spawn args   'C:\\Users\\MyBuilderUser\\.electron-gyp\\.node-gyp\\iojs-1.8.2-beta.4\\common.gypi',
13:16:05 gyp info spawn args   '-Dlibrary=shared_library',
13:16:05 gyp info spawn args   '-Dvisibility=default',
13:16:05 gyp info spawn args   '-Dnode_root_dir=C:\\Users\\MyBuilderUser\\.electron-gyp\\.node-gyp\\iojs-1.8.2-beta.4',
13:16:05 gyp info spawn args   '-Dnode_gyp_dir=c:\\work-projects\\my-application\\node_modules\\node-gyp',
13:16:05 gyp info spawn args   '-Dnode_lib_file=C:\\Users\\MyBuilderUser\\.electron-gyp\\.node-gyp\\iojs-1.8.2-beta.4\\<(target_arch)\\iojs.lib',
13:16:05 gyp info spawn args   '-Dmodule_root_dir=c:\\work-projects\\my-application\\node_modules\\libxml-xsd',
13:16:05 gyp info spawn args   '-Dnode_engine=v8',
13:16:05 gyp info spawn args   '--depth=.',
13:16:05 gyp info spawn args   '--no-parallel',
13:16:05 gyp info spawn args   '--generator-output',
13:16:05 gyp info spawn args   'c:\\work-projects\\my-application\\node_modules\\libxml-xsd\\build',
13:16:05 gyp info spawn args   '-Goutput_dir=.' ]
13:16:05 gyp info spawn C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe
13:16:05 gyp info spawn args [ 'build/binding.sln',
13:16:05 gyp info spawn args   '/clp:Verbosity=minimal',
13:16:05 gyp info spawn args   '/nologo',
13:16:05 gyp info spawn args   '/p:Configuration=Release;Platform=x64' ]
13:16:05 Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
13:16:05 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Platform.targets(57,5): error MSB8020: The build tools for v120 (Platform Toolset = 'v120') cannot be found. To build using the v120 build tools, please install v120 build tools.  Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution". [c:\work-projects\my-application\node_modules\libxml-xsd\build\node-libxml-xsd.vcxproj]
13:16:05 gyp ERR! build error
13:16:05 gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
13:16:05 gyp ERR! stack     at ChildProcess.onExit (c:\work-projects\my-application\node_modules\node-gyp\lib\build.js:258:23)
13:16:05 gyp ERR! stack     at emitTwo (events.js:106:13)
13:16:05 gyp ERR! stack     at ChildProcess.emit (events.js:194:7)
13:16:05 gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
13:16:05 gyp ERR! System Windows_NT 6.3.9600
13:16:05 gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "c:\\work-projects\\my-application\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--target=1.8.2-beta.4" "--arch=x64" "--dist-url=https://atom.io/download/electron" "--build-from-source"
13:16:05 gyp ERR! cwd c:\work-projects\my-application\node_modules\libxml-xsd
13:16:05 gyp ERR! node -v v7.10.1
13:16:05 gyp ERR! node-gyp -v v3.6.2
13:16:05 gyp ERR! not ok
13:16:05
13:16:05 Failed with exit code: 1

Pertinent Code
My gulp call of electron-rebuild is pretty straightforward and crisp, so I doubt it will reveal much, but here it is :
gulp.task('erebuild', , function () {
    var eRebuild = require('electron-rebuild').rebuild;
    var arch = process.arch;
    eRebuild(
        {buildPath: __dirname,
            electronVersion: electronVersion,
            arch: arch
        })
        .then(function () {
            log('electron version: ' + electronVersion +  ' arch version: ' + arch);
            log('Electron Rebuild Successful');
            return true;
        }).catch(function (e) {
            log('Rebuilding modules against Electron didn\'t work: ' + e);
        });
});

Is there an option I should be adding to my electron-rebuild call to force the msvs_version value to it?
Shouldn't electron-rebuild automatically be using this value, as npm install does?
I notice in the electron-rebuild display of gyp configuration params that msvs_version=auto appears as its setting rather than 2015 (see about 1/3 the way down in the "Current Issue" section above). How do I assign auto the value of/or pointing to 2015 (or how do I get electron-rebuild to explicitly use 2015 rather than auto)? I am not completely sure how this should be approached.   Is this a bug in electron-rebuild? Should electron-rebuild have an option to specify msvs_version? Or is auto supposed to be a value that I set somewhere in the configuration? If so how?

I am having this same issue. Would love to know if there's a solution.

The better way to set msvs version (that should be respected here) is by setting the GYP_MSVS_VERSION.  The npm config variable is only used by npm, nothing else.

@MarshallOfSound that worked! Thank you!
For reference, this is what I ran in PowerShell:
$Env:GYP_MSVS_VERSION=2015
.\node_modules\.bin\electron-rebuild

OK, thanks for the reply. I didn't realize that electron-rebuild uses GYP_MSVS_VERSION and cannot be relied on respecting :
npm config set msvs_version 2015 --global
This answers my question. Thanks


Branchout Relocate

From time to time large organisations like to switch services such as:
bitbucket to github.com
github.com to self hosted GHE
gitlab.com to bitbucket
etc.
When that happens it's necessary to run some sort of command over the repo tree that corrects all of the repo URLs (assuming the repo names stay the same, usually fair). The approach I've used in the past has been something like this:
cd ~/branchout/<root-to-change> ; sed -i "s,ssh://git@bitbucket.someorg.com:1234/whatever,git@github.com:someorg," */*/.git/config
It's proposed that we add a new branchout command that takes one arg, being the new base and does some validation on it like this:
branchout relocate<EMAIL_ADDRESS>And that the first thing that does is:

read its own URL
remove the existing prefix from its own URL
place the new prefix on the remainder of its own URL
validate that the URL is usable with some command (to be determined)

And then go about fixing the .git/config files in every repo, including the base one, with the same change. Ie,
.git/config
*/.git/config
*/*/.git/config

Either with sed or git itself. I'd advocate sed for two good reasons and advise against it for one reason:

sed is far faster than git to make this change
sed takes care of all remotes at the same time, there are lots of legit reasons to have more than one remote in the same org in the same repo
sed is not portable between BSD/CrapOS and Linux/WSL2 so this would need some sort of OS detection to behave properly

In either case, the presence of the .git/config file is a good indicator for trying to run a git command against a particular dir - many of the dirs won't have a .git directory, particularly */.git/config will not exist for all */ dirs.
I'm going to have a crack at this, but @stickycode, how do you want it structured? A new command in the main file or a file of its own or what?
Cheers.

The sed looks reasonable, off the top of my head I can't think of any situations where you would get ',' in the urls, so the comma separator is fine.
Agreed that sed will be significantly faster that running git remote set-url on every repository
OS detention is needed and will be helpful for some other things like yarn which behaves differently on Windows, sorting out the windows tests in travis would be really handy.

relocate seems like a reasonable name

Comma is your standard, just used it at the time and copied it from then - good point though. However as you taught me, any character can be used - I suppose comma is as good as any other - I can't think of a reason not to use it, either.
relocate was your name, too :-D so of course you like it. Maybe copying git would be better, though? set-url? Not too bothered, as long as it's documented and self documenting, and fairly self explanatory, it doesn't really matter much.
So, OS detection first. I think I have access to all three OSes right now, so I'll see what I can find that works and doesn't require crazy dependencies. I might have something already in one of my old projects, actually.

Testing revealed a couple of scenarios that belong in a new ticket or PR or ignored entirely, but I'll document them here, for the record:

If some how not all repos have the same base clone URL, for example, mismatched case that is handled seamlessly by the git server in question, then the process will need to be run twice, the second time editing the BO root repo to have the alternate case version found in the repos that were not processed by the sed the first time. I don't think this needs fixing, the situation was broken and it would be wrong to make it loose-match IMO.

If the BO repo somehow already matches the target then nothing is done. Ditto, broken corrupt scenario, nothing to fix in BO, revert the URL in the BO root repo and run relocate.

If the repos are also renamed at the same time as being relocated branchout can't necessarily help with this and fetch/pull won't work. However there is a subset of cases that it'd be nice to support and that's an additional prefix to be applied to all repos within a BO tree, see #80 to follow that.

Closing this.


data download

I was able to download
AB1_VIRAL_CNS
with
wget https://storage.googleapis.com/finngen-public-data-r2/summary_stats/finngen_r2_AB1_VIRAL_CNS.gz
How do I download
AB1_VIRAL_ENCEPHALITIS_NOS

Here are a couple of links that should help you get started:

Description of the summary statistics file that you downloaded https://finngen.gitbook.io/documentation/data-description

Overview of what is a GWAS https://finngen.gitbook.io/finngen-handbook/background-reading/gwas-analysis

In-depth article about GWAS https://www.nature.com/articles/s43586-021-00056-9


fix: empty session and tunnel username are treated as null.

- What I did

Replaces empty string as null when using the session and tunnel username.
Added additional validation to SR Address, Device address, remote sshd port and local forwarding port.

- How I did it
- How to verify it

Run the app
edit or create a profile.
enter an invalid value in the form field

- Description for the changelog

Improve validation when creating profiles and empty session and tunnel username are treated as null.

Nice work @CurtlyCritchlow


ci: merge staging to master

This is an automatic PR generated by the pipeline CI/CD. This will be automatically fast-forward merged if successful.

Pipeline Attempt on 547427459 for abdc55e44df92887d464d536d40ad338af7c9644
https://gitlab.com/MatrixAI/open-source/typescript-demo-lib-native/-/pipelines/547427459

Pipeline Attempt on 547446157 for da457aeb6670f37d352dbe4769f32a3f3d93bbf4
https://gitlab.com/MatrixAI/open-source/typescript-demo-lib-native/-/pipelines/547446157

Pipeline Succeeded on 547427459 for abdc55e44df92887d464d536d40ad338af7c9644
https://gitlab.com/MatrixAI/open-source/typescript-demo-lib-native/-/pipelines/547427459

Pipeline Succeeded on 547446157 for da457aeb6670f37d352dbe4769f32a3f3d93bbf4
https://gitlab.com/MatrixAI/open-source/typescript-demo-lib-native/-/pipelines/547446157


Bring back ORM <> Prisma Client comparison pages

In the Prisma 1 docs we had pages that compare Prisma Client with other existing ORMs. We should bring these pages back.

https://www.prisma.io/docs/understand-prisma/api-comparisons


Error when using video

Hi
Thanks for sharing this project.
I want to use yolov5-face detection in c++ on raspberry pi.
when I use it for image, everything is ok. but when I use it for video, I get the below error.
[INFO] fastdeploy/runtime.cc(481)::Init	Runtime initialized with Backend::ORT in Device::CPU.
Error opening video stream or file
terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(3.4.14) /jiangjiajun/opencv-3.4.14/modules/highgui/src/window.cpp:652: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvDestroyAllWindows'

Aborted (core dumped)

I am working on raspberry pi with ubuntu 22.04 64bit and my Opencv version is 4.3.0 and  Opencv is built from source.
I built Opencv by link.
I upgraded Opencv version to 4.5.5 but I got the above error, again.

Hi, @saeedkhanehgir
Did you built fastdeploy by yourself, or you  download the prebuilt FastDeploy?

Hi @jiangjiajun
I built myself.

I think you are using the prebuilt OpenCV(version 3.4.14, without videio enabled) which is ensemble in FastDeploy. Could you rebuild FastDeploy using -DOPENCV_DIRECTORY(if python, export OPENCV_DIRECTORY), to build FastDeploy with your own OpenCV

@jiangjiajun
Thanks for your answer. when I built OpenCV I set   -D CMAKE_INSTALL_PREFIX=/usr/local . Now I should set -DOPENCV_DIRECTORY=/usr/local/ ?

@jiangjiajun
Thanks, it works.

I think you are using the prebuilt OpenCV(version 3.4.14, without video enabled) which is integrated in FastDeploy by default. Could you rebuild FastDeploy using -DOPENCV_DIRECTORY(if python, export OPENCV_DIRECTORY), to build FastDeploy with your own OpenCV

如果我是用的预编译的包 这个问题应该怎么解决呢？


add a toggle to switch between "Near me" cards and "Trending Pandals cards

You can assign this issue to me


Plume x LiquidStone to Main

closing, replaced with PR https://github.com/credbull/credbull-defi/pull/181


Cache Key should contain more than just the HTTP Method

The library uses a Cache Key composed out of the Request Method and http.Request.RequestURI.
However "RequestURI" is a server only field and is empty on client side.
Thus all GET Request share the same cache key. ("GET "). As a result this library is basically is a single page cache.
See https://github.com/bxcodec/httpcache/blob/e926f2b6999907b20502599204946ee15730d767/roundtriper.go#L222

Getting the same error when fetching GET also from different URLs


show public ip address of both ipv4 and ipv6?

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
show public ip address of both ipv4 and ipv6?
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Hello @masx200 the Public IP-address shown in the dashboard is the address used by the peer to connect to NetBird's management system. It can be IPv4 or IPv6 at the time, but not both at the same time.
If the IP address is local to the system, we will display them in a different row together with other local addresses.


Fix in MHA cross attention path

Signed-off-by: Kirthi Shankar Sivamani<EMAIL_ADDRESS>

@ptrendx The unit tests we have are currently for the top level APIs. This bug arises within an internal path of the MultiHeadAttention module using a specific set of input arguments (a path is that is unused by the top level APIs).

So why is that path even in the code then? Can't you have TransformerLayer that will call that?

Can't you have TransformerLayer that will call that?

No we can't. This is because when we optionally call the MHA module a second time in TransformerLayer for the decoder/cross-attention path, we hardcode the argument input_layernorm=True in MHA (which is what we want). The issue is when the user calls the MHA module directly with input_layernorm=False, attention_type="cross", and fuse_qkv_params=False.

So why is that path even in the code then?

It is a path because those individual arguments stated above are to be supported orthogonally for the use cases that we actually want in TransformerLayer.

Ok, makes sense. Going forward we will need the MHA layer to be the top level API, but that is obviously not in the scope of this PR.

/te-ci


Default values with UnsafeRawPointers do not compile

Hi there,
First of all, I'm really glad you've created this, even though I'm scared to add any new dependencies to the project because Swift 6 is close, I'll give it a try 😅
I found an issue with %s and %p parameters.
I wanted to fix it by myself and open a PR, but it's the first time I've seen ### formatting, so I guess you know what to do better and faster :)

Btw you might want to create 0.1.3 anyway, as some handy fixes to the documentation were added since 0.1.2 🖖🏻

Hi @kkiermasz 👋 Good catch, thanks for raising this! I haven't actually used %s and %p format specifiers myself so that's why this was missed.
I have however been looking into some improvements around this part of how we generate the defaultValue (String.LocalizationValue type) because of a separate issue with parameter ordering and I think there might be some limitations with the new String.LocalizationValue type compared to using NSLocalizedString(..).
(I should mention that I only added parsing support for %s and %p as I was mirroring what other tools such as R.swift and SwiftGen supported)
The ### hashes are a quick workaround to escape double quotes that may exist inside the value that I construct. In the example from your screenshot ###"Test \###(arg1)"### is the same as "Test \(arg1)".
With that in mind, I think that we can work out the exact behaviour that we want by testing the String.LocalizationValue directly... I'm guessing that the following code doesn't work?
let arg: UnsafeRawPointer = ...
let value: String.LocalizationValue = "Test \(arg)"
dump(value)

I think that this is because the String.LocalizationValue type is much more restrictive compared to the NSLocalizedString(...) API. You can look at String.LocalizationValue.StringInterpolation to get an idea of which custom types it accepts for interpolation:
https://developer.apple.com/documentation/swift/string/localizationvalue/stringinterpolation
From what I can see, there are three overloads of interest to us that accept different values:

NSObject
String
_FormatSpecifiable

It seems that UnsafeRawPointer doesn't fit into any of these overloads, which is why I think that we are seeing this compiler error 😕

[!NOTE]
A note about the private _FormatSpecifiable type.. It's underscored which means that it isn't documented, but you can find more about it in the .swiftinterface file.
/Applications/Xcode-15.2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.2.sdk/System/Library/Frameworks/Foundation.framework/Modules/Foundation.swiftmodule/arm64-apple-ios.swiftinterface
Here is the important stuff
@_alwaysEmitIntoClient @_semantics("constant_evaluable") private func formatSpecifier<T>(_ type: T.Type) -> Swift.String {
    switch type {
    case is Int.Type:
        fallthrough
    case is Int64.Type:
        return "%lld"
    case is Int8.Type:
        fallthrough
    case is Int16.Type:
        fallthrough
    case is Int32.Type:
        return "%d"
    case is UInt.Type:
        fallthrough
    case is UInt64.Type:
        return "%llu"
    case is UInt8.Type:
        fallthrough
    case is UInt16.Type:
        fallthrough
    case is UInt32.Type:
        return "%u"
    case is Float.Type:
        return "%f"
    case is CGFloat.Type:
        fallthrough
    case is Double.Type:
        return "%lf"
    default:
        return "%@"
    }
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
public protocol _FormatSpecifiable : Swift.Equatable {
  associatedtype _Arg : Swift.CVarArg
  var _arg: Self._Arg { get }
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.Int : Foundation._FormatSpecifiable {
  public var _arg: Swift.Int64 {
    get
  }
  public typealias _Arg = Swift.Int64
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.Int8 : Foundation._FormatSpecifiable {
  public var _arg: Swift.Int32 {
    get
  }
  public typealias _Arg = Swift.Int32
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.Int16 : Foundation._FormatSpecifiable {
  public var _arg: Swift.Int32 {
    get
  }
  public typealias _Arg = Swift.Int32
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.Int32 : Foundation._FormatSpecifiable {
  public var _arg: Swift.Int32 {
    get
  }
  public typealias _Arg = Swift.Int32
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.Int64 : Foundation._FormatSpecifiable {
  public var _arg: Swift.Int64 {
    get
  }
  public typealias _Arg = Swift.Int64
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.UInt : Foundation._FormatSpecifiable {
  public var _arg: Swift.UInt64 {
    get
  }
  public typealias _Arg = Swift.UInt64
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.UInt8 : Foundation._FormatSpecifiable {
  public var _arg: Swift.UInt32 {
    get
  }
  public typealias _Arg = Swift.UInt32
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.UInt16 : Foundation._FormatSpecifiable {
  public var _arg: Swift.UInt32 {
    get
  }
  public typealias _Arg = Swift.UInt32
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.UInt32 : Foundation._FormatSpecifiable {
  public var _arg: Swift.UInt32 {
    get
  }
  public typealias _Arg = Swift.UInt32
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.UInt64 : Foundation._FormatSpecifiable {
  public var _arg: Swift.UInt64 {
    get
  }
  public typealias _Arg = Swift.UInt64
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.Float : Foundation._FormatSpecifiable {
  public var _arg: Swift.Float {
    get
  }
  public typealias _Arg = Swift.Float
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension Swift.Double : Foundation._FormatSpecifiable {
  public var _arg: Swift.Double {
    get
  }
  public typealias _Arg = Swift.Double
}
@available(macOS 12, iOS 15, tvOS 15, watchOS 8, *)
extension CoreFoundation.CGFloat : Foundation._FormatSpecifiable {
  public var _arg: CoreFoundation.CGFloat {
    get
  }
  public typealias _Arg = CoreFoundation.CGFloat
}

So, with this in mind, I am not sure how to proceed 😄 I have a few ideas though:

Try adding _FormatSpecifiable conformance to UnsafeRawPointer to the target where the code is generated (XCStringsTool can't do this).
If you are working with NSObject types, maybe the codegen could accept the NSObject type rather than UnsafeRawPointer?
Remove (the broken) support for %s and %p as it isn't supported by String.LocalizationValue (I think this would also help with any attempt that I make to solve #40)
In your use case, use %@ in your string and instead format the pointer value prior to passing it into the generated codelet _arg: UnsafeRawPointer = ...
let arg = String(format: "%p", _arg)
let localized = String(localized: .localizable.p(arg))

I hope that this brain-dump helps 😄 As I don't really use this feature myself, I am not sure what the best option is so it would be great to hear your thoughts! Thanks 🙏

Hey @liamnichols 👋🏻 ,
wow, thanks for the response 😄
I'm not using them either. I was checking the library condition before adding it to the project 😛 The screenshot is from the test snapshot.
Thanks for the reference, now I see it's not support out-of-the-box :)
Since I'm not a String expert (which is a complex topic), I'm not voting for any of the 4 solutions you mentioned 🫠 I just thought it might be worth mentioning this in the documentation in some "limitations" section, since someone will probably encounter this problem later.
With the below extension using your library is handy, and I enjoy it!
Btw it's a pity that there's no way (or I'm the reason in this case :D) to use one shared catalog across multiple feature modules, as Apple invented (View -> Catalog -> .strings), I'd give it a try.
extension LocalizedStringResource: CustomStringConvertible {
    public var description: String {
        string
    }

    private var string: String {
        "\(self)"
    }

    public func callAsFunction() -> String {
        string
    }
}

Btw did you notice any performance issues? One SwiftUI view rerender causes ~2.4k LocalizedStringResource resolve attempts, each taking ~0.00016s. I wonder if that's because the tool was not designed to expose resources publicly :/
(you know, one Resources module imported by several feature modules)

I'm not using them either. I was checking the library condition before adding it to the project 😛

Ahh right I see, that's a good strategy 🙂

The screenshot is from the test snapshot.

Ooooh, good spot. I opened #56 to keep on top of that in the future.

Since I'm not a String expert (which is a complex topic), I'm not voting for any of the 4 solutions you mentioned 🫠 I just thought it might be worth mentioning this in the documentation in some "limitations" section, since someone will probably encounter this problem later.

Well now that I've had a think about it, I think that I am going to peruse option 3 and remove direct support for %s and %p to help with the @Sendable work.
I believe that option 4 would then be the viable workaround for anybody that did need to use this kind of formatting... I'll keep this issue open to track that 👍

Btw it's a pity that there's no way (or I'm the reason in this case :D) to use one shared catalog across multiple feature modules, as Apple invented (View -> Catalog -> .strings), I'd give it a try.

I'm not quite sure if I understood what you are trying to achieve here, but does using the public or package access level do what you need here?

Btw did you notice any performance issues?

As for this - not yet. I haven't personally used XCStrings Tool in any complex SwiftUI projects where it has become a concern.
I'm not quite sure of the solution to this though because my understanding is that the purpose of LocalizedStringResource is to defer the resolution of the localized string so that SwiftUI can handle it instead. I think this was primarily to support out-of-process rendering for things like App Intents, but also it lets you pass a custom locale in via the SwiftUI environment and then have the correct language resolved dynamically.
Maybe it isn't common usage though, and in that case, caching the resolved strings might be a better option, but I don't think it's a good default.
I think that it probably needs some more investigation though, so thanks for flagging it.. Perhaps you can open a separate issue to track this? There might be some ways that we can optimise the generated code more, or maybe at least add some best practice documentation 🙏


Adding new rule to disallow optional parameters in callback positions

All good from your side @weswigham? If so, I'm happy to go ahead and merge it

In addition to my other comment, I'd like to see the type alias case I mentioned added to the test case, so at least in any scenario the current behavior is recorded.
Additionally, the following test case would be nice to see, too:
interface Callback {
  (a: string, b?: number): Callback;
}

function callbackable(cb: Callback) {
                          ^^^^^^^^ <---- Error should probably be here (at use), not on declaration. Though it would be useful to point back to the type's declaration, since there's multiple ways to fix the issue
  cb("");
}

And on an interface with overloads:
interface Multicall {
  (a: string, b: number, c: number, d?: Multicall): Multicall;
  (a: string, b: number, c?: Multicall): Multicall;
  (a: string): Multicall;
  (): void;
}

function multicaller(x: Multicall) {
  x();
}

(Actually you should probably add a bunch of tests with overloads with a varying set of them)

@weswigham: I believe the error shown would be better on declaration instead of use so that they are shown just once in case of multiple uses. I have added few more test cases to support this, please have a look.

@JKillian: I am unable to figure out what's causing the build to break since it doesn't seem to be coming from my changes. Could you help me out?

@rakatyal But the issue isn't with the type definition (which is possibly shared with both parameters, variables, and object members) - it is the usage of that type within the context of a specific parameter. It can be fixed either by changing the declaration of the parameter's type or by changing the declared type of the parameter. IDK, nonlocal errors seem like a really bad choice. (Along the lines of:: "I added a function with an argument of this type and then got a lint error in the type's declaration, what gives - the type didn't change?")

@weswigham: Point well taken. I modified the code to make it work. Please have a look again.

@rakatyal Can you rebase or merge with master? I can take a look at the errors afterwards

closing as stale. this can be revisited in a new PR.


RFC: Don't register a separate media type

JSON FG is meant to be an extension to GeoJSON, a primary goal seems to be that it's a drop-in replacement with added functionality.
The standard is mostly written in a way that a GeoJSON client can easily read JSON FG.
Unfortunately, this is not quite consistent when it comes to the planned new media type (and .jsonfg file extension).
Existing clients will have issues to identify GeoJSON if it's advertised as JSON FG.
The intended media type application/fg+json is not compatible in any way with the application/geo+json having in mind that many implementations just check equality of media type strings.
I'd like to propose to not register a separate media type for JSON FG and also remove the .jsonfg file extension.
Instead as media type application/geo+json or application/json shall be used and .json or .geojson should be used as file extensions.
This would greatly improve the compatibility with existing clients.
For example, all existing STAC clients I've checked of would not support reading the GeoJSON part of JSON FG due to the new media type. That will likely be the same in other ecosystems.

Meeting 2024-05-27: This is a good point. Whether a separate media type is helpful or not depends on the use case. A separate media type helps in a content negotiation scenario where an API can provide GeoJSON (without JSON-FG extension), JSON-FG (with or without the GeoJSON compatibility mode). In the case of a weblink with the "type" attribute, a GeoJSON media type would be more helpful for a GeoJSON-aware software (which does not know JSON-FG).
Since we cannot do both at the same time, the question which is which is the more important use case.
This would be simpler, if the GeoJSON media type would support parameters to express extensions, but this is not the case.
Additional input is welcome.

If servers support JSON FG and GeoJSON, what would be a reason to not deliver JSON FG by default so that content negotiation would be required?
Having that question in mind but not an obvious answer in mind, I'd say the compatibility is more important.

Meeting 2024-08-19:
We are leaning towards not registering a new media type. Clients can use to "conformsTo" member to determine that the content is JSON-FG.
However, this would require that we also allow to include non-WGS84 coordinates in "geometry" to conform to OGC API Features Part 2 when the GeoJSON geometry is requested in a non-WGS84 CRS.
We need to find a way that does not make the split between "geometry" and "place" even more complex/confusing. We should create a table that lists all the different cases and see, if we can provide guidance what to create when. Maybe this can be accommodated using additional API building blocks. Maybe we can use the "profile" query parameter, because all the variations are valid for the GeoJSON media type.

I think that we can and should use the profile query parameter in OGC API Features to distinguish the variations in the GeoJSON representation when requesting application/geo+json:

profile=rfc7946: response conforms to the GeoJSON RFC; coordinates in "geometry" can be in another CRS, if this is part of the request (prior arrangement); no JSON-FG conformance class will be stated in "conformsTo" (if provided) and no "place" member.
profile=jsonfg: response conforms to JSON-FG Core.
profile=jsonfg-plus: same as jsonfg; in addition, if the "place" member of a feature is provided / not null a valid non-null "geometry" member will also be provided. This is the same as the current media type "application/fg+json; compatibility=geojson".

"rfc7946" should be the default since this is the current behavior, if "application/geo+json" is requested. Existing APIs may also continue to support the current draft media types for backwards compatibility.
We should add a discussion about this in the clause on media types.
In addition, JSON-FG should formally define the profiles and the values for the HTTP query parameter profile, that is, the relevant API building blocks. This could be in a separate requirements class with Web API as the standardization target type. APIs can include the associated conformance class in their conformance declaration, if they support JSON-FG.

Meeting 2024-09-30: @cportele will implement this in the current pull request.

Meeting 2024-11-25:

"rfc7946" should be the default since this is the current behavior, if "application/geo+json" is requested

This only applies, if the API supports that profile. If only JSON-FG is supported, the API will use another profile as the default.

@jerstlouis - To follow-up on our discussion in the call, the profile of the response will be expressed using a link with rel="profile" according to RFC 6906. This is what is currently specified in OGC API Features Part 5.

I'm not sure I understand how a rel="profile" in a link relates to media types?
I understand that media types sometimes add a profile such as application/geo+json; profile=jsonfg but I'm not sure I understand how that relates to a link relation type. It may even conflict with other use-cases where a specific relation type is required, I think.

@cportele from a quick glance at RFC 6906 (I did not read the whole thing in detail), it's not immediately obvious was this means, may also be what @m-mohr is not sure about.
My guessed-understanding is that as an FG-JSON response to a GET request would include a link response header like this:
Link: <http://www.opengis.net/spec/json-fg-1/0.2/conf/core"; rel="profile"

Is this correct? Thanks.

@jerstlouis
It should be something like:
Link: <http://www.opengis.net/def/profile/ogc/0/json-fg>; rel="profile"

Profiles should be registered with the Naming Authority.
There are, for example, profiles registered for the GML Simple Features profiles. The one for Level 0 is: http://www.opengis.net/def/profile/ogc/2.0/gml-sf0.

I do find this use of a link relation type quite confusing (is that the primary purpose of RFC 6906, or a side-purpose of it?).

It is the primary purpose. The title of the RFC is: "The 'profile' Link Relation Type".
I find it pretty straightforward. A profile is a concept identified by a URI. The link relation type allows to add links to a resource that state that the resource representation conforms to the referenced profiles. This is no different to a "license" link to states a license that applies to the resource.

@cportele Thanks for the clarifications.

I find it pretty straightforward.

I guess a question related to that confusion is whether the profile link should be in the "links" of the JSON content, the response headers, or both?

@jerstlouis
This really should be discussed in OGC API Features as it is not related to JSON-FG. JSON-FG will not depend on OGC API Features. In JSON-FG we will add a requirement for the profile link in the JSON content. This is unrelated to the query parameter "profile" used in an API (unless you request JSON-FG via the API).

I'm curious what's the plan to make this profile parameter apply to /items and /items/{itemId} whereas here it was intended to target /schema.

I don't understand. Requirements Class "Profile query parameter" is the basic requirements class for the "profile" parameter without identifying the resources to which is applies. This is the job of additional requirements classes depending of this requirements class.
The Requirements Class "Profiles for feature references" is an example, which defines the parameter for the Features and Feature resources.
I am not aware that we are using the parameter on Schema resources yet.

Would this profile parameter be added as a new requirement (and/or req.class) to the Core req. class of Part 1 in a revision, in addition to being a requirement of Part 5 - Schemas?

It might be an option to move the basic, general requirements class for the "profile" parameter to Part 1.

This really should be discussed in OGC API Features as it is not related to JSON-FG.

Right, sorry this is turning into a side discussion. Not sure we need to open a new issue though...

I am not aware that we are using the parameter on Schema resources yet

My bad, sorry, somehow I had the impression that this section 14 was changing the profile of the schema rather than the features...

Requirements Class "Profile query parameter" is the basic requirements class for the "profile" parameter without identifying the resources to which is applies.

I guess for me I see "Section 13" as a ModSpec "Requirement Module" which is like an abstract requirement class, in this case for a web API query parameter building block (which can be defined on the building block register -- if that's still a thing), which really does not need to be defined as a requirement class at all, but instead can be re-used and tailored for specific resources, like Section 14 does for /items and /items/{data} (and a more general one targeting these resources should probably also be in Part 1), and which should also correspond to what we specify in OGC API - DGGS for /dggs/{dggrsId}/zones/{zoneId}/data.
i.e., the abstract requirement module not attached to particular resources does not need to be a req. class in any OGC Standard document or have its own URI. Sorry for the digression -- let's open a new issue in Features if we need to discuss further.

I still don't get it.
Let's say I have a STAC Item and want to link to it:
{
  "href": "./item.json",
  "type": "application/geo+json",
  "rel": "item"
}

Let's assume that STAC Item is also a valid JSON-FG and I want to express that through the media type, how would I do that?
That's also where my confusing comes from. I initially thought I'd have to set "rel": "profile" which would conflict with "rel": "item".
I guess it somehow works that the item.json from the example would include the <http://www.opengis.net/def/profile/ogc/0/json-fg>; rel="profile" in the header (and/or in the links array of the JSON response), but not sure how that would solve it in other contexts. Also, what's the difference between having a link with "profile" relation type in the body compared to exposing a conformace class?
Note: I'm fine with not having a separate media type, that was the main target of the issue. But this "compromise"(?) seems to be confusing to me. Maybe due to a lack of examples?

@m-mohr
You cannot have it both ways. The original comment was that "./item.json" in JSON-FG should declare its media type as "application/geo+json" and not a JSON-FG media type since it is also GeoJSON, which we agreed to. There is no way that I know to express in the same link that it is also JSON-FG (unless we introduce OGC-specific extensions to links).
What you can do is to add another link with an anchor to state the profile of the anchor resource:
{
  "href": "http://www.opengis.net/def/profile/ogc/0/json-fg",
  "anchor": "./item.json",
  "rel": "profile"
}

@cportele "anchor" is not in the common (or Features) link schema either, is that a non-OGC-specific extension that should be included there?.
Seems like it would be a lot cleaner (and easier for clients) to embed the profile information in a "profile" key within the same link than needing 2 links to link to one resource in a fully qualified manner (assuming that could be as non-OGC-specific as anchor).

Okay, understood. That anchor thing seems heavily breaking to me. The actual href should be item.json and then you don't have a rel to describe the purpose. I think this is a bad idea honestly.
If at all, this should probably be something like:
{
  "href": "./item.json",
  "type": "application/geo+json",
  "profile": "http://www.opengis.net/def/profile/ogc/0/json-fg",
  "rel": "item"
}

Otherwise you break semantics of the rel type and also the usability of an href.

It would be good to decide on what the values of those /def/profile/ogc/0/ should be.
The proposed values for the profile parameter above were:

rfc7946
jsonfg
jsonfg-plus

But the examples provided so far use json-fg.
In addition to that, I am still utterly confused whether it is FG-JSON or JSON-FG or both (and this repo is extremely difficult to find as feat-geo-json, with no match for features or geometry or json-fg or fg-json or jsonfg or fgjson).
We would like to reflect all this as properly as made possible by the timing in the Candidate DGGS API.

"anchor" is a standard link parameter (like "rel"), see RFC 8288. I do not understand what would be broken by using "anchor" in a link, this is just using the standard web conventions for links and their semantics. I understand that parsing two links can be more complex for clients.
Inventing a link target attribute "profile" is another approach. However, this information would only be understood by OGC-aware clients as it introduces OGC-specific semantics that nobody else uses (AFAIK).

RFC 8288 doesn't really describe a JSON encoding of links, so it'a bit of a stretch to argue with it. But from a practical perspective, what I see usually is that clients expect a href to be the actual resolvable link to follow. So it eventually ends up in html as e.g. link.title If the link.href is now something different this totally breaks user applications. All links would point to http://www.opengis.net/def/profile/ogc/0/json-fg, which results in an error 400. I'm not even sure how to distinguish in which case to use anchor and href. So I really think this is a bad design, at least for the link objects.

Question: Let's say we want to use this profile property outside of OGC spec (e.g. openEO and STAC), can we make use of it although we don't register our profiles to the OGC NA due to not being OGC standards / having no access to OGC NA? Or do we need our "custom_profile" property (which seems like a bad idea)?

The value of "profile" won't be restricted to OGC URIs. That is, openEO and STAC can mint their own URIs for profiles.


Spacing between custom button cards

I am using the soft ui with a custom button card integrated in a grid card. However, there is too much spacing in between the buttons and I would like shorten the distance between the buttons. How do I do that?

Hi @flyingdutchman7588, you would need to adjust the margin option inside the style.