Synology issues

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
I use like this.
docker run -d
--name palworld-eklipc
-p 8211:8211/udp
-p 27015:27015/udp
-v /volume1/docker/palworld:/palworld/
-e PLAYERS=16
-e PORT=8211
-e PUID=1000
-e PGID=1000
-e COMMUNITY=false
thijsvanloef/palworld-server-docker
When I run it, I need to restart the dsm.
And that's why I removed reboot all the time because otherwise the dsm will let me dumb.
Desktop (please complete the following information):

OS: Synology 7.1
Browser firefox
Version latest

docker-compose.yml contents

Container/Host Logs
WARNING: Error loading config file: .dockercfg: $HOME is not defined
1dea44f8d29e0c518a84720ecf069151e4836f41460506cd36e8b7878a598db8
Additional context

What version of docker are you running on your NAS?
docker --version

Docker Version 20.10.3, build 55f0773

are you able to run?

docker run hello-world

Sure, work it!

Are you able to run:
docker run -d
--name palworld-eklipc
-p 8211:8211/udp
-p 27015:27015/udp
-e PLAYERS=16
-e PORT=8211
-e PUID=1000
-e PGID=1000
-e COMMUNITY=false
thijsvanloef/palworld-server-docker

WARNING: Error loading config file: .dockercfg: $HOME is not defined
"docker run" requires at least 1 argument.
See 'docker run --help'.

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container
/volume1/Descargas/palworld eklipc/1705867146/script.log: line 2: --name: command not found
/volume1/Descargas/palworld eklipc/1705867146/script.log: line 3: -p: command not found
/volume1/Descargas/palworld eklipc/1705867146/script.log: line 4: -p: command not found
/volume1/Descargas/palworld eklipc/1705867146/script.log: line 5: -e: command not found
/volume1/Descargas/palworld eklipc/1705867146/script.log: line 6: -e: command not found
/volume1/Descargas/palworld eklipc/1705867146/script.log: line 7: -e: command not found
/volume1/Descargas/palworld eklipc/1705867146/script.log: line 8: -e: command not found
/volume1/Descargas/palworld eklipc/1705867146/script.log: line 9: -e: command not found
/volume1/Descargas/palworld eklipc/1705867146/script.log: line 10: thijsvanloef/palworld-server-docker: No such file or directory

ah sorry my bad, the following command:
docker run -d \
--name palworld-eklipc \
-p 8211:8211/udp \
-p 27015:27015/udp \
-v /volume1/docker/palworld:/palworld/ \
-e PLAYERS=16 \
-e PORT=8211 \
-e PUID=1000 \
-e PGID=1000 \
-e COMMUNITY=false \
thijsvanloef/palworld-server-docker

The command seems to work in this case without exploiting the dsm but if you do a docker ps it appears in terminal and in the graphical environment it does not.

In the end I managed to install the server with the qmarchi/palworld iso But the solution would be similar for others.
I noticed that when the container was running it did it from a folder called /game. And in this case it does it with the user /Root, so it installs everything in the root. With thijsvanloef's image I got the feeling that it did it with the user: Steam and I got an error.

The docker folder mapping should look like this

I successfully deployed the server on my synology nas, synology version 7.2.1 docker using the latest container manager, deployed using docker compose, the volume location is in the /docker/palword-server directory and there are no Errors

I experienced the same problem on my Synology NAS, but unfortunately I used “--restart unless-stopped“, so my Synology NAS would enable the docker container as soon as the system was started, and then the entire NAS would not work. Is there any way to change this?

I experienced the same problem on my Synology NAS, but unfortunately I used “--restart unless-stopped“, so my Synology NAS would enable the docker container as soon as the system was started, and then the entire NAS would not work. Is there any way to change this?

没错我也遇到了这个问题    我去把我的群辉强制关机再重启就连上了（此时dokcer是未启动的状态）   如果还是不能连的话多重试几次    我的理解是重复重启总有一次ssh服务是比docker启动的快的  能连上ssh就可以把这个 container 关掉了

I experienced the same problem on my Synology NAS, but unfortunately I used “--restart unless-stopped“, so my Synology NAS would enable the docker container as soon as the system was started, and then the entire NAS would not work. Is there any way to change this?

turn off your dsm, turn it on and quickly connect via ssh.
dokcer ps -a
docker stop idcontainer

In the end I managed to install the server with the qmarchi/palworld iso But the solution would be similar for others.
I noticed that when the container was running it did it from a folder called /game. And in this case it does it with the user /Root, so it installs everything in the root. With thijsvanloef's image I got the feeling that it did it with the user: Steam and I got an error.

The docker folder mapping should look like

Folder file (left): the address of the folder where we want to put the files from the server. y Mount path (Right): the path we found before.
we start the docker and... tachan!
We see all the files! And I was able to upload my save from another dedicated server! 🥇
But now it won't let me touch the server name in the DefaultPalWorldSetting.ini file. If I touch the file it becomes defaults.👎
We will continue to work

Hey, could you explain this in more detail?
I'm struggling to get this set up with any docker image and a very easy to understand guide would be super appreciated!
Thanks for powering through to get as far as you have so far.

I just wanted to add 2 cents to this because I did this a few days ago (like Saturday) when I was going through testing and making a dedicated server.  Ironically, it was this one that worked the best, but I think the other 2 options just were missing a few things was all.
Anyways...
for Synology, I use Portainer to do the same docker handling instead of Synology's own.  I use Synology's own to setup Portainer initially and that solves most of the translations for Dockers.  It also will solve updating.
Now if anyone else comes across this and has never done it before with a Synology server, even if you have 1 volume, you still have to point to your folder starting with /volume1/path/to/folder.  If you have write errors, yes, linux could do the standard chown, but you can write to just the specific folder you made to all.  Simply right click the folder in DSM and click on properties, then go into Permissions.  Click Advanced Options and click "Make inherited permissions explicit" and then you can define the "Everyone" to have read & write.
Otherwise, once you use Portainer, it is literally copy and paste from the front page here and you now have it all working.
THAT SAID, with portainer, I found that I had a block port issue going and took me forever to find why, so the only change I did since 8211 has been said to be required is set the public mapping port on both the "ports" configuration and the environment "PUBLIC_PORT" setting to a different port for external access and that got it going.  "PORT" can remain default.
Hope it solves for all.

我的群辉是 DSM7.1.1-42962
昨天在跑这个项目的时候系统无响应了两次
后来就放弃了     直到我跑了另一个项目
https://github.com/jammsen/docker-palworld-dedicated-server?tab=readme-ov-file
并且在 docker-compose up 的时候看到了与这个项目同样的报错
Creating palworld-server ... done
Attaching to palworld-server
palworld-server | Executing usermod...
palworld-server | usermod: no changes
palworld-server | STARTING INSTALL/UPDATEtid(22) burning pthread_key_t == 0 so we never use it
palworld-server | Redirecting stderr to '/home/steam/Steam/logs/stderr.txt'
palworld-server | Logging directory: '/home/steam/Steam/logs'
palworld-server | src/tier0/threadtools.cpp (4213) : Probably deadlock or failure waiting for thread to initialize.
palworld-server | [  0%] Checking for available updates...
palworld-server | Thread failed to initialize
palworld-server | src/tier0/threadtools.cpp (4213) : Probably deadlock or failure waiting for thread to initialize.
palworld-server | Thread failed to initialize
于是我怀疑是系统的问题之后着手升级了我的群辉(DSM7.1.1-42962  -> DSM7.2.1-69057)
服务器就成功的跑起来了！
PS :
此外我还发现了一个有趣的东西可以带ui的配置服务器参数
https://github.com/DysonCheng/PalWorldSettingGenerator
https://dysoncheng.github.io/PalWorldSettingGenerator/setting.html

I just wanted to add 2 cents to this because I did this a few days ago (like Saturday) when I was going through testing and making a dedicated server. Ironically, it was this one that worked the best, but I think the other 2 options just were missing a few things was all. Anyways... for Synology, I use Portainer to do the same docker handling instead of Synology's own. I use Synology's own to setup Portainer initially and that solves most of the translations for Dockers. It also will solve updating.
Now if anyone else comes across this and has never done it before with a Synology server, even if you have 1 volume, you still have to point to your folder starting with /volume1/path/to/folder. If you have write errors, yes, linux could do the standard chown, but you can write to just the specific folder you made to all. Simply right click the folder in DSM and click on properties, then go into Permissions. Click Advanced Options and click "Make inherited permissions explicit" and then you can define the "Everyone" to have read & write. Otherwise, once you use Portainer, it is literally copy and paste from the front page here and you now have it all working.
THAT SAID, with portainer, I found that I had a block port issue going and took me forever to find why, so the only change I did since 8211 has been said to be required is set the public mapping port on both the "ports" configuration and the environment "PUBLIC_PORT" setting to a different port for external access and that got it going. "PORT" can remain default.
Hope it solves for all.

I have this running on my Synology DS1821+ with the "Container Manager" package from Synology.  It's super simple there to set this up.  I even found this github through its Docker Registry search interface.

I have this running on my Synology DS1821+ with the "Container Manager" package from Synology. It's super simple there to set this up. I even found this github through its Docker Registry search interface.

Same club, but I point this out because it was far easier to also setup console access within Portainer while also making sure you have the internal networks properly set.  There is a reason a place like Marius was switching to Portainer.  Also, I joined this when it wasn't in the registry yet (Day 2 of game release?).

THAT SAID, with portainer, I found that I had a block port issue going and took me forever to find why, so the only change I did since 8211 has been said to be required is set the public mapping port on both the "ports" configuration and the environment "PUBLIC_PORT" setting to a different port for external access and that got it going. "PORT" can remain default.

Can you give more details or show your set-up? I am having a weird issue where I can connect using my Local-IPAddress:8211, but not with Public-IPAddress:8211, despite port forwarding correctly in my router.

Can you give more details or show your set-up? I am having a weird issue where I can connect using my Local-IPAddress:8211, but not with Public-IPAddress:8211, despite port forwarding correctly in my router.

Use a tool to check the port from an outside source. If its blocked, its either the ISP blocking it or some other secure element is blocking it. Sometimes Stealth methods can also block it. In that case, change to a port that is much higher and see if that helps. It seems the Public Port isn't respected though for whatever reason now, but will respect the "port" configuration when starting so I just full changed the external port for 8211 on exposed and internal to the same port I chose that nothing else had access to (give you have up to 65535 I believe, too tired to reference right now as its been a long day, there is a darn good chance of finding something above 12000 that works). Make sure router setup is reflective of that. So for instance, if you wanted to try like 11000, just change the UDP Port to 11000:11000 and set the port configuration to 11000. Then make sure your router will expose port 11000 to whatever the server device is.
That should do it.

