revive mxnet from malloc errors plus an interesting usage pitfall

Description
Mxnet often appears dead after malloc errors from either user's inaccurate memory estimation or normal usage. However, this is not entirely the case; we observed a pattern that can "revive" mxnet from malloc errors. It is worth investigating the pattern to potentially allow people to try-catch malloc errors and retry with different settings.
PS: The minimal example includes an interesting usage pitfall.
Environment info (Required)
----------Python Info----------
Version      : 3.6.5
Compiler     : GCC 7.2.0
Build        : ('default', 'Apr 29 2018 16:14:56')
Arch         : ('64bit', '')
------------Pip Info-----------
Version      : 10.0.1
Directory    : /home/ec2-user/anaconda3/envs/mxnet_p36/lib/python3.6/site-packages/pip
----------MXNet Info-----------
Version      : 1.4.0
Directory    : /home/ec2-user/anaconda3/envs/mxnet_p36/lib/python3.6/site-packages/mxnet
Commit Hash   : 0eacdb327abb8144c4d8da49c4d80765bf7b7f96
----------System Info----------
Platform     : Linux-4.14.77-70.59.amzn1.x86_64-x86_64-with-glibc2.9
system       : Linux
node         : ip-172-16-95-144
release      : 4.14.77-70.59.amzn1.x86_64
version      : #1 SMP Mon Nov 12 22:02:45 UTC 2018
----------Hardware Info----------
machine      : x86_64
processor    : x86_64
----------Network Test----------
Setting timeout: 10
Timing for MXNet: https://github.com/apache/incubator-mxnet, DNS: 0.0020 sec, LOAD: 0.3728 sec.
Timing for Gluon Tutorial(en): http://gluon.mxnet.io, DNS: 0.1171 sec, LOAD: 0.1566 sec.
Timing for Gluon Tutorial(cn): https://zh.gluon.ai, DNS: 0.6782 sec, LOAD: 0.1020 sec.
Timing for FashionMNIST: https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/fashion-mnist/train-labels-idx1-ubyte.gz, DNS: 0.0085 sec, LOAD: 0.1203 sec.
Timing for PYPI: https://pypi.python.org/pypi/pip, DNS: 0.0151 sec, LOAD: 0.3625 sec.
Timing for Conda: https://repo.continuum.io/pkgs/free/, DNS: 0.0101 sec, LOAD: 0.0954 sec.

Package used (Python/R/Scala/Julia): Python
Error Message:
First message:
MXNetError: [23:32:52] src/storage/./pooled_storage_manager.h:143: cudaMalloc failed: out of memory

Subsequent message where mxnet is dead despite the operations are totally fine to carry out.
MXNetError: [23:32:52] src/operator/contrib/./.././../common/../operator/mxnet_op.h:680: Check failed: err == cudaSuccess (2 vs. 0) Name: mxnet_generic_kernel ErrStr:out of memory

Minimum reproducible example
In ipython environment (e.g., jupyter notebook)
import mxnet as mx
from mxnet import gluon
loss = gluon.loss.SoftmaxCELoss()

# a usage pitfall that leads to malloc errors (can you find the actual mistake?)
loss(
    mx.nd.ones((100000,1), ctx=mx.gpu()),
    mx.nd.ones((100000,), ctx=mx.gpu()),
    mx.nd.ones((100000,), ctx=mx.gpu()),
)
# MXNetError: [23:32:52] src/storage/./pooled_storage_manager.h:143: cudaMalloc failed: out of memory

# an okay command that cannot run because mxnet is dead
loss(
    mx.nd.ones((100000,1), ctx=mx.gpu()),
    mx.nd.ones((100000,), ctx=mx.gpu()),
    mx.nd.ones((100000,1), ctx=mx.gpu()),
)
# MXNetError: [23:32:52] src/operator/contrib/./.././../common/../operator/mxnet_op.h:680: Check failed: err == cudaSuccess (2 vs. 0) Name: mxnet_generic_kernel ErrStr:out of memory

# the magic command to revive mxnet in ipython environments
!ls

# now the okay command can run
loss(
    mx.nd.ones((100000,1), ctx=mx.gpu()),
    mx.nd.ones((100000,), ctx=mx.gpu()),
    mx.nd.ones((100000,1), ctx=mx.gpu()),
)
# [ 0.  0.  0. ...,  0.  0.  0.]
# <NDArray 100000 @gpu(0)>

Steps to reproduce

use jupyter notebook or ipython
run the commands

What have you tried to solve it?
@eric-haibin-lin helped with initial investigations before drafting the formal issue.

@anirudh2290 any idea when exception will be gone and when they persist?

@mxnet-label-bot add [Feature]

unable to reproduce, will take a look again, mxnet may not be freeing up gpu memory after oom errors which could cause subsequent ooms.


chore(claim_contracts): update README

Update README
Description
Updated the README with new deployment instructions using Makefile
Type of change
Please delete options that are not relevant.

[ ] New feature
[ ] Bug fix
[ ] Optimization
[ ] Refactor

Checklist

[ ] “Hotfix” to testnet, everything else to staging
[ ] Linked to Github Issue
[ ] This change depends on code or research by an external entity

[ ] Acknowledgements were updated to give credit

[ ] Unit tests added
[ ] This change requires new documentation.

[ ] Documentation has been added/updated.

[ ] This change is an Optimization

[ ] Benchmarks added/run

[ ] Has a known issue

Link to the open issue addressing it

[ ] If your PR changes the Operator compatibility (Ex: Upgrade prover versions)

[ ] This PR adds compatibility for operator for both versions and do not change batcher/docs/examples
[ ] This PR updates batcher and docs/examples to the newer version. This requires the operator are already updated to be compatible

I think #1629 already solved this


Implement django-upgrade

I think django-upgrade would be a good complement to the pre-existing Django-related ruff rules.

It will require adding a plugin specific setting as django-upgrade has a --target-version option for the Django version to target.

I'd like to see django-upgrade too. It feels weird having pyupgrade but not django-upgrade.

As the django-upgrade author, I am a little concerned if Ruff reimplements it without dedicated developers who’ll update it for new fixers.
The Django community is gradually getting used to django-upgrade, and @carltongibson has even suggested making it an official tool. A few times now, contributors to Django have been able to implement a parallel fixer in django-upgrade, reducing the migration cost for changes. It’s unlikely that most Django contributors would be able to do the same in Ruff, since it uses Rust.

Thanks for the ping Adam.
Yes, part of the whole idea is that PR authors can either implement fixers, or work closely with others who can, as the PR is being made. That seems to require close integration with Django, rather than moving further away.
Also, from a ruff POV, Django Upgrade is something you run once per major version of Django, so once every 8 months at most, rather than on every save, so Ruff's selling point of speed isn't relevant. From the outside it doesn't seem to fit.

I don't think running once in 8 months is something reasonable to do. You want to have it applied to new code and anything what is not automated tends to be forgotten. Also django-upgrade is being improved at a different pace than Django releases. I'd love to see it included in ruff, but even if it is not, I would run it in pre-commit.

Thanks @adamchainz and @carltongibson -- that makes sense! I wouldn't want to draw energy or attention away from an official resource like that, so we'll avoid re-implementing this one.
I could imagine us adding a few of the rules that look helpful on a continuous basis though (like automatically adding the on_delete keyword argument), we could consider adding those to our existing Django rule set.


release: v2.9.0

feat(react): optimize the handlers of use hooks in react with useCallback
and now, you can use send and abort directly in events, and don't worry about the performance in react
fix #141

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


When right-clicking to activate the menu, if the mouse is not released and the mouse is moved to the menu, the menu will be triggered.【右键激活菜单时如果没有释放鼠标，并且移动鼠标到菜单上，会出现激发菜单的情况】

Does this issue occur when all extensions are disabled?: yes

VS Code Version: 1.89.1
OS Version: Darwin arm64 21.6.0

MacBook Pro m1pro
版本: 1.89.1
提交: dc96b837cf6bb4af9cd736aa3af08cf8279f7685
日期: 2024-05-07T05:14:32.757Z
Electron: 28.2.8
ElectronBuildId: 27744544
Chromium: 120.0.6099.291
Node.js: 18.18.2
V8: 12.0.267.19-electron.0
OS: Darwin arm64 21.6.0
Steps to Reproduce:

Right click file item, don't let go of the mouse, move the mouse to the menu.
Release the mouse, and the menu option under the mouse will be activated.

The first picture is when I use the upper part of the right panel to operate, the mouse has a large space to move, and the menu will not be directly triggered (if the mouse is not released, moving to the menu will also occur above)
【Translate：第一张图片，是当我在右侧面板的上部使用上面操作的时候，此时鼠标有一个较大的空间移动，不会直接触发菜单，（但是如果不松开鼠标，移动到菜单上也会是出现上面的情况）】

In the second picture, when clicking on the file at the bottom of the panel, it is very easy to activate the menu in an instant.
【Translate：第二张图片，当点击面板中靠下方的文件时候，非常容易出现易一瞬间激活菜单的情况】

Here is some question I want figure it out:

After right-clicking the mouse, move to the menu to start the operation directly. Is it reasonable? If you split it into two steps (that is, under the current normal circumstances): right-click to open the menu, and then left-click to select the menu in two steps. 【鼠标右击之后，移动到菜单上能够直接启动操作，是否合理？如果拆分两步（也就是目前的正常情况下）：鼠标右击打开菜单，然后左键选择菜单，分两个步骤就好了】
The second is the reason why I found this situation when I took a screenshot, because the position stimulated by the mouse causes the relative position of the menu display to be different. In the first picture above, the mouse has a 75% safe area, but in the second picture, the mouse only has a 50% safe area, so I will also frequently activate the menu.【第二个是我在截图的时候发现的可能引发出现这个情况的原因，因为鼠标激发的位置导致菜单展示的相对位置不同，在上面第一章图片中鼠标是有75%的安全区域，但是在第二张图片中，鼠标只有50%的安全区域，所以我也会频繁的出现激活菜单的问题】

Solution ideas:

When the forbidden menu is activated, the menu can be selected when the right-click of the mouse is not released.【禁止菜单激活的时候在鼠标右击没有释放的情况下能够选中菜单的情况】
In the case of 50% safe area, you can try to increase the offset of the pop-up menu like the one next to it (note that the panel is expanded on the left or right) 【将50%安全区域的情况下，可以试着将弹出的菜单像旁边的偏移量加大（注意面板展开是在左边或者右边的情况）】

All the problems described above are when the mouse is not released after the right mouse click, and then move the mouse or slightly move the mouse.
A wireless mouse is used.
上面描述的所有问题都是在鼠标右击之后没有释放鼠标，然后移动鼠标或者轻微移动鼠标的情况下
使用的是无线鼠标

Here is a problem mentioned before, which is a similar situation, but that is when you click on the settings. #163247

I just found that it seems that the right mouse button function exists in many places in the whole vscode. I can also select it with the right mouse button in the settings center. The above question, or add a setting to support whether to enable the right mouse button to support the left-click selected function? ( Note that it is support, not a substitute)

