Auth Failure

Additional Information:

Environment:
Version:
Ticket Submitted From: https://www.crisiscleanup.org/o/callback?code=7Kd7D1ay4q1WlNTBrsJUHTv5SgBYcE&state=%2F
Zendesk Username: Joshua Smith
Crisis Cleanup Username: Josh Smith
Organization: New Castle County Office of Emergency Management
CC Age: 2 months ago

Pictures:
Comments:
I haven't been able to access website at all since lastnight?

This sounds like an authentication issue. I had him clear cache.

:thinking: Not sure if this was prior to the completion of the authentication overhauls / fixes.
Have this reoccured since @aarontitus?


Feature/6144 rat preparations/6145 implement service

Description
Introduces the CoronaTestService so we can have a PCR test as well as a RAT registered. Goal was to keep the app working as it did previously for PCR Tests.
There will be more unit test added for the CoronaTestService later on.
Link to Jira
https://jira-ibs.wbs.net.sap/browse/EXPOSUREAPP-6144

At all, nice huge refactoring 😉! 💎


Multi-AZ Datahub support

Add support for multi-az datahub deployment
Maybe along with subnet-ids submission

@pynugues - I don't see any additional commits? Also, please PR against devel not main.


Python 3 compatibility issues

flake8 testing of https://github.com/google/jax on Python 3.7.1
$ flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
./jax/lax.py:481:25: F821 undefined name '_ndim'
  start_indices = [0] * _ndim(operand)
                        ^
./jax/lax.py:487:6: F821 undefined name '_ndim'
  if _ndim(update) != _ndim(operand):
     ^
./jax/lax.py:487:23: F821 undefined name '_ndim'
  if _ndim(update) != _ndim(operand):
                      ^
./jax/lax.py:488:12: F821 undefined name '_ndim'
    assert _ndim(update) + 1 == _ndim(operand)
           ^
./jax/lax.py:488:33: F821 undefined name '_ndim'
    assert _ndim(update) + 1 == _ndim(operand)
                                ^
./jax/lax.py:489:17: F821 undefined name '_ndim'
    ax = axis % _ndim(operand)
                ^
./jax/lax.py:1955:35: F821 undefined name 'c'
  select = _reduction_computation(c, select_jaxpr, select_consts, init_value)
                                  ^
./jax/lax.py:1956:36: F821 undefined name 'c'
  scatter = _reduction_computation(c, scatter_jaxpr, scatter_consts, init_value)
                                   ^