Thanks, I'm going to try your steps. I used outside checker (https://check-host.net/ --> UDP Port) and it says open. https://www.yougetsignal.com/tools/open-ports/ says closed (maybe it does TCP but not UDP)?
To be clear, you mean in the docker-compose, you changed the following (where <------- arrow is pointing)?
palworld:
image: thijsvanloef/palworld-server-docker:latest # Use the latest-arm64 tag for arm64 hosts
restart: unless-stopped
container_name: palworld-server
stop_grace_period: 30s # Set to however long you are willing to wait for the container to gracefully stop
ports:
- 8211:8211/udp  <-------------------
- 27015:27015/udp
environment:
- PUID=1000
- PGID=1000
- PORT=8211 # Optional but recommended
- PLAYERS=6 # Optional but recommended
- SERVER_PASSWORD= # Optional but recommended
- MULTITHREADING=true
- RCON_ENABLED=true
- RCON_PORT=25575
Can you share your compose file?

yes and also

PORT=8211 # Optional but recommended

Unfortunately, I cannot as I'm about to head to bed as it needs super sanitizing, but I didn't put my the env variables in an env file (though I could), I just left it in below a comment point.  But if you still want it, I'll see if I have time in the morning to post my config (sanitized of course)

Thanks - I got it working. Apparently, it might have been working for a long time. Made the mistake of trying to connect to the server (hosted on my NAS) while on the same network (i.e. both my computer and the NAS are connected to the same router). Well - turns out, in this situation, I need to connect using the local IP address of the NAS. But those on a different network, had no issue connecting using my Public IP address.

Made the mistake of trying to connect to the server (hosted on my NAS) while on the same network (i.e. both my computer and the NAS are connected to the same router). Well - turns out, in this situation, I need to connect using the local IP address of the NAS. But those on a different network, had no issue connecting using my Public IP address.

Hah at least you don't have the complexities of my network, as small as it is, having multiple subnets.  That challenge was far worse.  Glad you got it working!

Made the mistake of trying to connect to the server (hosted on my NAS) while on the same network (i.e. both my computer and the NAS are connected to the same router). Well - turns out, in this situation, I need to connect using the local IP address of the NAS. But those on a different network, had no issue connecting using my Public IP address.

Hah at least you don't have the complexities of my network, as small as it is, having multiple subnets. That challenge was far worse. Glad you got it working!

I guess I celebrated too soon. I'm still having issues. In my folder "docker > palworld > data" everything is empty. I double and triple checked that permissions are all set-up correctly, but still having issues (your steps about giving "Everyone" permissions with explicit inherit).
This guy might have the solution (docker folder mapping), but I didn't understand his instructions or where his screenshot came from: https://github.com/thijsvanloef/palworld-server-docker/issues/35#issuecomment-1905094934

In the end I managed to install the server with the qmarchi/palworld iso But the solution would be similar for others.
I noticed that when the container was running it did it from a folder called /game. And in this case it does it with the user /Root, so it installs everything in the root. With thijsvanloef's image I got the feeling that it did it with the user: Steam and I got an error.

The docker folder mapping should look like

Folder file (left): the address of the folder where we want to put the files from the server. y Mount path (Right): the path we found before.
we start the docker and... tachan!
We see all the files! And I was able to upload my save from another dedicated server! 🥇
But now it won't let me touch the server name in the DefaultPalWorldSetting.ini file. If I touch the file it becomes defaults.👎
We will continue to work

Please I need help with your instructions - where is that screenshot from for folder mapping?!

Made the mistake of trying to connect to the server (hosted on my NAS) while on the same network (i.e. both my computer and the NAS are connected to the same router). Well - turns out, in this situation, I need to connect using the local IP address of the NAS. But those on a different network, had no issue connecting using my Public IP address.

Hah at least you don't have the complexities of my network, as small as it is, having multiple subnets. That challenge was far worse. Glad you got it working!

I guess I celebrated too soon. I'm still having issues. In my folder "docker > palworld > data" everything is empty. I double and triple checked that permissions are all set-up correctly, but still having issues (your steps about giving "Everyone" permissions with explicit inherit).
This guy might have the solution (docker folder mapping), but I didn't understand his instructions or where his screenshot came from: #35 (comment)

Alright, at least I'm home so let me ask this, since this is a NAS, whatever the folder you made, you sure its pointing properly?  In other words, for the folder, if its on Volume 1, is the volume set to "Volume1/path/to/folder:game"?
Also, Marius just posted the proper instructions on the NAS, you will like his instructions which should explain it all here, but then you can go more advanced with the options here.  https://mariushosting.com/how-to-install-palworld-server-on-your-synology-nas/

Whew, I had the same problem as those above.  I stupidly set the process to auto-start and was completely locked out of my NAS.  I had to do a hard reboot, SSH in as quickly as possible to run the top command.  Thankfully once top was running, it kept resource priority and I was able to kill the docker process (I found the keyword "steam" in the list of processes).  I also used docker update --restart=no [containerName] to set the container to not auto-start.
Lesson learned -- don't set a docker container to auto-start until you've started it manually a few times and know that it works.
Now to try to figure out what the root problem is, and why this docker container runs away with the NAS.

Now to try to figure out what the root problem is, and why this docker container runs away with the NAS.

The only question I'll ask: Is Your NAS less than 6 GB in Memory?

Now to try to figure out what the root problem is, and why this docker container runs away with the NAS.

The only question I'll ask: Is Your NAS less than 6 GB in Memory?

I've got a 1515+ with 16GB of memory.  When I start the docker container, the CPU usage goes through the roof and the system becomes mostly unresponsive until I kill the container.

I've got a 1515+ with 16GB of memory. When I start the docker container, the CPU usage goes through the roof and the system becomes mostly unresponsive until I kill the container.

Hmm.  I wonder if it has to do with the outdated Docker version? If it has been updated that is for that NAS.

Is this issue still relevant?

To the initial bug or Smithore's issue about the runaway CPU?  To Smithore's issue, I can say that on the Synology, there was an update last year that fixed up Docker components by being updated to something more supported, and I think there is supposed to be another one in the next few months to really update stuff as the docker component prior to last year's update was very old.  It is why I am curious if the runaway CPU thing on Smithore's issue is only singled to a device from 2014/2015 that might have lost support.
I know on mine being a year 20/21 release, it has worked for a long time, but I prefer installing Portainer to use the initial code offered (Docker Compose) vs the accepted Docker Run format that Synology's container manager uses, but this way, I also have access to the console individually if something comes up.
But that is only my response.  I can't speak for everyone here.

I was never able to resolve this issue with my Synology DS1515+.  I am happy to continue to be a guinea pig for any potential fixes, but am also happy to move on to another solution and let this issue close without resolution, especially if we think the trouble is with a certain model / year of DS.

I have installed on an ASUSTOR NAS, for people doing this, this is exactly same as https://mariushosting.com/how-to-install-palworld-server-on-your-synology-nas/ tutorial exept one things (if you dont do that, it will write the install in a non accessible to user folder). You need to change "docker" by "Docker" in the line "- /volume1/docker/palworld-server:/palworld:rw" (yeah, just a "D" and for me, that is working fine :)

I'm still getting "dlmopen steamservice.so failed when start up."
Going to continue troubleshooting.

I fixed it by deleting my entire palworld folder inside of the docker folder. Re-created the palworld image/container/stack and then manually imported my backup saved files (using the posted method in the ReadMe), then everything fixed itself.

I try to manage to make my server accessible on the internet from my Asustor NAS but i was unable to do it. i can without problems acces from local network but not from internet. I have a port redirection on my router but it didnt know what make the server not accessible from internet.
I have read many things but also not helped because english isnt my native language and understand why isnt work and what to do is verry dificult.

I am not familiar with Asustor, but do you have a firewall on your NAS? In other words, make sure the ports are open (1) on your router and (2) on your Asustor NAS.

I try to manage to make my server accessible on the internet from my Asustor NAS but i was unable to do it. i can without problems acces from local network but not from internet. I have a port redirection on my router but it didnt know what make the server not accessible from internet.
I have read many things but also not helped because english isnt my native language and understand why isnt work and what to do is verry dificult.

I am not familiar with Asustor, but do you have a firewall on your NAS? In other words, make sure the ports are open (1) on your router and (2) on your Asustor NAS.

Have you checked if your port is open on https://www.yougetsignal.com/tools/open-ports/ or https://portchecker.co/ ?

I try to manage to make my server accessible on the internet from my Asustor NAS but i was unable to do it. i can without problems acces from local network but not from internet. I have a port redirection on my router but it didnt know what make the server not accessible from internet.
I have read many things but also not helped because english isnt my native language and understand why isnt work and what to do is verry dificult.

I am not familiar with Asustor, but do you have a firewall on your NAS? In other words, make sure the ports are open (1) on your router and (2) on your Asustor NAS.

Have you checked if your port is open on https://www.yougetsignal.com/tools/open-ports/ or https://portchecker.co/ ?

It's closed, but i really dont know how to open it on my Asustor, it's open on my router, Reverse proxy isnt same as synology and i already have a web server that use HTTP and HTTPS ports. I think the NAS didnt kwno what to do with this port from internet (but from local network with local ip it working)

I try to manage to make my server accessible on the internet from my Asustor NAS but i was unable to do it. i can without problems acces from local network but not from internet. I have a port redirection on my router but it didnt know what make the server not accessible from internet.
I have read many things but also not helped because english isnt my native language and understand why isnt work and what to do is verry dificult.

I am not familiar with Asustor, but do you have a firewall on your NAS? In other words, make sure the ports are open (1) on your router and (2) on your Asustor NAS.

Have you checked if your port is open on https://www.yougetsignal.com/tools/open-ports/ or https://portchecker.co/ ?

It's closed, but i really dont know how to open it on my Asustor, it's open on my router, Reverse proxy isnt same as synology and i already have a web server that use HTTP and HTTPS ports. I think the NAS didnt kwno what to do with this port from internet (but from local network with local ip it working)