/duplicate https://github.com/microsoft/vscode/issues/224743


Create package.json

Added for compatibility with https://kristjanesperanto.github.io/MagicMirror-3rd-Party-Modules/


remove configurable topics

future zeebe versions will not support separate topics, so using the one default topic of the client is sufficient

fixed with #43


Add jq command line utility for parsing JSON

jq is a command line tool for parsing JSON files.

app-misc/jq on gentoo

Done!

Oops, done!


ARROW-8977: [R] Table$create with schema crashes with some dictionary index types

Thanks @fsaintjacques @pitrou, I did your suggestions and then a little more, PTAL


Metadata in easy_colab.ipynb

This completes the two main training modes--good enough to ship version 0.5.1!

Resolves #176 -- I think this is good enough to be happy


rootNodeID is always 0

React's rootNodeID is used to generate a friendly name for debugging (see here).
However, that always seems to be zero. _reactInternalInstance._rootNodeID seems to be depricated anyways.

I think it can simply be dropped. Willing to open a PR?

Fixed through #368


[Feature Request] New Command → Search By Clipboard

Hello again @aciq !!!!!
I have another workflow that I wanted to share with you.
The FR is divided by two Features:
1⃣
A new command that is a variation of what Search by Tag does by using the Clipboard instead of a Modal
2⃣
A NEW Modal Command option in the Settings to let the user define a different command from Search By Tag.
⦿ My idea is to use this new Command connected with a different Plugin than AQS.;
⦿ Thats why I am suggesting another.
Let me present below...
My Workflow
I use the plugin Omnisearch When I want to search for content inside the note
It's a powerful plugin that opens a MODAL to let users search for content inside the note instead of only the filename in two ways:
→  Search for content inside the Active Note
→  Search for content inside of ANY Note in the Vault.
Since I use Obsidian 98% of the time only with the keyboard, search for content using the Search Core Plugin is a nightmare, I use use Omnisearch to keep my hands in the keyboard.
Be able to automatic copy the content of the clipboard while doing a search would be amazing and save a precious time :)

Thanks for reading this !!!!! I hope you like my suggestion 🙏 🙏 🙏
Let me know if you need more information !!!
Have a great day 🌞

i haven't used omnisearch yet
so far "Another Quick Switcher: Header floating search in file" has been very good for in-file searches for me
i will report back when i have installed and tried omnisearch for a bit

i haven't used omnisearch yet
so far "Another Quick Switcher: Header floating search in file" has been very good for in-file searches for me

My perfect combo for search inside Obsidian is AQS for Search Query + in-file Header Search AND Omnisearch for a fast search of content that are in my vault.
Omnisearch is perfect when you are writing/reading something and need to perform a quick search in other notes of a term that you have in the active note.

i will report back when i have installed and tried omnisearch for a bit

Thank you very much @aciq !!!

@FelipeRearden
i used omnisearch for a bit and it really is much better than the default
i think the clipboard shortcut is such a personal thing it should rather be done in AutoHotkey on windows or Autokey on linux.
for example something like this when you highlight text
keyboard.send_keys('<ctrl>+c')
keyboard.send_keys('your-omnisearch-shortcut')
keyboard.send_keys('<ctrl>+v')

both programs also allow you to set a keyboard shortcut to only obsidian specifically

i think the clipboard shortcut is such a personal thing it should rather be done in AutoHotkey on windows or Autokey on linux.

100% understood. I appreciate your suggestions about a workaround. My main motivation for this FR is related to my workflow:

I use Obsidian both on Desktop and Mobile;
iPadOS with keyboard and mouse.

On Desktop I do exactly what you said using Shell Commands plugin to run a terminal command to put the clipboard inside the Modal.
My problem is that I can't do this on Mobile (iPadOS) because Apple don't expose Terminal.

Feel absolutely free to close this issue. My intention with this message is too show my entire environment.

It's been a journey to create a workflow that could be mirrored between these two devices.

Thanks for this amazing plugin :) I let you know if I have more FR to suggest to you :)


Prepare for crun checkpoint support

This includes two small changes for using crun with checkpoint support:

correctly set up XDG_RUNTIME_DIR (thanks to @giuseppe for helping with this)
adapt checkpoint support test to work with crun and runc

/approve
LGTM

/retest

This looks like the checkpoint/restore tests are blowing up?

It always fails with
CRIU version check failed: exec: "criu": executable file not found in $PATH

Very strange. Ah, maybe by setting up a new environment runc no longer gets the full PATH from the current shell and does not find the CRIU binary in /usr/sbin. I probably need to add /usr/sbin to the PATH passed down to runc.

When I saw your change, that is what I was thinking.  You should just add the XDG_RUNTIME_DIR to an existing environment.

LGTM assuming happy tests

/retest

/lgtm


Path Incorrect

The plugin says no such file or directory but the path given seems to give my vault path twice before the path I actually pass (instead of once).

If I do relative I get $VAULT_PATH/$RELATIVE_PATH/my_path/...

The cause of the problem is that ObsidianAPI only supports relative paths for read files.
I hope the following examples will be helpful to you.

If you files path like:

/home/user/vault/my_path/file.js
/home/user/other_project/out.js

$VAULT_PATH is "/home/user/vault".
The YAML configuration should look like this:
Absolute
Vault file
path: /my_path/file.js

Other Porject
path: /../other_project/out.js

Relative
Relative paths work only for files of a fixed level
/home/user/vault/Home.md
Vault file
path: my_path/file.js

Other Porject
path: ../../out.js

/home/user/vault/my_path/Foo.md
Vault file
path: file.js

Other Porject
path: ../../../out.js

I understand unix path behaviour and agree with what you have written above but this doesn't work for me. What I was saying is that despite having a valid path, I get the error ENOENT: no such file or directory, open  and then a path which has my vaultpath specified twice whether I use absolute, relative or reverse out of folders with ../
An arbitrarily long line ../../../../../../../../../../.../../../../../Test.py gives the error path couldn't find as VAULT_PATH/Test.py when I would expect it to be /Test.py the root directory. /../../../../../../../../../../.../../../../../Test.py gives the exact same issue as well.

I understand unix path behaviour and agree with what you have written above but this doesn't work for me. What I was saying is that despite (尽管) having a valid (有效) path, I get the error ENOENT: no such file or directory, open  and then a path which has my vaultpath specified (指定) twice whether (是否) I use absolute (绝对) , relative (相对) or reverse (逆向) out of folders with ../
An arbitrarily long (长) line ../../../../../../../../../../.../../../../../Test.py gives the error path couldn't find as VAULT_PATH/Test.py when I would (会) expect (期望) it to be /Test.py the root (根) directory (目录) . /../../../../../../../../../../.../../../../../Test.py gives the exact (确切) same issue as well.

Fixed in 1.3.3. The reason is that my code doesn't work on UNIX.

Thank you! Look forward to testing it out!

