How to setup an ssl certificate on docker mumble server?

The issue
I'm wondering if I could get some help with setting up my Mumble server with a ssl certificate. So that I don't have to convince my gaming friends I'm not trying to hack them when they get the "untrusted certificate" message.
So I recently installed a Mumble server using docker-compose.
Normally, I use Nginx Proxy Manager to set up ssl to the various services I'm running on my homeserver. It's a noob-friendly GUI. You click "add proxy", set the subdomain, forwarding up address and port, and then click "request ssl certificate". And voila, it works.
So my domain is "example.com" which points to my ISP ip address. Also all subdomains point to the same ip (A records are example.com and *.example.com). In the ISP router, ports 80 and 443 are forwarded to the VM running Nginx Proxy Manager. This is how it works now for plex, nextcloud, etc.
Could someone help me with which steps I should go through to basically get rid of the "untrusted certificate" message with the docker-based Mumble server? Adding a proxy in Nginx Proxy Manager and forwarding "mumble.example.com" to the ip and port the docker server is running on doesn't seem to work.
Thanks I advance!
Mumble version
Latest as of last week.
Mumble component
Server
OS
Linux
Additional information
No response

@azlux do you have experience with this?

@bioluks,
I think that workaround could be acceptable for me. I just use it for simple gaming voice chat with some friends. So there is no very high demand for a super safe hack-proof system. If someone wants to hack me and listen in, he/she can feel welcome and join in on the gaming. =p
What would exactly be the risk of this method? What would be the worst thing someone with bad intentions could do?
To make sure I understood you correctly:
So you copied the certificate files to INSIDE the docker container? So not in a directory that you mounted/bound via the docker compose file?
And if so, what is the path you used in the docker compose file to point to the certificate?
Thanks for the help! Most of my gaming friends seem to just click past the "untrusted certificate" warning. But I already received a "what kind of espionage shizzle is this?" in the WhatsApp group. =p

@Istria1704 _ A malicious script/unauthorized access to your system could decrypt your encrypted traffic since key.pem is readable by everyone. This is exaggeration for both of us since we don't have extreme use cases.
To make things easier not only for you but anybody with this problem here is a fully working docker-compose:
version: '3.3'

services:
    mumble-server:
        image: mumblevoip/mumble-server:v1.4.230-6
        container_name: murmur
        hostname: murmur
        restart: always
        volumes:
            - type: bind
              source: ./data/mumble
              target: /data
              read_only: false
            - type: bind
              source: ./data/certificates
              target: /certificates
              read_only: false
        environment:
            MUMBLE_CONFIG_SSL_CERT: /certificates/cert.pem
            MUMBLE_CONFIG_SSL_KEY: /certificates/key.pem
            MUMBLE_SUPERUSER_PASSWORD: <your-superuser-password>
            MUMBLE_CONFIG_SERVERPASSWORD: <your-server-password>
            MUMBLE_CONFIG_USERS: 1000 # Max amount of users that can connect at the same time
            MUMBLE_CONFIG_USERSPERCHANNEL: 0  # Means unlimited if zero
            MUMBLE_CONFIG_WELCOMETEXT: "Welcome to my server. bla bla bla"
            MUMBLE_CONFIG_ALLOWHTML: true
        ports:
            - 64738:64738/tcp
            - 64738:64738/udp
#       expose:
#           - 6502 --> Needed for ICE RPC

Notice how the files are in the current directory inside data/certificates. The permissions are as follows:

the cert.pem is readable by default, but for the key.pem file you'll need to chmod 744 it.
And about the gaming group. It's always like this, speaking from experience they never question the big brother apps and companies but don't you dare as a fellow friend to care about their and your own privacy! It's totally okay if they steal data or spy, because then if you ask them there is nothing to hide.

@Istria1704 Glad to hear it worked for you, no problem 👍
You are right about the key.pem and cert.pem files, mine were named like this but Let'sEncrypt users have fullchain.pem and privkey.pem instead.
About the gaming group, again; a well-known TLD and a readable domain could help ;)
Just out of curiosity, did you need to change the file permissions of privkey.pem or was copying it over enough? Or did you directly bind the LetsEncrypt directory?

I didn't try weather it worked or not with Mumble before chmodding the file. But I did see under ls -la that the privkey file had no reading permissions before chmod. And did (same as in your example) after.

Let's close it as it has been resolved. It can still be found by future users if they search for their problem.


Optimize compute piece size function

Signed-off-by: Jim Ma<EMAIL_ADDRESS>
Description

Related Issue

Motivation and Context

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Documentation Update (if none of the other choices apply)

Checklist:

[x] Code compiles correctly.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

Codecov Report

Merging #528 (6c723f9) into main (9a0d057) will decrease coverage by 0.06%.
The diff coverage is 11.11%.

@@            Coverage Diff             @@
##             main     #528      +/-   ##
==========================================
- Coverage   39.48%   39.42%   -0.07%
==========================================
  Files          86       86
  Lines        6536     6529       -7
==========================================
- Hits         2581     2574       -7
+ Misses       3584     3582       -2
- Partials      371      373       +2

Flag
Coverage Δ

e2etests
?

unittests
39.42% <11.11%> (-0.07%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

cdnsystem/cdnutil/cdn_util.go
12.50% <0.00%> (-87.50%)
:arrow_down:

cdnsystem/daemon/task/manager_util.go
0.00% <0.00%> (ø)

client/daemon/peer/piece_manager.go
66.52% <100.00%> (+1.08%)
:arrow_up:

client/daemon/peer/peertask_stream_callback.go
62.02% <0.00%> (-2.54%)
:arrow_down:

client/daemon/peer/peertask_stream.go
56.64% <0.00%> (-1.05%)
:arrow_down:


First-time user observations and error

First up, great that someone's working on making Julia use on HPC systems easier!
As I'm now trying JUHPC for the first time here's some things I noticed/ran into. Background: viz guy at Dutch HPC site, so consider me an "internal user" of our system :)
First, there's a lot of output coming not just from JUHPC, but also some of the programs it calls itself. This is a bit confusing, as it's not immediately clear what to pay attention to and what can be ignored. Example below, apparently stuff gets installed in a tempdir, which resolves to /dev/shm on our system, which is fairly non-standard, but okay. The thing I wasn't clear on was if "You can uninstall at any time with juliaup self uninstall and these changes will be reverted" was something I needed to remember or not. It's only at the end when it reads "cleaning up temporary juliaup installation in /dev/shm/paulm/juliaup" that I figured all the /dev/shm stuff was not relevant for the end result. Perhaps putting all that output in a log file would be better, as it hides unnecessary details that aren't of interest to the average user.
...
info: downloading installer
Welcome to Julia!

This will download and install the official Julia Language distribution
and its version manager Juliaup.

Juliaup will be installed into the Juliaup home directory, located at:

  /dev/shm/paulm/juliaup

The julia, juliaup and other commands will be added to
Juliaup's bin directory, located at:

  /dev/shm/paulm/juliaup/bin

You can uninstall at any time with juliaup self uninstall and these
changes will be reverted.
...
[ JUHPC: cleaning up temporary juliaup installation in /dev/shm/paulm/juliaup.
[ JUHPC: ... The installation of the HPC setup for juliaup, julia and HPC key packages is complete.

For the lines below a similar thing applies, as I assume the "re-start Julia" instruction really is just a detail that isn't relevant for JUHPC installation.
Precompiling project...
  75 dependencies successfully precompiled in 322 seconds. 23 already precompiled.
[ Info: Configure the active project to use CUDA 12.6 from the local system; please re-start Julia for this to take effect.

After then trying to activate the installed JUHPC environment it seems the first steps are okay:
snellius paulm@tcn965 14:30 ~/c/JUHPC$ module list

Currently Loaded Modules:
  1) 2024                           5) GCC/13.3.0                      9) libpciaccess/0.18.1-GCCcore-13.3.0  13) UCX/1.16.0-GCCcore-13.3.0        17) UCC/1.3.0-GCCcore-13.3.0
  2) GCCcore/13.3.0                 6) numactl/2.0.18-GCCcore-13.3.0  10) hwloc/2.10.0-GCCcore-13.3.0         14) libfabric/1.21.0-GCCcore-13.3.0  18) OpenMPI/5.0.3-GCC-13.3.0
  3) zlib/1.3.1-GCCcore-13.3.0      7) XZ/5.4.5-GCCcore-13.3.0        11) OpenSSL/3                           15) PMIx/5.0.2-GCCcore-13.3.0        19) gompi/2024a
  4) binutils/2.42-GCCcore-13.3.0   8) libxml2/2.12.7-GCCcore-13.3.0  12) libevent/2.1.12-GCCcore-13.3.0      16) PRRTE/3.0.5-GCCcore-13.3.0       20) CUDA/12.6.0