./jax/lax.py:1957:10: F821 undefined name 'c'
  return c.SelectAndScatter(operand, select, window_dimensions, window_strides,
         ^
./jax/lax.py:2156:32: F821 undefined name 'name'
    raise TypeError(msg.format(name, len(lhs_shape), len(rhs_shape)))
                               ^
./jax/abstract_arrays.py:59:46: F821 undefined name 'long'
    _long    = concretization_function_error(long)
                                             ^
./jax/core.py:163:7: F821 undefined name 'print_trace_stack'
      print_trace_stack()
      ^
./jax/core.py:371:7: F821 undefined name 'print_trace_stack'
      print_trace_stack()
./jax/interpreters/xla.py:252:48: F821 undefined name 'long'
    __long__ = partialmethod(forward_to_value, long)
                                               ^
./jax/interpreters/ad.py:189:20: F821 undefined name 'JaxTuple'
        return xt, JaxTuple(map(zeros_like_jaxval, xt))
                   ^
./jax/interpreters/ad.py:196:16: F821 undefined name 'JaxTuple'
        return JaxTuple(map(zeros_like_jaxval, yt)), yt
               ^
./jax/numpy/lax_numpy.py:379:41: F821 undefined name 'isfortran'
    dims = onp.arange(ndim(a))[::-1] if isfortran(a) else onp.arange(ndim(a))
                                        ^
./examples/mnist_vae.py:113:21: E999 SyntaxError: invalid syntax
    def body_fun(i, (rng, opt_state, images)):
                    ^
./examples/resnet50.py:124:12: F821 undefined name 'xrange'
  for i in xrange(num_steps):
           ^
./tests/minmax_test.py:46:16: F821 undefined name 'fax'
    infeeder = fax.make_infeed_from_sequence(
               ^
1     E999 SyntaxError: invalid syntax
19    F821 undefined name 'xrange'
20

Thanks for raising this, and for starting the PRs #2, #3, and #4!
Those are all fixes we need to make, but it might take us some time to merge the PRs because we're still ironing out our code syncing process. In other words, we're not quite ready for PRs yet, but we'll try to merge these if and when we can.
Thanks for your interest and your work to improve JAX (even before we're ready for it!).


Turn off jdwp.VMSuspended in jck8

Related to : https://github.ibm.com/runtimes/JCK8-unzipped/pull/5#issuecomment-15302207

Signed-off-by<EMAIL_ADDRESS><EMAIL_ADDRESS>

Reviewer @JasonFengJ9

Test: /Test_grinder/job/Grinder/2414/console

The jti file change seems fine. As per our offline conversation, the jtb file has to be set with same configuration as well. If the jtb file is generated dynamically, the script is required to be modified accordingly.

@JasonFengJ9 : Since the option is available in the JTI file, making the change there should be enough. The generated JTB file only is used to override some options dynamically at run time, as the documentation suggests:

The JCK harness provides a method for the configuration values to be overridden at test execution time
by redefining values via a jtb file (xxx.jtb) and passing the name of that file to the test harness.
A number of the values used in the testing are specific to the machine executing the tests. The test automation
(Jck.java) creates a unique jtb file for each test run, overriding these values with those appropriate
for the current test machine. The jtb file is placed into a JTB directory within the test run's
unique results directory. All the test output from the JCK harness itself is also directed to the test results
directory.

When the jck automation is run in the build, both the JTI and the JTB files are supplied to the process:
11:46:05  STF 11:46:04.939 - Running command: /home/j9build/workspace/Grinder/openjdkbinary/j2sdk-image/bin/java -jar /home/j9build/jck_root/JCK8-unzipped/JCK-runtime-8b/lib/jtlite.jar  -config /home/j9build/workspace/Grinder/jvmtest/system/openjdk-systemtest/openjdk.test.jck/config/jck8b/runtime.jti @/home/j9build/workspace/Grinder/openjdk-tests/TestConfig/test_output_15711543632347/jck-runtime-lang_0/20191015-114603-Jck/results/JTB/stf_generated.jtb

So, I am hoping that, with this change in the JTI file, the new jck.extended build above will behave differently than the previous ones that hanged.

The change for jti files only didn't fix jdwp timeout issue from an internal test.

We no longer need this PR as JCK 8-c update takes care of this.


[Issue]: nvm use command is not working

What happened?
I tried to the below command but getting error message as node is not recognized.
C:\joyee\study>nvm install 0.10.38
C:\joyee\study>nvm use 0.10.38
C:\joyee\study>node -v
And I got
'node' is not recognized as an internal or external command, operable program or batch file.
What did you expect to happen?
node -v command to show the  node version in use
Version
1.1.11 or newer (Default)
Which version of Windows?
No response
Which locale?
None
Which shell are you running NVM4W in?
No response
User Permissions?
Administrative Privileges, Elevated
Is Developer Mode enabled?
None
Relevant log/console output
No current version. Run 'nvm use x.x.x' to set a version.

Debug Output
No current version. Run 'nvm use x.x.x' to set a version.

Anything else?
No response

@coreybutler Please see the below output
PS C:\Windows\system32> nvm use 6
Now using node v6.17.1 (64-bit)
PS C:\Windows\system32> nvm current
No current version. Run 'nvm use x.x.x' to set a version.
I already tried the suggestions mentioned in this issue. https://github.com/coreybutler/nvm-windows/issues/58

@coreybutler Please see this screenshot.

Does that file exist? It should. Here's an example. If you can save in ASCII format, you'll likely have more success. See #726 for more details and workarounds.

Hi Corey, I have the same problem as the others. I am attaching a screenshot along with the nvm debug. I clarify that I tried doing a version downgrade at 1.1.8 and the problem persists the same.

@ACaminos nvm debug was introduced in v1.1.11. That screenshot just shows the default help menu. However; I think your issue is related to #1179 (nvm install, not nvm use).

Do you have the same problem also installing and using recent version of node (for example 20)?
If not, it's probably related to this other bug #1179
https://github.com/coreybutler/nvm-windows/issues/1179#issuecomment-2485304846

I had a problem that I couldn't install any version of node. Now I was able to fix it. I reinstalled the latest version of nvm, and downloaded and installed the msi of the node versions I need. But I still have the problem of not being able to download by terminal

@ACaminos do not install the MSI versions from Node.js and NVM for Windows at the same time. The MSI versions force one version installation at a time.
I'll need more information to help troubleshoot, but the first step is removing the msi installation and installing a more recent version of NVM for Windows.

I'm facing the same issue. I've had an IT update last night (don't have the details of the operation unfortunately), but since this morning node and npm can't be found in the PATH.
Note that I did not change anything on nvm side.
What do you recommend?

nvm list
C:\Windows\System32>nvm list

    20.12.2
    20.8.1
    18.13.0
    16.16.0
    14.21.3

nvm use
C:\Windows\System32>nvm use 20.12.2
Now using node v20.12.2 (64-bit)

node -v && npm -v
C:\Windows\System32>node -v
'node' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\System32>npm -v
'npm' is not recognized as an internal or external command,
operable program or batch file.

nvm debug
Microsoft Windows [Version 10.0.22631.4460]
(c) Microsoft Corporation. All rights reserved.

C:\Windows\System32>nvm debug
Running NVM for Windows with administrator privileges.

Administrator: Command Prompt - nvm  debug
Windows Version: 10.0 (Build 22631)

NVM4W Version:      1.1.12
NVM4W Path:         C:\MyPrograms\nvm\nvm.exe
NVM4W Settings:     C:\MyPrograms\nvm\settings.txt
NVM_HOME:           C:\MyPrograms\nvm
NVM_SYMLINK:        C:\MyPrograms
Node Installations: C:\MyPrograms\nvm

Total Node.js Versions: 5
Active Node.js Version: none
(run "nvm use <version>" to activate a version)

IPv6 is enabled. This can slow downloads significantly.

PROBLEMS DETECTED
-----------------
NVM_SYMLINK (C:\MyPrograms) is not a valid symlink.

Find help at https://github.com/coreybutler/nvm-windows/wiki/Common-Issues

@Tyoneb the problem in the debug statement is pretty clear. nvm use creates a symlink. If that symlink is invalid,  See https://github.com/coreybutler/nvm-windows/wiki/Common-Issues#nvm-use-fails (which I just created to help with this).

@coreybutler, thanks for the feedback and for updating the docs.
For some reason, the NVM_SYMLINK environment variable on my system got changed suddenly from C:\MyPrograms\nodejs to C:\MyPrograms (which indeed is an existing directory and creating a symlink with that path will fail).
It's probably obvious to most users but I was unclear on what the SYMLINK was supposed to point to (and the incorrect value on my machine didn't help clarify it). I think your new doc section is quite clear and I'm pretty sure it would have helped me resolve the problem on my own.
Anyway, I got everything fixed now. Thanks again for the help!

We have run what may be a related issue on a couple of our developer machines - where a call to node immediately after the nvm use call in a script would fail with /d/develop/keyman/keyman/resources/shellHelperFunctions.sh: line 299: node: command not found.
For us, I am guessing it's related to elevation -- we aren't seeing the issue on machinese where we've allowed symlinks to be created by regular users.
See https://github.com/keymanapp/keyman/pull/12772

@mcdurdin there are a lot of unknowns when using non-Windows shells (which is why I've never formally supported them). Judging by the fact you're using unix paths and shell scripts, I'm guessing you're using cygwin or a similar shell doing transforms on paths and Windows APIs. It could be an elevation thing, but it could also be a simple malformed path.

I'm going to close this issue since the original poster has not replied in 3 weeks.

@mcdurdin there are a lot of unknowns when using non-Windows shells (which is why I've never formally supported them).

Thanks for the quick reply! I mostly linked to our issue in case it's helpful to others. :grin:


add little more about Keptn CRDs and Mutating Webhook

We can add little more about the Keptn CRDs and Mutating Webhook it will easy for the users for the quick understanding.
suggest if i m right / wrong.
I will rise PR for this

Do you have any suggestions for what else you'd like to see here? @Nitishupkr

key details about Keptn CRDs -Project CRD,Service CRD,Stage CRD,KeptnTrigger CRD and some key detail about Mutating Webhook

@StackScribe we already have some manual doc about CRDs you curated here, what do you think?

key details about Keptn CRDs -Project CRD,Service CRD,Stage CRD,KeptnTrigger CRD and some key detail about Mutating Webhook @rakshitgondwal

@Nitishupkr just wanted to clarify that we do not have CRDs for the keptn v1 entities that you mention in KLT... I know the difference between v1 and KLT can be confusing 😿
Maybe this video of Andreas Grabner on KLT could solve some of your doubts https://www.youtube.com/watch?app=desktop&v=zeEC0475SOU


Application prints out "<IP_ADDRESS>" instead of local IP

When I run run.py, the script spits out the localhost address instead of the local IP that I can use to connect from my phone
> python run.py

Ensure your other device is on the same network and go to http://<IP_ADDRESS>:8004 or scan this qr code:

    █▀▀▀▀▀█ ▀▄▀▄█   ▀ █▀▀▀▀▀█
    █ ███ █ ▀ █▀▀█▀▄█ █ ███ █
    █ ▀▀▀ █ ▄█ ██▀  █ █ ▀▀▀ █
    ▀▀▀▀▀▀▀ ▀▄▀ ▀ ▀ ▀ ▀▀▀▀▀▀▀
    ▀ █▄▄▄▀█▄▄▀▀█ ██ ▄▄▀ ▄▀▄█
    ▄▄█▄▀▀▀▄█▄█▄▄▀▀██▄█▀ █▀ ▀
     █ ▀ ▀▀▀ █▀▀█ █▄▀▀█    ▄█
    ▀▀ █▀▄▀▄ ▄▀▄█▀ ▀▀ ▄ ▀▀▀ ▀
    ▀▀▀▀▀ ▀ ███  █▀██▀▀▀█ ▄▀▄
    █▀▀▀▀▀█ ▀▀▄▀ ▄  █ ▀ █▀ ▄▀
    █ ███ █  ██▀█▀ ▀█▀▀███▄▄▀
    █ ▀▀▀ █ ▀ ▄▄█▀█ ▄  ██  ▀▀
    ▀▀▀▀▀▀▀ ▀ ▀  ▀▀▀▀▀▀  ▀  ▀

INFO:     Will watch for changes in these directories: ['/Users/mymachine/Applications/vlc-remote-control']
INFO:     Uvicorn running on http://<IP_ADDRESS>:8004 (Press CTRL+C to quit)
INFO:     Started reloader process [64074] using StatReload
INFO:     Started server process [64076]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

It seems this may be a quirk of using the app on a shared public network (hotel wifi).

I found a quick workaround, which works on my machine 😉
https://stackoverflow.com/a/166589

Alternatively you can just find your local ip manually by running ipconfig getifaddr en0 in a terminal

Thanks for spotting this! It feels like an adaptation of the next solution might be a bit less hacky - I might try that

@franciscobmacedo I just tested out that solution here on the public wifi and that worked as well!


Display the version of runner in the runner list

Close: #23489
Change

Add version column to action_runner table.
Read the runner version from the request header, and update it in DB.
Display version in runner list

Screenshot

Please fix the conflicts so that this PR can be merged.

Please fix the conflicts so that this PR can be merged.

done


Could you show some in code?

I cannot find where is the code of added image on 2D showable on 3D.

I am not sure I have understood the question correctly... However you can find the code for the image element inside https://github.com/cvdlab/react-planner/blob/master/demo/src/catalog/items/image/planner-element.jsx and https://github.com/cvdlab/react-planner/blob/master/demo/src/catalog/items/image/imageful.jsx


M2D18 not shown in GUI

Hi,
Got a bunch of M2D18 that I've bought for use in 820+ and never used there and now I have added one card in a RS2421+.
fdisk -l shows the drives before using Synology_HDD_db, but even after running the script, the M2 drives are not shown in the GUI.
Am I missing something or this is not the intended behaviour of seeing and been able to use the M2 drives in GUI?
My full log:
Synology_HDD_db v3.0.56
RS2421+ DSM 7.2-64570-1
Using options: -nfr

HDD/SSD models found: 4
HDWF180,GX0B
HUS728T8TALE6L0,V8DERT06
ST8000NM000A-2KE101,SN03
ST8000VN004-2M2101,SC60

M.2 drive models found: 1
Samsung SSD 980 1TB,3B4QFXO7

M.2 PCIe card models found: 1
M2D18

No Expansion Units found

Added HDWF180 to rs2421+_host_v7.db
Added HDWF180 to ds2415+_host_v7.db
Added HDWF180 to ds2415+_host.db
Added HDWF180 to ds2415+_host_v7.db.new
Added HDWF180 to ds2415+_host.db.new
Added HUS728T8TALE6L0 to rs2421+_host_v7.db
Added HUS728T8TALE6L0 to ds2415+_host_v7.db
Added HUS728T8TALE6L0 to ds2415+_host.db
Added HUS728T8TALE6L0 to ds2415+_host_v7.db.new
Added HUS728T8TALE6L0 to ds2415+_host.db.new
Added ST8000NM000A-2KE101 to rs2421+_host_v7.db
Updated ST8000NM000A-2KE101 to ds2415+_host_v7.db
ST8000NM000A-2KE101 already exists in ds2415+_host.db
Updated ST8000NM000A-2KE101 to ds2415+_host_v7.db.new
ST8000NM000A-2KE101 already exists in ds2415+_host.db.new
Added ST8000VN004-2M2101 to rs2421+_host_v7.db
Added ST8000VN004-2M2101 to ds2415+_host_v7.db
Added ST8000VN004-2M2101 to ds2415+_host.db
Added ST8000VN004-2M2101 to ds2415+_host_v7.db.new
Added ST8000VN004-2M2101 to ds2415+_host.db.new
Added Samsung SSD 980 1TB to rs2421+_host_v7.db
Added Samsung SSD 980 1TB to ds2415+_host_v7.db
Added Samsung SSD 980 1TB to ds2415+_host.db
Added Samsung SSD 980 1TB to ds2415+_host_v7.db.new
Added Samsung SSD 980 1TB to ds2415+_host.db.new
Added Samsung SSD 980 1TB to ds2415+_m2d18_v7.db
Added Samsung SSD 980 1TB to rs2421+_m2d18_v7.db

Disabled support disk compatibility.

Disabled support memory compatibility.

Max memory already set to 32 GB.

Enabled M.2 volume support.

Disabled drive db auto updates.

DSM successfully checked disk compatibility.

You may need to reboot the Synology to see the changes.

Added model.dtb for RS2421+
model.dtb.zip

If everything worked as intended you should be able to see the M2D18 and NVMe drive in storage manager.
I've written a new script just for enabling M2 cards on some models that don't officially support them. If you run it with the --check option it will show you what M2 card(s) and drive types are currently enabled in DSM in adapter_cards.conf and in model.dtb (for models that have a model.dtb file).
https://github.com/007revad/Synology_enable_M2_card
https://github.com/007revad/Synology_enable_M2_card/releases

Thank you for your involvement in this!
Unfortunately I do not see the NVMe's or the M2D18 in Storage Manager
Here is the output of the script:
`./syno_enable_m2_card.sh
Synology_enable_M2_card v1.0.1
RS2421+ DSM 7.2-64570-1

E10M20-T1  3) M2D18	    5) ALL
M2D20      4) M2D17	    6) Quit
Select your M.2 Card: 3
Backed up adapter_cards.conf

M2D18 NVMe already enabled for RS2421+
M2D18 SATA already enabled for RS2421+
Backed up model.dtb
Contact 007revad to get an edited model.dtb file for your model.
Finished
root@syno:/volume1/scripts# ./syno_enable_m2_card.sh --check
Synology_enable_M2_card v1.0.1
RS2421+ DSM 7.2-64570-1
Using options: --check
E10M20-T1 NIC = yes
E10M20-T1 NVMe = yes
E10M20-T1 SATA = yes
E10M20-T1 enabled in /etc.defaults/model.dtb
M2D20 NVMe = yes
M2D20 enabled in /etc.defaults/model.dtb
M2D18 NVMe = yes
M2D18 SATA = yes
M2D18 not enabled in /etc.defaults/model.dtb
M2D17 SATA =
M2D17 not enabled in /etc.defaults/model.dtb
root@syno:/volume1/scripts#
`

Can you run it again. I just added an edited version of the RS1221+ model.dtb that includes the M2D18

Tested main and development branch, /etc.defaults/model.dtb still missing M2D18.
`# ./syno_enable_m2_card.sh
Synology_enable_M2_card v1.0.1
RS2421+ DSM 7.2-64570-1

E10M20-T1  3) M2D18	    5) ALL
M2D20      4) M2D17	    6) Quit
Select your M.2 Card: 3

M2D18 NVMe already enabled for RS2421+
M2D18 SATA already enabled for RS2421+
Contact 007revad to get an edited model.dtb file for your model.
Finished
./syno_enable_m2_card.sh --check
Synology_enable_M2_card v1.0.1
RS2421+ DSM 7.2-64570-1
Using options: --check
E10M20-T1 NIC = yes
E10M20-T1 NVMe = yes
E10M20-T1 SATA = yes
E10M20-T1 enabled in /etc.defaults/model.dtb
M2D20 NVMe = yes
M2D20 enabled in /etc.defaults/model.dtb
M2D18 NVMe = yes
M2D18 SATA = yes
M2D18 not enabled in /etc.defaults/model.dtb
M2D17 SATA = yes
M2D17 not enabled in /etc.defaults/model.dtb
grep -cia m2d1 /etc.defaults/model.dtb
0
grep -cia m2d2 /etc.defaults/model.dtb
1
`

and bash -x output, maybe it helps
# bash -x syno_enable_m2_card.sh
+ scriptver=v1.0.1
+ script=Synology_enable_M2_card
+ repo=007revad/Synology_enable_M2_card
++ basename /bin/bash
+ '[' '!' bash = bash ']'
+ Yellow='\e[0;33m'
+ Cyan='\e[0;36m'
+ Error='\e[41m'
+ Off='\e[0m'
+ args=("$@")
++ getopt -o abcdefghijklmnopqrstuvwxyz0123456789 -a -l check,restore,help,version,log,debug --
+ options=' --'
+ eval set -- ' --'
++ set -- --
+ true
+ case "${1,,}" in
+ shift
+ break
+ [[ '' == \y\e\s ]]
++ whoami
+ [[ root != \r\o\o\t ]]
+ echo 'Synology_enable_M2_card v1.0.1'
Synology_enable_M2_card v1.0.1
++ cat /proc/sys/kernel/syno_hw_version
+ model=RS2421+
+ modelname=RS2421+
++ get_key_value /etc.defaults/VERSION productversion
+ productversion=7.2
++ get_key_value /etc.defaults/VERSION buildphase
+ buildphase=GM
++ get_key_value /etc.defaults/VERSION buildnumber
+ buildnumber=64570
++ get_key_value /etc.defaults/VERSION smallfixnumber
+ smallfixnumber=1
+ [[ GM == GM ]]
+ buildphase=
+ [[ 1 -gt 0 ]]
+ smallfix=-1
+ echo -e 'RS2421+ DSM 7.2-64570-1 \n'
RS2421+ DSM 7.2-64570-1

+ [[ 0 -gt 0 ]]
++ get_latest_release 007revad/Synology_enable_M2_card
++ curl --silent -m 10 --connect-timeout 5 https://api.github.com/repos/007revad/Synology_enable_M2_card/releases/latest
++ grep '"tag_name":'
++ sed -E 's/.*"([^"]+)".*/\1/'
+ tag=
+ shorttag=
+ source=syno_enable_m2_card.sh
+ '[' -L syno_enable_m2_card.sh ']'
+++ dirname syno_enable_m2_card.sh
++ cd -P .
++ pwd
+ scriptpath=/volume1/scripts/syno_enable_m2
+ printf '%s\n%s\n' '' v1.0.1
+ sort --check --version-sort
+ m2cardconf=/usr/syno/etc.defaults/adapter_cards.conf
+ modeldtb=/etc.defaults/model.dtb
+ [[ '' == \y\e\s ]]
+ [[ '' == \y\e\s ]]
+ PS3='Select your M.2 Card: '
+ options=("E10M20-T1" "M2D20" "M2D18" "M2D17" "ALL" "Quit")
+ select choice in "${options[@]}"
1) E10M20-T1  3) M2D18	    5) ALL
2) M2D20      4) M2D17	    6) Quit
Select your M.2 Card: 3
+ case "$choice" in
+ m2d18
+ backupdb /usr/syno/etc.defaults/adapter_cards.conf
+ [[ ! -f /usr/syno/etc.defaults/adapter_cards.conf.bak ]]
++ stat -c '%a %n' /usr/syno/etc.defaults/adapter_cards.conf
++ cut '-d ' -f1
+ octal=644
+ [[ ! 644 -eq 644 ]]
+ return 0
+ echo ''

