docs: react-native 0.73 support + enhancements

Describe your changes
Update documentation to reflect react-native 0.72 + 0.73 support and enhancements.
Type of change

[x] This change requires a documentation update

Test Plan

yarn test

Checklist before requesting a review

[x] A self-review of my code has been completed
[x] Tests have been added / updated if required
[x] Documentation has been updated to reflect these changes

@crherman7 do we have an explanation how it picks the version of template based on react-native version in package.json? should we include that?

@crherman7 do we have an explanation how it picks the version of template based on react-native version in package.json? should we include that?

Yeah that's a good point we can probably expand upon how versioning works in general since it's automatic.


Windows server question

From the Examples section I understand that there are some environment variables that need to be set in order to run the demeteorized nodejs application.

How would these variables be defined on a Windows server?

Is it possible to have these in a configuration file as part of the nodejs app itself, so that more than one meteor nodejs app can be deployed on the same server (using different mongo dbs and ports)?

The middle step npm install` here:

$ cd /your/output/directory/bundle/programs/server
$ npm install
$ MONGO_URL=mongodb://localhost:27017/test PORT=8080 ROOT_URL=http://localhost:8080 npm start

...does that install the demeteorized nodejs application, like any other nodejs app?

And, most importantly:
4. Do you know how to answer (and get the bounty for) this question in detail, with using demeteorizer: http://stackoverflow.com/q/33829284/271873

Try $ set MONGO_URL=mongodb://localhost:27017/test && set PORT=8080 && set ROOT_URL=http://localhost:8080 $$ npm start

This is outside of the scope of Demeteorizer

The npm install will install the dependencies required by the generated
application. Also, be sure that you are using the correct version of node
when running this part - the correct version is in the generated package.json

Looks like that is already answered :)

Sorry it took so long to get to this!


icon: color theme-override not working when no depth is set

TuSimple/naive-ui version (版本)
2.33.2
Vue version (Vue 版本)
3.2.38
Browser and its version (浏览器及其版本)
OperaGX
System and its version (系统及其版本)
Win 11
Node version (Node 版本)
/
Reappearance link (重现链接)
https://codesandbox.io/s/intelligent-water-7p4by0?file=/src/Demo.vue
Reappearance steps (重现步骤)
open reprod
Expected results (期望的结果)
all icons should be red.
Actual results (实际的结果)
only icons with depth are red
Remarks (补充说明)

This is expected. By default icon's color is currentColor.

This is expected. By default icon's color is currentColor.

But why does it work with depth?

This is expected. By default icon's color is currentColor.

But why does it work with depth?

Depth means you expect icon has a exact color.


archival akash node runs OOM on certain query/queries

Archival Akash node 0.30.0 (managed by Shimpa)
archival akash node typically consumes about 26 GiB of RAM. (on Shimpa's and my archival akash node)
root@akash-archive:~# free -m
               total        used        free      shared  buff/cache   available
Mem:          128805       27891         798           0      100115       99685
Swap:           4095          10        4085

It appears that on certain query/queries it eats up whole memory servers has until Linux OOM kills it.
Queries:

Multiple getTxsEvent(MsgDelegate, MsgUndelegate, MsgExec) queries were run - This happens when the client falls behind in indexing. The responses for these queries are paginated, so, our client was looking for maybe page 100 of 105 pages.

If you need more info regarding the queries, please ping cryptoninja1234 on Discord.
OOM:
it runs whole way up to 118 GiB where OOM kills it:
[Wed Mar 13 05:49:40 2024] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=docker-a1e02df52f5f9108e2ade5090ce89ebb25abb8cce561f87239f096b39c9b5160.scope,mems_allowed=0,global_oom,task_memcg=/system.slice/docker-a1e02df52f5f9108e2ade5090ce89ebb25abb8cce561f87239f096b39c9b5160.scope,task=akash,pid=3044672,uid=0
[Wed Mar 13 05:49:40 2024] Out of memory: Killed process 3044672 (akash) total-vm:132212608kB, anon-rss:124655832kB, file-rss:384kB, shmem-rss:0kB, UID:0 pgtables:252652kB oom_score_adj:0

Shimpa (shimpa on Discord) increased RAM from 128 GiB to 192 GiB and cryptoninja1234 (on Discord) will retry his queries.

archival node was upgraded to v0.32.1 and the client has been up since about 08:35 AM
no issues so far.

While issue was cured by increased RAM allocation - leaving open for @troian review.

I'll open a discussion for this one and going to close this issue.


Fix git push error for protected CLA branch

@bharney : Thanks for your contribution! The author(s) have been notified to review your proposed change. @bharney

Microsoft authors of articles need to make updates through the private repository so the updates can be staged and validated by the current validation rules. After you review staging and fix all validation issues, you can add the sign-off comment to let the PR reviewers know the updates are ready to be merged.It's easy to access the private repo version of your articles in GitHub. Just add -pr to the URL, as follows:
Public repo URL: https://github.com/Microsoft/azure-docs/blob/master/articles/azure-portal-overview.md
Private repo URL: https://github.com/Microsoft/azure-docs-pr/blob/master/articles/azure-portal-overview.md
We have closed this pull request. Please resubmit the updates through the private repo. If you need perms to the private repo, see the contributor guide instructions


Reduce SRAM region content for TI CC26X2X7

DRAFT ONLY - staged for inclusion elsewhere

Moved to 24338 following good results here.


dashboard "start" does not start the experiment in the containers

Hi,
I've been going through the experiments and following the advice from the ReadMe and video series, but i'm stuck at the point where the user clicks on the "start" button in the dashboard. It tells me that all containers have "started" but when I docker ps into the containers, they are not running the executable at all. I can make them do so by running ./client.sh or ./server.sh by hand. Is that normal ?
Best,
MRandl

Hi,
Just pushed the fix for this problem. If you have other problems please let us know.
Best Regards,
Sebastião Amaro

481628d fix his.


cdist: init at 7.0.0

I think I addressed all comments. Integration library is still experimental, according to upstream:

WARNING: cdist integration helper functions are not yet stable!

So I'd rather not split binary and library until somebody comes and say that he wants it.

@fabaff Can you take another look, please?

@happysalada Can you take a look, please?


Implemented few operations for the wasm instruction set

The following operations would be implemented through the PR

[x] reduce_max
[x] reduce_min
[x] swizzle
[x] bitwise_cast
[x] shuffle
[x] fast_cast

cc @JohanMabille not sure if the failing check is related to the changes on the branch. I think they might not be related :(

The failure is indeed unrelated, I need to update the SDE version.

@anutosh491 I've fixed the issue on master, can you rebase your branch to check everything is fine?


Bit cask disk map delete modified

Tips

Thank you very much for contributing to Apache Hudi.
Please review https://hudi.apache.org/contribute/how-to-contribute before opening a pull request.

What is the purpose of the pull request
(For example: This pull request adds quick-start document.)
Brief change log
(for example:)

Modify AnnotationLocation checkstyle rule in checkstyle.xml

Verify this pull request
(Please pick either of the following options)
This pull request is a trivial rework / code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end.
Added HoodieClientWriteTest to verify the change.
Manually verified the change by running a job locally.

Committer checklist

[ ] Has a corresponding JIRA in PR title & commit

[ ] Commit message is descriptive of the change

[ ] CI is green

[ ] Necessary doc changes done or have another open PR

[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

@danny0405 @leesf  hi, review the pr plz, some modify maybe more suitable

@hudi-bot

@hudi-bot run azure

lgtm.

When running the Hudi Kafka Connect Sink, although the writes are successful, the sink keeps throwing the following repetitive errors, which can be noisy to users.  After reverting this PR locally, the errors are gone.
14:23:40.363 [task-thread-hudi-sink-0] ERROR org.apache.hudi.common.util.collection.BitCaskDiskMap - BitCaskDisMap close error
java.nio.channels.ClosedChannelException: null
	at sun.nio.ch.FileChannelImpl.ensureOpen(FileChannelImpl.java:110) ~[?:1.8.0_265]
	at sun.nio.ch.FileChannelImpl.force(FileChannelImpl.java:379) ~[?:1.8.0_265]
	at org.apache.hudi.common.util.collection.BitCaskDiskMap.close(BitCaskDiskMap.java:270) [hudi-kafka-connect-bundle-0.10.0-rc2.jar:0.10.0-rc2]
	at org.apache.hudi.common.util.collection.ExternalSpillableMap.close(ExternalSpillableMap.java:261) [hudi-kafka-connect-bundle-0.10.0-rc2.jar:0.10.0-rc2]
	at org.apache.hudi.connect.writers.BufferedConnectWriter.flushRecords(BufferedConnectWriter.java:121) [hudi-kafka-connect-bundle-0.10.0-rc2.jar:0.10.0-rc2]
	at org.apache.hudi.connect.writers.AbstractConnectWriter.close(AbstractConnectWriter.java:95) [hudi-kafka-connect-bundle-0.10.0-rc2.jar:0.10.0-rc2]
	at org.apache.hudi.connect.transaction.ConnectTransactionParticipant.cleanupOngoingTransaction(ConnectTransactionParticipant.java:249) [hudi-kafka-connect-bundle-0.10.0-rc2.jar:0.10.0-rc2]
	at org.apache.hudi.connect.transaction.ConnectTransactionParticipant.handleAckCommit(ConnectTransactionParticipant.java:209) [hudi-kafka-connect-bundle-0.10.0-rc2.jar:0.10.0-rc2]
	at org.apache.hudi.connect.transaction.ConnectTransactionParticipant.processRecords(ConnectTransactionParticipant.java:127) [hudi-kafka-connect-bundle-0.10.0-rc2.jar:0.10.0-rc2]
	at org.apache.hudi.connect.HoodieSinkTask.put(HoodieSinkTask.java:114) [hudi-kafka-connect-bundle-0.10.0-rc2.jar:0.10.0-rc2]
	at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:581) [connect-runtime-3.0.0.jar:?]
	at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:329) [connect-runtime-3.0.0.jar:?]
	at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:232) [connect-runtime-3.0.0.jar:?]
	at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:201) [connect-runtime-3.0.0.jar:?]
	at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:186) [connect-runtime-3.0.0.jar:?]
	at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:241) [connect-runtime-3.0.0.jar:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_265]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_265]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_265]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_265]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_265]

Reverting this change for 0.10.0-rc3


Fix bug where finding the max heatmap location after non-maximum suppression returned empty list

np.where(peaks == peaks.max()) was returning an empty list for some reason. I suspect it is due to floating point equality comparison.
This PR uses a more robust way that guarantees that a result will be returned.
I've also looked into partially patching PCK.

@nicolepeverley i like your changes better. Let's merge both and keep yours for PCK-related fixes for now? I know Corey was also taking a look at it from the original paper.

yeah, the pck still is not fixed with this PR. See attached.
pck.csv


Auth for non admin not working

Various attempts on this. I am able to authenticate with the admin password, but not the non-admin password.
I tried making it 6 characters, no complex characters but still no luck :(

If you are already authenticated as an admin, you do not need to authenticate as a non-admin. Are you trying to authenticate as a non-admin for a user that is not already authenticated? If so what response do you get from the bot?

This is true. A user which shouldn't have admin access is trying to authenticate.
The response I get back is "Incorrect password."
I then used the admin password and it worked.
I thought the password may be too complex so I simplified it to only letters, restarted the container, and deleted the DB. This still didn't work.

There are no minimum or maximum complexity requirements for the password, but it is case-sensitive. I have tested with full sentences including punctuation and it works fine. For example: searcharr_password = "Authenticate me to use Searcharr!" and /start Authenticate me to use Searcharr!.
The password probably should not include the bot's name. It should work, but not if the bot is mentioned in the message. The bot will strip out Telegram entities from the message--it will remove /start (or /start:botName) and any usernames that are mentioned.
Make sure your password is not configured to start or end with a space.
The password can also be blank (searcharr_password = ""), and then simply /start will authenticate the user.
Have you tried the same password you're using for your admin password? If it works for admin authentication then it should work for non-admin authentication as well. Just make sure to change the admin password while you test, because the bot will check if the input matches the admin password first.
You might want to enable debug logging by including the -v flag when running the bot. If you're using docker-compose, add command: python3 searcharr.py -v  at the end and recreate the container (restarting isn't enough).

Got this when adding that in:
ERROR: The Compose file './docker-compose.yml' is invalid because:
Invalid top-level property "command". Valid top-level sections for this Compose file are: version, services, networks, volumes, and extensions starting with "x-".

It has to be indented on the same level as image, network mode, volumes, etc.

2020-11-09 18:50:01,795 -    DEBUG - searcharr(140683459513120):110 - Received start cmd from [MODIFIED[USER]] 2020-11-09 18:50:01,795 -    DEBUG - searcharr(140683459513120):736 - entities={<telegram.messageentity.MessageEntity object at 0x7ff36b65cdc0>: '/start', <telegram.messageentity.MessageEntity object at 0x7ff36ba1b8b0>: '5RWtEbAxyZ'} 2020-11-09 18:50:01,795 -    DEBUG - searcharr(140683459513120):740 - Stripped entities from message [/start 5RWtEbAxyZ]: [] 2020-11-09 18:50:01,795 -    DEBUG - searcharr(140683459513120):908 - Executing query: [SELECT * FROM users WHERE id=?;] with args: [(566459207,)]... 2020-11-09 18:50:01,796 -    DEBUG - searcharr(140683459513120):955 - Database connection established [/app/data/searcharr.db]. 2020-11-09 18:50:01,796 -    DEBUG - searcharr(140683459513120):921 - Query result for user lookup: None 2020-11-09 18:50:01,796 -    DEBUG - searcharr(140683459513120):926 - Did not find user [566459207] in the database.
In the settings.py
searcharr_password = "5RWtEbAxyZ"  # Used to authenticate as a regular user to add series/movies

Seems after removing and re-compiling I am not able to authenticate at all...

It's detecting the password as a Telegram entity that should be stripped from the message:
entities={<telegram.messageentity.MessageEntity object at 0x7ff36b65cdc0>: '/start', <telegram.messageentity.MessageEntity object at 0x7ff36ba1b8b0>: '5RWtEbAxyZ'}
Stripped entities from message [/start 5RWtEbAxyZ]: []

It is not doing that for me when I use the same password:
entities={<telegram.messageentity.MessageEntity object at 0x04A12B38>: '/start'}
Stripped entities from message [/start 5RWtEbAxyZ]: [5RWtEbAxyZ]

I have no idea why Telegram would be parsing the password as an entity. What Telegram client are you using? Does the password look like normal plain text when you send?
I still find it very strange that the same password would work for admin authentication but would be stripped out as an entity for non-admin authentication. Both go through a single method to strip entities and check password validity. Are you doing anything differently when sending the /start command with admin vs. non-admin passwords?

You're right.
I copied and pasted the passwords straight from the terminal. Formatting followed through with it which probably caused what you mentioned. It's all working now.
Thanks so much for your help <3


user directory outside repository

!>> strongly recommend to create a user directory that is outside the repository or library location, maybe in ~/slab as it makes it more difficult for new programmers to contribute/use the library and makes operation a bit more opaque. (where is my calibration file again?). also becomes a bigger problem when you aren't guaranteed permissions, eg in the case where someone installs it as a system package with sudo pip install slab

I think that is a good idea - can you create a folder in the user directory on Windows/Mac with ~/ ?

I'm still thinking about this. Points to consider:

Permissions are a major issue, and the scenario where the module is installed system-wide with sudo, but used with lesser permissions is likely.
Putting data in the lib location is indeed suboptimal and opaque. We tried to remedy this somewhat with the slab.data_path() function (i.e. within Python, you rarely need to think about where this files are).
There are standard locations for application data (and different ones for global and user-specific data), like ~/.local/share, ~/Library/Application Support, or C:/Users/<USER>/AppData/Roaming in the different OSes, but while these may be correct, they may be equally opaque to the user (hidden in Linux and MacOS).

The home dir might not be optimal, because it is always user-specific, but the data we put in this folder should ideally apply to all users (they describe the hardware setup (calibration) or universal data (KEMAR)). Perhaps the data_path should be user-settable (that path would still need to be saved somewhere, but that could happen once at install time).

@OleBialas pathlib.Path.home() would get you the right dir in all OSes.

After looking it this a bit more, the home dir is strongly discouraged for putting app data. I see two options:

using something like pypi.org/project/appdirs/ to use the correct directories on each OS (but they aren't any easier to find than the package location)
changing the architecture to remove the need for this sort of package data.

Looking at other packages and use cases, option 2 appeals to me. The KEMAR HRTF is the only data that we can't generate in the module. I suggest we provide a convenience function to auto-download it to a given directory (also useful for testing). Then it's up to the user to load it and hand it to methods in slab.Binaural that require an HRTF. Some data derived from KEMAR is auto-cached (like the interaural level spectrum), but this is somewhat opaque and it's better practise to let the user generate these data and keep them around in a variable if needed or save them to disk. I think this is more transparent.
This also touches issue #35: We should not save state information (like the intensity calibration) anymore. This is currently not consistent (samplerate and level are not saved), and there is considerable potential for unwanted side effects due to the behind-the-curtains treatment of the calibration (am I using it at the moment? Has someone overwritten my default?).
Best practise is how we treat the samplerate: There is a sensible default if you just want to play around a bit, but any serious experimental script would specify the rate etc. at the top.

I now implemented the approach above. The KEMAR HRTF is still provided (bz2-compressed now) and made available via slab.HRTF.kemar(). The user has no access to the data path anymore and now writing rights are needed. This also eliminates hidden states (calibration is not saved and applied automatically and the level spectrum is not cached for KEMAR).


Cult weapons need updating for nyano melee values

Description

I merged them in https://github.com/Nyanotrasen/Nyanotrasen/pull/1027 we can probably use them somewhere

Weapon values if necessary will need to be looked at holistically.


ID alert name not completely populated

When importing the exported analytics rules file, it does not import correctly because the "id" field is not complete: it lacks the proper analytics ID number after "/alertRules/":
Example of exported analytics rule:
            "id": "[concat(resourceId('Microsoft.OperationalInsights/workspaces/providers', parameters('workspace'), 'Microsoft.SecurityInsights'),'/alertRules/')]",             "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/823742b8-ea31-411e-816b-c0d9cd849cca')]",             "type": "Microsoft.OperationalInsights/workspaces/providers/alertRules",
I think there's an error when asking for the $alertName at the code:
                $WorkspaceArtifact.id = "[concat(resourceId('Microsoft.OperationalInsights/workspaces/providers', parameters('workspace'), 'Microsoft.SecurityInsights'),'/alertRules/$($alertName)')]"                 $WorkspaceArtifact | Add-Member -NotePropertyName "apiVersion" -NotePropertyValue "2021-09-01-preview" -Force
Adding manually the ID number to the exported json file it works when importing:
            "id": "[concat(resourceId('Microsoft.OperationalInsights/workspaces/providers', parameters('workspace'), 'Microsoft.SecurityInsights'),'/alertRules/d6932371-374b-43ff-b40e-781950eb871c')]",             "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/d6932371-374b-43ff-b40e-781950eb871c')]",             "type": "Microsoft.OperationalInsights/workspaces/providers/alertRules",
¿Could you check?
Also, this is an awesome tool. Thank you for the effort and hope not to ask a silly thing.

@acd84 I created a PR to correct this.
Without delving too much into the script, I think the $alertName variable on line 216 is mistakenly not defined.

@acd84 - Issue has been resolved with @jonod8698 PR


Memory Limited Joins (Externalized / Spill)

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
Support Joining "arbitrarily" large inputs (e.g. when one or both of the inputs don't fit in the available RAM)
This ticket concerns the memory used the JoinExec operator -- it doesn't cover other potential targets (e.g. externalized sort or grouping). That will be covered by other tasks tracked by #587
Describe the solution you'd like

Allow DataFusion users to specify a RAM budget (aka via the config introduced in #1526) and have their queries complete running without the join by exceeding the budget allocated to it via the memory manager.

There are many potential ways to Limit the memory used while joining. The classic way is "sort-merge-join" where the input data on both sides is sorted according to the equality predicates (using externalized sort, such as described in #1568 ) and then the two join inputs are streamed through and the output computed, depending on the type of Join required (INNER, LEFT, RIGHT, SEMI, etc)
I personally think the following would be the ideal behavior for DataFusion Joins:

A single Join operator that behaved like like the following:
Hashed one input or the other, if the memory limit was not exhausted, behave like the existing JoinExec
If memory was exhausted, switch to a merge join strategy:  sort the one or both sides that didn't fit in memory using externalized sort on the equality predicates, then stream them back through the Join

The rationale for a runtime switch is that then the optimizer (which always has limited information) can't make the "wrong" choice related to join order
In case anyone wants some "light reading" this stuff is nicely described by Goetz Graffe in "Query evaluation techniques for large databases":  https://scholar.google.com/citations?view_op=view_citation&hl=en&user=pdDeRScAAAAJ&citation_for_view=pdDeRScAAAAJ:u5HHmVD_uO8C
Online link: http://infolab.stanford.edu/~hyunjung/cs346/graefe.pdf
Describe alternatives you've considered
Have the Optimizer (aka the HashBuildProbeOrder ) pick both the order and the algorithm to use based on statistics or heuristics
Context
This is follow on work from the great PR from @yjshen in https://github.com/apache/arrow-datafusion/pull/1526 and part of the story of limiting memory used by DataFusion https://github.com/apache/arrow-datafusion/issues/587
Task Tracking

[x] #2242
[x] #2314
[ ] #2315
[ ] #2316
[ ] Research on using row format for fast join comparison

I would love to implement this algorithm in DataFusion:
https://arxiv.org/abs/2010.00152
Sort-based grouping and aggregation
Thanh Do, Goetz Graefe
https://arxiv.org/pdf/2010.00152.pdf

I would love to implement this algorithm in DataFusion:
https://arxiv.org/abs/2010.00152 Sort-based grouping and aggregation Thanh Do, Goetz Graefe

Maybe you can share it at the next meeting 😄

+1 well look forward 😊

I would love to implement this algorithm in DataFusion:
https://arxiv.org/abs/2010.00152 Sort-based grouping and aggregation Thanh Do, Goetz Graefe

Maybe you can share it at the next meeting 😄

+1 well look forward 😊

I would love to implement this algorithm in DataFusion:
https://arxiv.org/abs/2010.00152 Sort-based grouping and aggregation Thanh Do, Goetz Graefe

Haha, that's great! I have talked with @houqp about this paper before.

Related https://github.com/apache/arrow-datafusion/issues/141

I would propose we do this in several steps:

[ ]  Provide a classic SortMergeJoin implementation that is less memory bound itself (but move the need of memory management to the sort operator, which we already have memory controlled).
[ ] Follow-up choice 1: Consolidate HashJoin and SortMergeJoin, providing a unified JoinExec, and do adaptive execution as @alamb suggested above.
[ ] Follow-up choice 2: incorporate a cost-based join optimizer to choose the most suitable physical plan: sort-based or hash-based.

@yjshen  sounds like a great plan to me -- and I see that @richox has an implementation for SortMergeJoin already :)

Looks like now that we are able to fail query in case of breaching memory limit, it's the right time to start working on spills.
Taking into account what has been written above, I guess, next step could be to implement spilling for MergeJoin -- if our final intention to have runtime HJ -> MJ conversion it would be nice to have some guarantees that MJ won't fail for the same reason. I believe MJ spilling logic could be pretty straightforward without any pitfalls -- the naive approach would be to spill buffered-side data in .ipc batch by batch, more complex, and, probably, more effective way to think about would be spilling concatenation of all batches that fit in memory.
After that we could follow-up with what is mentioned in issue description -- HJ -> MJ conversion (I believe #2628 worth to be mentioned here, to unlock ability for more hash joins to be converted), and spilling mechanisms for other join implementations.
If this plan is fine, I'd like to take a stab at MJ spilling.

I think we should leverage (reuse) the existing ExteraSorter used in spilling sort

After some reading, it looks like that for MergeJoin case it makes sense to split spilling part of ExternalSorter (responsible for tracking spillable batch buffer) and sorting one -- we already have sorted streams in MJ, so spillable buffer is all that needed -- I believe this implementation could be acceptable and first I'll try to stick to this way.
And, further, ExternalSorter also seems to be a perfect fit for HashJoin -- this is the case where it can be reused as it is for resorting both build and probe sides of HJ.


[BUG] case of automatic token refresh failure

Is this issue already tracked somewhere, or is this a new report?

[X] I've reviewed existing issues and couldn't find a duplicate for this problem.

Current Behavior
My EDL token is not getting refreshed.
import earthaccess
auth = earthaccess.login()
earthaccess.search_datasets(instrument="oci")

---------------------------------------------------------------------------
HTTPError                                 Traceback (most recent call last)
File [/srv/conda/envs/notebook/lib/python3.10/site-packages/earthaccess/search.py:86](https://oss.oel.smce.nasa.gov/srv/conda/envs/notebook/lib/python3.10/site-packages/earthaccess/search.py#line=85), in DataCollections.hits(self)
     85 try:
---> 86     response.raise_for_status()
     87 except requests.exceptions.HTTPError as ex:

File [/srv/conda/envs/notebook/lib/python3.10/site-packages/requests/models.py:1021](https://oss.oel.smce.nasa.gov/srv/conda/envs/notebook/lib/python3.10/site-packages/requests/models.py#line=1020), in Response.raise_for_status(self)
   1020 if http_error_msg:
-> 1021     raise HTTPError(http_error_msg, response=self)

HTTPError: 401 Client Error: Unauthorized for url: https://cmr.earthdata.nasa.gov/search/collections.umm_json?has_granules=true&include_granule_counts=true&instrument=oci&page_size=0

The above exception was the direct cause of the following exception:

RuntimeError                              Traceback (most recent call last)
Cell In[1], line 3
      1 import earthaccess
      2 auth = earthaccess.login()
----> 3 earthaccess.search_datasets(instrument="oci")

File /srv/conda/envs/notebook/lib/python3.10/site-packages/earthaccess/api.py:80, in search_datasets(count, **kwargs)
     78 else:
     79     query = DataCollections().parameters(**kwargs)
---> 80 datasets_found = query.hits()
     81 logger.info(f"Datasets found: {datasets_found}")
     82 if count > 0:

File [/srv/conda/envs/notebook/lib/python3.10/site-packages/earthaccess/search.py:88](https://oss.oel.smce.nasa.gov/srv/conda/envs/notebook/lib/python3.10/site-packages/earthaccess/search.py#line=87), in DataCollections.hits(self)
     86     response.raise_for_status()
     87 except requests.exceptions.HTTPError as ex:
---> 88     raise RuntimeError(ex.response.text) from ex
     90 return int(response.headers["CMR-Hits"])

RuntimeError: {"errors":["Token [Bearer eyJXXXX_0FQ] has expired. Note the token value has been partially redacted."]}

Expected Behavior
My EDL token is expired, and I was expecting earthaccess to generate a new token for me (because #764 was purportedly fixed).
Steps To Reproduce
Wait until your EDL token expires ... then try the above.
Environment
- OS: Ubuntu 22.04.5 LTS
- Python: 3.10.14
- earthaccess installed from git commit 9784e4cee01a9d8d7514faea11cd3b80a12ae40f

Additional Context
No response

This does seem strange, particularly since I believe that about a month and a half ago, I had confirmed that this automatically created a new token for me, as my EDL token had also expired at that point.
Have you created a new token yet? If not, I have something I'd like you to do to help us debug this.

Alas, I had to carry on, and created a new token. I can try what you'd like me to do on ... 12/25/2024. Or maybe someone else will experience this sooner and can try, so do tell.

Alas, I had to carry on, and created a new token. I can try what you'd like me to do on ... 12/25/2024. Or maybe someone else will experience this sooner and can try, so do tell.

No worries. Mine expires on 11/11, so I'll set a reminder for myself to come back to this on 11/12, just to be sure it is expired.


Build and deploy the metrics server

The metrics server is deployed alongside the OSC controller to collect SLI/SLO oriented metrics. It is currently assumed to be shipped in the OSC monitor image. This is suboptimal since the OSC repo doesn't build the OSC monitor image.
Build it and deploy it in the same container image as the controller. This is clearer and ensures a custom operator build also has a functional metrics server. This will also avoid the e2e check in the upstream CI to fail because the OSC monitor image isn't published yet.

/test sandboxed-containers-operator-e2e

CI is full green. This means that the e2e test was able to :

build the OSC operator and OSC metrics server
put them in the OSC operator image
push the OSC operator image to the pipeline registry
fully deploy the OSC operator and OSC metrics server from the pipeline registry (thanks to https://github.com/openshift/release/pull/59590)

Moved to draft so that @beraldoleal can jump in.

/test

/test all


pppd exited with code 2

Hi,
when starting nxBender I get this:

./nxBender --server netextender.marc-cain.com -u XXX -p XXX -d master-access-ad --fingerprint eb:8e:59:33:0f:8b:75:f3:e8:35:76:69:e3:f2:37:00:fc:d5:43:1a
INFO: Logging in...
INFO: Starting session...
INFO: Dialing up tunnel...
INFO: pppd exited with code 2
INFO: Shutting down...

I googled and this exit code means "An  error  was detected in processing the options given, such as two mutually exclusive options being used.".
But I have no clue what that means.

Hi, can you please post the output with --show-ppp-log? Also, please use the latest master, it's just been updated :)

Actually, I just found out this will happen if you don't run as root, are you root / using sudo?


Read in realtime mode stops listening

Hi!
I noticed that Read node in realtime mode stops listening for database changes after some time.
Restarting node red does help.
I need reliable 24/7 change listener.
Is there a way to detect the problem and force the listener to reconnect to Firebase?
Or make it reconect to Firebase periodically?
Could you please give me some advice how to diagnose and fix my problem?
Greetings,
Mike

Did you get this solved, or found a work around?

The problem disappeared after hardware upgrade (to RPi 4) and full system / node-red reinstall. I am not sure what exactly caused the issue, I noticed also some network connectivity problems with the old setup.
Now it is working 24/7 flawlessly.
It looks like the problem was not related to the code, sorry to bother you.


"SecKeychainFindGenericPassword failed with error code -25293" when calling RegisterCache()

We're trying to enable user token caching in our desktop application in OS X. We modeled the caching after the manual test app https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/blob/d32a5a6eb699cc652ca08c477140af1a0a0dbd42/tests/ManualTestApp/Program.cs. However, when running on mac, once we sign in the first time, get a Keychain Access entry and then try to sign in again, we get the error "SecKeychainFindGenericPassword failed with error code -25293" with the following stack trace:
at Microsoft.Identity.Client.Extensions.Msal.MacKeyChain.DeleteKey(String serviceName, String accountName) at Microsoft.Identity.Client.Extensions.Msal.MsalCacheStorage.ClearCore() at Microsoft.Identity.Client.Extensions.Msal.MsalCacheHelper.RegisterCache(ITokenCache tokenCache).
The problem goes away after we manually go into Keychain Access, click on the keychain entry corresponding to our token, and change the Access Control setting to "Allow all applications to access this item". I noticed the wiki mentions this:

Mac offers a more restricted scope, ensuring that only the application that created the cache can access it, and prompting the user if others apps want access.

Does this mean this is the intended behavior? Is there anyway to circumvent this issue that doesn't require users to manually change the Keychain Access Control settings for their entry?

@bgavrilMS ?

@bchuecos - apologies for the late reply. Is this happening all the time? What version of MacOs are you using?

@bchuecos : proposing to close this one, as you have not replied.
Feel free to reopen if you still have the issue.


Add an entry for galacteek

Add an entry for the galacteek browser

@pinnaculum Since the last merge your PR conflicts with the latest status of the README.md.
Please resolve conflicts and push your changes. Thanks! 😊

@pinnaculum Thanks for your contribution! 🎉 Have a nice day 🌈


net/http: Redirect conditions are incorrect

I believe the functions Client.doFollowingRedirects and shouldRedirect{Post,Get} are incorrect according to http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html. Of the 4 redirect codes considered in this code, 301, 302, and 307 should redirect for GET and HEAD only. 303 should always redirect, and always convert the method to GET.
Currently 302 and 303 are redirecting POST and PUT, and converting to GET in doing so. I doubt anyone is relying on the current broken behaviour as it doesn't work as expected for due to #3665, which prematurely consumes the original request body when using POST/PUT in a safe way.

Too late for Go 1.5. See also #9348.

I believe the functions Client.doFollowingRedirects and shouldRedirect{Post,Get} are incorrect according to http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html. Of the 4 redirect codes considered in this code, 301, 302, and 307 should redirect for GET and HEAD only. 303 should always redirect, and always convert the method to GET.

This document has been superseded. In 2014, RFC2616 was replaced by multiple RFCs (7230-7237). See IETF Documents for more information.
This document has been superseded by https://tools.ietf.org/html/rfc7231#section-6.4

   HTTP defines a set of status codes for the purpose of redirecting a
   request to a different URI ([RFC3986]).  The history of these status
   codes is summarized in Section 6.4 of [RFC7231], which also
   classifies the existing status codes into four categories.

   The first of these categories contains the status codes 301 (Moved
   Permanently), 302 (Found), and 307 (Temporary Redirect), which can be
   classified as below:

   +-------------------------------------------+-----------+-----------+
   |                                           | Permanent | Temporary |
   +-------------------------------------------+-----------+-----------+
   | Allows changing the request method from   | 301       | 302       |
   | POST to GET                               |           |           |
   | Does not allow changing the request       | -         | 307       |
   | method from POST to GET                   |           |           |
   +-------------------------------------------+-----------+-----------+

   Section 6.4.7 of [RFC7231] states that HTTP does not define a
   permanent variant of status code 307; this specification adds the
   status code 308, defining this missing variant (Section 3).

this specification adds the
status code 308, defining this missing variant (Section 3).

It seems Go doesn't have a constant for 308, and explicitly does not consider it for redirects. This led to unexpected behaviour for someone using a program implemented in Go.
I can't find a technical reason this is not supported; is it just a matter of making Go know about 308's?

@lgarron, the constant was added during the Go 1.7 dev cycle. You can see it at https://tip.golang.org/pkg/net/http/#pkg-constants
It seems that 308 should be followed.

@lgarron, the constant was added during the Go 1.7 dev cycle. You can see it at https://tip.golang.org/pkg/net/http/#pkg-constants
It seems that 308 should be followed.

Ah, excellent! I didn't know about tip.golang.org, thanks for the link.


docs: add distroless example

Which problem is this PR solving?
This provides users an example of how to set up the various components included in the honeycomb distro without using the distro.
Short description of the changes
This adds an example of using the following components with a vanilla OTel setup:

local visualization through the SpanLinkExporter + SimpleSpanProcessor
deterministic sample
baggage span processor

@MikeGoldsmith i bumped the dependencies in https://github.com/honeycombio/honeycomb-opentelemetry-go/pull/202 to keep it cleaner. PTAL

We're not going ahead with breaking up the distro components. Let's close this PR for now and add docs to use otel-contrib components, when available, instead.


[Removal]: Small Carrot Raccoon

Hotspot Name
Small Carrot Raccoon
Hotspot b58 Address
112AKUbMEQCE1iGBT1U7s8bTrzpHPTGtqQw9CEsYA2p5WU8ipfox
Discord Handle
Marco-polo#0495
Hotspot Manufacturer
Bobcat
Removal Reason
shared wallet, emrit type, all hotspots in denylist
Modifications
No
Extra forwarders
No
Extra antennas
Yes
Additional Information
External 6 dbi omni, 30m building
Great site, but all telecom towers with good earning did end up the denylist.
So i have todo this 50+ times ?
More info via PM, discord.
Regards
A 500+ telecom tower owner.

We have taken into account this removal request in the next iteration of the denylist. It may take some time before it's processed. This is an automated comment due to the volume of addition and removal requests. A future tool is in the works to provide more insight into the analysis approach made by the Helium team and community members that maintain this list.


Documentation needs to be updated to reflect new npm package name

Since adding all of the ergo npm packages to the @accordproject scope, the documentation is now out of date.
For example, occurences of npm install ergo-cli -g should be replaced with npm install @accordproject/ergo-cli -g

Fixed by PR #66


Use name instead of host in CLI parameters

Hi,

https://deployer.org/docs/7.x/basics

Some of my hostnames are very complex and hard to type, possible to allow the use of names instead? e.g. production, sandbox etc
Thank you!

You can filter by labels, like: dep deploy name=sandbos.
but you need to set them first. Happy to provide an example once I have a proper keyboard

https://github.com/deployphp/deployer/issues/2576#issuecomment-884832851

Hope that helps!

Or just host alias: host(prod)->setHostname(long.host-name)

Or just host alias: host(prod)->setHostname(long.host-name)

Ohh cool! I thought host had to be the FQDN. Perhaps call it handle instead? Thank you!

It’s in the docs https://deployer.org/docs/7.x/hosts

Yes, but what I'm trying to say is, it doesn't jump out right to me that host can actually not be a hostname , given that it is named host and the example used a example.org FQDN.
It's ok, just a suggestion only. Thank you.

@bilogic The idea is a good one. But I think we should stay with "host" as central entry point for configuration. Maybe it makes sense to rename the parameter 🤔

Or we can improve docs and add more examples.


Use DisplayVersion for OpenRCT2.OpenRCT2 0.4.0

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[x] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Related to #94743

Microsoft Reviewers: Open in CodeFlow

/AzurePipelines run

@wingetbot run


Made input path relative to the module that imported it

When using this module with electron-packager, process.cwd() is set to the home directory of the user, which means that input will not resolve properly.
This makes input resolve relative to the module that imported it, as expected when requiring modules in node.
For example if you have a project that looks like this
shortcuts/
 - index.js
 - definitions.js

Then loading this inside of shortcuts/index.js
var shortcuts = require('electron-shortcut-loader')('./definitions')
```
Will work as expected with apps packaged using electron-packager and apps started using the electron command line.