I found this on Google: https://www.asustor.com/en/online/College_topic?topic=224
Did you try the steps there for (EZ-Router)?
Also, use this: https://check-host.net/check-udp to check if your port is open (more reliable than the other ones I shared).

I try to manage to make my server accessible on the internet from my Asustor NAS but i was unable to do it. i can without problems acces from local network but not from internet. I have a port redirection on my router but it didnt know what make the server not accessible from internet.
I have read many things but also not helped because english isnt my native language and understand why isnt work and what to do is verry dificult.

I am not familiar with Asustor, but do you have a firewall on your NAS? In other words, make sure the ports are open (1) on your router and (2) on your Asustor NAS.

Have you checked if your port is open on https://www.yougetsignal.com/tools/open-ports/ or https://portchecker.co/ ?

It's closed, but i really dont know how to open it on my Asustor, it's open on my router, Reverse proxy isnt same as synology and i already have a web server that use HTTP and HTTPS ports. I think the NAS didnt kwno what to do with this port from internet (but from local network with local ip it working)

I found this on Google: https://www.asustor.com/en/online/College_topic?topic=224
Did you try the steps there for (EZ-Router)?
Also, use this: https://check-host.net/check-udp to check if your port is open (more reliable than the other ones I shared).

I have acces on all my services that is installed on my Asustor from internet, Exept the Palworld Server (that is not in the list of EZ-Router).

I try to manage to make my server accessible on the internet from my Asustor NAS but i was unable to do it. i can without problems acces from local network but not from internet. I have a port redirection on my router but it didnt know what make the server not accessible from internet.
I have read many things but also not helped because english isnt my native language and understand why isnt work and what to do is verry dificult.

I am not familiar with Asustor, but do you have a firewall on your NAS? In other words, make sure the ports are open (1) on your router and (2) on your Asustor NAS.

Have you checked if your port is open on https://www.yougetsignal.com/tools/open-ports/ or https://portchecker.co/ ?

It's closed, but i really dont know how to open it on my Asustor, it's open on my router, Reverse proxy isnt same as synology and i already have a web server that use HTTP and HTTPS ports. I think the NAS didnt kwno what to do with this port from internet (but from local network with local ip it working)

I found this on Google: https://www.asustor.com/en/online/College_topic?topic=224
Did you try the steps there for (EZ-Router)?
Also, use this: https://check-host.net/check-udp to check if your port is open (more reliable than the other ones I shared).

I have acces on all my services that is installed on my Asustor from internet, Exept the Palworld Server (that is not in the list of EZ-Router).

So do this: "If the service that you wish to open is not on the list or you wish to set up self-defined port forwarding, you can click on [Self define]."
And open the port (default is 8211 and 27015).

I try to manage to make my server accessible on the internet from my Asustor NAS but i was unable to do it. i can without problems acces from local network but not from internet. I have a port redirection on my router but it didnt know what make the server not accessible from internet.
I have read many things but also not helped because english isnt my native language and understand why isnt work and what to do is verry dificult.

I am not familiar with Asustor, but do you have a firewall on your NAS? In other words, make sure the ports are open (1) on your router and (2) on your Asustor NAS.

Have you checked if your port is open on https://www.yougetsignal.com/tools/open-ports/ or https://portchecker.co/ ?

It's closed, but i really dont know how to open it on my Asustor, it's open on my router, Reverse proxy isnt same as synology and i already have a web server that use HTTP and HTTPS ports. I think the NAS didnt kwno what to do with this port from internet (but from local network with local ip it working)

I found this on Google: https://www.asustor.com/en/online/College_topic?topic=224
Did you try the steps there for (EZ-Router)?
Also, use this: https://check-host.net/check-udp to check if your port is open (more reliable than the other ones I shared).

I have acces on all my services that is installed on my Asustor from internet, Exept the Palworld Server (that is not in the list of EZ-Router).

So do this: "If the service that you wish to open is not on the list or you wish to set up self-defined port forwarding, you can click on [Self define]."
And open the port (default is 8211 and 27015).