Just want to reopen this issue with one more problem (should be a quick fix I believe).
The absolute path works perfectly as expected. The relative path though has a problem though (doesn't work right now). I presume it takes some VAULT_PATH variable and RELATIVE_PATH variable and combines them to get PATH=VAULT_PATH+RELATIVE_PATH. However, the VAULT_PATH ends in .../foo/bar without a trailing / and the RELATIVE_PATH begins with baz/... without a preceding / so when they combine it looks like .../foo/barbaz/... without a middle /. This doesn't allow it to parse the proper file.

Just want to reopen this issue with one more problem (should be a quick fix I believe).
The absolute (绝对) path works perfectly (完全) as expected (期望) . The relative (相对) path though (虽然) has a problem though (doesn't work right now). I presume (推定) it takes some VAULT_PATH variable and RELATIVE_PATH variable and combines (结合) them to get PATH=VAULT_PATH+RELATIVE_PATH. However, the VAULT_PATH ends in .../foo/bar without a trailing (踪迹) / and the RELATIVE_PATH begins with baz/... without a preceding (之前) / so when they combine (结合) it looks like .../foo/barbaz/... without a middle (中间) /. This doesn't allow it to parse the proper (适当) file.

Thank you for the case. Fixed in 1.3.4

Thanks!


find_many_with_session crash.

find_many_with_session sometimes crash , when I update one database file repeatedly.
following are trace.
thanks.
thread 'main' panicked at 'C:\Users\alcatel.cargo\registry\src\github.com-1ecc6299db9ec823\polodb_core-3.5.2\db\db.rs:177:43
stack backtrace:
0:     0x7ff73487a360 - std::backtrace_rs::backtrace::dbghelp::trace::hf349c34c3457c740
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src....\backtrace\src\backtrace/dbghelp.rs:98:5
1:     0x7ff73487a360 - std::backtrace_rs::backtrace::trace_unsynchronized::h2bd29529ecc3ce0e
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src....\backtrace\src\backtrace/mod.rs:66:5
2:     0x7ff73487a360 - std::sys_common::backtrace::_print_fmt::hb3b653f470c22f3c
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src\sys_common/backtrace.rs:65:5
3:     0x7ff73487a360 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::ha1b729084c6ddc62
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src\sys_common/backtrace.rs:44:22
4:     0x7ff7348d9f6b - core::fmt::write::he318666ecc6d0e50
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\core\src\fmt/mod.rs:1213:17
5:     0x7ff73486cf15 - std::io::Write::write_fmt::h16e260ff7842914c
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src\io/mod.rs:1682:15
6:     0x7ff73487a0b4 - std::sys_common::backtrace::_print::hfa2b093dead91421
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src\sys_common/backtrace.rs:47:5
7:     0x7ff73487a0b4 - std::sys_common::backtrace::print::ha0089f50e86f9a42
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src\sys_common/backtrace.rs:34:9
8:     0x7ff73487d3ff - std::panicking::default_hook::{{closure}}::h23cb21cc6d06499c
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src/panicking.rs:267:22
9:     0x7ff73487d0d3 - std::panicking::default_hook::h73a8e55e598e91dc
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src/panicking.rs:286:9
10:     0x7ff73487dd49 - std::panicking::rust_panic_with_hook::h38620170de56dbc1
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src/panicking.rs:688:13
11:     0x7ff73487dab6 - std::panicking::begin_panic_handler::{{closure}}::h19e96512213681c1
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src/panicking.rs:579:13
12:     0x7ff73487ae8f - std::sys_common::backtrace::__rust_end_short_backtrace::h0803ea066b746adc
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src\sys_common/backtrace.rs:137:18
13:     0x7ff73487d7c0 - rust_begin_unwind
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\std\src/panicking.rs:575:5
14:     0x7ff7348d6755 - core::panicking::panic_fmt::h6c5d7c67ee48b787
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\core\src/panicking.rs:64:14
15:     0x7ff7348d6d36 - core::result::unwrap_failed::hca540035cf99f0f4
at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library\core\src/result.rs:1790:5
16:     0x7ff7345b0060 - <polodb_core::session::client_session::ClientSession as core::ops::drop::Drop>::drop::h68c99acfa97aab78
17:     0x7ff73456e6c9 - test_db::upsert_test_item::h79cc79b0b09dedfd

It's ok when I change only find_many_with_session to find_one_with_session.

-rw-r--r-- 1  65536 Mar 25 18:40 t.db
-rw-r--r-- 1 1393896 Mar 25 18:40 t.db.journal
journal is large and t.db almost all zero.

Not sure if this is an issue with session management. Would this error occur if you don't use the with_session API?

It's easier to debug if you can provide the sequence of your operations.

it seems ok after remove all session api call.@vincentdchan

I got it. It could be a problem with session management. Currently, PoloDB has undergone significant changes and has been upgraded to v4. In v4, the underlying data structures have changed. LSM-tree is now used as the data structure in place of Btree in v3. This is a significant breaking change. I would recommend that you try it.
The downside is that in v4 old data is no longer compatible. However, I will ensure that this does not happen again. PoloDB will gradually become stable.
Due to the aforementioned reasons, the issue in this case will no longer be investigated.


Home assistant stops responding to web requests after a few hours

Make sure you are running the latest version of Home Assistant before reporting an issue.
You should only file an issue if you found a bug. Feature and enhancement requests should go in the Feature Requests section of our community forum:
Home Assistant release (hass --version):
0.50.1
Python release (python3 --version):
3.5.2
Component/platform:
Windows Server 2012
Description of problem:
After a few hours, Home Assistant can no longer be accessed, either through the direct IP:PORT or through my reverse proxy. The only fix is to restart it which will fix it for a few hours. Seems to be a socket problem.
Expected:
Problem-relevant configuration.yaml entries and steps to reproduce:
Not relevant, this started happening out of the blue.
Logs:
2017-08-10 03:12:40 ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "c:\tools\python3\lib\asyncio\tasks.py", line 239, in _step
    result = coro.send(None)
  File "c:\tools\python3\lib\asyncio\windows_events.py", line 484, in accept_coro
    yield from future
  File "c:\tools\python3\lib\asyncio\futures.py", line 363, in __iter__
    return self.result()  # May raise too.
  File "c:\tools\python3\lib\asyncio\futures.py", line 274, in result
    raise self._exception
  File "c:\tools\python3\lib\asyncio\windows_events.py", line 697, in _poll
    value = callback(transferred, key, ov)
  File "c:\tools\python3\lib\asyncio\windows_events.py", line 472, in finish_accept
    ov.getresult()
OSError: [WinError 64] The specified network name is no longer available
2017-08-10 03:12:40 ERROR (MainThread) [homeassistant.core] Error doing job: Accept failed on a socket
Traceback (most recent call last):
  File "c:\tools\python3\lib\asyncio\proactor_events.py", line 496, in loop
    conn, addr = f.result()
  File "c:\tools\python3\lib\asyncio\futures.py", line 274, in result
    raise self._exception
  File "c:\tools\python3\lib\asyncio\tasks.py", line 239, in _step
    result = coro.send(None)
  File "c:\tools\python3\lib\asyncio\windows_events.py", line 484, in accept_coro
    yield from future
  File "c:\tools\python3\lib\asyncio\futures.py", line 363, in __iter__
    return self.result()  # May raise too.
  File "c:\tools\python3\lib\asyncio\futures.py", line 274, in result
    raise self._exception
  File "c:\tools\python3\lib\asyncio\windows_events.py", line 697, in _poll
    value = callback(transferred, key, ov)
  File "c:\tools\python3\lib\asyncio\windows_events.py", line 472, in finish_accept
    ov.getresult()
OSError: [WinError 64] The specified network name is no longer available
2017-08-10 03:20:03 WARNING (Thread-52) [pychromecast.socket_client] Heartbeat timeout, resetting connection
2017-08-10 03:20:03 WARNING (Thread-55) [pychromecast.socket_client] Heartbeat timeout, resetting connection
2017-08-10 03:20:03 WARNING (Thread-53) [pychromecast.socket_client] Heartbeat timeout, resetting connection
2017-08-10 03:20:08 ERROR (Thread-53) [pychromecast.socket_client] Failed to connect, retrying in 5.0s
2017-08-10 03:55:45 WARNING (Thread-54) [pychromecast.socket_client] Heartbeat timeout, resetting connection
2017-08-10 03:55:45 WARNING (Thread-51) [pychromecast.socket_client] Heartbeat timeout, resetting connection
2017-08-10 03:55:45 WARNING (Thread-50) [pychromecast.socket_client] Heartbeat timeout, resetting connection
2017-08-10 03:55:48 ERROR (Thread-51) [pychromecast.socket_client] Failed to connect, retrying in 5.0s
2017-08-10 03:55:48 ERROR (Thread-54) [pychromecast.socket_client] Failed to connect, retrying in 5.0s
2017-08-10 03:55:48 ERROR (Thread-50) [pychromecast.socket_client] Failed to connect, retrying in 5.0s
2017-08-10 03:57:37 WARNING (Thread-58) [pychromecast.socket_client] Heartbeat timeout, resetting connection
2017-08-10 03:57:37 WARNING (Thread-56) [pychromecast.socket_client] Heartbeat timeout, resetting connection
2017-08-10 03:57:37 WARNING (Thread-57) [pychromecast.socket_client] Heartbeat timeout, resetting connection
2017-08-10 03:57:58 ERROR (Thread-58) [pychromecast.socket_client] Failed to connect, retrying in 5.0s
2017-08-10 03:57:58 ERROR (Thread-57) [pychromecast.socket_client] Failed to connect, retrying in 5.0s
2017-08-10 03:57:58 ERROR (Thread-56) [pychromecast.socket_client] Failed to connect, retrying in 5.0s

Additional info:

I get the pychromecast errors in the bottom part of your log pretty much every night even though my cast devices are power 24/7.   I have seen the top part occasionally also (no apparent pattern).   FWIW, I'm running on a Raspberry Pi.

My current theory (which I'm still testing) is that it's happening due to leaving tabs to home assistant open on my main machine. Because I have CCTV it's constantly serving a few new images every 10 secs, and I'm wondering if it's keeping loads of sockets open and then windows refuses to let it open more? I'm not sure. But I've been consciously closing tabs to home assistant today as I finish with it and so far it's still up and running, we'll see how long that works though

I have a few cameras as well, but last night I did not have a browser session open to HA all night, but I got the pychromecast errors after midnight.


How to force bind address ?

Hello,
I use weave as kubeadm addon as described here : http://kubernetes.io/docs/getting-started-guides/kubeadm/
It starts well and kube-dns then startup well too, but when I try to deploy a pod, I got the following error :

Error syncing pod, skipping: failed to "SetupNetwork" for "my-nginx-379829228-9xgsa_default" with SetupNetworkError: "Failed to setup network for pod "my-nginx-379829228-9xgsa_default(c43a42fd-a9aa-11e6-a778-080027d95c6b)" using network plugins "cni": unable to allocate IP address: Post http://<IP_ADDRESS>:6784/ip/cc0ad82ba90685498e80e1835b2bcf2b3b0057c50dfd093734c0745502383075: dial tcp <IP_ADDRESS>:6784: getsockopt: connection refused; Skipping pod"

And the following in weave-net logs :

2016-11-13T14:17:38.653313621Z E1113 14:17:38.449836    6720 reflector.go:214] github.com/weaveworks/weave/vendor/k8s.io/client-go/tools/cache/reflector.go:109: Failed to list *v1.Namespace: Get https://<IP_ADDRESS>:443/api/v1/namespaces?resourceVersion=0: dial tcp <IP_ADDRESS>:443: i/o timeout

Which seems to indicate it does not use the right IP address, the private accessible address of my master node being a 192.168.x.x address on eth1.
How can I force weave to use my private network on eth1 instead of the NATed one on eth0 ?
Any help would be greatly appreciated.

Will post this issue to the new weave-net repository.


Remove feedback command and tests

Please make sure the code is following contribution guidelines in CONTRIBUTING.md

[ ] : This PR has a corresponding issue open in the Repository.
[ ] : Approach is signed off on the issue.

@geverghe Can you verify the traffic hits on aka.ms link https://aka.ms/azure-devops-cli-feedback.
Just to confirm there is no usage of this command.

@geverghe Can you verify the traffic hits on aka.ms link https://aka.ms/azure-devops-cli-feedback.
Just to confirm there is no usage of this command.

@gauravsaralMs  Shared the data looks like there are too many hits. Closing this PR will raise PR to deprecate the command rather than remove for now..


Fix: position: fixed; elements escape editor

Added transform to root element so position: fixed; elements sit relative to it.
Pictured below is the apps/demo with the following added to the config/root.tsx.
    <header
        style={{
          position: "fixed",
          top: 0,
          left: 0,
          width: "100%",
          backgroundColor: "white",
          zIndex: 1000,
        }}
      >

It doesn't behave like a position: fixed; element normally would due to the scrolling being on an element outside of the one with the transform, but it does allow you to access the editor navigation while you have a fixed navbar.

Can't believe I got this far in my career without knowing this trick.

I only found out about it because of the bugs it caused. 😂

@JakeSidSmith Unfortunately I've had to roll this back in our demo deployment as it's causing the drag positioning to break, which relies on position fixed. I missed this during review. You should be able to recreate locally if you're interested.
I haven't got a patch yet, but I'll likely have to revert this PR if we can't find a fix.
The only fix I can think of is to use JS to patch the transform position from react-beautiful-dnd, but that's hella brittle (see #123).

I only found out about it because of the bugs it caused. 😂

Ironically at least one of the bugs was related to drag and drop.
I shall have a look and see if I can find an easy fix.

Sweet irony. Thanks @JakeSidSmith!

Doesn't appear that an easy fix is available.
I think this is something that could/will resolve itself if the drag n drop library is changed (as in #123), and or the preview is rendered within an iframe.
Should probably roll this back until then.

Thanks @JakeSidSmith. I'll revert this in an upcoming PR.


Plugins do not generate translation files anymore

Since the newest Rocket update my plugins do not generate a translation file anymore.

I've noticed this, but it is a little quirk, it should generate them when someone joins the server(at least that's what it does for me.).


KAFKA-10650: Use Murmur3 instead of MD5 in SkimpyOffsetMap

Introduces a new offset map in the log cleaner which uses Murmur hashing
algorithm instead of the current MD5.
This commit:

Moves Murmur3 from Streams into Clients
Changes SkimpyOffsetMap to use Murmur3 hashing
Removes the option to change hashing algorithm in SkimpyOffsetMap
Adds benchmark tests

Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

@ijuma what do you think about this? I replaced MD5 with Murmur3 in SkimpyOffsetMap and log segment cleaning sped up by 30% (stable) according to benchmarks (attached to the jira).
Do you know what was the motivation to use MD5 in the first place? I don't think it's necessary to use crypto algorithm here.

This looks interesting. Did we consider https://github.com/Cyan4973/xxHash instead of murmur3?

@viktorsomogyi : Thanks for the PR. We use crypto algorithms like MD5 as the unique representation for a corresponding key. murmur3 has the same length as MD5. Does it guarantee similar uniqueness as MD5?

@ijuma I don't think I looked at it but will try it out soon, its speed seems promising. I haven't found a 128bit java implementation but the 64bit in lz4 can be tried out as well. I need to see if the collision rate changes significantly if we reduce the hash size to 64. Theoretically for 100 million distinct keys the probability of collision is 1.469367×10^-23 with 18 bit while for 64 bits it's 2.710138×10^-4 which is significantly larger but it might be enough for the log cleaning use-case.
@junrao I can compile a statistic for this but in my tests the collision rate was on the same level, sometimes slightly better, sometimes slightly worse. The attached image is what I collected manually for the largest test cases but I'll do something more elaborate if you think so :)

@viktorsomogyi I think a hash collision for the full sized hash will mean that a message is incorrectly cleaned. Are you measuring the collision rate in the probes? I am less worried about those as they are expected, though it's good to know their rate as they will affect performance.
Have you measured the rate of collision for the full sized hashes? Those are the main concern when it comes to the safety of this change.

@lbradstreet it is really hard to give an exact answer to this as collision rate is hard to calculate mathematically as it is very dependant on the size and values of the testset. For non-cryptographic hashes it is possible to generate DDoS attacks where everything gets placed into the same bucket and thus slows down lookups. On the theoretical side though Murmur3 passes the most often cited Chi Square test, it has a very good avalanche effect and thus generates a hashes that are very close to the uniform distribution.
Because of the lack of available mathematical articles on this topic (murmur vs MD5) I started brute-force tests where I generated a few billion unique keys and inserted them into a Bloom Filter (which had a 1% false positive probability). That showed that Murmur3 is actually on the same level as MD5, it generates roughly the same amount of collisions. I have to types of datasets: the first can use any UTF8 characters and the second works only from the printable ASCII characters. In fact both MD5, murmur3 128bit, murmur3 64bit and xxhash64 bit generated around the same amount of collisions which was 0.016% out of 200 million unique keys. I added Murmur3 32bit for a baseline but it was significantly worse, around 2% of collisions. Maybe to show the difference we need a much larger keyset, I'll try to do what I can.
I'll publish my code in the following days I just have to work on something else too so it's a bit slow, sorry :).
On the other hand if we want to make sure that there will be no collisions, I don't think it's possible with either of these solutions, there is always a chance. To completely cut this off we either have to store the user key-hash maps similarly to the offset indexes or use perfect hashes (but that couldn't work well as it requires the knowledge of the full keyset or have to rebuild the cache in each insert or at least often).

I ran another test with 2,000,000,000 keys being inserted into a Bloom Filter with 1% false positive rate (and it ran for 7 hours and 21 minutes). The test set was created by generating random printable ASCII characters and adding an incremental counter in a random position within a string. The counter was formatted to display 10 digits, so 16 would look like<PHONE_NUMBER> in the string, therefore preserving the length of the strings (which was 110 characters with the counter included).
MD5 hash collisions: 3,325,038 (0.1662%)
Murmur3 128bit hash collisions: 3,330,883 (0.1665%)
Murmur3 64bit hash collisions: 3,327,266 (0.1663%)
Murmur3 32bit hash collisions: 401,833,502 (20.0916%)
XXHash 64bit hash collisions: 3,327,266 (0.1663%)
It shows that interestingly there were slightly more collisions in Murmur3 than in MD5 (MD5 was 0.0002% better, which is 5845 collisions) and interestingly the 64bit hashes performed the best (and I won't mention the 32bit hash :D). Given that there were 2 billion unique keys, that 5845 statistically well within any range of error (it's 0,1% of 3,330,883). I don't expect that with more test runs we'll have significantly bigger differences. As I observed the values were growing linearly with values close together (sometimes MD5 falling behind, sometimes getting ahead) so I think this 0.0002% doesn't mean too much. I didn't save this progress data out as I thought about this 4 hours into the test but I'll do it for the next one.
I'd also like to try out xxHash 128bit but I haven't found any Java JNIs for it yet but I'll keep searching. I expect though that it would perform similarly to the other 128bit hashes but overall I think this could be a good foundation for using traditional hashing algorithms instead of the slow MD5.
Another experiment could be to try out SHA1. As I saw it should be somewhat faster and more collision resistant than MD5, however I never did any kind of experiments, so we'll see if its performance gets meaningfully better (meaning it exceeds at least the 1% error rate).

@lbradstreet @ijuma @junrao I'd like to revive this. This is a bit old I know, but I'd like to close out dangling open issues. Is this needed in the Apache Kafka distribution? (We've been using Murmur3 for the Cloudera distro for 2 years now, didn't have any problems with it since then so it's somewhat time tested.)
If you think this is needed, then please reply within a week, otherwise I close this PR to keep my own list clear. Thank you.

Closing this due to inactivity from reviewers' part.


Replicating multi-GPU EfficientZero Atari results

Hello,
I want to replicate all E0 Atari results to compare my custom learner against.
I have SSH access to 32 CPU core + 4 GPU nodes on a cluster.  I managed to get the single GPU atari_efficientzero_config.py to work, but I have been unable to run the multi-GPU atari_efficientzero_multigpu_ddp_config.py successfully. Can you confirm that the latter works on the current  version? And if so, can you provide the environment details (python version etc.) and the execution instructions used?
Also, do you have the hyperparameters for the E0 Atari trials? I'm assuming they are all default but it would be nice to have confirmation.

Hello, we have confirmed that the file atari_efficientzero_multigpu_ddp_config.py on the main branch can be run normally using the following command:
python -m torch.distributed.launch --nproc_per_node=2 zoo/atari/config/atari_efficientzero_multigpu_ddp_config.py

The environment configuration is as follows:

python==3.9.12
gym==0.25.1
ale-py==0.8.0

Could you please specify the error message you are encountering? Regarding the hyperparameters for EfficientZero, you can use the default settings. If necessary, you can also adjust parameters such as model_update_ratio to optimize performance. I hope this information is helpful to you!


TypeScript Support

It would be great to have TypeScript support for this library!

:smile_cat:

I have a working fork here https://github.com/Anthonyzou/recursive-iterator


Fix Spelling Error and Other Minor Issues

Corrected the spelling on a word, fixed some grammar issues while I was here, and fixed a markdown issue as well.

@TimCorey : Thanks for your contribution! The author, @mikejo5000, has been notified to review your proposed change.

@TimCorey Thanks for the edits!


关于pickle文件

您好，非常抱歉打扰您，我想请问一下pickle文件的一个结构，具体是怎么存储数据的呢，方便提供一下吗，我在训练的时候这个文件一直没有处理好。非常感谢您！

Hi, sorry for the late reply. I assume that you are asking about the pickle files used in dataloaders. The pickle files store image paths (just strings) for loading images. You may create your own pickle files by storing the image paths in a list, and then store it using torch.save api.
For the pickle files used in dataset/faceforensics.py, it has the following structure:
[('path/to/img1.jpg',0), ('path/to/img2.jpg',0), ..., ('path/to/imgN.jpg',1)]

where the first item in the tuple is the image path, and the second item is the binary label.
For the pickle files used in dataset/wild_deepfake.py, it has the following structure:
['path/to/img1.jpg', 'path/to/img2.jpg', ..., 'path/to/imgN.jpg']

Close due to inactivation. Please feel free to reopen this issue if you still have related problems.


Apps freezing using support

On Ender 3 pro, I’m not able to slice my STL when I used support. The application freezes.

Sorry for the inconvenience. Could you please share the STL-file for our analysis ?

There is the STL file.
Chaise chien.zip

I try and doesn’t work

I have a iPad Air 4th generation with iPadOS 17.0.3


Apps can't be run sequentially in the same process

Once one App has been run (and finished), it doesn't fully clean up, so calling another App().run() raises an error.
Brian Mumm posted a solution at https://groups.google.com/forum/#!topic/kivy-users/yfhH7skAEJA , which seems safe to add to Kivy.

I think this will even help us with the testing. In the past I've suggested using each test in a separate process, but perhaps this will clean everything up.


How useful is the contour_count check? Some examples

After improving the check routine a bit by addressing issue #2612, I am not considering how useful the check is (in comparison to how it extremely  often emits false-WARNs)
Here are my current concerns:

Most families in the Google Fonts collection do not PASS this check due to false-WARNs.
Should this remain as a WARN-level check?
Should it be completely deprecated?
Or should it be downgraded to merely INFO-level?

Example 1
Here's a good example of the check detecting an actual problem:

zooming in:

Example 2
Another reasonable warning with the same font (the "divide" glyph only has dots but lacks a bar):

Example 3
Here's a group of false-WARNs on OleoScript-Bold. The glyphs are actually good, but the loops in them result in a different count then what would be expected in most designs:

Example 4
Another good catch: weird contours self-overlapping in SingleDay-Regular glyph "f":

I'd appreciate your input here, @m4rc1e

For example 1, a check that looked at the area (very small) or even point number in contours (< 3) could catch such errant marks.
As for expected number of contours:

It is going to be different in VFs, of course, as overlap isn't removed.
Maaaybe we could get better data if we did a contour analysis on all fonts (or all text fonts) across the collection? Then, we could perhaps even give useful info like, "WARN 98% of text fonts have 1 more contour in the /divide Glyph" or "INFO 73% of text fonts have more 2 fewer contours in the /g."

As this points out, though, it's pretty dependent on the design. I wonder if a 10-minute visual proof would be more effective than trying to guess how many contours a glyph "should" have. Things that are truly mistakes would probably have other characteristics, such as contour area.

It is going to be different in VFs, of course, as overlap isn't removed.

We could run a Remove Overlap step before counting countors

run a Remove Overlap filter [on VFs]

This may erase and hide genuine errors, however, which would survive into the production VF in which overlap is not removed.

I believe the solution to this is to have more fine grained leveling of check results; some FAILs are extremely critical and some are important enough to be FAILs but are okay to wait to fix until later... and some WARNs are important to pay attention to, and some WARNs are not so important.
Viviana mentioned on a call that having the check output an alphabetically sorted, comma separated, single line, and, an alphabetically sorted, line break separated, list, of glyph names to check, would help users so they can copy and paste that list into their font editor to check these things.

This may erase and hide genuine errors, however, which would survive into the production VF in which overlap is not removed.

Sure, but this is often to find a % without a bar in the middle, and a é where the acute overlaps the e because the marks as mispositioned will not be found today, as there are 2 contours, but will be found in this case. So the overlap-removed version is a separate check that also needs human inspection.
The check should have instructions to the human so they can do their job well :)


[WIP] Make Cargo warn about unrecognized sections and possibly give suggestions

Closes #5264.

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @matklad (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

@iancormac84 but dost it warn that path is unused in the first place? From the description of #5264 I've got the idea that patch misspellings don't trigger this particular logic at all...
Could you add a test from #5264 somewhere near this place:
https://github.com/rust-lang/cargo/blob/dfaba34f1efbf521b3198ebec37c6bfa5e2d1abd/tests/testsuite/bad_config.rs#L812
That way, it should be easier to see what is going on here. Perhaps we do warn about misspelled patch already?
As for making this code general, I suggest that, at first, we just produce the usual unused key warning here, without elaboration, because that'll get us 80% of the benefits. a lev-distance solution is excellent, but we need to add it in such way that it handles all the keys.

@matklad It indeed does mention unused manifest key 'path', for example, but no mention of the remaining ."https://github.com/foo/bar". So I'm guessing that's what I need to work towards?

@iancormac84 did you have any luck extending this to handle all the keys?


Activate flake8 as default linter in VSCode

@fwege Could you fix the failing pre-commit check?

You just need to install and run pre-commit locally and it will fixup the formatting for you


Update gitkraken to 3.6.1

After making all changes to the cask:

[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} left no offenses.
[x] The commit message includes the cask’s name and version.

The usual problem with this cask, appcast has reverted to 3.6.0

Added an empty commit to trigger travis.


Add support for Windows using Visual Studio Compiler

This changes enables builds for onnx-mlir on Windows using Visual Studio 2019.
The main changes are:

Update MLIR.cmake to support lib and bin locations for a multi-config generator like Visual Studio (.e.g. on linux, llvm libs may be in llvm-project/build/lib, with MSVC on Windows it may be llvm-project/build/Release/lib). This includes both dependencies and libs/bins built from this project.
Update README.md to have Windows build instructions
Refactor install-mlir.sh into 2 parts, one that clones the llvm repo (clone-mlir.sh) and the other that builds it (build-mlir.sh). These are simply called from install-mlir.sh. This allows both linux and windows builds to share the same clone file and there is only one source of truth for the LLVM commit id (which is doccheck'ed in both linux and windows sections of the README.md)
Add info for how to build dependencies like protobuf and curses on Windows. Update MLIR.cmake on where to find these.
Add info in README for how to specify "lit" tool from LLVM for Windows builds
Add install-mlir.cmd and install-onnx-mlir.cmd batch files for setup on Windows
For MSVC builds disabled certain errors else onnx and submodule builds will fail. These can be removed once the onnx submodule is updated to something after commit id c677aef4cce638412621f6f27e585bfba6f913fb on Feb 15, 2020.

Thank you very much for this PR! Looks great!

Thank you very much for this PR! Looks great!

Thanks! Can you merge in the request? I don't have permissions to complete it.

Thank you very much for this PR! Looks great!

Thanks! Can you merge in the request? I don't have permissions to complete it.

I am adding @tjingrant once he approves the changes as well the patch can land.

@byronChanguion thanks for your feedback! OTOH, is there any chance a windows buildbot can be set up so that we can keep onnx-mlir always functional on Windows?

@byronChanguion thanks for your feedback! OTOH, is there any chance a windows buildbot can be set up so that we can keep onnx-mlir always functional on Windows?

I will do it. Trying to set up the buildbot on Windows via CircleCI.

@tjingrant
I have almost completed the Windows buildbot on CircleCI, but I am running out of credits on CircleCI. Microsoft does not provide CircleCI credits. Is it possible to run such buildbot on your end? Or simply append my modification in the original config.yml. Otherwise, I might develop another buildbot on Azure Pipeline. Thank you.

#107 Done buildbot on Windows.


The flow is not converted to property even after using @NativeCoroutinesState

The library is not generating the correct @property for the defined StateFlow.

Is there a script or command that needs to be executed for the correct code to be generated?

Example of it's use here in case it helps
https://github.com/joreilly/Confetti/blob/main/iosApp/iosApp/ContentView.swift
Are you using @StateViewModel?
On Mon 23 Jan 2023, 13:11 Bibuti Koley, @.***> wrote:

The library is not generating the correct @Property
https://github.com/Property for the defined StateFlow.
[image: image]
https://user-images.githubusercontent.com/20051993/214047814-d50c0b60-238e-4ea3-a0f8-a4e4524a6dee.png
[image: image]
https://user-images.githubusercontent.com/20051993/214047942-1e21b725-3ff8-4b66-b856-367fc7efcade.png
Is there a script or command that needs to be executed for the correct
code to be generated?
—
Reply to this email directly, view it on GitHub
https://github.com/rickclephas/KMM-ViewModel/issues/14, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAABRHRTAPYBMOKKY4GFRZTWTZ7R3ANCNFSM6AAAAAAUD2L73I
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

@joreilly Yes.. I referred the Confetti Repository.
Below is the code snippet.

Hi @bibutikoley! The properties generated by KMP-NativeCoroutines are extensions properties.
Hence they will have their own categorie in the Objective-C header.
Are you able to access the randomNumbers property from Swift?
If not, could you share your build.gradle(.kts) file?

Hello @rickclephas, I'm not able to access the randomNumbers property. It gives me an error.
"Cannot assign to property: 'randomNumbers' is a get-only property"

Here is my build.gradle.kts file (shared module)
plugins {
    kotlin("multiplatform")
    kotlin("native.cocoapods")
    id("com.android.library")

    kotlin("plugin.serialization") version "1.8.0"

    //Native Coroutines Dependency
    id("com.google.devtools.ksp") version "1.8.0-1.0.8"
    id("com.rickclephas.kmp.nativecoroutines") version "1.0.0-ALPHA-3"

}

kotlin {
    android()
    iosX64()
    iosArm64()
    iosSimulatorArm64()

    cocoapods {
        summary = "Some description for the Shared Module"
        homepage = "Link to the Shared Module homepage"
        version = "1.0"
        ios.deploymentTarget = "14.1"
        podfile = project.file("../mvi-iosApp/Podfile")
        framework {
            baseName = "shared"
        }
    }

    sourceSets {

        all {
            languageSettings.optIn("kotlin.experimental.ExperimentalObjCName")
        }

        val commonMain by getting {
            dependencies {

                implementation("com.rickclephas.kmm:kmm-viewmodel-core:1.0.0-ALPHA-3")

                implementation("io.ktor:ktor-client-core:2.2.1")
                implementation("io.ktor:ktor-client-cio:2.2.1")
                implementation("io.ktor:ktor-client-serialization:2.2.1")
                implementation("io.ktor:ktor-client-content-negotiation:2.2.1")
                implementation("io.ktor:ktor-serialization-kotlinx-json:2.2.1")

            }
        }
        val commonTest by getting {
            dependencies {
                implementation(kotlin("test"))
            }
        }
        val androidMain by getting {
            dependencies {
                implementation("io.ktor:ktor-client-android:2.2.1")
                implementation("androidx.core:core-ktx:1.9.0")
                implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
            }
        }
        val androidTest by getting
        val iosX64Main by getting
        val iosArm64Main by getting
        val iosSimulatorArm64Main by getting
        val iosMain by creating {
            dependsOn(commonMain)
            iosX64Main.dependsOn(this)
            iosArm64Main.dependsOn(this)
            iosSimulatorArm64Main.dependsOn(this)
            dependencies {
                implementation("io.ktor:ktor-client-ios:2.2.1")
            }
        }
        val iosX64Test by getting
        val iosArm64Test by getting
        val iosSimulatorArm64Test by getting
        val iosTest by creating {
            dependsOn(commonTest)
            iosX64Test.dependsOn(this)
            iosArm64Test.dependsOn(this)
            iosSimulatorArm64Test.dependsOn(this)
        }
    }
}

android {
    namespace = "com.example.kmparch_mvi"
    compileSdk = 33
    defaultConfig {
        minSdk = 25
        targetSdk = 33
    }
}

@joreilly @rickclephas Thank You for the support and Sorry for the confusion. I placed the KMMViewModel.swift file in a wrong directory. The Code seems to be working fine.
But would like to know if inheritance is supported or not?

Interesting error message. Anyway I think it's because viewModel is the Projection. Could you try the following?:
print("ViewModel -> \(self.viewModel.randomNumbers)")

What exactly do you mean by "inheritance"?
You can subclass your Kotlin ViewModel in Swift (if that's what you mean) like in the sample:
https://github.com/rickclephas/KMM-ViewModel/blob/3c73e14db2576edf8b9e8539e80a4fb3f4ff2090/sample/iosApp/KMMViewModelSample/TimeTravelViewModel.swift#L10-L19

Yeah that should be possible as well.

@rickclephas Can we use SharedFlow with this Library?

Something like this for one-time events

No, SharedFlows aren't currently supported.
Could you share some more information about this use case?
How would you expect to consume/use such a Flow in iOS (and Android)?

@rickclephas I want to perform navigation in the app. (i.e. - One time event).
I would request you to kindly clone this repo - https://github.com/bibutikoley/KmpArch
This repo is simply fetching the data from newsapi and displaying it in the list view and tap of the item user navigates to details page.
I'm using NativeCoroutines and KMM-ViewModel for the same.
My objective is to make the android and iOS use the same codebase in shared module.
For android it works as expected but unable to achieve it in iOS.
Also, the library does not generate the extension properties if ViewModel is in a different Module.
For. eg. In the repo - If I extend NewsListingViewModel from BaseViewModel it works(same module), But If I extend it from KmpViewModel it does not work(different module).

Thanks for the sample code!
How would you normally implement such an architecture in pure Swift?
I am struggling to see/understand the Swift version of such an architecture.

Also, the library does not generate the extension properties if ViewModel is in a different Module.

KMP-NativeCoroutines only generates the required Kotlin code.
When using multiple modules you'll need to make sure these modules are exported to your iOS project.
See the export option in the CocoaPods plugin documentation.

@rickclephas Is there a way to directly initialize the @ObservedViewModel var newsListingViewModel: NewsListingViewModel in the 'NewsListView' from the above example?
Currently we are passing the value from with init(viewModel: ObservableViewModel.Projection)
Please let me know your thoughts on this

You can use the same approach and pass the NewsListingViewModel directly as well.
However keep in mind that you can only do this once for a specific view model. Once the VM is wrapped you'll have to use the projection instead.
init(viewModel: NewsListingViewModel) {
    self._newsListingViewModel = ObservedViewModel(wrappedValue: viewModel)
}

Hi @rickclephas, I tried using the code snippet that you have shared. But unfortunately with this approach the Flow in the viewModel(annotated with NativeCoroutinesState) is receiving any items emitted my the viewmodel.
import shared
import KMMViewModelSwiftUI
import KMMViewModelCore

struct NewsListView: View {

    @ObservedViewModel var newsListingViewModel: NewsListingViewModel

    @State private var isActive = false

    init(vm: NewsListingViewModel = NewsListingViewModel()) {
        self._newsListingViewModel = ObservedViewModel(wrappedValue: vm)
        processEvent(event: (vm.observeEvents as? NewsListingEvents))
    }

    @State private var isShowingDetailView = false

    var body: some View {
        NavigationView {
            VStack {
                ScrollView {
                    Text("Latest News")
                        .padding(20)
                    ForEach((newsListingViewModel.observeRenderState as? NewsListingRenderState)?.newsArticleList ?? [], id: \.self) { item in
                        VStack {
                            NewsListCell(item: item, onTap: { article in
                                newsListingViewModel.action(action: NewsListingActions.UserActionsSelectNewsArticle(newsArticle:article))
                            }).background(
                                NavigationLink(
                                    destination: NewsDetailsView(newsArticle: item),
                                    isActive: $isShowingDetailView
                                ) {
                                    EmptyView()
                                }
                            )
                        }.padding(.bottom, 16)
                            .padding([.leading, .trailing], 16)
                            .background(Color.white)
                            .clipped()
                            .shadow(color: Color.gray.opacity(0.3), radius: 2, x: 0, y: 2)
                    }
                }
            }
        }
    }

    private func processEvent(event: NewsListingEvents?) {
        if event == nil { return }
        switch event {
        case let event as NewsListingEvents.OpenSelectedNews : do {
            print("Event Received -> \(event)")
            break
        }
        default:
            print("Event not recognized")
            break
        }
    }
}

In the above eg. vm.observeEvents is the flow which gets updated by the ViewModel but the item is not received in the UI.
Please check the above code snippet and please share your thoughts.
Thanks!

You are only processing a single event during the initialisation of the view.
Depending on the implementation of the Flow this might be null or an initial event.
Only the body of your view will be reevaluated by SwiftUI upon state changes.
I think you are looking for onreceive(_:perform:).


use css class ".modal-title" instead of "h3" tag

Hi Serhioromano,
Thank you for your code. I think it's better to use css class than the h3 tag to find the title of modal.
Thanks again,

Sure! That is the right way :)


Move auto-update script to Github pages

You could move the data/instructions from server_check.php to a separate Github pages repo.
You would need to reimplement the logic in the client, and keep the old server up for a while, but when all done, people would be able to trust the update process a little more.

Why? The point of version_check.php (not server_check.php) is that I can dynamically take the SyncTrayzor version and variant, and recommend a suitable upgrade. The keyword there is "dynamically"  - github.com pages serve static content only, and aren't capable of running a dynamic script.
I'm not sure I follow the "trust" argument either. Users already trust me. They are running software which I made. Why is a domain and server which I control less trustworthy than github pages? Don't forget that releases are signed also: SyncTrayzor won't install an update which wasn't signed by my private key, so even if someone did compromise the update page, there's no way they could get people to install a malicious update.

...  It also means that I'm dependent on github. If github goes down for an extended period, or if I decide to move somewhere else, I can't.

I agree Github is only static - that's why I said you would need to reimplement some of the logic in the client. If you host a static file, consisting of a list of releases, and their recommended actions/URLs, you can let the client take care of it.
You would be tied to GitHub if you used the github.io hostname - but you could always use a CNAME and move it somewhere else later. (https://help.github.com/articles/using-a-custom-domain-with-github-pages/)
I only thought about this because of the section "Will SyncTrayzor phone home / give away my secrets / etc?" - I figured it was something you were concerned about if you bothered to write that :)
I didn't manage to find the URL, but is it running the latest TLS settings etc? Using something like GitHub would avoid maintaining that. Even if the releases are signed it provides defence in depth.

If you host a static file, consisting of a list of releases, and their recommended actions/URLs, you can let the client take care of it.

No. The whole point of the system is that the client is not in charge of it. It used to work as you describe - except that I just used the list of releases from the github api - and it was inadequate. The current system lets me do things like forcing a particular upgrade path through the versions, or only recommending a particular upgrade to a particular subset of affected users.

I only thought about this because of the section "Will SyncTrayzor phone home / give away my secrets / etc?" - I figured it was something you were concerned about if you bothered to write that :)

Moving to github pages doesn't remove the motivation for that section: it will still say "no".

Using something like GitHub would avoid maintaining that. Even if the releases are signed it provides defence in depth.

My understanding is that you can't use both a custom domain and https on github pages.
I'm afraid this is not going to happen.  Sorry.


Create a separate row-counting management commmand for proofing imports ad hoc

Could potentially log the counts in a dedicated database table

Can you expand a little bit on what you mean by this? If I understand what you are getting at, it may be something I can implement.
Are you talking about logical checks of the data, such as if there are x of this type of row in one table, there should be y rows matching it in some other table? Or are you thinking something else?

It's not anything too high priority. It got added when I was generating as many tickets as possible for our "code rush" in Atlanta. My poorly formed thought was that if we split out a counting routing we could automate some kind of integrity check/report at the end of the load. I'm open for whatever seems worth doing to you.

It's not anything too high priority. It got added when I was generating as many tickets as possible for our "code rush" in Atlanta. My poorly formed thought was that if we split out a counting routine we could automate some kind of integrity check/report at the end of the load. I'm open for whatever seems worth doing to you.

I mentioned this in another context, but it may be relevant here. You all process the TSV files into CSV files and import them, and then there are some number of rejected rows.
I add pk to the front of each line in each TSV file. This would then be translated to the CSV file and, after telling django not to use automatic pk values, into the table.
The benefit of this is that one can then see, for any row in the database, which line of the TSV it came from. Once I did this, I was able to figure out a way to correct the files so that all the data got loaded. Whatever corrections end up getting made or not made, it is still extremely helpful to see which specific lines in the files have problems and what the problems are.

That's a good approach. We have a logger right now that is dumping all the bum rows out for inspection there.
What kind of corrections were necessary?

Well, I have some code doing some corrections, but this is not the approach I would suggest now. And it is not in python. My bad. :-)
See https://github.com/rkiddy/OpenCalAccessData/blob/master/00_fix_dload_files
You can see corrections I do in every row in the "usual fixes" sub at line 111.
If you page down, you will see fixes specific to particular files. These are very ad hoc, so keep that in mind. Don't ask me to defend the code, but it is what it is and it is what my scripts call still.

Eh. We probably don't need this.


Treatment of spaces

In my opinion, for this package, spaces should be left and right-stripped in strings, but preserved in between. I think this should be an option, at the very least. Just wanted to gauge your thoughts on this.
I think this is the behaviour in other markup languages https://yaml.org/spec/1.2.2/
For example:
luakeys.parse(' ke y1 = value one   , k e y 2 =valuetw o', {preserve_space=true}}  -- > {'ke y1'='value one','k e y 2'='valuetw o'}

It should be noted that spaces are stripped from values.

Here is a yaml example
He llo 2: wor ld  # comment
He llo1:         wor ld # comment

results in

{
  "He llo 2": "wor ld",
  "He llo1": "wor ld"
}

I actually found out that this issue was caused on me end. It turns out that \@classoptionslist strips spaces automatically.


Vector Utilities Optimisations

Includes a speedup of the rotation_3d_matrix function by over 20x

Codecov Report
Patch coverage: 40.19% and project coverage change: -0.12 :warning:

Comparison is base (6533b50) 80.06% compared to head (87e3974) 79.95%.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #700      +/-   ##
==========================================
- Coverage   80.06%   79.95%   -0.12%
==========================================
  Files         189      189
  Lines       32411    32472      +61
==========================================
+ Hits        25950    25963      +13
- Misses       6461     6509      +48

Impacted Files
Coverage Δ

resqpy/olio/vector_utilities.py
66.28% <39.00%> (-4.71%)
:arrow_down:

resqpy/olio/triangulation.py
89.49% <100.00%> (-0.04%)
:arrow_down:

... and 2 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Add Lock screen fictionality

Add item on Settings screen https://zpl.io/25OMeK8
Add Lock time settings screen https://zpl.io/bAnJzMP

when you lock the screen, need to open the login screen, as implemented in the desktop wallet.

Steps to reproduce behavior:

Go to wallet.
Go to "SETTINGS" screen.
Set the "Screen lock" for 15 seconds.
Roll up wallet.
After 15 seconds, expand the wallet and login.
Wait 15 seconds for the screen to lock.
Expected: Screen lock after 15 seconds.
Actual:  Screen doesn't lock after 15 seconds.
video_2019-10-22_14-03-03.zip

Let's make as long as you move through the screens, the tabs of the wallet screens, then wallet should not be locked. As soon as no movement on the wallet does not occur, the timer started counting down 15 seconds or how much is set in the settings to lock the screen.
Actual:
video_2019-10-23_12-05-24.zip

checked


publish to github error

@benweet
hi.
I tried to publish a document to a github repo. but it always failed.  the error message is could not publish on github.  I try to change the repo link from https to ssh, and ssh to https. but failed too.
this is my config

Thanks.

Please open a new ticket if it's not fixed in the v5.


add license

Would love to copy from config liberally. Could you maybe add a license? :))

