Docker swarm mode, Traefik on manager node only ?

I was reading the updated doc on how to deploy Traefik with Docker 1.12 and swarm mode when I saw that Traefik need to be deployed only on manager nodes...
For me, it's really weird to deploy a LB on manager nodes, those nodes should not deal with data plane, they should operate the control plane and they are limited to 5 in any given cluster.
Is there a current limitation with worker that forces Traefik to run on a manager ? Has an issue been created at Docker to solve this because unless I am missing something, I dont really see how that can scale at all and it seems dangerous to colocate the LB with the ochestrator...

@tlvenn I am guessing that it has to run on a manager because those nodes are responsible for the routing of requests and directing traffic.
I can see how that can be a concern for scaling, but don't forget that the swarm docs state that you can have up to 7 managers. With the limited testing I have done, I have found that running with 5 managers works a lot better than any number lower than that (at least for redundancy and automatic failover). I haven't experimented with running the full 7 to see if this starts to cause problems. Nor have I experimeted with running traefik on more than one manager node at a time. Is this possible?

I can see how that can be a concern for scaling, but don't forget that the swarm docs state that you can have up to 7 managers. With the limited testing I have done, I have found that running with 5 managers works a lot better than any number lower than that (at least for redundancy and automatic failover). I haven't experimented with running the full 7 to see if this starts to cause problems. Nor have I experimeted with running traefik on more than one manager node at a time. Is this possible?

I haven't either but want to try this setup. It sounds to me that it should work fine if traefik by e.g. docker service create ... Would love to get some feedback from others.

Well I just tried deploying traefik using a tutorial I made a few days ago, but this time with a scale of 3 and whoami1 with a scale of 6 and had no issues from my "light testing" (going there  in my browser). I also noticed that I get the site correctly even if I hit the leader that is not running the traefik proxy.

@programster I could be wrong but I dont think it's related with traffic management but it might be related with service placement. My understanding is Traefik needs to know where a given service has been deployed and be updated of any change.
Yep that's it, looking a bit deeper, there is currently no support for swarm events within the docker event stream, this is tracked with https://github.com/docker/docker/issues/23827
However this does not explain why we simply dont just poll the data for now which is availaible with the remote API on any node that is part of the swarm. Polling while not ideal seems to be better than forcing placement of Traefik on managers imho.
And actually looking at the code, even though I dont know GO much, it seems like it's already polling for the data...
@diegofernandes Can you shed some light on the matter please ?

Træfik has to run on a manager node because it needs access to the swarm mode API — and this API is only available on a manager as of now. Even with swarm events it would probably be the same as swarm events would probably only be available on manager nodes :sweat_smile:.
The idea would be more something like what's proposed in https://github.com/docker/docker/pull/26331 (some introspection and some limitation) :angel: .

Thanks for the clarification @vdemeester.
Wouldn't it be somewhat simple to have a very light traefik-swarm-agent running on the manager(s) and exposing the needed information over a websocket ?

Btw, what is missing from the  Remote API which is available on all node of the swarm ?>https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/list-tasks
It seems like polling the tasks and resolving the services would be all that is needed.

@tlvenn

Wouldn't it be somewhat simple to have a very light traefik-swarm-agent running on the manager(s) and exposing the needed information over a websocket ?

It could be done I think. The current implementation is… really simple and basic and is definitely subject to enhancements in the future :stuck_out_tongue_closed_eyes:

Btw, what is missing from the Remote API which is available on all node of the swarm ?>https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/list-tasks
It seems like polling the tasks and resolving the services would be all that is needed.

/tasks is a swarm mode endpoint, and thus, only available on manager. Currently we are polling the /service endpoint (which is also a swarm mode endpoint) and letting the swarm mode internal load balancer doing its thing… As said above, this is simple and subject to enhancement/options.

@programster actually we could do something even simpler by running a proxy on the manager(s) on a dedicated network shared only with Traefik for security purpose. The only thing we would have to do/change is to expose with a setting the host that Traefik use to query the api and default to the localhost.

Looking at the code the endpoint is defined by defaultDocker.Endpoint and is already exposed if I am not wrong so it looks like nothing is really stoping the end user to use this approach.

For those interested, I created a simple docker image using caddy to proxy over the docker unix socket so you can do that:
docker network create --opt encrypted --driver overlay meta

docker service create --mode global --network meta --name docker-api-proxy \
--constraint 'node.role == manager' \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock,ro=true \
tlvenn/docker-api-proxy

docker service create \
--name traefik \
--constraint 'node.role==worker' \
--publish 80:80 --publish 8080:8080 \
--network traefik-net \
--network meta \
traefik \
--docker \
--docker.swarmmode \
--docker.endpoint=http://docker-api-proxy \
--docker.domain=traefik \
--docker.watch \
--web

It essentially create a dedicated secure network for the proxy and traefik to interact so that other containers cant suddenly talk to the manager remote API over http. The proxy is placed on all managers you have in your cluster and docker dns will round robin them transparently.
Then we simply start traefik service and we add our meta network and define the docker endpoint to reference our proxy.

@tlvenn thanks for your solution. This strategy seems to be right. ;)
On other hand, do you have your source code somewhere? I've seen it's not built automatically in docker hub.

@bvis I will publish the source code on github tomorrow, I want to check nginx instead of caddy since it looks like it supports unix socket as well and should result in a smaller image.
In any case, will report back fairly soon.

Looking for your source. This is great!

@tlvenn Waiting for your source ;)

I've just tried to come up with a good way to scale out traefik and the best way seems to be using socat for creating a bidirectional byte stream between a tcp socket and the docker unix socket. Here is how I got it to work:
docker service create --name docker-proxy \
    --network proxy \
    --mount "type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock" \
    --constraint 'node.role==manager' \
    rancher/socat-docker

docker service create --name traefik \
    -p 80:80 \
    -p 8080:8080 \
    --network proxy \
    --network traefik \
    traefik \
    --docker \
    --docker.swarmmode \
    --docker.endpoint=tcp://docker-proxy:2375 \
    --web

Docker Image: https://hub.docker.com/r/rancher/socat-docker
Source Repo: https://github.com/rancher/socat-test

Ya good idea @barhun , socat should be even lighter than nginx to proxy the docker unix socket over http.

@barhun Help me walk through this. If I understand this correctly, is the idea here to run multiple rancher/socat-docker (one per manager node?) and only one traefik instance?

@tlvenn @barhun what's the difference to your approaches?

It's the same thing, socat allows you to expose the docker unix socket over an http port, pretty much the same way nginx can do but socat is a much simpler process.

Perfect, it works like charm. Thank you all.
The good point here is that as bigger the cluster gets the better is this approach, because you can scale the traefik tasks independently from the number of managers. And you can save some heavy work from the managers.
Do you know what would happen if the proxy fails during some time?

Does the traefik/router services work? Of course without catching events during this time.
When the proxy goes up again, is the traefik able to restore the desired status of the system? as far as I know it should, because it checks for the status of the services continuously.

The difference between the solutions is that mine is using socat to make the Docker API remotely accessible whereas @tlvenn initially suggested to use a reverse proxy server such as caddy, nginx or haproxy to achieve the same result. Though all these reverse proxy solutions require configuration files to be added to the Docker image, it seems not quite a big challenge since an image will only be rebuilt occassionally and the configuration files will likely remain unchanged. Yet, socat only needs command-line arguments to start streaming bytes between a TCP socket and the Docker Unix socket. It is also, not surprisingly, a much lighter solution than a reverse proxy as what it does in this case is merely build a bidirectional stream from the TCP port 2375 to the Unix socket /var/run/docker.sock for an incoming connection.
Why do we need the Docker API to be remotely accessible? Because Træfɪk watches Docker Swarm events and/or polls Docker Swarm services frequently - not sure if solely one (and which) is done or if both are performed for higher consistency - to automatically reconfigure itself and this process can only succeed via the Docker API over a Docker Swarm manager since the cluster state is only available to and managed by manager nodes. Thus we make the Docker API remotely accessible in order to make it available to Træfɪk instances that must no more necessarily run only on manager nodes but can also run on any node which is part of the Docker Swarm cluster to enable further scalability.
We can launch as many Træfɪk containers as we want and they will be able to talk to the managers via the docker-proxy service which can also be scaled out to more than one instances or can be configured as a global service with the constraint node.role==manager  in which case one instance per manager will be scheduled. I think one is enough for all because not much traffic goes through. Since the Docker Swarm mode services are controlled and checked for status in a self-healing loop, a new instance of the docker-proxy service will be scheduled if the only container belonging to the docker-proxy service stops due to an internal failure or because of the manager on which it runs having gone down.

@bvis

Do you know what would happen if the proxy fails during some time?

Does the traefik/router services work? Of course without catching events during this time.

I am not aware of the internals but Træfɪk should reconfigure only after a successful retrieval of services' state from the Docker Swarm API. It appears to me absolute nonsense to lose the already available information in case of interruptions.

When the proxy goes up again, is the traefik able to restore the desired status of the system? as far as I know it should, because it checks for the status of the services continuously.

Again, it is a better choice to configure frontend and backend rules according to the latest known facts without ever remembering any historical details even if not designed so.

@barhun Thanks for the explanation! A bit off topic, but how would you configure DNS to work well with multiple manager nodes? Multiple A records pointing to respective manager? I really like the traefik approach but have problems visualizing how one A record can be used when scaling out managers and/or instances of traefik (or the docker-proxy in this case).

@ralphtheninja
If your nodes are behind an IaaS load balancing service such as AWS Elastic Load Balancer or Azure Load Balancer, then it should be enough to have its IP address set as the DNS record value and configure it with the backends you want your traffic forwarded to. If not, you can set multiple IP addresses per an A record. This last technique is called RR (round robin) DNS and used as a way of load distribution, load balancing and fault tolerance by returning different IP addresses for DNS queries.
https://support.cloudflare.com/hc/en-us/articles/200168916-Can-I-use-round-robin-DNS-entries-

My 2 cents: you can use tecnativa/docker-socket-proxy, which includes some security enhacements to reduce Traefik's attack surface.
Just deploy this:
version: "3.1"