I have ad it on the list (It's now on the EZ-Router and on the "UPNP" list on the router) but, when i test it say port is always closed :/

I try to manage to make my server accessible on the internet from my Asustor NAS but i was unable to do it. i can without problems acces from local network but not from internet. I have a port redirection on my router but it didnt know what make the server not accessible from internet.
I have read many things but also not helped because english isnt my native language and understand why isnt work and what to do is verry dificult.

I am not familiar with Asustor, but do you have a firewall on your NAS? In other words, make sure the ports are open (1) on your router and (2) on your Asustor NAS.

Have you checked if your port is open on https://www.yougetsignal.com/tools/open-ports/ or https://portchecker.co/ ?

It's closed, but i really dont know how to open it on my Asustor, it's open on my router, Reverse proxy isnt same as synology and i already have a web server that use HTTP and HTTPS ports. I think the NAS didnt kwno what to do with this port from internet (but from local network with local ip it working)

I found this on Google: https://www.asustor.com/en/online/College_topic?topic=224
Did you try the steps there for (EZ-Router)?
Also, use this: https://check-host.net/check-udp to check if your port is open (more reliable than the other ones I shared).

I have acces on all my services that is installed on my Asustor from internet, Exept the Palworld Server (that is not in the list of EZ-Router).

So do this: "If the service that you wish to open is not on the list or you wish to set up self-defined port forwarding, you can click on [Self define]."
And open the port (default is 8211 and 27015).

I have ad it on the list (It's now on the EZ-Router and on the "UPNP" list on the router) but, when i test it say port is always closed :/

Hmm, what router are you using (ASUS, Netgear, other?). I don't like UPNP - try disabling UPNP and manually forwarding the port (pointing to your internal NAS IP address, of course).

I try to manage to make my server accessible on the internet from my Asustor NAS but i was unable to do it. i can without problems acces from local network but not from internet. I have a port redirection on my router but it didnt know what make the server not accessible from internet.
I have read many things but also not helped because english isnt my native language and understand why isnt work and what to do is verry dificult.

I am not familiar with Asustor, but do you have a firewall on your NAS? In other words, make sure the ports are open (1) on your router and (2) on your Asustor NAS.

Have you checked if your port is open on https://www.yougetsignal.com/tools/open-ports/ or https://portchecker.co/ ?

It's closed, but i really dont know how to open it on my Asustor, it's open on my router, Reverse proxy isnt same as synology and i already have a web server that use HTTP and HTTPS ports. I think the NAS didnt kwno what to do with this port from internet (but from local network with local ip it working)

I found this on Google: https://www.asustor.com/en/online/College_topic?topic=224
Did you try the steps there for (EZ-Router)?
Also, use this: https://check-host.net/check-udp to check if your port is open (more reliable than the other ones I shared).

I have acces on all my services that is installed on my Asustor from internet, Exept the Palworld Server (that is not in the list of EZ-Router).

So do this: "If the service that you wish to open is not on the list or you wish to set up self-defined port forwarding, you can click on [Self define]."
And open the port (default is 8211 and 27015).

I have ad it on the list (It's now on the EZ-Router and on the "UPNP" list on the router) but, when i test it say port is always closed :/

Hmm, what router are you using (ASUS, Netgear, other?). I don't like UPNP - try disabling UPNP and manually forwarding the port (pointing to your internal NAS IP address, of course).

Already tried to do manually add port redirection directly on the router but didnt work too.
Every app or container downloaded on Asustor store have "redirection" i think. i have deluge , Vaultwarden (That is also on docker) and it's accessible on internet without problem. i think the NAS didnt know what to do with the Palworld ports and dont know where nee to redirect on the correct container and it act as is closed because it go on nothing.

You don't need the port to be open for local access.
Probably the app or container downloaded from Asustor store automatically opens the right port on the NAS firewall.
How did you create your palworld image on your Asustor NAS? I imagine it wasn't available on the Asustor store... so did you use Portainer, or some sort of Asustor-branded "Container Manager"? Did you use a docker-compose file (with our without an .env file) or did you use docker command line to make palworld server image?

Also, to be clear, did you open BOTH ports I mentioned (assuming these default ones are the ones you specified when you built your palworld image, 8211 and 27015)? And make sure the ports are open for UDP (though if you want to open them to "All" or "TCP/UDP" that would be fine and preferrable as we troubleshoot.

In portainer, what network is the server one? ("bridge" or "palworld_default_network") or something like that - make sure that the network is also "allowed" in your NAS firewall ... Eitherwise, I'm out of suggestions on why you're port remains closed - but that's the issue, I think. If you can get the port open, others will be able to connect.

I had a similar problem with 8211 where it took me realizing somehow the port was blocked by ISP so I simply changed it.  At the time with public port working, I only used the changed value for external, but kept it to 8211 and used public port value to force it to realize what I want.  But changing all port settings to match is practically the same without using public port.  Try changing the port and the port request to something else, like 12500 for example and make sure it is updated in your router then try again.

In portainer, what network is the server one? ("bridge" or "palworld_default_network") or something like that - make sure that the network is also "allowed" in your NAS firewall ... Eitherwise, I'm out of suggestions on why you're port remains closed - but that's the issue, I think. If you can get the port open, others will be able to connect.

I dont know if i can set much in NAS firewall, is on "Allow all" with somes rules that Deny only selected service on a list, so normally it wont "refuse" but i never set up a game server ^^
Here is the network:

I also tested a thing, i have put the Palworld server on the same network that manage Deluge and Waultwarden but it didnt change nothing, always not acessible from internet (Always work on local even on the bridge network used for other container)
@zapoqx how do you changed the "public" port value and where to do that ? you just put in the router that "the port you chose" redirect on 8211 on the server ? (Entry port: 12500 ---> Destination port : 8211). if it's that, i tested and port say always closed.

Ok, i have found how to make working, i put a totally random port that i have openned on my Router and set on the "Stacks" configuration:
 ports:
        - 25650:8211/udp
        - 27015:27015/udp

Oddly, the port is noticed as "Closed" if i test with online tools that you put in link (in local network it say that is not open too) but i can sucefully join the server ^^. But didnt work if tried external with 8211 (possibly it's a restriction by docker/nas because somes docker app use a port range that is located in 8000)

Glad to hear it's working. @zapoqx mentioned that some ISPs block 8211, so that might be it?
Some port checkers are better than others (I too had inconsistent results depending on the site I used). If it's not broke, let's not go chasing a fix... but glad to hear this fixed it

I also have a 2 questions:
i have add somes settings in the server, somes for making backup (BACKUP_ON_STOP=True). When i stop the container, i didnt see any save created in the folder "backups" un the server folder "palworld-server" did anything wrong or Backup goes on an other folder ?
(the server show that in logs:)
Complete Save

Shutdown...

did i need add a other path in volume settings for backup (if yes, what i need to put)
The other is, i have a weird lags, stuttering when i aim when i am on a mount (It seem doing that only when i am on a mount, if i aim when just walking, no problem). I have not this stutter/lags on aiming when on mount on my local game (no server, solo playing).

First, many scanners will not check UDP protocols.  Only TCP.  Some that do scan UDP have different results depending on how it checks.  Some routers can look at it as an attack and block it as well.
Second, to your question, did you make a custom cronjob for it? I don't see a "BACKUP_ON_STOP" value.
The backup folder is in the same folder for the game volume.
At least on the NAS, what I did is made a task that I can quick trigger if I need to make a backup to the docker in question.  But generally, I set a daily task to do a backup each day in the early hours of the morning since I have a backup done every few days to my offsite (so yes, I have a backup of the backup).
Its a weird question to ask but is the weird lag happening if you do a solo play? Like just playing within the game solo instead of with a server?
It is important to check that before asking if the lag is related to a server.

First, many scanners will not check UDP protocols. Only TCP. Some that do scan UDP have different results depending on how it checks. Some routers can look at it as an attack and block it as well.
Second, to your question, did you make a custom cronjob for it? I don't see a "BACKUP_ON_STOP" value. The backup folder is in the same folder for the game volume.
At least on the NAS, what I did is made a task that I can quick trigger if I need to make a backup to the docker in question. But generally, I set a daily task to do a backup each day in the early hours of the morning since I have a backup done every few days to my offsite (so yes, I have a backup of the backup).
Its a weird question to ask but is the weird lag happening if you do a solo play? Like just playing within the game solo instead of with a server?
It is important to check that before asking if the lag is related to a server.

Hello,
for the Backups, i have added somes settings lines after resolved the internet problem . Actually, i have do a Internal save task on the Asustor NAS that just copy the whole folder "palworld-server" to a other location everyday with "skip files if no change" so it will save anyway ^^
New config:
version: "3.9"
services:
   palworld:
      image: thijsvanloef/palworld-server-docker:latest # Use :latest-arm64 tag instead of :latest for arm64 NAS
      restart: unless-stopped
      container_name: Palworld-Server
      stop_grace_period: 30s # Set to however long you are willing to wait for the container to gracefully stop
      ports:
        - 25650:8211/udp
        - 27015:27015/udp
      environment:
        - PUID=1002
        - PGID=1000
        - PORT=8211
        - PLAYERS=6
        - SERVER_PASSWORD=PASSWORDIPUT
        - MULTITHREADING=true
        - RCON_ENABLED=true
        - RCON_PORT=25575
        - TZ=Europe/Zurich
        - ADMIN_PASSWORD=PASSWORDIPUT # You can secure the access to a server by using the admin password.
        - COMMUNITY=false  # Enable this with true if you want your server to show up in the community servers tab, USE WITH SERVER_PASSWORD above.
        - SERVER_NAME=Kogoro Server
        - SERVER_DESCRIPTION=Serveur Palworld de Kogoro (Heberge sur NAS)
        - UPDATE_ON_BOOT=True
        - BACKUP_ON_STOP=True
        - ZIP_BACKUPS=True
        - RETAIN_BACKUPS=
        - SCHEDULED_BACKUP=True
        - BACKUP_BEFORE_UPDATE=True
        - BACKUP_CRON=0 6 * * *
        - SCHEDULED_UPDATE=False
        - SCHEDULED_RESTART=True
        - BACKUP_ON_SCHEDULED_RESTART=False
        - RESTART_CRON=0 4 * * *

        - DIFFICULTY=None
        - DAYTIME_SPEEDRATE=1.000000
        - NIGHTTIME_SPEEDRATE=1.000000
        - EXP_RATE=1.300000
        - PAL_CAPTURE_RATE=2.000000
        - PAL_SPAWN_NUM_RATE=1.000000
        - PAL_DAMAGE_RATE_ATTACK=1.000000
        - PAL_DAMAGE_RATE_DEFENSE=1.000000
        - PLAYER_DAMAGE_RATE_ATTACK=1.500000
        - PLAYER_DAMAGE_RATE_DEFENSE=0.700000
        - PLAYER_STOMACH_DECREASE_RATE=1.000000
        - PLAYER_STAMINA_DECREASE_RATE=1.000000
        - PLAYER_AUTO_HP_REGEN_RATE=1.000000
        - PLAYER_AUTO_HP_REGEN_RATE_IN_SLEEP=1.000000
        - PAL_STOMACH_DECREASE_RATE=1.000000
        - PAL_STAMINA_DECREASE_RATE=1.000000
        - PAL_AUTO_HP_REGEN_RATE=1.000000
        - PAL_AUTO_HP_REGEN_RATE_IN_SLEEP=1.000000
        - BUILD_OBJECT_DAMAGE_RATE=1.000000
        - BUILD_OBJECT_DETERIORATION_DAMAGE_RATE=0.000000
        - COLLECTION_DROP_RATE=2.000000
        - COLLECTION_OBJECT_HP_RATE=1.000000
        - COLLECTION_OBJECT_RESPAWN_SPEED_RATE=1.000000
        - ENEMY_DROP_ITEM_RATE=2.000000
        - DEATH_PENALTY=None
        - ENABLE_PLAYER_TO_PLAYER_DAMAGE=False
        - ENABLE_FRIENDLY_FIRE=False
        - ENABLE_INVADER_ENEMY=True
        - ACTIVE_UNKO=True
        - ENABLE_AIM_ASSIST_PAD=True
        - ENABLE_AIM_ASSIST_KEYBOARD=False
        - DROP_ITEM_MAX_NUM=4079
        - DROP_ITEM_MAX_NUM_UNKO=100
        - BASE_CAMP_MAX_NUM=128
        - BASE_CAMP_WORKER_MAX_NUM=20
        - DROP_ITEM_ALIVE_MAX_HOURS=1.000000
        - AUTO_RESET_GUILD_NO_ONLINE_PLAYERS=False
        - AUTO_RESET_GUILD_TIME_NO_ONLINE_PLAYERS=72.00000
        - GUILD_PLAYER_MAX_NUM=20
        - PAL_EGG_DEFAULT_HATCHING_TIME=0.50000
        - WORK_SPEED_RATE=1.000000
        - IS_MULTIPLAY=True
        - IS_PVP=False
        - CAN_PICKUP_OTHER_GUILD_DEATH_PENALTY_DROP=False
        - ENABLE_NON_LOGIN_PENALTY=False
        - ENABLE_FAST_TRAVEL=True
        - IS_START_LOCATION_SELECT_BY_MAP=True
        - EXIST_PLAYER_AFTER_LOGOUT=False
        - ENABLE_DEFENSE_OTHER_GUILD_PLAYER=False
        - COOP_PLAYER_MAX_NUM=4
        - REGION=
        - USEAUTH=True
        - BAN_LIST_URL=https://api.palworldgame.com/api/banlist.txt

      volumes:
         - /volume1/Docker/palworld-server:/palworld

For the Lags/Stutter bug, i get than only when playing on the server, when i play solo i didnt have any problems.

I Always have backup Not working (or If it's working , it Make the backup in a folder that i doesnt See or have acces.) The backup folder in the Palworld folder is Always empty. I do a save everyday of the Palworld folder of the the Server from the nas Save system because i didnt now If internat save of tne Server is working and where the data is going.

I Always have backup Not working (or If it's working , it Make the backup in a folder that i doesnt See or have acces.) The backup folder in the Palworld folder is Always empty. I do a save everyday of the Palworld folder of the Server from the nas Save system because i didnt now If internat save of the Server is working and where the data is going (If it do a save)

It should be in the same folder (palworld-server in your case), but while I'm sure I should be using the cronjob backup, I do not use that.  Instead, I use the task schedule to do docker execute to the palworld server docker and run the command "backup" each night and send me the notification in an e-mail for the task to complete.  It even adds the terminal result (which includes the backup and the save location).

I Always have backup Not working (or If it's working , it Make the backup in a folder that i doesnt See or have acces.) The backup folder in the Palworld folder is Always empty. I do a save everyday of the Palworld folder of the Server from the nas Save system because i didnt now If internat save of the Server is working and where the data is going (If it do a save)

It should be in the same folder (palworld-server in your case), but while I'm sure I should be using the cronjob backup, I do not use that. Instead, I use the task schedule to do docker execute to the palworld server docker and run the command "backup" each night and send me the notification in an e-mail for the task to complete. It even adds the terminal result (which includes the backup and the save location).

I dont get Anny backup or files backup on the Palworld Server folder (i have a backup folder but it's Always empty).  Instead i using the internat folder save from the NAS

I think this method will also working, it copy the whole Server folder to save location. It dors that every night.

First, try this in synology task schedule
docker exec palworld-server backup
Change "palworld-server" to the name of your palworld docker server if it isn't named exactly that.
Of course, have it send an e-mail notification to you so you can see results.  It will tell you the terminal.  Example:
Task: Backup Palworld
Start time: Sat, 23 Mar 2024 04:00:01 -0700
Stop time: Sat, 23 Mar 2024 04:00:03 -0700
Current status: 0 (Normal)
Standard output/error:
Complete Save
 [1;36m****Creating backup**** [0m
 [0;37mBackup created at /palworld/backups/palworld-save-2024-03-23_04-00-01.tar.gz [0m

If the backup errors, it will show it right then and there.

I think this method will also working, it copy the whole Server folder to save location. It dors that every night.

First, try this in synology task schedule docker exec palworld-server backup
Change "palworld-server" to the name of your palworld docker server if it isn't named exactly that.
Of course, have it send an e-mail notification to you so you can see results. It will tell you the terminal. Example:
Task: Backup Palworld
Start time: Sat, 23 Mar 2024 04:00:01 -0700
Stop time: Sat, 23 Mar 2024 04:00:03 -0700
Current status: 0 (Normal)
Standard output/error:
Complete Save
 [1;36m****Creating backup**** [0m
 [0;37mBackup created at /palworld/backups/palworld-save-2024-03-23_04-00-01.tar.gz [0m

If the backup errors, it will show it right then and there.

I using an Asustor NAS, is very similar to synology but i didnt have Sames fonctions. I didnt know where to run that, the only sheedule settings i found is for basic settings . It Is possible to put this command in SSH ? Just for Try and See If backup is Make proprely.

I using an Asustor NAS, is very similar to synology but i didnt have Sames fonctions. I didnt know where to run that, the only sheedule settings i found is for basic settings . It Is possible to put this command in SSH ? Just for Try and See If backup is Make proprely.

You can use SSH, but not sure if the instructions are similar.  Though that said, that means the issue you are facing isn't related to synology.
That said, the only hint I'd give in this case is install Portainer community edition as it comes with a terminal for each docker so you can just run the command.  With this, you would not only see if "backup" can run, but also "rcon-cli" if you use it because it can tell alot more.  If rcon-cli is broken after an update, it is usually known because an error may be said on startup, but when using the console for the docker, if rcon-cli fails to start, then you have more issues at hand (unless it is actually broken for whatever reason).

I using an Asustor NAS, is very similar to synology but i didnt have Sames fonctions. I didnt know where to run that, the only sheedule settings i found is for basic settings . It Is possible to put this command in SSH ? Just for Try and See If backup is Make proprely.

You can use SSH, but not sure if the instructions are similar. Though that said, that means the issue you are facing isn't related to synology.
That said, the only hint I'd give in this case is install Portainer community edition as it comes with a terminal for each docker so you can just run the command. With this, you would not only see if "backup" can run, but also "rcon-cli" if you use it because it can tell alot more. If rcon-cli is broken after an update, it is usually known because an error may be said on startup, but when using the console for the docker, if rcon-cli fails to start, then you have more issues at hand (unless it is actually broken for whatever reason).

Hello, i have Portainer but i was unable to execute commands , i get this:
I dont know how i need to make the propper command to make this working, i am not a linux guy.

i tried with rcon-cli to run a shutdown and "Save" but it just say "Save is done" but i think it only save the actual game and not making backup. i doesnt found how to make launch a backup .
I also tried to use "Custom command button" where is the console and put "docker exec palworld-server backup" but it does nothing, just a black box blink and nothing happen. (sorry to be noob X) and thanks for the help, i appreciate )

Yea, the save system is saved to the instance that is running for the game with its ID.  Backup exports all of the files associated in there and the folder ID it is in.
So it is working, the cronjob automatic is just failing to do so.
Yea, when you use portainer to connect to the terminal, you have to ignore using "docker" commands because you're already in that docker instance so commands will work out the gate the way they are meant to.
So to me, you will need to either figure out a fix with the cron job or you may need to figure out how to get your asus nas to run a schedule command to run the backup manually.

Yea, the save system is saved to the instance that is running for the game with its ID. Backup exports all of the files associated in there and the folder ID it is in. So it is working, the cronjob automatic is just failing to do so. Yea, when you use portainer to connect to the terminal, you have to ignore using "docker" commands because you're already in that docker instance so commands will work out the gate the way they are meant to. So to me, you will need to either figure out a fix with the cron job or you may need to figure out how to get your asus nas to run a schedule command to run the backup manually.

I was able to make it working now, i get this in the logs:

time="2024-03-24T00:00:00+01:00" level=info msg=starting iteration=0 job.command="bash /usr/local/bin/backup" job.position=0 job.schedule="0 0 * * *"

time="2024-03-24T00:00:00+01:00" level=info msg="Complete Save" channel=stdout iteration=0 job.command="bash /usr/local/bin/backup" job.position=0 job.schedule="0 0 * * *"

time="2024-03-24T00:00:00+01:00" level=info msg="\x1b[1;36m****Creating backup****\x1b[0m" channel=stdout iteration=0 job.command="bash /usr/local/bin/backup" job.position=0 job.schedule="0 0 * * *"

time="2024-03-24T00:00:00+01:00" level=info msg="\x1b[0;37mBackup created at /palworld/backups/palworld-save-2024-03-24_00-00-00.tar.gz\x1b[0m" channel=stdout iteration=0 job.command="bash /usr/local/bin/backup" job.position=0 job.schedule="0 0 * * *"

time="2024-03-24T00:00:00+01:00" level=info msg="\x1b[1;36m****Removing Old Backups****\x1b[0m" channel=stdout iteration=0 job.command="bash /usr/local/bin/backup" job.position=0 job.schedule="0 0 * * *"

time="2024-03-24T00:00:00+01:00" level=info msg="\x1b[0;37mRemoving backups older than 10 days\x1b[0m" channel=stdout iteration=0 job.command="bash /usr/local/bin/backup" job.position=0 job.schedule="0 0 * * *"

time="2024-03-24T00:00:00+01:00" level=info msg="job succeeded" iteration=0 job.command="bash /usr/local/bin/backup" job.position=0 job.schedule="0 0 * * *"

It seem work because has created a new save in the savedata folder dated as midnight.
the problem seem to be a space or a bad character in the line that make the job ^^' simple mistake but never checked that.

This issue has been opened quite some time ago and this thread has slowly become a troubleshooting discussion instead of a single issue, are you folks ok with it if I convert this issue into a discussion?

This issue has been opened quite some time ago and this thread has slowly become a troubleshooting discussion instead of a single issue, are you folks ok with it if I convert this issue into a discussion?

Yeah, i think it's a good idea so people having little problems or need sommes help (like me x) ) dont need to open a ticket for that :) .


Clarification regarding infix operators usage

As far as I know, infix operators are banned from the new syntax, but it seems operators declared in OCaml/old ReasonML can be used in the new syntax (I tried recently with some common operators like <$> <|> >=>, all worked as expected).
Since we have a middle sized application with ~1000 modules, and we use cutom operators quiete extensively, I wanted to get some clarification regarding the usage of custom operators. Will this be banned eventually?
(Also, and for what it's worth, i really do hope custom operators will be fully supported again one day 😄 ).
Edit: After testing again with BS 8.2.0, it seems that the custom operators, even those written in OCaml/ReasonML don't work at all in the new syntax 😞

I'm also interested in this feature.  The re-classnames package uses the + operator (or <:> if you want to avoid warnings).  I am very excited about the new syntax but still need to test if re-classnames works.

@gaku-sei can you shed some light on the functions behind <$> <|> >=> ? What do they represent behind the scenes?
Would it be possible to give some real world examples of their definition and usage behind the scenes?

Hello @IwanKaramazow
Sure 😄
<$> is basically a equivalent of map, like List.map, or Option.map, so instead of:
Some(42) |> Option.map(x => x + 1)

One can write
open Option // Provided the <$> operator is defined as an alias of map in the Option module

(x => x + 1) <$> Some(42)

It would be actually better using operator + currying, but it seems there is no plan to bring this in the new syntax (even though I don't understand the rational for it: https://github.com/rescript-lang/syntax/issues/105)
(+)(1) <$> Some(42) // return Some(43)
(+)(1) <$> None // return None

// Without operators it could be:
add(1) <$> Some(42)

>>= is the same as flatMap:
Some("42") >>= float_of_string_opt // return Some(42.0)
None >>= float_of_string_opt // return None
Some("foobar") >>= float_of_string_opt // return None as well

You can even have a reversed =<< operator with its arguments switched.
The last one <|> is something that doesn't exist (yet?) in the Belt Api. It's an alias to what could be an "alt" function, taking, let's say, 2 options, and returning the first option that is not None:
Some(1) <|> None // returns Some(1)
Some(1) <|> Some(2) // returns Some(1) as well
None <|> Some(2) // returns Some(2)
None <|> None // returns None

It could obviously be implemented for Results, Arrays, Lists, etc...

Notice that the above operators (and a couple of others, like << or <<< for function composition, <*> that allows you to apply a function that has been wrapped in an option, or a result type, or <> as an equivalent to append for Arrays, Lists, Strings, etc...) have a well established meaning in most of functional programming languages (F#, Haskell, Idris, PureScript, and of course OCaml/ReasonML ^^).
The idea is definitely not to make Rescript a PureScript or Haskell like language, but just to keep the door opened for operators that are commonly used 😕
One can definitely argue that it's still possible to write something like:
// Where x and y have both type option(int)
switch (x, y) {
| (Some(x), Some(y)) => x + y
| _ => None
}

But to each their own, and for me it doesn't read as well as:
open Option

(+) <$> x <*> y

As a side note, I have a rather "large" code base written in ReasonML, using operators quite extensively, and this limitation in the new syntax is holding me back from updating to the new syntax (which I actually really love otherwise), since the code now looks like:
\"<$>"(
  \"<*>"(x, y))

Which is very hard to read ^^
(Having a way to map operators to functions during the ReasonML -> ReScript reformatting could ease the update though).

I wrote up my thoughts on this in the forum yesterday:
https://forum.rescript-lang.org/t/discussion-about-infix-requirements/245
My proposal is implement a restricted form of custom infix operators; require they be surrounded by certain characters for ease of parsing. In my case - and for most of @gaku-sei's examples - using < and > to delineate infix operators would work for a great many infix operators. But I'm sure we can swap to different characters if those don't fit within the syntax definition.
Any infix operators that don't fit within this pattern can hopefully be solve with letop, when it eventually arrives (I've had success converting >>= but I'm not sure that will extend to all use cases).

Hi Everyone!
We have about 15000 loc in ReasonML, and we're looking at our options, sticking to ReasonML, and trying to use Melange, or move to Rescript. We're seeing a heavy community effort in moving towards Rescript, but at the same time, there are some elements in our code-base that make that route a lot harder. The biggest thing is infix operators. There are some we rely on quite heavily internally which are not particularly easy to replace. Take the following example;
  let inTime = mapper => P.str("in") *> P.ws *> (Duration.p |> mapper);

It's a parser, that tries to parse a duration prefixed with "in", followed by a whitespace (for instance in 5 seconds, or in 20 hours). It's takes a function to map the duration as the duration parser returns an int and a unit for the duration. The apply (*>) style operator here semantically means, parse the thing on the left hand side, and if it succeeds, parse the thing on the right, but chuck away the thing on the left. So basically, we parse "in" and some whitespace, and just keep the result of the Duration.p parser put through the mapper function.
I understand this is quite specific, but coming from a more FP style of programming these "apply" operators are quite familiar. With the upgrade, I'm looking at the following.
  open ApplyExtensions;

  let inTime1 = mapper =>
    applySecond(applySecond(P.str("in"), P.ws), Duration.p |> mapper);

  // With a forward pipe, perhaps to make it clearer?
  let inTime2 = mapper =>
    applySecond(P.str("in"), P.ws) -> applySecond(Duration.p |> mapper);

  // Or maybe with a different name entirely?
  let inTime3 = mapper =>
    keepRight(P.str("in"), P.ws) -> keepRight(Duration.p |> mapper);

The issue for me is that if anything, this makes it harder to onboard new people into our code-base, as this language using apply notation <*> -- and for instance, bind (>>=) or choice (<|>) -- will be extremely familiar to anyone who's ever written a parser in, for instance, Haskell. Also, after refactoring, the pipe-first / pipe-last semantics come into play when I want to apply multiple times. I have a function called applySecond, or keepRight, but if I use |> it's actually the reverse...
A different example:
let pipe = (f, g, x) => g(f(x));
let (>>) = pipe

Right now, we can do things like:
let f1 = fa >> fb >> fc >> fd

In other words, because of the infix operator, we can define a single function (a very simple one at that), and chain them together arbitrary many times. If we remove that operator, and we would like to keep on using our pipe, we would have to start defining a pipe3 and a pipe4 (at least, that's my assumption as there are no variadic arguments). Or perhaps create a heterogenious list type and have pipe take that? But I'm not sure that would make it more clear, and I'm not even sure I could get that to type-check.
Naturally, this could also be done using the forward pipe (like below), and in this simple case that works just fine, but in some cases, especially when doing these things inside for instance a map or filter (ie, pushing it into a higher order function), we much prefer the pipe notation and hide the argument (we feel it shows more intent / is more declarative that way).
let f1 = x => fa(x) |> fb |> fc |> fd

My questions is basically two-fold:

Is support for infix operator coming back? Now, or in the future? Either through overloading a set of default operators, or fully custom ones.
If the infix operator support isn't coming back - how do you guys migrate the code from Infix to Prefix operators and is there a guideline to make it readable? Just our parser code is about 1500 lines, I feel removing the infix operators would really inflate that. Would love some tips on that front.

I'd just like to close by stating we fully appreciate the huge effort that went into the move from ReasonML to Rescript. Our core product VAST is open-source as well, and we're fully aware what goes into building and maintaining these things. So thanks!
I would be happy to contribute to the effort of bringing some of this functionality back (my personal lens library also relies on infix operators), but this would require a bit of hand-holding as I haven't contributed here before.


test(#767): 100% code coverage

The changes in PR #767 dropped code coverage for: https://github.com/visionmedia/supertest/blob/e064b5ae71e1dfa3e1a74745fda527ac542e1878/lib/test.js#L287
This is because the wrapAssertFn has handled the error try-catch, leaving _assertFunction's catch unreachable.

Added a test case to directly access _assertFunction for code coverage purposes. Restored 100% code coverage.

The tests are failing in the CI because of coveralls. Refer to PR #794.

Thanks for the release, @titanism!


[Bug]: Other profiles not visible in the other vaults

Describe the bug
The other profiles are not visible in the other vaults.
How to Reproduce
Hello,
I am on Windows 10.
I created 2 profiles for 2 different vaults.
Here: "..Documents\Obsidian\Profiles"
But in the plugin settings only one profile is visible in vault 1.
And in vault 2 again only one profile is visible.
But there should be 2 profiles visible in every vault for switching profiles, am I right?
Is the "Reload Profiles" button working on your site?
I looked into my hard drive path for the profiles, and both profiles are visible there! But not in Obsidian in your settings plugin page.
I even created a new vault but with the same result.
Expected behavior
Profiles should be visible in every vault.
OS of your device
Win10
Obsidian Version
1.5.3
Plugin Version
0.3.0
Additional context
No response

This is related to #14

Actually it should copy the plugins but at the alpha it seem that not all settings get synchronized correctly. All other settings work correctly for you?

Does the new alpha fix it? https://github.com/4Source/settings-profiles-obsidian-plugin/issues/14#issuecomment-1937869689

I am glad to hear that.
I already thought about a feedback for the save and load button this shouldn't be that hard.


Fiexd local cluster and RAG use case

Description

Related Issues

Checklist

[ ] Is this code covered by new or existing unit tests or integration tests?
[ ] Did you run make unit-testing and make integration-testing successfully?
[ ] Do new classes, functions, methods and parameters all have docstrings?
[ ] Were existing docstrings updated, if necessary?
[ ] Was external documentation updated, if necessary?

Additional Notes or Comments

Fixed a bug in #1986


tests: drop trailing white spaces

Commit 6ff3d004 ("Add check for fcontext lines containing only spaces") added support for trailing white spaces in file context files together with some unit tests.  These unit tests contain such trailing white spaces, which break the current CI due to the white space check via git diff-tree --check.
Drop the trailing spaces (together with the corresponding test code) to please the CI, hoping regressions will not happen.

I'm not really a fan of making changes that actually hurt just to please broken CI.
What about #285 as an alternative?


Write the basis as templates

Description
The basis take as constructor argument its dimension. We have to change this and make that basis are templates of its dimension.

See documentation

Template specialization here
std::conditional here
stak exchange here


bump langchain dep

We should pin to the langchain version that has the new (https://github.com/jerryjliu/llama_index/issues/1909)

I also have a compatibility problem between Langchain and GPT_index. When importing
"from gpt_index import SimpleDirectoryReader, GPTListIndex, GPTSimpleVectorIndex, LLMPredictor, PromptHelper"
the error message appears (abbreviated):
„from langchain.schema import BaseLanguageModel
ImportError: cannot import name 'BaseLanguageModel' from 'langchain.schema' (C:\Users\peter\AppData\Local\Programs\Python\Python311\Lib\site-packages\langchain\schema.py)“
I have: windows11, Python 3.11.3, just installed new Langchain and gps_index (0.6.8)
ChatGBT could not help ☹ Who can?


Fix empty data

Fixes #24

Ping @sospartan could you kindly check if this works?
@simPod make this 0.1.1 as we‘ll need to release?

Added release commit. Removed changelog from README as I'll track it in releases.

@andig I've tried whole morning to apply your patch. My pool knowledge about frontend is not help here. I'll try it again after released to grafana plugin repo.
Thanks for the quick fix.

@simPod I don't have the time to try right now but I don't see why this PR fixes

Cannot read property 'match' of null

in a good way. That property still won't be defined when setting to ''?

It's function on string prototype
https://www.w3schools.com/jsref/jsref_match.asp
For me it works just fine :)

Grafana upgraded from 5.4.4 to 7.0.5
Graph data shows up as normal.
Editor is not working:

"metric" and "additional Json Data" buttons/fields do not show up
"Edit" button result in an additional 'bare' field with "select metric" in it
"additional Json Data" does not show up at all

Same happens as above when creating a new Graph panel with the existing simpod-json-datasource.
Same happens when creating a new simpod-json-datasource and using it in a new Graph panel.
"grafana-cli plugins ls" shows "simpod-json-datasource @ 0.2.0"

Any help is appreciated


python3Packages.pykrakenapi: 0.2.3 -> 0.2.4

Motivation for this change
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 156891 run on x86_64-linux 1

3 packages built:

home-assistant-component-tests.kraken
python310Packages.pykrakenapi
python39Packages.pykrakenapi

@ofborg eval


Pipeline may try to open hdf5 files using iio.mimread

Pipeline has the ability to look for and try to load hdf5 files, but it should distinguish between them and image files, but this isn't working for some reason. This prompts an error, usually by imageio, unable to find an appropriate backend.
Further, this should be something added to unit tests.

Addressed by #107


spec: Reproducible image hashes

Currently an image hash is computed by creating a tar archive of manifest and rootfs and taking the hash of it. By default, tar includes files in the archive in the order they are returned by readdir(), which can differ between hosts/filesystems. By enforcing an ordering of the files in the tar archive, computing an image ID of an unpacked image will always give the same result.
Why is this useful?
This becomes very useful when someone wants to combine signed images with some sort of delta transport. What I mean by that is a server (possibly untrusted) that can compute and serve an image delta from image A to image B.
With that, a client that already has image A can get and verify image B by:

Downloading A->B delta file
Downloading detached image B signature
Apply the delta on a copy of image A
Run the reproducible tar and pipe it to gpg --verify

How can this be done?
New versions of tar support a --sort=name option that does exactly that. The same thing can be accomplished in with an old tar by creating a sorted list of files and piping the list to tar with the --files-from=- option.
I propose enforcing this file ordering in the Image Archive spec so that every unpacked image maps to exactly one image ID.

To give some context, I'm the tech lead for resin.io where we ship containers to embedded devices. In our use case bandwidth usually is not plenty and certainly not cheap so an efficient and verifiable transport makes a lot of sense for us.

Seems reasonable to me. @philips @cdaylward ?
(Relates to #146, #186, will be superseded by streaming image format but that's a longer-term plan)

What are the requirements for the streaming image format? Is there any WIP spec for that?

@petrosagg I agree that being able to make deltas and apply them as a bandwidth saving measure is desirable! In fact early versions of the spec had the manifest holding a hash of the contents of every file and the path/perm/etc of those objects but it overly-complicated the spec.
I am curious at why the file ordering matters for the diff server you are suggesting.

@philips the file ordering is irrelevant to the diffing server. It on the client-side after having applied the diff that it is needed. Basically, file ordering lets you recreate locally the bytestream that you would have gotten if you downloaded the whole tar archive, and therefore verify it. I hope this makes sense.

As a matter of fact, the diffing server could compute diffs at the block level, without even caring about the files. For example using btrfs send/receive.

I am not quite following. Could you give some psuedo code or a link to a similar system?

Ok, let's say Alice creates two images, a.aci and b.aci and then creates two signatures, a.aci.asc and b.aci.asc with her private key. She then proceeds and uploads these files to a third party server.
Bob has already downloaded, verified and unpacked a.aci. This means that his disk looks like this:
/a/manifest
/a/rootfs
/a/rootfs/usr
...

To efficiently get b.aci he proceeds to do the following:
# Create a copy of image A
cp -r /a /b
# Use rsync to get the *unpacked* image B without wasting bandwidth
rsync -avz remote.example.org:/b /b
# Downloads the detached signature for b.aci
wget remote.example.org/b.aci.asc

Now Bob's /b/ directory contains the contents of image B, but of course he wants to verify that. The only signature he has at his disposal is b.aci.asc and as such, to verify that his unpacked image is indeed image B he has to recreate b.aci in the same exact way Alice did it when she created the image and then use gpg to verify it.
This is where a simple tar will fail. Simply issuing tar cfv b.aci manifest rootfs is not guaranteed to create the exact same archive across hosts/filesystems and therefore the signature won't be valid.
Copying from the tar man page:
Using --sort=name ensures the member ordering in the created archive is uniform and reproducible.

Yep, this doesn't get us all the way to perfect reproducibility but is
another good incremental step
Am 16.02.2015 17:11 schrieb "Petros Aggelatos"<EMAIL_ADDRESS>
Ok, let's say Alice creates two images, a.aci and b.aci and then creates
two signatures, a.aci.asc and b.aci.asc with her private key. She then
proceeds and uploads these files to a third party server.
Bob has already downloaded, verified and unpacked a.aci. This means that
his disk looks like this:
/a/manifest
/a/rootfs
/a/rootfs/usr
...
To efficiently get b.aci he proceeds to do the following:
Create a copy of image A
cp -r /a /b# Use rsync to get the unpacked image B without wasting bandwidth
rsync -avz remote.example.org:/b /b# Downloads the detached signature for b.aci
wget remote.example.org/b.aci.asc
Now Bob's /b/ directory contains the contents of image B, but of course
he wants to verify that. The only signature he has at his disposal is
b.aci.asc and as such, to verify that his unpacked image is indeed image
B he has to recreate b.aci in the same exact way Alice did it when she
created the image and then use gpg to verify it.
This is where a simple tar will fail. Simply issuing tar cfv b.aci
manifest rootfs is not guaranteed to create the exact same archive across
hosts/filesystems and therefore the signature won't be valid.
Copying from the tar man page:
Using --sort=name ensures the member ordering in the created archive is uniform and reproducible.
—
Reply to this email directly or view it on GitHub
https://github.com/appc/spec/issues/199#issuecomment-74602277.

Is there a particular edge case you have in mind?

Not in particular with ordering, just more generally with tar (i.e. that different tools can produce slightly different tarballs)

I have retired myself to the fact that generating a 100% correct tarball everytime from the same source filesystem won't work. See https://github.com/coreos/rocket/issues/544
In any case I am OK enforcing this constraint of the tar files in the ACIs. So, who wants to update the spec and write the code? :)

Well that is an implementation issue with golang in particular, right?
On Fri, Feb 20, 2015 at 2:50 PM, Brandon Philips<EMAIL_ADDRESS>wrote:

I have retired myself to the fact that generating a 100% correct tarball
everytime from the same source filesystem won't work. See
coreos/rocket#544 https://github.com/coreos/rocket/issues/544
In any case I am OK enforcing this constraint of the tar files in the
ACIs. So, who wants to update the spec and write the code? :)
—
Reply to this email directly or view it on GitHub
https://github.com/appc/spec/issues/199#issuecomment-75334258.

@philips I'll build upon Tor's deterministic tar script and also use some the recommendations that make sense for this usecase from Debian's reproducible builds and send a PR.

@petrosagg OK, I think the place to start is to:

[ ] patch SPEC.md to say that tar files must be sorted
[ ] patch to actool validate to ensure that an ACI is in sorted order
[ ] add tests to actool build to ensure it does in order walking. This is the default for Go though "filepath.Walk - The files are walked in lexical order, which makes the output deterministic but means that for very large directories Walk can be inefficient. Walk does not follow symbolic links."

https://github.com/docker/docker/pull/14067 is an example of using tar-split to recreate the tar files in a deterministic way


Buffer.concat in Encoder.prototype._transform

I think it's better to push each buffer separately. i.e. rather than this:
this.push(Buffer.concat([length, message]))

we should be doing this to avoid creating a new buffer:
this.push(length);
this.push(message);

Sounds good, would you like to create a PR for this change?

Sure - will be a day or two. The existing tests should be okay?

Thanks! You probably have to update the test/prefixer.js, because it will receive two chunks and not one

This change makes my app run slower! The reason is it generates an extra network write. If I cork the socket stream it's piped to before doing writes to the frame stream and then uncork the socket stream afterwards then the performance is the unaffected.
So I don't think we can make this the default because in writing data you'd end up with an extra network packet than expected.

However, if I do cork at a higher level in my app (where I know the level I want to batch things together) then I don't want the Buffer.concat in Encoder.prototype._transform.
@rkusa Do you think it would be OK to make this an option (with existing behaviour as default)?

@rkusa I created a PR. It simply makes the existing behaviour overridable.
When I cork my destination stream at a higher-level in my app then I can override and push separately with no performance penalty (in fact corking across lots of writes is much faster).

Thanks for the PR. It looks good! Just a small idea. Does setting the highWaterMark do something slightly higher than the bytes used for the length, improve your performance?

My highWaterMark is set to 16384 and is enough to hold the length prefix and data. Node seems to call writev each time data is pushed to the piped destination. I was a bit surprised that it made a difference which is why I didn't want to bake any behaviour into frame-stream.

Merged, thanks

np, thanks again for this module

Btw, would mind publishing v1.1.0 please? No urgency.

Totally forgot that. It is published now :smile:


tvOS support

Any plans for tvOS support? i imagine it's only just a  pod spec update.

Pretty much, I've made the changes in #32. We'll get this merged and cut a new release.

awesome, thank you.

@cswelin This has been release in Representor 0.7.2.


feat: Add "numHistory" parameter to completionOptions

Description
This pull request introduces a new parameter, numHistory, in the completionOptions. The purpose of this parameter is to specify the number of recent messages to include in the input context when generating completions.
Checklist

[x] The base branch of this PR is dev, rather than main
[x] The relevant docs, if any, have been updated or created

Testing
1.Add the following configuration in config.json:
{   "completionOptions": { "numHistory": 3 } }
2.During interactions, the llm's input context consists of only the most recent 3 messages, as specified by the numHistory parameter.

@dhlidongming I'd be curious to better understand the use case here before merging this. Is there a reason to prefer this rather than starting new chats?

@sestinj I noticed that after adding the defaultContext parameter, each conversation might contain a large number of tokens, and users may not be accustomed to opening new chats too frequently. Adding this parameter can serve as an alternative way to control context length, in addition to the contextLength parameter.

Ok that's a very good point! I think there might actually be a better solution here. I hadn't thought about this before, but the defaultContext should probably be placed into the system message to avoid being sent with every chat request. Is this something you would be interested in trying to implement? Otherwise, I think i'm going to close this in favor of doing that to solve the root of the problem

Thank you! That’s a great idea, but I don’t have much time to dedicate to it at the moment. I'm looking forward to seeing this new change though.


integrate openblockchain compiler

This is a placeholder for discussion on the proposed openblockchain compiler toolchain, as it is developed.  This could help in a few aspects of chaincode development/deployment including adding new chaincode language types, abstracting chaincode interfaces, ABI management, etc.
@muralisrini @joequant @kletkeman

@ghaskins closing this as I believe it is covered by fabric-chaintool. Please reopen if you think otherwise.


Implemented a mnist classification

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.DeepEye seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Set goal CAV, MAV, etc.

Requires having majors (or major course selection) which requires extensive UI design and isn't really that important yet


Views do not respect 'Hidden' property in iOS 8 like they do in iOS9

One of the perks of UIStackView is that hidden views do not affect the layout. So if a view is marked as hidden it's as if it didn't exist. This behavior is absent from iOS8, where marking a view as hidden will still force it to occupy it's space.

Actually, a hidden subview DO affect the layout,  UIStackView adds a width/height constraint of zero constant to make that hiding view "collapsed" , other constraints are still connecting against it, a zero width or height makes it not rendering.

With FDStackView, it does not respect this. If you modify your demo project to sit views as hidden, the behavior differs depending on which iOS version you are running. I would consider this a bug.

@sunnyxx If FDStackView can't animate hidden property as UIStackView can, this issue should remain open, don't you think?

实际上 UIStackView 是不对 Hidden 的 Subview 做 layout 计算的，WWDC 201717#412 有提到，目前这个问题还是存在的，iOS 8 上不能通过设置 hidden 对 FDStackView 的 subviews 动态显示和隐藏


Forward AD threw error in tf.autodiff.ForwardAccumulator for tf.keras.layers.AveragePooling2D, but backward AD succeeded with same input

Issue type
Bug
Have you reproduced the bug with TensorFlow Nightly?
No
Source
source
TensorFlow version
tf 2.14.0
Custom code
Yes
OS platform and distribution
windows colab
Mobile device
No response
Python version
3.10
Bazel version
No response
GCC/compiler version
No response
CUDA/cuDNN version
No response
GPU model and memory
No response
Current behavior?
Forward AD threw error in tf.autodiff.ForwardAccumulator for tf.keras.layers.AveragePooling2D, but backward AD succeeded with same input
Standalone code to reproduce the issue
pool_size_0 = 16
pool_size_1 = 3
pool_size = [pool_size_0,pool_size_1, ]
strides = None
padding = "valid"
data_format = None
__input___0_tensor = tf.random.uniform([2, 32, 1, 1], minval=0, maxval=2, dtype=tf.float32)
__input___0 = tf.identity(__input___0_tensor)
inputs = __input___0
layer = tf.keras.layers.AveragePooling2D(pool_size=pool_size, strides=strides, padding=padding, data_format=data_format,  dtype=tf.float64)

with tf.GradientTape(persistent=True, ) as g:
    g.watch(inputs)
    res_backward = layer(inputs)
grad_backward = g.jacobian(res_backward, res_backward)
print("res_backward:", res_backward)
print("grad_backward:", grad_backward)

tangents = tf.constant(1., dtype=tf.float32, shape=[2, 32, 1, 1])

with tf.autodiff.ForwardAccumulator(inputs, tangents) as acc:
    res_forward = layer(inputs)
    grad_jvp = acc.jvp(res_forward)
    print("res_forward:", res_forward)
    print("grad_forward", grad_jvp)

Relevant log output
res_backward: tf.Tensor([], shape=(2, 2, 0, 1), dtype=float64)
grad_backward: tf.Tensor([], shape=(2, 2, 0, 1, 2, 2, 0, 1), dtype=float64)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-43-1e65b8d83cd7> in <cell line: 22>()
     21
     22 with tf.autodiff.ForwardAccumulator(inputs, tangents) as acc:
---> 23     res_forward = layer(inputs)
     24     grad_jvp = acc.jvp(res_forward)
     25     print("res_forward:", res_forward)

1 frames
/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs, op_def, extract_traceback)
   1019   except errors.InvalidArgumentError as e:
   1020     # Convert to ValueError for backwards compatibility.
-> 1021     raise ValueError(e.message)
   1022
   1023   # Record the current Python stack trace as the creating stacktrace of this

ValueError: Exception encountered when calling layer 'average_pooling2d_12' (type AveragePooling2D).

Negative dimension size caused by subtracting 3 from 1 for '{{node gradient_tape/gradient_tape/AvgPool}} = AvgPool[T=DT_DOUBLE, data_format="NHWC", ksize=[1, 16, 3, 1], padding="VALID", strides=[1, 16, 3, 1]](tangents)' with input shapes: [2,32,1,1].

Call arguments received by layer 'average_pooling2d_12' (type AveragePooling2D):
  • inputs=tf.Tensor(shape=(2, 32, 1, 1), dtype=float64)

Hi @cheyennee ,
I have replicated the reported behaviour with TF2.14 and tf-nightly as well. Attached gist for reference.
Will dig more into for the root cause and come back. Thanks!

Hi @cheyennee ,
apologies for the dealy, Thanks for patience. The issue you are facing because the input tensor has a width of 1, which is smaller than the specified pooling width of 3. When using the "VALID" padding mode, the pooling operation tries to apply a window of size 3 over a width of 1, which results in a negative dimension and causes an error. you can either reduce the pooling width to 1, change the padding mode to "SAME" (which adds padding to ensure valid dimensions), or increase the input width to be larger than the pooling window. Please find the gist here for reference.
Thank you!


Make a new release

There were many changes, including client headers and authentication, so let's make a new release (0.5.0, I guess).

I'll be looking to get #6 done before the release happens.

I'll be looking to get https://github.com/mauricew/ruby-twitch-api/issues/6 done before the release happens.

Is this still true? It's now >4 years since the latest "official" release

I apologize for the lack of communication, I might as well give a little postmortem here.

Just a few weeks after this, life got in the way and that unfortunately took away the time that I had dedicated to work on this repo, which put all sorts of things out of wack.
It was a big mistake to return strongly typed classes with the way the API was changing as frequently as it was. I now believe there should've been an option to return hashes from the start and just have the option to use it as an enhanced HTTP client (still keeping the convenience methods)
Above all I'm just not interested in ruby anymore.

@AlexWayfer I'll add you as a gem maintainer if you can provide me your information to do so. Feel free to merge/release with whatever changes you have pending. Also that PR above just needs some extra test cases to pass (and even might be outdated at this point)

NEWS: I've been added as the gem maintainer (thanks to @mauricew)!
I've merged open PRs meanwhile.
So, the new release is near.
I think I'll make it in the current state, without fresh end-points from open issues.
If you need for them — write there, or PRs are welcome.

It has been done. Meet a new 1.0 version.
#6 has been completed. #39 has not.
There are always new end-points for us to implement. Asking and pull requests are welcome.
I have in plans some management with data classes, like a base class, etc. But I left it after v1.0. It works for now, and I'm kind of tired now.


Use tickers from crowdsar to fill gaps in symbology

crowdsar index provides information about the mapping company names <-> ticker.  We could use this information to fill gaps in symbology, which currently relies on the CIK <-> ticker mapping provided in ownership forms.

This was in the wrong repo


VirtualBox 5.2.0 Beta

VirtualBox just announced the 5.2.0 Beta release. Will need to take a look to see if there are any changes to the API that we can implement before the beta release becomes finalized.

Quick test to build library.py against latest master VirtualBox.xidl (python build.py --build-against-master --force-download) broke build.py's output of library.py ...
Added forked issue to #89

An exciting new interface has been added to the main VirtualBox interface:
class IVirtualBox(Interface):

   ...

    def create_unattended_installer(self):
        """Creates a new :py:class:`IUnattended`  guest installation object.  This can be used to
        analyze an installation ISO to create and configure a new machine for it to be installed
        on.  It can also be used to (re)install an existing machine.

        return unattended of type :class:`IUnattended`
            New unattended object.

        """

class IUnattended(Interface):
    """
    The IUnattended interface represents the pipeline for preparing
    the Guest OS for fully automated install.

    The typical workflow is:

    Call :py:func:`IVirtualBox.create_unattended_installer`  to create the object
    Set :py:func:`IUnattended.iso_path`  and call :py:func:`IUnattended.detect_iso_os`
    Create, configure and register a machine according to :py:func:`IUnattended.detected_os_type_id`
    and the other detectedOS* attributes.
    Set :py:func:`IUnattended.machine`  to the new IMachine instance.
    Set the other IUnattended attributes as desired.
    Call :py:func:`IUnattended.prepare`  for the object to check the
    attribute values and create an internal installer instance.
    Call :py:func:`IUnattended.construct_media`  to create additional
    media files (ISO/floppy) needed.
    Call :py:func:`IUnattended.reconfigure_vm`  to reconfigure the VM
    with the installation ISO, additional media files and whatnot
    Optionally call :py:func:`IUnattended.done`  to destroy the internal
    installer and allow restarting from the second step.

    Note! Steps one is currently not implemented.
    """

A new property has been included under the HostNetworkInterface:
    @property
    def wireless(self):
        """Get bool value for 'wireless'
        Specifies whether the interface is wireless.
        """

I haven't spun up a beta virtualbox to test (yet). To test the bleeding edge it is possible to ask the builder to download and build against the virtualbox master VirtualBox.xidl file.
python build.py --build-against-master --force-download
Note: build.py is does not yet support py3 (and it only just got some new updates in #89 resolution which allow it to work under win10).

This is great news!!! I'm especially excited for the IUnattended interface. Perhaps we can have an beta release of pyvbox 1.3.0? (1.3.0b1?) and upload to PyPI? I'm pretty sure that anything that has a beta semver won't be downloaded unless you specifically request it? Correct me if I'm wrong.

Also we should work on getting build.py to support Python 3.x. That would be pretty nice :D Maybe also setup a build for running it against the latest virtualbox.xidl?

Sounds like a good plan. I'll create a branch with a beta library build.

I went ahead and made build.py compatible with Python 3.x. Tested it using 3.5 and it seems to work.


Document Delivery: Shared component#11408

Issue #: /bcgov/entity#11408
Description of changes:

Added additional label and additional email field

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the bcrs-entities-create-ui license (Apache 2.0).

Not required but always welcome to create an additional Story, for this additional Prop/label. Since this prop is not required, you don't have update the existing stories, just create a new one with the added prop/value. Super ez :)
Looks good though, just some minor comments and Severins to address 👍

*Also after updating the stories, storybook:build before pushing up the last commit!

Not required but always welcome to create an additional Story, for this additional Prop/label. Since this prop is not required, you don't have update the existing stories, just create a new one with the added prop/value. Super ez :)

I agree with Cameron: please create additional unit tests for these changes.
I've merged this now because I know you won't get around to unit tests until the next day and I need to rebase and pick up these changes ASAP.

*Also after updating the stories, storybook:build before pushing up the last commit!

Ah. To be clear, this PR is for a component shared by different pages in Create UI. It is not a bcrs-shared-component :)


Review styles for dark-themed firefox

There was a report in the IRC channel that the textarea had "similar colors to the background".
I don't know if it means light text on light background or dark text on dark background. Whatever, it should be fixed.

See #20 instead


Upgrade RDS PostgreSQL version when PostGIS 3.1 is available

Overview
PostGIS 3.1 includes MVT generation performance enhancements
http://postgis.net/2020/12/18/postgis-3.1.0/
https://rmr.ninja/2020-11-19-waiting-for-postgis-3-1-mvt/
At the time of writing RDS only has support for PostGIS 3.0.x
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.Extensions.12x

@jwalgran Often times RDS behaves like a Linux distribution and only provides support for a pinned set of PostGIS extensions for any major version of Postgres. e.g., PostgreSQL 12.0 is only going to be compatible with the current version of PostGIS, and we'll need to upgrade our database to be able to take advantage of newer versions of PostGIS.

I checked the currently available version of Postgres 13 on RDS and unfortunately it only has 3.0.1. I anticipate that we would have to upgrade to a future Postgres 13 RDS release to get access to PostGIS 3.1. Not sure if they "backport" extension updates to older database versions.


[6.0🍒] AST: fix isWrittenWithConstraints

Explanation: Strengthens how we answer this method's query on an extension, which fixes a rare issue where an assumption previously made is not actually true.
Scope: Narrow. Fixes a rare issue.
Issue: rdar://125659789
Original PR: https://github.com/apple/swift/pull/74372 & https://github.com/apple/swift/pull/74400
Risk: Low
Testing: reproducer for initial issue is included.
Reviewer: TBD

@swift-ci test


Incorrect calculation of centroid.

I tried using this project for a given set of co ordinates and rssi values(which is later transformed into distance in meters)
double[][] positions = new double[][]{ {49.8773045,8.654494}, {49.877183,8.6547037} {{49.8772021,8.6548117}};         double[] rssi = new double[]{-69.0, -61.0,-81.0};  // After transformation the rssi values equate to  double[] distance =  new double[]{14.0,10.0,15.0}
The calculated centroid co ordinates are 48.263028853759394, 12.457544241370318  which locates to some other country. Could you look into this issue ?

The trilateration algorithm requires all values to be of the same type of units. For example, they should all be in meters.
You will need to convert your lat/lng from decimal degrees to meters using some form of map projection (e.g. Mercator). You will also need to convert your RSSI into a distance of meters using a path loss algorithm.
Once you have done this, you can feed those values into the algorithm. Once calculated, you must then convert the result from the map projection back into decimal degrees.

Thanks. That worked out for me.

Just note that the projection can cause errors at certain locations on the Earth. You might be better off with WGS 84 for example, depending on your application.

I used https://github.com/rolfrander/geo for the conversion.


Role Assignment API for namespaces

We need APIs on how to assign roles to System & Resource Group Namespaces
Tasks

RPC(s) on Proton for Role Assignment
Role creation (creating namespace and principal relation) on SpiceDB
Role creation on ShieldDB

Acceptance Criteria: User should be able to assign role to any principal, for any namespace

Issue was closed automatically, these tasks are remaining:

Role creation (creating namespace and principal relation) on SpiceDB
Role creation on ShieldDB

@krtkvrm can this closed now?

yes