Oh, OK sure!


make unchecked exception handling data output configurable

This PR introduces a dependency on MicroProfile Config 1.3 and adds the ability to configure the data payload for unchecked exception handling.
By default a rootCause data element is added with the message of the root exception.
the io.smallrye.health.uncheckedExceptionDataStyle config property can be set to one of NONE, ROOT_CAUSE, or STACK_TRACE

NONE produces no data payload
ROOT_CAUSE matches the default noted above
STACK_TRACE adds a stackTrace element containing the stack trace of the unchecked exception thrown by the health check

@kenfinnigan thoughts on this PR? I have some other issues I want to tackle, but don't want to pile on in mater - probably should have made a feature branch...

To be honest I'm not sure. It almost feels like something that should also be pushed up to the spec level as opposed to just in one implementation. Has there been an issue created?
I'd would also be good to clean up the formatting of the code, as it doesn't always align as expected.

I was thinking the same thing before I started on the code. It seems to me that the spec is specifically steering clear of the implementation details in this regard, but I can raise the issue there as well. I figured since you accepted my initial PR for the behavior change, this was just a logical follow-on to make the output controllable and add some test coverage.
As far as formatting goes, I tried to respect the spaces-only policy of the existing code, but looks like I introduced a tab or two in the switch statement. Were there other concerns?