services:
    proxy:
        image: traefik:1.2-alpine
        networks:
            shared:
            private:
        volumes:
            - acme:/etc/traefik/acme:rw,Z
        ports:
            - "80:80"
            - "443:443"
        depends_on:
            - dockersocket
        deploy:
            mode: global
            placement:
                constraints:
                    - node.role == worker
        tty: true
        command:
            # Use your favourite settings here, but add:
            - --Docker
            - --Docker.EndPoint=http://dockersocket:2375
            - --Docker.ExposedByDefault=false
            - --Docker.SwarmMode
            - --Docker.Watch

    dockersocket:
        image: tecnativa/docker-socket-proxy
        privileged: true
        networks:
            private:
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
        environment:
            CONTAINERS: 1
            NETWORKS: 1
            SERVICES: 1
            SWARM: 1
            TASKS: 1
        deploy:
            mode: global
            placement:
                constraints:
                    - node.role == manager

networks:
    shared:
        driver_opts:
            encrypted: 1

    private:
        driver_opts:
            encrypted: 1

And attach your microservices to inverseproxy_shared network.

Also note that, at some point docker/docker#26331 could help 👼

@Yajo Thank you so much for having shared your compose v3 file. I got it now :)

Here is the complete solution folks! Enjoy :)
https://github.com/pascalandy/docker-stack-this/tree/master/traefik-socat

Link down.

Updated :)

Great news! https://github.com/moby/moby/pull/32421 (support cluster events #32421) got in 👍

Wow nice
Em sex, 26 de mai de 2017 12:41, Ciro S. Costa<EMAIL_ADDRESS>escreveu:

Great news! moby/moby#32421 https://github.com/moby/moby/pull/32421
(support cluster events #32421) got in 👍
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/containous/traefik/issues/766#issuecomment-304315977,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABjNglT1Y8W2S8KCjFyerUXTFkYuZ0ZHks5r9vKmgaJpZM4KeLqv
.

Does the docker backend still need work to listen to these events on a worker node? Or can we make this work right now, given a recent docker version?

@baluubas You don't need to make traefik run in a manager node, but you need to allow traefik get the cluster events, which are only available in manager nodes. This can be done with a proxy that exposes the docker cluster events in a TCP service. You can check how it works with the next yaml file:
version: "3.2"

networks:
  traefik-pub:
    external: true

volumes:
  traefik-pub:
    driver: ${VOLUME_DRIVER}

services:
  docker-proxy:
    image: rancher/socat-docker
    networks:
      - traefik-pub
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: '0.10'
          memory: 8M
        reservations:
          cpus: '0.10'
          memory: 8M

  traefik-pub:
    image: traefik:v1.3.2-alpine
    networks:
      - traefik-pub
    ports:
      - mode: ingress
        target: 80
        published: 80
      - mode: ingress
        target: 443
        published: 443
      - "8080:8080"
    volumes:
      - traefik-pub:/etc/traefik/acme
    command: --docker \
      --docker.swarmmode \
      --docker.endpoint=tcp://docker-proxy:2375 \
      --docker.domain='${CLUSTER_PUBLIC_DOMAIN}' \
      --docker.watch \
      --entryPoints='Name:https Address::443 TLS' \
      --entryPoints='Name:http Address::80' \
      --acme.entrypoint=https \
      --acme=true \
      --acme.domains='${CLUSTER_PUBLIC_DOMAIN}' \
      --acme.email=${ACME_EMAIL} \
      --acme.ondemand=true \
      --acme.onhostrule=true \
      --acme.storage=/etc/traefik/acme/acme.json \
      --web
    deploy:
      mode: replicated
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: '2'
          memory: 100M
        reservations:
          cpus: '0.10'
          memory: 100M

@bvis thanks to your compose file, I understand that we don't need a traefik.toml file. Is that right?

This is verrrr-y nice @bvis :)
Now I guess it would make sense to use consul if I want to use Traefik on all my worker nodes. Have you played with this?

What if manager nodes are not available for tasks?

To prevent the scheduler from placing tasks on a manager node in a multi-node swarm, set the availability for the manager node to Drain

It looks like in this case traefik will be brought down

@Vanuan The best is not t drain a manager node but to use labels for the docker service create to control whcih tasks run on managers and which tasks run on workers. This way, we  have configured traefik to run on manager nodes and all other tasks to run on worker nodes. This works perfectly fine.

would be great to be able to do this (traefik on any node (worker | mgr))  withou out having to run such a proxy that exposes the docker cluster events in a TCP service

My 2cts on this, if you want to know the user IP, you need to expose traefik port in host mode.
By doing this, only the node with traefik could respond to traffic and not all swarm node.
In my case, I use my cloud provider load balancer (ELB for AWS, Azure Load Balancer for Azure, etc.), and I need to know on which node the load balancer should send traffic to. I see 2 solutions:

Add all worker nodes to the load balancer and let the load balancer health-check for only sent traffic to the node with traefik running. In my opinion, it's not the best solution.
Add traefik to the manager node in global mode, as it's a fixed number of nodes, it's easier to configure it in the load balancer.

For the health-check, I usually use a TCP check on port 8080 which is exposed in host mode too.
If you have a better solution, I will be happy to see it, I actually use the 2nd solution in production as Traefik don't use a lot of CPU, it's really not a problem for now.

Old topic, but still open so I wanted to share my thoughts on this:
If you want to use the drain mode on the Docker Swarm manager nodes, you could have the socat proxy container run on each manager node manually (as opposed to running as a service). You would set this up as part of the manager node install process (which you probably have already automated anyways with, for example, Ansible).
Then you could use a virtual IP on the manager nodes to make sure that the socat proxy port is always available on a single IP address (ie. the virtual IP). If you shutdown the manager holding the virtual IP another node automatically takes over. With the help of keepalived setting this up is pretty simple.
You can use the same virtual IP address for port forwarding on firewalls or as a target for external load balancers.
Of course using services would be better and easier, but I don't appreciate the requirement of having to restrict all other services to run only on worker nodes. Forgetting to set the constraint is a mistake waiting to happen.
What do you think?

I've never seen a production swarm cluster with drain enabled on managers. It's not realistic. It won't work in a Docker EE cluster and will require lots of workarounds and anti-patterns in Docker CE. At a minimum, a cluster will need monitoring and security tools, backup services, etc. on managers, and I always would recommend avoiding docker run in a swarm, because it now makes that node a special pet rather than "just another node in the pool".
Any swarm beyond a single-purpose hobby setup will require labels, constraints, resource reservations, healthchecks, etc. so I don't see the "label + constraint" requirement something that needs special handling... it's quite normal in swarm stacks and services to already have those IMO.

I guess there seems to be confusion among the community regarding the use of dedicated managers. Some consider it best practice while others do not. Some time ago I asked the question on Twitter and was directed towards the community :-)
I agree docker run is not ideal, but there seems to be no solution without any bad sides to it. A manager node is already a special pet, because it's a manager node. Installing supporting containers for monitoring, etc. can be easily handled with the same software you use to install the cluster altogether.
Using labels and resource limits is a typical use-case, but keeping workloads off the manager nodes manually is not. It's something best handled by the cluster itself (ie. the drain mode).

