sshnp/sshnpd -d option does not handle capitalisation of device names

Describe the bug
If using a -d in the sshnpd startup with a Capitalised letter in the device name the daemon does not trigger on an incoming request even if sshnp -d is also capitalized correctly.
Steps to reproduce

First set up sshnpd with a device with a capital letter
try connecting with sshnp with the sae device name with capital - error
try agian without capital letter on the sshnp side - get a notification of keys but unable to connect
Change both sshnpd and sshnp to all lower case and everything works

Expected behavior
Either Capitalization works and the device arg is case sensitive or not and make clear in documentation.
Screenshots
No response
Smartphones

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Were you using an atApplication when the bug was found?
No response
Additional context
sshnpd set up with capital letter for sshnpd startup
[Unit]
Description=Ssh No Ports Daemon
After=network-online.target

# Make this unit fail if sshd isn't started first
Requisite=sshd.service

# Uncomment the following line to make this unit auto-start sshd if it isn't started
# Requires=sshd.service

[Service]
# TODO : set username
User=cconstab
Type=simple
Restart=always
RestartSec=3

# Uncomment the following line to sleep for 10 seconds before starting up the service
# ExecStartPre=/bin/sleep 10

# TODO : set device_atsign, manager_atsign, device_name
ExecStart=/usr/local/bin/sshnpd -a @ssh_1 -m @cconstab -d 1Beaglec  -v -s -u

[Install]
WantedBy=multi-user.target

On sshnpd
root@beaglebone:~# systemctl daemon-reload
root@beaglebone:~# sudo systemctl restart sshnpd-cconstab.service
root@beaglebone:~# sudo journalctl -u sshnpd-cconstab.service -f
-- Logs begin at Sun 2024-02-18 00:23:24 UTC. --
Feb 20 01:46:43 beaglebone sshnpd[4406]: INFO|2024-02-20 01:46:43.034433|AtClientCommitLogCompaction (@ssh_1)|Starting commit log compaction job running for every 11 minute(s)
Feb 20 01:46:43 beaglebone sshnpd[4406]: INFO|2024-02-20 01:46:43.046302|AtClientManager|setCurrentAtSign complete
Feb 20 01:46:43 beaglebone sshnpd[4406]: INFO|2024-02-20 01:46:43.623829|AtLookup|Creating new connection
Feb 20 01:46:44 beaglebone sshnpd[4406]: INFO|2024-02-20 01:46:44.169367|AtLookup|New connection created OK
Feb 20 01:46:44 beaglebone sshnpd[4406]: INFO|2024-02-20 01:46:44.426001|AtLookup|auth success
Feb 20 01:46:44 beaglebone sshnpd[4406]: INFO|2024-02-20 01:46:44.596834| sshnpd |Starting heartbeat
Feb 20 01:46:44 beaglebone sshnpd[4406]: INFO|2024-02-20 01:46:44.599381| sshnpd |Subscribing to 1Beaglec\.sshnp@
Feb 20 01:46:44 beaglebone sshnpd[4406]: INFO|2024-02-20 01:46:44.601831| sshnpd |Updating device info for 1Beaglec
Feb 20 01:46:44 beaglebone sshnpd[4406]: INFO|2024-02-20 01:46:44.906300| sshnpd |Done
Feb 20 01:46:45 beaglebone sshnpd[4406]: INFO|2024-02-20 01:46:45.142606|Monitor (@ssh_1)|monitor started for @ssh_1 with last notification time: null
Feb 20 01:47:18 beaglebone sshnpd[4406]: INFO|2024-02-20 01:47:18.719856| sshnpd |Received: sshpublickey
Feb 20 01:47:18 beaglebone sshnpd[4406]: INFO|2024-02-20 01:47:18.724240| sshnpd |ssh Public Key received from @cconstab notification id : 46f15984-a181-4ca6-b42a-e7afdcb15356

from the sshnp side
cconstab@tarial ~ % sshnp -f @cconstab -t @ssh_1 -d 1Beaglec -h @rv_am  -i ~/.ssh/id_ed25519 -s
2024-02-19 17:47:16.782479 : Resolving remote username for user session
2024-02-19 17:47:17.610567 : Resolving remote username for tunnel session
2024-02-19 17:47:17.611099 : Sharing ssh public key
2024-02-19 17:47:18.392187 : Fetching host and port from srvd
2024-02-19 17:47:20.094069 : Sending session request to the device daemon
2024-02-19 17:47:20.348692 : Waiting for response from the device daemon

Error : No response from the device daemon
cconstab@tarial ~ %

Moving to Lower case everything works
[Unit]
Description=Ssh No Ports Daemon
After=network-online.target

# Make this unit fail if sshd isn't started first
Requisite=sshd.service

# Uncomment the following line to make this unit auto-start sshd if it isn't started
# Requires=sshd.service

[Service]
# TODO : set username
User=cconstab
Type=simple
Restart=always
RestartSec=3

# Uncomment the following line to sleep for 10 seconds before starting up the service
# ExecStartPre=/bin/sleep 10

# TODO : set device_atsign, manager_atsign, device_name
ExecStart=/usr/local/bin/sshnpd -a @ssh_1 -m @cconstab -d 1beaglec  -v -s -u

[Install]
WantedBy=multi-user.target