turns out I had a bunch of tabs in there - I replaced the simple elegance of
\u0009 with the bloated predictability of \u0020\u0020\u0020\u0020 😜

@kenfinnigan any remaining concerns?


video m3u8 support?

Does nx.js support video streaming. I plan to play videos through nx.js with m3u8 stream file format
Google translator

There is not yet and video player functionality. I'd actually prefer to keep that out of the core nx.js, and instead have a suggested npm module that would implement that on top of the Canvas (and eventually Audio) interfaces that nx.js provides.

It would be great if nx.js supported it. Thank you for your project.

What could possibly make sense is to implement the WebCodecs API in nx.js core, so that applications would have native access to i.e. ffmpeg for decoding various media formats.

Is there any example of playing a video using nx.js? I've been trying to use ffmpeg.js, but encountered a lot of errors


#541 remove namespace dance and extra api up check

#541 and partial #540
Add namespace.yaml and create using apply.
Remove api server up check

And, yes, I realize this could be refactored to the fabric.selector task instead.  I didn't want to change too much at once. A refactor of what is here would be an easy starting task for someone.


Function breakpoints should have glyphs

Currently, VSCode doesn't show any kind of graphical feedback of where function breakpoints have bound to.
Visual Studio and other IDEs show some graphical feedback to show the function breakpoint has bound to some specific locations / the debugger is in break mode at a particular line because of a function breakpoint.
It would be great for VSCode to support this in the case when debug adapters report the line(s) where the function breakpoint has been bound.
This helps users determine that