+ enable_card /usr/syno/etc.defaults/adapter_cards.conf M2D18_sup_nvme 'M2D18 NVMe'
+ [[ -f /usr/syno/etc.defaults/adapter_cards.conf ]]
+ [[ -n M2D18_sup_nvme ]]
+ [[ -n M2D18 NVMe ]]
+ grep '^\[M2D18_sup_nvme\]$' /usr/syno/etc.defaults/adapter_cards.conf
++ get_section_key_value /usr/syno/etc.defaults/adapter_cards.conf M2D18_sup_nvme RS2421+
+ val=yes
+ [[ yes != \y\e\s ]]
+ echo -e '\e[0;33mM2D18 NVMe\e[0m already enabled for \e[0;36mRS2421+\e[0m'
M2D18 NVMe already enabled for RS2421+
+ enable_card /usr/syno/etc.defaults/adapter_cards.conf M2D18_sup_sata 'M2D18 SATA'
+ [[ -f /usr/syno/etc.defaults/adapter_cards.conf ]]
+ [[ -n M2D18_sup_sata ]]
+ [[ -n M2D18 SATA ]]
+ grep '^\[M2D18_sup_sata\]$' /usr/syno/etc.defaults/adapter_cards.conf
++ get_section_key_value /usr/syno/etc.defaults/adapter_cards.conf M2D18_sup_sata RS2421+
+ val=yes
+ [[ yes != \y\e\s ]]
+ echo -e '\e[0;33mM2D18 SATA\e[0m already enabled for \e[0;36mRS2421+\e[0m'
M2D18 SATA already enabled for RS2421+
+ edit_modeldtb M2D18
+ [[ -f /etc.defaults/model.dtb ]]
+ backupdb /etc.defaults/model.dtb
+ [[ ! -f /etc.defaults/model.dtb.bak ]]
++ stat -c '%a %n' /etc.defaults/model.dtb
++ cut '-d ' -f1
+ octal=644
+ [[ ! 644 -eq 644 ]]
+ return 0
+ grep --text M2D18 /etc.defaults/model.dtb
+ [[ RS2421+ == \D\S\1\8\2\1\+ ]]
+ [[ RS2421+ == \D\S\1\6\2\1\+ ]]
+ [[ RS2421+ == \D\S\1\5\2\0\+ ]]
+ [[ RS2421+ == \R\S\8\2\2\r\p\+ ]]
+ [[ RS2421+ == \R\S\8\2\2\+ ]]
+ [[ RS2421+ == \R\S\1\2\2\1\r\p\+ ]]
+ [[ RS2421+ == \R\S\1\2\2\1\+ ]]
+ echo -e '\n\e[0;36mContact 007revad to get an edited model.dtb file for your model.\e[0m'

Contact 007revad to get an edited model.dtb file for your model.
+ break
+ [[ '' == \y\e\s ]]
+ echo -e '\nFinished'

Finished

I see the problem. I've edited and uploaded 13 different NAS model's model.dtb file... but the script was only setup to download an edited model.dtb for 7 different models. I've added the 7 missing models to v1.0.2-beta
https://github.com/007revad/Synology_enable_M2_card/releases/tag/v1.0.2-beta


App: use compile process

We could use next.js in pure SSR mode to get builds + tree shaking for the app.
https://github.com/amannn/next-client-script
https://github.com/vercel/next.js/issues/5054
// ./pages/index.ts
export const config = {
  unstable_runtimeJS: false
};

Related: https://github.com/webaverse/app/issues/1192, https://github.com/webaverse/app/issues/1193


Revert "Updated maestro patch to work with latest maestro version"

Reverts PelionIoT/meta-pelion-edge#244

This fixes the broken builds.

This fixes the broken builds.


Add Import/Export from app

I use MoneyWallet from my Android phone and I'd like to have a backup on my laptop. Can you implement a fully Import/Export section?

I think you have the wrong app. This is not MoneyWallet but is Nickvision Money.

No, I'd like to export my data from MoneyWallet and import them to your app

Oh, i understand now sorry :)
How does MoneyWallet export data? Into a CSV file? Would you be able to attach a copy of an exported file for me to see how it is structured? Thanks!

Unfortunately, if MoneyWallet does not export data as CSV, this feature will not be supported.

Unfortunately, if MoneyWallet does not export data as CSV, this feature will not be supported.

But... MoneyWayllet can export data as CSV! Here is an example: MoneyWallet_export_2022-11-26_00-44-21.csv
Obviously, since its development dates back a few years, MoneyWallet is a lot more complicated. This means that some things are not easily translatable in a CSV, and some information is lost. An example of things we cannot retriev from the CSV are:

distinction between an expense and a transaction between wallets.
In the CSV a transaction is has its own category translated in the locale language (e.g. in italian: there is a "Trasferisci" category). A transaction is backedup as two different rows: one income and one expense. If they have a description, it is the same in both rows
the list/tree of categories
debits and credits
events (and on which period they spanned over)
recurring expenses/transactions
budgets
conversions between currencies

That said, having a way to sync between both apps would be very useful. Most of the time I add my expenses right after I have done it, so it comes handy to have a phone app for that. However it is slow, and if i have to ad a bunch of expenses it takes a while.
Having a way to use it in sync with NickvisionMoney would be a lovely addition!
I'd be also love to use NickvisionMoney on the phone, if there was GKT for android :P

However, MoneyWallet saves files in a JSON format.
This seems a more reasonable way to backup information about finances, if you ask me.
Surely, tho, since we  are talking about OSS we can try to open a bridge with the developer(s) of MoneyWallet and see if they're up for a ~collaboration

I'd be also love to use NickvisionMoney on the phone, if there was GKT for android :P

The architecture of the app allows it to be ported to another widget toolkit, all the UI stuff is separated from the data processing, so I wouldn't be surprised if the app would be ported to Android. But it's not a task for the nearest future because first we need to make Money more mature in terms of features IMO.

I'd be also love to use NickvisionMoney on the phone, if there was GKT for android :P

The architecture of the app allows it to be ported to another widget toolkit, all the UI stuff is separated from the data processing, so I wouldn't be surprised if the app would be ported to Android. But it's not a task for the nearest future because first we need to make Money more mature in terms of features IMO.

Yes we definitely need to work on implementing all the features into the desktop app before thinking about creating a campaign app.

Yes we definitely need to work on implementing all the features into the desktop app before thinking about creating a campaign app.

that feels right. I get behind this plan.
Does this also mean that the import from MoneyWallet is postponed?
Also: is there a list of "all the features" to be implemented into the desktop app?

Does this also mean that the import from MoneyWallet is postponed?

For now, yes.

Also: is there a list of "all the features" to be implemented into the desktop app?

You can view the list of open issues for features we would like to implement :)

You can view the list of open issues for features we would like to implement :)

awesome! Thanks a lot ^^


Publish to mvncentral

Heyo, with bintray being deprecated, any attempt to fetch this dependency with maven gives 403 error.
Would it be possible to push this dependency to the maven central?
Thanks in advance!

Published to maven central
https://mvnrepository.com/artifact/io.github.pelenthium/clickhouse-dialect-spring-boot-starter


inplace update

I love this idea, is there anyway I could do an inplace "cleaning"? Because the idea of moving/copying 13TB of data sounds like a nightmare.

It does sound pretty bad.
I have not implemented the worker that will copy media file yet. I will include your request.
I plan to have it detect if you are copying on the same or on different filesystem.
The logic will be that:

if you are on the same filesystem it will use "mv"
if you are on different filesystem it will use "cp" then on a different scheduler "rm"  the file if it was copied

In theory, If you are telling the app to use the same input and output library, it will create folder in it and "mv" the file in it.

Awesome! Thanks for replying.
Another question (bigger picture) is about what happens after you use plexcleaner.
After it renames everything, does plex rescan and just rescan everything, or does the sqlite database get auto updated with the newly renamed contents location.
Thanks again, really looking forward to trying this out!

Here's why I make a distinction on mv/cp+rm
You can see that the iNode number remains the same after a mv but after cp it has a new iNode
You can see that the iNode with mv change when you mv to another FS
unary@unary tmp]$ mkdir a b
[unary@unary tmp]$ touch a/file1.txt
[unary@unary tmp]$ touch b/file2.txt
[unary@unary tmp]$ ls -i a/file1.txt
532424 a/file1.txt
[unary@unary tmp]$ mv a/file1.txt b/file2.txt
[unary@unary tmp]$ ls -i b/file2.txt
532424 b/file2.txt
[unary@unary tmp]$ cp b/file2.txt a/file1.txt
[unary@unary tmp]$ ls -i a/file1.txt
532425 a/file1.txt
[unary@unary tmp]$ ls -i b/file2.txt
532424 b/file2.txt
[unary@unary tmp]$ mkdir /mnt/Movies/test
[unary@unary tmp]$ mv b/file2.txt /mnt/Movies/test/file2.txt
[unary@unary tmp]$ ls -i /mnt/Movies/test/file2.txt
66584578 /mnt/Movies/test/file2.txt

Regarding your last question:
The app was made in an effort to move away from Plex and use MiniDLNA instead.
If I have some time tonight, I'll check if the database can be updated with the new location of the media without any corruption.

Thanks for the breakdown, I didn't know that.
It wouldn't be terrible if plex had to rebuild the database, because it would ensure that the new database would be working off "prettifed" names so it would be easy to identify the media (being that it was pulled directly from the plex database to begin with).
But ideally it would be amazing for this to update the database with new locations if possible.

From what I've seen; there's only one place in the database that there's a reference to the path of a media file.
Unless there's some computation on that value to generate some hash; it should not be a problem to update the value.

Alright, so I did some quick benchmark regarding the copy of file using rsync -a, cp, cat a > b, and shutil.move().
What I found is that cp is the fastest, but it only has a 0.3s gain over shutil.move(). It'll be much better/easier to use shutil.move(). I'll be able to implement the feature faster too since shutil.move() make the distinction between same or different filesystem!
Now for handling the new location of media, well good news, it works without much effort!