the sshnpd output
root@beaglebone:~# systemctl daemon-reload
root@beaglebone:~# sudo systemctl restart sshnpd-cconstab.service
root@beaglebone:~# sudo journalctl -u sshnpd-cconstab.service -f
-- Logs begin at Sun 2024-02-18 00:23:24 UTC. --
Feb 20 01:51:20 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:20.915530|AtClientCommitLogCompaction (@ssh_1)|Starting commit log compaction job running for every 11 minute(s)
Feb 20 01:51:20 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:20.927610|AtClientManager|setCurrentAtSign complete
Feb 20 01:51:21 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:21.525457|AtLookup|Creating new connection
Feb 20 01:51:22 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:22.143062|AtLookup|New connection created OK
Feb 20 01:51:22 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:22.448019|AtLookup|auth success
Feb 20 01:51:22 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:22.640320| sshnpd |Starting heartbeat
Feb 20 01:51:22 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:22.642648| sshnpd |Subscribing to 1beaglec\.sshnp@
Feb 20 01:51:22 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:22.645214| sshnpd |Updating device info for 1beaglec
Feb 20 01:51:22 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:22.983409| sshnpd |Done
Feb 20 01:51:23 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:23.208660|Monitor (@ssh_1)|monitor started for @ssh_1 with last notification time: null
Feb 20 01:51:34 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:34.260233| sshnpd |Received: sshpublickey
Feb 20 01:51:34 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:34.267917| sshnpd |ssh Public Key received from @cconstab notification id : 9b68e58d-b1a1-4349-8ce2-ea619daff3aa
Feb 20 01:51:35 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:35.862197| sshnpd |Received: ssh_request
Feb 20 01:51:35 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:35.867991| sshnpd |>=4.0.0 request for ssh received from @cconstab ( {id: 7cf8e8d7-4b7f-4710-a0f0-e923bab51436, key: @ssh_1:ssh_request.1beaglec.sshnp@cconstab, from: @cconstab, to: @ssh_1, epochMillis:<PHONE_NUMBER>463, value: {"payload":{"direct":true,"sessionId":"d2c95989-8ff7-40f0-b3ff-bf38a02c61bd","host":"<IP_ADDRESS>","port":42119,"authenticateToRvd":true,"clientNonce":"2024-02-19T17:51:32.379275","rvdNonce":"2024-02-20T01:51:43.698053","encryptRvdTraffic":true,"clientEphemeralPK":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu2LO/RHFdWSpR2wwtvtv+ily5MIIBMxb1LOtu++umCo67NjMwZrfcphwkAScjGee+pUO55LZIiPxyTY33xtI7U7QkTy+u7OlrsUw45CRib/tu3NFwWBx/IFJFut2cGJB2D/RSQy+WyIYcyjwRzqIi/buYJHxRs1Rtj+/QPGY0jgeYyKA/UBqjJZ36ScROIFf3Af5mEg2vyARYN8Off+6i3xw0Do7VD5mwYkcYzOzeQIpcKreg1Xnh5e7vlNDIW0E0VA1kqdGjw5IohOR5lMPv5Axa+pG9n989BKfLKBXncUbqkv5T6uevBHL6J3+tKheLITRAVoWdFy3gqFUB4wfzwIDAQAB","clientEphemeralPKType":"rsa2048"},"signature":"oNZ9W+kzZIQVC2CwaA7uVq8A9pTjwk56zTHDgCUc53yVzyVIPih+gqHQvTvc9ekSMZF55hzwqaerTtnuN+UUbEfPFgwzcoQEHpnyVSOO5UUhTvs1Yb+BTjRmE7cdLmo3PUMq8aWBoqY4o+lPAm4XSsaPljR3Y4U+vq7PVl8wq96DNflt4BR4yYz5bH+6zCFyXc7KWqePDslrW2drkt2XFAeCIbXJBuVA0HVg4yPme182E60fU6WBpJm7HxmhbQGKwUlh6y7Yi0B0VxbfzQhNxrXU5UMCOTvuNCueFqcN3DYGogWj3skfZX1mOSh/t+I27Ay4SyK3xA0/rS3QtNC5Cw==","hashingAlgo":"sha256","signingAlgo":"rsa2048"}, operation: update, messageType: MessageType.key, isEncrypted: true, notificationStatus: , expiresAt: null, metadata: Metadata{ttl: null, ttb: null, ttr: null,ccd: null, isPublic: false, isHidden: false, availableAt : null, expiresAt : null, refreshAt : null, createdAt : null, updatedAt : null, isBinary : false, isEncrypted : false, isCached : false, dataSignature: null, sharedKeyStatus: null, encryptedSharedKey: null, pubKeyCheckSum: null, encoding: null, encKeyName: null, encAlgo: null, ivNonce: hu+t7chFvljNzoK3iDZkxw==, skeEncKeyName: null, skeEncAlgo: null}} )
Feb 20 01:51:35 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:35.893| sshnpd |Signing Verification Result: ResultType: bool, Result: true, SigningMetadata: {HashingAlgo: sha256, SigningAlgo: rsa2048, SignatureTimestamp: 2024-02-20 01:51:35.883572Z}
Feb 20 01:51:35 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:35.895805| sshnpd |svr.result is a bool
Feb 20 01:51:35 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:35.897785| sshnpd |svr.result is true
Feb 20 01:51:35 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:35.899977| sshnpd |Setting up ports for direct ssh session using openssh (openssh) from: @cconstab session: d2c95989-8ff7-40f0-b3ff-bf38a02c61bd
Feb 20 01:51:36 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:36.010175|SrvImplExec|SrvImplExec.run(): executing /usr/local/bin/srv -h <IP_ADDRESS> -p 42119 --local-port 22 --rv-auth --rv-e2ee
Feb 20 01:51:36 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:36.141531|SrvImplExec|rv stderr | authenticating socketB
Feb 20 01:51:36 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:36.154132|SrvImplExec|rv stderr | rv started successfully
Feb 20 01:51:36 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:36.158923|SrvImplExec|rv stderr | Waiting for connector to close
Feb 20 01:51:36 beaglebone sshnpd[4488]: INFO|2024-02-20 01:51:36.159625| sshnpd |Started rv - pid is 4499

and the sshnp
cconstab@tarial ~ % sshnp -f @cconstab -t @ssh_1 -d 1beaglec -h @rv_am  -i ~/.ssh/id_ed25519 -s
2024-02-19 17:51:32.379950 : Resolving remote username for user session
2024-02-19 17:51:33.239383 : Resolving remote username for tunnel session
2024-02-19 17:51:33.240063 : Sharing ssh public key
2024-02-19 17:51:33.937373 : Fetching host and port from srvd
2024-02-19 17:51:35.310418 : Sending session request to the device daemon
2024-02-19 17:51:35.512224 : Waiting for response from the device daemon
2024-02-19 17:51:37.033205 : Received response from the device daemon
2024-02-19 17:51:37.033499 : Creating connection to socket rendezvous
2024-02-19 17:51:37.106850 : Starting tunnel session
2024-02-19 17:51:37.824226 : Starting user session

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Feb 20 01:51:38 2024 from <IP_ADDRESS>
cconstab@beaglebone:~$

Need to force lowercase everywhere for atKeys

Working on this now. Further to previous comment, we will force device name to lower case when constructing daemon and clients

Working on this now. Further to previous comment, we will force device name to lower case when constructing daemon and clients

We should make sure that the documentation reflects that.

Working on this now. Further to previous comment, we will force device name to lower case when constructing daemon and clients

We should make sure that the documentation reflects that.

Doc updates added to #856


doc(flag): add maxAPICallResponseLength flag

Related issue
Closes #1198

Proposed Changes

Checklist

[x] I have read the contributing guidelines.
[x] I have inspected the website preview for accuracy.
[x] I have signed off my issue.

/cherry-pick release-1-12-0


Reduce requested RBAC permissions

Fixes https://github.com/shipwright-io/build/issues/724
This removes ClusterRole permissions granted to the controller SA, and removes anything it doesn't need (I think). It turns out what we were requesting before was vastly more permissions than we actually needed!
What's left is:

full read/write/create/delete on all Secrets and SAs (I believe we won't need these after we excise creds-init 🤞)
list/get Pods
full read/write/create/delete on shipwright.io/*
create/get/list/watch on tekton.dev TaskRun only -- no delete or update
create/get/update on ConfigMaps in the shipwright-build namespace only -- this is necessary for leader election

/kind cleanup
Submitter Checklist

[n] Includes tests if functionality changed/was added
[n] Includes docs if changes are user-facing
[y] Set a kind label on this PR
[y] Release notes block has been filled in, or marked NONE

See the contributor guide
for details on coding conventions, github and prow interactions, and the code review process.
Release Notes
Permissions granted to the controller SA are reduced to what it actually needs to run

@imjasonh - Not 100% sure yet (I brought down my openshift cluster for the day before looking into this in detail), but I suspect this reduction may have broken running on openshift.... or perhaps a change to manipulate the taskrun finalizer dropped after this change / your analysis (I have not researched that in detail yet, and am about to sign off).
Details so far:

I can install and use the Mar 24 nightly currently referenced in the readme
however a ko apply ... on the main branch produces:

{"level":"error","ts":1623440461.224542,"logger":"controller-runtime.controller","msg":"Reconciler error","controller":"buildrun-controller","name":"buildpack-nodejs-build-87cwh","namespace":"ggmtest","error":"taskruns.tekton.dev \"buildpack-nodejs-build-87cwh-49krk\" is forbidden: cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on: , <nil>","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.6.1/pkg/internal/controller/controller.go:209\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\tsigs.k8s.io/controller-runtime@v0.6.1/pkg/internal/controller/controller.go:188\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\tk8s.io/apimachinery@v0.20.2/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\tk8s.io/apimachinery@v0.20.2/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\tk8s.io/apimachinery@v0.20.2/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.Until\n\tk8s.io/apimachinery@v0.20.2/pkg/util/wait/wait.go:90"}

pretty sure we have to update the role to include something like
  - apiGroups:
      - tekton.dev
    resources:
      - taskruns/finalizers
    verbs:
      - "*"

unless someone here beats me to it, I'll give it a go on Monday and report back my findings and submit a PR if my intuition is correct
thanks

Good catch Gabe!
If this is the case, I have two questions:

What do we use finalizers for? My understanding is they shouldnt't be used if you can avoid it, since K8s can't guarantee the finalizer will be called.

If we need it we should have an e2e test that covers the behavior. Requests made during e2e tests are what generated this policy, using rbac-audit

As the newlines in the error log I noted in https://github.com/shipwright-io/build/pull/768#issuecomment-859931203 did not take effect, I'll paste the stack trace provided with the new lines manually inserted:
"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.6.1/pkg/internal/controller/controller.go:209\n
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\tsigs.k8s.io/controller-runtime@v0.6.1/pkg/internal/controller/controller.go:188\n
k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\tk8s.io/apimachinery@v0.20.2/pkg/util/wait/wait.go:155\n
k8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\tk8s.io/apimachinery@v0.20.2/pkg/util/wait/wait.go:156\n
k8s.io/apimachinery/pkg/util/wait.JitterUntil\n\tk8s.io/apimachinery@v0.20.2/pkg/util/wait/wait.go:133\n
k8s.io/apimachinery/pkg/util/wait.Until\n\tk8s.io/apimachinery@v0.20.2/pkg/util/wait/wait.go:90"

So on the surface, it is a controller runtime only stack.  No shipwright code.  And I'm not finding an explicit references to finalizers, blockOwnerDeletion, etc. in the shipwright code (albeit I've only employed simple greps so far).
Conjecture:

either our code is employing a config value of some sort that enables this action
or a controller-runtime bump has inadvertently given this to us, where we in fact were not asking for it
or if someone else has an idea

( This needs a fresh issue )


Update enums to reflect typing spec changes

See https://typing.readthedocs.io/en/latest/spec/enums.html#defining-members
https://github.com/python/typing-council/issues/11
The next version of mypy will obey the spec change: https://github.com/python/mypy/pull/18068
pyright already requires this

I think the CI is failing on Windows because of a pyright issue that was just fixed.  Can  you update the pyproject.toml to require pyright >= 1.1.387 ?


make boilerplate website

add navigation bar
add footer
add search text field
about us section

Closing this as PR #6 solves this


Varnish sometimes stops listening on port 80 requiring a restart

Happened a few times recently:

Once during alaveteli mini-retreat
Weekend in between these
2016-02-17

Haven't seen this for ages and we're now running on our infrastructure, so less likely to be an issue


[FLOC-3049] Merge Flocker 1.3.1into master

This is the merge of release 1.3.1 into master.  It is done as a separate PR due to a merge conflict in the NEWS file between the 1.3.1 entry and the 1.4.0dev1 in master.  See https://clusterhq.atlassian.net/browse/FLOC-3048 for an explanation of why this is done as a separate PR to the release PR.
This PR should be the same as the 1.3.1 PR #1948 but with the 1.3.1 NEWS below the 1.4.0dev1 NEWS (i.e. in version order, not chronological order).

all good, berge it


NGINX Proxy Cache Example for PS-CapabilityList?

I'm looking to setup separate caches based on capabilities, along the lines of what is described here:
https://developers.google.com/speed/pagespeed/module/downstream-caching#ps-capabilitylist
I found an example for Varnish 4:
https://github.com/pagespeed/ngx_pagespeed/issues/737#issuecomment-53244286
But I am wondering if there are any examples in the wild for nginx proxy cache?
From what i understand i would need to modify my proxy_cache_key with the capabilities, and then also do some regex checks to set the correct header:
proxy_set_header PS-CapabilityList "fully general optimizations only";
vs
proxy_set_header PS-CapabilityList "ll,ii,dj,jw,ws";
vs
proxy_set_header PS-CapabilityList "ll,ii,dj";
Thanks!

My best attempt at converting the varnish vcl to nginx. not sure if this works though:
# Define placeholder PS-CapabilityList header values for large and small
# screens with no UA dependent optimizations. Note that these placeholder
# values should not contain any of ll, ii, dj, jw or ws, since these
# codes will end up representing optimizations to be supported for the
# request.
set $default_ps_capability_list_for_large_screens = "LargeScreen.SkipUADependentOptimizations:";
set $default_ps_capability_list_for_small_screens = "TinyScreen.SkipUADependentOptimizations:";

# As a fallback, the PS-CapabilityList header that is sent to the upstream
# PageSpeed server should be for a large screen device with no browser
# specific optimizations.
set $ps_capability_list = "fully general optimizations only";

# Cache-fragment 1: Desktop User-Agents that support lazyload_images (ll),
# inline_images (ii) and defer_javascript (dj).
# Note: Wget is added for testing purposes only.
if ($http_user_agent ~ "(?i)Chrome/|Firefox/|Gecko|MSIE |Trident|Safari|Wget") {
  set $ps_capability_list = "ll,ii,dj:";
}
# Cache-fragment 2: Desktop User-Agents that support lazyload_images (ll),
# inline_images (ii), defer_javascript (dj), webp (jw) and lossless_webp
# (ws).
if ($http_user_agent ~
    "(?i)Chrome/[2][3-9]+\.|Chrome/[[3-9][0-9]+\.|Chrome/[0-9]{3,}\.") {
  set $ps_capability_list = "ll,ii,dj,jw,ws:";
}
# Cache-fragment 3: This fragment contains (a) Desktop User-Agents that
# match fragments 1 or 2 but should not because they represent older
# versions of certain browsers or bots and (b) Tablet User-Agents that
# on all browsers and use image compression qualities applicable to large
# screens. Note that even Tablets that are capable of supporting inline or
# webp images, e.g. Android 4.1.2, will not get these advanced
# optimizations.
if ($http_user_agent ~ "(?i)Firefox/[1-2]\.|MSIE [5-8]\.|bot|Yahoo!|Ruby|RPT-HTTPClient|(Google \(\+https\:\/\/developers\.google\.com\/\+\/web\/snippet\/\))|Android|iPad|TouchPad|Silk-Accelerated|Kindle Fire") {
  set $ps_capability_list = $default_ps_capability_list_for_large_screens;
}
# Cache-fragment 4: Mobiles and small screen Tablets will use image compression
# qualities applicable to small screens, but all other optimizations will be
# those that work on all browsers.
if ($http_user_agent ~ "(?i)Mozilla.*Android.*Mobile*|iPhone|BlackBerry|Opera Mobi|Opera Mini|SymbianOS|UP.Browser|J-PHONE|Profile/MIDP|portalmmm|DoCoMo|Obigo|Galaxy Nexus|GT-I9300|GT-N7100|HTC One|Nexus [4|7|S]|Xoom|XT907") {
  set $ps_capability_list = $default_ps_capability_list_for_small_screens;
}

proxy_set_header PS-CapabilityList $ps_capability_list;
proxy_cache_key $ps_capability_list$scheme$host$uri$is_args$args;

For anyone else that runs into this, I found some very nice examples from the test file:
https://github.com/pagespeed/ngx_pagespeed/blob/master/test/pagespeed_test.conf.template

very useful @deweydb  thank you


test: add vm migration

Job ID 152 for test_migrate_vm_with_user_data.
Job ID 153 for test_multiple_migrations.
Job ID 155 for test_migrate_vm_with_multiple_volumes.

Thanks @FrankYang0529 & @lanfon72


EnvExtension for in-code configuration

How about adding an EnvExtension to lake so that we can add to package configuration directly in code with CoreM?
The original thought is to trace external files in include_str, and it comes to a more generalized pattern:

include_str can specify the external file to trace with this extension.
lean4-alloy can notify lake to build the generated file.
codes can now depend on some common packages for system library searching heuristics.

But now I'm not very clear about the type of this extension. Shall we expose a full StateT m PackageConfig or to have some restriction on that?

To clarify, do you mean an environment extension that is is used when elaborating the lakefile or an extension that is used when elaborating source files in the package? If you mean the later, this would require some form import or plugin to augment the environment as lake doesn't currently have any directly control over source file elaboration.

Oh I made a mistake on how lake works. I mean the source file. So we may have to hack into leanc for this to work.

Fyi, I closed this as it was born from a confusion about how Lake works and that confusion has been cleared up.

Should we add another issue for "how to tell lake about dependencies like files read by include_str"?

@gebner Sure. A clear issue on matter explain what is desired would be good. It wasn't even clear to me that was primary proposition here. (I see that is used sort of as a motivating example, but the proposed feature was very different.)

Done. #86


Small webpage search bar can invisibly activated with /

What's happening?
If you go to a website using this theme (ex: manual.zrythm.org) and reduce the horizontal size of your window, the sidebar on the left that contains the search bar will collapse. This is fine and expected. From here, the search bar can still be focused by pressing the / key. This is also fine, but the real problem is that the search bar is remains hidden in the side menu. To solve this, I would suggest expanding the collapsed sidebar with the search bar or adding another search bar that appears at the top of the page when the / key is pressed.
Reproducer

Go to a website using this theme, like https://manual.zrythm.org
Horizontally resize your browser window until the sidebar on the left disappears ("mobile view")
Press the / key to search
The search bar is now activated and you can type in it, but it is still in a non-visible area of the webpage.

Expectation
Instead of invisibly activating (and stealing your keyboard in the process), the search box should appear as a drop-down search box from the top of the page (maybe consider adding a search button in the upper right), or the left panel should expand to reveal the search box.
Code of Conduct

[X] I agree to follow the Code of Conduct.

Maybe the way to go here is what https://pydata-sphinx-theme.readthedocs.io/en/stable/ is doing. They add an overlay for the input box when one activates search.


The following assertion was thrown during paint() - Flutter Web

Hi, I am getting the following exception when the widget builds.
The PieChartSection won't create if there is no value, so not sure whats happening
════════ Exception caught by rendering library ═════════════════════════════════════════════════════
The following assertion was thrown during paint():
Assertion failed: org-dartlang-sdk:///flutter_web_sdk/lib/_engine/engine/validators.dart:11:7
!(rect.left.isNaN ||
          rect.right.isNaN ||
          rect.top.isNaN ||
          rect.bottom.isNaN)
"Rect argument contained a NaN value."

The relevant error-causing widget was:
  PieChart file:///C:/Users/<User>/AndroidStudioProjects/<Project>/lib/views/admin/widgets/charts/enquiries_chart.dart:51:46
When the exception was thrown, this was the stack:
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 214:49  throw_
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 24:3    assertFailed
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/validators.dart 14:15                      rectIsValid
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/ui/src/ui/canvas.dart 650:12                              drawArc
packages/fl_chart/src/chart/pie_chart/pie_chart_painter.dart 97:13                                                         [_drawSections]
...
The following RenderObject was being processed when the exception was fired: RenderCustomPaint#a1fab relayoutBoundary=up15
...  parentData: <none> (can use size)
...  constraints: BoxConstraints(0.0<=w<=1145.0, h=442.0)
...  size: Size(923.3, 442.0)
RenderObject: RenderCustomPaint#a1fab relayoutBoundary=up15
  parentData: <none> (can use size)
  constraints: BoxConstraints(0.0<=w<=1145.0, h=442.0)
  size: Size(923.3, 442.0)

Code:
class EnquiryPieChart extends StatelessWidget {
  final List<EnquiryData> enquiryData;
  EnquiryPieChart({this.enquiryData});

  @override
  Widget build(BuildContext context) {
    List<PieChartSectionData> pieSections = [];

    enquiryData.forEach((enquiry) {
      if (pieSections.where((section) => section.title == enquiry.hearAboutUs).toList().isEmpty) {
        int count = enquiryData.where((how) => how.hearAboutUs == enquiry.hearAboutUs).length;
        pieSections.add(PieChartSectionData(
          title: enquiry.hearAboutUs,
          value: count.toDouble(),
          radius: 60,
        ));
      }
    });
    return pieSections.isEmpty ? Loading() : PieChart(PieChartData(sections: pieSections));
  }
}

Flutter Version:
Flutter 1.19.0-4.1.pre • channel beta • https://github.com/flutter/flutter.git
Framework • revision f994b76974 (3 weeks ago) • 2020-06-09 15:53:13 -0700
Engine • revision 9a28c3bcf4
Tools • Dart 2.9.0 (build 2.9.0-14.1.beta)

It seems the centerSpaceRadius value is mandatory.
In your return PieChart :
return PieChart(     PieChartData(       centerSpaceRadius: 0,       // more settings     ) )

@TavernierAlicia - worked perfectly! I'm thinking centerSpaceRadius may need @required?

Yes, we need @required for it.
I will reopen it to follow it up.
Thanks for letting us know.

Set default centerSpaceRadius to double.infinity in PieChartData.
Check it out in the 0.11.0 version.
Thanks for reporting!


Add files via upload

Environmental protection is very important for the sustainable development of human beings. With the increasing awareness of environmental protection, our earth will be more beautiful.

111

111


fix(pay to): Fixed negative amount error in pay to field

:tada: This PR is included in version 4.1.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Svelte

Rewrites everything to use Svelte and SSG.

And yeah, it's using @sveltejs/adapter-static so it doesn't use Workers and so it's free.


Delete/Remove Dead server

Hi,
My scenario is as below:
Running 2 memcached servers
select memcache_stats();
memcache_stats
                         +

Server: <IP_ADDRESS> (11211)+
pid: 2061                   +
uptime: 4                   +
time:<PHONE_NUMBER>            +
version: 1.4.14             +
pointer_size: 64            +
rusage_user: 0.2712         +
rusage_system: 0.4045       +
curr_items: 0               +
total_items: 0              +
bytes: 0                    +
curr_connections: 5         +
total_connections: 6        +
connection_structures: 6    +
cmd_get: 0                  +
cmd_set: 0                  +
get_hits: 0                 +
get_misses: 0               +
evictions: 0                +
bytes_read: 8               +
bytes_written: 0            +
limit_maxbytes: 536870912   +
threads: 4                  +
Server: <IP_ADDRESS> (11211)+
pid: 1385                   +
uptime: 7                   +
time:<PHONE_NUMBER>            +
version: 1.4.14             +
pointer_size: 64            +
rusage_user: 0.1417         +
rusage_system: 0.1780       +
curr_items: 0               +
total_items: 0              +
bytes: 0                    +
curr_connections: 5         +
total_connections: 6        +
connection_structures: 6    +
cmd_get: 0                  +
cmd_set: 0                  +
get_hits: 0                 +
get_misses: 0               +
evictions: 0                +
bytes_read: 8               +
bytes_written: 0            +
limit_maxbytes: 536870912   +
threads: 4
select memcache_set(id,a||','||b||','||c||','||d) from mydb.test;
memcache_set
t
t
t
t
t
1 memcache server goes down
select memcache_set(id,a||','||b||','||c||','||d) from mydb.test;
WARNING:  SERVER HAS FAILED AND IS DISABLED UNTIL TIMED RETRY
WARNING:  SERVER HAS FAILED AND IS DISABLED UNTIL TIMED RETRY
WARNING:  SERVER HAS FAILED AND IS DISABLED UNTIL TIMED RETRY
WARNING:  SERVER HAS FAILED AND IS DISABLED UNTIL TIMED RETRY
memcache_set
f
t
f
f
f
I keep getting this error, how do I delete the server which went down from pgmemcache configuration.
I have used pgmemcache.default_servers in conf file to add the servers at startup. I tried using pgmemcache.default_behavior = 'DEAD_TIMEOUT:2', but seems like this parameter is not supported as it gives an error during postgres startup.
The environment is Postgres 9.3 running on Ubuntu 14.04
Thanks!

You did not mention which version of pgmemcache you use, pgmemcache 2.2.0 and newer support DEAD_TIMEOUT.  pgmemcache doesn't make any decisions about servers to use, it just passes the list of them and the set of behaviors to libmemcached (or omcache) which uses them.
Note that libmemcached state is not saved or shared accross sessions so libmemcached starts from "scratch" for every pg connection.  This means that if you open a new PG session for each client request you'll always end up accessing all servers before libmemcached decides to mark them dead.

Closing this ticket as it looks like there's no need for changes in pgmemcache.


Different object types in sections

Is there any way to put different type of objects to sections?
I mean:
Observable2DArraySection<SectionMetadata, FirstType>(
                metadata: (header: "", footer: ""),
                items: []
            ),
            Observable2DArraySection<SectionMetadata, SecondType>(
                metadata: (header: "", footer: ""),
                items: []
            )

You could wrap your object in an enum :)
enum Item {
  case article(String)
  case image(UIImage)
}

Observable2DArraySection<SectionMetadata, Item>

@srdanrasic Thanks a lot! I'll consider this way.


TabView tabs with an '&' in the title are cut off

Generally, the tabs of a TabView[XP] auto-resize to fit the text they contain, but if that text contains an & (which must be escaped as &&), the width of the & is not being counted, leading to the tab being slightly too narrow and the text being cut off with an ellipsis. I tracked the issue down to TabViewXP>>paint[Vertical]Label:on:in:. Looks like back in 2018 (167ee127d) it was changed to do a copyWithout: $&, which is perhaps more correct than doing nothing—it works for cases like Hello &World—but causes this problem with &&.
To get it right we need to scan through the string, removing ampersands but then protecting the immediately-following character, including if it is another ampersand. Easy enough, and I'm happy to do it, but—where would you suggest putting the method to do this? I looked around for other places that deal with this pattern, and found them in five different classes:

MenuPainter>>widthOfItemText:using:
Menu>>find:ifAbsent: (removing only those ampersands that won't be displayed is arguably more correct than removing all of them before comparing—or, if we want to be fuzzy, they should be removed from the search string as well, otherwise searching for 'a & b' won't find a MenuItem with description ' a && b', because it'll be comparing against 'a  b').
OwnerDrawnButton>>unadornedText (which, also, perhaps this should be pushed up to CommandButton? Or even higher?).
The abovementioned TabViewXP methods.
StaticText>>calculateExtent: (though, right now the copyWithout: $& is actually dead code—missing an assignment—and should be reviewed to make sure it's actually correct).

Given the widespread usage, it has to be either a method of String (but, what to call it?), or a class method somewhere (but, where?). Any thoughts?

I don't think the solution to these related issues should involve string manipulation, rather it requires correcting the underlying API usage.

MenuPainter>>widthOfItemText:using:

This paints the text using Canvas>>formatText:in:flags:, which wraps the Windows User DrawTextEx() API. Therefore for correctness it should really be using that API with the DT_CALCRECT flag to calculate the extent, not the Windows GDI GetTextExtentPoint32  function.
There is an existing wrapper Canvas>>textExtent:width:alignment: that is used to calculate the extent of multiline text within a specified width. This won't give the correct result for a single line (needs the DT_SINGLELINE flag). Some thought and experimentation is needed as to the design of a new/replacement Canvas API for this.

Menu>>find:ifAbsent: (removing only those ampersands that won't be displayed is arguably more correct than removing all of them before comparing—or, if we want to be fuzzy, they should be removed from the search string as well, otherwise searching for 'a & b' won't find a MenuItem with description ' a && b', because it'll be comparing against 'a  b').

This and the related/dependent methods should really be deprecated. Searching a menu by displayed text for programmatic purposes is not a good practice.

OwnerDrawnButton>>unadornedText (which, also, perhaps this should be pushed up to CommandButton? Or even higher?).

This is part of a contribution that is using it for it's own purposes. It looks like that is mostly because of the same issue with the Windows API used calculating the extent required for the text, except for one case. I'm not sure why there would be a general need for it, but I like the terminology.

The abovementioned TabViewXP methods.

This is the same as the MenuPainter, in that it should be using the correct API to calculate the extent.

StaticText>>calculateExtent: (though, right now the copyWithout: $& is actually dead code—missing an assignment—and should be reviewed to make sure it's actually correct).

Again this should use the DrawTextEx API to calculate the extent for single line form, as it currently does now for multi-line forms.

Here is a version of the (rather overlong) TabViewXP method with the issue fixed in place.
paintLabel: anInteger on: aCanvas in: aRectangle
	| inverted rcItem textExtent labelRect textOffset text tcItem imageIndex |
	tcItem := self getItem: anInteger.
	text := tcItem text.
	imageIndex := self hasIcons ifTrue: [tcItem iImage + 1] ifFalse: [-1].
	inverted := self isInverted.
	rcItem := aRectangle copy.
	inverted ifTrue: [rcItem bottom: rcItem bottom - 1] ifFalse: [rcItem top: rcItem top + 1].
	labelRect := RECT newBuffer.
	aCanvas
		formatText: text
		in: labelRect
		flags: ##(DT_SINGLELINE | DT_CALCRECT).
	textExtent := labelRect extent.
	imageIndex <= 0
		ifTrue:
			[textOffset := 0.
			labelRect := Rectangle center: rcItem center extent: textExtent]
		ifFalse:
			[| space imageExtent |
			imageExtent := self imageExtent.
			textOffset := imageExtent x + self imageTextGap.
			labelRect := Rectangle center: rcItem center
						extent: (textExtent isZero
								ifTrue: [imageExtent]
								ifFalse: [(textOffset + textExtent x) @ (imageExtent y max: textExtent y + 1)]).
			space := labelRect height - imageExtent y.
			(self imageManager imageListWithExtent: imageExtent)
				draw: imageIndex
				on: aCanvas
				at: labelRect left
						@ (labelRect top + (inverted ifTrue: [space // 2] ifFalse: [space - (space // 2)]))].
	textExtent > 0 ifFalse: [^self].
	labelRect := labelRect insetOriginBy: textOffset @ (inverted ifTrue: [-1] ifFalse: [1]).
	aCanvas
		formatText: text
		in: labelRect
		flags: ##(DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS)

Fixed by c2d6825 and preceding commits listed above.


Line: Rounding error on maxY

I create the following line:
      let line = new Line(
        { x: 600.51305, y: 69.7 },
        { x: 600.51305, y: 229.052 }
      );

After system.update(), the min/max auf the body have the following values:
minX: 600.51305
minY: 69.7
maxX: 600.51305
maxY:<PHONE_NUMBER>9999996

Why is maxY rounded to<PHONE_NUMBER>9999996?
Now, when i check, if on position { x: 600.51305, y: 229.052 } is a collision, the check returns false.
See example (see console output):
https://codesandbox.io/s/proud-snowflake-04p5nh?file=/src/App.tsx:352-459

My current dirty lifehack:
Instead auf using system.update():
        for (let body of this._collisionSystem.all()) {
            if (body instanceof Line) {
                body.minX = body.points[0].x
                body.minY = body.points[0].y
                body.maxX = body.points[1].x
                body.maxY = body.points[1].y
            }
            else {
                this._collisionSystem.updateBody(body)
            }
        }

the reason @tmanninger is that in javascript 229.052 - 69.7 + 69.7 ===<PHONE_NUMBER>9999996 :smiling_face_with_tear:
you implementation ignores padding and line position

Line has pos (x, y) and 2 points (start, end)
point[0] = { x: 0, y: 0 };
see https://github.com/Prozi/detect-collisions/blob/master/src/bodies/line.ts

@Prozi other question (i know this is not issue related):
Is there a way to update a Line object without adding it to the system object?
i will create a new Line object, update the attributes, check if there is a collision with the Line object. After this, the line object is not longer needed.
My current way:
1.) Create Line object
2.) Add it to system
3.) call system.update(line)
4.) Check collision with another object.
5.) Delete line from system.

@Prozi other question (i know this is not issue related): Is there a way to update a Line object without adding it to the system object?
i will create a new Line object, update the attributes, check if there is a collision with the Line object. After this, the line object is not longer needed. My current way: 1.) Create Line object 2.) Add it to system 3.) call system.update(line) 4.) Check collision with another object. 5.) Delete line from system.

you can either
skip step 3 (adding to system is same as updating body)
// this is the way to go
or
you can just try to do

Create Line
system.all().filter((body) => this.checkCollision(line, body))

but I dont recommend this unless you have a very small number of bodies as BVH is always faster for idk >100 bodies?

closing as [wont-fix] (the issue described in https://github.com/Prozi/detect-collisions/issues/47#issuecomment-1377062769 )


[Network] application-gateway create: Fix bug that cannot create without public IP

Description

Fix https://github.com/Azure/azure-cli/issues/15130
Testing Guide

Able to create appgw without specifying any public and private IP.
Able to create appgw with either public or private IP specified.
Able to create appgw with both public and private IP specified.

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change.
[Component Name 2] az command b: Add some customer-facing feature.

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

Network

I encountered this bug. Please tell me the ETA of the FIX and target version.

I encountered this bug. Please tell me the ETA of the FIX and target version.

Our next Official Release is going to be at 10/13/2020. The correspongding CLI version is 2.13.0


C:\Program Files (x86)\Local\resources\extraResources\lightning-services\php-8.1.23+0\bin\win64\php.exe

When I save this it looses many backslash, why so?
C:\Program Files (x86)\Local\resources\extraResources\lightning-services\php-8.1.23+0\bin\win64\php.exe

Whats the solution to Issue?

In JSON strings you must double up ever backslash.

Like This:

Please close your issue.


Sauce Docs CLI format proposal  - Draft v1 (don't publish!)

Thank you for contributing to the sauce-docs project!
A well described pull request helps maintainers quickly review and merge your change
Before submitting your PR, please check our contributing
guidelines, applied for this repository. Avoid large PRs, help reviewers by making them as simple
and short as possible.

Description

Motivation and Context

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Documentation fix (typos, incorrect content, missing content, etc.)

Checklist

[ ] I have read the contributing document.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

Proposed changes as per our Team Meeting last week.

@kim did you already merge this? I don't see any files associated with this PR/branch.

@kimsauce did you already merge this? I don't see any files associated with this PR/branch.

Nope, it's just a dummy page -- @sweeneyskirt-sl had asked me to make it so she can apply these formatting changes in our CSS doc. So it can be closed out.


ASP.NET MiddleWare - Why didn't the designers use an abstract base class or an interface?

[Enter feedback here]
I have just been through the documentation of ASP.NET Middleware. I can see functional similarities with IHttpModule and IHttpHandler of the .NET Framework.
The .NET Core Middleware requires us to implement a custom class with the following :

A constructor with takes RequestDelegate as the first parameter
A method InvokeAsync which takes in a HttpContext parameter and returns a Task object
Register the middle ware class in the Startup.cs by calling UseMiddleware method of IApplicationBuilder.

I would like to know the thought process that the designers in Microsoft went through to address this challenge.  It is my humble opinion that an interface definition would have better suited the purpose and made the entire process self documenting.
Consider the following hypothetical approach using using an interface  , say IMiddleWare
Hypothetical interface IMiddleWare

interface IMiddleWare
{
    void Init(RequestDelegate next);
    Task InvokeAsync(HttpContext context);
}

Skeletal client side implementation of IMiddleWare
class MyMiddleWare : IMiddleWare
{
    RequestDelegate _next;
    ILogger<MyMiddleWare> _logger;

    public MyMidleWare(ILogger<MyMiddleWare> logger)
    {
        //The ctor could accept any other dependencies that have been added to ServiceCollection
        _logger=logger;
    }
    void Init(RequestDelegate next)
    {
        _next=next;
    }

    async Task InvokeAsync(HttpContext context)
    {
      await context.Response.WriteAsync("My Middle ware Test 1");
    }
}

Registering the custom middle ware in the Startup.cs
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

           services.AddSingleton<IMiddleWare, MyMiddleWare>();
           services.AddSingleton<IMiddleWare, SomeOtherMiddleWare>();
        }

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

ID: 9898482c-fa54-7ce2-1716-d14fbe03990d
Version Independent ID: 3926c686-0ccc-f9fe-ca52-0134612a1623
Content: ASP.NET Core Middleware
Content Source: aspnetcore/fundamentals/middleware/index.md
Product: aspnet-core
Technology: aspnetcore-fundamentals
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

@sdg002  thanks for the thoughful question. I'm sure they had good reasons. The decision was made many years ago so it's not going to change.

See https://stackoverflow.com/questions/30442784/is-vnext-completely-convention-based-programming

Also see https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware/extensibility?view=aspnetcore-3.1

Thank you @davidfowl  for pointing me to the right resources.
I wasn't aware that Microsoft also had an interface based approach to develop custom middleware.
The experience with the interface based approach was so much more intuitive. Within minutes I was able to create a sample app.

Dependency injection through constructor parameters worked beautifully.
I was able to house my custom middle ware implementation in a separate class library with just 2 lines of initialization ( ServiceCollection.AddTransient and builder.UseMiddleWare)
In the end there was no code clutter, very clear separation of concerns and DI based injection

I am glad to see that Microsoft corrected its course and did the right thing. Thank you.


Cross device

Access chat history on other devices

I think it's not possible yet unless you manually Export/Import the chat. The reason, because this is client based app, so no data saved on the server.

is chat history not fetched from the API? hmmm

No, its not, the current API does not store any of your conversations.


memory/usage of cluster differs from sum of all nodes

Hello!
we are using kubernetes v1.3.0+52492b4 (openshift) and heapster: v1.3.0-beta.0
that's what we noticed:
memory/usage for a cluster greatly differs from the one for a sum of nodes
like (query from influx):
select (value) from "memory/usage" WHERE "type" = 'cluster' and time > now() - 1m and time < now()

returns<PHONE_NUMBER>6
and
select sum(value) from "memory/usage" WHERE "type" = 'node' and time > now() -  1m and time < now()

returns<PHONE_NUMBER>0
so, the question is  - is that a bug, or heapster\kubernetes caculates memoty usage of the whole cluster as something different from the sum of memory usage of all nodes?

IIRC, there was, at one point, some issues double-counting things at the node and cluster levels.  That should be fixed in master, I believe.
A heads up though -- you might have some issues running Heapster 1.3.0 against Kubernetes 1.3.0 -- the Heapster versioning doesn't match up with Kubernetes versioning, so Heapster 1.3.0 is quite newer than Kubernetes 1.3.0.  Heapster 1.3.0 is designed to work with Kubernetes 1.5 and Kubernetes 1.6.

(I'm closing this now, but feel free to re-open if you have further questions or if the latest Heapster does not solve your issue)

@DirectXMan12 should i re-create an issue or you can re-open it?
what i tried:

built and pushed current master branch - i got the same problem as here https://github.com/kubernetes/heapster/issues/1583
pushed v1.2.0-2 from here: https://hub.docker.com/r/openshift/origin-metrics-heapster-base/tags/ ( that should be the correct version, i imagine)

result (for 1.2.0, it doesn't differ from 1.3.0-beta really):
[root@development33-node-6 ~]# free -m
 total        used        free      shared  buff/cache   available
Mem:          32012        5558       12293        1767       14159       24024

so memory/used whould be smth like 19 gig, right?
but it shows 18:
select value/1024/1024 from "memory/usage" where  nodename='development33-node-6'  and type = 'node' and time > now() - 70s
>17944.68359375

sum(value) of type='pod' for a single host seems to be right, it equals stats which i got from docker(sum of total memory usage of all containers), but it differs from type = 'node':
11435.2109375Mib(all pods) vs 17944.68359375Mib(node)
same for cluster again:
select sum(value)/1024/1024 from "memory/usage" where   type ='node' and time > now() - 70s
>302423.734375
select value/1024/1024 from "memory/usage" where   type ='cluster' and time > now() - 70s
>589107.94140625

How does heapster collect its metrics? Especially for node and cluster level, pods seems to be ok.
Is there a way to run all its api calls manually? Maybe we have smth wrong with our kubernetes installation?

@DirectXMan12 you also mentioned some issues double-counting things at the node and cluster levels.
Can you point it please, i couldn't find it.
Maybe i can build an image from exact commit

How does heapster collect its metrics? Especially for node and cluster level, pods seems to be ok.

So, it looks like for the node, we get the memory/usage value directly from Kubelet/cAdvisor -- that's not one of the ones that we aggregate up from pods.  So whatever you're seeing, that's what Kubelet is telling us.

Is there a way to run all its api calls manually?

When configured to use the summary endpoint (the recommended way -- --source=kubernetes.summary_api), Heapster will hit the summary endpoint of each node using a GET.  That's served at http://$NODE_IP:10255/stats/summary.  Otherwise, it will repeatedly hit each of the stats endpoints, which is a bit more difficult to replicate yourself.  It's probably easiest to start looking at the data provided by the summary endpoint and check that it matches what you'd expect.

you also mentioned some issues double-counting things at the node and cluster levels

Specifically, at the cluster level, there was an issue at one point involving double-counting due to the way cAdvisor interprets what a "system container" is (a collection of cgroups), and the fact that the cluster-level metrics include system containers.  I would recommend against trusting the numbers produced as "cluster level" numbers.  The node-level ones should be fine, though

Sorry but I didn't get, I mean I am facing similar problem on my kubernetes cluster.
kubectl top showing something different than kubectl describe and more over, if I kubectl top pods and I sum all memory used by pods running on the same agent I don't match value showed by kubectl top nodes.

Note that the sum of all pods is not necessarily the memory usage on the node.  The sum of all pods should be at most the memory usage of the node, but the node should have other processes that are using memory on it as well.

@DirectXMan12 Hi I still observe that the sum of all worker nodes' memory usage > cluster mem usage. See https://github.com/kubernetes/heapster/issues/1897. I tried with heapster 1.3.0 and 1.4.2, the kubernetes version is 1.8.2


Request: Add way to only load a subset of channels and range of data

Sorry for the post if I am missing something. I am wondering if this functionality could be added so we don't have to load an entire recording.

For the Binary and HDF5 formats (NWB and KWIK), the data is memory mapped and only loaded upon request. So this is already implemented for those formats.
For the Open Ephys format, the data is all loaded at once, so this is a feature we'll want to add. We don't have a timeline for this yet, but we'll leave this issue open because it's important to do.

I've also just realized that Open Ephys format files are loaded all at once. This is a huge issue, as all my recordings (not Neuropixels, but still large) are in that format and therefore cannot be loaded on most machines.

@medengineer we should add this feature ASAP.
Regarding the implementation, I think we should follow the conventions used by SpikeInterface:
For a Recording object, querying the .continuous property will still return all of the data as it does currently, but we will add a get_traces() method which can take start_frame, end_frame, and channels arguments, e.g.:
traces = recording.get_traces(start_frame=0, end_frame=30000, channels=np.arange(10))

would load the first 30k samples for the first 10 channels into memory.

Thanks @jsiegle. I'm not proud of it, but I've worked around this in the meantime by loading the data in matlab (while keeping things int16 as much as possible), then dumping to a binary.

This feature is implemented for the Open Ephys format in the latest version (now available to install via PyPI). See the open_ephys.analysis README file for details.
The Open Ephys format loader is only compatible with data saved by v0.6.x of the GUI...let us know if you need to load data saved by an earlier version, and we can port the code to the archive branch.


MAIN B-20928

Agility ticket
Summary
Security wanted us to not use MD5 hashing, so transitioning to SHA256 for uploads and adding in the CheckSumAlgorithem when uploading to S3.
This also contains code to fix some flaky tests. Idk, man.
How to test

You'll need to go to your .envrc and uncomment export STORAGE_BACKEND=s3
Run direnv allow
Run aws-vault exec transcom-gov-dev -- make server_run
While that's building, make sure you are in the right AWS profile - transcom-gov-dev
This allows us to upload files to S3 instead of locally (docs here)
Log in as a customer, fill out all information and upload some orders
In your CLI, run aws-vault login transcom-gov-dev - this will open the AWS Console
Search for S3 and get in there
Find your buckets
There should be one that says transcom-gov-dev-app-devlocal-us-gov-west-1, click it
You should see your name/repo if the file uploaded correctly (ex. daniel.jordan_cn)
Click through and click the file you uploaded to where you see the Object Overview section
Scroll down and you should see an Additional checksums section
Confirm you see an additional SHA-256 checksum

Screenshots

Test coverage on client failed.
Last run: Thu 31 Oct 2024 03:52:44 PM UTC
Refer to this report to see coverage details for the client app.
Documentation for test coverage can be found at this link.

Seeing a diff in pkg/handlers/internalapi/uploads_test.go, think it went into int with 6c2c731

Yup. Correct. That was in INT but not in MAIN when I merged it. Updated it just now!


Extension ID renaming plan

In mid-May (when Joe gets back from vacation):

Publish new extension under Posit.shiny
Simultaneously, publish new version of Posit.shiny-python that removes all contribution points and depends on Posit.shiny, and rename to "[Deprecated] ..."
Unpublish the very old, long-deprecated rstudio.shiny-python so we don't have two deprecated extensions showing up in search

A good outline of the process: https://github.com/microsoft/vscode/issues/59918#issuecomment-483412662

Apparently we can also add a note in this thread for an official deprecation notice in the extension marketplace https://github.com/microsoft/vscode-discussions/discussions/1


Remove one too many a's in Aalborg University

And fix url link to Tiga project. Minor edit.

Good catch! Thanks.


Hardware design rebuild issue

Hi, when I tried to rebuild the hardware design, there comes the error like follows.

As well, if I just intended to launch the Vivado project instead both, there comes error like this.

I really don't know what I can do with that? Could you do me a favor?

Hi, when I tried to rebuild the hardware design, there comes the error like follows.

As well, if I just intended to launch the Vivado project instead both, there comes error like this.

I really don't know what I can do with that? Could you do me a favor?


Daedalus repeatedly fails to run in a QubesOS Linux virtual machine

What has happened repeatedly now, is after an install or an update, it will run for a while, typically until it is almost synced, when there will be an error message that the daemon has "failed". After that, any attempt to restart it fails immediately until the next update.
In the attached screenshot, Daedalus is installed in the /rw partition, is already mostly synced (within a few %) and there is 17G free in that partition, yet it still throws an error about needing "at least 2G" of disk space.

Hello @clayt0nk!
Regardless of the partition/drive on which you install Daedalus, it downloads the blockchain data (which requires a lot of space) on your main partition/drive. So, in this case, it doesn't matter that the drive on which you have installed Daedalus has 17G of free space. Please free up some space on your main partition/drive and that will fix the issue.
Thanks!

The partition I have installed to is /rw, and this is my main partition. It is also the only partition a non-root user can write to on this Linux box (without invoking sudo, and let's hope Daedalus is not caught doing that....) so all of Daedalus activity should be confined to /rw/, as confirmed by above screen shot. There is no shortage of space where the blockchain is being written, and in fact most of it is already there.

This issue was fixed in the recent Daedalus Mainnet releases. Please update to the latest Daedalus Mainnet version.


how to fix it

github.com/tomnomnom/anew
go/src/github.com/tomnomnom/anew/main.go:44:3: non-bool lines[line] (type struct {}) used as if condition

Me too getting this error

as i can see it's an issue in code bcz issue exist just after the update

This should be fixed now, sorry!


Travis-CI fails for Python 2.7 and 3.4

I'm trying to add something to Hyper and I'm following the contribution guide and getting testing working before making the changes. I have Travis-CI already set up with my GitLab account, so I just enabled it for my fork.
When I run it (even without any changes), Python 2.7 and Python 3.4 fail:
lawnmowerlatte / hyper > Build 3

3.1 Python: 2.7

pkg_resources.VersionConflict: (pytest 2.6.4 (/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages), Requirement.parse('pytest>=2.7.0'))
Coverage.py warning: No data was collected. (no-data-collected)

3.2 Python: 2.7

raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.VersionConflict: (pytest 2.6.4 (/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages), Requirement.parse('pytest>=2.7.0'))
Coverage.py warning: No data was collected. (no-data-collected)

3.3 Python: 3.4

pkg_resources.VersionConflict: (pytest 2.6.4 (/home/travis/virtualenv/python3.4.2/lib/python3.4/site-packages), Requirement.parse('pytest>=2.7.0'))
Coverage.py warning: No data was collected. (no-data-collected)

3.4 Python: 3.4

pkg_resources.VersionConflict: (pytest 2.6.4 (/home/travis/virtualenv/python3.4.2/lib/python3.4/site-packages), Requirement.parse('pytest>=2.7.0'))
Coverage.py warning: No data was collected. (no-data-collected)

I think this is related to travis-ci 5635. I was able to fix the problem by specifying pytest>=2.7 in test_requirements.txt. (See lawnmowerlatte / hyper > build 4I'll submit a PR.

Fixed, merged and closed


fix(go.mod): upgrade sonic pkg

What type of PR is this?
fix

What this PR does / why we need it (English/Chinese):
en: fix(go.mod): upgrade sonic pkg
zh: 升级一下 sonic 依赖包以解决报错问题

Which issue(s) this PR fixes:

Fixes #6

rebase一下吧，base落后太多了


Vtune sourcemap (cleaned up to account for 15.8)

Generates diagsession traces, still unstable on source file/line number information because need to account for symbols generated by setup.py-based builds.

Is this ready to merge? Or are you still working on changes for this PR?

This is ready to merge on to vtune branch.  Thanks!


Feature Request

Add a section to provide a Thumbnail?

I might add this. It's already supported in the package I'm going to implement. Won't add automatic thumbnail generation though, but will look into specifying a "static" one in the config file, like descriptions or titles work now.

ah yea that'll work great, would it just be a filepath then?

Yep

Nice, i'll close the issue then.


Auto commit should be off in transactions

Commits for a function bound with transaction(..) should only occur when the function context is exited, if the user wants to change this behavior, or commit mid execution, they can specify a connection argument on the function.

Codecov Report

Merging #26 (bad907c) into main (9924b8f) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main      #26   +/-   ##
=======================================
  Coverage   99.89%   99.89%
=======================================
  Files          25       25
  Lines         950      963   +13
=======================================
+ Hits          949      962   +13
  Misses          1        1

Impacted Files
Coverage Δ

dinao/backend/base.py
99.03% <100.00%> (+0.05%)
:arrow_up:

dinao/binding/binders.py
100.00% <100.00%> (ø)

tests/binding/mocks.py
100.00% <100.00%> (ø)

tests/binding/test_binders.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9924b8f...bad907c. Read the comment docs.


Trusted Types - Adopt renderCodiconAsElement

This is part of #103699 and tackles the new deprecated renderCodicon function which we should replace with renderCodiconsAsElement

[ ] src/vs/editor/contrib/codelens/codelensWidget.ts @jrieken
[ ] src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts @eamodio
[ ]  src/vs/base/browser/markdownRenderer.ts @eamodio

fyi @annkamsk

Done and dusted. Also renamed renderCodiconsAsElement to renderCodicons - since the old function is gone


45 Fan Support Helper Tests

Fixes #45
Updated the Gradle build configuration to include support for Pi4J Micronaut. Added the fan control feature with support for turning on, turning off, and setting the fan speed using PWM.
Created FanController.java to provide HTTP endpoints for fan control and FanHelper.java to handle the logic for fan operations, including starting, stopping, and adjusting speed.
Implemented methods: start() to start the fan at full speed, stop() to stop the fan, and setSpeed(int speed) to set the fan speed using PWM with a value range of 0 to 1024.

Looks like FanController is missing (probably should be there under outputdevices?) The yml configuration for a fan is also missing.


[Declarative] Specify multiple tests description files

Motivation

The user is limited to specify multiple tests within a single description file.
Feature
Allow to specify multiple description files, as well as single(/multiple) path(s) for directories containing multiple tests description files.

Alternatives

Additional context

/assign


Add a save_weights_and_metadata_only option to the Trainer

What does this PR do?
When save_weights_only is specified to the Trainer, only the weights are saved and no metadata or integrations are saved. However, when doing inference it is often necessary to have the metadata along with the weights. The only current way to get metadata and integrations is to save everything in the state_dict (including the very large optimizer state). This PR enables saving the weights and the metadata and integrations ONLY, so you csan save an inference-friendly checkpoint without the extra heft of the optimizer or other (not necessary for inference) state fields.
What issue(s) does this change relate to?
fix CO-2226

@mvpatel2000 the issue with always including metadata is that its kind of an API change. If there is code out there relying on a weights only checkpoint only having one key. That being said, it may be worth making that change, not sure.

@mvpatel2000, @dakinggg, ok fixed to add metadata saving to the save_weights_only option


Change the direction of the connecting wire

Hi developers, I really appreciate you developing this plugin.
My question is
We just specify the starting point and the ending point, and NodeGraph will automatically draw it,But I have to specify the direction and position of the lines and the nodes.
I expected the result：

The result:

Can I change the position and orientation of nodes and lines? What should I do?

My Data source,and other config
Data source : node graph api
Data: Use Django to send data to the Node Graph API

My Data

My Code

import json

# Create your views here.
from django.http import HttpResponse
from django.db import connection
from datetime import date, datetime

class ComplexEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        elif isinstance(obj, date):
            return obj.strftime('%Y-%m-%d')
        else:
            return json.JSONEncoder.default(self, obj)

def fetch_graph_fields(request):
    nodes_fields = [{"field_name": "id", "type": "string"},
                    {"field_name": "title", "type": "string"},
                    {"field_name": "mainStat", "type": "string"},
                    {"field_name": "arc__failed",
                     "type": "number", "color": "red"},
                    {"field_name": "arc__passed",
                     "type": "number", "color": "green"},
                    {"field_name": "detail__role",
                     "type": "string", "displayName": "Role"}]
    edges_fields = [
        {"field_name": "id", "type": "string"},
        {"field_name": "source", "type": "string"},
        {"field_name": "target", "type": "string"},
    ]
    result = {"nodes_fields": nodes_fields,
              "edges_fields": edges_fields}
    return HttpResponse(json.dumps(result))

def fetch_graph_data(request):
    sql = 'select * from jsonData'
    cursor = connection.cursor()
    cursor.execute(sql)

    nodeData = cursor.fetchone()

    nodes = []
    edges = []
    for i, node in zip(range(1, 38), nodeData):
        nodeDict = json.loads(node)
        nodes.append(nodeDict)
        if i == 37:
            continue
        data = {"id": "%s" % str(i),
                "source": "%s" % str(i),
                "target": "%s" % str(i + 1)}
        edges.append(data)

    result = {"nodes": nodes,
              "edges": edges}
    return HttpResponse(json.dumps(result))

def check_health(request):
    return HttpResponse("API is working well!")

Hi @Ehsan-joe,
No, you won't be able to do this. This should be handled by Node Graph Panel, not this data source.
BTW, at the moment, the panel does not support the orientation and position of the nodes and edges via the given data.

well, thank you

Excuse me, do you know if there is a plug-in that fits my situation

You can try the Diagram plugin  which uses Marmaid Js syntax. You've to transfer the data to this syntax in your app and then address it to the plugin to visualize it. (The plugin can take diagram definition via API too).
Another one is the Flowcharting plugin but I found it hard to take diagram definition via API in this one.

I have tried the Diagram Plugin, Marmaid Js cannot change direction halfway,
Let me try this Flowcharting plugin.
Thank you very much!


Issue#93#1439

Fixed issue shapes, Creator - Web design #93 #1439  added the following code file and resources
modules\shapes\images_and_icons\image1_1439.jpg
modules\shapes\images_and_icons\image2_1439.jpg
modules\shapes\images_and_icons\image3_1439.jpg
modules\shapes\images_and_icons\image4_1439.jpg
modules\shapes\images_and_icons\image6_1439.jpg
modules\shapes\images_and_icons\image7_1439.jpg
modules\shapes\shapes.90_1439_AbrarFaizMohammed.html

Heartfelt Thanks for Your Contribution to Our Open Source Project!
Dear @AbrarFaizMohammed (Abrar Faiz Mohammed),
I trust this message finds you in good health and high spirits. I am reaching out with a heart full of gratitude for your recent contribution to our open source project. Your dedication has not only elevated the functionality of our project but has also exemplified the collaborative spirit that lies at the core of thriving open source communities.
A heartfelt congratulations are in order for your exceptional work! Your commitment and expertise have played a pivotal role in the success of our project, and we consider ourselves truly fortunate to count you among our community members.
I must extend my sincere apologies for the delay in responding to your pull request. Your patience and understanding during this time are immensely appreciated. As our project continues to grow, we acknowledge the imperative need to enhance the quality and response time for contributions. To address this, we've kickstarted a call for maintainers and reviewers who can help us uphold the high standards of our project and ensure swift responses to pull requests.
Your involvement and insights would be invaluable in this initiative. If you, or someone you know, is interested in taking on a more active role in the project, please don't hesitate to reach out. We firmly believe that with a robust team of maintainers and reviewers, we can elevate both the quality of the project and the speed of our responses.
On an exciting note, I am thrilled to share that we have activated the sponsorship button for our project. This development allows supporters like yourself to contribute to the sustainability and growth of the project. Your ongoing support, whether through code contributions or sponsorship, is genuinely appreciated.
Once again, congratulations on your outstanding contribution, and thank you for being an indispensable part of our open source community. We eagerly anticipate your continued collaboration and shared success.
Best regards,
Ntem Kenyor K.
Lead
Kwickerhub


Zig doesn't work with relative paths

This doesn't work
$mkdir /play
$ cd /play
$ wapm install topolarity/zig
$ zig build-exe ./example.zig

But this work:
zig build-exe /play/example.zig

Not sure if it's related:
mkdir /play
cd play
ls .. # this doesn't show the root. I guess is intended?

Yeah we need to talk about this one on zoom. It's because working directories need some special changes due to the limitations of the runtime - in the short term either:

zig can use the PWD environment variable for relative path
(or)
we can set the chroot flag but that would need to be added to wapm.toml
(or)
refactor wasmer runtime so that it handles working directories better


Conditional tabs integration

Added integration for  "show_on_cb" option already present in CMB2 field options to enable conditional tabs.

I have tested the branch and have some problems with the implementation.

You need to have the "show_on_cb" specified on your tabs or you will get the following notices.

Notice: Undefined index: show_on_cb in C:\xampp\htdocs\dev1\wp-content\plugins\my-plugin\includes\cmb2-tabs\inc\cmb2-tabs.class.php on line 67
Notice: Undefined index: show_on_cb in C:\xampp\htdocs\dev1\wp-content\plugins\my-plugin\includes\cmb2-tabs\inc\cmb2-tabs.class.php on line 79

On page load the tabs styling doesn't seem to be loaded correctly.
https://ttprivatenew.s3.amazonaws.com/pulse/amex/attachments/13249126/TinyTake23-04-2020-02-32-33.mp4


How to use the plugin with phonegap build

How to use the plugin with phonegap build
I have tried to attach the plugin as below
gap:plugin name="de.cyberkatze.phonegap.plugin.PdfViewer" source="https://github.com/cyberkatze/pdfViewer"
gap:plugin name="de.cyberkatze.phonegap.plugin.PdfViewer" source="plugins.cordova.io"
but its not working
so kindly tell how to fix it to attach the plugin with phonegap build

subscribe - would be also intresting for me - thanks

I'm sorry guys, But i don't know how can i do it... :(


Implemented mirror functionality to overlay

Did you mean to revert the commit?

Did you mean to revert the commit?

Made a mistake with tags and reverted it incorrectly, fixed it now.

Please fix formatting - you can run cargo fmt to automatically do it.
The easiest way is to turn on format on save in your IDE.


tbl doesn't have to_pandas

Sorry if missing something obvious; cell 6 in this: https://github.com/lancedb/lancedb/blob/f544c5dd31f0cd25483a2848009463546aadb964/notebooks/youtube_transcript_search.ipynb doesn't work for me because tbl is of type LanceTable.
This works (lol):
tbl.to_lance().to_table().to_pandas()

A minor comment is that the previous cell is grumpy if you clone the repo and run the notebook because the dataset already exists. Might be better to remove the dataset from the repo so clone and run works more smoothly

I think I was translating between Lance APIs and this new repo and carried a typo over. Good catch thanks for the issue!

Ok just made another release. The missing method was in main but not released. In the notebook I also just added an rm -rf on the dataset directory so there's no conflict.

Closing as completed. Thanks again for the feedback!


No longer force showing input box for screenreader

This PR fixes #120176

The change looks great, getting rid of the workaround. Just make sure to verify with the screen reader community on Linux that this does not introduce regressions. I verified all is good on Win and macOS. Thanks for working on this.
https://github.com/microsoft/vscode/issues/94360

@jvesouza @joanmarie would you be willing to try out my branch here to see if the problem has been resolved with the move to Electron 12 (aka a newer version of Chromium)?

I'm gonna merge this in so insiders can pick it up so it'll be easier for you to test.

I tested and have some observations:

When I press the 'ctrl+,' keys to activate the navigation settings, orca reads the following information:
'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback'
To be honest, I have no idea what that information means.

In the dialog for choosing what should be synchronized, the 'sign in & turn on' button can only receive the focus if I use shift + tab, never with the tab key. I don't know if this is expected behavior.

After I click on the 'sign in & turn on' button, a list appears for me to choose whether I want to sync insiders or stable. I can choose any of them but there is no button for confirmation. It seems that I can only process the choice if I press the enter key.

@jvesouza thanks a lot for trying it out.

Ctrl + , -> navigates to the setting page, and it seems like the last focus you had was on the editor font, thus the editor font setting gets read. If you think this is not expected can you please file a new issue. But this feels unrelated to this issue.
No, this sounds like a bug. @TylerLeonhardt would you like me to create a new issue for this? It sounds like the button can only be focused by shift + tab
This is actually as expected. We simply do not render a button then. Do you find this confusing? Should we mention it in the aria label. We expect the user to press the enter key.

No, this sounds like a bug. @TylerLeonhardt would you like me to create a new issue for this? It sounds like the button can only be focused by shift + tab

Yes please!

@TylerLeonhardt created this one https://github.com/microsoft/vscode/issues/122546


v0.7.0-dev - Some docs and Waves.attach() updates.

I've removed .waves-block as the default added class from Waves.attach(). It's not necessary and is difficult for the user to remove if they want to add no extra classes (since [] and '' evaluate to false and would be overridden).
The classes parameter from Waves.attach() now accepts both strings and arrays, making it simpler for the user to add a single class in the form of a string.
I've also updated the API documentation to match the current state of Waves.attach().

Hmm, yeah. You right. Thanks!


[Commune AI] [COMAI] Add support for Commune AI blockchain and COMAI token (Mainnet)

Short intro:
Commune AI is a protocol that aims to connect all developer tools into one network, fostering a more shareable, reusable, and open economy. It follows an inclusive design philosophy that is based on being maximally unopinionated. This means that developers can leverage Commune as a versatile set of tools alongside their existing projects and have the freedom to incorporate additional tools that they find valuable.
Team Intro: Salvatore Vivona, Luca Vivona
Team Email:
Whitepaper: https://ai-secure.github.io/DMLW2022/assets/papers/7.pdf
Social links:
✅ Twitter: https://twitter.com/communeaidotorg
✅ Telegram: https://t.me/communecommunity
✅ Discord: https://discord.com/invite/A8JGkZ9Dmm
✅ Github: https://github.com/commune-ai

If you want to integrate a chain, you would need to provide

Blockchain integration:
Name: Commune AI
Type: Substrate
Blockchain provider: wss://commune-api-node-1.communeai.net
Metadata:
✅ Network name: commune
✅ Native unit: C
✅ Decimals: 9
✅ Address Prefix: 42
logo:

explorer: https://explorer.communeai.net/#/explorer/

Asset integration:

name: COMAI
Origin blockchain: Commune AI
Available in other: wCOMAI (ETH), wCOMAI (SOL)
Metadata: network name: commune, symbol: C, decimal: 9
logo:

transferable: Yes
Exchanges:
✅ Uniswap: https://app.uniswap.org/swap?outputCurrency=0xc78B628b060258300218740B1A7a5b3c82b3bd9f&chain=mainnet
✅ MEXC: https://www.mexc.com/exchange/COMAI_USDT
✅ CoinEx: https://www.coinex.com/en/exchange/comai-usdt

DBC token on Coingecko: https://www.coingecko.com/en/coins/deepbrain-chain

Account has C: 5GjKMbB5AGibM3W2pNY6H9rLMTCkBMTvKMkZhPLJGdo1shMt

just want to make sure: ticker for token is COMAI (not C, it is only the symbol, metadata)

just want to make sure: ticker for token is COMAI (not C, it is only the symbol, metadata)

Thanks you, @anonbitco!


RVO Priority,How to save priority data to Obstacle

Or if I can get its Entity through IntPtr

My fault, I need the unit to have priority to avoid, this is about the obstacle query
Then again, is it possible that obstacles also deal with priorities


Operator() does not respect tensor order convention

Qiskit uses little-endian convention for representing qubit order: q2 ⊗ q1 ⊗ q0
When doing unitary simulation corresponding to a gate/circuit (i.e. to obtain "the gate matrix") you have to make an implicit assumption about how the gate is applied. In my opinion the gate alone does not have a matrix, only when applied does it make sense to describe it via a matrix. For example, in the little-endian convention:

CX q1, q0

     ┌───┐
q_0: ┤ X ├
     └─┬─┘
q_1: ──■──

array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 0., 1.],
       [0., 0., 1., 0.]]

CX q0, q1

q_0: ──■──
     ┌─┴─┐
q_1: ┤ X ├
     └───┘

array([[1., 0., 0., 0.],
       [0., 0., 0., 1.],
       [0., 0., 1., 0.],
       [0., 1., 0., 0.]])

The current assumption of Operator(gate) does not fit the little-endian convention. It assumes the gate to be applied "from" q0, "to" q1. The assumption should be reversed I think as you want to apply from the MSB to the LSB. If we do this it will have the nice side effect that CNOT matrix will look like the textbook version (if there is such a matrix in the absence of operands).
This became very confusing for me when I was trying to understand why the heck QFT is not working like a normal Fourier transform. A correct Fourier transform is supposed to transform state |1> -> |0> + i |1> - |2> - i |3>.
But simply doing this we get:
qft = qk.circuit.library.QFT(2)
one = qk.quantum_info.Statevector.from_int(1, dims=(2,2))
one.evolve(qft)

>> Statevector([ 0.5+0.j,  0.5+0.j, -0.5+0.j, -0.5+0.j], dims=(2, 2))

I can fix this by ensuring that the QFT is applied "from" the MSB "to" the LSB.
qc_qft = qk.QuantumCircuit(2)
qft = qk.circuit.library.QFT(2)
qc_qft.append(qft, [1, 0])  # Here I explicitly set the order, but should not have to.

print(qc_qft)

>>
     ┌──────┐
q_0: ┤1     ├
     │  qft │
q_1: ┤0     ├
     └──────┘

one.evolve(qc_qft)  # now this is correct.
>> Statevector([ 0.5+0.j ,  0. +0.5j, -0.5+0.j , -0. -0.5j], dims=(2, 2))

i totally agree.

@chriseclectic pointed out something and I thought some more, and I think what I'm proposing here is not feasible unfortunately. Otherwise we would get different results from:
circ.append(CXGate(), [a, b])
circ.append(Operator(CXGate()), [a, b])

So in little-endian convention we cannot define Operator(CXGate()) to be
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 0., 1.],
       [0., 0., 1., 0.]]

because CXGate already implicitly defines an ordering of its wires. CX is a 2-qubit gate - 0th qubit must be control and 1st qubit must be target. If we change this definition then we would have to write cx(target, control) everywhere, which is not what we want. So I think in little-endian we are stuck with
Operator(CXGate()) =
array([[1., 0., 0., 0.],
       [0., 0., 0., 1.],
       [0., 0., 1., 0.],
       [0., 1., 0., 0.]])


Add load event

The load event is fired when a resource and its dependent resources have finished loading

See: https://developer.mozilla.org/en-US/docs/Web/Events/load
function render({ props, state }) {
  const {
    src
    } = props;

  const handleLoad => () => console.log('resource loaded');

  return (
    <figure role='img'>
      <img role='presentation'
           src={src}
           onLoad={handleLoad}/>
    </figure>
  );
}

Nice :) I was waiting for someone to ask about those events. Not sure why CI failed, going to just run it again.

All errors are related to Chrome on Windows NT.

Triggered a Circle-CI rebuild

:+1: awesome.

Triggered a Circle-CI rebuild

Looks like it needs a rebase on master

Yes, I forgot about it.

Sweet thanks I'll push out at version when I get to my laptop.


Add player-rating class

Add PlayerRating to the player/models
Declare Rating as IntegerChoices
Add tests for PlayerRating  at player/tests
Depends On #21 #29
closes #32

Please review only the second commit.

I decided to create another app for player_rating rather then just add it to the existing player app.


Add support for all Font Awesome website icons in profile

There, I said it. Best of luck! :smile:

Experimenting with something on this. On my own profile I have a profile item that looks like this:
/fa-magic-wand-sparkles/Working on [OMG.LOL](https://omg.lol)
If a profile item begins with a string encased in forward slashes (and if that string begins with fa-) then that icon will be used. Only works with fa-solid icons, which are what's in Font Awesome's free icon set. It's a start!

This breaks the headers, for now...

Also, for the future, can you let us decide where, in our text, to add the free-icons ?

I'll follow up with you on Discord on this!


Better docs for teardown, async_teardown

The documentation should note that these are meant to be overloaded for user defined types and not called directly.

Actually the docs are fine


Fix local execution payload value challenge won log

PR Description
Currently logs local value on a place of bid value and vice versa. Plus readability improved
Fixed Issue(s)

Documentation

[x] I thought about documentation and added the doc-change-required label to this PR if updates are required.

Changelog

[x] I thought about adding a changelog entry, and added one if I deemed necessary.

moreover do we want to allow >100% on the challenge config? we have NEVER but does make any sense to configure something like 150%?
I'm worried about user errors, that may interpret the configuration in a wrong way. We could prevent those values or at lest print a warning saying "is this really what you intended to do?"

@tbenr
I have this draft for docs, I think it's clear or could be improved to be clear. I think users are smart and they really may need >100%
### validators-builder-bid-compare-factor

<!--tabs-->

# Syntax

```bash
--validators-builder-bid-compare-factor=<INTEGER>

Example
--vvalidators-builder-bid-compare-factor=50

Environment variable
TEKU_VALIDATORS_BUILDER_BID_COMPARE_FACTOR=50

Configuration file
validators-builder-bid-compare-factor: 50

Changes validator's builder bid compare factor. The default value is 100 (100%).
Since Capella fork local execution payload contains its value, the validator client could use it over builder bid when it's higher or equal. Operator could override the factor, in this case 50 means builder bid is considered at 50% value, so it should be at least twice bigger to win over local payload and used for block production, contra 200 would mean use builder bid over local payload even if it's smaller up to 2 times.

@zilm13
``bash
--vvalidators-builder-bid-compare-factor=50
``

--validators-builder-bid-compare-factor=50

thanks, and we need a section with NEVER also

@zilm13 what about closing this in favour of #6974


Force MegEngine version 1.8.2

This solves an issue with newer versions of MegEngine (https://github.com/megvii-research/CREStereo/issues/13)

Thanks for your contribution!


add option for a single /data volume and support TOPAZ_DIR

allow config.yaml path to be overridden by TOPAZ_DIR
and add /data to give folks a named option to use a single volume for config, certs, and db.
practically speaking, many customers are going to need to run topaz with a single data volume rather than 4
in ECS, it is only possible to mount one EBS volume per task
in AKS, there's often a limit of 8 volumes per HOST, and it's hard to justify topaz using 4 of those slots

As this is on the model-v2 branch I think this will work, but to merge into main later this will need to be changed to set the correct container environment variables used in the latest version.
In main, the default configuration template environment variables have changed to allow separating easily the directory and certs folders  - see https://github.com/aserto-dev/topaz/blob/main/pkg/cc/config/templates.go#L49

Cool I will reformat this to work against main


proposal: Go 2: indentation in multiline raw string literals

At go 1.13 version and earlier raw literal can be multiline. However there is no way to indent continuation lines without adding spare spaces to it, e.g.
// printing help message on program parameters, for example
func printHelp() {
    fmt.Println(`Usage:
    ./program server [arg1]
    ./program client [arg2]`)
}

in this case .program... is indented compared to Usage by 4 spaces, which makes sense, though code is not indented nicely (we'd like Println args all be indented further). However if fmt.Println is enclosed in some block (e.g. if) during refactoring, even this indentation may change, which is not good.
Suggestion
It is possible (like in Scala) introduce the rule, that if continuation line of the raw literal starts with |, then spaces before it are skipped. So the snippet could be rewritten:
    fmt.Println(`Usage:
            |    ./program server [arg1]
            |    ./program client [arg2]`)

Here we have normal 8 spaces indentation for arguments (or we can align them with the opening parenthesis if such style is preferred).
(if the line should start with | character we simply shall use two of them)
This is slightly breaking change so we may want introduce "extended" version of raw literal, for example enclosed in double backticks, e.g.
    fmt.Println(``Usage:
            |    ./program server [arg1]
            |    ./program client [arg2]``)

UPD as both versions are "breaking" as pointed out by colleagues below, I think we'll need to use "triple-tick"*. Suggesting double tick I just thought no one will use it for empty literal... But of course this couldn't be granted... E.g.
    fmt.Println(```Usage:
            |    ./program server [arg1]
            |    ./program client [arg2]```)

Though I understand it is slightly against the idea of not having two syntaxes for almost same things...

This basic idea is discussed in various ways in #32590.  Closing this issue as a dup of that one.


Tutorial Questions

Hey All,
What are the questions that we want to see folded into a tutorial series for ISOFIT?

Just to get started, below is an example list of bite-sized tutorials which could make ISOFIT more accessible to new users.
I came up with this list in 15 minutes, so don't take it too seriously. It has not been prioritized or well-thought through; I merely generated this list to kick-start brainstorming on this topic. I am aware that some of these topics are already covered in the existing documentation, but it seems fine for tutorials to overlap with more formal documentation resources. I am also aware that it would take a LOT of work to generate all these tutorials.

Getting Started:

Quickstart: How to correct EMIT L1B data using default options?
Input Data: How to prepare input data for use in ISOFIT?
Output Data: How to analyze and interpret the results?

Configuring ISOFIT: How to configure the forward model?

Config File: How is the configuration file structured?
Radiative Transfer Engines: How to pick and configure the RT engine?
Surface Priors: How to create a surface model?
Atmosphere Priors: How to configure the atmosphere parameters?
Aerosol Models: How to choose and configure aerosol options?

Interpreting ISOFIT Output:

Visualizing Output: How to plot and inspect the reflectance values?
Uncertainty Analysis: How to inspect and interpret the uncertainties?
Parameter Sensitivity Analysis: How to understand the impact of different parameters?

Common Problems:

NetCDF Support: How to prepare input data in NetCDF format?
Optimizing Performance: How to speed up ISOFIT runs?
Cloud Masking: How to detect and handle clouds in the input data?
Data Validation: How to compare ISOFIT results against ground truth measurements?

Advanced Use Cases:

Coastal and Aquatic Applications: How to use ISOFIT over water?
Glint Mode: How to use ISOFIT in the presence of specular reflections?
How to characterize wildfire smoke? (aka, How to reproduce Brodrick+ 2022?)
How to retrieve water content? (aka, How to reproduce Bohn+ papers?)
How to calibrate EMIT? (aka, How to reproduce Thompson+ 2024?)
Integrating ISOFIT with Python Scripts: How to use the Python API?

New Missions:

How to run ISOFIT on data from new instruments?
Noise Models: How to create the instrument noise models?
Instrument Calibration: How to evaluate spectral and radiometric calibrations?

Contributing to ISOFIT

Modifying Code: How to propose a new feature or bug fix?
Documentation: How to prepare a new tutorial?
Testing: How to run the examples and unit tests?

Wow! now that's a list :)
I think content-wise, I'd double tap these as essential, though I can see some ways to collate/collapse some of them together.

Getting Started:

Quickstart: How to correct EMIT L1B data using default options?
Input Data: How to prepare input data for use in ISOFIT?
Output Data: How to analyze and interpret the results?

Configuring ISOFIT: How to configure the forward model?

Config File: How is the configuration file structured?
Radiative Transfer Engines: How to pick and configure the RT engine?
Surface Priors: How to create a surface model?
Atmosphere Priors: How to configure the atmosphere parameters?
Aerosol Models: How to choose and configure aerosol options?

Interpreting ISOFIT Output:

Visualizing Output: How to plot and inspect the reflectance values?
Uncertainty Analysis: How to inspect and interpret the uncertainties?
Parameter Sensitivity Analysis: How to understand the impact of different parameters?

New Missions:

How to run ISOFIT on data from new instruments?
Noise Models: How to create the instrument noise models?
Instrument Calibration: How to evaluate spectral and radiometric calibrations?


Zip deploy fails with Bot Sample

Repro steps.
project built successfully on dev machine but failed on Azure.
Build and deploy according to the following URL.
https://docs.microsoft.com/ja-jp/azure/bot-service/bot-builder-tutorial-basic-deploy?view=azure-bot-service-4.0&tabs=csharp
The default code succeeded.
However, just changing the argument of CreateActivityWithTextAndSpeak function as below,az webapp deployment failed.
before
Bots/EchoBot.cs
        protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
        {
            foreach (var member in membersAdded)
            {
                if (member.Id != turnContext.Activity.Recipient.Id)
                {
                    await turnContext.SendActivityAsync(CreateActivityWithTextAndSpeak($"Hello and welcome!"), cancellationToken);
                }
            }
        }

after
Bots/EchoBot.cs
        protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
        {
            foreach (var member in membersAdded)
            {
                if (member.Id != turnContext.Activity.Recipient.Id)
                {
                    await turnContext.SendActivityAsync(CreateActivityWithTextAndSpeak($"いらっしゃいませ。テストボットです。"), cancellationToken);
                }
            }
        }

Development environment
Visual Studio: 2019 Community 16.4.0
Azure CLI: azure-cli-2.0.78
Project structures.
https://github.com/tfukumori/BotDeployBugReproduce
The log/error given by the failure.
IDs are masked.
> az webapp deployment source config-zip --resource-group "<resource-group-name>" --name "<name-of-web-app>" --src "code.zip"
Getting scm site credentials for zip deployment
Starting zip deployment. This operation can take a while to complete ...
Deployment endpoint responded with status code 202
Configuring default logging for the app, if not already enabled
Zip deployment failed. {'id': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'status': 3, 'status_text': '', 'author_email': 'N/A', 'author': 'N/A', 'deployer': 'Push-Deployer', 'message': 'Created via a push deployment', 'progress': '', 'received_time': '2020-01-02T11:29:44.7315577Z', 'start_time': '2020-01-02T11:29:45.0816714Z', 'end_time': '2020-01-02T11:30:39.1000054Z', 'last_success_end_time': None, 'complete': True, 'active': False, 'is_temp': False, 'is_readonly': True, 'url': 'https://<name-of-web-app>.scm.azurewebsites.net/api/deployments/latest', 'log_url': 'https://<name-of-web-app>.scm.azurewebsites.net/api/deployments/latest/log', 'site_name': '<name-of-web-app>', 'provisioningState': None}. Please run the command az webapp log tail

Debug your Azure website remotely.
There is no Azure website because the offending code has not been deployed.
Mention any other details that might be useful.
If the following code, the deployment was successful.
Bots/EchoBot.cs
        protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
        {
            foreach (var member in membersAdded)
            {
                if (member.Id != turnContext.Activity.Recipient.Id)
                {
                    await turnContext.SendActivityAsync(CreateActivityWithTextAndSpeak($"こんにちは"), cancellationToken);
                }
            }
        }

I was able to avoid it with the following procedure.

Select the target project in Solution Explorer in Visual Studio.
Select "Publish" from the context menu to publish the WebApp

Closed because it was resolved by the following procedure.

Release build the target project (at the time of the problem, build Debug.)
Perform Zip Deploy


Pileup of redshifts at z=1 on exp 154157(8) in tile 7438

This split exposure has what appears to be a large number of redshifts just below z=1. It could be a normal fluctuation but I marked it as unsure just to be cautious.

Anand has investigated the "redshift 0.9" bug here:
https://desisurvey.slack.com/archives/C01HNN87Y7J/p1669832258548009
They are all stuck fibers with flux == ivar == 0.
We have two outstanding items here:

I think we need to update QA to not show redshifts with flux == ivar == 0 for all wavelength elements.  Those aren't useful redshifts and having them cut through the middle of the real redshift distribution makes it hard to see what's actually going on at that redshift.  But we also probably need a box somewhere saying (number of redshifts with flux == ivar == 0: XYZ).
Anand diagnosed that the flux == ivar == 0 redshifts started some time between May 2021 and Feb 2022.  It's weird to have 200 stuck fibers that have flux == ivar == 0; that smells like a bug?

That said, I'm leaving this tile as unsure because fo the P9 unstable amplifier feature.

flux == ivar == 0 set by the pipeline is probably more a feature than a bug. it's a decision that was made to set to 0 fiber spectra with bad FIBERSTATUS in the calibrated frames. We may revise this.

I am looking at cframe files of exposure 20221121/00154157 and I don't see any fiber with flux set to 0 (for the cameras I looked at).
I see it in the coadds thought. And for those it makes sense: we don't want to include in the coadds spectra with fibers that where not well positioned!
So it's natural that in the coadds, the spectra of stuck positioners have flux=0 ivar=0.
I am not sure there any action to take here (except understanding why there is a bizarre default redshift).

thanks for the follow-up.
I must have looked at the coadds, indeed.
remark : looking at the cframes, those unassigned stuck fibers have IVAR=0, still; but maybe that s ok, don t know..

No it's not ok. How do I get the 'unassigned stuck fibers'?

Ok thanks. I confirm the fibers we can select them from the fibermap["FIBERSTATUS"] as
(STUCKPOSITIONER and UNASSIGNED ) or BROKENFIBER  have ivar=0 in the sframe and cframe files. We do not want that for STUCKPOSITIONER and UNASSIGNED because that prevents us from studying those fiber spectra (for instance to extend the list of sky fibers).

Just for posterity, this issue has two components:

stuck fibers not assigned to sky getting zeroed out
7438 having unstable amplifiers and needing to be marked bad.
The latter is now addressed as part of https://github.com/desihub/desisurveyops/issues/79.

desispec PR 1942 (https://github.com/desihub/desispec/pull/1942) removes the cut on UNASSIGNED fibers such that they no longer have ivar=0. This is true for everything including the coadds. Iif we want them to be ivar=0 in the coadds, we will need to add that back in.
As Julien mentions in the PR, this doesn't solve why the ivar=0 redshifts are non-zero in the new perlmutter code but it does reduce the number of ivar=0 spectra that fall into that bucket.