there is a breakpoint that will be hit at some locations
a breakpoint has been hit when stopped at a function breakpoint.

@weinand @isidorn

This sounds interesting to me. Especially since it would also solve our issue on how to add condition or hit counts to function breakpoints

Somewhat a duplicate of https://github.com/Microsoft/vscode/issues/3388

In february we will tackle https://github.com/Microsoft/vscode/issues/3388 and as part of that we will show function breakpoint glyphs in the debug viewlet.
Showing function breakpoint glyphs in the editor margin is not possible since this is not supported by the debug adapter protocol, and I am not sure which debuggers could support this funcionality.
Since the first part of this issue is covered by another issue and the second part we do not plan to work on I have decided to close this issue.


Bug: TokenSelectDropdown is not accessible

Describe the bug and the steps to reproduce it
The TokenSelectDropdown component does not follow the Listbox WAI-ARIA spec https://www.w3.org/WAI/ARIA/apg/patterns/listbox/
For example, when the component is open, pressing up/down arrow keys doesn't select values while it should.
Also the component name is not right because it's not a dropdown. Options are just values and don't trigger actions (filter, sort etc...). The component should be renamed to TokenSelect.
I would suggest to use the Select component from Radix as it already follows the spec. Imo other components should also use Radix primitives as they take care of all the accessibility stuff and allow us to focus on the business logic. Other big libraries like Shadcn are also building on top of it.
I can work on this, just need to make sure we are aligned regarding introducing Radix.
Also I see the Swap component is following what we discussed about in a previous PR. In this case I'll go with an API similar to the Select component from Shadcn.
What's the expected behavior?
Be accessible and have the correct name
What version of the libraries are you using?
0.23.4