snellius paulm@tcn965 14:30 ~/c/JUHPC$ source /scratch-shared/paulm/juhpc_setup_genoa/activate
[ JUHPC: Activating HPC setup for juliaup, julia and HPC key packages requiring system libraries...
[ JUHPC: PATH: /scratch-shared/paulm/juhpc_setup_genoa/juliaup_wrapper:/scratch-shared/paulm/juhpc_setup_genoa/bin:/sw/arch/RHEL9/EB_production/2024/software/CUDA/12.6.0/nvvm/bin:/sw/arch/RHEL9/EB_production/2024/software/CUDA/12.6.0/bin:/sw/arch/RHEL9/EB_production/2024/software/OpenMPI/5.0.3-GCC-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/UCC/1.3.0-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/PRRTE/3.0.5-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/PMIx/5.0.2-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/libfabric/1.21.0-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/UCX/1.16.0-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/libevent/2.1.12-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/OpenSSL/3/bin:/sw/arch/RHEL9/EB_production/2024/software/hwloc/2.10.0-GCCcore-13.3.0/sbin:/sw/arch/RHEL9/EB_production/2024/software/hwloc/2.10.0-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/libxml2/2.12.7-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/XZ/5.4.5-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/numactl/2.0.18-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/binutils/2.42-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/GCCcore/13.3.0/bin:/scratch-shared/paulm/juhpc_setup_genoa/juliaup_wrapper:/scratch-shared/paulm/juhpc_setup_genoa/bin:/gpfs/admin/hpc/usertools:/bin:/home/paulm/.local/bin:/home/paulm/software/bob:/home/paulm/bin:/gpfs/admin/hpc/sw/hpc/bin:/gpfs/admin/hpc/sw/hpc/sbin:/opt/neovim/current/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
[ JUHPC: JULIAUP_DEPOT_PATH: /scratch-shared/paulm/juhpc_setup_genoa/depot
[ JUHPC: JULIA_DEPOT_PATH: /scratch-shared/paulm/juhpc_setup_genoa/depot
[ JUHPC: JULIA_LOAD_PATH: :/scratch-shared/paulm/juhpc_setup_genoa/julia_preferences
[ JUHPC: CUDA_HOME: /sw/arch/RHEL9/EB_production/2024/software/CUDA/12.6.0
[ JUHPC: JULIA_CUDA_MEMORY_POOL: none

But not having a julia available is somewhat surprising:
snellius paulm@tcn965 14:31 ~/c/JUHPC$ which julia
/usr/bin/which: no julia in (/scratch-shared/paulm/juhpc_setup_genoa/juliaup_wrapper:/scratch-shared/paulm/juhpc_setup_genoa/bin:/sw/arch/RHEL9/EB_production/2024/software/CUDA/12.6.0/nvvm/bin:/sw/arch/RHEL9/EB_production/2024/software/CUDA/12.6.0/bin:/sw/arch/RHEL9/EB_production/2024/software/OpenMPI/5.0.3-GCC-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/UCC/1.3.0-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/PRRTE/3.0.5-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/PMIx/5.0.2-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/libfabric/1.21.0-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/UCX/1.16.0-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/libevent/2.1.12-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/OpenSSL/3/bin:/sw/arch/RHEL9/EB_production/2024/software/hwloc/2.10.0-GCCcore-13.3.0/sbin:/sw/arch/RHEL9/EB_production/2024/software/hwloc/2.10.0-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/libxml2/2.12.7-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/XZ/5.4.5-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/numactl/2.0.18-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/binutils/2.42-GCCcore-13.3.0/bin:/sw/arch/RHEL9/EB_production/2024/software/GCCcore/13.3.0/bin:/scratch-shared/paulm/juhpc_setup_genoa/juliaup_wrapper:/scratch-shared/paulm/juhpc_setup_genoa/bin:/gpfs/admin/hpc/usertools:/bin:/home/paulm/.local/bin:/home/paulm/software/bob:/home/paulm/bin:/gpfs/admin/hpc/sw/hpc/bin:/gpfs/admin/hpc/sw/hpc/sbin:/opt/neovim/current/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin)

And juliaup is where I would expect it, but running that gives me an error:
snellius paulm@tcn965 14:31 ~/c/JUHPC$ which juliaup
/scratch-shared/paulm/juhpc_setup_genoa/juliaup_wrapper/juliaup

snellius paulm@tcn965 14:31 ~/c/JUHPC$ juliaup

     ???  ???   ???  ???  ??????????  ???????
     ???  ???   ???  ???  ???????????????????
     ???  ???   ???  ???????????????????
???  ???  ???   ???  ??????????????? ???
????????  ?????????  ???  ??????     ????????
 ??????    ???????   ???  ??????      ???????

[ JUHPC: This is the first call to juliaup: installing juliaup and the latest julia...

info: downloading installer
Welcome to Julia!

This will download and install the official Julia Language distribution
and its version manager Juliaup.

Juliaup will be installed into the Juliaup home directory, located at:

  /scratch-shared/paulm/juhpc_setup_genoa

The julia, juliaup and other commands will be added to
Juliaup's bin directory, located at:

  /scratch-shared/paulm/juhpc_setup_genoa/bin

You can uninstall at any time with juliaup self uninstall and these
changes will be reverted.

You are trying to install Juliaup into the folder
`/scratch-shared/paulm/juhpc_setup_genoa`,
but that folder already exists. Please remove that folder
and then start the setup process again.
[ JUHPC: ERROR: juliaup installation failed.

The error doesn't make much sense to me, as I assumed juliaup was already installed earlier? Since the installation took quite a few minutes and processed a lot of Julia packages. So perhaps something is going wrong on my end?
So with respect to actually using (as an end-user) the installed JUHPC environment I'm unsure what to expect. For example, one of the example scripts in the repo here shows the line . $JUHPC_SETUP_INSTALLDIR/activate, but I assume that I don't need to keep $JUHPC_SETUP_INSTALLDIR set, as that would defeat the purpose of having separate install directories?

Thanks for sharing this! One could indeed write a lot of information into log file instead of showing it.
All the output that is from JUHPC start with [ JUHPC:

You are trying to install Juliaup into the folder
/scratch-shared/paulm/juhpc_setup_genoa,
but that folder already exists. Please remove that folder
and then start the setup process again.

It looks like you gave the same folder for the setup installation and the juliaup installation. If you change that then it should work.

You can try with VERSION="refs/heads/initial" which will use the file from the pull request. There it will write the output into a log file instead. The output looks then as follows:
[todi][omlins@todi-ln002 ~]$ bash -l /tmp/juhpc $JUHPC_SETUP_INSTALLDIR $JULIAUP_INSTALLDIR

     ██╗  ██╗   ██╗  ██╗  ██╗██████╗  ██████╗
     ██║  ██║   ██║  ██║  ██║██╔══██╗██╔════╝
     ██║  ██║   ██║  ███████║██████╔╝██║
██╗  ██║  ██║   ██║  ██╔══██║██╔═══╝ ██║
╚█████╔╝  ╚██████╔╝  ██║  ██║██║     ╚██████╗
 ╚════╝    ╚═════╝   ╚═╝  ╚═╝╚═╝      ╚═════╝

[ JUHPC: Starting installation of HPC setup for juliaup, julia and HPC key packages requiring system libraries...
[ JUHPC: Installing juliaup and julia temporarily in /dev/shm/omlins/juliaup...

info: downloading installer
Installing Julia 1.11.0+0.aarch64.linux.gnu
Configured the default Julia version to be 'release'.
[ JUHPC: ... done: temporary installation completed.
[ JUHPC: Creating preferences for HPC key packages...
[ JUHPC: ... done: preferences created.
[ JUHPC: Creating wrapper for juliaup...
[ JUHPC: ... done.
[ JUHPC: Creating activate script...
[ JUHPC: ... done.
[ JUHPC: cleaning up temporary juliaup installation in /dev/shm/omlins/juliaup.
[ JUHPC: ... The installation of the HPC setup for juliaup, julia and HPC key packages is complete.

To avoid that people get worried because of the time nothing is happening a progress bar should be added...

Note that at this point only the setup is installed. Juliaup and julia will be installed at first call of juliaup. The user who installs the set up does not have to be the same user asked the one who uses it finally... It looks then as follows:
omlins@Omlin-Lenovo:~/tmpwdir/juliadev/JUHPC$ ssh todi.cscs.ch

=========================================================================
             IMPORTANT NOTICE FOR USERS of Alps (TODI)

  Documentation: Alps User Guide - https://confluence.cscs.ch/x/_gD0E
  Request support: Service Desk at https://support.cscs.ch
=========================================================================

[todi][omlins@todi-ln001 ~]$ # Variable set in craype_config
[todi][omlins@todi-ln001 ~]$ JUHPC_SETUP_INSTALLDIR=$SCRATCH/${HOSTNAME%%-*}/juhpc_setup  # HPC setup installation environment variables must be expanded during installation.
[todi][omlins@todi-ln001 ~]$
[todi][omlins@todi-ln001 ~]$ # Load required modules (including correct CPU and GPU target modules)
[todi][omlins@todi-ln001 ~]$ module load cray

[todi][omlins@todi-ln001 ~]$ module switch PrgEnv-cray PrgEnv-gnu

Lmod is automatically replacing "cce/17.0.0" with "gcc-native/12.3".

Due to MODULEPATH changes, the following have been reloaded:
  1) cray-libsci/23.12.5     2) cray-mpich/8.1.28

[todi][omlins@todi-ln001 ~]$ module load cudatoolkit craype-accel-nvidia90
[todi][omlins@todi-ln001 ~]$ module load cray-hdf5-parallel
[todi][omlins@todi-ln001 ~]$ module list

Currently Loaded Modules:
  1) craype-arm-grace     4) xpmem/2.9.6-1.1_20240511212657__g087dc11fc19d   7) cray/23.12       10) cray-mpich/8.1.28    13) cudatoolkit/24.3_12.3
  2) libfabric/<IP_ADDRESS>   5) perftools-base/23.12.0                          8) gcc-native/12.3  11) cray-libsci/23.12.5  14) craype-accel-nvidia90
  3) craype-network-ofi   6) cpe/23.12                                       9) craype/2.7.30    12) PrgEnv-gnu/8.5.0     15) cray-hdf5-parallel/<IP_ADDRESS>

[todi][omlins@todi-ln001 ~]$
[todi][omlins@todi-ln001 ~]$ # Activate the HPC setup environment variables
[todi][omlins@todi-ln001 ~]$ . $JUHPC_SETUP_INSTALLDIR/activate
[ JUHPC: Activating HPC setup for juliaup, julia and HPC key packages requiring system libraries...
[ JUHPC: PATH: /capstor/scratch/cscs/omlins/todi/juhpc_setup/juliaup_wrapper:/capstor/scratch/cscs/omlins/todi/juliaup/bin:/opt/cray/pe/hdf5-parallel/<IP_ADDRESS>/bin:/opt/cray/pe/hdf5/<IP_ADDRESS>/bin:/opt/nvidia/hpc_sdk/Linux_aarch64/24.3/cuda/12.3/compute-sanitizer:/opt/nvidia/hpc_sdk/Linux_aarch64/24.3/cuda/12.3/bin:/opt/nvidia/hpc_sdk/Linux_aarch64/24.3/cuda/12.3/libnvvp:/opt/nvidia/hpc_sdk/Linux_aarch64/24.3/profilers/Nsight_Compute:/opt/nvidia/hpc_sdk/Linux_aarch64/24.3/profilers/Nsight_Systems/bin:/opt/cray/pe/mpich/8.1.28/ofi/gnu/12.3/bin:/opt/cray/pe/mpich/8.1.28/bin:/opt/cray/pe/craype/2.7.30/bin:/opt/cray/pe/perftools/23.12.0/bin:/opt/cray/pe/papi/<IP_ADDRESS>/bin:/opt/cray/libfabric/<IP_ADDRESS>/bin:/capstor/scratch/cscs/omlins/julia_local/julia_latest/bin:/users/omlins/stackinator/bin:/usr/local/bin:/usr/bin:/bin:/usr/lpp/mmfs/bin:/usr/lib/mit/bin:/opt/cray/pe/bin
[ JUHPC: JULIAUP_DEPOT_PATH: /capstor/scratch/cscs/omlins/todi/juliaup/depot
[ JUHPC: JULIA_DEPOT_PATH: /capstor/scratch/cscs/omlins/todi/juliaup/depot
[ JUHPC: JULIA_LOAD_PATH: :/capstor/scratch/cscs/omlins/todi/juhpc_setup/julia_preferences
[ JUHPC: CUDA_HOME: /opt/nvidia/hpc_sdk/Linux_aarch64/24.3/cuda/12.3
[ JUHPC: JULIA_CUDA_MEMORY_POOL: none
[todi][omlins@todi-ln001 ~]$
[todi][omlins@todi-ln001 ~]$ # Call juliaup to install juliaup and latest julia on scratch
[todi][omlins@todi-ln001 ~]$ juliaup

     ██╗  ██╗   ██╗  ██╗  ██╗██████╗  ██████╗
     ██║  ██║   ██║  ██║  ██║██╔══██╗██╔════╝
     ██║  ██║   ██║  ███████║██████╔╝██║
██╗  ██║  ██║   ██║  ██╔══██║██╔═══╝ ██║
╚█████╔╝  ╚██████╔╝  ██║  ██║██║     ╚██████╗
 ╚════╝    ╚═════╝   ╚═╝  ╚═╝╚═╝      ╚═════╝

[ JUHPC: This is the first call to juliaup: installing juliaup and the latest julia...

info: downloading installer
Welcome to Julia!

This will download and install the official Julia Language distribution
and its version manager Juliaup.

Juliaup will be installed into the Juliaup home directory, located at:

  /capstor/scratch/cscs/omlins/todi/juliaup

The julia, juliaup and other commands will be added to
Juliaup's bin directory, located at:

  /capstor/scratch/cscs/omlins/todi/juliaup/bin

You can uninstall at any time with juliaup self uninstall and these
changes will be reverted.

Now installing Juliaup
Installing Julia 1.11.0+0.aarch64.linux.gnu
Configured the default Julia version to be 'release'.
Julia was successfully installed on your system.
[ JUHPC: ... done: installation completed (location: /capstor/scratch/cscs/omlins/todi/juliaup). You can now use juliaup and julia normally.

@paulmelis : I think i have addressed all the issues you raised. Could you please try again using the branch from the PR setting version as before? I also added a key word argument for verbosity. All the changes are documented here: https://github.com/JuliaParallel/JUHPC/tree/initial?tab=readme-ov-file#2-call-juhpc

Yep, seems all okay now!
snellius paulm@tcn1174 19:51 ~/c/JUHPC$ m list
No modules loaded
snellius paulm@tcn1174 19:51 ~/c/JUHPC$ cat snellius-genoa.sh
#!/bin/sh
source ./snellius-genoa.modules

export JUHPC_CUDA_HOME=$EBROOTCUDA
export JUHPC_CUDA_RUNTIME_VERSION=12.6
export JUHPC_MPI_HOME=$EBROOTOPENMPI
export JUHPC_MPI_EXEC=srun
#export HDF5

export JUHPC_SETUP_INSTALLDIR=/scratch-shared/paulm/juhpc_setup_genoa
# XXX need to escape any $ in this value
export JULIAUP_INSTALLDIR=/scratch-shared/paulm/juliaup_genoa

bash -l ./juhpc $JUHPC_SETUP_INSTALLDIR $JULIAUP_INSTALLDIR

snellius paulm@tcn1174 19:51 ~/c/JUHPC$ cat snellius-genoa.modules
module load 2024
module load gompi/2024a
module load CUDA/12.6.0

snellius paulm@tcn1174 19:51 ~/c/JUHPC$ ./snellius-genoa.sh

     ██╗  ██╗   ██╗  ██╗  ██╗██████╗  ██████╗
     ██║  ██║   ██║  ██║  ██║██╔══██╗██╔════╝
     ██║  ██║   ██║  ███████║██████╔╝██║
██╗  ██║  ██║   ██║  ██╔══██║██╔═══╝ ██║
╚█████╔╝  ╚██████╔╝  ██║  ██║██║     ╚██████╗
 ╚════╝    ╚═════╝   ╚═╝  ╚═╝╚═╝      ╚═════╝

[ JUHPC: Starting installation of HPC setup for juliaup, julia and HPC key packages requiring system libraries...
[ JUHPC: Installing juliaup and julia temporarily in /dev/shm/paulm/juliaup...

info: downloading installer
Installing Julia 1.11.1+0.x64.linux.gnu
Configured the default Julia version to be 'release'.
[ JUHPC: ... done: temporary installation completed.
[ JUHPC: Creating preferences for HPC key packages...
|██████████████████████████████████████████████████| 100.00%[ JUHPC: ... done: preferences created.
[ JUHPC: Creating wrapper for juliaup...
[ JUHPC: ... done: wrapper created.
[ JUHPC: Creating activate script...
[ JUHPC: ... done: activate script created.
[ JUHPC: cleaning up temporary juliaup installation in /dev/shm/paulm/juliaup.
[ JUHPC: ... The installation of the HPC setup for juliaup, julia and HPC key packages is complete.

snellius paulm@tcn1174 19:55 ~/c/JUHPC$ source /scratch-shared/paulm/juhpc_setup_genoa/activate
[ JUHPC: Activating HPC setup for juliaup, julia and HPC key packages requiring system libraries...
[ JUHPC: PATH: /scratch-shared/paulm/juhpc_setup_genoa/juliaup_wrapper:/scratch-shared/paulm/juliaup_genoa/bin:/gpfs/admin/hpc/usertools:/bin:/home/paulm/.local/bin:/home/paulm/software/bob:/gpfs/admin/hpc/sw/hpc/bin:/gpfs/admin/hpc/sw/hpc/sbin:/opt/neovim/current/bin:/gpfs/admin/hpc/usertools:/bin:/home/paulm/.local/bin:/home/paulm/software/bob:/home/paulm/.local/bin:/home/paulm/bin:/gpfs/admin/hpc/sw/hpc/bin:/gpfs/admin/hpc/sw/hpc/sbin:/opt/neovim/current/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
[ JUHPC: JULIAUP_DEPOT_PATH: /scratch-shared/paulm/juliaup_genoa/depot
[ JUHPC: JULIA_DEPOT_PATH: /scratch-shared/paulm/juliaup_genoa/depot
[ JUHPC: JULIA_LOAD_PATH: :/scratch-shared/paulm/juhpc_setup_genoa/julia_preferences
[ JUHPC: CUDA_HOME: /sw/arch/RHEL9/EB_production/2024/software/CUDA/12.6.0
[ JUHPC: JULIA_CUDA_MEMORY_POOL: none

snellius paulm@tcn1174 19:55 ~/c/JUHPC$ which julia
/usr/bin/which: no julia in (/scratch-shared/paulm/juhpc_setup_genoa/juliaup_wrapper:/scratch-shared/paulm/juliaup_genoa/bin:/gpfs/admin/hpc/usertools:/bin:/home/paulm/.local/bin:/home/paulm/software/bob:/gpfs/admin/hpc/sw/hpc/bin:/gpfs/admin/hpc/sw/hpc/sbin:/opt/neovim/current/bin:/gpfs/admin/hpc/usertools:/bin:/home/paulm/.local/bin:/home/paulm/software/bob:/home/paulm/.local/bin:/home/paulm/bin:/gpfs/admin/hpc/sw/hpc/bin:/gpfs/admin/hpc/sw/hpc/sbin:/opt/neovim/current/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin)
snellius paulm@tcn1174 19:55 ~/c/JUHPC$ which juliaup
/scratch-shared/paulm/juhpc_setup_genoa/juliaup_wrapper/juliaup
snellius paulm@tcn1174 19:55 ~/c/JUHPC$ juliaup

     ██╗  ██╗   ██╗  ██╗  ██╗██████╗  ██████╗
     ██║  ██║   ██║  ██║  ██║██╔══██╗██╔════╝
     ██║  ██║   ██║  ███████║██████╔╝██║
██╗  ██║  ██║   ██║  ██╔══██║██╔═══╝ ██║
╚█████╔╝  ╚██████╔╝  ██║  ██║██║     ╚██████╗
 ╚════╝    ╚═════╝   ╚═╝  ╚═╝╚═╝      ╚═════╝

[ JUHPC: This is the first call to juliaup: installing juliaup and the latest julia...

info: downloading installer
Welcome to Julia!

This will download and install the official Julia Language distribution
and its version manager Juliaup.

Juliaup will be installed into the Juliaup home directory, located at:

  /scratch-shared/paulm/juliaup_genoa

The julia, juliaup and other commands will be added to
Juliaup's bin directory, located at:

  /scratch-shared/paulm/juliaup_genoa/bin

You can uninstall at any time with juliaup self uninstall and these
changes will be reverted.

Now installing Juliaup
Installing Julia 1.11.1+0.x64.linux.gnu
Configured the default Julia version to be 'release'.
Julia was successfully installed on your system.
[ JUHPC: ... done: installation completed (location: /scratch-shared/paulm/juliaup_genoa). You can now use juliaup and julia normally.
snellius paulm@tcn1174 19:56 ~/c/JUHPC$ julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.11.1 (2024-10-16)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia>
snellius paulm@tcn1174 19:56 ~/c/JUHPC$ which julia
/scratch-shared/paulm/juliaup_genoa/bin/julia
snellius paulm@tcn1174 19:56 ~/c/JUHPC$ which juliaup
/scratch-shared/paulm/juhpc_setup_genoa/juliaup_wrapper/juliaup
snellius paulm@tcn1174 19:56 ~/c/JUHPC$ juliaup status
 Default  Channel  Version                 Update
--------------------------------------------------
       *  release  1.11.1+0.x64.linux.gnu

Sure, I can look into that. One thing I'm still not clear on is this point:

I also wasn't noticing that installation to $JUHPC_SETUP_INSTALLDIR is more or less a one-time global action, while things going to $JULIAUP_INSTALLDIR are assumed to be per-user? Because if those two dirs are related (and meant to be cleanly used together only), then why aren't they part of the same parent directory? But maybe I'm misunderstanding that part, i.e. if juhpc can be called multiple times with the same $JUHPC_SETUP_INSTALLDIR while varying $JULIAUP_INSTALLDIR?

JUHPC_SETUP_INSTALLDIR is meant conceptually for all users or for a group of users (of course in practice it can also be for a single end user)
JULIAUP_INSTALLDIR is is always meant per single user

juhpc can be called multiple times with the same $JUHPC_SETUP_INSTALLDIR while varying $JULIAUP_INSTALLDIR

No it will complain if any of the directories exist already

Sure, I can look into that.

Great!

These statements seem to conflict?

JUHPC_SETUP_INSTALLDIR is meant conceptually for all users or for a group of users (of course in practice it can also be for a single end user)
JULIAUP_INSTALLDIR is is always meant per single user

versus

juhpc can be called multiple times with the same $JUHPC_SETUP_INSTALLDIR while varying $JULIAUP_INSTALLDIR
No it will complain if any of the directories exist already

Can or can't JUHPC_SETUP_INSTALLDIR be used multiple times for different JULIAUP_INSTALLDIR's?

These statements seem to conflict?

JUHPC_SETUP_INSTALLDIR is meant conceptually for all users or for a group of users (of course in practice it can also be for a single end user)
JULIAUP_INSTALLDIR is is always meant per single user

versus

juhpc can be called multiple times with the same $JUHPC_SETUP_INSTALLDIR while varying $JULIAUP_INSTALLDIR

No it will complain if any of the directories exist already

Can or can't JUHPC_SETUP_INSTALLDIR be used multiple times for different JULIAUP_INSTALLDIR's?

No, the statements don't conflict. Only one HPC setup can be installed into a JUHPC_SETUP_INSTALLDIR, however, multiple users can use it and it should contain a JULIAUP_INSTALLDIR that expands differently for each user as explained here: https://github.com/JuliaParallel/JUHPC?tab=readme-ov-file#2-call-juhpc

No, the statements don't conflict. Only one HPC setup can be installed into a JUHPC_SETUP_INSTALLDIR, however, multiple users can use it and it should contain a JULIAUP_INSTALLDIR that expands differently for each user as explained here: https://github.com/JuliaParallel/JUHPC?tab=readme-ov-file#2-call-juhpc

Then I must be missing information, as it seems juhpc always needs both directories as arguments to run. And since it checks that they don't exist, how can you reuse an existing JUHPC_SETUP_INSTALLDIR? What would the set of juhpc calls be to create different per-user JULIAUP_INSTALLDIR's, while using the same JUHPC_SETUP_INSTALLDIR?

@paulmelis I have merged the changes into main. You can now use VERSION=main to try. I will share with you later a concrete use case to hopefully clarify your questions.

@paulmelis Here is a use case that will hopefully clarify things for you. For a course, we need to use the old supercomputer, because the new one is currently not available. The software stack of the old supercomputer is frozen because it is decommissioned very soon. Thus, I have created a Julia HPC setup using JUHPC specifically for this course. I have run juhpc with the following arguments:
JULIAUP_INSTALLDIR="\$SCRATCH/../julia/\$USER/\${HOSTNAME%%[0-9]*}-gpu-nocudaaware/juliaup"```

Now all the students can activate the setup by executing:

JUHPC_SETUP_INSTALLDIR=$SCRATCH/../julia/${HOSTNAME%%[0-9]*}-gpu-nocudaaware/juhpc_setup
Load required modules, including correct CPU and GPU target modules (NOTE: the same modules should be loaded when running julia - JUHPC can be used in a module build recipe...)
module load daint-gpu
module switch PrgEnv-cray PrgEnv-gnu
module load cray-hdf5-parallel
module list
Activate the HPC setup environment variables
. $JUHPC_SETUP_INSTALLDIR/activate```
The students never need to run juhpc themselves. When the students call juliaup first time it will install it (and the latest julia version as well). It will automatically install it in the JULIAUP_INSTALLDIR I have chosen above. They can use juliaup and julia just normally. They don't need to know where it was installed, nor what preferences were set.
Does this use case clarify things for you?

@paulmelis I have released a new version, 0.3.0. Please use this one for your configuration PR!

@paulmelis Please let me know if the above use case clarified things for you and what do you think could be added to the documentation to make it clearer.


Examples of Select (all, get etc)

I'm trying to port over some sqlite3 calls to better-sqlite3 and I could do with some basic examples of how to use .all and .get. I understand the prepared statement part but  the syntax to make the call and process the return. This is an example from sqlite3:
this.db.all(    SELECT name FROM sqlite_master WHERE type='table' AND name='${sqliteUtil.table(name)}';  , function(err, rows) {
if(err) {
console.error(err);
return util.die('DB error at get');
}
next(null, rows.length === 1);

});

var stmt = db.prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`);
var rows;
try {
  rows = stmt.all(sqliteUtil.table(name));
} catch (err) {
  console.error(err);
  return util.die('DB error');
}
next(null, rows.length === 1);

Fantastic, thanks!

Slightly more complex one, SQlite:
this.db.all(    SELECT     (       SELECT start       FROM ${sqliteUtil.table('candles')}       ORDER BY start LIMIT 1     ) as 'first',     (       SELECT start       FROM ${sqliteUtil.table('candles')}       ORDER BY start DESC       LIMIT 1     ) as 'last'  , function(err, rows) {
if(err) {
console.error(err);
return util.die('DB error at get');
}
next(null, _.first(rows));

});
Better-sqlite:
Node doesn't like the ? ...
var stmt = this.db.prepare(`SELECT(SELECT start FROM ? ORDER BY start LIMIT 1) as 'first',(SELECT start FROM ? ORDER BY start DESC LIMIT 1) as 'last'`);
var rows;
try {
  rows = stmt.all(sqliteUtil.table('candles'),sqliteUtil.table('candles'));
} catch (err) {
  console.error(err);
  return util.die('DB error');
}
next(null, rows.length === 1);

In the previous example, the table names were treated as expressions, which is why I used parameter binding. However, when you're addressing a table name directly, you have to just interpolate it into the SQL string. This is not unique to better-sqlite3, it's part of the SQL language itself.
var stmt = this.db.prepare(`SELECT(SELECT start FROM '${sqliteUtil.table('candles')}' ORDER BY start LIMIT 1) as 'first',(SELECT start FROM '${sqliteUtil.table('candles')}' ORDER BY start DESC LIMIT 1) as 'last'`);
var rows;
try {
  rows = stmt.all();
} catch (err) {
  console.error(err);
  return util.die('DB error');
}
next(null, rows.length === 1);

Ah ok thanks!


acs-engine ci is broken

Is this a request for help?: No

Is this an ISSUE or FEATURE REQUEST? (choose one):
Issue

Orchestrator and version (e.g. Kubernetes, DC/OS, Swarm)
all
What happened:
az cli rev'ed and the current version is broken.
What you expected to happen:
ci to be able to deploy a template
How to reproduce it (as minimally and precisely as possible):
run @acs-bot tests
Anything else we need to know:
We are currently working on getting a working version of the cli back so that we can restore to normal operations

This is now fixed by #826


Cannot compile the OpenMP implementation of sort() with Visual Studio 2015

With Visual Studio 2015 and thrust version 1.8.3, it is impossible to compile to following code sample. I believe this is due to the implementation of OpenMP in Visual Studio. If this is confirmed by other users, it might be interesting to check which compiler is used in any OpenMP implementation of thrust functions. This way it would be possible to inform the user that this is a known bug and that CPP execution policy must be used instead with Visual Studio, at least for current versions of this compiler.
# include <thrust/sort.h>
# include <thrust/system/omp/execution_policy.h>
# include <chrono>
# include <random>
# include <vector>

double unit_random()
{
  static std::default_random_engine generator(std::chrono::system_clock::now().time_since_epoch().count());
  static std::uniform_real_distribution<double> distribution(double(0), double(1));
  return distribution(generator);
}

int main(int argc, char* argv[])
{
  constexpr size_t input_size = 100000;
  std::vector< double > input(input_size, 0);
  for ( size_t i = 0; i < input_size; ++i)
    input[i] = unit_random() * 1000;

  thrust::sort(thrust::omp::par, input.begin(), input.end());
  //of course, we get the same error for the following line compiled with /DTHRUST_HOST_SYSTEM=THRUST_HOST_SYSTEM_OMP
  //thrust::sort( input.begin(), input.end());
  return 0;
}

Here is the compilation output in the Visual Studio 2015 console:
thrust/system/omp/detail/sort.inl(136): error C2146: syntax error: missing ';' before identifier 'nseg'
thrust/detail/sort.inl(83): note: see reference to function template instantiation 'void thrust::system::omp::detail::stable_sort<thrust::system::omp::detail::par_t,RandomAccessIterator,StrictWeakOrdering>(thrust::system::omp::detail::execution_policy<thrust::system::omp::detail::par_t> &,RandomAccessIterator,RandomAccessIterator,StrictWeakOrdering)' being compiled
  with
  [
    RandomAccessIterator=std::_Vector_iterator<std::_Vector_val<std::_Simple_types<double>>>,
    StrictWeakOrdering=thrust::less<value_type>
  ]
thrust/system/detail/generic/sort.inl(63): note: see reference to function template instantiation 'void thrust::stable_sort<DerivedPolicy,RandomAccessIterator,StrictWeakOrdering>(const thrust::detail::execution_policy_base<DerivedPolicy> &,RandomAccessIterator,RandomAccessIterator,StrictWeakOrdering)' being compiled
  with
  [
      DerivedPolicy=thrust::system::omp::detail::par_t,
      RandomAccessIterator=std::_Vector_iterator<std::_Vector_val<std::_Simple_types<double>>>,
      StrictWeakOrdering=thrust::less<value_type>
  ]
thrust/detail/sort.inl(56): note: see reference to function template instantiation 'void thrust::system::detail::generic::sort<Derived,RandomAccessIterator,StrictWeakOrdering>(thrust::execution_policy<Derived> &,RandomAccessIterator,RandomAccessIterator,StrictWeakOrdering)' being compiled
  with
  [
      Derived=thrust::system::omp::detail::par_t,
      RandomAccessIterator=std::_Vector_iterator<std::_Vector_val<std::_Simple_types<double>>>,
      StrictWeakOrdering=thrust::less<value_type>
  ]
thrust/system/detail/generic/sort.inl(49): note: see reference to function template instantiation 'void thrust::sort<DerivedPolicy,RandomAccessIterator,thrust::less<value_type>>(const thrust::detail::execution_policy_base<DerivedPolicy> &,RandomAccessIterator,RandomAccessIterator,StrictWeakOrdering)' being compiled
  with
  [
      DerivedPolicy=thrust::system::omp::detail::par_t,
      RandomAccessIterator=std::_Vector_iterator<std::_Vector_val<std::_Simple_types<double>>>,
      StrictWeakOrdering=thrust::less<value_type>
  ]
thrust/detail/sort.inl(41): note: see reference to function template instantiation 'void thrust::system::detail::generic::sort<Derived,RandomAccessIterator>(thrust::execution_policy<Derived> &,RandomAccessIterator,RandomAccessIterator)' being compiled
  with
  [
      Derived=thrust::system::omp::detail::par_t,
      RandomAccessIterator=std::_Vector_iterator<std::_Vector_val<std::_Simple_types<double>>>
  ]
windows_cuda_thrust_error.cc(24): note: see reference to function template instantiation 'void thrust::sort<DerivedPolicy,std::_Vector_iterator<std::_Vector_val<std::_Simple_types<double>>>>(const thrust::detail::execution_policy_base<DerivedPolicy> &,RandomAccessIterator,RandomAccessIterator)' being compiled
  with
  [
      DerivedPolicy=thrust::system::omp::detail::par_t,
      RandomAccessIterator=std::_Vector_iterator<std::_Vector_val<std::_Simple_types<double>>>
  ]
thrust/system/omp/detail/sort.inl(136): error C2275: 'IndexType': illegal use of this type as an expression
thrust/system/omp/detail/sort.inl(113): note: see declaration of 'IndexType'
thrust/system/omp/detail/sort.inl(136): error C2065: 'nseg': undeclared identifier
thrust/system/omp/detail/sort.inl(142): error C2065: 'nseg': undeclared identifier
thrust/system/omp/detail/sort.inl(159): error C2065: 'nseg': undeclared identifier
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========

Thanks for the report, @tdelame.
@egaburov: I think I have a workaround in my branch issue-817. I'd like to schedule this for version 1.8.3 if you think we can fit it in. Otherwise, I'll push it to master. What do you think?

Sounds good, we will target this bugfix for 1.8.3. I'll use issue-817 branch for the integration purpose. I plan to get it  done by end of the  next week at the latest, and will submit PR to 1.8.3 then.


Changed group descriptor size based on INCOMPAT_64BIT and s_desc_size…

Changed the logic to decide the size of group descriptor based on INCOMPAT_64BIT flag and s_desc_size from superblock.
https://bugzilla.redhat.com/show_bug.cgi?id=1306416

@roliveri can you review the changes? Thanks,

@hsong-rh

Please keep the commit message subject under 72 chars (otherwise it does that ... in the PR title and in many other places
Please put the BZ URL in the body of the commit message on its own line so @miq-bot can deal with it.

See also https://github.com/ManageIQ/guides/blob/master/coding_style_and_standards.md#commits


docs(figma notes): add figma and design notes

Alaska Airlines Pull Request
Fixes: #20  (issue, if applicable)
Summary:
Add design notes and Figma file embed link.
Type of change:
Please delete options that are not relevant.

[ ] New capability
[ ] Revision of an existing capability
[ ] Infrastructure change (automation, etc.)
[x] Other (please elaborate)

Checklist:

[x] My update follows the CONTRIBUTING guidelines of this project
[x] I have performed a self-review of my own update

By submitting this Pull Request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
Pull Requests will be evaluated by their quality of update and whether it is consistent with the goals and values of this project. Any submission is to be considered a conversation between the submitter and the maintainers of this project and may require changes to your submission.
Thank you for your submission!
-- Auro Design System Team

@leeejune this PR has been approved and merged. Please update the DocSite with references to this new content. Thanks!

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add action for publish/upload on PyPI

... or at least show in the docs how to set one up.
(initially suggested in #27, but that issue was about something else)

Example: https://github.com/theislab/ehrapy/blob/development/.github/workflows/publish_package.yml
Need to replace the poetry build with the general build command and we're good to go. Need to add docs for the PyPI token

https://github.com/YosefLab/scib-metrics/blob/main/.github/workflows/release.yaml

I would vote for showing how to do one over including the action.
Any idea how publishing via CI interacts with 2FA? pypa has been pushing for 2FA on uploads recently, and it will be required for anndata in the future.

Any idea how publishing via CI interacts with 2FA? pypa has been pushing for 2FA on uploads recently, and it will be required for anndata in the future.

interesting, but isn't 2FA only for critical projects (likely not newly generated projects with this template)?

I would vote for showing how to do one over including the action.

agree it's also a great pedagogical example


fix(core): move tracking model change to root component.

fix #805

This change is

Codecov Report

Merging #809 into master will increase coverage by 0.03%.
The diff coverage is 94.59%.

@@            Coverage Diff            @@
##           master    #809      +/-   ##
=========================================
+ Coverage   91.77%   91.8%   +0.03%
=========================================
  Files          22      22
  Lines         924     903      -21
  Branches      258     247      -11
=========================================
- Hits          848     829      -19
+ Misses         76      74       -2

Impacted Files
Coverage Δ

src/core/src/services/formly.form.expression.ts
96.29% <ø> (-0.18%)
:arrow_down:

src/core/src/components/formly.group.ts
100% <ø> (ø)
:arrow_up:

src/core/src/services/formly.form.builder.ts
95.93% <100%> (-0.19%)
:arrow_down:

src/core/src/components/formly.field.ts
100% <100%> (+2.63%)
:arrow_up:

src/core/src/components/formly.form.ts
97.27% <93.54%> (+0.36%)
:arrow_up:

Continue to review full report at Codecov.

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


Linux Unity Editor support

[x] I am at the right place and my issue is directly related to ROS#. General technical questions I would post e.g. at ROS Answers or Stack Overflow. For library-specific questions I would look for help in the corresponding library forums.
[ ] I have thoroughly read the Contributing Guideline and writing this issue is the right thing to do in my case.

Above box not checked because a blank page appeared when following the link

I have a question!

[x] I searched the Wiki, open and closed issues for an answer. I tried my best to find the answer by myself without success. I believe that the discussion we will have in this issue, and the solutions we might find, will help me, and likely other community members who have a similar problem.

Here is my question:

Does this package supports Unity Editor running on Linux?
After importing this package and press play all the objects scripts references dissapeared and missing dlls errors appeared on the console.

Hello @jbga,
If your search the issue board thoroughly, you can see that some people actually got ROS# working within Unity on Linux. See for example #296, #297.
Please give more detailed explanation regarding the issue you have.

Erros like this appears when I import the project:
Assembly 'Library/ScriptAssemblies/Assembly-CSharp.dll' will not be loaded due to errors:
Reference has errors 'RosBridgeClient'.

Assembly 'Library/ScriptAssemblies/Assembly-CSharp-Editor.dll' will not be loaded due to errors:
Reference has errors 'Assembly-CSharp'.

Assembly 'Assets/RosSharp/Plugins/RosBridgeClient.dll' will not be loaded due to errors:
RosBridgeClient references strong named System.Threading.Tasks.Extensions, versions has to match. Assembly references: <IP_ADDRESS> Found in project: <IP_ADDRESS>.

Assembly 'Assets/RosSharp/Plugins/Microsoft/System.Text.Encodings.Web.dll' will not be loaded due to errors:
Reference has errors 'System.Memory'.

My OS is: Ubuntu 18.04.4 LTS
My Unity Version is: 2020.1.0b9

Your issue looks very similar to #300, maybe the procedures there would help you.
Otherwise I suggest that you try ROS# with the latest LTS version of Unity.
Please carefully read what you confirm on which you put a tick, and indeed do search the closed issues!

I searched the Wiki, open and closed issues for an answer.


fix corner arrow integration

fix corner arrow integration with popover corner radius.
fix this :  to this

Hi @gautierdelorme
Thanks PR!
Sorry, wasn't able to merge without conflicts so I just merge the other branch.
I want to merge your branch, so I want to you to align the format of my code?

Hi @corin8823 ! Problem is your code is not well indented so I corrected that.
To fix the conflict go to your file in XCode cmd+a to select all the code, then ctrl+i to re-indent it well.
And then you will be able to merge my PR without any issue.

Hi @gautierdelorme !
Indent of my code is 2space because according to the swift-style-guide.
Please be close If you do not have mind to fix.
Thank you PR!

Hi @corin8823 !
No problem, everything should be fine now. :)

Thanks for your work!! :+1:


feat: allow rewrite to be controlled by logout

Is your feature request related to a problem? Please describe.
My auth server is a proxy: it is an OIDC server that proxies through to OIDC or SAML (as a client).
For RevokeToken and TerminateSession to log you out from the upstream IdP when the upstream IdP is SAML, they need to be able to change the redirect.
Describe the solution you'd like
Add an additional input parameter to both RevokeToken and TerminateSession: validatedRedirectURI which is the post-logout redirect URI that has already been validated.
Add an additional output parameter: the redirect URI to use.
Most implementations would simply return the input parameter.  For implementations where the OIDC OP is a SAML SP (proxy), the redirect URI can be rewritten to be a redirect to the SAML IdP with the original redirect embedded as SAML RelayState.
Describe alternatives you've considered
No library change:
I can build this by wrapping the calls: record what the OIDC library does in a httptest.ResponseRecorder and then use that as a basis for a creating the actual response.
Backwards compatible change:
Add new versions of RevokeToken and TerminateSession with new names that are optional implementations.  If they're present, use them instead of the regular versions.

It turns that for some OIDC IdPs, TerminateSession needs to be a redirect rather than an API call.
In my server, I've built something that's pretty hacky: On a per-IdP basis if the IdP is configured as "globalLogout: true", then it tries EndSession as an API call.  If that fails, then it sets a variable that was passed down through Context.  A higher-level middleware reads that variable (HijackRedirect) and if it's set, then it changes the Location response header to be a redirect to the EndSessionEndpoint with just a post-logout redirect set.
That works for Keycloak.  In the next few weeks, I'll learn what works for a number of the other IdPs out there.

Closing as this can be solved by the new API proposed in #326

@muhlemmer Your suggestion is that the EndSessionRequest type include an optional return field that can be set?


[RD] Provide API access to RD Installments

We provided API access to projected RD Installments in order to facilitate complex revenue forecasting requirements.
Critical Changes
Changes

We provided API access to projected Recurring Donation installments in order to facilitate complex revenue forecasting requirements.

Issues Closed
Community Ideas Delivered
New Metadata
Deleted Metadata

Tracking W-8167087

@RadSFDeveloper @andrewyu-salesforce Ready for review.
@force2b Not expecting your review, but just in case you are interested...

@npsp-reedestockton ,  a test has failed. It seems related to this PR changes.

@RadSFDeveloper Code review suggestions have been addressed.

@RadSFDeveloper I've addressed the code review suggestions.  Thanks for the good catches!

@RadSFDeveloper Next set of changes ready for review.  These were really good catches.  One of the tests would have failed on the first of every month.


Live stream let's me choose replay that is too big

Let's me choose

Let's me apply

Gives me an error

We shouldn't be allowing ones over 4 hours, we'll take a look. Your best bet right now would be to download the file and then transcode it down, or us the desktop app at lbry.com/get to publish.


Serverless Monitoring for AWS Step Functions

Hey not sure if this is a feature request or I have have not been able to find the functionality.
Is there any way of using the StepFunction monitoring through CDK.
[https://docs.datadoghq.com/serverless/step_functions/installation/?tab=serverlessframework](Install Serverless Monitoring for AWS Step Functions)
We run a large amount of step function workflows but currently can see that it is monitoring invocations from our forwarding of log groups

but when we enter no logs or execution information are available

Any help or feedback would be greatly appreciated.

Hi @cshields236, this is on my list, and I target to finish it by the end of 2024.

@cshields236 Done! Doc: https://github.com/DataDog/datadog-cdk-constructs?tab=readme-ov-file#step-functions


Update dependencies to latest

Signed-off-by: Balaji Vijayakumar<EMAIL_ADDRESS>Incorporates changes from #105

Performance report
System Info
OS : Mac 12.5
VM : QEMU
MTU : 4000
Log
+ echo 'TCP: sending data'
TCP: sending data
+ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ../tmp/id_test -p 2222<EMAIL_ADDRESS>LD_LIBRARY_PATH=. ./iperf3 -c host.crc.testing
Warning: Permanently added '[<IP_ADDRESS>]:2222' (ED25519) to the list of known hosts.

 The gvisor dependency bump is a requirement for us to unblock podman rpm builds on Fedora, so the sooner we have it, the better. Please let me know if I can help out in anyway with speeding up this PR merge.

Fixed the lint issue.
But on tests failure, it is working fine for me in my local mac.
Not sure if it has to do something with the CI run.

/approve

@guillaumerose @gbraad can one of you please merge this?

@anjannath can you verify?
@baude, Gaulluime does not work on this anymore.

@balajiv113 @baude Shall I also create a new release?

@gbraad - yes we can.
But the tests failed again with unexpected EOF on main. But, This is not happening for me locally. Even in CI, after retry it was successful before.

I think this is the issue, https://github.com/containers/gvisor-tap-vsock/blob/main/test/suite_test.go#L224
Once we are able to run whoami we are trying to read 500characters atleast for checking panic. For some reason even after ssh is success the qcon.log doesn't contain booting logs so its less than 500 character.

at the moment unable to verify or check this (PTO-mode for most of the week)

@balajiv113 any update on this?

@gbraad
Just checked the CI. Tests looks fine only.
In latest PR merge there are some lint issues i believe. That's why actions are failing

I think this is the issue, https://github.com/containers/gvisor-tap-vsock/blob/main/test/suite_test.go#L224
Once we are able to run whoami we are trying to read 500characters atleast for checking panic. For some reason even after ssh is success the qcon.log doesn't contain booting logs so its less than 500 character.

@balajiv113  if you check here (ttps://github.com/containers/gvisor-tap-vsock/blob/main/test/suite_test.go#L121) , it’s the reverse. Only if the ssh connection fails it checks the qemu console log for a panic. There is a spurious panic issue that can occur on Mac when the process is run from a background process outside of the UI process tree (unless you set a launchd config that confers similar process priority) The former is the case with the GitHub agent, (which we don’t control the launchd config of) so we need a mechanism to retry a kernel boot. Otherwise CI will intermittently fail.

@n1hility this might need additional work. Either we choose now to disable this specific test and allow the CI to be green, fix the issue and hold further merges or choose to ignore this for 'now'.

@gbraad its likely just a race in the suite, so probably fine to ignore. Alternatively my suggestion would be to just have the code ignore ErrUnexpectedEOF. I just wanted to point out that if the whole section is disabled CI we might see panics come back which result tin CI hangs.

In that case, the testcase can be dropped or adjusted for this.


Adventurer's toolset

After using the adventurer's pickaxe I've got a couple thoughts. First off I'm very impressed with the implementation. It's very clever and I've found it very intuitive to use. I haven't seen vein mining implemented like this before and I REALLY liked it. I have, however, had one issue with it. that is early game repair for the diamond pick. My pick broke before I had gotten any diamonds and I had to craft up a new one just for a single mining trip. I have a few suggestion on how to solve this problem.
-One way is having the pick not automatically upgrade to the next level. The pick would need to be crafted with one of the next tier item. This puts more agency in the players hands making it more interactive
-Another potential solution is to keep the system you currently have except when the tool goes to the next tier until you repair it the item need to repair doesn't change. By this I mean that when the wooden pick becomes iron it can still be repaired with wood one more time before you need to use iron. This would help to extend the early game usage.
Next, a few ideas I have for changing the pick. One is that every five or ten levels unlock an upgrade socket. For the first few this would come with something pre-installed (vein mine, material tier, speed, soulbound, magnetic) but then you would start to get empty ones. You could choose different upgrades to put in their. The main one in my mind is being able to choose between "luck" and silk touch. Other possible upgrades are a shoveler upgrade (makes it an effective shovel), an axe upgrade (I think you get the idea), an auto-smelt upgrade, self-healing, 3x3 Area of effect, and a chargeable upgrade. A different way to do this is a tech tree sort-of-thing where you can choose where to allocate the points and going down one path (fortune for example) would close off another (silk touch)
And finally I would love to see other Adventurer's tools implemented. I would, no doubt, have a full set of these tools if possible. Potential upgrades for the axe would be lumbering that would knock down the full tree or shearer to make it effective against leaves. Shovel could have area of effect digging or a flatener function. Sword has the most possibilities including fire affect, beheading, and knockback. based on what I've seen already you're a very creative person and I would be very excited to see all the ideas you would come up with. Thanks for the awesome mod.

About the durability problem:
One of the possibilities is also automatically completely repairing the pickaxe on mining level ups and maybe give a repair boost each level up. Also I will definitely increase the overall durability of the pickaxe since it's nowhere near being a match for the actual tools.
About the "empty levels":
There is no real empty levels since there is always a minor upgrade applied. See the wiki page for reference.
About the skill system:
I really like the idea of having a skill system and I might even add that. But I wouldn't close down the other paths because the intended function of the pickaxe is keeping it and sticking to it. Leveling up 2 separate pickaxes for silk touch and fortune would just be a pain in the a**. So it would have some way of toggling between the modes.
About the other Adventurer's Tools:
I thought about adding the other tool before. The only thing really keeping me from doing it was probably that I didn't really have the idea for the adventurer's axe other than lumbering. I know I could have also done the shovel but it was less of a priority to me.
Possible skills:

All tools

Area (1,3x3(cross),3x3,5x5(no corners),5x5)
Mining Speed (fixed amount for each skill level spent)
Magnet (attracting items depending on tool class)
Soulbound
Auto-Repair
Durability
Tool level and repair material changes automatically after x skill points spent

Pickaxe

Tool level (wood, stone, iron, diamond, [cobalt/alumite if tinkers is available])
Silktouch
Fortune
Vein Mining
Auto Smelting

Axe

Lumbering (tier 1: just wood, tier 2: also leaves)
extra drops from leaves (?) (higher chance for apples, saplings)

Shovel

better grass paths (increase walking speed)
silktouch (?)

Hoe

sheering (useable like a sheer)
fertilizing (tilled soil is more effective)

Sword

smite
bane of the arthropods
fire aspect
looting
knockback
damage
armor penetration (only small percentages)
swinging speed
leeching

I'm open for any other ideas you have.
I'm gonna think about ways to implement the skill system and I will probably use the achievement GUI as a base for the skill tree drawing. However, I have to go to bed now because I unfortunately still go to school and don't wanna be sitting there half-dead with the final exams just around the corner.


Add a collection to the index

Collection name
a
Maintainer name
b
Maintainer contact link (i.e. repo issues link, email)
c
Repository URL
d
OCI Reference
aaaaaaa
I acknowledge that this collection provides new functionality, distinct from the existing dev container collections part of this index

[x] Confirm

#sign-off


⚠ Jenkins Plugins Artifactory has degraded performance

In 0fd1ce6, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 2814 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 946c3e5 after 46 minutes.


Auth Issue

I've tried deploying this to my Azure tenant but am having some troubles, the bot is online but it can't seem to authenticate something. I get a "Please sign in" (screenshot below) and when I click that it generates an exception. I've tripled checked all my client id/secret/scopes ... I am a little stumped. Hoping you can help.
Screenshot:

Another interesting thing is if I go to the app card and click the 'sign in' button it pops up a window with Bad Request (token.botframework.com)

Exception:
2020-02-09 05:31:35.242 +00:00 [Information] Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler: Failed to validate the token.Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10501: Signature validation failed. Unable to match key:kid: '[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'.Exceptions caught:
'[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'.token: '[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'.at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters)at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
2020-02-09 05:31:35.242 +00:00 [Information] Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler: Bearer was not authenticated. Failure message: IDX10501: Signature validation failed. Unable to match key:kid: '[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'.Exceptions caught:'[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'.token: '[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'.
2020-02-09 05:31:35.242 +00:00 [Information] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Route matched with {action = "PostAsync", controller = "Bot"}. Executing controller action with signature System.Threading.Tasks.Task PostAsync() on controller Dapasoft.OTN.Teams.Controllers.BotController (Dapasoft.OTN.Teams).

I'm not sure what's changed but its now working ;\

I've got same issue. May I have any advice? Any information would be very appreciated!!!

I've got same issue. May I have any advice? Any information would be very appreciated!!!

I also have this exact same issue, and I can't seem to solve it.  I thought authentication was supposed to be passed from the Teams client to the bot (no need for additional sign in)? Has anyone been able to resolve this? Any help would be majorly appreciated!


Crashes tmux server

Thank you for your plugins.
I can reproduce this issue with tmux-3.1b, tmux-3.1 e94bd5c (2020.11.10's master), and vim 8.2.1805, vim 8.2.1943, vim 8.2.2000.
The terminal is urxvt maximized.
With this plugin loaded the tmux server always crashed with a fatal error message, as explained below.
When this plugin wasn't loaded the tmux server never crashed.
"Crashed" means that the server catches an invalid event, emits a fatal error message and exits with status 1.

Start the very first tmux client running my shell (zsh) -- tmux server wasn't running yet.
Maximize the terminal, run vim somefile, press o to insert a new line and leave it there.
Switch to another window -- in my case it's always a maximized chromium if that matters.

At this point urxvt disappears from the screen with vim inside it.  Looking at the tmux server's log (enabled with SIGUSR2) I can see that the tmux server has closed with status 1 and a "fatal" error message, "invalid key modifier".  See the attached log file.  The log's tail reads:
1605644748.249732 screen_write_collect_flush: flushed 0 items (0 bytes) (screen_write_stop)
1605644748.249741 screen_write_stop: 0 cells (0 written, 0 skipped)
1605644748.249774 unref client 0x832c00 (2 references)
1605644748.249781 status_redraw exit: force=0, changed=0
1605644748.249791 /dev/pts/1: redraw added 0 bytes
1605644748.249799 server_client_reset_state: client /dev/pts/1 mode 8c5d
1605644748.249808 server_client_reset_state: cursor to 4,0
1605644748.249818 server_client_check_pane_buffer: pane %0 is on
1605644748.249828 @0 active pane not changed
1605644752.907582 /dev/pts/1: read 3 bytes (already 0)
1605644752.907606 /dev/pts/1: keys are 3 (\033[O)
1605644752.907614 /dev/pts/1: next key is 3 (\033[O) (expired=0)
1605644752.907622 /dev/pts/1: keys in list: 0x1000000001
1605644752.907628 /dev/pts/1: complete key \033[O 0x1000000001
1605644752.907643 cmdq_append </dev/pts/1>: [server_client_key_callback/0x84faf0]
1605644752.907653 cmdq_next <global>: empty
1605644752.907659 cmdq_next </dev/pts/1>: enter
1605644752.907665 cmdq_next </dev/pts/1>: [server_client_key_callback/0x84faf0] (1), flags 0
1605644752.907671 session $0 0 activity<PHONE_NUMBER>.907668 (last<PHONE_NUMBER>.558602)
1605644752.907679 cmd_find_from_client: s=$0 0
1605644752.907684 cmd_find_from_client: wl=1 1 w=@0 vim
1605644752.907688 cmd_find_from_client: wp=%0
1605644752.907692 cmd_find_from_client: idx=none
1605644752.907698 session 0 not pasting
1605644752.907704 key table root (pane %0)
1605644752.907710 key table root (pane %0)
1605644752.907714 not found in key table root
1605644752.907721 writing key 0x1000000001 (FocusOut) to %0
1605644752.907734 fatal: invalid key modifiers:<PHONE_NUMBER>

tmux-server-23005.log.tar.gz

Stop the press!  The server just crashed when this plugin wasn't loaded, and logged the same error message.  I'm closing this issue right away as it doesn't pertain this plugin.   Sorry for any trouble.


Support for multiple devices

Thank you so much for your work on this plugin.
I have a weather station with multiple temperature sensors. I was able to create a mapping using "category": "wsdcg", to showcase the first (ToutCh1) temp sensor with the following JSON but the additional sensors are not displayed. A work-around would be to be able to add as multiple devices, but that did not seem to be possible.
{
    "name": "Tuya",
    "options": {
        "projectType": "2",
        "endpoint": "https://openapi.tuyaus.com",
        "accessId": "",
        "accessKey": "",
        "countryCode": 1,
        "username": "",
        "password": "",
        "appSchema": "tuyaSmart",
        "deviceOverrides": [
            {
                "id": "",
                "category": "wsdcg",
                "unbridged": false,
                "schema": [
                    {
                        "code": "ToutCh1",
                        "newCode": "va_temperature",
                    },
                    {
                        "code": "HoutCh1",
                        "newCode": "humidity_value",
                    },
                    {
                        "code": "ToutCh2",
                        "newCode": "va_temperature",
                    },
                    {
                        "code": "HoutCh2",
                        "newCode": "humidity_value",
                    },
                    {
                        "code": "ToutCh3",
                        "newCode": "va_temperature",
                    },
                    {
                        "code": "HoutCh3",
                        "newCode": "humidity_value",
                    }
                ]
            }
        ],
        "debug": false
    },
    "platform": "TuyaPlatform"
}

Seemed easier to just add support for weather stations, so I did that with https://github.com/0x5e/homebridge-tuya-platform/pull/495


Add other controlnet conditioning models

Some other conditioning methods are not yet included, such as Semantic Segmentation. These are not in the Annotators but it could be worth it adding here. For example, the Semantic Segmentation is easy to add through Hugging Face.

How do they implement the annotators in A1111? Do they just have a bunch of files that implements them like we did here? Could be interesting if they want to switch their processors to this repo. Are there any other img2img processors that you know of (such as the depth_leres, segmentations)? We could put it in a backlog

A1111 Implementation is here: https://github.com/Mikubill/sd-webui-controlnet/tree/main/annotator.  It is derived from the ControlNet sources similar to this package.
There are design differences which I outlined in #43, but two major points would be harder to resolve:

Resizing and format conversions are handled elsewhere.  The canny annotator is simply a call to cv2.Canny.
They have processors as another layer on annotators which do additional transformations.  E.g. the safe/scribble parameters to HED are handled at the processor layer and are not in the annotator.

Unless there is a major compatibility break for controlnet_aux, code sharing would probably need to be another package that both depend on.


[NEW]: Fueling Emerging Technologies: The role of institutions in building digital futures

Please use this template to suggest a new event or update an existing event for the BBW website! You can also directly submit your event as a pull request to this repository. This will speed up things significantly!
# the name of your event
name = "Fueling Emerging Technologies: The role of institutions in building digital futures"

# shortest possible name (without year)
shortname = "Fueling Emerging Technologies: The role of institutions in building digital futures"

# type of the event
#  available types (you can choose more):
#   * meetup
#   * conference
#   * hackathon
#   * expo
#   * party
#   * other
types = ["other-panel"]

# status of the event
#  available types:
#   * idea
#   * planning
#   * published
status = "published"

# the name of the group organizing the event
org = "JUST Open Source Stiftung & WebZero"

# the github handle of the directly responsible individual for this event
# (this person will coordinate with #bbw24 organizers)
dri = "curiousgeorge21"

# A point of contact (responsible person)
poc = "Lex Gillon"

# the start date of the event
date = "2024-05-22"

# how many days the event lasts (1 - N)
days = 1

# the event times (shows up in the event card)
times = "19:00-21:00"

# Link to venues from the Places table - use this OR enter venueName, venueUrl and venueAddress
# venues = ["gabriel-loci"]

# the event venue name
venueName = "NEST Schank- und Speisewirtschaft"

# link to the venue on open-street maps
venueUrl = "https://www.openstreetmap.org/node/1248728521"

# the event venue address
venueAddress = "Görlitzer Str. 52, 10997 Berlin"

# the languages in which the event will take place (you can choose more)
languages = ["english"]

# the max number of attendees of the event
attendees = 60

# blockchains that the event deals with
# if it is an interchain event, then leave blank
chains = [""]

# tags for the event, will show up as labels.
# pick 1-4
tags = ["government", "startups", "society", "innovation"]

# A logo attachment
logo = "l![w3 Futures #1 (5)](https://github.com/blockchainweek/data/assets/36596158/e9b1105c-e227-4edf-b9df-0e9577273059)"

# a description of the event.
description = """
Innovation doesn't just happen. It takes an institutional mindset that facilitates new business creation, IP ownership, and talent acquisition. Berlin, with its thriving blockchain ecosystem, is doing something right. The question is: what can we teach teach the rest of the world? In this panel, we bring three of Berlin's biggest institutions (IHK, Berlin Senate, and Berlin Partner) together to discuss what role institutions play in building the future of the decentralized web - a mission that is famously anti-institution?
"""

[cfp]
# link to call for particioation
link = ""

[registration]
# type of registration
#  Possible values:
#   * tickets
#   * invites
#   * signup
type = "signup"

# price of the ticket
price = "0 EUR"

# link to the registration or ticket purchase page
link = "https://lu.ma/3lwt3xor"

# custom action button label
#button = "Sign up!"

# status of registrations
#  Possible values:
#   * available
#   * sold-out
#   * closed
status = "available"

Your event is live :) Please double check if everything's correct https://blockchainweek.berlin/24


Good practices on API design of a C++ (+ bindings) library using xtensor

As shown in @wolfv's very nice blog post on xtensor's vision, one of xtensor's greatest assets is to be able writing an implementation once in C++ and just re-using it for bindings in Python, R, Julia...
However, I've been often struggling on what would be a good interface in C++ that could also be easily reused for the bindings.
Most of the functions with xtensor objects as parameters that I see here and there have a signature like this
template <class E>
void func(E& arr) { }

The very generic template parameter E allows reusing func in many contexts (C++ vs bindings, tensor vs array, container vs expression...). This is convenient for very generic functions like numpy's universal functions.
However, in my case (and possibly many other cases) I want to provide functions that have a much more narrow scope, such that the following signature would be enough:
template <class T>
void func(xt::xtensor<T, 2>& arr) { }

Compared to the first one, the latter signature has the advantage of being much more explicit (it doesn't need extra documentation). Here, func only works with an array of two dimensions, and I don't expect an expression. Unfortunately, I cannot just reuse this function as-is for the bindings, i.e., using xt::pytensor instead of xt::xtensor).
So what are the options towards more explicit signatures reusable for the bindings?
option 1
#994 might be a solution to more explicit signatures regarding the number of dimensions or fixed shapes, although the type only inherits from xexpression.
option 2
As suggested here, another solution might be something like below for the implementation and C++ API
namespace detail
{
    template <class E>
    void func_impl(E&& arr) { }
}

template <class T>
void func(xt::xtensor<T, 2>& arr)
{
    detail::func_impl(arr);
}

and for, e.g., the Python bindings
template <class T>
void func(xt::pytensor<T, 2>& arr)
{
    detail::func_impl(arr);
}

This requires copying the whole signature several times, for the implementation as well as the public APIs (C++ and bindings of each of the supported languages). That's not a big deal, though, but that not ideal when the number of parameters is higher.
option 3
I've been thinking about another option that involves some generic programming. As I'm not yet familiarized with these techniques I'd like to know your expert thoughts on this.
// xtensor container selector
struct xtensor_c
{
};

template <class C, class T, std::size_t N>
struct xt_container
{
};

template <class T, std::size_t N>
struct xt_container<xtensor_c, T, N>
{
    using type = xt::xtensor<T, N>;
};

template <class C, class T, std::size_t N>
using xt_container_t = typename xt_container<C, T, N>::type;

For the C++ API we would have
template <class T, class C = xtensor_c>
void func(xt_container_t<C, T, 2>& arr) { }

And for the Python bindings
// pytensor container selector
struct pytensor_c
{
};

template <class T, std::size_t N>
struct xt_container<pytensor_c, T, N>
{
    using type = xt::pytensor<T, N>;
};

PYBIND11_MODULE(pymod, m) {
    xt::import_numpy();

    m.def("func", &func<double, pytensor_c>);
}

One limitation (C++ API):
xt::xtensor<double, 2> arr {{1., 2., 3.}, {4., 5., 6.}};

func<double>(arr);  // works
func(arr);          // error (couldn't infer template argument 'T')

The container selectors xtensor_c and pytensor_c are also useful if we want to define classes that have xtensor arrays as members, e.g.,
template <class T, class C = xtensor_c>
struct my_class
{
    xt_container_t<C, T, 1> m1 {1, 2, 3};
    xt_container_t<C, T, 2> m2 {{1, 2, 3}, {4, 5, 6}};
};

... and support them in bindings, e.g., for Python bindings we could then simply write
PYBIND11_MODULE(pymod, m) {
    xt::import_numpy();

    using my_class_py = my_class<double, pytensor_c>

    py::class_<my_class_py>(m, "MyClass")
        .def_readwrite("m1", &my_class_py::m1);
        .def_readwrite("m2", &my_class_py::m2);

}

Do you think option 3 is a good approach? Or is there drawbacks that I'm missing?
Do you think it would be worth to add a section somewhere in xtensor's documentation about this problem of API design and some proposed alternatives to address it? This would be very helpful for people like me who don't (yet) master C++ but who want to leverage xtensor for writing a library that supports multiple languages!

Thanks for opening this discussion! All of these approaches have their pros and drawbacks as you pointed them out; your last option is really interesting even if you loose the type inference. I think we can change it a bit so we keep narrow scope and get type inference back.
A quick remark before I dive into details, I think it might be worth keeping the generic signature whatever the solution you choose for the API. Let's say your function accepts only 2D tensors for now, but later you want it to accept xarray too. Having the implementation in a generic function makes this very simple: you only have to add an API function forwarding to the generic one.
C++ Api
Now back to the API problem. The only mean to keep type inference is to keep a generic parameter, any template indirection will require us to explicitly specify some type. However, we can make the compiler generates an invalid type so the function is removed from the overload resolution set when the actual type for this generic parameter does not satisfy some constraints (SFINAE principle). Let's start with a simple example:
template <class T>
struct is_tensor : std::false_type
{
};

template <class T, std::size_t N, layout_type L, class Tag>
struct is_tensor<xt::xtensor<T, N, L, Tag> : std::true_type
{
};

template <class T, std::enable_if_t<is_tensor<T>::value, void*> = nullptr>
void func(T& t);

Here std::enable_if_t is an invalid type when is_tensor<T>::value is false and the function is removed from the overload resolution set. Now this is roughly equivalent to func accepting xtensor parameters only, we want to be able to specify which argument can be accepted. Let's add a template argument for that:
template <class T, template <class> class Constraint, std::enable_if_t<Constraint<T>::value, bool> = true>
void func(T& t);

Now if we want to call that function from the C++, we have to specify the Constraint argument, and since it's not the first one we need to also specify T, which is quite annoying:
xtensor<double, 2> t;
func<xtensor<double, T>, is_xtensor>(t);

Let's fix that by flipping the template argument order and providing a default parameter for constraints:
template <template <class> class Constraint = is_tensor, class T,std::enable_if_t<Constraint<T>::value, bool> = true>
void func(T& t);

Since the compiler can deduce T form a call to func it is legit to provide a default value for a parameter before T. Now I have type inference from C++:
xtensor<double, 2> t;
func(t); // works

Back to the Python
Now let's expose that function to the Python. We already have a constraint for xtensor, let's define one for pytensor:
template <class T>
struct is_pytensor : std::false_type
{
};

template <class T, std::size_t N, layout_type L>
struct is_pytensor<pytensor<T, N, L>> : std::true_type
{
};

And expose the function to the Python:
PYBIND11_MODULE(pymod, m) {
    xt::import_numpy();

    m.def("func", &func<is_pytensor, pytensor<double, 2>>);
}

The exposition to the Python is a bit more verbose than the previous one (where you specify double only) and things look a bit redundant here (of course pytensor<double, 2> staisfies the constraint is_pytensor), however this gives you more flexibility on the constraint: later you can relax the constraint to something like is_pytensor_or_pyarray or be more restrictive is_pytensor_2d; and the parameter type is (quite) independant from the constraints, so you can decide to swith to pyarray later (given the constraints is satisfied).
Last thing before I conclude: adding the std::enable_if_t in each function is verbose and annoying. Let's add some syntactic sugar:
template <template<class> class C, class T>
using check_constraints = std::enable_if_t<C<T>::value, bool>;

template <template <class> class C = is_xtensor, class T, check_constraints<C, T> = true>
void func(T& t);

Conclusion
I wouldn't say that this solution is better than option 3, it's a matter of tastes and design constraints; if you don't need that flexibility and are not annoyed with loosing type inference, go with option 3, it is easier to implement and understand. If you need more flexibility at the cost of a more verbose declaration when exposing the function to python, this solution can be a good candidate.
I

I'm glad that it helped! I'll probably add a section (maybe less didactic) or a link to the post in the documentation.


Could not find update prefix

Bug, feature request, or proposal:
Bug
What is the expected behavior?
That the prefix for MdAutoCompleteModule, MdCheckboxModule, MdSelectModule, MdInputModule, MdDatePickerModule could be found.
What is the current behavior?
The prefix for MdAutoCompleteModule, MdCheckboxModule, MdSelectModule, MdInputModule, MdDatePickerModule could not be found.
What are the steps to reproduce?
Go inside a project that use the specified modules above, and then:
npm i -g angular-material-prefix-updater
mat-switcher -p <path/to/tsconfig/json>

What is the use-case or motivation for changing an existing behavior?
I don't want to update de prefix manually.
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
@angular/cli: 1.4.5
node: 6.11.2
os: linux x64
@angular/animations: 4.4.4
@angular/cdk: 2.0.0-beta.12
@angular/common: 4.4.4
@angular/compiler: 4.4.4
@angular/core: 4.4.4@angular/forms: 4.4.4
@angular/http: 4.4.4@angular/material: 2.0.0-beta.12
@angular/platform-browser: 4.4.4
@angular/platform-browser-dynamic: 4.4.4
@angular/router: 4.4.4
@angular/cli: 1.4.5
@angular/compiler-cli: 4.4.4
@angular/language-service: 4.4.4
typescript: 2.3.4

Is there anything else we should know?
No, that's all.

This is expected, please see https://github.com/angular/material2/blob/master/CHANGELOG.md#breaking-changes

Closing as this is an issue with the prefix updater rather than the material library.
Instead your issue should be posted to: https://github.com/angular/material-prefix-updater

Thanks @josephperrott , sorry for the trash post. Moved for #15.


Create timer_cagan_atan.py

Describe your changes
Checklist

[x] I have read the [CONTRIBUTING]
[x] I have performed a self-review of my own code
[x] I have run the code locally and it works as expected
[x] I have commented my code, particularly in hard-to-understand areas

Screenshots (if appropriate)

Why do you return False with your __exit__ method?

I've added that return because I thought we needed to return False if we didn't handle the exception, as we need to return True if we handled it. Now I've read more on it I realized that I can just return anything except True and it will be fine. I have edited the code accordingly.


Update strsim to 0.5

Regards

I requested a new build on travis. It seems to have failed somehow the first time.

@dns2utf8 you might want to go ahead and update to 0.5.1 while you are at it.

Good point, done :smile:

@dns2utf8 Do you know who to ping to get feedback from the project maintainers about this pull request? I am very interested in getting this updated. Right now only 3 dependencies of Hyper introduce outdated further dependencies, and strsim is one of those.

Sorry for the tardiness, but this looks good, thanks!

You are welcome

Thanks for the quick release :+1:


Virtualizer not refreshing items on scroll

Which package(s) are affected?
Virtualizer (@lit-labs/virtualizer)
Description
Works in 2.0.3 but since the virtualizer stops refreshing (i.e. stops adding new content / updating the list) when scrolling in a popup container.
It only seems to be an issue for virtualizer listings in "popups". I.e. only an issue when the container is fixed or absolute positioned or something like that.
2.0.3

2.0.6

Reproduction
I can't do this easily. It is deep in my application.
Workaround
I haven't been able to find a workaround.
Is this a regression?
Yes. This used to work, but now it doesn't.
Affected versions
Failing in 2.0.4+ and not in 2.0.3
Browser/OS/Node environment
Chrome Version 116.0.5845.97 (Official Build) (64-bit) on Windows.

@cintaccs Just to confirm, you've verified that this regression first occurred specifically in 2.0.4, correct? Knowing that should help narrow down potential causes.

Here's a simple repro for this issue, BTW: https://lit.dev/playground/#gist=4662ccd73a8637399ef8cd0cd6213ca2

@cintaccs Just to confirm, you've verified that this regression first occurred specifically in 2.0.4, correct? Knowing that should help narrow down potential causes.
Edit: Looks almost certainly related to #3976, which landed in 2.0.4. At first glance, it appears that the logic to account for position: fixed elements is a bit too aggressive; it should only filter out ancestors of a position: fixed element, but currently it also filters out the element itself. Am testing a fix.

Yes correct!

@graynorton works very well! - thanks a lot!


bug/#340 - scan: added the color to "found" card and removed the attributes

Impacted files:

personalized_ranking_page.dart: made public and reusable the code of getColor
smooth_product_card_found.dart: added a bool displayAttributes parameter
smooth_product_carousel.dart: added the color to "found" card and removed the attributes

@teolemon What do you think of this solution, UX-wise?

The killer feature is the personalized icons. I have no way to tell why it's green or red (provided I even notice and understand what the green shade means).
It would be no from me.

@teolemon I also suggested to add a comment like "matches your preferences!".
The personalized icons are still in the app, but not in that screen.
It depends on where you put the blind trust cursor: if you set up your preferences, the idea is to have the app compute the score for you, not to have explicitly all the details all the time.
Like an accountant report: most of the time you read the main figures without challenging them, then you see something strange and want to dig further (in our case, one click and you go to the product page).
It was just a quick suggestion anyway, I'll have no problem removing that PR.

Another possible "simplification": just displaying the first row of personalized icons, ending with ellipsis.
Or a collapsed/expanded status for "found" product cards in the scan page, stored in the preferences.

We really want to display the selected attribute icons in the scan card.

Another possible "simplification": just displaying the first row of personalized icons, ending with ellipsis.

That's a good solution I think.
One thing is that personal search really works when there aren't too many preferences selected. If someone selects everything, then it's less useful.
Maybe we should make it clear in the preference settings, with a popup warning like "You already have 5 important preferences, the app works best if you select only what is the most important to you. Cancel / Add a new preference anyway."

@monsieurtanuki : this is how we do it on the web site on a phone:

I think we can remove the 2 lines with the brand (and possibly concatenate the brand to the product name instead). That would free space to put the icons right next to the photo, on 1 or 2 lines.

On the web site when we have more preferences selected:

@stephanegigandet Ok for a more compact product card (just PR'ed).
The issue can be considered as fixed, as long as we accept that we may have side effects, but only with too numerous attributes on the scan page.

Thank you @monsieurtanuki ! Just curious: what happens if someone does select too many attributes to show? We just don't show them and that's it, or there is a worse side effect?

Thank you @stephanegigandet for your review and suggestions!
The answer is: if you have many attributes, the product card will grow in height accordingly.
Except on the scan page, where the product card height is fixed by the carousel. In that case, the extra attributes will be displayed as expected, below the previous attributes, but it would be below/beyond the product card.

@monsieurtanuki is it planned that the cards are now transparent

@M123-dev Actually it's supposed to display the score color (green/grey/red) of the product. You're right, there shouldn't be alpha, or at least alpha on top of the standard card color. Feel free to create a new issue.


Removed unused jar files

After a double check, 30 jar files seems to not have any purpose (or they are covered by other libraries). Therefore, they are removed. #74
OWLThing added to bidi provider which is needed for mapping of class expressions.

@alkidbaci thank you <3

Could you perhaps add one or two tests about using owlapy from terminal?
For instance, owlapy --path_ontology ..., then read the enriched data and check whether particular facts are there, e.g., top object property symetric etc.

Okay


[MS connector] [Nice-to-have] Channel sync

Find a way to synchronize channels ( delta not supported )

This page here seems to show we can use deltas with channels: https://learn.microsoft.com/en-us/graph/api/chatmessage-delta?view=graph-rest-1.0&tabs=http
however, I'd do channel sync last, because not sure yet it's really used by MS users

Moving out of board as we will initially rollout without channels/messages/pages


IMPORT FAILED

Following the installing instructions, I keep getting 'import failed' in ComfyUI (through manager), and no TTS nodes are available.

dependencies installed in appdata instead of comfyui site packages

you can us“ pip install git+https://github.com/huggingface/parler-tts.git  ”install the dependencies ，Manager installation is currently not supported。

dependencies installed in appdata instead of comfyui site packages

Perhaps the portable version of ComfyUI was not considered, and now this bug has been fixed


Will this project stay in SQLite or move on the MSSQL?

I'm a big user of MSSQL, so that is why I asked.  Thanks.

Yes, you can easily switch from SQLite to MSSQL by modifying the code https://github.com/wenhx/BlazorWebAssemblyWithIdentity/blob/88dc677753cf5af93ed03a7c6a931b63d13a915e/src/Server/Program.cs#L22 as follows:
builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(connectionString));

SQLite was chosen for its simplicity and suitability for a demo project, but MSSQL is the recommended database option for ASP.NET CORE Identity and is therefore the default choice. To switch to MSSQL, you will need to install the Microsoft.EntityFrameworkCore.SqlServer package first.


Create force option

Is there any versioning if a new analysis is forced? Not sure if its needed, but I'm curious if this is considered.

We plan to force analysis if we change of version (e.g. 16.01 is used now, we know we changed the trace in this version, and trace is from 15.12, so we force the new analysis).
but it will be available only for offcial release (this is the moment we change the version number). If you use nightlies, this will not be automaticly forced, you'll have to do it manually.

Right now, no.
I wrote on the previous report.
It could be done later (I think Jerome has some plan about it).

np, force is enough for now


Auto update btn

If auto update is enabled in settings, have a check done on app startup to see if timetable is older than seven days, then display a popup/toast in the bottom right asking if they want to refetch the timetable.
Cool feature might also be to try refetching anyway and compare the date of the new timetable to the old one first, then you could say "Newer timetable available, refetch?".
If timetable is old you could display a warning somewhere, this could be optionally hidden using a setting.

Resolved in latest commit