Could you squash your commits first? and don't update version of package

Squashed and reverted package bump

I was aiming for maximum readability, hence the variables. Feel free to make any changes you like.


Not able to delete process if it has categories or labels.

Cannot delete process if:

Tasks in the process have been categorized.
Labels have been applied to the process.

@SjoenH can you give me more information what this is regarding?
Tested in test and Qa, and I don't have problem deleting processes.

Okay I guess it might have been @SegarJJ  that experienced this bug.
@Magos Do you have an input on when this was a problem?

In production, deleting a process should currently fail if

Tasks in the process have been categorized.
Labels have been applied to the process.

The fix is currently active on dev, test and QA environments.

Let's update this story to reflect what is fixed and needs to be tested before releasing.

I updated the main text, @Magos & @ntorsen, give a thumbs up if this looks correct.


Update buildroot to 1.16

What type of PR is this?
Updates the buildroot and go.mod to 1.16 so that we can make a move to go 1.16 in odo.

/approve


Shaped Translated

Hey Phil,
I've setup translations. So if you can add those to your system that'd be great.
I'll need to work on the class features part next, but this should cover the main sheet.

Looks great! Some stats on the specific translations:
(keep in mind this is indivitual words, not strings. You have a bunch of strings that are really long and that make these 2 very different statistics)
Russian: 1% translated
Italian: 100% (the system says 99%, but I think it's not recognizing words that are the same or don't have an It translation)
French: 100% (98%, same as above)
German: 6% (it looks like about 50% of the full strings are translated, but it's all the short ones, leaving all the things like the full-sentence class feature descriptions untranslated)
You can continue to have your personal translators make changes (this will definitely be the fastest option, unless you already have friends on the translation team :P), but if you can have them make changes to the files in the translations folder that will make it easier on me. Otherwise our volunteers will hopefully get to your sheet when they have a chance. I'm only just now seeing updates to the French version of our sheet. It's a pretty slow process, since like the sheet authors, they are also volunteers.

I will talk to the other devs tomorrow about the static value translation thing for selects and whatnot tomorrow. I will respond in the thread when we figure something out.

Ya, the French and Italian guys are on it. We'll see if the others pick up parts (though the parts that the German sheet is missing is mainly the class features bit).
I now realize that I renamed the "translations" folder to "i18n" to match what is common in web development and your verbiage for data-i18n. But that perhaps causes a problem. Should I revert that back?
And thanks for looking into the translations on a select, a span, and the roll template.
Thanks again Phil

I know i18n is usually the name of the folder and everything (that's what it is for the rest of the Roll20 site), but I want to keep everything as accessible as possible for brand new authors at a first glance at the repo. Everyone knows what a "translation" is, much less likely that they will know what i18n is. The system I have set up to manage/upload/download/read the translations looks for the "translations" folder in the root of the character sheet's folder.
I start using i18n for the actual tool and everything because if they are actually going to use the tool, they have either looked it up or will already recognize "i18n" at this point.

so revert back to translations?

Yes please.

Done.

Awesome, thanks!

Also, I posted about the new tool in the thread, in case you hadn't seen it.

Saw it, looks great!


Segmentation fault when initial score size doesn't equal to data

If the init_score file does not exists or its size does not match training data, I think it should get same result without init_score file.
But the log is like this (on ubuntu 16.04):
[LightGBM] [Info] Loading parameters .. finished
[LightGBM] [Info] Start loading initial scores
[LightGBM] [Error] Initial score size doesn't equal to data, score file will be ignored
[LightGBM] [Info] Finish loading data, use 0.042958 seconds
[LightGBM] [Info] Number of data:7000, Number of features:28
[LightGBM] [Info] Finish training initilization.
[LightGBM] [Info] Start train ...
[LightGBM] [Info] re-bagging, using 5600 data to train
[LightGBM] [Info] cannot find more split with gain = -inf , current #leaves=3
[LightGBM] [Info] Iteration:1, training's l2 loss : -nan
[LightGBM] [Info] Iteration:1, regression.test's l2 loss : -nan
[LightGBM] [Info] 0.000481 seconds elapsed, finished 1 iteration
[LightGBM] [Info] cannot find more split with gain = -inf , current #leaves=3
[LightGBM] [Info] Iteration:2, training's l2 loss : -nan
[LightGBM] [Info] Iteration:2, regression.test's l2 loss : -nan
[LightGBM] [Info] 0.000923 seconds elapsed, finished 2 iteration
[LightGBM] [Info] cannot find more split with gain = -inf , current #leaves=3
[LightGBM] [Info] Iteration:3, training's l2 loss : -nan
[LightGBM] [Info] Iteration:3, regression.test's l2 loss : -nan
[LightGBM] [Info] 0.001280 seconds elapsed, finished 3 iteration
[LightGBM] [Info] cannot find more split with gain = -inf , current #leaves=1
[LightGBM] [Info] Can't training anymore, there isn't any leaf meets split requirements.
[LightGBM] [Info] 0.001448 seconds elapsed, finished 4 iteration
[LightGBM] [Info] Finished train
Segmentation fault (core dumped)
Another bug report on Mac:
lightgbm(32636,0x7fffb2c553c0) malloc: *** error for object 0x7fa7d2c03b10: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
Btw, since multiclass classification scores have different formats, it's not supported yet.

it seems init_socres_  is delete, but forget to set to "nullptr".
Is it the same error in Mac ?

Yes, same error on Mac.
Perhaps you could change Error to Fatal here. Because when users set init_score, they probably want it works rather than be ignored. (They might not see the Error log.) They can make their own decisions by deleting init_score.

@wxchan thanks, it is a good point.


Replaced the injection of sidecars to use the mutating webhook admission controller

Signed-off-by: Juraci Paixão Kröhling<EMAIL_ADDRESS>

The test is currently failing, because the cert provisioning + webhook endpoint have to be prepared before the test.

I'm closing this PR, and might reopen in the future if we decide to take this path.


PIP 68 Suggestions

Suggestions for modifications to PIP 68: Exclusive Producer by @merlimat
The purpose of these suggestions is to place more control on the system admin for what is/isn't allowed w.r.t exclusive producing.

Only two ProducerAccessModes and separate  enum for requested behavior when exclusive produce ownership is contested

/**
 * The type of access to the topic that the producer requires.
 */
public enum ProducerAccessMode {
    /**
     * By default multiple producers can publish on a topic.
     */
    Shared,

    /**
     * Requestexclusive access for producer.
     */
    Exclusive
}

/**
 *
 */
public enum ProducerContentionBehavior {

   /**
    * Producer requests broker generate hard-error  when exclusive produce ownership of the topic cannot be immediately assumed
    */
   Fail,

   /**
    * Producer requests the broker enqueue this producer
    */
   Enqueue,

   /**
    * Producer requests that the broker forcibly terminate the existing producer's session and install this producer instead
    */
   Displace
}

Additional settings in broker.conf:

# Default topic producer access mode
defaultTopicProducerAccessMode=[shared|exclusive]

# Whether exclusive producer queuing is allowed by default
allowProducerQueuing=[true|false]

# Maximum number of producers allowed to queue up for exclusive status
maxProducerQueueLength=<some num>

# Whether broker allows producers to forcibly displace one another by default
allowExclusiveProducerDisplacement=[true|false]

# Topics will be given a grace period during which they will be prevented from being shutdown when an admin has evicted all the producers of a topic
producerEvictionTopicShutdownGracePeriodSeconds=<some num>

Modify/Add Admin APIs to:

Add APIs to override the five broker.conf settings at the tenant/namespace/topic level

$ pulsar-admin namespaces set-producer-policies tenant/namespace --exclusive --allowQueing --maxQueueLength 10 --disallowDisplacement --producerEvictionGracePeriod 60

Show current exclusive producer and producer queue in internal-info response

Add a call to evict all producers (could be used to 'trigger' a new leader election)

pulsar-admin topics {persistent|non-persistent}://tenant/namespace/topic evict-all-producers

Add a call to evict specific producer (could be the current exclusive producer or one of the enqueued ones)

pulsar-admin topics {persistent|non-persistent}://tenant/namespace/topic evict-producer --producerName xyz

Closed as stale and no one seems to work on it. Please create a new issue if it's still relevant to the maintained versions.


How to identify which object is been clicked on in grab mode?

In normal status, I can track the 'mouse:down' event to find out which object is been clicked. But in grab mode, all objects in canvas are not clickable. How can I know which object is being clicked in grab mode?

I think you can identify the grabbed object in Object:Moved Event

canvas.getActiveObject() - Returns the currently active object.

If you wanted to do something if the active / selected object is of a specific type, you can do:
canvas.getActiveObject().get('type')

Active Doesn't mean that the object is grabbed ?

Actually, I thought you aren't able to click on anything in grab mode.. You're just panning around the canvas. In that case, you are right about using events.

Anyone solved this in a nice way?

This seems like a fabric.js question/issue more than a fabricjs-viewport issue.
As @anans21 mentions getActiveObject returns the selected object but it doesn't work correctly multiple objects selected (and the fabric devs have expressed that they have no intention of fixing it IIRC.)

You need to use getActiveGroup to get the selected objects.

getActiveGroup works for multiple (would be nice it was available when only one was selected as well) but there is no activeObject/Group in grab mode

You can also make an object clickable in grab mode by setting the objects' selectable property to true.
if (canvas.getActiveGroup()) {
    canvas.getActiveGroup().forEachObject(function(obj) {
        // Do something with the selected objects...
    });
} else {
    var object = canvas.getActiveObject();
    // Do something with the object selects...
}

This is how you make objects selectable in grab mode. My above post shows how to get the selected objects, or object if only one object is selected.
if (canvas.isGrabMode) {
    canvas.selection = true;
    canvas.forEachObject(function(obj) {
        obj.selectable = true;
    });
}

Oops.  Ignore my comments I forgot grab mode was panning and not
interactive mode.
On Tue, Jun 16, 2015 at 12:41 PM, Sameer Anand<EMAIL_ADDRESS>wrote:

This is how you make objects selectable in grab mode. My above post shows
how to get the selected objects, or object if only one object is selected.
if (canvas.isGrabMode) {
canvas.selection = true;
canvas.forEachObject(function(obj) {
obj.selectable = true;
});
}
—
Reply to this email directly or view it on GitHub
https://github.com/rstgroup/fabricjs-viewport/issues/23#issuecomment-112543473
.


paypal  OrderCapture 接口404

{404 {"name":"RESOURCE_NOT_FOUND","details":[{"issue":"INVALID_RESOURCE_ID","description":"Specified resource ID does not exist. Please check the resource ID and try again."}],"message":"The specified resource does not exist.","debug_id":"0e66ef35b0d61","links":[{"href":"https://developer.paypal.com/docs/api/orders/v2/#error-INVALID_RESOURCE_ID","rel":"information_link","method":"GET"}]} 0x14000392600 0x140003485a0}

2024/07/30 16:26:38.586643 request.go:44: [DEBUG] >> PayPal_Url: https://api-m.paypal.com/v2/checkout/orders/xxxxxxxxx/capture
2024/07/30 16:26:38.586648 request.go:45: [DEBUG] >> PayPal_Req_Body: null
2024/07/30 16:26:38.586657 request.go:46: [DEBUG] >> PayPal_Req_Headers: http.Header{"Accept":[]string{"/"}, "Authorization":[]string{"Bearer A21AANHELTVoBxvrrN4JV0HKB7LDn1kkb9PU9Y33dTMY1u1Cjczkt62QOE6ueurIn86afMJHpXb8pD0DBkpKk3Y_s6-f6jIeQ"}, "Content-Type":[]string{"application/json"}}
2024/07/30 16:26:39.026282 request.go:53: [DEBUG] >> PayPal_Response: 404 > {"name":"RESOURCE_NOT_FOUND","details":[{"issue":"INVALID_RESOURCE_ID","description":"Specified resource ID does not exist. Please check the resource ID and try again."}],"message":"The specified resource does not exist.","debug_id":"35fdff7f0c64e","links":[{"href":"https://developer.paypal.com/docs/api/orders/v2/#error-INVALID_RESOURCE_ID","rel":"information_link","method":"GET"}]}

这个是正常的，你需要考虑这个情况，超时取消


Issue: DD-MM-YYYY HH:mm format Year has an additional - in front

Issue: DD-MM-YYYY HH:mm format Year has an additional - in front

eg. the field value is
02-10-2018 15:03
picker format I use is DD-MM-YYYY HH:mm
when the picker appear, the year drop download shows
-2018
-2019
Same issue appears in all kind of browser.
Only when the value is blank at beginning, things are OK.

Why my issue is closed with unsolved.
You can try it in your sample page. Set a value and date format year is not in front, you will definitely see this error.
It's such a big issue and if you don't solved it , US and EU person cannot use your code

I had been resolved, but not released to a new version yet...

the issue is OK in latest version 1.0.0 now.
Thanks


ARIMA, SARIMA models on CPU Util Data

I have implemented ARIMA and SARIMA models on https://github.com/numenta/NAB/blob/master/data/realAWSCloudwatch/ec2_cpu_utilization_5f5533.csv .closing Issue #4

I have implemented both ARIMA and SARIMA Models....look into it...... @JoeRishon @manikyabard

!bounty 100 not giving full as some stuff missing


Support multiple structured data roots, possibly managed by different extensions, within a single repository

Additionally, implement change request at Paneron level instead of extension level, and make CR span the whole repository.

This had been implemented a while back.


Add example notebook

Here, I added an example notebook that shows the complete workflow: model training, data processing and prediction.

@QianqianHan96 here I added an example notebook mainly to show how to optimize the emulator workflow using dask, dask-ml and xarray. There might be small differences in handling data for example, LAI interpolation using data from the previous year. I didn't run the example notebook on snellius with a large dataset. I created this pull request, just in case you would like to add the example to the repository.

Hi Sarah, thanks for adding the example notebook. I will have a look at it probably at the end of this month when I start producing fluxes dataset. Now I am still working on cleaning the training data.
I will let you know after I go through your optimized script.

Hi Sarah,
I started working on this pull request this week. Your script is way better organized than the script I shared with you in May.
However, I found that for LAI "preprocessing", for short period and just Europe, there is no problem. But if I do it for one year and global scale, it is super slow (I tried to use same chunk as you "500", but there are too many tasks: 370000 tasks). So maybe it's better to do interpolations first and then export to zarr for LAI, in this way we decrease 90 times data volume from 300m to 9km.

Hi Sarah,
I started working on this pull request this week. Your script is way better organized than the script I shared with you in May. However, I found that for LAI "preprocessing", for short period and just Europe, there is no problem. But if I do it for one year and global scale, it is super slow (I tried to use same chunk as you "500", but there are too many tasks: 370000 tasks). So maybe it's better to do interpolations first and then export to zarr for LAI, in this way we decrease 81 times data volume from 1km to 9km.

I found that if we change "chunks=500" to "chunks ={'longitude': 250, 'latitude': 250,'time':750}", there is no problem for global one year. For small data, "chunks=500" is okay, but big data we need to specify chunks for each dimension.


iOS app crash after calling MapController.setStaticPosition

I added a MapSingleTapping listener on the MapController with the following code :
late MapController _mapController;
final _markerId = "USER_LOCATION";

@override
void initState() {
    super.initState();

   _mapController = MapController.withPosition(
        initPosition: GeoPoint(
          latitude: 40.4
          longitude: -3.7
        ),
      );

   _mapController.listenerMapSingleTapping.addListener(advancedSelection);
}

  void advancedSelection() async {
    if (_mapController.listenerMapSingleTapping.value != null) {

      _mapController.setStaticPosition(
            [_mapController.listenerMapSingleTapping.value!], _markerId);

      _mapController
          .goToLocation(_mapController.listenerMapSingleTapping.value!);

  }
}

the idea of this code is whenever the user tap on the map, a marker will be inserted on that point, it works flawlessly on Android, but on iOS the app start to crash when the user tap on the map on the line of  _mapController.setStaticPosition(.....
There's no errors logged on debug console after the app get crashed
Tested on iPhone 14 Simulator
Flutter Version : Flutter 3.7.6 • channel stable •
flutter_osm_plugin: ^0.51.0

you need to setStaticPosition need to use setMarkerOfStaticPoint before
I recommand to use addMarker this api used to add marker each time user click
for setStaticPosition used to static markers such bus station/coffee/resturants/taxis staff like that

Thanks @liodali for your reply, I found a good workaround using addMarker and RemoveMarker, so it can remove the previous marker and add new one.


Adds note about enclosures.

Fixes #671.

@orta Does Peril have an org-wide ignore list?

@ashfurrow  - yeah, here,
weird bit is that it should actually include READMEs

oh, it doesn't that's OK, this is fine, will see where it goes

the dupe is a bit worrying though


[Feature]: Performance & Resiliency update for MIOpen applicability checking

The applicability check in fin_class is currently designed to distribute work to processes relative to the available number of compute threads on one machine.
There are some performance issues with submitting the result queries to sql and rejoining all of the processes created upon completion.
Since applicability is cleared at the start and results are committed upon completion, there is a significant window in which results could be lost due to early termination or sql interaction failures.
This code would benefit from some more resiliency and abbreviated result commit times.

@cderb @alexandraBara I was wondering if this will get addressed through Alex's Celery update?

resolving in pr
https://github.com/ROCm/MITuna/pull/967


Incompatible gmake2 generators

I added UTs for premake-qt, results are there
Issues are not necessary from premake-qt side, but impact directly premake-qt, so I post here.
So:

basic (qt modules handling (include/library paths) are good.
msvc/ninja is good. (ninja has issues with duplicate rules with multi config (not show in UTs))
~gmake/xcode doesn't handle custom-rule on there side, so cannot handle uic/moc/qrc. basic not tested.~ we need custom-build, and they handle it. xcode still not tested.
uic/moc/qrc are not handled for other (gmake2, cmake, codeblocks) generators (patch already exists in premake core to (partially?) fix Codelite).

Some advancements:

https://github.com/premake/premake-core/pull/1951 fixes Codelite generation.
Code::Blocks doesn't handle custom build on headers which generate cpp files. (And would require premake-qt fix for qrc).

For gmake2, there is still your opened ticket https://github.com/premake/premake-core/issues/1916
Codelite generation is now fixed (by above PR in premake-core :-) )

Next one I'm working on is for premake-cmake module (partially fixed).

Just tested gmake (not gmake2), and it is working :-)

The single quote in message ("Xxx'ing file") is problematic with some (versions of some) tools.
"old" cmake version has that issue.
premake-cmake fixed.
codeblocks cannot be fixed
Remain gmake2 and testing xcode.

xcode4 is also working :)
so only gmake2 isn't working

Created https://github.com/premake/premake-core/pull/2047 to fix gmake2


Fix typos

Noticed a few typos across the code base while doing #677.

@Andarist Could you take a quick look? Not much to review here I think.

@janosh the changes look good to me, thank you for that. There are some merge conflicts and I can't merge it right now - this could have been caused by my recent merges to the main branch, sorry for that. Would you be able to resolve those conflicts?

@Andarist All conflicts resolved. Would be cool if this could be merged soon since it does affect 20 files so more conflicts are likely.

Thank you for that ❤


failing in installing the VM will install a VDisk

Issue migrated from https://api.github.com/repos/Jumpscale/digital_me/issues/41, opened by @islamTaha12
Description
I tried to create a VM with the wrong ZT, so the installation of the VM failed but the VDisk was created
Steps
In [117]: data = {
     ...:  'nodeId': 'ac1f6b2d34b0',
     ...:  'disks': [{
     ...:          'diskType': 'ssd',
     ...:          'size': 1,
     ...:          'mountPoint': '/mnt',
     ...:          'filesystem': 'btrfs',
     ...:          'label': 'xtremx'
     ...:      }],
     ...:  'image': 'ubuntu',
     ...:  'memory': 2048,
     ...:  'cpu':4,
     ...:  'zerotier': {'id': '1c33c1ced09cf5fe', 'ztClient': 'newWorker2'},
     ...:  'configs': [{'path': '/root/.ssh/authorized_keys', 'content': mykey,
     ...: 'name': 'sshkey'}]
     ...:  }
     ...:

In [118]:

In [118]:

In [118]: vmservice = robot.services.create('github.com/jumpscale/digital_me/vm/0.0.1', service_name='vm003', data=data)

In [119]: vmservice.schedule_action('install').wait(die=True)
Traceback (most recent call last):
  File "/opt/code/github/zero-os/0-robot/zerorobot/task/task.py", line 79, in execute
    self._result = self._func()
  File "/opt/code/github/zero-os/0-templates/templates/vm/vm.py", line 86, in install
    vm_sal.deploy()
  File "/opt/code/github/jumpscale/lib9/JumpScale9Lib/clients/zero_os/sal/VM.py", line 496, in deploy
    self.start()
  File "/opt/code/github/jumpscale/lib9/JumpScale9Lib/clients/zero_os/sal/VM.py", line 383, in start
    authorize_zerotiers(publiczt, self.nics)
  File "/opt/code/github/jumpscale/lib9/JumpScale9Lib/clients/zero_os/sal/utils.py", line 6, in authorize_zerotiers
    nic.authorize(identify)
  File "/opt/code/github/jumpscale/lib9/JumpScale9Lib/clients/zero_os/sal/abstracts.py", line 167, in authorize
    network = self.client.network_get(self.networkid)
  File "/opt/code/github/jumpscale/lib9/JumpScale9Lib/clients/zerotier/ZerotierClient.py", line 309, in network_get
    resp = self.client.network.getNetwork(id=network_id)
  File "/usr/local/lib/python3.5/dist-packages/zerotier/network_service.py", line 58, in getNetwork
    return self.client.get(uri, None, headers, query_params, content_type)
  File "/usr/local/lib/python3.5/dist-packages/zerotier/client.py", line 70, in get
    return self._handle_data(uri, data, headers, params, content_type, self.session.get)
  File "/usr/local/lib/python3.5/dist-packages/zerotier/client.py", line 57, in _handle_data
    res.raise_for_status()
  File "/usr/local/lib/python3.5/dist-packages/requests/models.py", line 939, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://my.zerotier.com/api/network/1c33c1ced09cf5fe
---------------------------------------------------------------------------
ErrorConditionObject                      Traceback (most recent call last)
/usr/local/bin/js9 in <module>()
----> 1 vmservice.schedule_action('install').wait(die=True)

/opt/code/github/zero-os/0-robot/zerorobot/task/task.py in wait(self, timeout, die)
    129                 logger.critical('task is in error state, but no eco')
    130             else:
--> 131                 raise self.eco
    132
    133         return self

ErrorConditionObject: 404 Client Error: Not Found for url: https://my.zerotier.com/api/network/1c33c1ced09cf5fe

Now list the zdb namespaces and the vdisk services in the zod node

as u can see there is ..._xtremx disk however the vm wasn't created.
Env
zos 1.4.1
js9 development

commented by @serboctor
A failing install doesn't clean-up created resources/services......uninstalling the vm service will clean-up everything.


Scale unit not defined on recommendations page

This page uses the term "scale unit" (in the recommendations) without definition. I found it hard to understand with no context. Perhaps make the first occurrence of "scale unit" link to https://docs.microsoft.com/en-us/azure/architecture/framework/mission-critical/mission-critical-application-design#scale-unit-architecture ?

Document details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: a77e8fe7-68a1-a984-8843-1569d7843f4d
Version Independent ID: a77e8fe7-68a1-a984-8843-1569d7843f4d
Content: Cross-cutting concerns of a mission-critical workload on Azure - Microsoft Azure Well-Architected Framework
Content Source: well-architected/mission-critical/mission-critical-cross-cutting-issues.md
Service: architecture-center
Sub-service: well-architected
GitHub Login: @CalCof
Microsoft Alias: calcof

Thanks Keith, we will incorporate your feedback and add a link.

It appears this has been addressed.  Please re-open with additional details if help is still needed.

#please-close


Update data-fetching.md

Just a minor suggestion regarding clarity.

Thanks, @colinthedev ! This was a really helpful suggestion!
I updated the link to a relative one, to make it match the rest of our link formats, and linked specifically to the relevant part of the page. I also just used the more generic wording, since both of those possibilities are available at that page so we don't need to list them both here.
Much more accurate, and cleaner here now! Thanks again!


variable explorer shows value in .NET instead of target language

Ex. For python variable, i should see dataframe the same way I would in Python notebook

This is what it looks like in a Python Jupyter notebooks today

We might consider adding string properties e.g. KernelValueInfo.DisplayValue and KernelValueInfo.DisplayType so that remote kernels can populate these independent of local formatting configurations.

The core issue here has been resolved, though a Python-specific implementation might still be needed.


Request: implement unsigned integer type for xarray resample skipna

I would like to be able to use the skipna switch with unsigned integer types in netCDF4 files I'm processing with xarray.
Currently it appears to be unsupported:
~\AppData\Local\Continuum\Miniconda3\envs\IOOS3\lib\site-packages\xarray\core\duck_array_ops.py in f(values, axis, skipna, **kwargs)
184                 raise NotImplementedError(
185                     'skipna=True not yet implemented for %s with dtype %s'
--> 186                     % (name, values.dtype))
187             nanname = 'nan' + name
188             if (isinstance(axis, tuple) or not values.dtype.isnative or
NotImplementedError: skipna=True not yet implemented for mean with dtype uint32
Thanks,
Marinna

I first thought skipna=True does not make sense for uint array because NaN is a float, but I just noticed it would be inconvenient for Dataset containing float and uint.
Sent a PR.

I'm generating netCDF4 files that have a variety of variables that have values representing things that are integer in nature and can't physically be negative.  So to save space and provide as much bandwidth in the variable, I was careful to use float, int, unit types as appropriate.  And then could not use resample with skipna because uint was not supported.  I have gone back and made the uints into ints, skipna now works on my data, and I might now need to use 64 bit instead of 32 which defeats my efforts to keep the files as small as possible.  It seems to me that if skipna is implemented for one or two types it should work for all of them.
It's also quite possible I've mistaken something - I'm an experienced programmer in C and MATLAB and very new to python and have learned the lard way that what's obvious in C or C++ is not so in python.


Discern music from spoken word

🚀 The feature
I'm wondering if there are any researchers out there that can search an audio stream like an mp3 and determine whether or not the track is purely spoken word versus a song or music? I can think of a number of potential techniques (such as phonetic search) that have varying levels of accuracy. Perhaps there are ffmpeg scripts out there that I might not be aware of.
Motivation, pitch
I am working on a project wherein I generate a folder of mp3 tracks, the tracks are either spoken word or music (never both) and I simply want to separate the music from the spoken word without having to listen to each track.
Alternatives
I don't believe there are any viable alternative solutions other than listening to each track
Additional context
I've done a bunch of research on phonetics and phonetic search specifically.  I haven't been able to find any projects that focus on this feature specifically.  A thought is being able to discern the presence a specific instrument (in almost every case, either a piano and/or drums are playing.)
I should specify that none of the music is under any licensing constraints.  Nor is it any music that can be matched to existing fingerprints for known songs.

Hi @ifeatu, I think voice activity detection (detecting human's voice in audio) is capable for your task. If the VAD model can detect speech from the audio, the audio can be classified as speech, otherwise it is music.


Separate smaller core

nano-spawn takes the best of Execa and trims it down. The source code size is ~14KB and ~400 SLoC, while Execa is ~220KB and ~6500 SLoC.
However, nano-spawn still includes multiple features that many users might not use: pipelines, output iteration, npm binaries on Windows, local binaries, result.durationMs, preserving Node CLI arguments and version. Those are all commonly useful, but not 100% of the times.
On the other hand, it does include some minimal features that we can assume almost every user needs all the time: promise-based interface, proper error handling, output buffering.
This PR is an attempt to separate those latter features into a smaller core. The idea would be to separate it into its own repository, and directly use it in nano-spawn. I called it pico-spawn but any other name works. :)
For comparison, its source code size would be ~2.8KB and ~90 SLoC, so it's roughly 5 times smaller than nano-spawn. It fits in a single file.
This does not change the logic, so the current tests pass as is.
This would be quite nice for users who want an even smaller package (with even fewer features).
pico-spawn < nano-spawn < Execa
What are your thoughts on this @sindresorhus?

I'm not sure about this one. Feels like going a bit too far with the amount of layers. And 14kb should not be a problem for anyone. This is for Node.js, not the browser. 14kb is close to nothing.

promise-based interface, proper error handling, output buffering.

This is pretty much just promisify(childProcess.execFile).

I think we should rather try to get something like pico-spawn into Node.js itself, piece by piece. First, they should have child_process/promises.

This is pretty much just promisify(childProcess.execFile).

promisify(childProcess.execFile) has the following problems that this would fix:

Does not throw on non-0 exit code or signal termination
Does not handle subprocess.std* stream errors, which leads to unhandled promise rejections
The stdout/stderr output is only buffered on success, not failure
No interleaved output
The subprocess command is missing from the result or error, which can make it hard to debug
promise.child is a ChildProcess that might not have been spawned (e.g. if the command was misspelled). With nano-spawn/pico-spawn, it is a promise that is rejected in such cases.

That being said, I can close this PR if you want?

promisify(childProcess.execFile) has the following problems that this would fix in ~90 SLoC:

Does not throw on non-0 exit code or signal termination
Does not handle subprocess.std* stream errors, which leads to unhandled promise rejections
The stdout/stderr output is only buffered on success, not failure
No interleaved output
The subprocess command is missing from the result or error, which can make it hard to debug
promise.child is a ChildProcess that might not have been spawned (e.g. if the command was misspelled). With nano-spawn/pico-spawn, it is a promise that is rejected in such cases.

I added some of these to https://github.com/sindresorhus/nano-spawn/issues/32#issue-2482863168

Sounds good. Closing this PR. :+1:


hilbert cuda encoder

the repo implements the transformation from voxel coordinates to hilber codes.
It seems to address the limitation mentioned in this article.
and hope this helps!

Thanks. It's a good work. We will consider integrating this method.


Add bone correction storage to save user input for each correction bone

Currently the 3 bone correction input fields for position, rotation and scale are shared for all bones.
If users change the selected correction bone the values stay visually the same but a changed input is correctly applied to the new bone. Changing back to an already corrected bone does not show the previous applied values so users need to memorize them.
The idea is to store all correction bone input in a correction bone dictionary. Iff a previous bone is selected again all input fields should update with the previous correction values. If the skeletons or current animation changes the correction bone dictionary needs to be reset.
Would fix usability issues seen in #19 video.

Added by commit d4e970f64d58739faf736c20da357a3b75878219


How to handly copy operations on Templates?

I usually use one Waveguide template and then modify just the datatype (because the Dose in our system is stored in the datatype). For this I use copy.copy(). If I now copy the waveguide template, it keeps the same name and afterwards structures that only sweep the Dose (DoseTests) are not regenerated in the GDS, because the duplicate detection thinks it is the same structure (because the Template hase the same name).
It is a edge case, not sure if it is worth fixing (by overriding the copy function of the WaveguideTemplate).
I fix it for now that after copying, I rewrite the name using
cur_wgt = copy.copy(wgt)
cur_wgt.name = tk.getCellName("WaveguideTemplate")

Hey gyger,
Sorry for the long delayed response on this!  I like your suggestion of overriding the copy function.  I've gone ahead and implemented this.


Utils::Git: Add ls-remote methods

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[x] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew typecheck with your changes locally?
[x] Have you successfully run brew tests with your changes locally?

It was suggested in https://github.com/Homebrew/brew/pull/12276#discussion_r733800461 that we could benefit from having some methods in Utils::Git that use git ls-remote. This PR covers the following changes:

Add a generic Git#ls-remote method to run git ls-remote and return the output (or errors).
Add a Git#remote_head method that can be used to identify which branch is HEAD (useful for ResourceAuditor).

Good #remote_head output is like: { branch: "main", commit: "890190c0f30b36512835c846be004b0253b062ad" }.

Add a Git#remote_tags method that fetches tags and the corresponding commits (useful for livecheck's Git strategy and elsewhere).

Good #remote_tags output is like: { tags: { "1.2.3" => "ed9942fbd1ec4243f0a92ab8f9b2411c8b1fb091", ... } }

Modify Git#available? and Git#version to accept **options, so we can provide arguments to SystemCommand. Without this, #version will print the command as debug output and this is a nuisance within the context of livecheck (where we carefully control the debug output and need to pass debug: false to SystemCommand to avoid unnecessary output like this).
Modify ResourceAuditor#audit_head_branch to use #remote_head. In the process, the Git#remote_exists? check becomes unnecessary (#remote_head will return a hash with errors if remote doesn't exist), so we can reduce this to one execution of git ls-remote.
Move the SystemCommand options in Livecheck::Strategy::DEFAULT_CURL_OPTIONS into its own hash, so we can easily use this anywhere in livecheck where SystemCommand is used.
Modify livecheck's Git strategy to use #remote_tags. We previously talked about replacing Open3#capture3 with SystemCommand in this context. At the time, SystemCommand didn't support a debug option (needed to prevent debug output from printing) but I resolved that in a later PR (#10066). I had some local stashed changes to update the Git strategy's #tag_info method to use SystemCommand but the switch to #remote_tags ends up achieving the same goal. [This also allows us to switch the strategy to typed: true, as it was only typed: false to avoid a bug in Sorbet's type signature for Open3#capture3.]

I plan to create a follow-up PR sometime in the future to modify the Git strategy to properly handle the commit hashes for tags, so we can surface the original tag/commit information in the JSON output. This information is necessary to be able to create an automated version bump for a formula that uses tag/revision in stable.

Update the tests for Git#remote_exists? to use slightly better throwaway names like not-a-repo/remote_exists-test instead of blah/hey (which aren't clear about their intention).

@carlocab Does this cover the use case(s) you had in mind? For example, if you need to identify the commit hash for a particular tag, you could do something like:
require "utils/git"

remote_url = "https://github.com/Homebrew/brew.git"
remote_info = Utils::Git.remote_tags(remote_url)
commit = remote_info[:tags]["1.2.3"]

Yup, I think that does roughly what I was looking for. It would be nice to have helper methods that combine all those steps when called in a formula, though.

as long as it's used in at least 3+ places in Homebrew/brew or formulae

Coming back to this, I think we would probably only end up using an #ls_remote method in two places right now and I would be stretching for a third. With that in mind, I'm going to shelve this until it seems like there's a greater need for it. I think this PR was at least useful for exploring and discussing these ideas, so thanks to those involved.
Some of this work may be beneficial outside of the idea of additional Utils::Git methods, so I'll create a follow-up PR for part of this, at least (e.g., switching livecheck's Git strategy over to SystemCommand).


Can I get the ID of fingerprint match?

Is it possible to get an ID or name of the fingerprint it was matched with?

No. Because Apple doesn't allow it.


Question: Weblogic UCP DS

I'm using the image 12212-oradb-wlsstore
is there a way to set the datasource type to UCP in oradatasource.properties file?
thank you

You need to write WLST as described in the WebLogic documentation https://docs.oracle.com/middleware/1221/wls/JDBCA/ucp_datasources.htm#JDBCA764 which will replace ds-deploy.py used in the sample https://github.com/oracle/docker-images/tree/master/OracleWebLogic/samples/12212-oradb-wlsstore/container-scripts.


can't reach any host inside my VPN network

Thanks for the suggestion. I have tested wsl-vpnkit, here it works partially: local network and Internet access are ok, but I can't reach any host inside my VPN network (i.e. ping fails, ssh login fails). Looks like all traffic is routed outside the VPN, not sure - further investigation is needed... Maybe I need to setup some routing for hosts inside VPN. Any clues?
Originally posted by @kingsumos in https://github.com/microsoft/WSL/issues/5068#issuecomment-839938176

@kingsumos can you try running sudo VPNKIT_DEBUG=1 ./wsl-vpnkit with the script in the debug-option branch?

Trying a SSH throws a permission denied error:
(this is why we have a RST)
`wsl-vpnkit.exe: [DEBUG] received
f6 16 36 bc f9 c6 02 50  00 00 00 01 08 00 45 00
00 4b ba 96 40 00 40 11  78 b6 c0 a8 43 03 c0 a8
43 01 8e e5 00 35 00 37  c1 80 8e 5c 01 00 00 01
00 00 00 00 00 00 08 67  72 61 74 67 6c 30 31 03
64 65 76 0c 67 6c 6f 62  61 6c 2d 69 6e 74 72 61
03 6e 65 74 00 00 01 00  01
wsl-vpnkit.exe: [DEBUG] received
f6 16 36 bc f9 c6 02 50  00 00 00 01 08 00 45 00
00 4b ba 97 40 00 40 11  78 b5 c0 a8 43 03 c0 a8
43 01 8e e5 00 35 00 37  68 79 cc 63 01 00 00 01
00 00 00 00 00 00 08 67  72 61 74 67 6c 30 31 03
64 65 76 0c 67 6c 6f 62  61 6c 2d 69 6e 74 72 61
03 6e 65 74 00 00 1c 00  01
wsl-vpnkit.exe: [DEBUG] sending
02 50 00 00 00 01 f6 16  36 bc f9 c6 08 00 45 00
00 5b 8a 09 00 00 26 11  03 34 c0 a8 43 01 c0 a8
43 03
00 35 8e e5 00 47 f6 97
8e 5c 81 80 00 01 00 01  00 00 00 00 08 67 72 61
74 67 6c 30 31 03 64 65  76 0c 67 6c 6f 62 61 6c
2d 69 6e 74 72 61 03 6e  65 74 00 00 01 00 01 c0
0c 00 01 00 01 00 00 00  00 00 04 0a 72 7c c5
wsl-vpnkit.exe: [DEBUG] sending
02 50 00 00 00 01 f6 16  36 bc f9 c6 08 00 45 00
00 4b b0 37 00 00 26 11  dd 15 c0 a8 43 01 c0 a8
43 03
00 35 8e e5 00 37 e7 f5
cc 63 81 83 00 01 00 00  00 00 00 00 08 67 72 61
74 67 6c 30 31 03 64 65  76 0c 67 6c 6f 62 61 6c
2d 69 6e 74 72 61 03 6e  65 74 00 00 1c 00 01
wsl-vpnkit.exe: [DEBUG] received
f6 16 36 bc f9 c6 02 50  00 00 00 01 08 00 45 00
00 3c d8 e3 40 00 40 06  d6 f5 c0 a8 43 03 0a 72
7c c5 b8 08 00 16 d5 e1  5d 1a 00 00 00 00 a0 02
fa f0 0a 7b 00 00 02 04  05 b4 04 02 08 0a 2d 76
9f 20 00 00 00 00 01 03  03 07
wsl-vpnkit.exe: [DEBUG] <IP_ADDRESS>:22: failed to connect, sending RST: Socket.TCPv4.connect tcp:<IP_ADDRESS>:22: caught Permission denied
wsl-vpnkit.exe: [DEBUG] process-syn: [channels=0 listens=0 connects=0]
wsl-vpnkit.exe: [DEBUG] sending
02 50 00 00 00 01 f6 16  36 bc f9 c6 08 00 45 00
00 28 d9 a9 00 00 26 06  30 44 0a 72 7c c5 c0 a8
43 03 00 16 b8 08 00 00  00 00 d5 e1 5d 1b 50 14
00 00 39 d2 00 00`
For ICMP ping we have:
`wsl-vpnkit.exe: [DEBUG] using default callback for packet for <IP_ADDRESS>
wsl-vpnkit.exe: [INFO] Connected Ethernet interface f6:16:36:bc:f9:c6
wsl-vpnkit.exe: [DEBUG] ARP: adding <IP_ADDRESS> -> f6:16:36:bc:f9:c6
wsl-vpnkit.exe: [INFO] UDP interface connected on <IP_ADDRESS>
wsl-vpnkit.exe: [DEBUG] create remote TCP/IP proxy for <IP_ADDRESS>
wsl-vpnkit.exe: [DEBUG] activating switch port for <IP_ADDRESS>
wsl-vpnkit.exe: [DEBUG] ICMP received <IP_ADDRESS> -> <IP_ADDRESS> ttl=64 ty=8 code=0 id=277 seq=1 payload len 56
wsl-vpnkit.exe: [DEBUG] received
f6 16 36 bc f9 c6 02 50  00 00 00 01 08 00 45 00
00 54 b8 d7 40 00 40 01  f6 ee c0 a8 43 03 0a 72
7c c5 08 00 75 1b 01 15  00 02 91 03 9d 60 00 00
00 00 93 96 01 00 00 00  00 00 10 11 12 13 14 15
16 17 18 19 1a 1b 1c 1d  1e 1f 20 21 22 23 24 25
26 27 28 29 2a 2b 2c 2d  2e 2f 30 31 32 33 34 35
36 37
wsl-vpnkit.exe: [DEBUG] ICMP received <IP_ADDRESS> -> <IP_ADDRESS> ttl=64 ty=8 code=0 id=277 seq=2 payload len 56
wsl-vpnkit.exe: [DEBUG] received
f6 16 36 bc f9 c6 02 50  00 00 00 01 08 00 45 00
00 54 b8 f9 40 00 40 01  f6 cc c0 a8 43 03 0a 72
7c c5 08 00 bf 7d 01 15  00 03 92 03 9d 60 00 00
00 00 47 33 02 00 00 00  00 00 10 11 12 13 14 15
16 17 18 19 1a 1b 1c 1d  1e 1f 20 21 22 23 24 25
26 27 28 29 2a 2b 2c 2d  2e 2f 30 31 32 33 34 35
36 37
wsl-vpnkit.exe: [DEBUG] ICMP received <IP_ADDRESS> -> <IP_ADDRESS> ttl=64 ty=8 code=0 id=277 seq=3 payload len 56
wsl-vpnkit.exe: [DEBUG] received
f6 16 36 bc f9 c6 02 50  00 00 00 01 08 00 45 00
00 54 b9 44 40 00 40 01  f6 81 c0 a8 43 03 0a 72
7c c5 08 00 54 e0 01 15  00 04 93 03 9d 60 00 00
00 00 b0 cf 02 00 00 00  00 00 10 11 12 13 14 15
16 17 18 19 1a 1b 1c 1d  1e 1f 20 21 22 23 24 25
26 27 28 29 2a 2b 2c 2d  2e 2f 30 31 32 33 34 35
36 37`

Since you mentioned that SSH inside a Docker container works fine, can you do a pull on the debug-option branch and try:
sudo VPNKIT_DEBUG=1 VPNKIT_PATH='/mnt/c/Program Files/Docker/Docker/resources/vpnkit.exe' ./wsl-vpnkit

It works like a charm!
Not sure why the standard method of installation doesn't works, maybe the "Permission Denied" is related to Windows Firewall?
But anyway... I'm very happy with this solution, thanks for the support!

Great, I'm glad it's working for you now. Since using the vpnkit.exe in the Docker for Windows folder solves the issue, I believe your VPN configuration or firewall has rules to allow/deny requests based on the executable name and/or location.
One downside with using vpnkit.exe instead of the renamed wsl-vpnkit.exe is that Docker for Windows will kill all vpnkit.exe processes whenever you stop/restart it, which will require you to restart wsl-vpnkit.

Hi @sakai135,
I have tried to manually add Windows Firewall rules to allow "wsl-vpnkit.exe" inband/outband traffic. But unfortunately this doesn't helps. Also, looks like there's no rule to deny the requests.. something else is blocking the "wsl-vpnkit.exe" process.
This process really use the Windows sockets for communication, or only the PIPE is being used? This because when I open the Windows Resource Monitor I see no socket being used (i.e. listening ports or TCP connections)... or it's using UDP or either RAW sockets? Basically I want to understand why we have such "Permission denied" errors in other to find a better fix for this issue.
The main problem of using Docker Desktop vpnkit.exe's are the recent docker license changes... I don't want to use Docker Desktop anymore.
Best regards,
Sumo

@kingsumos PIPE is used for communication between WSL2 and wsl-vpnkit.exe. wsl-vpnkit.exe then acts as a client to relay the request/response to the destination. wsl-vpnkit.exe does not listen on any ports.
Have you tried placing wsl-vpnkit.exe inside C:\Program Files\somefolder? You could also uninstall Docker Desktop and then place vpnkit.exe in the same location. Check if there are any logs from your VPN client which may show any VPN policies that are blocking the requests.

I have tried placing vpnkit in "C:\Program Files\vpnkit\wsl-vpnkit.exe" and it works!
e.g.:
sudo VPNKIT_PATH='/mnt/c/Program Files/vpnkit/wsl-vpnkit.exe' ./wsl-vpnkit
Meanwhile I'm checking if there are any logs from my VPN client (Pulse Secure)... Funny, everything works when using "C:\Program Files", no firewall rules needed also...
Thanks for your support @sakai135 !


Any reason over functions instead of views?

@workflowproducts/dev
@Tostino
Some of the functions appear like they should be views.
For example:
pgautomator.create_step
pgautomator.edit_step
pgautomator.get_steps
pgautomator.remove_step
Appear to be CRUD for administrators, this could be easily accomplished in a view.
The advantage of a view is that table editors like in PGAdmin or Postage could edit the data in the view easily. With the functions you would need a specialized admin program. (Which you should have. But making it easier to administrator which simple tools is better all around.)
In order to create the view, you would need to:
SELECT:
Create view with left joins for all your tables.
INSERT:
Create rule on your table with multiple statements, one for each table.
or
Create a INSTEAD OF INSERT trigger on your view.
(Both are little used features of Postgres.)
UPDATE and INSERT can be done the same way on the view.
Then on any insert update or delete it will handle all the views.
I should note, we can work with how it is right now, it's just easier to handle CRUD with a view.
Was making CRUD functions a design decision? In other words, is there an advantage I'm missing?
Also, some of these table could be combined. Is there any reason to separate the tables, for example: pgautomator.step, pgautomator.step_connection and pgautomator.step_email?

Hey @josephtocci, sorry very hectic week...  The main reason for sticking with functions over views for those simple use-cases is to stay consistent.  The other reason, is if there is a need to add logic for those couple which are just crud right now at a later point in time, that's easier to do.  I'd think that managing these jobs is complex enough that inserting the crud directly through a view or using a function directly is not something anyone will be doing unless they sufficiently understand the architecture, and in which case either are acceptable.
I kept those in separate tables just because of a separation of concerns.  There are plenty of jobs which will be setup without email being configured for them, so to make it easier to check if email was configured for them I split it into a separate table where I can just check on the job/step id for existence.  Not totally necessary, and it could for sure be merged into a single table.  I just thought it would make the architecture a little more clear.

Hey @josephtocci, sorry very hectic week...

No problem, we've been busy with multiple projects lately so we know the feeling.

The main reason for sticking with functions over views for those simple use-cases is to stay consistent.

As far as consistency with the API, the reason we wrote our first open source project is exactly because of this. Everyone's CRUD API for PostgreSQL only did CRUD, not functions. This among other reasons is why we wrote workflowproducts/envelope. With Envelope you can use views for editing data, and for business logic you use functions. Both have their purposes.
Aside:
We determined the whole CRUD only thing is pushed by people who use databases as a dumb store, and put business logic in a middle-ware like PHP or the web page.
Theoretical situation:
The tables pgautomator.job and pgautomator.job_email are combined.
Select is just a select, no other tables are needed.
Insert and update are the same, nowhere else in the database needs anything changed as a result of a change in pgautomater.job.
Delete requires some other tables to have associated rows deleted. So one BEFORE DELETE trigger is added to the table.
The delete trigger is the only function you would need.

The other reason, is if there is a need to add logic for those couple which are just crud right now at a later point in time, that's easier to do. I'd think that managing these jobs is complex enough that inserting the crud directly through a view or using a function directly is not something anyone will be doing unless they sufficiently understand the architecture, and in which case either are acceptable.

In order to update a single column somewhere, we would either have to do something like this:
DO LANGUAGE plpgsql
$$
DECLARE
    _job_id int;
    _job_category_id int;
    _job_name text;
    _job_description text;
    _job_enabled boolean;
    _job_timeout interval;
    _job_assigned_agent_id int;
    _email_on pgautomator.state;
    _email_to text;
    _email_subject text;
    _email_body text;

BEGIN
SELECT job.*, job_email.*
INTO _job_id, _job_category_id, _job_name, _job_description, _job_enabled, _job_timeout, _job_assigned_agent_id, _email_on, _email_to, _email_subject, _email_body
FROM pgautomator.job
LEFT JOIN pgautomator.job_email ON job.job_id = job_email.job_id
WHERE job.job_id = 5;

    _email_to :=<EMAIL_ADDRESS>
    PERFORM pgautomator.edit_job(5, _job_category_id, _job_name, _job_description, _job_enabled, _job_timeout, _job_assigned_agent_id, _email_on, _email_to, _email_subject, _email_body);
END;
$$;

or the view/table way like this:
UPDATE pgautomator.job_email
    SET email_to =<EMAIL_ADDRESS>WHERE job_id = 5;

I understand that people should just use the UI, but that doesn't mean make it hard for the UI developers. =)

I kept those in separate tables just because of a separation of concerns. There are plenty of jobs which will be setup without email being configured for them, so to make it easier to check if email was configured for them I split it into a separate table where I can just check on the job/step id for existence.

Our standard practice for something like that would be keep it in one table, and if there is no TO address then ignore all the email columns. We only split into multiple tables if we run into the PostgreSQL column limit. (1600 columns if I remember correctly, happened once during an import. Long story.) Sometimes people will split like this so that they can have one table on one server and the other table on another server, but for a job scheduler we don't have that problem.

Not totally necessary, and it could for sure be merged into a single table. I just thought it would make the architecture a little more clear.

If clarity is what you are worried about, start all the email columns with email_ and add a comment to the TO column explain the circumstances for ignoring the email columns. (PostgreSQL and Postage both support column comments.)
Apologies for the long post.

Test everything, retain what is good, reject what is useless, and add what is uniquely your own.
-Bruce Lee

If the way your are doing things is how you decide to do things, that's no problem. As Bruce Lee said, Test everything and retain what is good. So feel free to just takes the parts of this you like, or if you like nothing then take nothing. Let me know what your thoughts are on this.


add Module.ClassKind; change Module.IsClass prototype

Codecov Report
Patch and project coverage have no change.

Comparison is base (9ec839f) 100.00% compared to head (b97b039) 100.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff            @@
##              main       #18   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            3         3
  Lines          398       398
=========================================
  Hits           398       398

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.