Great callout here.
Naming
I agree with you on the naming. TokenSelect* is a grouping of three components. If TokenSelectDropdown name is changed, current TokenSelectButton (button) and TokenSelectModal (modal) names need to be updated to match.
Accessibility
Other than the name rotation:
TokenSelectDropdown should use select and option instead of using div and button. Specifically, TokenSelect needs to be select and TokenSelectDropdown needs to use option
I wanted to improve these but ran out of time.
Radix
There were extended conversation about integrating radix. Long story short, the decision was not integrating with radix.
However, the intent is to allow users to use UI library of their choice.
Overriding UI library
Swapping out underlying components for *uncontrolled components like Token components is straight forward. At most, Token components take three props: token, setToken, options. With Swap component, story becomes much more complex.
Let's dial up the complexity and talk about:

UI component placement
Share control logic

Scenario 1 - Original Swap + Token override components
Overriding Token component is straight forward. But what if the user wants to use Token override components with SwapAmountInput?
Few potential approaches are:

Composable SwapAmountInput component API like the top level Wallet and Swap component.
Use hooks + context to provide enough information for the user to build SwapAmountInput from the ground up.

Scenario 2 - Override everything
Take a look at this or latest main branch for Swap components - https://github.com/coinbase/onchainkit/pull/726
This PR refactors all business logic to reside at the root Swap component. This allows Swap subcomponents to receive everything via hooks + context.
Either all the hooks are exposed or OCK allows component whatever override method used for uncontrolled components.
<Swap>
  <SwapAmountInput as={MySwapAmountInput} />
</Swap>

or something like
function SwapAmountInput() {
  const { ... } = useSwapData('textinput:from')
}

I will stop right here but there is quite a few ways to enable to override the entire UI layer. I recommend to explore various methods to achieve the goal of "bring your own UI library".

To make sure I'm following you correctly. Your goal is to allow users to compose their own components using:

Subcomponents of the given component i.e. build TokenSelect using TokenSelectRow, build Swap using SwapAmountInput etc...
Written from scratch components by users i.e. build Swap where SwapAmountInput is actually written by the user.
Subcomponents from other components i.e. build TokenSelect using SwapAmountInput

Assuming that's the direction, points 2 and 3 are too overstretched as there are a lot of edge cases that will make things unnecessarily complex and may even confuse users.

Overriding Token component is straight forward. But what if the user wants to use Token override components with SwapAmountInput?
Few potential approaches are:

Composable SwapAmountInput component API like the top level Wallet and Swap component.
Use hooks + context to provide enough information for the user to build SwapAmountInput from the ground up.

I don't see what's the purpose of using SwapAmountInput with TokenSelect. I feel like we are trying to give too much freedom to users. And as long as React Context is used, components should be scoped. The following will not work without wrapping it inside its provider.
https://github.com/coinbase/onchainkit/blob/c099cc66e0909b89801e765b3dd1d40004ba0e07/src/swap/components/SwapAmountInput.tsx#L16-L24

Scenario 2 - Override everything

That's fine to some extent. The main issue is the level of complexity to re-implement a given feature. If it's too complex, people will give up.

Other than the name rotation:
TokenSelectDropdown should use select and option instead of using div and button. Specifically, TokenSelect needs to be select and TokenSelectDropdown needs to use option

And beyond just using the correct HTML tags, accessibility includes aria attributes, focus, keyboard navigation, screen reader etc... For reference, the Select component from Radix is ~1500 lines without comments. If I were to write my own components, those are not things I would want to handle and it is actually backward when consuming a component library.
Before giving complete freedom to users, it would be best for OnchainKit components to be fully functional.
Taking TokenSelect as an example, besides not being accessible

It doesn't support the typeahead feature which is very common in Select components.
Given the number of tokens, sometimes it's more beneficial to search tokens asynchronously by fetching them from a bucket or whatever.
There's no way to group items (by chains for example).
There's no way to position where the select options are displayed (top, bottom) so it may go off the screen.

And then expand the scope once things are ironed-out.

Before giving complete freedom to users, it would be best for OnchainKit components to be fully functional.

Absolutely agreed there and that's what OCK wants and needs to be.

Taking TokenSelect as an example, besides not being accessible ...

Agreed there too. OCK approach has been to keep things simple then build it up. Team is very well aware of short coming of current components including full accessibility support.

That's fine to some extent. The main issue is the level of complexity to re-implement a given feature. If it's too complex, people will give up.

Absolutely. I do think that OCK can achieve this without being too difficult and actually be straight forward with some good documentation that is copy-paste friendly.

The following will not work without wrapping it inside its provider.

Agreed! OCK does not support UI library override in its current state. It's gonna take some work.

Let's breakdown Radix though...

Layout and Typography is unnecessary. OCK can do all this with tailwindcss.
Many Components can be done via tailwindcss pretty easily and many OCK has no use case for at the moment.

Keep things simple. While radix can solve the TokenSelect, I'd be careful with doing a full integration.

At the end of the day, accessibility is the core issue here. Whether to solve that with Radix or not... I wouldn't pure give up on achieving that just because a UI library does it for you.
I am taking a long hiatus soon and wanted to give you, and the rest of the team, insight on where my head was at while I wrote up those components.
That is all to say, I won't be part of making the decision on how to address the accessibility or to revisit the decision on Radix integration. I did plan out architecturally how to move forward but I expect things to change given that I won't be here to see it to the end.
Lastly, been loving your thoughtful and insightful contributions and questions.
Onchain team has been rocking it and hope they continue on with their good work.
It's been a pleasure to be part of this journey.

Thanks for all your insight and stewardship. There's definitely a lot to learn from that.
Cheers @kyhyco


checkEditor() return null

BackendAuth::getUser() return null in route.php even the user is logged.
I gues due to something similar than here https://github.com/octobercms/october/issues/3052
PHP 7.1 - last october version

PHP7.0 Last october version

Fixed https://github.com/Samuell1/contenteditor/commit/6e0a72dbf5728de2582e711d9018c8c0edcd4294


dns documentation

You should put a note in your quick install docs that if you enable the dns component and your company blocks external dns servers by default you'll have to update the default settings dns list via

kubectl --namespace kube-system edit configmap/kube-dns

before it will work from any pods

Hi @cneberg ,
What did you have to change on kube-dns? The external nameserver IPs [<IP_ADDRESS>, <IP_ADDRESS>]?

yes, I just changed those 2 ip addresses to local site DNS Servers.


Image JS Buffer (Neon)

How to return vec<u8> buffer as JsBuffer ? For later use with opencv in nodejs.
And feature request to add method .js_buffer() if possible
fn take_screenshot(mut cx: FunctionContext) -> JsResult<JsBuffer> {
  let start = Instant::now();
  let screen = Screen::from_point(100, 100).unwrap();
  let image = screen.capture_area(300, 300, 300, 300).unwrap();
  let buffer = image.buffer();

  Ok(buffer)
}

lib.rs
fn take_screenshot(mut cx: FunctionContext) -> JsResult<JsArray> {
  // let start = Instant::now();
  let screen = Screen::from_point(0, 0).unwrap();
  let image = screen.capture_area(0, 0, 900, 900).unwrap();
  let buffer = image.buffer();

  let js_buffer = JsArray::new(&mut cx, buffer.len() as u32);
  for (i, &item) in buffer.iter().enumerate() {
    let v = cx.number(item as f64);
    js_buffer.set(&mut cx, i as u32, v)?;
  };
  Ok(js_buffer)
}

NodeJS, atleast I can proccess it now =)
const shot = require('./index.node');
const fs = require('fs');
const screenshotBuffer = Buffer.from( new Uint8Array( shot.take_screenshot() ) );
fs.writeFileSync('./test.bmp', screenshotBuffer);

Can this help you？https://github.com/nashaofu/node-screenshots

Can this help you？https://github.com/nashaofu/node-screenshots

Looks like exactly what I need. Today gonna test which one is faster for my purpose.

Damn, https://github.com/nashaofu/node-screenshots is twice faster =)
thank you


feat: multi-sig IPEX apply, offer, agree endpoints

Continuing #193 for multi-sig. No spurn yet.

Note - multi-sig admit should retrieve the recipient of admit from the rp field (to be renamed to ri). Right now it takes the issuer of the ACDC but that only works for issuances and not presentations.
Will update that after Signify-TS has been updated though to always pass the recipient.


vault: 1.0.3 -> 1.1.0

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/vault/versions.
meta.description for vault is: '"A tool for managing secrets"'.
Compare changes on GitHub

Checks done (click to expand)