App hangs when I try to get the raw frames from graph

System information (Please provide as much relevant information as possible)

Have I written custom code (as opposed to using a stock example script provided in Mediapipe): Yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04, Android 11, iOS 14.4): Android 11, running on Samsung A32 5G
MediaPipe version: 0.8.9
Bazel version: 3.7.2
Solution (e.g. FaceMesh, Pose, Holistic): Pose
Programming Language and version ( e.g. C++, Python, Java): C++

Describe the expected behavior:
When I add the GpuBufferToImageFrameCalculator into the graph, the app continues to run without any stabilty issues.
Standalone code you may have used to try to get what you need :
diff --git a/mediapipe/graphs/pose_tracking/BUILD b/mediapipe/graphs/pose_tracking/BUILD
index 26f607c..278e403 100644
--- a/mediapipe/graphs/pose_tracking/BUILD
+++ b/mediapipe/graphs/pose_tracking/BUILD
@@ -28,6 +28,7 @@ cc_library(
        "//mediapipe/calculators/core:flow_limiter_calculator",
        "//mediapipe/graphs/pose_tracking/subgraphs:pose_renderer_gpu",
        "//mediapipe/modules/pose_landmark:pose_landmark_gpu",
+      "//mediapipe/gpu:gpu_buffer_to_image_frame_calculator",
    ],
)

