docker volume create -d flocker fails

After

running the full deployment (as documented in the README and Tutorial), with 2 changes to make it work
using change https://github.com/ClusterHQ/flocker-ceph-vagrant/pull/4
plus the change referenced in https://github.com/ClusterHQ/flocker-ceph-vagrant/issues/5
and verifying that ceph -s returns health HEALTH_OK
I cannot get a volume created with the flocker driver.

As proposed in the tutorial, I ran:
vagrant ssh ceph3 -c 'sudo docker volume create -d flocker --name test2g -o size=2G'
and waited some time.. but no flocker volume gets created ( vagrant ssh ceph3 -c "sudo df -h | grep flocker"   returns nothing. ps: I double checked without the grep! )
I checked the logs  (and googled a bit for similar issues) but cannot see what's going wrong.
vagrant@ceph2:/var/log/flocker$ ls -lart
...
-rw-r--r--  1 root root    2323 May 23 12:56 flocker-docker-plugin.log
-rw-r--r--  1 root root   15492 May 23 12:57 flocker-container-agent.log
-rw-r--r--  1 root root   90136 May 23 12:58 flocker-dataset-agent.log

No errors found in the first 2 log files.. but many 'exceptions' found in the 'dataset' one (always the same 2-3 exceptions  are repeated .. it looks like flocker repeatedly tries to get it working, but always fails).
Here's an extract , containing  2x  the group of the 3 exceptions plus any logs around
{"exception": "subprocess.CalledProcessError", "task_level": [2, 2, 3], "action_type": "flocker:agent:discovery", "reason": "Command '['rbd', '-p', 'rbd', 'showmapped']' returned non-zero exit status 1", "timestamp":<PHONE_NUMBER>.802584, "task_uuid": "ed2347d1-f4d4-45ab-ae2c-17bc61385a96", "action_status": "failed"}
{"exception": "subprocess.CalledProcessError", "reason": "Command '['rbd', '-p', 'rbd', 'showmapped']' returned non-zero exit status 1", "timestamp":<PHONE_NUMBER>.804318, "traceback": "Traceback: <class 'subprocess.CalledProcessError'>: Command '['rbd', '-p', 'rbd', 'showmapped']' returned non-zero exit status 1\n/opt/flocker/local/lib/python2.7/site-packages/machinist/_logging.py:102:receive\n/opt/flocker/local/lib/python2.7/site-packages/machinist/_fsm.py:534:receive\n/opt/flocker/local/lib/python2.7/site-packages/machinist/_fsm.py:592:output\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/_loop.py:529:output_CONVERGE\n--- <exception caught here> ---\n/opt/flocker/local/lib/python2.7/site-packages/twisted/internet/defer.py:150:maybeDeferred\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/agents/blockdevice.py:1798:discover_state\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/agents/blockdevice.py:1345:_count_calls\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/agents/blockdevice.py:1744:_discover_raw_state\n/opt/flocker/local/lib/python2.7/site-packages/ceph_flocker_driver/ceph_rbd.py:259:list_volumes\n/opt/flocker/local/lib/python2.7/site-packages/ceph_flocker_driver/ceph_rbd.py:121:_list_maps\n/usr/lib/python2.7/subprocess.py:573:check_output\n", "message_type": "eliot:traceback", "task_uuid": "ed2347d1-f4d4-45ab-ae2c-17bc61385a96", "task_level": [2, 3]}
{"task_uuid": "ed2347d1-f4d4-45ab-ae2c-17bc61385a96", "log_level": "INFO", "timestamp":<PHONE_NUMBER>.804492, "message": "Intentionally delaying the next iteration of the convergence loop to avoid RequestLimitExceeded.", "message_type": "flocker:node:_loop:delay", "current_wait": 10, "task_level": [2, 4]}
{"delay": 10, "task_uuid": "ed2347d1-f4d4-45ab-ae2c-17bc61385a96", "log_level": "INFO", "timestamp":<PHONE_NUMBER>.804658, "message": "Delaying until next convergence loop.", "message_type": "flocker:node:_loop:CONVERGE:delay", "task_level": [2, 5]}
{"fsm_identifier": "<flocker.node._loop.ConvergenceLoop object at 0x7fae760e9c50>", "fsm_input": "<ConvergenceLoopInputs=SLEEP>", "timestamp":<PHONE_NUMBER>.804929, "fsm_rich_input": "<_Sleep>", "action_status": "started", "task_uuid": "ed2347d1-f4d4-45ab-ae2c-17bc61385a96", "action_type": "fsm:transition", "fsm_state": "<ConvergenceLoopStates=CONVERGING>", "task_level": [2, 6, 1]}
{"fsm_next_state": "<ConvergenceLoopStates=SLEEPING>", "task_level": [2, 6, 2], "action_type": "fsm:transition", "timestamp":<PHONE_NUMBER>.805181, "fsm_output": ["<ConvergenceLoopOutputs=SCHEDULE_WAKEUP>"], "task_uuid": "ed2347d1-f4d4-45ab-ae2c-17bc61385a96", "action_status": "succeeded"}
{"timestamp":<PHONE_NUMBER>.805348, "task_uuid": "ed2347d1-f4d4-45ab-ae2c-17bc61385a96", "action_type": "flocker:agent:converge", "action_status": "succeeded", "task_level": [2, 7]}
{"fsm_next_state": "<ConvergenceLoopStates=SLEEPING>", "task_level": [3], "action_type": "fsm:transition", "timestamp":<PHONE_NUMBER>.805503, "fsm_output": ["<ConvergenceLoopOutputs=CLEAR_WAKEUP>", "<ConvergenceLoopOutputs=CONVERGE>"], "task_uuid": "ed2347d1-f4d4-45ab-ae2c-17bc61385a96", "action_status": "succeeded"}
{"fsm_identifier": "<flocker.node._loop.ConvergenceLoop object at 0x7fae760e9c50>", "fsm_input": "<ConvergenceLoopInputs=WAKEUP>", "timestamp":<PHONE_NUMBER>.810326, "fsm_rich_input": null, "action_status": "started", "task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "action_type": "fsm:transition", "fsm_state": "<ConvergenceLoopStates=SLEEPING>", "task_level": [1]}
{"timestamp":<PHONE_NUMBER>.811234, "task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "action_type": "flocker:agent:converge", "action_status": "started", "task_level": [2, 1]}
{"timestamp":<PHONE_NUMBER>.811765, "task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "action_type": "flocker:agent:discovery", "action_status": "started", "task_level": [2, 2, 1]}
{"count": 134, "function": "_discover_raw_state", "task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "timestamp":<PHONE_NUMBER>.812132, "message_type": "flocker:node:agents:blockdevice:list_volumes", "task_level": [2, 2, 2]}
{"exception": "subprocess.CalledProcessError", "task_level": [2, 2, 3], "action_type": "flocker:agent:discovery", "reason": "Command '['rbd', '-p', 'rbd', 'showmapped']' returned non-zero exit status 1", "timestamp":<PHONE_NUMBER>.840989, "task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "action_status": "failed"}
{"exception": "subprocess.CalledProcessError", "reason": "Command '['rbd', '-p', 'rbd', 'showmapped']' returned non-zero exit status 1", "timestamp":<PHONE_NUMBER>.841359, "traceback": "Traceback: <class 'subprocess.CalledProcessError'>: Command '['rbd', '-p', 'rbd', 'showmapped']' returned non-zero exit status 1\n/opt/flocker/local/lib/python2.7/site-packages/machinist/_logging.py:102:receive\n/opt/flocker/local/lib/python2.7/site-packages/machinist/_fsm.py:534:receive\n/opt/flocker/local/lib/python2.7/site-packages/machinist/_fsm.py:592:output\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/_loop.py:529:output_CONVERGE\n--- <exception caught here> ---\n/opt/flocker/local/lib/python2.7/site-packages/twisted/internet/defer.py:150:maybeDeferred\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/agents/blockdevice.py:1798:discover_state\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/agents/blockdevice.py:1345:_count_calls\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/agents/blockdevice.py:1744:_discover_raw_state\n/opt/flocker/local/lib/python2.7/site-packages/ceph_flocker_driver/ceph_rbd.py:259:list_volumes\n/opt/flocker/local/lib/python2.7/site-packages/ceph_flocker_driver/ceph_rbd.py:121:_list_maps\n/usr/lib/python2.7/subprocess.py:573:check_output\n", "message_type": "eliot:traceback", "task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "task_level": [2, 3]}
{"task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "log_level": "INFO", "timestamp":<PHONE_NUMBER>.841584, "message": "Intentionally delaying the next iteration of the convergence loop to avoid RequestLimitExceeded.", "message_type": "flocker:node:_loop:delay", "current_wait": 10, "task_level": [2, 4]}
{"delay": 10, "task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "log_level": "INFO", "timestamp":<PHONE_NUMBER>.84175, "message": "Delaying until next convergence loop.", "message_type": "flocker:node:_loop:CONVERGE:delay", "task_level": [2, 5]}
{"fsm_identifier": "<flocker.node._loop.ConvergenceLoop object at 0x7fae760e9c50>", "fsm_input": "<ConvergenceLoopInputs=SLEEP>", "timestamp":<PHONE_NUMBER>.842023, "fsm_rich_input": "<_Sleep>", "action_status": "started", "task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "action_type": "fsm:transition", "fsm_state": "<ConvergenceLoopStates=CONVERGING>", "task_level": [2, 6, 1]}
{"fsm_next_state": "<ConvergenceLoopStates=SLEEPING>", "task_level": [2, 6, 2], "action_type": "fsm:transition", "timestamp":<PHONE_NUMBER>.842266, "fsm_output": ["<ConvergenceLoopOutputs=SCHEDULE_WAKEUP>"], "task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "action_status": "succeeded"}
{"timestamp":<PHONE_NUMBER>.842427, "task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "action_type": "flocker:agent:converge", "action_status": "succeeded", "task_level": [2, 7]}
{"fsm_next_state": "<ConvergenceLoopStates=SLEEPING>", "task_level": [3], "action_type": "fsm:transition", "timestamp":<PHONE_NUMBER>.84258, "fsm_output": ["<ConvergenceLoopOutputs=CLEAR_WAKEUP>", "<ConvergenceLoopOutputs=CONVERGE>"], "task_uuid": "de55d127-f2e6-4e5c-b752-26859e1b5431", "action_status": "succeeded"}

Where else to look to understand what is broken?
Any other logs to check?
What logs should I provide?
I can provide the sudo flocker-diagnosticstar!
some infos about my dev env:
Mac-OS-X 10.9.5 (yeah I need to upgrade finally I know!) with 16GB RAM (Apple gives us 32GB in coming MacBooks plz!!)
Virtualbox v5.0.14
Vagrant v1.8.1
ansible 2.0.1

Update:
When I saw that the latest flocker version (1.12) came out no 2 weeks ago (-> after the time of the work done in this repos), I had some hope this might work when trying with v1.11*.
I added some flexibility to the flocker ansible role (I can provide a PR!), offering to set the flocker version dynamically  (by default could set it to '1*' so it installs latest v1.*)
Unfort. still no luck.
I also re-tried another test case, which failed (like with latest flocker) with a timeout (after ca 2min):
vagrant@ceph3:/var/log/flocker$ sudo  docker run -v apples:/data --volume-driver flocker  busybox sh -c "echo hello > /data/file.txt"
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
385e281300cc: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:4a887a2326ec9e0fa90cce7b4764b0e627b5d6afcb81a3f73c85dc29cea00048
Status: Downloaded newer image for busybox:latest
docker: Error response from daemon: Timed out waiting for dataset to mount..
´´´

@lhoss sorry I missed this! Thanks for all the digging into this. Its likely we should have pointed this repo at a point in time fork or git hash of ceph-ansible so we don't have to always keep it up to date. Once I get some time to dig into this I will. If you could, please send the flocker-diagnostics tar to<EMAIL_ADDRESS>Ceph support is still experimental, PRs and help welcome, and thanks for what you've done so far.

This looks similar to something I came across recently. Could you try removing --selinux-enabled from DOCKER_OPTS?

Hi again,
not sure where exactly to add/remove DOCKER_OPTS (no reference found in your ansible playbook!), but I tried adding following to /etc/default/docker  and restarted docker (on ceph3 where I tested):
DOCKER_OPTS="--selinux-enabled=false"
This did not help.
After digging deeper (first with docker volume), then after installing 'flockerctl?, I found out that the volume was still in PENDING state.
During flockerctl tests, I also found out that /etc/hosts , on all the VMs, was actually quite broken (not sure if from the start, or after I rerun 'vagrant provision').
so how should DNS works to connect to other nodes (it is interesting though  that the logs don't give a hint that DNS requests do not work!).
Ex. from ceph3:
<IP_ADDRESS> ceph3.ceph.local ceph3
<IP_ADDRESS>   ceph1 ceph1.local ceph1.ceph.local
<IP_ADDRESS>   ceph1 ceph1.local ceph1.ceph.local
<IP_ADDRESS>   ceph1 ceph1.local ceph1.ceph.local
<IP_ADDRESS>   ceph1 ceph1.local ceph1.ceph.local

I fixed this , restarted  all flocker services  and tried again to create a new volume. but still failed.
new hosts:
#<IP_ADDRESS> ceph4.ceph.local ceph4
<IP_ADDRESS>   ceph1 ceph1.local ceph1.ceph.local
<IP_ADDRESS>   ceph2 ceph2.local ceph2.ceph.local
<IP_ADDRESS>   ceph3 ceph3.local ceph3.ceph.local
<IP_ADDRESS>   ceph4 ceph4.local ceph4.ceph.local

ps: interestingly (after fixing /etc/hosts), I still cannot use flockerctl by giving the hostname in the 'control-service' arg.

Failure: twisted.internet.defer.FirstError: FirstError[#0, [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.DNSLookupError'>:
DNS lookup failed: address 'ceph1' not found: [Errno -2] Name or service not known.

It only works with the IP .. example showing the pending.
root@ceph3:/etc/flocker# flockerctl --control-service=<IP_ADDRESS>  --user=plugin --certs-path=/etc/flocker  list
DATASET                                SIZE     METADATA                              STATUS        SERVER
3c8bc988-4826-48cf-a18c-66c5d79e8e5d   2.00G    maximum_size=2147483648,name=test2g   pending ⌛   b795280d (<IP_ADDRESS>)
So it seems my VM's networking is quite broken ( I wonder if there's specific requirements  about any Vagrant plugins  that might interfer with hosts creation?! usually that's only about the vagrant host !)
Could you verify the /etc/hosts in your VM ?!
Finally I checked some log, and I found another potential issue, about  bad  'rbd' cmd!
root@ceph3:/var/log/flocker# less flocker-dataset-agent.log
{"exception": "subprocess.CalledProcessError", "reason": "Command '['rbd', '-p', 'rbd', 'showmapped']' returned non-zero exit status 1", "timestamp":<PHONE_NUMBER>.952411, "traceback": "Traceback: <class 'subprocess.CalledProcessError'>: Command '['rbd', '-p', 'rbd', 'showmapped']' returned non-zero exit status 1\n/opt/flocker/local/lib/python2.7/site-packages/machinist/_logging.py:102:receive\n/opt/flocker/local/lib/python2.7/site-packages/machinist/_fsm.py:534:receive\n/opt/flocker/local/lib/python2.7/site-packages/machinist/_fsm.py:592:output\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/_loop.py:529:output_CONVERGE\n--- <exception caught here> ---\n/opt/flocker/local/lib/python2.7/site-packages/twisted/internet/defer.py:150:maybeDeferred\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/agents/blockdevice.py:1798:discover_state\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/agents/blockdevice.py:1345:_count_calls\n/opt/flocker/local/lib/python2.7/site-packages/flocker/node/agents/blockdevice.py:1744:_discover_raw_state\n/opt/flocker/local/lib/python2.7/site-packages/ceph_flocker_driver/ceph_rbd.py:259:list_volumes\n/opt/flocker/local/lib/python2.7/site-packages/ceph_flocker_driver/ceph_rbd.py:121:_list_maps\n/usr/lib/python2.7/subprocess.py:573:check_output\n", "message_type": "eliot:traceback", "task_uuid": "c282f779-e04e-4b72-82e5-8465fce67ea3", "task_level": [2, 3]}
{"task_uuid": "c282f779-e04e-4b72-82e5-8465fce67ea3", "log_level": "INFO", "timestamp":<PHONE_NUMBER>.952603, "message": "Intentionally delaying the next iteration of the convergence loop to avoid RequestLimitExceeded.", "message_type": "flocker:node:_loop:delay", "current_wait": 10, "task_level": [2, 4]}
{"delay": 10, "task_uuid": "c282f779-e04e-4b72-82e5-8465fce67ea3", "log_level": "INFO", "timestamp":<PHONE_NUMBER>.95277, "message": "Delaying until next convergence loop.", "message_type": "flocker:node:_loop:CONVERGE:delay", "task_level": [2, 5]}

A manual test showed:
root@ceph3:/var/log/flocker#  rbd -p rbd showmapped
rbd: unrecognised option '-p'

@lhoss
all nodes need to know where ceph1 is, thats all so vagrant adds the entry on vagrant up.
https://github.com/ClusterHQ/flocker-ceph-vagrant/blob/master/Vagrantfile#L29
I will need to run this again and figure out a fix. Likely, I should point the repo at a fork of ceph-ansible that worked with this repo when it was released to avoid any changes that could break it

ok I understand that all flocker agent/dataset nodes (ceph2-4) only need to communicate with the control node (ceph1) .
I wonder:  the flocker-control node doesn't need to have correct host entries for  the agent nodes?
Anyways, today I quickly got one step further by hack-manually fixing
/opt/flocker/local/lib/python2.7/site-packages/ceph_flocker_driver/ceph_rbd.py
in the function that calls 'rbd showmapped' , by removing the '-p rbd' part  (I assume that's a change with latest ceph 'jewel' release!).
Now I got the volume into state DETACHED (before was PENDING), but then the next error appeared.
I guess the ceph_flocker_driver  needs some work to make it compatible with latest ceph!
ps: I propose to have a ceph_version ansible variable so we can control the ceph version deployed (and extend ansible-ceph role, if not supported yet)
Just for your info, the next error I got:
{"exception": "twisted.internet.defer.FirstError", "reason": "FirstError[#1, [Failure instance: Traceback: <class 'subprocess.CalledProcessError'>: Command '['rbd', '-p', 'rbd', 'map', u'flocker-3a3ad394-2819-44a7-bd5d-0bbaaad268cb']' returned non-zero exit status 6\n/usr/lib/python2.7/threading.py:810:__bootstrap_inner\n/usr/lib/python2.7/threading.py:763:run\n/opt/flocker/local/lib/python2.7/site-packages/twisted/_threads/_threadworker.py:46:work\n/opt/flocker/local/lib/python2.7/site-packages/twisted/_threads/_team.py:190:doWork\n--- <exception caught here> ---\n/opt/flocker/local/lib/python2.7/site-packages/twisted/python/threadpool.py:246:inContext\n/opt/flocker/local/lib/python2.7/site-packages/twisted/python/threadpool.py:262:<lambda>\n/opt/flocker/local/lib/python2.7/site-packages/twisted/python/context.py:118:callWithContext\n/opt/flocker/local/lib/python2.7/site-packages/twisted/python/context.py:81:callWithContext\n/opt/flocker/local/lib/python2.7/site-packages/ceph_flocker_driver/ceph_rbd.py:224:attach_volume\n/usr/lib/python2.7/subprocess.py:573:check_output\n]]", "timestamp":<PHONE_NUMBER>.259916, "traceback": "Traceback (failure with no frames): <class 'twisted.internet.defer.FirstError'>: FirstError[#1, [Failure instance: Traceback: <class 'subprocess.CalledProcessError'>: Command '['rbd', '-p', 'rbd', 'map', u'flocker-3a3ad394-2819-44a7-bd5d-0bbaaad268cb']' returned non-zero exit status 6\n/usr/lib/python2.7/threading.py:810:__bootstrap_inner\n/usr/lib/python2.7/threading.py:763:run\n/opt/flocker/local/lib/python2.7/site-packages/twisted/_threads/_threadworker.py:46:work\n/opt/flocker/local/lib/python2.7/site-packages/twisted/_threads/_team.py:190:doWork\n--- <exception caught here> ---\n/opt/flocker/local/lib/python2.7/site-packages/twisted/python/threadpool.py:246:inContext\n/opt/flocker/local/lib/python2.7/site-packages/twisted/python/threadpool.py:262:<lambda>\n/opt/flocker/local/lib/python2.7/site-packages/twisted/python/context.py:118:callWithContext\n/opt/flocker/local/lib/python2.7/site-packages/twisted/python/context.py:81:callWithContext\n/opt/flocker/local/lib/python2.7/site-packages/ceph_flocker_driver/ceph_rbd.py:224:attach_volume\n/usr/lib/python2.7/subprocess.py:573:check_output\n]]\n", "message_type": "eliot:traceback", "task_uuid": "2c5ddda0-a4e6-4cc7-ac96-d183c09e8237", "task_level": [2, 6]}
{"delay": 10, "task_uuid": "2c5ddda0-a4e6-4cc7-ac96-d183c09e8237", "log_level": "INFO", "timestamp":<PHONE_NUMBER>.260187, "message": "Delaying until next convergence loop.", "message_type": "flocker:node:_loop:CONVERGE:delay", "task_level": [2, 7]}

I tried to run the cmd manually, to see the exact error msg:
> rbd -p rbd map flocker-04964259-0c8f-467a-b042-77805e9f5f2b

rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
In some cases useful info is found in syslog - try "dmesg | tail" or so.
rbd: map failed: (6) No such device or address

we are really happy to give flocker a try later again, once it's working with latest ceph (and looking for more people to test and use it, to get it more production ready!)

All issues are fixed, in latest master, since commit https://github.com/ClusterHQ/flocker-ceph-vagrant/commit/3623f3e6a319a15890eee259d1bc5b6b63ba10f3
which ensures:

older ansible-ceph version is used
implies, that also way older ceph version gets installed.. I verified the VMs:

root@ceph2:~# ceph --version
ceph version 9.2.1 (752b6a3020c3de74e07d2a8b4c5e48dab5a6b6fd)

Still would be nice to make the ceph_flocker driver work with the latest ceph (we don't want to use an older ceph, also ceph-fs was promoted prod. ready only in latest release!)

@lhoss yeah, ultimately there is still a bunch of work to be done, and I agree, latest ceph seems like a must. Im going to close this issue, feel free to open another one related to latest ceph support.


Update Go.

Update Go to 1.19.
Enable Dependabot.

Signed-off-by: SuperQ<EMAIL_ADDRESS>

I agree it's best to have it
Le mar. 29 nov. 2022, 17:59, Ben Kochie @.***> a écrit :

@.**** commented on this pull request.
In .github/dependabot.yml
https://github.com/prometheus/haproxy_exporter/pull/252#discussion_r1035022203
:

@@ -0,0 +1,6 @@
+version: 2

It's just a copy-n-paste file.
—
Reply to this email directly, view it on GitHub
https://github.com/prometheus/haproxy_exporter/pull/252#discussion_r1035022203,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACHHJR4CT3FGN566DTFQBLWKYY67ANCNFSM6AAAAAASOQU5M4
.
You are receiving this because your review was requested.Message ID:
@.***>


wpewebkit: Add touch-slider support

Adds support to enable touch slider support through a new PACKAGECONFIG option.

I was also hoping to cherry-pick this to the older 3.1 LTS (Dunfell) branch. Please let me know if that's acceptable and I will submit a separate PR pending this PR's approval.

Any updates on this small change?

The updated patch LGTM, but I will let @psaavedra do the final approval.
@colin-pm Thanks for your patience, spending a little bit more time to have the patch landed in WebKit is for the best 💯

Is there anything else I can do to help submit this PR?

Is there anything else I can do to help submit this PR?

no sorry. I thought it was already being tested by  the CI. I will wait for the results and then I will merge it.
Thanks for your contribution.

Merged in 8ebebf66a9773c45a94302e521a9309dfa544e17


Express CAM results as aux graphs

This issue is to suggest that CAM results are returned as aux graphs, which will support the richness of the full CAM assertions and comply with EPC / Data Modeling specifications. This may take some work, but I think it is worth the effort. Moreover, folks like Abrar, Max, and Jason Reilly have experience with aux graphs, and I'm sure they'd be happy to help. FWIW, Jason and Max were able to restructure TRAPI responses from the CQS as aux graphs with relatively little effort.

Update: The expression of CAM results as aux graphs, meaning with the full CAM knowledge subgraph assertion, within a TRAPI result set is on the TCDC priority list as a proposed MVP2 for the next Translator release cycle (see slide 9 here). While the aux graph is not essential for achieving the goals of the proposed MVP2, it is desired and will not only help promote cam-kp, but also help us achieve our Translator milestone of icees-kg x cam-kp integration.

Clarification: I don't think my prior post was clear. (Apologies, but I've been sick with a nasty, COVID-negative respiratory infection.) The idea here, and feel free to disagree, is for the CQS to surface cam-kp assertions such as ChemicalEntity - affects - Gene, but with cam-kp providing the full assertion as a mini-KG that the CQS then surfaces as an aux graph (see slide 9 here). This is on the TCDC priority list as a proposed CQS MVP2 for the next Translator release cycle and also on the EPC / Data Modeling priority list for the next release cycle. I'm in discussions with Matt B. and may want to pull you in for clarification; but hopefully I've provided some clarification in the meantime.


Two bars on dual monitor setup

I have  following wob.ini contents
timeout = 10000
max = 100
anchor = top
margin = 32
background_color = 1e2132af
border_color = 84a0c6ef
bar_color = 84a0c6ef
overflow_background_color = 1e2132af
overflow_border_color = 84a0c6ef
overflow_bar_color = e2a478bf

And on dual monitor setup it produces two bars. It might always produce two bars, but it is only visible, when I have two monitors enabled and margin set. Screenshot for reference

I'm on river wm, if that matters.

I'm unable to reproduce the issue on my system. How do you start wob? Is it possible that 2 instances of wob with different configs are running?

I did a little bit of testing and here is what I've found out:

I can't reproduce this issue with sway wm.
This only happens in river wm, when I have two monitors. If I have only one monitor it doesn't matter if it's internal (I'm on laptop) or external, as soon as I enable second screen, wob renders two bars.
ps aux | grep wob always show only one process running and I only have one config file.
I run wob as systemd socket, but that doesn't matter, since starting it from command line yields same results.
Two bars are rendered even when second screen is disabled, unless I restart wob.

This is log with two screens
 ~  $ wob -v
1668972577.575927 INFO  main.c:506: wob version 0.13 started
1668972577.576016 INFO  config.c:294: Found configuration file at $HOME/.config/wob/wob.ini
1668972577.576031 INFO  main.c:515: Using configuration file at /home/vaivis/.config/wob/wob.ini
4
1668972581.356350 INFO  main.c:626: Received input { value = 4, bg = #1e2132af, border = #84a0c68f, bar = #84a0c6ef }
1668972581.356401 INFO  main.c:650: Rendering { value = 4, bg = #1e2132af, border = #84a0c68f, bar = #84a0c6ef }
1668972581.356540 INFO  main.c:302: Showing bar on output focused
1668972581.356597 INFO  main.c:302: Showing bar on output focused
1668972582.358609 INFO  main.c:284: Hiding bar on output focused
1668972582.358670 INFO  main.c:284: Hiding bar on output focused
5
1668972591.897677 INFO  main.c:626: Received input { value = 5, bg = #1e2132af, border = #84a0c68f, bar = #84a0c6ef }
1668972591.897765 INFO  main.c:650: Rendering { value = 5, bg = #1e2132af, border = #84a0c68f, bar = #84a0c6ef }
1668972591.897798 INFO  main.c:302: Showing bar on output focused
1668972591.897822 INFO  main.c:302: Showing bar on output focused
1668972592.901663 INFO  main.c:284: Hiding bar on output focused
1668972592.901716 INFO  main.c:284: Hiding bar on output focused
5
1668972599.413591 INFO  main.c:626: Received input { value = 5, bg = #1e2132af, border = #84a0c68f, bar = #84a0c6ef }
1668972599.413626 INFO  main.c:650: Rendering { value = 5, bg = #1e2132af, border = #84a0c68f, bar = #84a0c6ef }
1668972599.413678 INFO  main.c:302: Showing bar on output focused
1668972599.413725 INFO  main.c:302: Showing bar on output focused
1668972600.416289 INFO  main.c:284: Hiding bar on output focused
1668972600.416328 INFO  main.c:284: Hiding bar on output focused
1668972604.339733 INFO  main.c:601: Received EOF

And this is with one:
 ~  $ wob -v
1668972611.991459 INFO  main.c:506: wob version 0.13 started
1668972611.991521 INFO  config.c:294: Found configuration file at $HOME/.config/wob/wob.ini
1668972611.991538 INFO  main.c:515: Using configuration file at /home/vaivis/.config/wob/wob.ini
4
1668972614.152591 INFO  main.c:626: Received input { value = 4, bg = #1e2132af, border = #84a0c68f, bar = #84a0c6ef }
1668972614.152638 INFO  main.c:650: Rendering { value = 4, bg = #1e2132af, border = #84a0c68f, bar = #84a0c6ef }
1668972614.152955 INFO  main.c:302: Showing bar on output focused
1668972615.154955 INFO  main.c:284: Hiding bar on output focused
W
1668972624.717767 ERROR main.c:619: Received invalid input

Notice how there are two info messages stating that bar is being shown and hidden, when in two monitor setup and only one such message, when I had single monitor.
I must say, that I'm not entirely sure from wich source this issue originates - wob's or river's.

I see where the problem is now. The "fake" focused output is added every time the physical one is connected. I'm able to reproduce this on sway by doing:
swaymsg output eDP-1 disable
swaymsg output eDP-1 enable

a few times while wob is running.
This commit should fix the issue https://github.com/francma/wob/commit/29e2536e45b64eaea4bf4fad6b8a4cbabf056c65 and I'll do a new bugfix release soon.
Thank you for your report :thumbsup:


change the direction of the select field

i want to reverse the direction of the select field and show the small arrow on the left side and the title on the right .

fixed by https://github.com/snapappointments/bootstrap-select/pull/1120 ?


Don't receive message alert of package expiry.

After i think discussed before we need to send alert to user before two days to subscribe the message package before it expires.


Improve stack traces for port errors

Suppose we have a bad port invocation that's going to blow up, in a file called index.html:
function invokeBustedPort() {
  app.ports.foo.send(null);
}

// alternatively, for a post-init error: setTimeout(invokeBustedPort, 500);
invokeBustedPort();

Before
The stack trace doesn't include the offending function, invokeBustedPort, or a useful line number indicating where the function was invoked:

After
Now it includes both!

What Changed
The basic idea is to do the decoder check immediately inside send, and throw new Error inside send so it preserves the best stack trace information.
This means that in the preInit case it fails slightly sooner, because it does the check before init - and then defers the actual value sending - instead of deferring both.

This is great! I was dealing with this week ago. This improvement will make it much easier. :+1:

Makes sense to me, nice improvement!


Classics (AKA benchmarks)

The Tension board has "Classics" which seems to be intended to be similar to the Moonboard "benchmark" feature. In the database, these climbs are distinguished by climb_stats.benchmark_difficulty is not null.
Interestingly, Kilter has not chosen to display Classics yet, though there are 112 climbs in the database that are marked with  a non-null benchmark_difficulty.
Some considerations:

I'd like to avoid having too many filters, at least on the main filter screen. Perhaps some "additional filters" collapsible could be used to hide some filters. That being said, classics may be a more common filter. This could replace "difficulty accuracy" which was an experimental filter that I added.
This would be exposing an "unreleased" feature for Kilter, which might be a bit confusing to users. On the other hand, this also might be a benefit of using Climbdex.
Tension has an icon to indicate a climb is a classic. As mentioned in previous issues, it would be good to keep the interface clean, and I'm not sure how important this info is. Maybe the icon isn't needed and just a filter would suffice for now, or perhaps the description segment at the bottom could be used to also indicate classic status.

Interested to hear other opinions on this one, I have only used the "Classics" feature on the OG Tension board for a session or two. It was nice but didn't seem to have the level of importance that Moonboard benchmarks do.

I personally use the classics on the tension board a lot, i do them first and switch to "normal" climbs afterwards, I think such a filter is useful, at least on boards where classics are being used.
Reducing filter options makes sense, because the interface is almost 100vh on my smartphone

I also would recommend adding a "Advanced Filters" toggle
I guess Min Ascents + Min Ratings are not really used and should therefor be moved into the advanced section.
Grade Accuracy probably the same. I like the idea of it, but I'm not sure how accurate it is. My feeling is that a lot of people just quicklog their ascent and don't care about the grade.
A benchmark Icon in the filtered overview may be helpful (as are the tickmarks), but subtle as unicode char. I guess everybody familiar with these apps should recognize Ⓑ as benchmark or © as classic.

I guess Min Ascents + Min Ratings are not really used

I use min ascents with almost every filter, climbs with only 1 ascent are often pretty random. My favorite filters are to sort by rating descending with a decently large number of minimum ascents. That seems to work to find the best climbs of a grade. Also using hold finder with min ascents is great. I agree that min rating seems a little less useful and could move to additional filters.
So maybe for now, move rating + grade accuracy to advanced filters, which frees up one line of filters for a classics toggle.
Another idea for freeing up a line would be to combine min/max grades in a custom multi slider, like this one. I'll split that out to a separate issue.

I guess everybody familiar with these apps should recognize Ⓑ as benchmark or © as classic.

I like the simplicity of the unicode character. Looks decent on that 2nd line in your picture - would the climb window show it as well? Because then it would probably need to be next to the difficulty/angle, and I'm not sure if I'd want it to be inconsistent.

I guess everybody familiar with these apps should recognize Ⓑ as benchmark or © as classic.

I like the simplicity of the unicode character. Looks decent on that 2nd line in your picture - would the climb window show it as well? Because then it would probably need to be next to the difficulty/angle, and I'm not sure if I'd want it to be inconsistent.

first I thought, no need to put it onto the climb window, but if you just swipe through the climb window, it would still be a nice information. then I would also move it next to the angle. Which probably makes sense, because the benchmarks are normally just for one certain grades.
And i reduced the font size in the screenshit for the line with the ascent + rating information just slightly. I think this makes the difference between title and information a bit better.

I reduced the font size in the screenshot for the line with the ascent + rating information just slightly

I like it too, nice little improvement.

I would also move it next to the angle.

Sounds good. So to summarize the changes for this one:

Add a new classics toggle to the filter screen. Maybe this should just be another select input even though a switch/checkbox is more appropriate, I remember playing with switches/checkboxes on this form and having a hard time getting it to look good. Maybe "Classics Only" would be the input name and "Yes"/"No" would be the options, with the default being "No."
Add © after the angle (and before the tick) in both the results list and climb display cards.
Reduce the size of the ascents and ratings text in the results list.

This has been released. I have decided to include the "hidden" Kilter classics. I think this is a nice feature that Climbdex provides which is not yet provided by the official app.


Feature request: automatic differentiation

Hi, I have been using gonum to solve minimization problems. I tried using BFGS and things went smooth. I would like to try with Newton's method, so I need to compute the Hessian matrix. Numerical computation of the Hessian is, as expected, very slow and is not an option, in general, for large problems. I can compute the Hessian analytically, but the procedure is error-prone and leads to very complex equations.
I think it would be nice to add an automatic differentiation feature to gonum. This way, the Hessian would be computed automatically and the usability of the Hessian-based minimization algorithms would improve significantly. Go packages implementing this feature exist: autodiff, gorgonia. Do you see potential issues in implementing such a feature, like the need of restructuring gonum minimization routines)? Would it be possible to use one of those packages in gonum?

You can write one your own: https://github.com/gonum/gonum/tree/master/num/dual

what gonum could perhaps have is a code generator (based off go/types) to write the derivative code from a given func F(x float64) float64...

You can write one your own: https://github.com/gonum/gonum/tree/master/num/dual
Also, the next version of Gorgonia will feature eager autodiff.

Interesting, I didn't know about dual numbers and their application to automatic differentiation. I will take a look at this. Thanks!

Ok, I did some preliminary numerical experiments with the num/dual' package. In my application I need to differentiate a function of a matrix argument. This generally occurs in Finite Element models for elastic solids, where the function to be minimized is the energy of the system, which depends on the strain tensor. I think that I need to define matrix algebra functions (such as matrix multiplication, trace, norm...) to operate with Numbertypes instead of floats. Do you think it is possible to use the functions of themat` package for this, or I have to generalize/wrap/rewrite them to work with Numbers? Or maybe there is a more direct alternative way (excluding symbolic manipulations to write the energy in terms of scalar components of tensors) I am not considering?

You could use the functions of the mat functions and replicate the operations in the num/dual package. The work there is pretty straightforward.


Add/remove moderator button on user page

This pull request adds a button to add/remove a moderator, next to the follow/unfollow button. This button only shows up if the page owner is a moderator, the viewer has a store, and the viewer isn't viewing his/her own page.
The button could be unhidden by a clever person who knows how to use the debugger, making it possible to add a non-moderator as one of your store's moderators, but the same issue can happen in at least two other ways (malicious user modifies his/her client; existing moderator stops moderating). This should be dealt with server-side, by simply not accepting moderation of sales if you are not a moderator.
The code I wrote to make this work may be somewhat messy. I am a novice to JavaScript (background in C++, C# and Java), so I sometimes had to guess or just emulate the style of other bits of code.

Closed because I merged badly.


Add configuration support for hotplugging VFIO devices on root bus

There is a limitation in sea-bios firmware that prevents PCI devices with large PCI BARS from being configured correctly when hotplugged on a bridge.
This issue has been seen with Intel graphics cards which require a larger PCI configuration space.
Till this issue gets resolved in the firmware, we need to add support in the runtime to pass in a configuration for hotplugging VFIO devices on the root bus instead.

Hi - this issue is labelled release-gating but doesn't have an associated PR.
Please can you comment on the status of this item so we know if it could be
included in the upcoming 2.0 release?


Add mock support for the Text Analytics client

New TextAnalyticsModelFactory
Sample test using moq
Sample doc for mocking the TextAnalyticsClient

Fixes: https://github.com/Azure/azure-sdk-for-net/issues/8710 and https://github.com/Azure/azure-sdk-for-net/issues/10444

@AlexanderSher I modified the sample to be more scenario like

Approved but double check what parameter type we usually have in model factories.


glog的打印格式顺序可否自定义？

1. What version of Go and system type/arch are you using?
linux/amd64
2. What version of GoFrame are you using?
1.16.6
3. Can this issue be re-produced with the latest release?
4. What did you do?
当前日志打印：
2021-12-11 10:21:45.859 [DEBU] {be072e39-9944-4f71-9c72-2b155f5c3df1} server.go:157:   xxxxxxxxx

是否能自定义requestId的内容在调用行号信息后？
期望定义后的格式：
2021-12-11 10:21:45.859 [DEBU] server.go:157 {be072e39-9944-4f71-9c72-2b155f5c3df1} :   xxxxxxxxx

1. What version of Go and system type/arch are you using?
linux/amd64
2. What version of GoFrame are you using?
1.16.6
3. Can this issue be re-produced with the latest release?
4. What did you do?
当前日志打印：
2021-12-11 10:21:45.859 [DEBU] {be072e39-9944-4f71-9c72-2b155f5c3df1} server.go:157:   xxxxxxxxx

是否能自定义requestId的内容在调用行号信息后？
期望定义后的格式：
2021-12-11 10:21:45.859 [DEBU] server.go:157 {be072e39-9944-4f71-9c72-2b155f5c3df1} :   xxxxxxxxx

改成这样之后的目标是什么以及可以带来哪些优势呢？

https://goframe.org/pages/viewpage.action?pageId=17207121


Support for PHP 7.4 weak references

With the implementation of the weak references RFC (https://wiki.php.net/rfc/weakrefs), PHP will have built-in support for weak references starting at PHP 7.4.
The value objects SDK has support for weakrefs through the semi-official PECL weakref extension (https://www.php.net/manual/en/book.weakref.php). However, this extension becomes unusable in PHP 7.3+  because of changes in memory management.
The SDK should implement support for the built-in Weakreference class for PHP 7.4+ while also keeping support for the PECL variant for older PHP versions.

This feature has been implemented and will be included in the next minor release. Closing the issue.


⚠ ETF has degraded performance

In 2f35ae1, ETF (https://markets.hankyung.com/equity-product/etf) experienced degraded performance:

HTTP code: 200
Response time: 6592 ms

Resolved: 한경주요지수-코스피 performance has improved in 22fa38d.


fix: add empty string handler

The same fix that was applied to localized-strings.
formatString() now works with a key that does not exist.

You're amazing, thank you so much!


ModuleNotFoundError: No module named 'actual.utils'

Checks

[X] I have checked that this issue has not already been reported.
[X] I have confirmed this bug exists on the latest version of actualpy.

Reproducible example
>>> from actual import Actual
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/wes/.local/lib/python3.12/site-packages/actual/__init__.py", line 18, in <module>
    from actual.api import ActualServer
  File "/home/wes/.local/lib/python3.12/site-packages/actual/api/__init__.py", line 9, in <module>
    from actual.api.models import (
  File "/home/wes/.local/lib/python3.12/site-packages/actual/api/models.py", line 8, in <module>
    from actual.api.bank_sync import BankSyncAccountData, BankSyncTransactionData
  File "/home/wes/.local/lib/python3.12/site-packages/actual/api/bank_sync.py", line 10, in <module>
    from actual.utils.title import title
ModuleNotFoundError: No module named 'actual.utils'

Log output
No response
Issue description
Unable to import main class
Expected behavior
Import Actual
Installed versions

actualpy version: 0.1.0
Actual Server version: n/a

➜  ~ pip install actualpy
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: actualpy in ./.local/lib/python3.12/site-packages (0.1.0)

Hello @wbradley93 , thanks for the report, I fixed and released a new version, you can now install version 0.1.1 from pip and it should work out of the box:
(venv) actualpy_test ➤ pip install actualpy
...
(venv) actualpy_test ➤ source venv/bin/activate
(venv) actualpy_test ➤ python
Python 3.11.8 (main, Mar 20 2024, 19:21:09) [Clang 15.0.0 (clang-15<IP_ADDRESS>)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from actual import Actual, __version__
>>> print(__version__)
0.1.1


[web]: Having serious issues in managing to manage reloading of flutter web

Before the new release, I was able to solve the issue by using onAuthStateChanges().listen((event){})  and it did the work. Now after the new and so-called STABLE release, the same code is giving the error cannot load property 'email' of null. Please help me here to get a solution to remain on to rerun the initstate and maintain the login state of the user when reloaded. The issue is not about remaining on the same page. I have done routing and while reloading I remain on the same page but cannot get all the data from firebase again.

Hi @AkanshChoudhary
Can you please provide your flutter doctor -v your flutter run --verbose and a complete reproducible minimal code sample
Thank you

OK so for trying this.

Create a new screen and make a route to it
Now make a stateful widget in it and let's say it prints a text in the center from your firebase path.
Let the init state be like this
 auth.FirebaseAuth.instance.authStateChanges().listen((event){ store.FirebaseFirestore.instance.collection('your coll name').doc('your doc name').get().then((){       setState((){             // set your to display variable here          });  }); });

4)in the UI let the text be (widget.myVar!='')?Text(widget.myVar):CircularProgressIndicator()
5) Now try running it and it will run but when you reload the webpage it shows error. This thing used to work before the new update but now it isn't.
Flutter Doctor -v
`[√] Flutter (Channel stable, 2.0.2, on Microsoft Windows [Version 10.0.19041.867], locale en-IN)
• Flutter version 2.0.2 at C:\flutter
• Framework revision 8962f6dc68 (13 days ago), 2021-03-11 13:22:20 -0800
• Engine revision 5d8bf811b3
• Dart version 2.12.1
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
• Android SDK at C:\Users\lenovo\AppData\Local\Android\sdk
• Platform android-30, build-tools 30.0.3
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
X Android license status unknown.
Run flutter doctor --android-licenses to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.
[√] Chrome - develop for the web
• Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
[√] Android Studio (version 4.1.0)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
[√] VS Code (version 1.54.3)
• VS Code at C:\Users\lenovo\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.20.0
[√] Connected device (2 available)
• Chrome (web) • chrome • web-javascript • Google Chrome 89.0.4389.90
• Edge (web)   • edge   • web-javascript • Microsoft Edge 89.0.774.57
`
Flutter run --verbose
[  +89 ms] executing: [C:\flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H [  +60 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H [   +1 ms] 8962f6dc68ec8e2206ac2fa874da4a453856c7d3 [   +1 ms] executing: [C:\flutter/] git tag --points-at 8962f6dc68ec8e2206ac2fa874da4a453856c7d3 [  +41 ms] Exit code 0 from: git tag --points-at 8962f6dc68ec8e2206ac2fa874da4a453856c7d3 [   +1 ms] 2.0.2 [  +45 ms] executing: [C:\flutter/] git rev-parse --abbrev-ref --symbolic @{u} [  +34 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u} [        ] origin/stable [   +1 ms] executing: [C:\flutter/] git ls-remote --get-url origin [  +31 ms] Exit code 0 from: git ls-remote --get-url origin [   +1 ms] https://github.com/flutter/flutter.git [  +67 ms] executing: [C:\flutter/] git rev-parse --abbrev-ref HEAD [  +30 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD [   +1 ms] stable [  +66 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. [   +3 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. [   +5 ms] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. [  +64 ms] executing: C:\Users\lenovo\AppData\Local\Android\sdk\platform-tools\adb.exe devices -l [  +40 ms] List of devices attached [   +6 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. [   +3 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. [   +2 ms] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. [   +1 ms] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. [  +81 ms] Multiple devices found: [  +21 ms] Chrome (web) • chrome • web-javascript • Google Chrome 89.0.4389.90 [   +1 ms] Edge (web)   • edge   • web-javascript • Microsoft Edge 89.0.774.57 [   +1 ms] [1]: Chrome (chrome) [        ] [2]: Edge (edge) [   +2 ms] Please choose one (To quit, press "q/Q") [        ] :

When you reload your web, FirebaseAuth emits null value at first and then if the current session is still valid, the non-null value will come at one. It's known issue of FirebaseAuth on Web, check for detail here

So should I put a sleep for a second or so???
Please help.

@hnvn
Good find, I reproduced that issue while back https://github.com/FirebaseExtended/flutterfire/issues/3591#issuecomment-696658828
Please follow up on that issue https://github.com/FirebaseExtended/flutterfire/issues/3591
Closing, as this isn't an issue with Flutter itself.
If you disagree, please write in the comments,
providing your flutter doctor -v, your flutter run -v,  your pubspec.yaml
a minimal reproducible code sample that does not use 3rd party plugins,
and I will reopen it.
Thank you


updated azure devops project github

@mlearned, here is a possible update to azure devops project github tutorial. I have removed the Application Insights section, as it seemed to be too much for the article. There is a link at the bottom "To learn more...". I still think there is more that could be added to Examine the Azure Pipelines CI/CD pipelines section.

@mlearned - can you take a look?  (note that if you decide to move forward with these changes, the commits here will need to be pushed to the private repository so that we can take advantage of validation and staging).   Thanks.

@Jak-MS  yes this looks good.  so I'll need to move this to private repo correct?

@mlearned - yes, please move the commits to the private repo .  There are instructions here: https://review.docs.microsoft.com/en-us/help/contribute/contribute-how-to-manage-act-guidelines-public-pr?branch=master#pull-public-commits-to-the-private-repo-for-updates-staging-publication , but let us know if you need assistance with that. Thanks!

Private repo PR #88404 replaces this pull request. We moved the commit to the private repo so we can validate formatting changes by using automated validation and staging. We'll close this PR now.


接入CC0 协议素材搜索API

pixabay
unsplash

https://www.kisscc0.com/free-new-year/

https://zh.pngtree.com/freepng/small-fresh-green-flowers-border-texture-png-free-download_2913069.html

https://cc0.cn/

https://www.aigei.com/element/element/?tab=all&term=is_vip_false


  AWESOME WORK!
One issue from my side, and it's more an annoyance than anything else at the moment.
I installed the apex-ui-slim along with the apex-syntax.  I also enabled custom toolbars, but now I see the following:

If I install the no-title-bar then the tabs get all compressed and ugly:

System: macOS Sierra 10.12.2
Atom: 1.13.0 x64

Thanks! What's the custom toolbar thing?

I got the tip from the no-title-bar package:

Hides the Atom title bar on systems that support it. Make sure to enable Use Custom Title Bar in your Core Atom settings (core.useCustomTitleBar: true in your config.cson). This setting was first available in Atom Beta version 1.11.0.

If I don't have this option enabled (even though I am not using the no-title-bar package then my UI looks as so:

Then, if I enable the no-title-bar package whilst having the core.useCustomTitleBar: true option in effect I get the following:

Both cases look similar I guess.
I am using apex-ui-slim and apex-syntax on both.
Also worth noting I remove all custom stylesheet stuff just in case (at the moment I just adjust lineheight and font weight), but that had no effect on the issue.


feat: Add --template-paths option for additional search paths

Looks for templates in the configured paths in addition to the actual path defined in the config.

I'm updating with your requests. In the meantime, please note I've made it an error if the template is not found.
Let me know if you think we should make it optional like: --fail-on-template-not-found or something.
In my view, it should always fail as the app will not be generating the files the user expected if it can't find one or more templates.


how to set the replicationFactor on a graph?

I tried this but it is not working:
const db = new Database();
const graph = db.graph('some-graph');
const info = await graph.create({
  replicationFactor: 3,
  options: {
    replicationFactor: 3,
  },
  edgeDefinitions: [{
    collection: 'edges',
    from: ['start-vertices'],
    to: ['end-vertices']
  }]
}, {
  replicationFactor: 3
});

The HTTP API indicates that the only place the replicationFactor is expected is in the options property, so the other two are redundant.
On Slack you indicated that this is the error you're seeing:

Failed to initialize database: replicationFactor must not be lower than minimum allowed replicationFactor (3)

Can you clarify if this is an exception the await graph.create call throws or something you're seeing elsewhere?

Thanks for that tip, it was in fact a bug in my code. It works now!


sysroot is being rebuilt whenever I save a file

Every time I save a file in my editor, then run cargo miri test, miri decides to completely rebuild the sysroot!
$ cargo miri test
Preparing a sysroot for Miri (target: x86_64-unknown-linux-gnu)... # this takes a while
# in editor, save some test file (even with no changes)
$ cargo miri test
Preparing a sysroot for Miri (target: x86_64-unknown-linux-gnu)... # this takes a while again, but the sysroot shouldn't have changed!

$ rustc --version
rustc 1.80.0-nightly (a8a1d3a77 2024-04-29)

I poked around in the sysroot, and I noticed that the hash is changing each time it gets rebuilt. So maybe that's the issue?
Is there a way I can force the sysroot to be reused to work around this bug?

I suspect this has something to do with rust-analyzer not playing nicely with miri, since if I simply touch or append to the file without using my editor, then miri doesn't rebuild the sysroot.
I'm building rust-analyzer from source, at commit a5feb4f05f09adca661c869b1bf2324898cbaa43, with some logs disabled.

It looks like this was a bug with rust-analyzer, since after updating to the latest commit (49e502b277a8126a9ad10c802d1aaa3ef1a280ef), miri isn't misbehaving

The sysroot hash is based on a hash of the modified time and length of each file in the sysroot source tree.
Are you changing the modified time of files in the sysroot?

The sysroot hash is based on a hash of the modified time and length of each file in the sysroot source tree.
Are you changing the modified time of files in the sysroot?

I'm not, and I checked the modified time, and it's the time I installed it earlier today. (I updated to the latest nightly earlier today).

Hmm, after some further investigation, it looks like the rustlib/src/rust/library/core/target/ directory was modified... I'm not sure why though. Maybe this does have to do with rust-analyzer. Is the target directory ignored by miri?

Hm, yeah we should probably exclude "target" directories from hashing. Not sure why something creates a tatget dir in the source dir for you, usually the source dir should be immutable, but anyway it cannot affect the resulting sysroot.

I don't think we should add any logic that tries to exclude directories because they are called target. We added this hashing so that the sysroot is rebuilt when it changes, and a magic excluded directory name seems like a way to cause subtle problems in the future. Ideally we'd restrict our hashing to files which Cargo or rustc can tell us are part of the build, but I don't think such an API exists.
I wouldn't mind doing something to cooperate better with rust-analyzer here, clearly some tool was confused. Perhaps this was a bug in rust-analyzer that was noticed and quietly fixed upstream? There is no good reason to be writing in the sysroot's source tree.

I think I have run into a similar issue in the past when I set MIRI_LIB_SRC to a local rustc checkout and also did some manual cargo invocations in that folder. "target" is a very standard directory in Rust so it seems justified to me to just exclude it.
But it would indeed also be good to figure out why something is writing to the sysroot dir. I am confused by the last few messages, does this issue still occur with latest RA or not?

I tested this again today, and it looks like this isn't happening anymore. So it was likely RA causing some issues. I'll open an issue there if I run into this problem again.... Sorry for the noise :bow:

All right, let's close this then for now.


fix autolabeler by adding pull request events

Per as https://github.com/cpp-linter/.github/issues/21

Currently assessing doc build failures in jbms/sphinx-immaterial#333
We might have to use a cache of fonts for now... From a different PR.

TL;DR We need to use a different action to generate labels in a PR.
The issue you linked to has diverged into 2 issues.

release-drafter cannot create a drafted release in a PR event (including pull_request_target). This is why the error occurs.
release-drafter's auto-labeler feature needs to be run in a PR event.

But there is currently no way differentiate which feature of release-drafter you want to use in specified event trigger. Using the commitish advice will fix the error in a PR event, but it will prevent auto-labeler from doing what it supposed to.

Is that why commitish is hard-coded in the reusable workflow?


NixOS image for Google Compute Engine fails to build

When I try to build the NixOS image for Google Compute Engine on
latest nixos-unstable, the build process errors out with complaints
about trying to create hard links to directories:
https://gist.github.com/8573/53dfc5542f95cbf11127b6df915b7500.

cc @fadenb who had similar problems with the azure image.

We solved the issue with the azure images by using rsync instead of cp: See 097ef6e435d5b3fcde92e67abbaaaaaf05c0723d

Thanks couldn't find that commit anymore.


Fix notebook tests

We have notebook tests failing in test_cv.ipynb and test_netcdfplus.ipynb. This seems to be because of something with the numpy string representation (because ipynbtest compares string representation here).
This PR will fix it (or find a way around it).

Tests pass again. Giving 24 hours for review before self-merge (because this is a really small change).


Dummy data

Add dummy data to the DB
in init.sql

@liela9 if you add fixes to existing pr no need to close it, just ask for re-review 👍


⚠ Bofrost.be has degraded performance

In 48ca53e, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1419 ms

Resolved: Bofrost.be performance has improved in 0c50a9c.


UI customization

any way
I want to use my own design with your feature library.
Hope you update soon.
Thanks !!

Hi
If you have the TinyCrayon Library available with you, Can you please share with us ?


Add 3rd party dependency reports to the build

We should be generating a dependency report containing all of our 3rd party dependencies to match the build processes of the other Elastic core stack projects. These dependency reports are useful for end users so that they have a main docket of all dependencies, and the version numbers and licenses thereof.

/cc @jasontedor

This work is now completed.


Added content and made the project do stuff.

Hopefully your project will now do something.

lgtm +1

Good to merge?

lmfao


Confusing error FS0957 when extending a non-generic type with a generic type parameter

The following error is thrown when trying to use a type parameter with a non-generic type:

error FS0957: The declared type parameters for this type extension do not match the declared type parameters on the original type 'IEnumerable'

This suggests that the type expects type parameters, and they may not be matching, however, this is not true.
Repro steps
An example that raises this error:
type System.Collections.IEnumerable<'T> with    // FS0957
    static member x = 1

Expected behavior
I would expect a more descriptive error saying that the type does not support generics. For instance, compare this with the error thrown in the following scenario:
type System.String with
    static member x: System.Collections.IEnumerable<'T> = Seq.singleton 1

This throws the more understandable:

error FS0033: The non-generic type 'System.Collections.IEnumerable' does not expect any type arguments, but here is given 1 type argument(s)

Note that, when building the above example, FS0033 is thrown twice for the same line.
Related information
A suggestion for an updated description of this error (FS0957):

Extending a non-generic type does not expect any type arguments, but here is given X type argument(s).

(as an aside, I came to reporting this after I was puzzled that IEnumerable could not be extended, only finding out a few moments later that I didn't reference the generic version)

@dsyme, Just to update, in VS2017 with F# 4.1 the error is changed, but still too vague if the source of the error is a non-generic type. Compare FS0033 from the original post, which is much clearer.
The new error reads:

error FS0957: One or more of the declared type parameters for this type extension have a missing or wrong type constraint not matching the original type constraints on 'IEnumerable'

This text still suggests that the type it refers to is generic, specifically the part "not matching the original type constraints". There are no type constraints, it is not a generic type.
I would still prefer an updated text, something along the lines of the suggestion in my original post, which would make this more understandable. Leaving this open for that reason.

@abelbraaksma OK, thanks


Categories View

[x] Categories view boilerplate
[x] Categories route
[x] Categories list

Closed by #125


Feat: Save and restore chart period

Description
Add simple function to save and restore the chart period option per monitor.
Type of change
Please delete options that are not relevant.

User Interface
New feature (non-breaking change which adds functionality)

Checklist

[x] My code follows the style guidelines of this project
[x] I ran ESLint and other linters for modified files
[x] I have performed a self-review of my own code and test it
[x] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings

Since 24h or 1w period is a bit slow, it may affect the user experience when a user try to switch monitor pages.

Good point. Do you think saving a max of 6 hours would be okay?

Thinking about this, maybe we should add a processing stage for the longer time frames where it would group the responses in an interval and return the median / maxmin. The chart can't display that much detail anyway unless we implement zooming.

Yes, ultimately, it should resample all data. The idea is similar to #1458

Do you think saving a max of 6 hours would be okay?

The performance is acceptable for 6 hours.


Negative conditions for ActiveRecord 4

Support negative conditions (where.not) for ActiveRecord 4. Usage: can :read, Model, not: {name: 'foo'}. See #191 for discussion.

I note that in two weeks, there's been no response on this. Is there something more that you're waiting for?

Hi @marnen
I've been trying to put together a document for a major Cancancan update (3.0) which would incorporate changes like this and others into a more refined syntax, and something that leverages AR4 better.  I've been slow to add this because I do not want to merge this in and have it change immediately.

I get that, but better that we have something that works today than nothing at all.

@marnen Hi Marnen, this is definitely on the list of things we want to accomplish. There are a few outstanding issues around the adapters as is that I'd like to take a look at before bringing new features like this in. Apologies for the wait.
As a workaround in the meantime, you should be able to accomplish this with a block.

@marnen Are you still wanting this in? I'm hesitant to merge this, as I might misunderstand how it's exactly supposed to be used.
I hacked up a quick spec to experiment with this: https://github.com/Senjai/cancancan/commit/bcce8d296b9bbdfbd6c6fd1a4f234d940feda3d8
I would expect one of those specs to pass. As I would expect users might assume that this would work correctly. (our hash syntax is already pretty confusing)
Am I just misunderstanding how this should be used? Or do we need to cover additional cases?

Isn't the example provided already covered by scopes?
You can either define that:
can :read, Model, ['name != ?', 'foo'] do |model|
  model.name != 'foo'
end

or that:
can :read, Model, Model.no_name('foo') do |model|
  !model.has_name('foo')
end

class Model
 scope :no_name, ->(prop) { where.not(name: prop) }

 def has_name?(prop)
   name != prop
 end
end

@Senjai Yes, I still think this is a feature we should have. I'm not sure why you're hesitant about this; see detailed discussion in #191. However, if @coorasse is correct about scopes and/or where parameters, then it's less necessary. I do still think, though, that supporting :not as in my pull request is valuable: with @coorasse's suggestion, I'd potentially have to make a negative and a positive version of each scope, and I'd like to avoid that.

The problem is that the interface isn't consistent with respect to the test here: https://github.com/Senjai/cancancan/commit/bcce8d296b9bbdfbd6c6fd1a4f234d940feda3d8
It also isn't consistent with how the hash syntax has been translated to active record. Up until now, any were condition used with active record could be translated pretty easily to the hash condition for cancan.
But Spree::Order.where(not: { number: "1234" }) is not valid, for example.
In these scenarios in the past I have done:
cannot :update, Thing, roles: { name: "cannot-update-things" }
which would stand in place of:
can :update, Thing, not: { roles: { name: "cannot-update-things" } }
I also use scopes for complex situations, if they exist cannot :update, Thing, Thing.supercomplexquery
Especially if raw SQL is required. With a general authorization flow, your authorization should not be infinitely complex. If it is, you're going to want to use a scope anyway instead of a multi-line hash.

Starting from your first example, what wouldn't work with
cannot :read, Model, name: 'foo'?

@coorasse: Have you actually read #191 as mentioned in the initial pull request description?

@marnen I read it but without a real, concrete, example is hard for me to understand your issue.
In #191 you write that can :update, TimeEntry, invoice_id: nil won't interact correctly with the previous broader can.
Can I ask you to show me a concrete scenario?
Why do you have a broader can if you cannot actually update elements which already have an id? Can't you just restrict the first can??

@coorasse: Sure. The example I used in #191 is taken from https://github.com/marnen/duckbill/blob/007c7ae4a26278222bbe3420b0c2557d24d6f3c7/app/models/ability.rb#L36-L37, where users can manage time entries on their own clients' projects, unless those time entries have already been invoiced. So I used my forked version of cancancan (as seen in this pull request) and wrote
can :manage, TimeEntry, project: {client: {user_id: user.id}}
cannot [:destroy, :update], TimeEntry, not: {invoice_id: nil}

Note carefully, that in this case, it would not have worked if the second line had been
can [:destroy, :update], TimeEntry, invoice_id: nil

(which was actually what I tried first). This is because the cannot is taking away permissions granted by the previous can, and (so far as I can tell) a can can only add permissions.

@Senjai:
Something I initially missed from your last comment:

A negative and positive version would not be required, because you can simply:

cannot :update, Thing, Thing.scopestuff
or can :update, Thing, Thing.scopestuff

I think you misunderstood the use case I was talking about. Since can P and cannot !P are not equivalent in the way they interact with other rules, I may need to write can :update, Thing, Thing.not_scopestuff, even if I already have a Thing.scopestuff scope. That's what I meant about having to create a negative and positive version.
In the example here, assuming I already have Thing.scopestuff, it makes no sense to define Thing.not_scopestuff. If I need the can form, I should just be able to do can :update, Thing, not: Thing.scopestuff.

I thing you should follow a different approach when defining your permissions.
Cancancan starts giving the minimum amount of permissions (nobody can do anything) and suggests that you give "increasing" permissions to your users.
What you are doing here is giving first larger permissions, and then you try to restrict them again.
From my point of view this approach is not wrong, but very hard to manage and counterintuitive.
Please follow my suggestion: instead of this:
can :manage, TimeEntry, project: {client: {user_id: user.id}}
cannot [:destroy, :update], TimeEntry, not: {invoice_id: nil}

try to give first "smaller" permissions and then larger.
can [:destroy, :update], TimeEntry, invoice_id: nil, project: {client: {user_id: user.id}}
can :read, TimeEntry, project: {client: {user_id: user.id}}

You should redefine your sentence: users can manage time entries on their own clients' projects, unless those time entries have already been invoiced into
`users can update and destroy time entries of their own client's project if time entries are not already invoiced. users can always read time entries of their own client's project'
Doing that you give larger permissions step by step and you don't need cannot at all.

@coorasse:

What you are doing here is giving first larger permissions, and then you try to restrict them again.

Yes, that is exactly what I want to be doing, kind of like order Allow,Deny in an .htaccess file. I want to say "I can manage a TimeEntry on my own projects unless the following conditions apply".

try to give first "smaller" permissions and then larger.

can [:destroy, :update], TimeEntry, invoice_id: nil, project: {client: {user_id: user.id}}
can :read, TimeEntry, project: {client: {user_id: user.id}}

No, that's absolutely not how I want to do it. That would be very, very hard to manage and hard to understand. Building up from smaller permissions means in this case that I can't create a good mental model of what the business rules look like.
There are some situations where it would make sense to build up from smaller permissions. This is not one of them. Please believe me when I say that I know that the most maintainable solution for this application would be the way I am currently doing it.

You should redefine your sentence: users can manage time entries on their own clients' projects, unless those time entries have already been invoiced into
users can update and destroy time entries of their own client's project if time entries are not already invoiced. users can always read time entries of their own client's project

Your own example shows exactly why, in fact, I should not do this. Notice how much more complex your suggestion is than mine. Notice how much harder it is to understand.
Why are you being so resistant to adding a new feature that will help make the Ability class easier to maintain for complex conditions?

Why are you being so resistant to adding a new feature that will help make the Ability class easier to maintain for complex conditions?

We are performing our due diligence. This is a large decision as if it were to be implimented, it would have to be maintained. If the decision turned out to be poor for whatever reason, removing it is much more difficult then adding it. You don't need to bash here when we're just trying to understand if this is required.
--
In my opinion, this makes the ability class more complex.

I can manage a TimeEntry on my own projects unless the following conditions apply

Can be handled with:
can :manage, TimeEntry, user_id: user.id
cannot :manage, TimeEntry, some_condition: :is_a_thing

I have not found any super complex situations where the above cannot be used effectively. Often, if rules are super complex it's a sign that refactoring could be done in your application to make things a little bit easier.
I still have outstanding comments about the consistency of the interface, and that not has to be at the top level and doesn't work across associations. That and being the first time the hash syntax doesnt have a one to one mapping with active records hash syntax for queries which adds complexity if we have to manipulate it before passing it to active record in the future, for whatever reason.
As @coorasse mentioned, I can't see a concrete example of why this would be necessary with the existence of cannot. Combined with an inconsistent interface I can't really support bringing this in. I've done large authorization audits of many projects without having to be concerned about incredibly complex rules.
As an open source example: https://github.com/solidusio/solidus/pull/136
Thank you for your contribution and I appreciate your passion, but I'm going to have to shelve this until additional evidence, or perhaps a cleaner and more consistent interface is brought forward.

@Senjai:

We are performing our due diligence.

I'm aware of that, obviously. I was simply asking what the argument against it was, because to me, the pull request seems to make the gem a lot easier to use and more capable for larger projects.

If the decision turned out to be poor for whatever reason, removing it is much more difficult then adding it.

That's a good point, but why do you think it might be a poor decision?

You don't need to bash here when we're just trying to understand if this is required.

No bashing was meant. I was simply asking a question.

I can manage a TimeEntry on my own projects unless the following conditions apply
Can be handled with:

can :manage, TimeEntry, user_id: user.id
cannot :manage, TimeEntry, some_condition: :is_a_thing

Yes, of course it can. But I think that that statement entirely misses the point of this pull request. I like the can...cannot form that you demonstrate here (@coorasse apparently doesn't, though). I am using that form in the example I gave earlier. This pull request is designed to make that form applicable in more cases.
This pull request, then, is designed to also allow me to do
can :manage, TimeEntry, user_id: user.id
cannot :manage, TimeEntry, not: {some_condition: :is_a_thing}

I have not found any super complex situations where the above cannot be used effectively. Often, if rules are super complex it's a sign that refactoring could be done in your application to make things a little bit easier.

That is a red herring. You seem to think I'm objecting to the can...cannot form, which suggests to me that you did not look carefully at the example I supplied. Please do so.

I still have outstanding comments about the consistency of the interface, and that not has to be at the top level and doesn't work across associations.

Then I will be happy to address those issues. What sort of interface would you like to see if this were to be incorporated?
(As for not not working across associations, I didn't need that feature, so I didn't implement it; consider it a first iteration.)

As @coorasse mentioned, I can't see a concrete example of why this would be necessary with the existence of cannot.

I gave such a concrete example. From your earlier comments, I believe you did not understand it, so I'll explain once more.

My example uses the can...cannot form you suggested above; that is, it starts with can :manage, TimeEntry, project: {client: {user_id: user.id}}, giving broad permissions for a class of objects.
Then, in the next line, it uses cannot to restrict this permissions for one special case, exactly as you suggested. It just happens that the condition on the cannot is negative, which is why I need the code from this pull request for this to work: cannot [:destroy, :update], TimeEntry, not: {invoice_id: nil}. I cannot replace cannot not: with can, because can never restricts permissions, but only broadens them.
In other words, you said above that you recommend the can...cannot form. That is what I am using in my example, and this pull request merely makes it usable in more cases.

Combined with an inconsistent interface I can't really support bringing this in.

Then I'll address the interface, or do whatever else it takes to get this into cancancan. It needs to be included if the gem is to work in a consistent, efficient fashion. Right now, the lack of negative conditions is a point of asymmetry that prevents cancancan from being as useful as it could be.

I've done large authorization audits of many projects without having to be concerned about incredibly complex rules.
As an open source example: solidusio/solidus#136

I do not see what that has to do with the feature I am proposing.

Hi, I realize I'm a bit late to the party. We're in the same situation as @marnen in that we have a complex Ability file that would benefit tremendously from refactoring as described by them.
Basically we have a number of restrictions, for example that a data item must belong to the same customer account as the user, and need to combine them with more general access grants (e.g. users with role X can access data items of type Y).
Of course this can be done with vanilla CanCanCan, but it's complex, hard to maintain and relatively error prone.
It would be much clearer and safer if we could just add a rule at the bottom that said:
cannot :manage, SomeModel, not: { account_id: user.account_id }

... rather than adding the opposite condition to each "positive" rule.
In terms of boolean logic, it would be the equivalent of turning (A & !X) | (B & !X) | (C & !X) into (A | B | C) & !X.
We'd like to stick to plain hash conditions (instead of scopes or blocks) for various reasons, including composability, performance and the ability to serialize the rules into JSON for use outside of our Rails app.
All this is just to say that this PR would definitely have been a valuable improvement from our POV 😄


tag create doesn't limit tag name to 80 characters

Actually it seems it does, but the error message isn't that helpful:

We could change the type of error that's raised to a custom one meaning we can provide a custom message to the error response


Gradle resolution error

Summary:
Gradle is having issues resolving google map packages in android project.
Steps to reproduce:
Unknown
Expected behavior:
Google packages to resolve correctly
Observed behavior:
Gradle build is getting this error:
Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:     class com.google.android.gms.maps.model.LatLng, unresolved supertypes: com.google.android.gms.common.internal.safeparcel.zza     class com.google.android.gms.maps.model.PolylineOptions, unresolved supertypes: com.google.android.gms.common.internal.safeparcel.zza     class com.google.android.gms.maps.model.MarkerOptions, unresolved supertypes: com.google.android.gms.common.internal.safeparcel.zza     class com.google.android.gms.maps.model.CameraPosition, unresolved supertypes: com.google.android.gms.common.internal.safeparcel.zza     class com.google.android.gms.location.LocationRequest, unresolved supertypes: com.google.android.gms.common.internal.safeparcel.zza     class com.google.android.gms.location.LocationSettingsRequest, unresolved supertypes: com.google.android.gms.common.internal.safeparcel.zza     class com.google.android.gms.location.LocationSettingsResult, unresolved supertypes: com.google.android.gms.common.internal.safeparcel.zza
Device and Android version:
minSdkVersion 16
targetSdkVersion 27
android studio version 3.1.1
gradle version 4.1
Screenshots:
Can be created by pressing the Volume Down and Power Button at the same time on Android 4.0 and higher.

This should be fixed. Please ping if you still see the issue.


bug in search

I keep complaining about this, but you should never, ever get two hits to a unique identifier.

This is fixed with the new enhanced Global Search.


Gloss city names in the local language

If the name of a city in the local language differs from its name in the user-preferred language, the label now includes a gloss on a second line containing the local name in smaller type and in parentheses. The names are compared case-insensitively but without diacritic folding based on the user-preferred language’s collation rules.
The choice of cities, as opposed to other kinds of places, is mainly based on prior art, as seen in https://github.com/ZeLonewolf/openstreetmap-americana/issues/471#issue-1292150160. This approach minimizes clutter in countries that use a different writing system than the user does, important because we don’t currently have reliable access to a transliterated name when a translated name is available in a given language. We could tighten up the filter further, so that only cities above a certain rank get a gloss, but I think the reason for glossing a label would become less intuitive to users.
English

Spanish

Korean

Arabic

Esperanto
This map has reached Peak Internationalization:

🤖
The gloss makes it easy to spot typos, vandalism, and labels needing import cleanup in Wikidata:

Under the hood, this PR replaces the metadata-based approach to localizing text-field in #581 with a top-level expression variable that can be replaced safely each time the language preference changes. This is a purer style specification–based solution that’s less likely to force a full style reload when the language preference changes. The code can easily be extended to vary arbitrary layout and paint properties and even filters based on any number of environment variables, not just the language preference. For example, if we label elevations in the future, we could dynamically update them to reflect changes in the preferred measurement system.
Fixes #471.

I noticed this oddity in Italy:

I noticed this oddity in Italy:

Someone changed the English and Italian labels on Wikidata to include a curly apostrophe instead of a straight one. The OSM node has a straight apostrophe. One way to look at it is that the gloss is really good at catching things like this. 😅
Wikidata’s label guidelines are silent about which kind of punctuation to use in labels. In some subject areas, Wikidata has bots going around switching straight apostrophes to curly apostrophes, but otherwise, most labels are based on Wikipedia article titles. The English Wikipedia’s house style, which has been influential in other Wikipedia language editions, insists on straight quotation marks. However, some language editions like the Russian Wikipedia standardize on curly apostrophes instead: https://github.com/osmlab/name-suggestion-index/pull/2969#issuecomment-522286770. So far, I haven’t come across any discrepancies in Russian-speaking countries when setting language=ru.
In OSM, mappers have disagreed on whether to use straight apostrophes,[^okina] forcing data consumers like Mapbox Streets to replace straight apostrophes with curly apostrophes in postprocessing. Unfortunately, any postprocessing is potentially unreliable without certainty about which language is stored in name. A while back, @claysmalley caused a stir by correcting the punctuation on Amtrak stations, apparently because people were concerned about breaking Nominatim and bespoke Overpass queries. I personally prefer curly apostrophes, but you’ll only find them on unbranded POIs, because the name-suggestion-index has standardized on straight apostrophes.
Unfortunately, GL JS doesn’t support the ignorePunctuation collator option in collator option objects, so there’s no way to account for these discrepancies on the client side.
[^okina]: On the bright side, in Hawaiʻi, we did replace GNIS- and TIGER-imported straight apostrophes with proper ʻokina and that has been uncontroversial so far.

One way to look at it is that the gloss is really good at catching things like this.

Good explanation.  I'm cool with that :)
Overall I'm pretty happy with how this looks!

The English Wikipedia’s house style […] insists on straight quotation marks.

They also think en dashes in URLs is a cute idea, so I take them with a grain of salt.

I may also look into adding unit tests, either in this PR or separately, because there are a lot of edge cases to juggle.

Once a test harness lands in #594, we can refactor the ginormous city name label text-field expression to be testable and add test cases for all the cities we examined above in code review.

The diacritic folding when the language is set to English cuts down on redundancy very well. It would be nice if we could do the same for other languages, but I understand it's difficult since diacritics are much more important in languages other than English. I could be wrong, but I imagine a Spanish speaker would find this kind of thing somewhat silly looking:

This is specifically an issue when a Spanish speaker looks at an English-speaking country, as opposed to say a French-speaking country as in https://github.com/ZeLonewolf/openstreetmap-americana/pull/592#discussion_r1035490247. Similarly, there was a request in OSMUS Slack to enable diacritic folding in Polish too, but it turned out to be counterproductive: Latvian diacritics overriding Polish diacritics on one city label (Jurmała → Jūrmala) right next to another label where the two names remained separate due to a base letter difference (Ryga + Rīga, Jełgawa + Jelgava).
What makes your Spanish example particularly ironic is that the English names are derived from Spanish to begin with, but we don’t have etymological data at our disposal. Perhaps we could conflate more aggressively if we had an expression operator that could search for a character class or regular expression. Then we could check if the local name matches name:en and is composed of only ASCII characters.

St. vs Saint is an issue. I hope this can be resolved on the data side by standardizing on one form. It sure would feel dumb to have to add a special case to treat them as equivalent for gloss purposes.

This is a consequence of OpenStreetMap’s policy of expanding abbreviations in names,[^st] even when a word would typically be abbreviated in prose. These particular cases will be fixed by onthegomap/planetiler#403. However, there may be features in OSM that inconsistently expand the word in name but abbreviate it in name:en.
[^st]: American English considers “St.” to be an abbreviation, whereas evidently British English does not. However, “St.” can be a non-abbreviation in American English too: the family name “St. Clair” comes from “Sinclair”, so it’s incorrect to spell it out as “Saint Clair”.


EstakingWithdrawElysStakingRewards: Add message to withdraw elys rewards

elysd tx wasm exec --from validator --keyring-backend test --gas auto --gas-adjustment=1.3 --fees 100000uelys -b sync -y "elys1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrqau4f4q" '{"estaking_withdraw_elys_staking_rewards": {}}'

Error: Error when broadcasting tx 5AA400438C95BE177F309D7F467F91F03AF8432A14E5B9EE607CB88BCEA2B8EF at height 7192544. Code: 5; Raw log: failed to execute message; message index: 0: dispatch: submessages: perform elys claim rewards: elys WithdrawElysStakingRewards msg: no delegation distribution info


Remove media compositions SDK's

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

Merged the PR on behalf of @iaulakh


Ability to screencast keys

As of now it seems there is no application to show the keys being pressed that works on Wayland.
The X11 equivalent would be screenkey

There is this : https://github.com/ammgws/wshowkeys

Feel free to create a PR.

wshowkeys

Oh I haven't heard of it, I'll try it soon, thanks @rooiratel

Hi @quazar-omega I haven't tried it myself either! But I'll give it a go on my system and see if I can get it to work.

Ok, I'll wait for your comment then, thank you!
In the meantime, I'll open a draft pull request

I just installed and tried it now. It works for me without any issues.
For context I am on Arch Linux and I just installed the AUR package : https://aur.archlinux.org/packages/wshowkeys-git
I'm not sure which distro you use, but the PKGBUILD file should hopefully help you get it working on your system:
https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=wshowkeys-git

Hm I see, that is the package I had installed in my Arch container too, I'm on Fedora Kinoite so my system is immutable, that's why I couldn't install it directly on my host.
I'll see if I can build it with a Fedora container, maybe that could make a difference, though to be fair, if it is becoming so hard to install (aside from Arch-based distros) I'm leaning on considering it not really user ready, don't know what the maintainers' stance on that is

I've been trying to compile it, but I got stuck at a missing dependency when I run `meson build':
Run-time dependency wayland-client found: NO (tried pkgconfig and cmake)

meson.build:45:0: ERROR: Dependency "wayland-client" not found, tried pkgconfig and cmake

But if I check my system, libwayland-client is present:
$ sudo dnf install libwayland-client
Last metadata expiration check: 0:22:04 ago on Wed 19 Jul 2023 12:26:42 CEST.
Package libwayland-client-1.22.0-1.fc38.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

I'm really confused, what should I do?

Now the problem is that when I run it I don't see any output. I also tried running wshowkeys from my host system, but I keep getting:
$ wshowkeys
wshowkeys needs to be setuid to read input events

Even though I set it as setuid:
sudo chmod a+s .local/bin/wshowkeys

I may be interested in working on a project like this that works on both X11 and Wayland without root or any special permissions, after I set up some APIs in the appropriate libraries to get it done.

That would be great, but can it really be done without root?

Yes it can. That's why the InputCapture portal exists.

Oh cool, I'll be looking forward to it then!

Update here! A new (not actually new, but I just didn't know about its existence until it was brought up in a random thread) application is available: https://github.com/AlynxZhou/showmethekey
It needs root access unfortunately, but it's better than nothing until someone succeeds in implementing a key screencaster that makes use of the InputCapture portal mentioned by @orowith2os.
I guess I'll be updating my PR 🎉


[WelcomeUX] Color of buttons on welcome page

VSCode Version: Code - Insiders 1.9.0-insider (6ba4282fd27bacacbf8482472a0519560720fb9c, 2017-01-26T07:26:32.304Z)
OS Version: Darwin x64 15.6.0
Extensions:

Extension
Author
Version

vscode-docker
PeterJausovec
0.0.11

theme-toothpaste
aalaap
0.0.1

vscode-eslint
dbaeumer
1.2.0

githistory
donjayamanne
0.1.5

tslint
eg2
0.8.1

vscode-npm-script
eg2
0.1.8

vsc-travis-ci-status
felixrieseberg
1.0.5

Go
lukehoban
0.6.52

csharp
ms-vscode
1.6.2

debugger-for-chrome
msjsdiag
2.4.2

better-merge
pprice
0.5.1

Ruby
rebornix
0.10.4

java
redhat
0.0.9

kustovscode
seanmcbreen
0.0.1

php-syntax-visualizer
vscode
0.0.1

gitblame
waderyan
1.3.0

vscode-open-in-github
ziyasal
1.2.3

Steps to Reproduce:

Use toothpaste color theme.
The buttons on the welcome page don't fit well with the theme. We should try to derive the color from the background color of the theme.

+1 or fixing this for this sprint since we want to push our theming to broader audience and not having welcome look themed is counter productive to sell this feature.

Thanks @chrmarti !

Anytime! :D

Looks great! 👌