built on NixOS
/bin/sh passed the binary check.
1 of 1 passed binary check by having a zero exit code.
0 of 1 passed binary check by having the new version present in output.
found 1.1.0 with grep in /nix/store/3sdv7i073x3klip7q7ipg8n2d3y7ick4-vault-1.1.0
directory tree listing: https://gist.github.com/216c70a5dc57c179715edbd2a40a8dec
du listing: https://gist.github.com/d3662458eabfdcbd4ce20f5444b73973

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)
1 package rebuild(s)
1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
1 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
vault

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/3sdv7i073x3klip7q7ipg8n2d3y7ick4-vault-1.1.0 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A vault https://github.com/r-ryantm/nixpkgs/archive/d41c9b34cdb67bf548ecae57f9e368130f40ea8a.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/3sdv7i073x3klip7q7ipg8n2d3y7ick4-vault-1.1.0
ls -la /nix/store/3sdv7i073x3klip7q7ipg8n2d3y7ick4-vault-1.1.0/bin

cc @rushmorem @lnl7 @offlinehacker @pradeepchhetri for testing.

@GrahamcOfBorg test vault

This pull request has been mentioned on Nix community. There might be relevant details there:
https://discourse.nixos.org/t/prs-already-reviewed/2617/12

@GrahamcOfBorg test vault

test timed out on ofborg but succeeds locally


V8 WISHLIST: Swashbuckle Support

Recording an existing feature as an ask so I don't forget ;-)
Swashbuckle support for the service.

Included in 2b60ec3


Add new field in the RateLimitRequest message

Commit Message: Add is_reporting field in the RateLimitRequest message
Additional Description: Rate limit requests can optionally specify if the request should still increase the number of hits a request adds to the matched limit even when the request is over limit. If the value is not set in the message, this defaults to false and a request does not increase the matched limit when the request is over limit. This may be useful for scenarios where the client wants to provide an update the rate limit counter without being concerned about whether the request is over limit.
Risk Level: Low
Testing: N/A
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

How would Envoy use this new field? Can you create an Issue with the description of the problem you are trying top solve, please?
/wait-any

@yanavlasov Created an issue here https://github.com/envoyproxy/envoy/issues/29161

/assign @yanavlasov

@yanavlasov i think this awaiting further review
/wait-any

@PeterL328  I've asked some question on #29161 Will continue review after I understand the problem better.

Hi @yanavlasov,
I did some testing with the ratelimit sidecar and found that actually the current behavior of the sidecar is what we already want.
i.e if we configured 80 requestsPerUnit as configuration for one descriptor in ratelimit sidecar.
If we send a sequence of requests within the minute,
Start with a request of 50 hits_addend, remaining goes down to 30
sending another request of 50 hits_addend, we get overlimit (but remaining actually goes down to 0)
sending another request of 30 hits_addend, we get overlimit
so I will close this issue. Sorry for confusion


OCPBUGS-35505: LB tests: update sharding domain

WIP I need to figure out why it changed.

/jira refresh

/hold
Like I said in the commit message, I haven't found yet the root cause of the change.

/cc rlobillo

I'll need a reproducer on this one :/

/lgtm
/approve


docs: add slides and demo recording links and files for Michael's vau…

…lt presentation
Signed-off-by: Michael Adam<EMAIL_ADDRESS>

This change is

LGTM


Add Authress discolsure program: https://authress.io/app/#/disclosure

Summary
Add Authress to the program list.
Quality Assurance Checklist

Review Items
Y/N

Site has a publicly known bug bounty or vulnerability disclosure program
Y

Disclosure policy is publicly available
Y

Public URL
Y

Submission follows the Diodb schema
Y

Your Mastodon handle (Optional<EMAIL_ADDRESS>

@codingo @yesnet0, this has been here a while, same as some other PRs, is this repo still being maintained?

I clear from time to time, but am a volunteer in this effort - I'll spend some time going over these now

I clear from time to time, but am a volunteer in this effort - I'll spend some time going over these now

@codingo I totally understand. Thank you for keeping track of these. For context I wanted to share this list, and I just wanted to check first. Thank you again.


dir-locals aren't being applied

I have a .dir-locals.el file in the root of my blog that looks like this:
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")

((nil
  (org-static-blog-page-preamble . "
Matthew Bauer ◌ Blog ◌ RSS
")
  (org-static-blog-publish-title . "Matthew Bauer’s Blog")
  (org-static-blog-publish-url . "https://matthewbauer.us/blog/")
  (org-static-blog-rss-file . "feed.xml")
  (org-static-blog-index-length . 1)
  (org-static-blog-page-header . "  <meta name=\"author\" content=\"Matthew Bauer\">
  <meta name=\"viewport\" content=\"initial-scale=1,width=device-width,minimum-scale=1\">
  <link rel=\"stylesheet\" href=\"../style.css\">")))

They don't seem to be used by org-static-blog-publish. The values are set in the buffer, but org-static-blog uses the custom one for some reason.

I believe that org-static-blog-publish is not executed in org-static-blog-{publish,posts,drafts}-directory, which is why it is not picking up your .dir-locals.el. This would be a neat feature, though, and I would be grateful for a pull request that adds this. Probably for the org-static-blog-posts-directory.


Implement client-side grpc interceptor to automatically pass metadata to grpc calls

Current behavior:
Right now the user should pass metadata for authentication to each call using a convenience method to automatically get the metadata for the next call which takes no parameters.
Desired behavior:
Implement the grpc client-side interceptor so that it automatically gets the metadata for each call (see: https://grpc.io/grpc/python/grpc.html#client-side-interceptor)

Done.


prep for move to Esri org

Apache 2.0 license
more package.json
Esri copyright header in project entrypoint
more README
newer target node version

i'll put in another inquiry with the admins to review and move this to @Esri as soon as this PR lands.

i've rebased this PR.
@tomwayson if you can review/merge afterward we can move to https://github.com/ArcGIS afterward (and then https://github.com/Esri)

pushed another commit to address @tomwayson's feedback.
i don't have push access to this repo to merge this PR, let alone admin access to stage it temporarily in the ArcGIS Organization.

@dbouwman will have to transfer to the ArcGIS org


Demo UIs

NOTE: Split this into smaller issues
We should have some sort of UI for the demos that allow us to exercise the features of the simulator engine.
Examples of which are:

Dynamically regenerating arenas
Dynamically adding walls/objects
Dynamically adding robots

Controlling said added robots

Would a UI like in https://stevenvaneyck.github.io/babylon-example work (top right box)? It's pretty easy to write (see https://github.com/FRUK-Simulator/babylon-example/blob/master/src/index.ts#L7). You'd be dragging in Babylon JS as a dependency, but don't see any downsides to that.

Take a look at dat.gui, it’s really simple to integrate and it looks a little more polished :D

Yeah something simple will do. Basic controls to add a game object to a random spot etc. Or apply motor power to a simulated robot


Updates I needed to make to get it to work

Good day, Arne,
I decided to use your Parse plugin for my latest Ionic / Cordova project, and there were a few minor updates that needed to be done for it to work for me. Some of the updates stem from the fact that I am using Cordova 5.

I updated the Cordova plugin requirement to v5. This is because of some changes in CordovaWebView that I needed to make, which break backwards compatibility on older versions of Cordova
the Cordova Google Play plugin has been changed, and the old one no longer works with Cordova 5
the ParsePlugin initialisation call was not returning on my devices until I moved the call onto the UI thread. It now initialises correctly
your plugin was not intercepting BOOT_COMPLETE in order to initialise Parse. I have added that intent filter to your ParseWakeUpReceiver

I don't know if you are still planning to keep this repo up to date, but thought that these updates might be helpful. Of the 2 Parse Cordova plugin architectures available, I find yours much easier to work with, which is why I have chosen to continue forward development on this one.
Kind regards,
Richard Le Mesurier
Glowworm Software
Cape Town, SA

I will need to update this pull request. It seems that I need "Cordova 4" compatibility rather than v5.


Added split network: Each subnetwork takes parts of the data, outputs are combined

This is helpful if you have data with different condition and you want separate summary networks for each condition.

Nice! networks.py is now deprecated. Add new class to summary_networks.py instead.


Rehearsal updates

See individual commits, I think I fixed most of what I had noted from the rehearsal.
@davidz627, FYI, please merge it if it's fine.
I did not fix these, because we're going to talk about them without slide:

David: discovery of members of statefulset (-> they have stable names -> dns, maybe service?)
Jan: recommend CSI over flex

Still remaining: ephemeral volumes (Pod with a secret or config map?)

I am merging this as it is, I need to generate PDF today and publish it on sched.org. We can still change the slides afterwards.


Generation of input types for crud mutations

If I define:
export const UserMutation = extendType({
    type: "Mutation",
    definition(t) {
        t.crud.createOneUser({alias: 'signUp'})
    },
})

then signUp mutation will be generated along with UserCreateInput type.
But if I need to customise the signUp mutation, I need to do something like:
export const UserMutation = extendType({
    type: "Mutation",
    definition(t) {
        t.field("signUp", {
            type: "Event",
            args: {
                data: arg({type: "EventCreateInput"})
            },
            resolve: async (mutation, {data}, context: Context) => {
                ...
            },
        })
    },
})

But if I do so, then UserCreateInput is not generated anymore. Thus, I need to redefine it manually.
This type is pretty complicated to define it manually. It would be great, if nexus generate it even if t.crud.createOneEvent() is not called, but, for example, if it's just mentioned as arg({type: "EventCreateInput"}).

Currently, to bypass the issue, I need to define _createUser mutation:
t.crud.createOneUser({alias: '_createUser'})

and then deny access to it by graphql shield:
_createUser: deny,

This way UserCreateInput is autogenerated, and I can use it in my custom mutation:
export const SignUpMutation = mutationField("signUp", {
    type: "Authentication",
    args: {
        data: arg({type: "UserCreateInput"})
    },
    resolve: async (parent, {data}, context: Context) => {
       ...
    },
})

Hey @victordombrovskiy thanks for this great feedback and example. This is a great example of how our tools are currently not scaling / not flexible enough. As you point out, at one point you cannot decompose and recompose but have to restart from scratch, essentially. This is not want we think a good dx looks like.
We will look more closely at the DSL in October / November. Meanwhile any perspective you want to share on your ideal type def building blocks API please do! 🙏


Added, refactored and benchmarked generators

Benchmark                               Mode  Cnt         Score        Error  Units
FlowIDGeneratorBenchmark.benchmark     thrpt   20   1729181.585 ± 223150.487  ops/s
PhraseGeneratorBenchmark.benchmark     thrpt   20   3300561.101 ±  14240.463  ops/s
Random128GeneratorBenchmark.benchmark  thrpt   20   6321656.678 ± 157584.328  ops/s
Random64GeneratorBenchmark.benchmark   thrpt   20  18832239.620 ± 301036.583  ops/s
UUIDGeneratorBenchmark.benchmark       thrpt   20    450073.652 ±  46148.695  ops/s

Looks like UUIDGenerator is an order of magnitude slower

Looks like UUIDGenerator is an order of magnitude slower

Yep.

Adding the time-based uuid generator from https://github.com/cowtowncoder/java-uuid-generator could also be interesting.

Closed in favor of split pull requests