diff --git a/mediapipe/graphs/pose_tracking/pose_tracking_gpu.pbtxt
b/mediapipe/graphs/pose_tracking/pose_tracking_gpu.pbtxt                                                                                index
9cfe3fd..7328791 100644
--- a/mediapipe/graphs/pose_tracking/pose_tracking_gpu.pbtxt
+++ b/mediapipe/graphs/pose_tracking/pose_tracking_gpu.pbtxt
@@ -5,6 +5,7 @@ input_stream: "input_video"
# Output image with rendered results. (GpuBuffer)
output_stream: "output_video"
+output_stream: "raw_video"
# Pose landmarks. (NormalizedLandmarkList)
output_stream: "pose_landmarks"
@@ -40,6 +41,12 @@ node {
  output_stream: "throttled_input_video"
}
+ node {
+  calculator: "GpuBufferToImageFrameCalculator"
+  input_stream: "throttled_input_video"
+  output_stream: "raw_video"
+}
+
# Subgraph that detects poses and corresponding landmarks.
node {
  calculator: "PoseLandmarkGpu"

Other info / Complete Logs :
There is no error message, so I have no logs. When I launch the app, it runs for a few seconds and then hangs completely. Occasionally, Android shows me an "App Not Responding" dialog and allows me to close the app, but other times it locks up the entire UI on the device and I am forced to hard reboot it.

Hi @EkalavAI, Could you please provide steps to reproduce the above error with logs. Thanks!

As per https://github.com/google/mediapipe/issues/831#issuecomment-647570208, I added
node {    calculator: "GpuBufferToImageFrameCalculator"    input_stream: "throttled_input_video"    output_stream: "raw_video"  }
to mediapipe/graphs/pose_tracking/pose_tracking_gpu.pbtxt. I then compile an AAR and binarypb, following the directions on the mediapipe website. I integrate this AAR into an app which renders the output from the mediapipe graph into a SurfaceView. When I leave this app running for a few minutes, it freezes, with no error message in logcat. The only way for me to open it again is to return to the home menu, kill it and restart. It also seems to occur quite often, although not always, when I leave the frame for several seconds and then return. The output shows part of my body and the very edge of a skeleton when it freezes up.

Hi,
I just wanted to see if there's any update on this. We really need this configuration, is there perhaps a workaround we can use temporarily?

Quick update for anyone facing this issue: I was able to fix this by replacing the PoseRendererGpu node in mediapie/graphs/pose_tracking_gpu.pbtxt with PoseRendererCpu, feeding the ImageFrames from GpuBufferToImageFrameCalculator to that and converting the output back into GpuBuffer using ImageFrameToGpuBufferCalculator.  I don't think it fixes the underlying issue, but it's a usable workaround.


Update README.md

Adding -0613 to the model per OpenAI stating that those models have the function calling capabilities.

I don't know if you want to provide a constant for end-users, but this is how I keep it straight in my projects:
export const GPT_35_TURBO = "gpt-3.5-turbo";
export const GPT_35_TURBO_WITH_FNS = `${GPT_35_TURBO}-0613`;


Remove authentication for localhost

Coverage remained the same at 52.878% when pulling 51e70197c459084c6f9e1d6c1eb64e8377e54f2f on cpacia:master into 248b43c9783f7e8d34f2898a913c6f1172cfe72f on OpenBazaar:master.


New theme: yinwang

Theme submission
Before submitting a theme please make sure you've read the README.md. It describes in detail what information are needed and which requirements have to be fulfilled for the submission. The check list below can help you.
Link to my theme repository: [INSERT URL]
I made sure that...

[x] the repository contains a good README.md describing my theme
[x] an open source license has been added to LICENSE.md
[x] all metadata have been added to theme.toml
[x] screenshots have been added in the images/ folder with the required dimensions

no use

[x] in case I'm using a customized demo via the exampleSite folder that

[x] https://example.com is set as base url in exampleSite/config.{toml, yaml, json} to avoid the abuse of unused domains
[x] the site's content is as neutral as possible (contains no ads etc.) and reflects the features of my theme

[x] I tested my theme against the gohugoio/HugoBasicExample

[x] I've checked the developer tools' console in my browser for error messages

no use

[x] in case my theme is using Hugo Pipes features like toCSS and PostCSS that I have committed the /resources directory with all generated assets, for my theme to work in the basic version of Hugo

Feel free to ask questions. We're glad to help.
repo
https://github.com/chinanf-boy/gohugo-theme-yinwang
test pass

Hi @chinanf-boy and thank you for your theme submission.
Your theme's demo renders with the Hugo Themes Site Build Script 👍
However I have noticed the following issues:

You need to remove the transparency and drop shadow effect from your theme's screenshots. Also you need to remove the browser's interface from these images. Please have a look at http://themes.gohugo.io/ you will notice that all theme screenshot include only the actual theme layout and nothing else.

You theme's navbar shows up only on the index page and not on single pages. Please make sure that it shows up everywhere.

Please do the above and let me know.
Thanks.

[x] 1. fix img

https://github.com/chinanf-boy/gohugo-theme-yinwang/commit/ce48b7f8f4970798c5fd70abf9c87baad95a7050
@onedrawingperday

[ ] 2. 🤔， hard to say . That is the Style of http://www.yinwang.org/

The single pages no navbar

@chinanf-boy
Thank you for fixing your theme's screenshots.
Regarding the issue with the navbar, that is a basic UX pattern. You cannot have the user reaching for the browser's back button to reach for a website's navigation.
In any case @digitalcraftsman can have a further look into your theme once he has time.
Thank you.

Thanks 😊

[x] 1. Fix: single pages add a Home link

2. Is it That Size for those imgs

@chinanf-boy
Thank you for making the changes. I am fine with the Home link on the single pages.
@digitalcraftsman
This theme works fine on my end and it can be added to the website. It is a fork of the Hugo Basics theme. It looks different enough than Hugo Basics and it is aimed to Chinese language users. The README is in Chinese. (I haven't requested a translation to English, because it doesn't seem like it's needed here).

Your theme should appear soon on Hugo's theme site. Next, I'll promote your theme on Hugo's official Twitter account.


Swagger setup

Note that this PR also removes the default route found in the backend that descibes Hello /something

As I am not very experienced with Typescript I set the the type of swagger JSON objects as : object. Is this the correct typing for these?

@lakooi You might be able to find more refined types over here:

https://www.npmjs.com/package/@types/swagger-ui-express
https://www.npmjs.com/package/@types/swagger-jsdoc


Add retain flag option to last will and birth messages

Referring to https://github.com/eschava/broadlink-mqtt/issues/71
Hello @eschava thank you for your work on this, very simple to use but so useful! Is it possible to make the birth and will message retained? (or make it optional in the config), only this message! This is useful to know the status of the client on the controller (for example home assistant) start. If The controller starts after the broadlink client, it will not receive the bridge status if this is not retained.
Thank you

Good idea! Thank you
Changed the code to always sent last will and birth messages as retained

That was fast! Thank you @eschava


added github url in body and resolved some issues

PR Objective

Resolve the common issues, do not add username in PR_create and Issue_create.
Add JiraUsername in only PR_Review and add them in Search Criteria
Modified #pr to #pr_create to make sure that duplicate tasks should not be created.
Added Github url in details   (https://github.com/omkarkhatavkar/jirasync/issues/8)

Execution :

Jira Result


unexpected OneToOne relationship

Let's say I have the following database schema:
User {
  id: uuid;
  name: varchar;
}
UserBalance {
  user_id: uuid; (fkey User)
  currency_id: uuid; (fkey Currency)
}
Currency {
  id: uuid;
  code: varchar;
}

A user can have many balances, and the correct schema is generated with the balances being a OneToMany relationship.
Now, say I add the following unique index to the UserBalance table (as I want only one balance per currency):
Unique(["user_id", "currency_id"])
For some reason, this causes the balance to be generated as a one to one relationship with user, where database wise it's still clearly a one to many. I can still have an array of user_balance elements under the user, just with different currencies.
I don't think that unique index should change the type of the relationship ?

Does your DDL statements looks like that? It generated ManyToMany relations for me.
What database engine and typeorm-model-generator version are you using?
CREATE TABLE public."Currency"
(
    id uuid NOT NULL,
    code character varying(20),
    CONSTRAINT currency_pkey PRIMARY KEY (id)
);
CREATE TABLE public."User"
(
    "Id" uuid NOT NULL,
    name character varying(20)[],
    CONSTRAINT "User_pkey" PRIMARY KEY ("Id")
);
CREATE TABLE public."UserBalance"
(
    user_id uuid NOT NULL,
    currency_id uuid NOT NULL,
    CONSTRAINT "UserBalance_pkey" PRIMARY KEY (user_id, currency_id),
    CONSTRAINT fk1 FOREIGN KEY (user_id)
        REFERENCES public."User" ("Id") MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
    CONSTRAINT fk2 FOREIGN KEY (currency_id)
        REFERENCES public."Currency" (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
);
CREATE UNIQUE INDEX ind
    ON public."UserBalance" USING btree
    (user_id, currency_id);

Closing as no answer from the reporter.


Shared face operations on parallel NC mesh

Hi everyone,
I think I am running into a conceptual issue with the NC mesh. For some parallel LTS prototype (using DG for space) I want to cache all face matrices into an array. However, I am not sure if I do not count the number of all faces attached to owned elements wrong, or if something is wrong with my loop over the shared faces. A minimal reproducer for my issue is
#include "mfem.hpp"
#include <iostream>

using namespace mfem;

int main(int argc, const char** argv)
{
   Mpi::Init();
   auto mesh_ = Mesh::MakeCartesian2D(1,Mpi::WorldSize(),Element::QUADRILATERAL);
   mesh_.EnsureNCMesh(true);
   mesh_.Finalize(true);
   ParMesh *mesh = new ParMesh(MPI_COMM_WORLD, mesh_);

   Array<Refinement> refinements;
   if(Mpi::Root())
      for (auto e : {0})
         refinements.Append(Refinement(e));
   mesh->GeneralRefinement(refinements, 1, 3);
   mesh->ExchangeFaceNbrData();

   std::cout << Mpi::WorldRank() << ": " << "#f=" << mesh->GetNumFaces() << " #sf=" << mesh->GetNSharedFaces() << std::endl;

   for (int sfi = 0; sfi < mesh->GetNSharedFaces(); sfi++) {
      const int fi = mesh->GetSharedFace(sfi);
      std::cout << Mpi::WorldRank() << ": " << fi << std::endl;
      if(fi >= mesh->GetNSharedFaces() + mesh->GetNumFaces())
         std::cout << Mpi::WorldRank() << ": " << "Assertion failed for " << fi << std::endl;
   }

   socketstream sol_sock("localhost", 19916);
   sol_sock.precision(8);
   sol_sock << "parallel " << Mpi::WorldSize() << " " << Mpi::WorldRank() << "\n"
           << "mesh\n"
           << *mesh << std::endl;

   return 0;
}

> mpirun -np 2 minimal-failure
0: 10
0: 8
1: 14
1: Assertion failed for 14
1: 12
1: Assertion failed for 12

where I think that fi is in the wrong index set (global face set?) instead of the local one. I would either expect that both ranks would have 3 shared faces here, or the rank 0 has 2 and rank 1 has 1 shared face. What am I missing here?

Edit: I assume this is some kind of bug. See updated code.
> mpirun -np 3 minimal-failure
0: #f=12 #sf=2
0: 10
0: 8
2: #f=4 #sf=1
2: 0
1: #f=4 #sf=3
1: 2
1: 17
1: Assertion failed for 17
1: 15
1: Assertion failed for 15

I am actually not sure if this is technically a bug or some kind of underspecification issue. From what I understand here is that the returned index from GetSharedFace returns an index to the face set of the parallel NC mesh and that the gaps are due to the faces of the ghost elements (=ghost faces?). However,  GetSharedFace is user-facing and the doc string tells that it returns the local face index.
Here I see 3 issues, which I am not sure how to resolve and which I could not find in the mesh source code.

How exactly is local face index defined? I expect that the local face index set is a continuous integer range, which seems to be true after inspecting the internals of ParNCMesh, but the bounds are not clear.
Is there some way to query the upper bound for the local face index range?
Is there some mapping from the local face index to the "local shared face index" (\in [0, mesh->GetNSharedFaces()) )

Hi @termi-official, this is my initial guess for the explanation, but I may be wrong and would appreciate any corrections from experienced NC mesh developers.
First, ParMesh::GetSharedFaceTransformationsByLocalIndex uses as its input FaceNo the result of GetSharedFace(sf). The first line of GetSharedFaceTransformationsByLocalIndex uses faces_info[FaceNo]. As you mentioned, the documentation describes the returned FaceNo as a "local index":
   /// Return the local face index for the given shared face.
   int GetSharedFace(int sface) const;

The concept of "local index" could be interpreted in many ways, but the fact is that FaceNo is an index in faces_info, an array in the serial Mesh class.
My understanding is that a parallel NC mesh maintains a global serial Mesh, see Cerveny 2019, e.g. Figure 6.3. In order to keep data mostly distributed in parallel, there is an assumption that the parallel mesh is obtained by refinement of an initially small serial Mesh stored on all MPI ranks, and each rank performs refinements only in its own elements and ghost elements. Thus every rank has a global serial Mesh, but it is local in the sense that it is updated only by local refinements. I believe this is the sense in which "local index" is local.
I am not sure what you are trying to accomplish, but the code in GetSharedFaceTransformationsByLocalIndex may be useful. It seems that mesh->GetNSharedFaces() is the right way to get the local number of shared faces, and GetNumFacesWithGhost returns the size of faces_info, which contains all "local faces" in this context. Considering this line in GetSharedFaceTransformationsByLocalIndex, the ghost faces are at the end of faces_info:
bool is_ghost = Nonconforming() && FaceNo >= GetNumFaces();
If this is right, the simple description of "local index" without further explanation is certainly a good way to confuse users. I think we need a lot of new documentation to make the overall implementation clear.

Thanks for the detailed answer here @dylan-copeland !
Actually I was also tracing down ParMesh::GetSharedFaceTransformationsByLocalIndex which started the confusion.

The concept of "local index" could be interpreted in many ways, but the fact is that FaceNo is an index in faces_info, an array in the serial Mesh class.
My understanding is that a parallel NC mesh maintains a global serial Mesh, see Cerveny 2019, e.g. Figure 6.3. In order to keep data mostly distributed in parallel, there is an assumption that the parallel mesh is obtained by refinement of an initially small serial Mesh stored on all MPI ranks, and each rank performs refinements only in its own elements and ghost elements. Thus every rank has a global serial Mesh, but it is local in the sense that it is updated only by local refinements. I believe this is the sense in which "local index" is local.
[...] It seems that mesh->GetNSharedFaces() is the right way to get the local number of shared faces, and GetNumFacesWithGhost returns the size of faces_info, which contains all "local faces" in this context. Considering this line in GetSharedFaceTransformationsByLocalIndex, the ghost faces are at the end of faces_info:
bool is_ghost = Nonconforming() && FaceNo >= GetNumFaces();

This is part of my struggle. The local element indices are associated to the leaf element array in NCMesh, which also defines the ghost elements. However, there is no face pendant and I could not find a full definition for the difference between ghost and shared faces. From my understanding a shared face would be a face which is attached to a local element and a ghost element. This seems to be true for conforming faces, but for nonconforming faces things are different. For example, face 12 in figure 1 above is attached to the faces 8 and 10 in global numbering. The number of shared faces here is 2, so only the small faces are counted and interestingly these indices are interleaved with the ghost face indices.

I am not sure what you are trying to accomplish [...]

Short term: Implementing a prototype for a distributed memory parallel implementation of local time stepping (which is quite urgent for me). Long term: Understanding the data structures and algorithms associted to the implemented NC meshes to possibly optimize them further (AMR timings are between 50% and 80% of my total runtime right now).

GetNumFacesWithGhost

Thanks for this pointer here, I am not sure how I missed this function.

If this is right, the simple description of "local index" without further explanation is certainly a good way to confuse users. I think we need a lot of new documentation to make the overall implementation clear.

Indeed. I can give this one a try once I have a better understanding and finished my ongoing PRs.


Jazzmin - Additional CSS improvements

Improved the region tab to look more in line with Jazzmin while being semi-theme neutral. Used some hackish CSS to shrink the sidebar when collapsed. Fixed order machine right margin.
Regarding fieldset titles, I didn't look into the code enough to understand how content-editor is inserting the order-machine into the page, but for some reason, Jazzmin creates a fieldset for every single content type. For now, all H6's are hidden. I think this can be removed if content-editor is improved in the future to support fieldsets assignments.
While fieldsets aren't supported, it's required that any models with content-editor have changeform_format_overrides for the parent model set to 'single', i.e.
JAZZMIN_SETTINGS = {
    ...
    "changeform_format_overrides": {
        "myapp.page": "single"
    },
    ....
}

This is because tabbed pages are the default, and order-machine will appear under the first content type fieldset tab.

I'd love a screenshot of how it looks now! Not necessarily for review, just out of interest.

I'd love a screenshot of how it looks now! Not necessarily for review, just out of interest.

Hehe, it's far from perfect, I'm not sure if the static file issues are a result of Jazzmin or my extremely atypical Django setup. I did a massive upgrade of an existing application and recreated the front-end in svelte, so the content is being sent over API. Either way, good enough for beta next week, and the upgrade is going straight to production on a couple of existing websites... so should get feedback soon.

Thanks! Released as 5.1.1.


Player controls and peeking not working

Running into two issues, I was able to use peeking when I first added this but recently it simply doesn't work anymore even when changing keybindings. Similarly my players have 0 control over slowly opening a door and retain only normal door controls (click to open) but the scroll to slowly open works fine as the gm.
I'm not sure if I'm missing a setting or if this is some sort of conflict with the newest version of foundry. Note I did disable all other modules just to make sure it wasn't a conflict.

Everything seems to work fine for me.
Were you logged in as a GM when a player was using those features?
Which foundry version are you using?
Which perceptive version are you using?
Do you have any other modules activated?
Which browser are you/your players using?
Could you send me a screenshot of your Lock Peeking and Door moving settings?

-I was logged in as a GM with 5 players and none of them could get it to work but I could while playing as GM. I later (post session) attempted to log in as a player and check it and it didn't work while logged in as a player.
-There was one regarding a possible conflict with arms reach so I turned it off and then later tested it with no other modules on other than perceptive to ensure it wasn't a possible conflict.
-Foundry version 12 stable
-Perceptive version 4.08
-I did at the time, I have since turned off all other modules to check for conflicts but am experiencing the same thing.
-Opera GX

I still can not replicate the the bug.
-Which exact foundry version (331, newest?) are you using?

Could you send me the .json export of a scene in which this bug occurs?

Build 330, pf2e second edition 6.2.3 if that matters.
fvtt-Scene-manor-grounds-w4slrtvHbeC00muZ.json
Drew a wall/door here to test for an upcoming game

I can sadly still not replicate the bug

While having the perceptive client setting "Message Popups" and the foundry setting "Scrolling Status Text" enabled are there any popups while trying to move/peek a door as a player?
What happens if you set the range in the settings to -1, does moving/peeking work then?
Just to make sure, is the game unpaused while testing as a player?

It started working, not sure if it was because I was logging out as the GM to log in as a player or what but when I had a player log in to test with me it worked fine now, no clue what changed lol but thanks for your time.

Good to hear that it is solved either way


[Doc] - Rethink Load balancer wording on installation when using Minikube

Is your feature request related to a problem? Please describe.
When doing a Minikube installation the need for setting a load balancer ip is not needed; however, when following the installation steps and being redirected to the installation page the next point after creating namespace traefik is:
 export LOAD_BALANCER_IP=$(LOAD_BALANCER_IP:-) # Set this to the IP of your load balancer if you know that
I did not know what value to assigned and gave randomly the first one on the range; however this could have been skipped for minikube
Describe the solution you'd like
One solution could be add a comment like "Not needed for minikube installation" or "If you don't mind the loadbalancer giving you a random IP address, you can skip this option"
Another possibility could be explain better what this option is

Closing. We are going to drop minikube from the documentation in the future.


Waypoint wants name of radio button set, can't recognize correct change

Challenge http://www.freecodecamp.com/challenges/waypoint-create-a-set-of-checkboxes has an issue. Please describe how to reproduce it, and include links to screen shots if possible.
I followed all the necessary requests to change the code the way it is supposed to be. It seems that the request "Give your radio buttons the name attribute of "personality"." is either broken or misplaced. After changing the name of the radio-buttons, the checkpoint does not turn green.

Well played freecodecamp. The reason (according to your source-code) does not look like a mistake. You have to read the site's source-code to understand what the test actually wants from you (Surprise: it is not what it says that it wants)

Thanks for the tip, but I don't think GitHub issues are the place to be cryptic.
attr('name') === 'trait' should instead be attr('name') === 'personality' to match what the test says it's looking for.

Thank you for noticing this! I'm pushing a fix for this momentarily.

Thanks for the fast fix! I was being cryptic, because it could have been on purpose and I would have ruined the 'easter egg' otherwise ;)


Refactor dialogbox

Fixes issue mentioned in #41 comments about #36.
Aside from recovering changes by #36, some adjustment of wording and other part of the code is made to ensure consistency.

merged to #41

LGTM!
(You may want to add your name to the list of authors at the end of the file?)

Thank you, will do that.


Client Allocation Request for: Cari Democrative

Client Allocation Questions
Core Information

Name: Cari Democrative
Website / Social Media: https://cari.com.my/
Region: Asia excl. Greater China
DataCap Requested: 15TiB
Addresses to be Notarized: f155awf3bwturml63p7us544rxqpc44z2d4xdb7vy
Notary Requested: ozhtdong

@helenbrowna Please subscribe to notifications for this Issue to be aware of updates. Notaries may request additional information on the Issue.

Thanks for your application. I have some questions about you and your company:
1.What's your name? What's your position?
2.What's your company's business? Do you have any other social media link?
3.Could you show me your company's business license?
4.How many miners do you want to store your data to? How much data for each miner?
5.Will you record your allocation decision in public? Which platform will you use?
6.What method/tool will you use to inspect miners? Which aspect of miners will you inspect?

My name is Tom. I’m a drector.
2.Our company’s vision is to be the Most Creditable and Influential online new media in Malaysia. Our mission is to Publish / Disseminate News & Content that are from users, for users, and related to users. And we want to promise to be the platform for the voice of Malaysian, the platform to interact and exchange, views and opinions of all races and promise to actuate the beauty of Malaysia as a multi-ethnic, multicultural, and multilingual society.  Our Ambition is to promise to be the voice of Malaysian, and the Malaysian most preferred platform to voice out.
3.Yes. I will show you several minutes later.
4.I think 3-4 miners are ok. We plan to divide to every miner equally.
5.We will use github.
6.Filfox. We are looking for experienced miners.

My name is Tom. I’m a drector.
Our company’s vision is to be the Most Creditable and Influential online new media in Malaysia. Our mission is to Publish / Disseminate News & Content that are from users, for users, and related to users. And we want to promise to be the platform for the voice of Malaysian, the platform to interact and exchange, views and opinions of all races and promise to actuate the beauty of Malaysia as a multi-ethnic, multicultural, and multilingual society.  Our Ambition is to promise to be the voice of Malaysian, and the Malaysian most preferred platform to voice out.
Yes. I will show you several minutes later.
I think 3-4 miners are ok. We plan to divide to every miner equally.
We will use github.
Filfox. We are looking for experienced miners.

ok

发件人: ozhtdong @.>
发送时间: 2021年12月16日 17:45
收件人: filecoin-project/filecoin-plus-client-onboarding @.>
抄送: helenbrowna @.>; Mention @.>
主题: Re: [filecoin-project/filecoin-plus-client-onboarding] Client Allocation Request for: Cari Democrative (Issue #1279)
Thanks for your application. I have some questions about you and your company:
1.What's your name? What's your position?
2.What's your company's business? Do you have any other social media link?
3.Could you show me your company's business license?
4.How many miners do you want to store your data to? How much data for each miner?
5.Will you record your allocation decision in public? Which platform will you use?
6.What method/tool will you use to inspect miners? Which aspect of miners will you inspect?
―
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/filecoin-project/filecoin-plus-client-onboarding/issues/1279#issuecomment-995605504, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AW6F4NHQUNKMHRYQA5V3F4TURGYJZANCNFSM5KFZDBUQ.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Request Approved
Your Datacap Allocation Request has been approved by the Notary
Message sent to Filecoin Network

bafy2bzacedci3sqh36agriz76q7ibtyx7wsnz6wjiens3lyv2aouhldwpxbge

Address

f155awf3bwturml63p7us544rxqpc44z2d4xdb7vy

Datacap Allocated

NaNB

Signer Address

f1lwpw2bcv66pla3lpkcuzquw37pbx7ur4m6zvq2a

You can check the status of the message here: https://filfox.info/en/message/bafy2bzacedci3sqh36agriz76q7ibtyx7wsnz6wjiens3lyv2aouhldwpxbge


Websocket port should be configurable via cli arguments

https://github.com/ethereum/trin/pull/757#discussion_r1219642958

HTTP and WS must run on a separate port.  Current defaults are 8545 for HTTP and 8546 for WS.

Following up ^ - it appears as though all of this logic should also be removed... https://github.com/ethereum/trin/blob/master/rpc/src/rpc_server.rs#L385-L425

Hi, i would like to take this issue but i seem like in cli arguments, there are --ws-port already.

I think you are correct and this was already implemented in #992 , but issue was never closed.


[Feature Request] SQL Server Enum Support in ZenStack

Problem
Prisma removed support for Enum in Sqlite and SqlServer back in 2020, leading to increased boilerplate code and a lack of a single source of truth. For instance, the data model, initially defined as:
enum UserRole {
    Admin
    User
}

model User {
    id Int @id @default(autoincrement())
    username String @unique
    role UserRole
}

For the SqlServer case, it becomes:
model User {
    id Int @id @default(autoincrement())
    username String @unique
    role String
}

This means that I lose all type definitions of UserRole in TypeScript and have to manually add them, resulting in more repetitive code and a lack of a single source of truth.
There's a lengthy discussion on this issue in the Prisma GitHub repository: Link, and it's been "open" for three years. This issue is also a roadblock for me in using Prisma until I discovered Zenstack. I believe the "custom attribute" feature in Zenstack could potentially resolve this problem.
What I've Tried
Upon delving into the ZenStack codebase, I noticed a limitation in customizing @core/zod to work seamlessly with my custom attribute, thereby restricting the flexibility I require.
While the option of forking the code and making my own modifications is available, it comes with the drawback of potentially losing out on future updates and improvements to this excellent codebase.
Suggested solution
I propose adding a way to define an "enum" type for a field, like the "role" field in the example above. For instance:
model User {
    id Int @id @default(autoincrement())
    username String @unique
    role String @enum("Admin | User")
}

This would generate TypeScript using z.infer<UserModel> as follows:
enum UserRole {
    Admin,
    User
}

interface UserModel {
    id: number;
    username: string;
    role: UserRole;
}

This approach would allow us to maintain a single source of truth (the zmodel file) and achieve strong type safety, for example, with Typia and Nestia. It will also position ZenStack as an essential and powerful superset of Prisma.

Hey @Val0429 , thanks for bringing this up! I wasn't aware enum is missing for SQLSever too ... Really inconvenient for me at least working with sqlite.
Using an attribute to annotate is a great idea. How are you trying to tackle it today and what limitation did you run into with Zod? I'm thinking if the main thing you care about is the generated zod, maybe you can make a derivation to the generated zod schema and enforces enums there.
I'm even thinking, since ZenStack is already a superset of Prisma, maybe we should just polyfill and make enum work natively just like Postgres? At least from the TS/Zod typing point of view. In the db they're still strings.

I'm even thinking, since ZenStack is already a superset of Prisma, maybe we should just polyfill and make enum work natively just like Postgres? At least from the TS/Zod typing point of view. In the db they're still strings.

It's also the best option for me. for example, in the schema.zmodel file:
datasource db {
    provider = "sqlserver"
    url = env("DATABASE_URL")
}

enum UserRole {
    Admin
    User
}

model User {
    role UserRole
}

If @core/prisma sees that the database provider is "sqlserver" or "sqlite," which don't support enums, it could automatically do a polyfill. So, in the schema.prisma file:
/// for sqlserver, zenstack polyfilled enum
/// enum UserRole {
///    Admin
///    User
/// }

model User {
    /// for sqlserver, zenstack polyfilled UserRole to String
    role String
}

And in the Zod interface (for TypeScript):
enum UserRole {
    Admin,
    User,
}
interface User {
    role:UserRole;
}

Else, If the database allows enum, everything stays as usual.
Most developers in this case are likely more interested in TypeScript type safety rather than whether the enum is stored inside the database. Introducing this polyfill concept in ZenStack would improve the way Prisma handles enums, making the overall experience smoother.

I tried to breakdown the workload of this task,
1. Add Global Config for ZenStack
In Prisma, there's a global config in the package.json that provides "schema" and "seed" arguments.
"prisma": {
    "schema": "src/prisma.schema",
    "seed": "ts-node src/prisma/seed.ts"
}

link: https://www.prisma.io/docs/reference/api-reference/command-reference
To support this in ZenStack, we can have a similar setup in the package.json:
"zenstack": {
    "schema": "src/schema.zmodel",      /// so we won't need to run `zenstack generate --schema=...` every time
    "output": "src/prisma/schema.prisma",   /// it will be even better to just take `prisma.schema` as the output location
    "polyfill": {
        "enum": true    /// provide a way to turn off if developer perfer original prisma's behavior
                        /// reserve place for other kind of polyfill
    }
}

2. Modify ZenStack VSCode Plugin
Show the message "The current connector does not support enums" only if polyfill.enum is set to false.
3. Modify @core/prisma to Support Enum Polyfill
Adjust zenstack/packages/schema/src/plugins/prisma to translate enum types,
datasource db {
    provider = "sqlserver"
    url = env("DATABASE_URL")
}

enum UserRole {
    Admin
    User
}

model User {
    role UserRole
}

into:
/// for sqlserver, zenstack polyfilled enum
/// enum UserRole {
///    Admin
///    User
/// }

model User {
    /// for sqlserver, zenstack polyfilled UserRole to String
    role String
}

Only do this translation if the database connector doesn't natively support enums.
4. Modify @core/zod
Possibly, there might be a need to modify zenstack/packages/schema/src/plugins/zod.

Thanks for the detailed breakdown! Really appreciate it.
One of the first things that needs to be done is to interfere with how Prisma generates its TS types (those under "node_modules/.prisma" folder). In previous versions of ZenStack we've been avoiding to do this to avoid extra complexities, but I'm aware that we can't go too far without doing that. Polyf-illing enum can be a good first try on that route.

Hi @ymc9,
It seems there could be an opportunity to make some changes in the @core/prisma plugin.
In the schema-generator.ts file, specifically at this line link, where we identify an Enum on SqlServer or Sqlite, we can consider stopping the use of generateEnum and instead, incorporate it as a built-in attribute like @enum(). This change would allow us to manage it consistently throughout the code.


Add Icons to Navbar

Describe the feature
Hello Project Admin
I would like to add Icons to Navbar so that it will make our website to look attractive
Can you assign me this issue under GSSOC'24 @SUGAM-ARORA
As you can see in below video
Add ScreenShots
https://github.com/SUGAM-ARORA/UniCollab/assets/161804629/6cca3419-637f-45cf-89b0-f8cacc2470ba
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

@sailaja-adapa Issue assigned to you

Yeah Thank you @SUGAM-ARORA


Twitter handle incorrect

Hey man.
Was reading one of your blog posts about scrolling anchor links in Gatsby. Great post and totally helped me work something out. Anyway, clicked the Twitter link in the footer and noticed it wasn't right.
PR to amend: https://github.com/brohlson/chaseohlson/pull/342

Thank you @nathobson !


conf/distro: Add bc package to SDK_PREINSTALL.

Building kernel module requires bc command, so it would be nice to install the bc package into the SDK rootfs in case bc command doesn't exist in user's workstation.

Thanks!


Edit files directly in the preview window

I would like to have an ability to edit files directly in the preview window. Similarly to what jetbrains IDEs have (ctrl+shift+f).

Only doable for NeoVim as Vim popup is not focusable.
The preview now is not loading the entire file but the necessary lines, in order to edit in the preview window without introducing much complexity, it's straightforward to load the entire file into the preview buffer, and then you move into the preview window to modify it.

The alternative workflow is to select the items and open the quickfix to do the operations there.


EF6 TVF for one column result

Hello,
Your project is good! Thanks a lot. It works for me if I have an EF entity returned from TVF.
I decided to try to create TVF that returns only one column (UNIQUEIDENTIFIER). So I declared this in C#:
        [DbFunction("dbo", "SearchQuotes")]
        public IQueryable<Guid> SearchQuotes(string search)
        {
            var parameter = search != null
               ? new ObjectParameter("search", search)
               : new ObjectParameter("search", typeof(string));

            return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<Guid>(
               $"[{GetType().Name}].[SearchQuotes](@search)", parameter);
        }

I also have:
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Add(new FunctionsConvention<CoreContext>("dbo"));
        }

But Add-Migration reported an exception:
PM> Add-Migration Aaaaa
System.ArgumentException: The argument 'name' cannot be null, empty or contain only white space.
   at System.Data.Entity.Utilities.Check.NotEmpty(String value, String parameterName)
   at System.Data.Entity.Core.Metadata.Edm.EdmProperty.Create(String name, TypeUsage typeUsage)
   at CodeFirstStoreFunctions.StoreFunctionBuilder.CreateReturnRowType(String propertyName, EdmType edmType)
   at CodeFirstStoreFunctions.StoreFunctionBuilder.CreateFunctionReturnParameters(FunctionDescriptor functionDescriptor)
   at CodeFirstStoreFunctions.StoreFunctionBuilder.Create(FunctionDescriptor functionDescriptor)
   at CodeFirstStoreFunctions.FunctionsConvention.Apply(EntityContainer item, DbModel model)
   at System.Data.Entity.ModelConfiguration.Configuration.ConventionsConfiguration.ModelConventionDispatcher.Dispatch[T](T item)
   at System.Data.Entity.ModelConfiguration.Configuration.ConventionsConfiguration.ModelConventionDispatcher.VisitEdmEntityContainer(EntityContainer item)
   at System.Data.Entity.Edm.EdmModelVisitor.VisitCollection[T](IEnumerable`1 collection, Action`1 visitMethod)
   at System.Data.Entity.Edm.EdmModelVisitor.VisitEntityContainers(IEnumerable`1 entityContainers)
   at System.Data.Entity.Edm.EdmModelVisitor.VisitEdmModel(EdmModel item)
   at System.Data.Entity.ModelConfiguration.Configuration.ConventionsConfiguration.ModelConventionDispatcher.VisitEdmModel(EdmModel item)
   at System.Data.Entity.ModelConfiguration.Configuration.ConventionsConfiguration.ModelConventionDispatcher.Dispatch()
   at System.Data.Entity.ModelConfiguration.Configuration.ConventionsConfiguration.ApplyStoreModel(DbModel model)
   at System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo)
   at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
   at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
   at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
   at System.Data.Entity.Internal.LazyInternalContext.get_ModelBeingInitialized()
   at System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(DbContext context, XmlWriter writer)
   at System.Data.Entity.Utilities.DbContextExtensions.<>c__DisplayClass1.<GetModel>b__0(XmlWriter w)
   at System.Data.Entity.Utilities.DbContextExtensions.GetModel(Action`1 writeXml)
   at System.Data.Entity.Utilities.DbContextExtensions.GetModel(DbContext context)
   at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext, DatabaseExistenceState existenceState, Boolean calledByCreateDatabase)
   at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration)
   at System.Data.Entity.Migrations.Design.MigrationScaffolder..ctor(DbMigrationsConfiguration migrationsConfiguration)
   at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.RunCore()
   at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()

We use EF6.2, .Net4.7.1, VS2017
I have workaround but I thought it might be interesting for you.
Thanks again!
--
Sergiy

I think the issue here is that because GUID is an EF primitive type we don't have a mapping between the name of the column returned by the TVF and the result type. AFAIR you can use the DbFunctionDetails attribute to define such a mapping. End to end tests contain some examples - for instance in this case:
https://github.com/moozzyk/CodeFirstFunctions/blob/d1a1c27270c6e5637b1a03fdb80e05e432aee8fb/CodeFirstStoreFunctionsTests/E2ETests.cs#L70-L77
the TVF returns a byte column (byte, similarly to GUID, is an EF primitive type) and the DbFunctionDetails attribute defines the name of column to use.
Let me know if this helps.

Pawel,
Thanks a lot! I had to read your E2ETests.cs better.
You are right. I added [DbFunctionDetails(ResultColumnName = "Id")] and it is working now.
Thanks again!
--
Sergiy

I am glad that you were able to make it work. I wish the exception thrown in this case was more clear.


Support Envoy retry policies

Automatic retries are a core feature of Envoy but the latest v0.50x doesn't support envoy_override anymore and there are no appropriate settings in the Mapping config.
This should be part of the Mapping API. It can support a basic subset until envoy_override is supported again or match the Envoy API.

As a side comment, what is the expectation about supporting something like envoy_override again after 0.50.x? I can't upgrade it myself due to that, that's how I landed on this ticket here :-(

The v2 YAML configuration that Envoy uses is quite a bit more complex than the v1 configuration we used to support.
So, it's on the list, but it will be quite different. In the meantime, though, the Ambassador code is much cleaner, so would welcome direct contributions to the code base to support more features! :)

Merged to master, will be released shortly


Add separators between elements of Info Row

Make it easier to know where one ends and the other starts

With more things now in the info bar, and some quite wide I have reviewed this.
There is quite a space between them and they are quite distinguishable, and we have space for more.
So visual noise of a separator is not needed I think, just the space between them is good enough.
so closing.


Exception in common module _grab_total_items

I see the following traceback while invoking paged fetch:
for bundle in as_pages(collection.get_objects, per_request=50):
  File "/usr/local/lib/python2.7/dist-packages/taxii2client/v20/__init__.py", line 47, in as_pages
    total_in_request, total_available = _grab_total_items(resp)
  File "/usr/local/lib/python2.7/dist-packages/taxii2client/common.py", line 132, in _grab_total_items
    results = re.match(r"^items (\d+)-(\d+)/(\d+)$", resp.headers["Content-Range"])
  File "/usr/local/lib/python2.7/dist-packages/requests/structures.py", line 54, in __getitem__
    return self._store[key.lower()][1]
KeyError: 'content-range'

To fix:

Check the key "Content-Range" before use:

if not resp.headers.get("Content-Range"):
     return 0, 0

Hi @dcherian-dev, this is likely due to a TAXII Server that does not support paged requests and you might be receiving the full response (or no objects at all) in a single request. I will make a fix to prevent this from happening, but also to let you know what might be happening in the background. Thanks for pointing this out!

Thanks @emmanvg for the quick response and fix!


Support async input

I'd like to read input async, so that i can have a game loop going, without locking up the loop waiting for input.
Is this something you think is possible to implement or you'd like to add?

I'd be very happy to see a contribution of this kind! I have a number of ideas for this package, but it's very much a "weekends and evenings" project / labor of love, so I'd be delighted to see others join in the fun. Would you be interested in working on this feature?

I'd like to help, but not very familiar with the low level stuff and streams right now. I did try to find a way to read from stdio asynchronously, you have the the stdio.listen function, but it seem to close after first event. Do you know how i can keep listening to those events?
Also, do you know if it is possible to debug console apps from Android Studio?

Implementing async input
I'd also need to do some research on this front. I know on VT-style terminals, you can "read with a timeout" and set that timeout (see the VMIN and VTIME constants in https://github.com/timsneath/dart_console/blob/master/lib/src/ffi/unix/termios.dart). If there's something in the stream, I assume it would stay there until the next read?
There's some interesting commentary here: https://github.com/flutter/flutter/issues/10677 that suggests that this is doable so long as there aren't other subscribers to stdin, which seems to be the case in this scenario.
Debugging console apps from Android Studio
I don't know about this, I'm afraid. I think IntelliJ provides the means for this, but whether this is exposed from Android Studio, I don't know. I use Visual Studio Code for writing this library, which is very capable and supports debugging.
Comparing to DirectMyFile
I originally looked at their library and even contributed a fix or two. They've built something useful, however it's higher-level than dart_console and exclusively uses VT terminal escape sequences, which can be restrictive if you want to build something that works on Windows or sets attributes that aren't available in that way (e.g. disabling Ctrl+C).
Dart FFI is a new feature in Dart 2.6 that provides a lower-level approach where you can make system calls, and dart_console uses FFI for methods like enableRawMode(). I wanted the chance to try FFI out, and this was a perfect marriage of convenience and interest!

I did not know that the terminal would limit how you read input.. Hmm.. I would like to preferably read all characters until the end of the program or until i don't want to listen any more, but maybe that's not possible..? I did look at the comments in that Flutter issue, but not sure what to do with that.
I'm able to setup a run configuration for a Dart console app in Android Studio, but not sure how i launch and debug the terminal. Is it easy to set this up in VS Code?
I like that you seem to keep this library minimal, and with Dart FFI it's possible to do more!

I seem to be able to do async IO using stdin.listen, i think the problem occur when you try to do both sync and async io, as stated here:

Mixing synchronous and asynchronous reads is undefined.

I made an async.dart example in a branch here.
Notice if you set rawmode=false inside the listen callback, you will end the stream. I think that is because the rawmode setter does some sync io.
Should i try to build a Console.readKeyAsync based on the async.dart example ?

I added a new commit to that branch with a minimal async example.
I also added unitType to key. Also would it make sense to simplify readKey, so that the control characters could be figured out later, perhaps by adding getters to it?

Maybe this nonBlocking is needed for non-blocking io.
Also writeCharCode might be a cool API addition.


Way to load agents and region separatly

With Size Limit I found, that when I import simple function:
var region = require('caniuse-lite').region

I import a huge caniuse-lite/data/features/*.
My main concern that importing many unnecessary files will loose resources on JS parsing.
Maybe we can add API like:
var agents = require('caniuse-lite/agents')
var region = require('caniuse-lite/region')

It will not break public API.

This is because the unpacker code is rolled up into a single bundle, which does eliminate some redundancy at the cost of extra parsing; as I understood it we were using all this data  so it's fine? But anyway if this is not acceptable I am happy to accept a pull request for this, note that it will not affect the existing publish process - you only need to update the prepublish script (and swap out rollup for something else or adjust its config).

OK, I will make PR with:

Moving all unpacker functions to separated files.
Importing these files in index.js to provide the same API.

Where should I put these files?

The unpacker code is already in separate files in src/unpacker, it's rollup that combines them into a single file. So we need to change the build process from rollup to something else?

Do we need rollup? :D
We can create some sort of src/unpacker/index.js with:
module.exports = {
  features: require('./features'),
  region: require('./region.js'),
  …
}

Not necessarily, it was about concealing the complexity of needing to unpack related data when consuming the module. 😄

OK, I will try to create PR tomorrow


"Signature spoofing" does not show up in system settings

I've installed LineageOS for GApps with the link from your wiki. But when I go to Settings - Apps - Advanced - App Permissions, there is no signature spoofing - nor anywhere else for that matter.

LineageOS for GApps doean't actually exist, there is LineageOS and LineageOS for microG.
Yout problem isn't related to microG since microG only use "signature spoofing", it doesn't add it to the ROM.
If you meant LineageOS for microG you should report it here

Yeah, I meant the latter. I'm tired... Thanks!


Example is wrong?

The example on the example page uses PollingMarketDataService and getPollingMarketDataService(), but I've only found MarketDataService and getMarketDataService() in 4.2.0.
Is that a bug in the example code?

Thanks for pointing that out. Yes, I need to update that page on knowm.org. I'll close this ater I got it all updated.

Also, the getBitstampTicker() call on BitstampMarketDataServiceRaw is deprecated.

done.


question about self.pos_embed in models_dww.py

Hi, nice work!
I found this code ‘self.pos_embed = nn.Parameter(torch.zeros(1, self.num_patches + 1, embed_dim), requires_grad=False)  # fixed sin-cos embedding’ in models_dww.py. I think self.pos_embed is not a fixed sin-cos embedding, it's a fixed zeros embedding, and adding it to patch embedding has no effect. I want to know what the purpose of this line of code is. @ShadowXZT

Hi, thanks for your interests!
During training, pos_embed is initialized here: [https://github.com/zhu-xlab/DOFA/blob/master/pretraining/models_base_ofa_mae.py#L85].
During inference, we will load the parameters (fixed sin-cos embedding) from the pre-trained model.

thanks for reply! I understand now, close issue.


Model.find not using correct Tenant, when logging with a new one

When i change a devise logged user that belongs from a tenant (user1.customer_id => 1) to another user of another tenant (user2.customer_id => 2), the query made from the Model.find method is confused and still uses the other tenant id.
Instead, for the index action, the Model.all works fine.
But more strange, is that if i restart the rails server and try again, then it works correctly.
(OBS: Is not a before_action problem, i try also to put the code directly on the show action, and happens the same bug)
The code i'm using is this:
class ApplicationController < ActionController::Base
  protect_from_forgery with: :null_session
  respond_to :json

  set_current_tenant_through_filter #Required to opt into this behavior
  before_action :set_customer_as_tenant

  def set_customer_as_tenant
    customer_id = user_signed_in? ? current_user.customer_id : false

    #  This log is always the correct logged user customer_id
    logger.debug "Current_user customer_id on application_controller set_customer_as_tenant: #  {customer_id}"

    set_current_tenant(customer_id)
  end
end

class UsersController < ApplicationController
  before_action :authenticate_user!
  before_action :set_user, only: [:show, :update, :destroy]

  def index
    #  This query works fine, using the correct customer_id as the actual tenant
    @users = User.all
  end

  def show
    #  This query: @user = User.find(params[:id]), works with the same bug directly here
  end

  private

  def set_user
    if params.has_key?(:id)

      #  This log is always the correct logged user customer_id
      logger.debug "Current_user customer_id on users_controller set_user: #  {current_user.customer.id}"

      @user_test = User.new()
      #  This log is always the correct logged user customer_id; so it can be supposed that the next query should be done with the correct customer_id (tenant)
      logger.debug<EMAIL_ADDRESS>on users_controller set_user: #<EMAIL_ADDRESS>
      #  HERE IS THE BUG!
      @user = User.find(params[:id])
      #  Performs this query: User Load (0.4ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 AND "users"."customer_id" = 1 LIMIT $2  [["id", 1], ["LIMIT", 1]]
      #  Where this condition: "users"."customer_id" = 1, is using the incorrect customer_id

      #  Instead, this fix the bug, but is not the idea while this should be the gem job
      #  @user = User.find_by!(id: params[:id], customer_id: current_user.customer.id)
    else
      @user = current_user
    end
  end

  def user_params
    params.require(:user).permit(:email, :password)
  end
end

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :registerable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable,
         :recoverable, :rememberable, :trackable, :validatable

  multi_tenant :customer
end

class Customer < ApplicationRecord
  has_many :users

  validates :name, presence: true, uniqueness: true
end

@glarrai1 Thanks for opening this issue!
Are you using the latest released version of the library? (there were issues with caching in previous versions)
Also, which Rails version are you on? Thanks!

Hi, thanks you for helping!
I'm using:
Rails 5.1.2
activerecord-multi-tenant (0.7.0)
And by the way, i'm using Postman to try the endpoints. And for Devise JWT strategy.

@lfittl any idea? Thanks!

@glarrai1 Can you try upgrading to 0.8.0? That should resolve these issues

@lfittl I did de upgrade; but the bug is still happening ... any other clue?

@lfittl Should i try the referd gem: https://github.com/ErwinM/acts_as_tenant , or must hace the same problem?

@glarrai1 That gem works very different, since we branched off some time ago, but feel free to give it a try.
It doesn't make much sense to me why you are seeing the issues you describe above, sadly enough.
If you want to investigate yourself more closely as to whats going on, you can add some debug output into the query rewriter here: https://github.com/citusdata/activerecord-multi-tenant/blob/master/lib/activerecord-multi-tenant/query_rewriter.rb#L204
In particular it would be interesting if the rewriter gets called at all for the second time the find happens, or if it just uses the previously cached version (including the tenant_id).

@lfittl
Ok, so i did add this logger on the method to debug (as you can see on the code at the bottom):
"In particular it would be interesting if the rewriter gets called at all for the second time the find happens?"
--> NO, this is not happening!
It's being call only the first time, then never more, so it seems that it just uses the previously cached version (including the tenant_id) [only when i restart the rails server, this method is called again as the first time. In the opposite way, the User.all on the index action, does call everytime this method]
Is there a fix/patch, where at least we could force this method to be call everytime for a 'find'? (i would rather prefer to loose speed vs a bad build query that could mix tenants info!)
(...)

module ActiveRecord
  module QueryMethods
    alias :build_arel_orig :build_arel
    def build_arel
      arel = build_arel_orig

      if MultiTenant.current_tenant_id && !MultiTenant.with_write_only_mode_enabled?
        visitor = MultiTenant::ArelTenantVisitor.new(arel)
        visitor.contexts.each do |context|
          node = context.arel_node
          context.unhandled_relations.each do |relation|
            model = MultiTenant.multi_tenant_model_for_table(relation.arel_table.table_name)

            logger.debug "Enter to QueryMethods"
            logger.debug "Query builded with current_tenant_id: #{MultiTenant.current_tenant_id}"

            enforcement_clause = MultiTenant::TenantEnforcementClause.new(relation.arel_table[model.partition_key])

            case node
            when Arel::Nodes::Join #Arel::Nodes::OuterJoin, Arel::Nodes::RightOuterJoin, Arel::Nodes::FullOuterJoin
              node.right.expr = node.right.expr.and(enforcement_clause)
            when Arel::Nodes::SelectCore
              if node.wheres.empty?
                node.wheres = [enforcement_clause]
              else
                node.wheres[0] = enforcement_clause.and(node.wheres[0])
              end
            else
              raise "UnknownContext"
            end
          end
        end
      end

      arel
    end
  end
end

@lfittl
By now, i decide to patch the bug not using the FIND method.
Instead, the WHERE method does it right:
@user = User.where(id: params[:id]).first
If on the future you improve the bug, let me now, thanks!

Hi,
we have same issue in the application. What I found is that ActiveRecord uses cached version of the query. Query contains id of previous tenant if you have changed tenant between calls of find or find_by.
Method which is responsible for caching is ActiveRecord::Core#cached_find_by_statement. It is called by ActiveRecord::Core#find and ActiveRecord::Core#find_by.
We also have another problem which has same roots such as cached query or part of it. Problem appears when model includes has_one association. If current tenant has been changed when call of object.relation returns nil, because wrong tenant_id is used.
In this case ActiveRecord caches association scope query and then reuses it. Method which is responsible for this is ActiveRecord::AssociationReflection#association_scope_cache. It is called by ActiveRecord::Associations::SingularAssociation#find_target.
Workaround to this problem is to avoid caching by defining scope for a association, for example has_one :item, ->(owner) { where(tenant: owner:tenant) }.
@lfittl, do you think it is possible to fix these problems? If I understand it correctly current way of injecting tenant_id` doesn't allow to bypass caching built into ActiveRecord.

@kolo I do think its possible to fix these, but it requires time to investigate, so might have to wait a little bit (likely anywhere between 3-6 weeks) in terms of availability on my end.
Feel free to dive into the code yourself. The first step would be to get a reproducible test case into the test suite, so we can work against that.

Hi, are there any update this? We have same(find/find_by) issue

Hey, are there any updates for this issue?

@tgezginis @askn No update since I haven't had time to look into this, unfortunately.
Help is welcome though, most of the work in the query rewriter (https://github.com/citusdata/activerecord-multi-tenant/blob/master/lib/activerecord-multi-tenant/query_rewriter.rb) has been contributed by other community members like you :)

For those following, it's worth looking at @Aquai's work here: https://github.com/citusdata/activerecord-multi-tenant/pull/37
Thanks @Aquai!

Also, to add if someone is using friendlyID they can then do something similar which doesn't keep the previous account in cache and works with slugs.
def set_user
    @user = User.where(account_id: current_user.account.id).friendly.find(params[:id])
  end

Hello, we've hit this issue as well and have switched to acts_as_tenant as a workaround.
Would you consider adding a warning in the readme with a link to this issue until it is fixed? This bug is quite severe and should probably prevent anyone from using this in production until it is fixed. It resulted in tenant data being mixed in a response from our backend, thankfully caught in testing.
Thank you for all the hard work, I know how difficult it is to get multi-tenancy right!

A fix for this has been merged into master (https://github.com/citusdata/activerecord-multi-tenant/commit/2faa4fa4124b2741c7f26ca7ab866c673ec74f2f) and needs testing.
For those of you who currently have activerecord-multi-tenant integrated and experienced this issue, could you run a test of the current master?
I'm planning to make a new release in the next few days, thanks everyone for the patience on this.

I believe I am hitting the same issue (which has just become apparent due to there actually being multiple tenants interleaved on my service).
I've pulled from master and it looks to have corrected the issue.  I'll try to be a little more scientific about my testing tomorrow and confirm.  Thanks for the fix @lfittl
Would be good to hear from others.

So for the record, the patch in master is working very well for me!  I'm running a Rails 5.2.1 application.
Here is the issue before pulling from master (for anybody else trying to identify it):
# request 1 - safari - organization_id = 3
 CACHE Organization Load (0.0ms)  SELECT  "organizations".* FROM "organizations" WHERE "organizations"."id" = $1 LIMIT $2  [["id", 3], ["LIMIT", 1]]
 User Load (1.0ms)  SELECT  "users".* FROM "users" WHERE "users"."organization_id" = 3 AND "users"."id" = $1 LIMIT $2  [["id", 3], ["LIMIT", 1]]

# request 2 - chrome - organization_id = 2
  Organization Load (8.6ms)  SELECT  "organizations".* FROM "organizations" WHERE "organizations"."id" = $1 LIMIT $2  [["id", 2], ["LIMIT", 1]]
User Load (0.5ms)  SELECT  "users".* FROM "users" WHERE "users"."organization_id" = 3 AND "users"."id" = $1 LIMIT $2  [["id", 70], ["LIMIT", 1]]

In the chrome request it has cached the "organization_id" = 3 from the previous request.  When debugging, current_organization is correctly showing 3, and any queries with where are also working correctly.
This happens when calling update_attributes for a class with multi_tenant :organization set (in this example it is the opposite, the actual organization id is 3 but the cache has 2).
(byebug) food.update_attributes(food_params)
   (0.6ms)  BEGIN
  ↳ (byebug):1
  Topic Load (0.5ms)  SELECT  "toppings".* FROM "toppings" WHERE "toppings"."id" = $1 LIMIT $2  [["id", 630], ["LIMIT", 1]]
  ↳ (byebug):1
  User Load (0.5ms)  SELECT  "users".* FROM "users" WHERE "users"."organization_id" = 2 AND "users"."id" = $1 LIMIT $2  [["id", 3], ["LIMIT", 1]]
  ↳ (byebug):1
   (0.3ms)  ROLLBACK
  ↳ (byebug):1
false
(byebug) current_organization.id
3

Net is I can easily reproduce this scenario with 0.9.0 but cannot with master.
So +1 @lfittl

@krsyoung Excellent, thanks for the confirmation!
Barring any other issues, looking into making a release this week.

@lfittl Looks like this still hasn't been released?  This is a major blocker for continued work on our application if we are going to continue relying on this gem.

@wadetandy Thanks for the feedback - you are correct that this hasn't been released yet - but there is no reason not to make a release now.
Just to confirm, the branch is working well for you I assume?

Yes, just verified the master fixes all the issue as a temporary way to unblock this!

@wadetandy Version 0.10.0 has been released now - thanks for your patience!

I believe this issue is resolved now, in my understanding. Please re-open if you think this is still an issue in the last released version (0.10.0).


aarch64 binaries require glibc 2.27+

xref: https://github.com/conda-forge/cutensor-feedstock/blob/180a5cbedc913850e5cb1a4ba1c095a7002d9118/recipe/run_test.sh#L10-L14
This wasn't detected until now, because of the same reason discovered elsewhere: https://github.com/conda-forge/cuquantum-feedstock/pull/47#issuecomment-1700751650. Now that we switch to the non-CUDA image for CUDA 12 builds, it gets exposed.
We should add run_constrained: __glibc >= 2.27 when the infra is ready.

It seems cuTENSOR 2.0 for ppc64le needs at least glibc 2.22 (https://github.com/conda-forge/cutensor-feedstock/pull/50#issuecomment-1821342814).

Cross-linking to CUDA Toolkit CentOS 7 deprecation issue ( https://github.com/conda-forge/cuda-feedstock/issues/28 ), which this depends on

Closed by #62