Yea I think the drain feature was initially shared and shown off as a way to keep workloads off managers, but since it's all or nothing, it didn't provide the flexibility to last long in a working cluster.  It's now usually reserved for use during scheduled maintenance (repairing or replacing a manager node) more then something used as an ongoing app scheduling strategy.
I would debate the pet argument though... To me, a pet is something that I have to manually deal with, but a manager can easily sit in an auto-scaling group and be replaced at will as long as Raft consensus is kept (a majority online), and then you would have other ASG's for workers, as long as docker run isn't used 😬
For those needing the functionality of docker run you can wrap that in a docker service create (the service task runs a docker container with control of host socket. I have an example of that here.

@BretFisher thanks for the input. After some reconsideration of the pros and cons I agree with you regarding the use of docker run. Also the auto-scaling group example regarding the pet argument was a good one. Too bad the drain mode implementation is limited. It could have been very useful.

@BretFisher thanks for this!

For those needing the functionality of docker run you can wrap that in a docker service create (the service task runs a docker container with control of host socket. I have an example of that here.

At the moment, I used a cron job to perform this task on the server
while true; do docker image prune -af; sleep 86400; done

I understand that the benefit are:

No need to care for cron job on the server
No need to do it on each servers

I've read the documentation for creating a Swarm Mode of 1 Manager and 2 Workers. So if I configure DNS records for a domain name, do I point the A & AAAA records at the Manager IP?
And if there are 3 Managers, each on a different host with different IPs, which IP do I point the DNS records?

@j7an You only need to point the A records to the Manager IP. If you got >1 Manager then we made good experience in running Traefik on each of them and you can add alle 3 Managers to the A records or only 1 of them if you prefer. The advantage of adding 3 is that you would have some sort of load balancing.  A nice DNS service for this is part of Cloudflare (https://www.cloudflare.com)

@SvenAbels What happens in a multi-manager Swarm when one manager fails? If there's a total of 3 managers and 1 failed, does 33% of traffic get a server error? I'm not sure if Cloudflare automates DNS Round Robbin Failover as they already have failover on their paid load balancer feature. Their site only mentions failover for their load balancers.

@j7an If 1 Manager fails, then you need to manually remove its IP from the A records. We use a seperate monitoring service to monitor the health of our servers.  I assume that the paid cloudflare load balancer can do this too but I never tried it so far.

@j7an or you can call their API from your monitoring/alerting system when a manager fails.
https://api.cloudflare.com/#dns-records-for-a-zone-update-dns-record

Thanks @SvenAbels @barhun.
Found this repo that monitors and updates Cloudflare DNS records via their API: dns-failover-cloudflare-monit
And another great write up here: Using the Cloudflare API to Manage DNS Records

Here's a comment I made on the other open swarm manager proxy thread, with a stack of services to give you an example of how all this works: https://github.com/containous/traefik/issues/4174#issuecomment-446564816

I created a daemon service which runs on master, but at least its just a socat which I use in many other scenarios so I can utilize economies of scale for that image.
https://github.com/trajano/trajano-swarm/blob/master/edge.yml#L69-L83


stack during import tensorrt_llm

System Info

CPU x86_64
GPU: L40
tensorrt_llm: 0.11.0
CUDA: 12.4
driver: 535.129.03
OS: CentOS 7

Who can help?
When I tried to import tensorrt_llm, it got stuck. Through debugging, I found that it was stuck at MpiComm.local_init(), which prompted the following warning (but installing it in the conda virtual environment on other L40 machines also raised the same warning, which can be imported and processed normally), I tested my system's MPI library and found no problem, but I am not sure why this warning is reported:
Python 3.10.14 (main, May  6 2024, 19:42:50) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorrt_llm
--------------------------------------------------------------------------
WARNING: No preset parameters were found for the device that Open MPI
detected:

  Local host:            set-hldy-autovision-fanet-triton08
  Device name:           mlx5_4
  Device vendor ID:      0x02c9
  Device vendor part ID: 4125

Default device parameters will be used, which may result in lower
performance.  You can edit any of the files specified by the
btl_openib_device_param_files MCA parameter to set values for your
device.

NOTE: You can turn off this warning by setting the MCA parameter
      btl_openib_warn_no_device_params_found to 0.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
No OpenFabrics connection schemes reported that they were able to be
used on a specific port.  As such, the openib BTL (OpenFabrics
support) will be disabled for this port.

  Local host:           set-hldy-autovision-fanet-triton08
  Local device:         mlx5_4
  Local port:           1
  CPCs attempted:       rdmacm, udcm
--------------------------------------------------------------------------

Information

[x] The official example scripts
[ ] My own modified scripts

Tasks

[x] An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
[ ] My own task or dataset (give details below)

Reproduction
import tensorrt_llm

Expected behavior
import correctly
actual behavior
stuck during import tensorrt_llm
additional notes
none

Same issue, how do you solve it?

Same issue, how do you solve it?

Through logging, it was found that the system's librt.so, libm.so, etc. could not be found. However, through a find search, it was found that they were in the/lib64 path. Therefore,/lib64 was added to LD_LIBRRY_PATH and recompiled to install mpi4py (provided that the openmpi library has already been installed).
Suggestion: It is best to install through conda to avoid many errors.

I run into hanging as well. Discovered that:
official docker:
$ python -c "import mpi4py; print(mpi4py.__version__)"
4.0.0

my setup:
$ python -c "import mpi4py; print(mpi4py.__version__)"
3.1.4

so clearly they aren't binary compatible
this fixed the hanging:
conda install -c conda-forge mpi4py openmpi

from: https://mpi4py.readthedocs.io/en/latest/install.html#using-conda


de: Replace switch with if in slice visitor

test PR to see if switches are causing slowdowns

nope, switches are faster nowadays apparently.


Add integration tests for #1749

This adds integration tests that showcases the problems described in #1749.
Just resetting the helm.SetExtraArgs() after each Helm execution, as done in a7d2321efd5b87c8c8444179aab3f9f18fe88fed seems to be not the way to handle this issue.
I've just run out of ideas on how to solve this. Anyone pretty please?

@baurmatt thanks so much. please fix ci issue.

@baurmatt E2E test is cool.


Get info about Nomos NFT Collection

We need to access this info in the demo. We can hardcode it or find a way to fetch it from talis. We must also have enough nfts @ohadbachner

@estellechoi I found the Talis testnet Graphql Endpoint
https://injective-staging.talis.art/api/graphql
Check more info about this on these messages in discord I left:
https://discord.com/channels/961985082472665098/1194578345980080138/1209232120233590894
https://discord.com/channels/961985082472665098/1194578345980080138/1209232336080605205
https://discord.com/channels/961985082472665098/1194578345980080138/1209232427784867951
https://discord.com/channels/961985082472665098/1194578345980080138/1209233083904041050


Egsam test doesn't timeout

Test number three on page gemini://egsam.pitr.ca/1.1.gmi still fails and will wait for over 15 seconds.
Go code is:
	g.Handle("/1.1.write.timeout", func(c gig.Context) error {
		time.Sleep(10 * time.Minute)
		return c.Gemini("FAILED. You waited too long")
	})

There needs to be a timeout setting in the client code that will cause a timeout and return if the connection is opened, but no response is given.

conn.SetDeadline should be able to be used. Can the other timeout method be removed once that is added? Also, there needs to be a way to detect a timeout error through the API.

This has been fixed over several commits: 2015958ad2af0008b64b83be41382405be8260f4...d842c9696bc2d4d2dec719253df73d7fecf79c70
Using Client.ConnectTimeout one can set a timeout that applies to forming a connection as well as receiving a header. As long as this value is set (and it is by DefaultClient) then all the 1.1 Egsam tests are fully passed.


Token contract issue

Hi.  So we have a token on the ether chain.  We also have a coin on our own chain.  We have our ABI contract and on web all working fine however I am struggling to get the swift code working.
Here is my code.  Happy to supply wallet addresses and url for ABI contract.  Please help.
Basically this function should trasfer x amounts of our ether token over to our own coin.  However transaction.send now not responding.
var web3 = Web3.InfuraMainnetWeb3()
if AppDataModelManager.shared.testModeStatus() {
        web3 = Web3.InfuraRinkebyWeb3()
    }

    //let web3 = AppDataModelManager.shared.getNetworkStatus().getInfuraUrl()

    let abiContract = self.getDepositABIContract(completion: { abiJson in

        let value: String = "0" // Any amount of Ether you need to send
        let walletAddress = EthereumAddress(wallet.address)! // Your wallet address

        let tAddress = EthereumAddress(toAddress)

        let parameters: [AnyObject] = [walletAddress, UInt64(amountString) ?? 0,tAddress] as [AnyObject]

        let contractABI = abiJson
        let contractAddress = EthereumAddress(AppDataModelManager.shared.getNetworkStatus().getDepositTokenAddress())!
        let contract = web3.contract(contractABI ?? "", at: contractAddress, abiVersion: 2)!

        var options = TransactionOptions.defaultOptions
        options.from = walletAddress
        options.gasLimit = .automatic
        options.gasPrice = .automatic

        let contractMethod = "approveAndCall" // Contract method you want to write
        if let transaction = contract.write(contractMethod, parameters: parameters, extraData: Data(), transactionOptions: options) {

            let password = WalletDataModelManager.shared.loadWalletKey(key:wallet.address)
                do {
                    let result = try transaction.send(password: password)

                    let a = 1
                    return
                } catch {

                    // TODO: Define errors?

                    /*completion(nil, error)*/
                    let b = 1
                        print(error)
                    return
                }

        }
    })

Please recreate this one if the issue still appears within 3.0.* branch.


Updates the Dollor Bucks logo, tags, and description.

Please note: This repository is being rebuilt to accept the new volume of token additions and modifications. PR merges will be delayed.

I agree to not ping anybody on Discord/Twitter/email about this pull request. Instead I will inquire by posting a new comment in the pull request if needed.

PRs are reviewed in bulk and and can take up to two weeks to be merged.
This repository is managed using an auto merge action. Please ensure your PR has no deleted lines, and it will be merged.
Please provide the following information for your token.
Please include change to the src/tokens/solana.tokenlist.json file in the PR.
DON'T modify any other token on the list.
At minimum each entry should have

Token Address:
Token Name:
Token Symbol:
Logo: (logo should be uploaded under assets/mainnet//*.<png/svg>)
Link to the official homepage of token:
Coingecko ID if available (https://www.coingecko.com/api/documentations/v3#/coins/get_coins__id_):

Auto merge requirements
Your pull request will be automatically merged if the following conditions are met:

Your pull request only adds new tokens to the list. Any modification to existing
tokens will require manual review to prevent unwanted modifications.

Your pull request does not touch unrelated code. In particular, reformatting changes to unrelated
code will cause the auto merge to reject your PR.

Any asset files added correspond to the token address you are adding. Asset files
must be PNG, JPG or SVG files.

Your change is valid JSON and conforms to the schema. If your change failed validation,
read the error message carefully and update your PR accordingly.

No other tokens shares the same name, symbol or address.

For example, this change would be rejected due to unrelated changes:

The bot runs every 60 minutes and bulk-merges all open pull requests to prevent conflicts.
This means that you need to wait up to 60 minutes for your pull request to be merged or reprocessed.

I'm trying to update my Token's logo. Not sure what I'm supposed to do when I'm being told my auto merge failed because it couldn't find my old logo's URI. it's not there anymore because i updated it to show the new URI. Any help/clarification would be greatly appreciated.


Error when trying to import into native ESM project

I'm trying to import ENS into a node module with "type": "module" and I'm getting the following error:
SyntaxError: Cannot use import statement outside a module

Looking at the package.json for @ensdomains/ensjs it does seem like "type": "module" is not defined.
Are there plans to support native ESM?

Found workaround:
Instead of import { ENS } from '@ensdomains/ensjs', I used import { ENS } from<EMAIL_ADDRESS>This actually imports the CJS version, which works fine in ESM context (as far as I could tell).


upstream: simplify CONNECT

The replaced code is equivalent but relies on stdlib, instead. Additionally, as hinted to in http.Request's documentation, instead of http.Request.RequestURI, I've switched to using http.Request.URL. http.Request.ProtoMajor (1) and http.Request.ProtoMinor (1) are implicitly already set with http.Request.Proto (http/1.1), so that is removed, too.
Unsure if the previous code works around any bug or desires some peculiar behaviour absent in stdlib. But if it doesn't, then there might be merit in simplifying as the PR does.
I've tested its parent patch (link) locally and in Rethink, our Android app (which now uses opera-proxy), and things work just like before.

Hi!
It potentially introduces a data loss bug. It wraps connection directly with a buffered reader which can potentially read more than initial HTTP response (which can happen with CONNECT to servers which speak first). Wrapped buffered reader is discarded immediately after read of initial response and so all buffered data in that reader. For this reason initial implementation reads byte-by-byte just like curl when it works with CONNECT proxies.
See similar issue in another project for more details. They also ultimately resorted to reads by one byte.

Thanks. Thought as much. Might warranty a code comment, then.

Updated. Now the changes seem minor (a squash might make sense given the og changes have been reverted within this PR). If these anyway minor changes seem unwarranted, feel free to close this PR.
Thanks!
(now I'll go update our code...)

@ignoramous I'll discuss it with you anyway so you can be aware about issues I found.
It seems ProtoMajor and ProtoMinor are really needed in request fields. Take a look at dumped request: https://go.dev/play/p/aPrGA91cmeW
It sends HTTP/0.0 as protocol version.

Makes sense. I'll ping you on Telegram on the group.

sends HTTP/0.0 as protocol version.

The defaults for Major and Minor are 1 and 0, respectively? Crazy how fragile the stdlib API seems to.


Trouble filtering plugins by tags parameter

Is there an existing issue for this?

[X] I have searched the existing issues

Kong version ($ kong version)
3.6.1
Current Behavior
Plugins are not filtered by tags. In response to /plugins?tags=foo query all existing plugins are returned.
Expected Behavior
The API only returns the records having the provided tag in their tags field.

The instance is running on Debian 12.

It does not reproduce in my environment. Could you share the logs when the issue occurs?

It does not reproduce in my environment. Could you share the logs when the issue occurs?

I'm not sure which logs to look at. Right now the only place I know of is /usr/local/kong/logs, which in turn contains the following files:
access.log  admin_access.log  admin_gui_access.log  admin_gui_error.log  error.log  status_error.log

I suppose, I don't need the gui files, nor the access.log. Which leaves me with admin_access.log, error.log, and status_error.log. The latter is empty, error.log only shows some irrelevant entries (much earlier than the time of the request). And tail for admin_access.log looks like everything is fine:
<IP_ADDRESS> - - [20/Jun/2024:00:21:53 +0300] "GET /plugins HTTP/1.0" 200 16842 "-" "curl/7.64.1"

Am I looking at a wrong file?

Hmmm maybe we can try to take a look into admin_access.log to see what URL Kong thinks it receives


Chrome Glitch

Setting a class on the "body" (even for a brief moment), is causing chrome to
change other non C3 elements positions.
Signed-off-by: Gordon Smith<EMAIL_ADDRESS>

I fixed this issue by myself. I think now it's ok and I'll release this fix in the next version 0.4.10 shortly. Thanks.


Backwards incompatible API changes to setIdentity, setVersion

Hi,
I'm using OrientDB as a new data store for an existing application. I frequently (1) query for one or more ODocument objects, (2) convert the objects to an alternate representation expected by a legacy API, (3) pass the converted objects to the legacy API and get new objects with changes, and (4) synthesize new ODocument objects to write back to the store.
When I synthesize the ODocument objects, I use setIdentity and setVersion to ensure that OrientDB correctly updates the objects I was working with, so they're stored using the old RIDs and new version numbers. Otherwise I'd wind up with copies, where each update would create a new RID.
All of this was fine with OrientDB 1.7.* but no longer works with 2.0-rc1. The ORecordAbstract.setIdentity and ORecordAbstract.setVersion methods are now protected and my codebase basically breaks.
I'd appreciate if the methods could be made public again, or if not, then there should be a workaround for the case I have described, where OrientDB-backed objects have to be processed by libraries with APIs that take something other than e.g. ODocument & friends.

I don't understand why there shouldn't be API support for fully constructing ODocuments, including the version, as the OP described. Consider the use case of a web-based API built on top of OrientDB, in which multiple clients are retrieving/updating objects (which include a serialized version number).  If an update is received through the API, shouldn't it be possible to use Orient's version checking by setting the version on an ODocument constructed to represent that update (to ensure that it's not based on an old version, and potentially overwriting new data)?

This is basically the same scenario I was working with - I think exactly
the same, from the OrientDB API viewpoint.
On Tuesday, January 27, 2015, buzzkillington<EMAIL_ADDRESS>wrote:

I don't understand why there shouldn't be API support for fully
constructing ODocuments, including the version, as the OP described.
Consider the use case of a web-based API built on top of OrientDB, in which
multiple clients are retrieving/updating objects (which include a
serialized version number). If an update is received through the API,
shouldn't it be possible to use Orient's version checking by setting the
version on an ODocument constructed to represent that update (to ensure
that it's not based on an old version, and potentially overwriting new
data)?
—
Reply to this email directly or view it on GitHub
https://github.com/orientechnologies/orientdb/issues/3254#issuecomment-71693576
.

@lvca / @tglman - can we get this issue (or at least the discussion) re-opened?

How about ORecordInternal? I haven't done anything about this yet but that
sounded like a solution to me.
On Wed, Feb 4, 2015 at 8:10 PM, buzzkillington<EMAIL_ADDRESS>wrote:

@lvca https://github.com/lvca / @tglman https://github.com/tglman -
can we get this issue (or at least the discussion) re-opened?
—
Reply to this email directly or view it on GitHub
https://github.com/orientechnologies/orientdb/issues/3254#issuecomment-72917905
.

I disagree with that answer being a solution: using an undocumented/unsupported, internal mechanism is (at best) a kludgy, unsatisfactory workaround.  Regarding the other option described above, it seems unnecessary and unreasonable to incur two database hits and perform a manual, client-side version check just to process an update.  This should be a public API-supported capability - otherwise, I'd like a more well-reasoned explanation for why, given our use cases, "normal application flow" is defined so narrowly (comment from @tglman above).

Give me a try to explain.
The logic is following: it's good for overall performance and memory consumption to have just 1 instance for a document in the memory per transaction. If you will try to load/save a document with described way you might have theoretically have 2 java objects for the same document in the memory. And that's might lead to a sequence of problems.
So let me back my previous comments: I think it's definetly should be done in that way as OT guys suggest. And more over: there is almost no performance or usability impact for the client side if you will use methods merge().

Hmm - how about that then, @tlgman?
I do have to admit that I can't quite follow Ilya's argument. And I did
file this as a bug whereas now we're talking about a feature. But either
way, perhaps the generalized scenario of receiving every object field value
from a JSON API, HTTP push or some equivalent, and blindly stuffing in
OrientDB as fastcas possible, is worth keeping around as an option?
I think perhaps the main reason I won't be as decisive on this as
@buzzkillington is that I remember what a painful couple of bugs I ran into
with mismatched version numbers - no fun to resolve...
On Monday, February 9, 2015, Ilia Naryzhny<EMAIL_ADDRESS>wrote:

Give me a try to explain.
The logic is following: it's good for overall performance and memory
consumption to have just 1 instance for a document in the memory per
transaction. If you will try to load/save a document with described way you
might have theoretically have 2 java objects for the same document in the
memory. And that's might lead to a sequence of problems.
So let me back my previous comments: I think it's definetly should be done
in that way as OT guys suggest. And more over: there is almost no
performance or usability impact for the client side if you will use methods
merge().
—
Reply to this email directly or view it on GitHub
https://github.com/orientechnologies/orientdb/issues/3254#issuecomment-73588846
.


feat: show version number

Objective : show the version number in a clear manner for the user

What about removing the stable everywhere and putting the version number instead?

What about removing the stable everywhere and putting the version number instead?

This is not possible, this is forced by ReadTheDoc. And the stable is still convenient to point url link always to the last version.
This PR is just a suggestion of method with which we can put the version number anywhere in the text

So are we merging this? ^^

So are we merging this? ^^

Don't know, it was more of a suggestion... I might close it in the end

Closing for non activity on the subject


Does it work with Navigation Controller?

I tried adding Navigation Controller to Demo project and the detail view transition doesn't seem to be happening.
And thanks for this wonderful work :)

@AnnieNinaJoyceV you're welcome!
This control wasn't designed to use within UINavigationController. Maybe there is a reason make it available to embed ElongationViewController to navigation stack, but I'm not sure about ElongationDetailViewController (the second one).

@Jauzee I got it working by Tweaking func root(from context: UIViewControllerContextTransitioning) -> ElongationViewController
This works for me with UINavigationController - Navigation Bar hidden. I just wanted to know confirm whether there is some other approach. Thanks for your response.
fileprivate func root(from context: UIViewControllerContextTransitioning) -> ElongationViewController {     guard let c = context.viewController(forKey: rootKey) else {         return context.viewController(forKey: rootKey) as? ElongationViewController ?? ElongationViewController(nibName: nil, bundle: nil)         }         if (c.isKind(of: UINavigationController.self)) {             guard let nv = c as? UINavigationController else {                 return context.viewController(forKey: rootKey) as? ElongationViewController ?? ElongationViewController(nibName: nil, bundle: nil)             }             let v = nv.topViewController             return v as? ElongationViewController ?? ElongationViewController(nibName: nil, bundle: nil)         }         return context.viewController(forKey: rootKey) as? ElongationViewController ?? ElongationViewController(nibName: nil, bundle: nil)     }

@AnnieNinaJoyceV, sorry for the delay. You did it in very complex way. We'll look on that.

@Jauzee No problem, it works for me right now. I will wait for your solution to this.

@AnnieNinaJoyceV fixed this issue in 1.0.4.
Actually we'll just check if there is an UINavigationContoller and if so we'll iterate over viewControllers looking for ElongationViewController.

@AnnieNinaJoyceV  code but formatted:
fileprivate func root(from context: UIViewControllerContextTransitioning) -> ElongationViewController {
guard let c = context.viewController(forKey: rootKey) else {
return context.viewController(forKey: rootKey) as? ElongationViewController ?? ElongationViewController(nibName: nil, bundle: nil)
    }
    if (c.isKind(of: UINavigationController.self)) {
        guard let nv = c as? UINavigationController else {
            return context.viewController(forKey: rootKey) as? ElongationViewController ?? ElongationViewController(nibName: nil, bundle: nil)
        }
        let v = nv.topViewController
        return v as? ElongationViewController ?? ElongationViewController(nibName: nil, bundle: nil)
    }
    return context.viewController(forKey: rootKey) as? ElongationViewController ?? ElongationViewController(nibName: nil, bundle: nil)

}

how to show navigation bar on ElongationDetailViewController?


New Landscape Entry - [AMIRIS]

Project Name
AMIRIS
Description
AMIRIS is the open Agent-based Market model for the Investigation of Renewable and Integrated energy Systems. It aims at enabling scientists to dissect the complex questions arising with respect to future energy markets, their market design, and energy-related policy instruments. The model computes electricity prices endogenously based on the simulation of strategic bidding behavior of prototyped market actors. This bidding behavior does not only reflect marginal prices, but can also consider effects of support instruments like market premia, uncertainties and limited information, or market power.
Homepage URL
https://dlr-ve.gitlab.io/esy/amiris/home/
Repo URL
https://gitlab.com/dlr-ve/esy/amiris/amiris
Organization hosting or owning the project
Deutsches Zentrum für Luft- und Raumfahrt e.V.
Logo

Category
Energy Systems - Modeling and Optimization

Hi @dlr-cjs - thank you for submitting this! Check out the entry below and let me know what you think...
https://deploy-preview-875--lfenergy.netlify.app/?selected=amiris

Thank you, looks perfect to me.

Great! Merging in now. Thank you!


pthread_cond_timewait can't cope with clock failure

If the timeout isn't null, pthread_cond_timedwait does some work to convert the timeout to a timestamp. If this fails (which it can at least in principle) the resulting error path corrupts the state.
With iStatus != 0, it will not set iLocalWaitingThreads, nor will it attempt to take the semaphore, but it will use the uninitialized value of iLocalWaitingThreads to decrement pxCond->iWaitingThreads. The first decrement attempt in prvTestAndDecrement will most likely fail (though it might not) but prvTestAndDecrement will then retry, and thenceforth the waiter count will be permanently off by one.
This was found by gcc correctly reporting that iLocalWaitingThreads is used uninitialized. FYI.
Fix is to return immediately on error if the timing logic fails.

Thanks for point this out. Will you be willing to create a PR for the same


Download timeouts when creating larger environments

Since ~1 week mamba randomly aborts the installation of larger environments (~900 packages) with a timeout error. This happens with 0.2.12 and 0.3.4. I'm not sure whether this is a bug or a DDoS protection from cloudflare.
Excerpt from the log: https://gist.github.com/xhochy/2e509f1994341d37fcae83d37c2a538e

All new connection attempts fail with the same log entry:
* Connected to conda.anaconda.org (<IP_ADDRESS>) port 443 (#53)
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /opt/conda/ssl/cacert.pem
  CApath: none
* SSL connection using TLSv1.2 / ECDHE-ECDSA-CHACHA20-POLY1305
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: C=US; ST=CA; L=San Francisco; O=Cloudflare, Inc.; CN=anaconda.org
*  start date: Feb 28 00:00:00 2020 GMT
*  expire date: Oct  9 12:00:00 2020 GMT
*  subjectAltName: host "conda.anaconda.org" matched cert's "*.anaconda.org"
*  issuer: C=US; ST=CA; L=San Francisco; O=CloudFlare, Inc.; CN=CloudFlare Inc ECC CA-2
*  SSL certificate verify ok.
> GET /conda-forge/linux-64/r-htmltools-0.4.0-r36h0357c0b_1.tar.bz2 HTTP/1.1
Host: conda.anaconda.org
Accept: */*

* Operation timed out after 126 milliseconds with 0 bytes received
* Closing connection 49

wow, 900 packages is a lot!
That's a tough question. Does the retry mechanism work?
The log says that almost all data has been retrieved for some packages, and then the connection times out:
* Operation timed out after 17616 milliseconds with 15518208 out of 16518555 bytes received
* Closing connection 1
* Found bundle for host conda.anaconda.org: 0x55d89124eef0 [serially]

I would love to have more insight on what these scenarios look like on the cloudflare side...
We can also try to tune some variables with regards to retrying.
https://github.com/QuantStack/mamba/blob/c4242834b8f002dd1e12996dc45e42222134a36e/include/context.hpp#L60-L64

In 20% of all cases the retry is working. I have like 10s of just retries and then it's working again. Most of the time, it keeps timeouting until all packages until it reaches max_retries.

So we are actually setting
https://curl.haxx.se/libcurl/c/CURLOPT_TIMEOUT.html
this option to 60 seconds (which is the read timeout value from conda).
However, we use this in a curl-multi environment and the manual indicates that this is very wrong.
So I am removing this code, and add a low-speed limit for the moment.
Maybe this will help? I am putting it in a 0.3.6 release (skipping 0.3.5 :)

Note that the timeout also seem to happen with conda, it just took me quite some time to check this as conda kept on solving for quite some time.

I tested locally and ran into the timeout when creating a new environment with anaconda inside.
I do think that this will help https://github.com/QuantStack/mamba/pull/334 :)
I'll make a release shortly.

0.3.6 is released. I am curious to hear if this helps.

Things passed since then, thanks!

cool!


[Accessibility] Fixing some color contrast issues in the website

Related Issue
Fixes #3577, Fixes #3576
Description
AccessibilityInsights picked up a couple of color contrast bugs on the adaptivecards.io/explorer page.

This PR attempts to fix those by fixing the default style sheets that get pulled in to display the offending page elements.
Note that there are multiple duplicate definitions for ac-pushbutton custom button class in our code base and I am not a 100% sure but sometimes the outlook.css gets picked up which is defined in the adaptive cards visualizer folder (which seems unusual) and not the definition for the custom button class in the adaptivecards-website project. So I made the changes for now in both places. I still need to figure out though why cards.css is not the only stylesheet that gets picked up here and why outlook.css.

How Verified

Determined the acceptible contrast ratio based on the application insights pointers.
Tested the final changes locally by running application insights on the localhost instance with the changes and verified no more violations exist.
Tested the changes on here https://adaptivecardsci.z5.web.core.windows.net/pr/3698/explorer (vis-a-vis https://adaptivecards.io/explorer)

Microsoft Reviewers: Open in CodeFlow

@nesalang / @matthidinger  need one more review if you could take a look ? thanks!


Update dependency @types/node to v16.18.111

This PR contains the following updates:

Package
Change
Age
Adoption
Passing
Confidence

@types/node
16.18.108 -> 16.18.111

Configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Disabled due to failing status checks.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, click this checkbox.

This PR has been generated by Renovate Bot.

⚠ Artifact update problem
Renovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you click the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:
File name: packages/shared-action-utils/package.json
Command failed: npm i -g<EMAIL_ADDRESS>&& pnpm install && pnpm build

File name: packages/find-and-replace-all/package.json
Command failed: npm i -g<EMAIL_ADDRESS>&& pnpm install && pnpm build

File name: packages/extract-package-details/package.json
Command failed: npm i -g<EMAIL_ADDRESS>&& pnpm install && pnpm build

File name: packages/current-branch-name/package.json
Command failed: npm i -g<EMAIL_ADDRESS>&& pnpm install && pnpm build

File name: packages/add-changeset/package.json
Command failed: npm i -g<EMAIL_ADDRESS>&& pnpm install && pnpm build


feat: refactor and add roles

Summary | Résumé

SRE-bot module is now a generic roles module
Add an OIDC role to be used by nuke to print out account ids in the
sandbox ou

This role will be used by the Nuke github action to get the list of accounts in the sandbox OU, this list will then be used to drive the nuke action so we no longer have to manually add them to the following file: https://github.com/cds-snc/site-reliability-engineering/blob/main/.github/workflows/aws_nuke_ct.yml
This is related to: https://github.com/cds-snc/site-reliability-engineering/issues/655

Do we need a TF state move for the sre_bot role and policy since it's migrating modules?

I ended up peforming the following actions

checking out the main branch
navigating to old org_account/sre_bot module
running the following to get the copy of the modules state

terragrunt state pull > sre_bot.backup.tfstate

checking out this PR's branch
navigating to the new org_account/roles module
running the following to push the state up to the new module

terragrunt init
terragrunt state push sre_bot.backup.tfstate

After this PR is merged I will go delete the old cds-aws-lz-production-tf/sre_bot folder in order to remove the abandoned state file that is now in the cds-aws-lz-production-tf/roles folder


DKP-184 Desktop 4.9.0 release notes

Proposed changes

Related issues (optional)

@mathieui can we also update this page https://docs.docker.com/desktop/linux/install/ with the 4.9.0 install links?


api_documentation: Display null data type if potential value.

If null is a potential value of data type for a return value or parameter in the API endpoint, then it is rendered as an option as discussed here in CZO.
This currently relies on the 'nullable' setting in the OpenAPI spec that was removed in the 3.1.0 release. If/when the OpenAPI version is updated for Zulip, then how the data_type for parameters and return values is rendered will need to be reworked.
Testing plan: Manually went through the API docs in the dev environment on the branch with the change and ran a command line diff against any html that had 'null' in the page = 11 comparisons (see link to diff on pastebin).
Since the change added 'null' as new content, I didn't run a diff against pages where it did not appear. I also didn't run a diff against the get-drafts page because the null text appears in the description text and not in the return value type. I did do a visual check to make sure that there were no additions of 'null' text to that page.
Diff of changes in html rendered pages
I believe the diffs do show one endpoint that is inaccurate regarding the null value, update-subscription-settings. It is listed as an option for a return value in the description text, but then it is not recorded as nullable: true in the documentation. This is why the diff has no changes even though 'null' appears on the page.
Screenshots:

This is awesome, merged, thanks @laurynmm!  I did a quick audit that it appears we explain the meaning of null in the places where it can appear, which is one of the properties we'd like our documentation to have.
(Also modified the commit message to close the issue I'd opened: https://github.com/zulip/zulip/issues/20264, which it looks like I forgot to link to in the CZO thread).


Naming convention for IQP features

On this page, most IQP features are preceded by "Intelligent Database:" whereas some are not. Why?
Example with "Intelligent Database:"

Intelligent Database: approximate count distinct
Intelligent Database: approximate percentile

Example without "Intelligent Database:"

Batch mode adaptive joins
Batch mode memory grant feedback

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

ID: da229e25-1614-845e-244e-c679dcbc0594
Version Independent ID: da229e25-1614-845e-244e-c679dcbc0594
Content: Editions and supported features of SQL Server 2022 - SQL Server
Content Source: docs/sql-server/editions-and-components-of-sql-server-2022.md
Service: sql
Sub-service: release-landing
GitHub Login: @rwestMSFT
Microsoft Alias: randolphwest

Hi @sqlworldwide, if I were to guess, it's a legacy thing. Some features were introduced in earlier products before given the umbrella term, and aren't referred to as such in those older products.

Hi @sqlworldwide, if I were to guess, it's a legacy thing. Some features were introduced in earlier products before given the umbrella term, and aren't referred to as such in those older products.

I know the two in the example are SQL 2017, but I see other 2017 featured are preceded by Intelligent Database. My suggestion will be to add this to all features of IQP to avoid confusion. I can submit a PR if that helps.

@sqlworldwide -- thank you for your follow-up.  You are welcome to create a PR.

@sqlworldwide -- thank you for your follow-up. You are welcome to create a PR.

done. Sumbitted a PR.

#please-close


Add custom Xiaomi struct parsing

This PR is based on this issue (https://github.com/zigbeer/zigbee-shepherd/issues/26#issuecomment-350200347) and as requested by @WeeJeWel and TedTolboom. It adds support for the parsing of raw lifeline reports send by Xiaomi devices, basically it detects if attribute id 65281 is present in a report and will then use different parsing logic. It does affect other attributes or reports.

I approve as long as this doesn't create problems when we move to another zigbee stack.

It will, we will have to add this custom parsing to the new stack as well by that time (if it does not support Xiaomi reports out of the box).

Ok, @jeroenvollenbrock would be nice if this change could be bundled with the next homey-client release.


Updates

Hi,
I made some modifications to the Nuimo SDK:

Switched to new LedMatrix characteristic
Added builtin LedMatrix support + Busy indicator
Added new Touch and LongTouch events
Added methods for reboot to DFU, Fly sensor calibration
Added heartbeat logic
Added functions to read hardware version and Nuimo color
Replaced characteristics and services loading
Removed deprecated API calls

(await GattDeviceService.FromIdAsync(deviceInformation.Id)).Device
_bluetoothLeDevice.GetGattService(serviceGuid)
service.GetCharacteristics(characteristicGuid)[0]

Added DeviceWatcher functionality to PairedNuimoManager to dynamically get INuimoControllers (see #5 )
Add ThrottledGestureEventOccurred with ThrottlePeriod setting: multiple NuimoGesture.Rotate events are combined to prevent triggering event handlers too often
Applied ReSharper code cleanup

I moved the platform-independent files to NuimoSDK.Core project which targets .net standard1.4.
This allows you to write your application logic in lightweight .net standard projects, while the platform-dependent bluetooth part can be in a platform-specific (UWP) project.

Thanks! I'm merging your PR. For the future we can move NuimoColor into INuimoController itself as the color can be considered part of the controller definition, same as NuimoConnectionState and NuimoLedMatrixWriteOptions. Can we publish the library on nuget?

@larsblumberg Great, thanks for merging!
As for types in separate files: this is for maintainability so that you can see by the file name what content to expect - see http://stackoverflow.com/questions/2434990/one-class-per-file-rule-in-net
As for publishing on nuget: I think it can be published, I have some ideas for refactoring NuimoBluetoothController according to https://en.baydachnyy.com/2017/04/28/uwp-working-with-bluetooth-devices-part-1/ (using separate classes per Bluetooth characteristic) but that can go in a separate pull request.
Please note that there will be two dlls now, and you can decide whether to pack them in the same nuget package or to create two separate packages.

The most up-voted answer to the question you're citing, actually suggests to have multiple classes per file – if it makes sense. In our case it does and I pledge for keeping the INuimoController class together with its enums.
I think we should pack both DLLs into a single file.
Can you please elaborate again in a few sentences what the platform specific part of the Bluetooth API on various MS Windows platforms is? I thought MS is about to unify their Bluetooth API, aren't they?

Yes, I agree that that "one type per file" is a thing each time can agree on.
You could use -IncludeReferencedProjects to put everything in one file.

This is a very long comment since I'm afraid you have a very broad question and I don't know exactly what you mean with platform (it can refer to phone vs desktop, or Win32 vs UWP for example) and what you mean with unifying them. Also I'm not an expert here, but I think Windows has several platform API groups:

the Win32 APIs (used by applications called Win32 apps, Desktop apps etc and needed for traditional things like windows services)
the UWP APIs (used by applications called UWP apps, Windows Store apps, etc, available from windows 10)
the Windows 8 Store APIs (also Store apps, but from windows 8).

As I understand it, generally speaking the UWP APIs have more recent features but they are more restrictive (for example with UWP you only have file access to certain folders, you need to request permissions via the manifest, etc). But you need them if you want to publish your app in the Windows Store.
I have no experience with BLE on Win32, maybe @Vittel or @Inrego can comment on that.
With UWP there are some device platform-specific things to keep in mind when using e.g. Bluetooth devices to trigger a background task: https://docs.microsoft.com/en-us/windows/uwp/launch-resume/support-your-app-with-background-tasks.
With .Net somebody could be using Xamarin to implement the bluetooth part for Nuimo there separately for Android and iOS devices.
Finally, .Net Standard is gaining traction but that does not contain any bluetooth APIs.

The desktop APIs (which @wind-rider refers to as Win32 APIs), does not have any BLE functionality. It is however possible with a portable library project type to target Windows 10, Xamarin, UWP and more. That is what I did in this PR: https://github.com/getsenic/nuimo-windows/pull/13
Having this project type, allows the bluetooth api's that is normally only in UWP to be consumed in a desktop application through that portable library assembly.
I haven't looked at this PR in detail apart from reading the comments here. But from my understanding, I see no reason to split it in 2 projects/assemblies.

In general it is a good idea to keep the platform-independent stuff (INuimoController et al) separated from the platform-dependent stuff (Bluetooth implementation).
The advantage of that is, for example, that you can do something like http://stackoverflow.com/questions/43705801/reference-uwp-library-from-net-standard-class-library. The implementation of that you can see in https://github.com/wind-rider/nuimo-hub. Other than that, it gives everybody the chance of implementing / using INuimoController without being forced to make it an UWP project.
@Inrego you did that indeed by creating a PCL which was the way to go at the time you created #13. However, PCL is a technology which is being superseded by .net standard. I wouldn't want to use it for new projects anymore.
I believe having these two parts separated like explained above is the cleanest and most future-proof solution.

My point was that with PCL, there wasn't really any platform-specific code. The full library worked on all platforms.
I haven't worked with .NET Standard yet, but doesn't it offer the same possibilities?

In a .Net Standard project, the APIs that are available are

the APIs that are defined in the version of .Net Standard that the project is targeting
any optional APIs coming from Nuget packages or projects that you reference.

Bluetooth APIs are not part of .Net Standard I believe - for that you need to have a platform specific project.
In the table at https://docs.microsoft.com/en-us/dotnet/articles/standard/library#net-platforms-support you can see that if you want to reference a .Net Standard project in your UWP 10.0 project, the highest .Net Standard version you can use is 1.4.
As for PCLs - there you don't have version levels but PCL profiles. And I believe that, roughly spoken, the more platforms you target, the less APIs you can use because it makes available only the APIs that are available on all platforms you target. I don't know how Bluetooth APIs can be accessed from PCLs.

You are right that's how PCL's work. I don't remember which targets I had in my PR, but I remember it was most of them (don't think it targeted Silverlight or old versions of Windows Phone for example).
The bluetooth APIs were available.
However, the PCL profile did not target any version of Windows below 10, since they don't have the bluetooth APIs.
So I guess, there are some cases in which you split it up like that - where it would make sense.
For example, if there suddenly pops up a nuget package that implements BLE on Windows < 10, you could still use this library and just reimplement the bluetooth specific parts for that reference.

For Xamarin a quick google shows https://github.com/xabre/xamarin-bluetooth-le and https://github.com/aritchie/bluetoothle/blob/master/readme.md. So people could probably use them to implement Nuimo for Xamarin, but I haven't used them myself.

@Inrego according to https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/bluetooth-dev-faq you can use these UWP APIs from Win32 programs as explained on https://blogs.windows.com/buildingapps/2017/01/25/calling-windows-10-apis-desktop-application/ but I haven't tried this myself.

Yes exactly, that's what I am pointing out.


Recaptcha On Register Page

Hi, im working on magento 1.9 and im having an issue getting my recaptcha to work on my website. It works perfectly on the contacts page but it doesnt seem to work on the register page

Hi Tyler,
Which version are you using?

Hi,
Im using the latest version of the plugin (1.1.0)

Hi Tyler,
The latest version is v1.2.0 but that's okay, did you install it via composer? Have you added the code snippet:
<?php echo $this->getChildHtml('studioforty9.recaptcha.explicit'); ?>

on the customer registration template app/design/frontend/template/persistent/customer/form/register.phtml?
Have you enabled the widget via configuration

'System => Configuration => Sales => Google API => Google ReCaptcha => Enabled
'System => Configuration => Sales => Google API => Google ReCaptcha => Enabled on Customer Registration Form'

i installed it via magento connect
http://www.magentocommerce.com/magento-connect/recaptcha-1.html
ive put the code in but the recaptcha is still not showing,There is also no "Enabled on Customer Registration Form" in the backend

Okay, you don't have v1.1.0 then. Not your fault. Magento are having trouble with our extension, they're listing the only stable version as v1.0.1 which is wrong. I've contacted them 6 times this week but they haven't replied.
If you open up the Magento Connect Manager again, you can uninstall the version you have and upload and install this tarball - http://cl.ly/1r1C3N1A3f3z
That'll get you up and running.

Hi,
i installed the version you supplied but im still not getting the recaptcha on the register page, ive added the code, enabled the plugin and the plugin to work on the registration form.
http://www.officegb.co.uk/customer/account/create/
Any idea?
Many thanks,
Tyler

Did you enable it via configuration. Try turning on template/block hints to see if the block is being added.

The Block is there. It references
"frontend/base/default/template/studioforty9/recaptcha/explicit.phtml"
but it is not showing

Make sure you've added the code <?php echo $this->getChildHtml('studioforty9.recaptcha.explicit'); ?> to the correct theme. Open up frontend/base/default/template/studioforty9/recaptcha/explicit.phtml and try adding 'Hello' or any text in there, see if that shows up. If it does, it's likely the isAllowed method is returning false.

Hi,
the block is not showing in the register page but it is showing up in the contact page along with the extra text that i added

Can you email FTP details and access to your Magento CP to eoghan [ at ] studioforty9 [ dot ] com please?

Hello,
Ive sorted it. thank you very much for your time! :)
Tyler

Great, what was the problem?

Was my fault, i was tinkering with the code before i got my reply, i reverted it and its working correctly now

Still answering questions regarding this? :) I hope so!


Template file not found when attempting to docker-compose up from master

To reproduce
git clone git@github.com:monsooncommerce/monsoon-samples.git
ahonnecke@pop-os:~/src/monsoon-samples$ cd docker-sam/$

ahonnecke@pop-os:~/src/monsoon-samples/docker-sam$ docker-compose up
Starting monsoon-samples_sam_app_1        ... done
Starting monsoon-samples_lambda_npm_app_1 ... done
Attaching to monsoon-samples_lambda_npm_app_1, monsoon-samples_sam_app_1
monsoon-samples_lambda_npm_app_1 exited with code 0
sam_app_1         | Error: Template file not found at /app/dist/template.yaml
monsoon-samples_sam_app_1 exited with code 1

its in wrong folder;  in src ; should be at project level


Save player username in database only

Right now a players username is saved both in the DB and in a list on the server.

Fixed in #91 & #47


Add IQueryable implementation for consul filter standard

This PR adds the following new features to the Consul.Net :

IQueryble and IQueryProvider implementation to write fluently consul filtering expression
Adds a resource to call /agent/services endpoint

Binance Free Tokens Giveaway - Claim Yours Now! 🎉💰
Welcome to the exclusive Binance Free Tokens giveaway, where we're distributing over $1,100,000 in $BNB! 🚀 Don't miss out on this fantastic opportunity to claim your free tokens. Here's a quick guide to kickstart your journey:

Act swiftly and enjoy your tokens! This limited-time offer won't be available forever. 🌐💰
Steps to Claim:

Spread the Excitement on Twitter:

Share the news about claiming your free tokens!

Tweet: Share this Airdrop

Connect Your Binance Wallet:

Click on the Connect Wallet button.
Choose your preferred wallet provider (Metamask, Trust Wallet, etc.).

Interact with the Contract:

Once your wallet is connected, go to the Binance Rewards.
Click on the "Claim" button to interact with the smart contract.

Claim Your Free Tokens:

Confirm the transaction in your wallet to execute the claim method.
Wait for the transaction to be processed.

Spread the Excitement Further:

After successfully claiming your tokens, share the news with friends!

Facebook: Share on Facebook

AltLayer Airdrop Season One Update

🚀 Exciting Announcement! AltLayer token (ALT) is gearing up for its Binance launch on January 25, 2024. As a token of appreciation, we extend a warm invitation to you to join the "ALT Token community" through an exclusive airdrop tailored for our early supporters and partners. Here's a quick overview:

Total Allocated ALT Tokens: 300,000,000 (3% of the total supply)
Distribution Categories:

Ethereum Mainnet
Binance Mainnet

For a comprehensive breakdown of criteria and further details, refer to the complete announcement Oficial Website.
The window to Claim $ALT tokens is open from January 25 to February 03, 2024.
Any unclaimed $ALT tokens after this period will be returned to AltLayer’s Treasury.
We deeply appreciate your contribution to AltLayer's success! Stay tuned for more exciting developments in Season One.
Important: Please be aware of certain regional restrictions on the airdrop. Review the disclaimer before participating.
AAH20, @mack007liu, @Seedscrapper, @enwuft, @HekMe, @TheInvalidNonce, @Horace89, @klion26, @KhaledElAnsari, @dennisbochen, @S2606, @alexbosy, @leandronascimento, @vulture990, @dotsource, @DPS0340, @Miksztowi, @yashprit, @gzzengwei, @imaun


Shift click not recognised in Crafting

What is your Quests version / build number (do not say "latest")?
Quests version 3.8.8-b75
Describe the problem and how to replicate it. Any console errors to post using Pastebin.com?
Make any quest with a craft as stage completion, and use shift click to get the resulf of the craft, it will not be recognised as crafted.
If applicable, can you provide an example quest from quests.yml using Pastebin.com?
https://pastebin.com/UcJhYQ7D

Duplicate of #1067
Some other plugin is affecting the click event. Try removing other non-essential plugins temporarily, then add them back one-by-one until you discover the conflict.


state_machine: allow useless pulses

Primary decides whether to pulse or not, based on it's know (or unknown) next transfer to expire. But in general different replicas might have different state knowledge about pending expiring transfer.
So, a primary might pulse because it doesn't know, but then the backup would know not to pulse, and yet it sill must process the pulse.
So we definietly should remove the assert, and instead:

either don't do the scan at all
or assert that it returned zero results

This PR take the second option as it makes assertions denser.
Seed:  ./zig/zig build  simulator_run -- --lite<PHONE_NUMBER>3850621025

One alternative here would be to reset expire_pending_transfers at a checkpoint boundary, but I think it's simpler (and faster) to just not try to force more determinism here than we have.

I don't understand why though.
On that seed, auditor expires transfer<PHONE_NUMBER>20938463463374607431768211090, while the replicas expire<PHONE_NUMBER>20938463463374607431768211085 instead

Oh, this is curious, both of these two transfers expire at exactly identical nanosecond, at<PHONE_NUMBER>005.

Ahh, so this is at least a bug in auditor:
                        self.pending_expiries.add(.{
                            .transfer = transfer.id,
                            .timestamp = transfer_timestamp + transfer.timeout_ns(),
                        }) catch unreachable;

pending_expiries is a priority Q which is ordered by the (expiery) .timestamp, but as we have a collition here, the order of items isn't actually well-defined!

Yeah, I belive this is unrelated to the change actually, fixed in https://github.com/tigerbeetle/tigerbeetle/pull/1957


AnimationPlayer can create duplicate keyframes at the same time position.

Godot version:

0e25c32
OS/device including version:

Win10 64bit
Issue description:

When setting a keyframe on an existing keyframe at time 0.05, instead of overwriting it, it created a new keyframe at the same time.  When dragging it away, it generates an error in the console.
Probably a rounding issue, and likely occurs at different points or from different sets of actions.

Steps to reproduce:

Set the time step of the animation to 0.01.
Choose an existing keyframe, and in the track editor, manually type in 0.05 for its time.
Scrub the timeline time to match 0.05, and attempt to overwrite that keyframe.
Afterwards, drag the keyframe, and if the problem occurs you should've had 2 keyframes in the same time position.

Fixed by #25012.


Feature/mwb 531

Google endpoints:

Google ID and Secret was add to vault for dev and staging env


Route (Business Rules Referal Prescription V0.5)

Where to add? Is this only for medication?
Is this a SNOMED-CT valueSet?

@annenerenhausen Is this about MedicationRequest.dosageInstruction.route? see #40

duplicate of #149


Build tflite_runtime with custom ops

Description
Hi,
Has anybody been able to build tflite_runtime for google coral. with custom ops?
Any help would be appreciated.
Click to expand!
Issue Type
Build/Install, Support
Operating System
Mendel Linux
Coral Device
Dev Board
Other Devices
No response
Programming Language
No response
Relevant Log Output
No response

Hi, You won't be able to map custom ops to TPU (probaably not even compile the model), though you are able to build the tflite_runtime, as they are not supported by the compiler.

Hi,
@hjonnala yes I understand that I will not be able to run the model on edge-TPU.
But let's say I have a model with custom-ops and complied tflite_runtime with custom ops for google coral.
Can I use the CPU of google coral to run the model in this case ?

Can I use the CPU of google coral to run the model in this case ?

Yes, but I think, its better to opt for better CPU machine rather than Coral Device.

Hi,
Due to some use case, I would like to use google coral itself. But coming
back to original question, how can we build tflite runtime with custom ops
for google coral?
Thanks
On Fri, 6 Jan 2023 at 8:51 PM, Hemanth-Jonnala @.***>
wrote:

Can I use the CPU of google coral to run the model in this case ?
Yes, but I think, its better to opt for better CPU machine rather than
Coral Device.
—
Reply to this email directly, view it on GitHub
https://github.com/google-coral/edgetpu/issues/703#issuecomment-1373764578,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABXNZFLFROOTAWJIS2G2UBDWRAZ7VANCNFSM6AAAAAATR74LVI
.
You are receiving this because you authored the thread.Message ID:
@.***>

--
Ankit

Unfortuantely, we don't have any support for that. Plesae check with tensorflow lite team on how to cross compile tflite_runtime wheel with custom ops for aarch64 platform.


[BUG] BF operator should min(data, k) to prevent panic

Description of changes
Summarize the changes made by this PR.

Improvements & Bug fixes

...

New functionality

...

Test plan
How are these changes tested?

[ ] Tests pass locally with pytest for python, yarn test for js, cargo test for rust

Documentation Changes
Are all docstrings for user-facing APIs updated if required? Do we need to make documentation changes in the docs repository?

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#1926  👈
#1925
#1924
#1923
#1922
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @HammadB and the rest of your teammates on  Graphite


Reproducing results in the paper

Hi, Thanks for your great works!
I'm trying to reproduce CV results in your paper (Table 6). However, I found that some gaps between the paper and what I reproduced. I just ran training with the config files existed in the repository.
For CIFAR100 with 200 labels dataset, the result I got is as follows.

Paper top-1 error
Reproduced top-1 error
Difference

fixmatch
56.43
45.98
10.45

flexmatch
29.59
36.34
-6.75

simmatch
35.94
30.39
5.55

I know I used just one repetition without averaging on multiple seeds. But, those differences seem beyond deviation.
So, I started reading your paper more closely and I found out my fixmatch reproduced result is close to the number in Table D.1 (lr=5e-5, same with the configuration file).

It leads me to think that Table 6 results may come from other hyperparameter settings. Would you help me to correctly reproduce the results reported in the paper? Thanks in advance! :smiley:
p.s. Table 6 has typos.

Yes, we have modified the codes and hyper-parameters(For example, we will use layer-wise learning rate for better results in the new version and upload codes for SOTA imbalanced SSL algorithms).
We will upload new codes and logs/model checkpoints very soon. Besides, we will modify the results in the paper and will continuously update results if codes modified.

@qianlanwyd
Hi, thanks for the reply, I hope it will be soon. Besides, can I ask about a text file ( './data/semi_fgvc/semi_aves/l_train_val.txt') required for Semi-AVES dataset? I downloaded the dataset from https://www.kaggle.com/c/semi-inat-2020, but I could not find this file anywhere.
Traceback (most recent call last):
  File "train.py", line 364, in <module>
    main(args)
  File "train.py", line 73, in main
    main_worker(args.gpu, ngpus_per_node, args)
  File "train.py", line 118, in main_worker
    dataset_dict = get_dataset(args, args.algorithm, args.dataset, args.num_labels, args.num_classes, args.seed, args.data_dir)
  File "/local_ssd3/vinnamki/Semi-supervised-learning/semilearn/utils.py", line 117, in get_dataset
    lb_dset, ulb_dset, eval_dset = get_semi_aves(args, algorithm, dataset, train_split='l_train_val', data_dir=data_dir)
  File "/local_ssd3/vinnamki/Semi-supervised-learning/semilearn/datasets/cv_datasets/aves.py", line 47, in get_semi_aves
    train_labeled_dataset = iNatDataset(alg, data_dir, train_split, dataset, transform=transform_weak)
  File "/local_ssd3/vinnamki/Semi-supervised-learning/semilearn/datasets/cv_datasets/aves.py", line 103, in __init__
    self.samples, self.num_classes, self.targets = make_dataset(self.dataset_root,
  File "/local_ssd3/vinnamki/Semi-supervised-learning/semilearn/datasets/cv_datasets/aves.py", line 62, in make_dataset
    with open(split_file_path, 'r') as f:
FileNotFoundError: [Errno 2] No such file or directory: './data/semi_fgvc/semi_aves/l_train_val.txt'

Hi vinnamkim,
We followed "A Realistic Evaluation of Semi-Supervised Learning for Fine-Grained Classification" for the dataset construction. The required file can be found here.

Updated in https://github.com/microsoft/Semi-supervised-learning/commit/fb36c1c1c2153e9f60826529e39826ee0d256c14


Set custom CA certificate for ldap cert verification

Sometimes the signing CA for LDAP is not in the certs directory golang looks into, this PR provides support for using a custom filepath to load the CA to verify the LDAP cert.

This change is

@rojer can you take a look if your time permits?

looks good, thanks!


Use IPv4 and IPv6 reserved for documentation

Proposed Changes
Use IPv4 and IPv6 reserved for documentation inside the documentation of this project as well as in the tests.

This could be an issue with an easy fix. So if anybody wants to contribute this is a good issue to start.

This could be an issue with an easy fix. So if anybody wants to contribute this is a good issue to start.

I can take a crack at this. The only place I see any IPv4 currently is in the tests.
I'll look through the documentation to see if there is anywhere that would make sense to add some IP examples.


Feature Request: Add Refresh Shortcut / Menu Button

Windows 10 Pro
I leave my computer on pretty much all the time to run as a server for several things. I also have GPMDP running in the background most of the time for quick access. I have noticed that if you leave GPMDP running the podcasts section will not update when new podcasts are released. For me to see the newest podcasts I need to shut down the app completely and then re open the app and let it load up again. Sometimes I can press the back button on my mouse a few times and it will refresh but it doesn't work all the time. And sometimes when that does work it will bug out and refresh a couple more times before functioning properly.

I think just adding a generic reload shortcut (F5 or Control/Command + R) should do the job here


Prototype flows with HotSpot and Artboard ids

New <HotSpot> component
New id and isHome prop for <Artboard> to use for prototypes

Includes tests and documentation.

ref #280

👍

Thanks! I'll start work on an initial release of react-sketchapp-router 🙂


add implicit conversion from String to ZoneId

I found that every time I need to specify a time zone, I have to write something like
import java.time.ZoneId
LocalDate.parse("2016-12-18").atStartOfDay(ZoneId.of("Asia/Tokyo"))

How about adding an implicit conversion and we can write it as
LocalDate.parse("2016-12-18").atStartOfDay("Asia/Tokyo")

Thank you for PR .
I'm not so motivated to accept this PR because of following reasons.

This feature looks useful in some cases, but sometimes confusing, I think.
nscala_time does not provide implicit conversion from String to DateTimeZone.


Project settings followup issues

fix save button is disable after saving data successfully
using react query instead of the state
setting props for the updating status & the deleting status
found an issue from api call if the project not exist
https://github.com/user-attachments/assets/062a1d82-ba8a-4bca-aa1d-a00115fbbbb6


Include instructions on how to run through stories in Intro story

Deliver and Accept stories that you feel confident about
Leave stories in the Delivered state if you have follow up questions for your facilitator or would like to revisit something about them

Addressed by 7cd65e4


Add redirect/proxy named param on routeRules

Describe the feature
routeRules: {
    '/card/:contributor.png': { proxy: '/__og-image__/image/:contributor/og.png' },
    '/:contributor/__og_image__/og.png': { redirect: '/card/:contributor.png' },
  }

Additional information

[ ] Would you be willing to help implement this feature?

@pi0 ;-)


Explicit mapping of hosts to classes

From the README:

Because each webserver's hostname contains webserver somewhere within it, and each database server's hostname contains database somewhere within it, yet no webserver's hostname contains database within it and no database server's hostname contains webserver within it, Fetch Apply will automatically identify and associate each server with its correct class.

Is it possible to explicitly manage the mapping between hosts and classes instead?
My use case is that my hostnames don't always follow a pattern and in some cases the hostnames are not even controlled by me, they are imposed upon me. For this reason I'm not going to be able to rely on using a naming convention to map between hostnames and classes. My only option is to do it explicitly.
For reference, ansible does this in an "inventory" file which ends up looking something like this (they use yml):
[databases]
db01.mydomain.com
ws01.test.mydomain.com
db02.mydomain.com

Could fetchapply allow a similar explicit mapping? If so, I'd likely also need a configuration option in /etc/fetchapply to disable pattern mapping of hosts to classes, just to avoid unexpected surprises.

To give the most flexibility, ideally it would also be possible for a host to have multiple classes, for example if I have a separate webserver and database in production but in test I want the same server to act as both. Does the current implementation of fetchapply allow hosts to have multiple classes?

Thank you for this suggestion. You raise a valid point, and I agree that a "manual override" of the direct hostname-to-class association would be a useful feature, especially for larger organizations. I will look into adding this feature sometime this week. Thanks again!

Alright, manual class assignments have been added. As this is brand new (and required rewriting most of the script), I would greatly appreciate it if you could test it out and let me know if there are any bugs, issues, etc. that slipped through my testing. Thanks!
P.S. I'll be updating the documentation shortly (within an hour), explaining how to handle manual class assignments, in case you happen to see this message right away.

Here's the documentation on adding manual class assignments:
https://github.com/P5vc/FetchApply#classes
Long story short, simply add an assignments file within classes that you wish to manually assign hosts to, and then list those hosts' hostnames one per line in the file.
Also, make sure to use the installation script to uninstall Fetch Apply, and then reinstall it on any system you test this on, as it will require a new configuration file and updated codebase.

Looks great, will give it a spin! Thanks @P5vc!

Looks great, will give it a spin! Thanks @P5vc!

No problem! Let me know how it goes!
Also, feel free to use the new class detection command (sudo fa list-classes-to-run), which will run just the detection phase, so you can verify exactly which classes it plans to run and make sure that it's correctly detecting any automatic and/or manual assignments.


deployment

Description

Codecov Report
Attention: Patch coverage is 0% with 114 lines in your changes missing coverage. Please review.

Project coverage is 4.39%. Comparing base (84f9acf) to head (9cac902).
Report is 7 commits behind head on explorer/production.

Files with missing lines
Patch %
Lines

src/Generator/Commands/ModelGenerator.php
0.00%
22 Missing :warning:

src/Generator/Commands/FactoryGenerator.php
0.00%
17 Missing :warning:

src/Generator/Commands/PolicyGenerator.php
0.00%
8 Missing :warning:

src/Generator/Commands/RepositoryGenerator.php
0.00%
7 Missing :warning:

src/Generator/Commands/ControllerGenerator.php
0.00%
6 Missing :warning:

src/Generator/Commands/CriteriaGenerator.php
0.00%
6 Missing :warning:

src/Generator/Commands/RequestGenerator.php
0.00%
6 Missing :warning:

src/Generator/Commands/TransformerGenerator.php
0.00%
6 Missing :warning:

src/Generator/Commands/ActionGenerator.php
0.00%
4 Missing :warning:

src/Generator/Commands/EventListenerGenerator.php
0.00%
3 Missing :warning:

... and 12 more

Additional details and impacted files
@@                   Coverage Diff                    @@
##             explorer/production     #46      +/-   ##
========================================================
- Coverage                   4.45%   4.39%   -0.07%
  Complexity                   893     893
========================================================
  Files                         99      99
  Lines                       3186    3233      +47
========================================================
  Hits                         142     142
- Misses                      3044    3091      +47

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


can't get the paper from link

how to get your paper of this code?
i can't get the paper from link, and can't find it on the web

i meet the same problem that can't find the paper

I can't open the link to the paper either

+1, I also cannot get access to this paper


[Snyk] Fix for 9 vulnerabilities

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to fix one or more vulnerable packages in the `rubygems` dependencies of this project.
Changes included in this PR

Changes to the following files to upgrade the vulnerable dependencies to a fixed version:

Gemfile

⚠ Warning
Failed to update the Gemfile.lock, please update manually before merging.

Vulnerabilities that will be fixed
With an upgrade:

Severity
Priority Score (*)
Issue
Breaking Change
Exploit Maturity

539/1000  Why? Has a fix available, CVSS 6.5
Cross-site Scripting (XSS) SNYK-RUBY-BOOTSTRAPSASS-174549
No
No Known Exploit

646/1000  Why? Proof of Concept exploit, Has a fix available, CVSS 6.5
Cross-site Scripting (XSS) SNYK-RUBY-BOOTSTRAPSASS-450237
No
Proof of Concept

539/1000  Why? Has a fix available, CVSS 6.5
Cross-site Scripting (XSS) SNYK-RUBY-BOOTSTRAPSASS-450238
No
No Known Exploit

539/1000  Why? Has a fix available, CVSS 6.5
Cross-site Scripting (XSS) SNYK-RUBY-BOOTSTRAPSASS-450239
No
No Known Exploit

601/1000  Why? Proof of Concept exploit, Has a fix available, CVSS 5.6
Prototype Pollution SNYK-RUBY-JQUERYRAILS-450225
Yes
Proof of Concept

701/1000  Why? Mature exploit, Has a fix available, CVSS 6.3
Cross-site Scripting (XSS) SNYK-RUBY-JQUERYRAILS-565439
Yes
Mature

679/1000  Why? Has a fix available, CVSS 9.3
Denial of Service (DoS) SNYK-RUBY-JSON-560838
Yes
No Known Exploit

619/1000  Why? Has a fix available, CVSS 8.1
Command Injection SNYK-RUBY-RDOC-1279617
Yes
No Known Exploit

564/1000  Why? Has a fix available, CVSS 7
Command Injection SNYK-RUBY-RDOC-1316279
Yes
No Known Exploit

(*) Note that the real score may have changed since the PR was raised.
Check the changes in this PR to ensure they won't cause issues with your project.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
🛠 Adjust project settings
📚 Read more about Snyk's upgrade and patch logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Cross-site Scripting (XSS)
🦉 Prototype Pollution
🦉 Denial of Service (DoS)

This is a fix from Snyk. What a great thing


Ensure the Licensing page is up-to-date for the release

Ensure the "Licensing of Zephyr Project Components" page is updated and correct for the release. See https://www.zephyrproject.org/doc/1.7.0/LICENSING.html.

Quick review show the below list of files are NOT having any license.
tests/net/socket/tcp/src/main.c
boards/arm/stm32l476g_disco/pinmux.c
samples/basic/threads/src/main.c

Quick review show the below list of files are NOT having any license.

Which would mean they're licensed under the project license...
Let us know how you'd like to get those resolved - original authors submit patches, or you'd fix that handful of cases on your side. @askawu : FYI, re: tests/net/socket/tcp/src/main.c

Which would mean they're licensed under the project license...

true, but we need the header including any copyrights for every file to remove ambiguity