attach process in container error: "libasyncProfiler.so: No such file or directory"

I am running a java application(tomcat) inside the container and jattach on the host. but when I run sudo -E bash -x ./profiler.sh -d 10 22491 （22491 is tomcat pid in the host machine）, error is :
(According to a method from issues/245)
$ sudo -E bash -x ./profiler.sh -d 10 22491

/home/vagrant/.../async-profiler/build/jattach 22491 load /home/vagrant/.../async-profiler/build/libasyncProfiler.so true start,file=/tmp/async-profiler.37876.22491,,log=/tmp/async-profiler-log.37876.22491
Connected to remote JVM
JVM response code = -1
/home/vagrant/eBPF/tools_study/profile_tools/java_perf_map_test/async-profiler/build/libasyncProfiler.so was not loaded.
/home/vagrant/eBPF/tools_study/profile_tools/java_perf_map_test/async-profiler/build/libasyncProfiler.so: cannot open shared object file: No such file or directory

$ sudo -E strace -s999 /home/vagrant/.../async-profiler/build/jattach 22491 load /home/vagrant/.../async-profiler/build/libasyncProfiler.so true start,file=/tmp/async-profiler.37876.22491,,log=/tmp/async-profiler-log.37876.22491

...
write(3, "start,file=/tmp/async-profiler.37876.22491,,log=/tmp/async-profiler-log.37876.22491\0", 84) = 84
read(3, "-1\n/home/vagrant/.../async-profiler/build/libasyncProfiler.so was not loaded.\n/home/vagrant/.../async-profiler/build/libasyncProfiler.so: cannot open shared object file: No such file or directory\n", 8191) = 288
write(1, "JVM response code = -1\n/home/vagrant/.../async-profiler/build/libasyncProfiler.so was not loaded.\n/home/vagrant/.../async-profiler/build/libasyncProfiler.so: cannot open shared object file: No such file or directory\n", 308JVM response code = -1
/home/vagrant/.../async-profiler/build/libasyncProfiler.so was not loaded.
/home/vagrant/.../async-profiler/build/libasyncProfiler.so: cannot open shared object file: No such file or directory
) = 308
read(3, "", 8192)                       = 0

from the troubleshooting, I check .so dir owner:
$ ls -l /home/vagrant/.../async-profiler/build/
-rw-rw-r-- 1 root root   3727 May 31 11:54 async-profiler.jar
-rw-rw-r-- 1 root root  41538 May 31 11:54 converter.jar
-rwxrwxr-x 1 root root  22672 May 31 11:54 fdtransfer
-rwxrwxr-x 1 root root  35416 Jun  1 08:12 jattach
-rwxrwxrwx 1 root root 342632 May 31 11:54 libasyncProfiler.so

and tomcat also run in root:
root@b6ba2363c4a0:/usr/local/tomcat# ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.3  2.6 4668316 108408 ?      Ssl  07:55   0:22 /usr/local/openjdk-11/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

my env
Linux ubuntu-impish 5.13.0-44-generic #49-Ubuntu SMP Wed May 18 13:28:06 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
async-profiler git commit: `58a3cb0d252a115cbb0ec55d3073ddc068d7022b`
tomcat：9.0 # run in container

I think the biggest reason may be that the JVM process in the container cannot find the .so file on the host due to rootFS isolation, although the user is the same.How to solve this problem? need to copy it into a container? I would be very grateful if you could help me :)

To load async-profiler, the target JVM process needs to access libasyncProfiler.so by the same path as on the host.
Start a container with a bind mount like
-v /path/to/async-profiler:/path/to/async-profiler
Alternatively, you may copy libasyncProfiler.so into the container.

To load async-profiler, the target JVM process needs to access libasyncProfiler.so by the same path as on the host. Start a container with a bind mount like -v /path/to/async-profiler:/path/to/async-profiler
Alternatively, you may copy libasyncProfiler.so into the container.

thx reply!  But after I copied the .so file to the container, the following error was reported because the glibc version of the host and the container were different:
error:
./libasyncProfiler.so was not loaded.
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./libasyncProfiler.so)

# host
$ ldd --version
ldd (Ubuntu GLIBC 2.35-0ubuntu3) 2.35

# in the container
$ ldd --version
ldd (Debian GLIBC 2.31-13+deb11u3) 2.31
$ ldd libasyncProfiler.so
./libasyncProfiler.so: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./libasyncProfiler.so)
./libasyncProfiler.so: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./libasyncProfiler.so)
	linux-vdso.so.1 (0x00007fff441f7000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7e9b530000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7e9b516000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7e9b351000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7e9b20d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f7e9b750000)

and then，I recompile(Modified the Makefile) the libasyncProfiler.so file using the rpath parameter of the corresponding container：
$ g++ -O3 -fno-omit-frame-pointer -fvisibility=hidden -Wl,-z,defs -Wl,-z,nodelete -Wl,-rpath,/usr/local/tomcat/osfiles ...
$ sudo chrpath build/libasyncProfiler.so
build/libasyncProfiler.so: RUNPATH=/usr/local/tomcat/osfiles

and then,  I also copy /lib/x86_64-linux-gnu/libc.so.6 file(host) into the container working diretory /usr/local/tomcat/osfiles
$ sudo docker cp /lib/x86_64-linux-gnu/libc.so.6 b6ba:/usr/local/tomcat/osfiles
$ sudo docker cp build/libasyncProfiler.so b6ba:/usr/local/tomcat

check link int the contianer:
$ ldd libasyncProfiler.so
	linux-vdso.so.1 (0x00007ffda2e3b000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f25a6311000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f25a62f7000)
	libc.so.6 => /usr/local/tomcat/osfiles/libc.so.6 (0x00007f25a60cf000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f25a5f8b000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f25a652e000)

it become well. But when I run profile.sh, the error is the same:
Connected to remote JVM
JVM response code = -1
./libasyncProfiler.so was not loaded.
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./libasyncProfiler.so)

Failed to inject profiler into 22491

Does the JVM read dynamic links in a different way than ldd? how can I solve this problem😂

Did you try binaries from the releases page? I believe they should work both in your container and on the host. The clue is those releases were built with an old enough toolchain, so there is no dependency on a new version of GLIBC.

@johnaohara Setting PROFILER env variable right in front of profiler.sh command already solves the problem, but I don't mind an extra script option, too. So please go ahead and create a PR. I would only prefer a shorter name for an option (e.g. --lib instead of --library). Thanks.

Did you try binaries from the releases page? I believe they should work both in your container and on the host. The clue is those releases were built with an old enough toolchain, so there is no dependency on a new version of GLIBC.

Thank you very much! I solved the problem using a compiled executable file in release.

@johnaohara Setting PROFILER env variable right in front of profiler.sh command already solves the problem, but I don't mind an extra script option, too. So please go ahead and create a PR. I would only prefer a shorter name for an option (e.g. --lib instead of --library). Thanks.

Would you consider adding support in the profiler.sh to determine if attach's process is in the container and then help the user copy it to the container and delete it after execution？

@xwjahahahaha I thought about this - indeed, it makes sense to automate passing the shared library to a containerized application. I'll get back to this question when converting profiler.sh to a native binary.
@johnaohara Added --lib option to customize path to the profiler library.


Tap on the content area to expand/collapse ?

hi, firstly thanks for this component.
Is it possible to set it up so that the content area (in my case will be <Text> of different heights per ListView row) can be tapped - and this will trigger expanding and collapsing the <Collapsible> element ?

@ajonno Instead of passing in a <Text> component you can pass in a <Touchable> to wrap your text and then change the collapsed value with the onPress

Closing this as inactive as there's been no activity for over 30 days. If the problem re-occurs on the latest version of react-native-collapsible then ping me to reopen or create a new issue.


Ready to land. Waiting for the build to turn green.


Admin panel does not work?

I have just installed version 1.3.3, went to my website, admin folder, logged in with "admin" username and password, then got a page as shown.
There are no tabs. Nothing. Is this a bug? Have I done something wrong?
Note, I have a shared account, host is omnis.com
Snapshot of admin window:
http://barryk.org/easy/batflat-admin.png
Regards,
Barry

Hi,
Turn on the dev mode in inc/core/defines.php and see if you get any error.

Hi,
OK, turned on dev mode.
In the black side panel, get this:

Notice: Undefined index: nav in
/webroot/b/k/bkauler001/bkhome.org/www/batflat/admin/tmp/index.html on
line 35
Warning: Invalid argument supplied for foreach() in
/webroot/b/k/bkauler001/bkhome.org/www/batflat/admin/tmp/index.html on
line 35
In the main white part of the window, get this:

Notice: Undefined variable: module in
/webroot/b/k/bkauler001/bkhome.org/www/batflat/admin/tmp/index.html on
line 81
Notice: Undefined variable: module in
/webroot/b/k/bkauler001/bkhome.org/www/batflat/admin/tmp/index.html on
line 82
Regards,
Barry Kauler
On 8/15/17, Sruu.pl<EMAIL_ADDRESS>wrote:

Hi,
Turn on the dev mode in inc/core/defines.php and see if you get any error.
--
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
https://github.com/sruupl/batflat/issues/6#issuecomment-322420689

Try install Batflat on another host, then copy inc/data/database.sdb to your website. I think some data is not properly installed.


Release 3.23.2

Fix: rename Collectibles to NFTs (#3768)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 1 (0.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.01%) to 35.842%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/routes/safe/container/index.tsx
0
1
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
-0.01%

Covered Lines:
3489

Relevant Lines:
8819

💛  - Coveralls


TabBarOptions -> pressOpacity does not work

Current Behavior
Following the docs does not produce the expected results.
The option pressOpacity is completely ignored. On press, the tab does not change opacity
I grep'd the repo for the keyword pressOpacity and received zero results. It seems like the functionality is missing entirely.
Expected Behavior
The tab should change opacity onPress
Your Environment

software
version

react-navigation
1.0.0-beta.11

react-native
0.43.1

node
7.6.0

npm or yarn
4.5.0

The reason you're not finding any results is because you're searching in the wrong directory. TabBarTop returns a TabBar component from the 'react-native-tab-view' package. If you grep there you'll get results.

Eriks-Air:react-native-tab-view erik$ grep -r pressOpacity .
./README.md:- pressOpacity - opacity for pressed tab (iOS and Android < 5.0 only)
./src/TabBar.js:  pressOpacity?: number,
./src/TabBar.js:    pressOpacity: TouchableItem.propTypes.pressOpacity,
./src/TabBar.js:                  pressOpacity={this.props.pressOpacity}
./src/TouchableItem.js:  pressOpacity?: number,
./src/TouchableItem.js:    pressOpacity: PropTypes.number,
./src/TouchableItem.js:    const { style, pressOpacity, pressColor, borderless, ...rest } = this.props;
./src/TouchableItem.js:          activeOpacity={pressOpacity}

I assume you're testing this on Android only or does it also happen on iOS? What OS version are you testing on?


Packet loss between WSL2 container and host

Environment
Microsoft Windows NT 10.0.19041.0
Ubuntu 20.04
Linux version 4.19.104-microsoft-standard (oe-user@oe-host) (gcc version 8.2.0 (GCC)) #1 SMP Wed Feb 19 06:37:35 UTC 2020

Steps to reproduce
From Linux run ping or mtr against the IP of Windows. Observe for 5 minutes.

Expected behavior
No packet loss.

Actual behavior
2-3% packet loss.
                                 My traceroute  [v0.93]
X1Gozdala (<IP_ADDRESS>)                                     2020-07-03T10:26:50+0200
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                               Packets               Pings
  Host                                        Loss%   Snt   Last   Avg  Best  Wrst StDev
  1. <IP_ADDRESS>                              2.1%   243    0.5   0.4   0.2   1.2   0.1
  2. <IP_ADDRESS>                             1.7%   242    0.3   0.4   0.3   1.4   0.1

ifconfig -a on Linux:
root@X1Gozdala:~# ifconfig -a
bond0: flags=5122<BROADCAST,MASTER,MULTICAST>  mtu 1500
        ether 36:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

dummy0: flags=130<BROADCAST,NOARP>  mtu 1500
        ether 26:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet <IP_ADDRESS>  netmask <IP_ADDRESS>  broadcast <IP_ADDRESS>
        inet6 fe80::xxx:xxxx:xxxx:xxxx  prefixlen 64  scopeid 0x20<link>
        ether 00:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
        RX packets 112969  bytes 161271354 (161.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 33617  bytes 2237958 (2.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet <IP_ADDRESS>  netmask <IP_ADDRESS>
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

sit0: flags=128<NOARP>  mtu 1480
        sit  txqueuelen 1000  (IPv6-in-IPv4)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0```

ipconfig on Windows:
Ethernet adapter vEthernet (Default Switch):

   Connection-specific DNS Suffix  .  :

Ethernet adapter vEthernet (WSL):

   Connection-specific DNS Suffix  .   Tried mtr for 30 minutes and even a flood ping. Excellent submission though, thank-you. This could explain #4946 and maybe #5069, if in some cases the ip frame drop rate was high enough rather than 2-3%.
For the data point, what is the loss you get with a flood ping:
$ sudo ping -f <host ipv4 addr>

I can't reproduce it with ping -f (tried 2 times for 2 minutes). However, did a tcpdump on the Linux side with straight ping x1gozdala.dom, together with tcpdump -i eth0 icmp -s0 -w packet-loss.pcap in the other console. It seems that the ICMP packets are not sent at all:
ping x1gozdala.dom:
PING x1gozdala.dom (<IP_ADDRESS>) 56(84) bytes of data.
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=1 ttl=127 time=0.367 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=2 ttl=127 time=0.542 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=3 ttl=127 time=0.422 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=4 ttl=127 time=0.395 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=5 ttl=127 time=0.410 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=6 ttl=127 time=0.345 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=7 ttl=127 time=0.394 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=8 ttl=127 time=0.430 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=9 ttl=127 time=0.351 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=10 ttl=127 time=0.404 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=11 ttl=127 time=0.400 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=12 ttl=127 time=0.546 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=13 ttl=127 time=0.390 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=14 ttl=127 time=0.259 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=15 ttl=127 time=0.594 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=16 ttl=127 time=0.410 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=17 ttl=127 time=0.550 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=18 ttl=127 time=0.575 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=19 ttl=127 time=0.247 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=20 ttl=127 time=0.411 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=21 ttl=127 time=0.269 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=22 ttl=127 time=0.406 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=23 ttl=127 time=0.294 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=24 ttl=127 time=0.416 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=25 ttl=127 time=0.340 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=26 ttl=127 time=0.443 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=27 ttl=127 time=0.531 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=28 ttl=127 time=0.410 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=29 ttl=127 time=0.387 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=30 ttl=127 time=0.386 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=31 ttl=127 time=0.287 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=32 ttl=127 time=0.501 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=33 ttl=127 time=0.364 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=34 ttl=127 time=0.268 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=35 ttl=127 time=0.535 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=36 ttl=127 time=0.393 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=37 ttl=127 time=0.402 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=40 ttl=127 time=0.411 ms
64 bytes from X1Gozdala.dom (<IP_ADDRESS>): icmp_seq=41 ttl=127 time=0.575 ms

There is a gap between seq=37 and 40. Pcap shows:

It's driving me mad working on remote SSH hosts (the loss of connectivity for 2-3 seconds is really annoying).
What can I do help you understand this problem?

Ran ping flood a little longer. There is packet loss but much smaller:
gozdal@X1Gozdala:~$ sudo ping -f x1gozdala.dom
PING x1gozdala.dom (<IP_ADDRESS>) 56(84) bytes of data.
..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^C
--- x1gozdala.dom ping statistics ---
5253344 packets transmitted, 5251908 received, 0.027335% packet loss, time 1473859ms
rtt min/avg/max/mdev = 0.078/0.208/27.727/0.268 ms, pipe 8, ipg/ewma 0.280/0.490 ms

not sure if it's relatvd, but i'm seeing the same thing. just started recently:
64 bytes from <IP_ADDRESS>: icmp_seq=59 ttl=64 time=0.852 ms
64 bytes from <IP_ADDRESS>: icmp_seq=60 ttl=64 time=0.981 ms
64 bytes from <IP_ADDRESS>: icmp_seq=106 ttl=64 time=1.05 ms
64 bytes from <IP_ADDRESS>: icmp_seq=107 ttl=64 time=0.938 ms
64 bytes from <IP_ADDRESS>: icmp_seq=108 ttl=64 time=0.749 ms
64 bytes from <IP_ADDRESS>: icmp_seq=109 ttl=64 time=0.964 ms
64 bytes from <IP_ADDRESS>: icmp_seq=110 ttl=64 time=0.781 ms
64 bytes from <IP_ADDRESS>: icmp_seq=111 ttl=64 time=0.631 ms
64 bytes from <IP_ADDRESS>: icmp_seq=112 ttl=64 time=0.974 ms
64 bytes from <IP_ADDRESS>: icmp_seq=113 ttl=64 time=0.663 ms
64 bytes from <IP_ADDRESS>: icmp_seq=114 ttl=64 time=0.861 ms
64 bytes from <IP_ADDRESS>: icmp_seq=115 ttl=64 time=0.845 ms
64 bytes from <IP_ADDRESS>: icmp_seq=154 ttl=64 time=0.964 ms
64 bytes from <IP_ADDRESS>: icmp_seq=155 ttl=64 time=0.763 ms
64 bytes from <IP_ADDRESS>: icmp_seq=156 ttl=64 time=1.02 ms

I think I'm also running into this issue - although I'm seeing ~30% packet loss - totally unusable.
--- <IP_ADDRESS> ping statistics ---
505 packets transmitted, 342 received, +105 errors, 32.2772% packet loss, time 514203ms
rtt min/avg/max/mdev = 6.231/362.228/2123.556/644.623 ms, pipe 4

Also seeing the same behaviour in tcpdump missing the outgoing packets:
10:18:55.021878 IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo request, id 6, seq 480, length 64
10:18:55.034308 IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo reply, id 6, seq 480, length 64
10:19:00.180566 IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo request, id 6, seq 484, length 64 <--- where are 481-483?
10:19:00.180623 IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo request, id 6, seq 485, length 64
10:19:00.193324 IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo reply, id 6, seq 484, length 64

ping -f has lower rate of issues on mine too.
ver output: Microsoft Windows [Version 10.0.19043.1165]

I've just easily reproduced it, pinging github.com from WSLg and PowerShell, both on Win11.
Windows 11, PowerShell, ping -t github.com:

Windows 11, WSLg, ping github.com:

I'm seeing the same on Azure Virtual Desktop with Windows 10 and WSL 2. Any pointers would be appreciated.


Correctness test fails to compile on m2 Mac

Hi,
I would like to compile the correctness tests for clBlas on an m2 Mac. The error I am getting is this:
In file included from /Users/ocl/data/OpenCL/clBLAS-master/src/tests/correctness/blas-lapack.c:28:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/System/Library/Frameworks/Accelerate.framework/Headers/Accelerate.h:20:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/System/Library/Frameworks/Accelerate.framework/Headers/../Frameworks/vecLib.framework/Headers/vecLib.h:62:
/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/System/Library/Frameworks/vecLib.framework/Headers/fortran_blas.h:27:5: error: conflicting types for 'icamax_'
int icamax_(int *n, void *cx, int *incx)
    ^
/Users/ocl/data/OpenCL/clBLAS-master/src/tests/correctness/blas-lapack.h:1213:5: note: previous declaration is here
int icamax_(int *n, complex *x, int *incx);
    ^

Is there workaround for this? The clBlas itself can be compiled and also brew provides an excellent tap for it but would nice to have the tests as well.
Thanks!!!

Hi,
May I recommend putting more energy into CLBLAST since CLBLAS has not been maintained for a long time?
https://github.com/CNugteren/CLBlast
Best wishes,
Jinchuan


Images Not Displaying on Bolt Webpage Despite Correct Directory Placement

Describe the bug
've encountered an issue where images, specifically a logo (md-logo.svg) and a personal photo (michael-dudenko.jpg), do not display on my webpage built using Bolt. I followed the given instructions to place these files in the /public/images/ directory and ensured the component paths are correct, as outlined in the documentation, but they still don’t render on the site.
Link to the Bolt URL that caused the error
https://bolt.new/~/sb1-j5urnm
Steps to reproduce
Save the logo as md-logo.svg in the /public/images directory.
Save the personal photo as michael-dudenko.jpg in the /public/images directory.
Confirm that the images are located at:
/public/images/md-logo.svg
/public/images/michael-dudenko.jpg
Open the webpage and inspect the areas where the images should appear.
Expected behavior
Expected Behavior:
The logo and photo should be displayed on the webpage as specified in the components. The components are set up to use these exact image paths, and the images should load automatically via Vite.
Screen Recording / Screenshot
No response
Platform
Browser name = Chrome
Full version = <IP_ADDRESS>
Major version = 130
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36
performance.memory = {
  "totalJSHeapSize": 57640830,
  "usedJSHeapSize": 54188994,
  "jsHeapSizeLimit":<PHONE_NUMBER>
}
Username = MDSoftware
Chat ID = e987239e9867

Additional context
Actual Behavior:
The images do not display on the webpage. I have attempted multiple solutions, including rechecking the directory paths, reviewing component settings, and trying alternate paths, but without success. Despite following instructions closely, the images remain invisible on the site.
Troubleshooting Steps Taken:
Verified that md-logo.svg and michael-dudenko.jpg are indeed in the /public/images/ directory.
Checked Vite's configuration to ensure it is serving static files correctly.
Verified image paths in component code.
Cleared browser cache and reloaded the page.
Restarted the development server multiple times.
Environment:
Framework: Bolt
File Structure: Standard Bolt project structure
Image File Paths: /public/images/md-logo.svg, /public/images/michael-dudenko.jpg
Additional Context:
This issue has been persistent, despite multiple attempts to resolve it. It's currently blocking the display of important visual elements on my webpage, and assistance would be appreciated to identify any overlooked configuration or caching steps.

Appreciate the feedback! We are aware of this issue and are tracking it here: #1809


Say Please by Teams unsupported.

Check if issue with swaglyrics or whether song lyrics unavailable on Genius.

stripper -> Teams-Say-Please

Not on Genius


Add CI/CD pipeline

Target would be to add a basic CI/CD pipeline to gather early development feedback for future implementations. To achieve this, the following steps could be considered:

[ ] Add prow for the overall PR workflow
[ ] Add CircleCI build and test pipeline

I'd propose CircleCI because I had very good experiences with it in the past. The pipeline abstraction of CircleCI is great and we could utilize the caching and workspace features to speed up builds.
Possible CI jobs would be:

do a debug build
do a release build (produce a build artifact)
run the linter
run the unit tests
run the end-to-end tests for the debug build
run the end-to-end tests for the release build
build the documentation (produce a build artifact)
bundle the release build into a container (produce a build artifact)
push the release container into a registry

A first draft of a working pipeline can be found here. It still misses targets like testing and documentation, but these will be added if the implementation in the corresponding issues is done.

We decided to go for prow and do not implement it on CircleCI.

The prow test pipeline will be added here: https://github.com/kubernetes/test-infra/pull/12656

This is also done for now.


Jade 1.0.21 requires IDF version 5.0.2

Thank you @21_Rue_Satoshi on Twitter for reporting the issue.
https://twitter.com/21_rue_satochi/status/1687802281591246848

Superseded by issue # 25.


UF-274 Plugin Explorer doesn't load: dynamic only beans should be @al…

…ternative to never be avaliable for injection or resolution

+1

master: 91d6244e7e67ce09eb52d5bf833ecfceeb21d1c1


Fix #218

Thank you @montmorill. We typically add a regression test (some code that used to fail prior to the fix, but passes after the fix). The test can just be a few lines added to e.g. this function.
Would you mind adding such a test?


Restructure headings

Why these changes are being introduced:
We currently have two issues with our heading structure:

Multiple h1 tags, which is not recommended.
Each result title is an h2, which is no longer semantically correct as the results list now has an h2 tag at the top.

Relevant ticket(s):

GDT-293

How this addresses that need:
This changes the site_title heading from an h1 to an h2, and updates results to use an h3 heading for the record title, and an h4 heading for the search highlights section.
Side effects of this change:
The h1 in the header seems adequate for now, but we might want to iterate on this further if DAS feels otherwise during accessibility testing.
Developer
Accessibility

[x] ANDI or WAVE has been run in accordance to our guide.
[ ] This PR contains no changes to the view layer.
[ ] New issues flagged by ANDI or WAVE have been resolved.
[ ] New issues flagged by ANDI or WAVE have been ticketed (link in the Pull Request details above).
[x] No new accessibility issues have been flagged.

New ENV

[ ] All new ENV is documented in README.
[ ] All new ENV has been added to Heroku Pipeline, Staging and Prod.
[x] ENV has not changed.

Approval beyond code review

[ ] UXWS/stakeholder approval has been confirmed.
[ ] UXWS/stakeholder review will be completed retroactively.
[x] UXWS/stakeholder review is not needed.

Additional context needed to review
N/A
Code Reviewer
Code

[ ] I have confirmed that the code works as intended.
[ ] Any CodeClimate issues have been fixed or confirmed as
added technical debt.

Documentation

[ ] The commit message is clear and follows our guidelines
(not just this pull request message).
[ ] The documentation has been updated or is unnecessary.
[ ] New dependencies are appropriate or there were no changes.

Testing

[ ] There are appropriate tests covering any new functionality.
[ ] No additional test coverage is required.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 99.456%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
548

Relevant Lines:
551

💛  - Coveralls


enable pdf export and automatically upload to ipfs

adding support to export to pdf, so it's easier to read offline (e.g. Kindle) and automatically update to ipfs

Wow, this is awesome. Let me test this locally.

Ok sweet, just need to resolve the last merge conflicts and we can get this merged (might be easiest to simply remove yarn.lock and regenerate it). Thank you! This is sick.

yeah, currently on mobile, will resolve tomorrow
great job the book!

yeah, currently on mobile, will resolve tomorrow
great job the book!

No rush at all, it's still a work in progress but starting to ramp back up again :-) Hit me with an ETH address and I'll send you a contributor NFT!

@smartcontracts conflicts managed, ready to go!
here my ENS: emiliano.eth


Share Link Button Update

link icon --> Invite button + {link icon}
Updated Share Room Notification to "Share link copied to clipboard"

Refer to #319 for copy change suggestion


How do I know which model is trained for ner?

In ner model code, there are four model classes. how do i know which model is trained? like Bert or Roberta?

@zephyrwang https://github.com/heartexlabs/label-studio-transformers/blob/master/models/ner.py#L458 --- probably it's 'bert', because it's by default here.

thx! I found the location in the code where it sets 'bert' as default.


all issues seen so far with iris, major and minor

level of severity  |     what the issue is, explanation and what happens  |     equipment (hardware) and tested versions
major or minor   |                                                                                |    my hardware: radeon wx5100 on mesa 21.2.6 drivers
|     ryzen9 5950x. java 17 azul jdk
| version for test 1:  fabric api 0.46.4   indium 1.0.2-alpha2
| sodium 0.4.0 alpha 6 build 14,      iris 1.2.0-pre,
| immersive portals: 1.2.5
minor                  |  portal overlay (vanilla texture thingy)                         |    see specs above
doesnt render when shaders are on
minor                  | shadows dont properly propagate through portals     |   see specs above

The iris compat issues has been descibed in the wiki https://qouteall.fun/immptl/wiki/Miscellaneous#iris-compatibility
About the cross-portal-shadow: it's not being considered because it's hard to implement.

perfect we got it all in the wiki


Save and Discard button missing in Edit Dashboards.

When I choose the edit dashboard option, I can edit the dashboard, add new charts and delete charts. However, I see no save or discard button.
The version I use is 2.1.0

Earlier I used  latest tag in the docker image and the version was 0.0.0-dev and I could see the save and discard button.
But now I've changed the version to 2.1.0, there is no edit or discard button.

Getting the Same Issue also draft and publish also not working.

What roles are affected by this - admin, alpha, gamma, etc?

@sfirke Admin role ws affected by this.

An admin user on a clean install of 2.1.0 should see those buttons.  I wonder if something broke when you went from latest back to 2.1.0?  @Gurbrinder0031 , did you come to 2.1.0 from a latest or other version?

@sfirke I went from latest to version 2.1.0

I met the same problem when I went from latest to 2.1.0 as well, after removing all volumes, a clean version can work.

@lulucici Thanks

Is there a solution for this aside from removing all volumes?
I did the same. I went from latest to 2.1.0 and the save button disappeared.

Also looking for a solution to this. Started using latest tagged Docker image, couldn't login from an external wifi network after portforwarding 8088 on the Superset host, downgraded to 2.1.0 and now I can log in but not change my Dashboards. Fml

Facing same issue with 2.1.0, Is it fixed in newer versions?

I'm not sure if this is still an issue in current versions of Superset (3.x). If it is, we can re-open this, or feel free to open a new issue with updated context and a reproducible case using example data. We're no longer supporting Superset 2.x or prior, and it's been a while since this thread saw any activity, so I'm closing this as stale.


Link broken

I can't find the SSO article cited in Readme: https://docs.auth0.com/sso/single-sign-on
What is the correct link to the article?

I found the document by changing it to https://auth0.com/docs/sso/single-sign-on
But the sample doesn't work.


can't see scrollbar with SSR

Hello, I've used this package a lot so far and it worked very well.
But, it is the first time with SSR.
Currently, I am facing specific rendering issue, so I am wonder if it's an issue of the package itself.

When I removed margin values, both default scrollbar and custom scrollbar were displayed.

How can I resolve this issue?
Thanks

I am not sure what the problem was. Should it work well with default implementation without any customization?
Anyways, it was resolved when I tried to insert content wrapper with custom styling -- (margin-right: -18px).


tensor lost shape info after tf.math.unsorted_segment_*

Please make sure that this is a bug. As per our
GitHub Policy,
we only address code/doc bugs, performance issues, feature requests and
build/installation issues on GitHub. tag:bug_template
System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Linux Ubuntu 16.04
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: n/a
TensorFlow installed from (source or binary): binary
TensorFlow version (use command below): 2.6.0
Python version: Python 3.8.5
Bazel version (if compiling from source): n/a
GCC/Compiler version (if compiling from source): n/a
CUDA/cuDNN version: 11.1/n/a
GPU model and memory: GeForce GTX 1070 8117MiB

You can collect some of this information using our environment capture
script
You can also obtain the TensorFlow version with:

TF 1.0: python -c "import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)"
TF 2.0: python -c "import tensorflow as tf; print(tf.version.GIT_VERSION, tf.version.VERSION)"

Describe the current behavior
Describe the expected behavior
Contributing

Do you want to contribute a PR? (yes/no): no
Briefly describe your candidate solution(if contributing):

Standalone code to reproduce the issue
Provide a reproducible test case that is the bare minimum necessary to generate
the problem. If possible, please share a link to Colab/Jupyter/any notebook.
import tensorflow as tf
import numpy as np

class M1(tf.keras.Model):
    def __init__(self, **kwargs):
        super(M1, self).__init__(**kwargs)
        self.fc = tf.keras.layers.Dense(units=1)

    @tf.function
    def call(self, inputs, training=None):
        x, y, z = inputs
        x = tf.math.unsorted_segment_sum(x, tf.squeeze(y), z)
        return self.fc(x)

class M2(tf.keras.Model):
    def __init__(self, **kwargs):
        super(M2, self).__init__(**kwargs)
        self.fc = tf.keras.layers.Dense(units=1)

    @tf.function
    def call(self, inputs, training=None):
        x, y, z = inputs
        x = tf.math.segment_sum(x, tf.squeeze(y))
        return self.fc(x)

def gen():
    for _ in range(1024):
        offset = np.random.randint(1, 10, size=1024)
        y = np.repeat(np.arange(1024), offset)
        z = 1024
        x = np.random.rand(offset.sum(), 32)
        yield (x, y, z), np.random.rand(1024)

ds = tf.data.Dataset.from_generator(
    gen,
    output_signature=((tf.TensorSpec(shape=(None, 32), dtype=tf.float64),
                      tf.TensorSpec(shape=(None, ), dtype=tf.int64),
                      tf.TensorSpec(shape=[], dtype=tf.int32)),
                       tf.TensorSpec(shape=(None, ), dtype=tf.float64))
)

m1, m2 = M1(), M2()
m1.compile(loss=tf.keras.losses.MeanSquaredError(),
           optimizer=tf.keras.optimizers.Adagrad())
m2.compile(loss=tf.keras.losses.MeanSquaredError(),
           optimizer=tf.keras.optimizers.Adagrad())
# tf.math.segment_* is OK
m2.fit(ds, epochs=8)
# tf.math.unsorted_segment_* FAILED
m1.fit(ds, epochs=8)

Other info / logs Include any logs or source code that would be helpful to
diagnose the problem. If including tracebacks, please include the full
traceback. Large logs and files should be attached.
Traceback (most recent call last):
File "/tmp/pycharm_project_124/python/test/dev.py", line 54, in
m1.fit(ds, epochs=8)
File "/usr/local/miniconda3/lib/python3.8/site-packages/keras/engine/training.py", line 1184, in fit
tmp_logs = self.train_function(iterator)
File "/usr/local/miniconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py", line 885, in call
result = self._call(*args, **kwds)
File "/usr/local/miniconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py", line 933, in _call
self._initialize(args, kwds, add_initializers_to=initializers)
File "/usr/local/miniconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py", line 759, in _initialize
self._stateful_fn._get_concrete_function_internal_garbage_collected(  # pylint: disable=protected-access
File "/usr/local/miniconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 3066, in _get_concrete_function_internal_garbage_collected
graph_function, _ = self._maybe_define_function(args, kwargs)
File "/usr/local/miniconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 3463, in _maybe_define_function
graph_function = self._create_graph_function(args, kwargs)
File "/usr/local/miniconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 3298, in _create_graph_function
func_graph_module.func_graph_from_py_func(
File "/usr/local/miniconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py", line 1007, in func_graph_from_py_func
func_outputs = python_func(*func_args, **func_kwargs)
File "/usr/local/miniconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py", line 668, in wrapped_fn
out = weak_wrapped_fn().wrapped(*args, **kwds)
File "/usr/local/miniconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py", line 994, in wrapper
raise e.ag_error_metadata.to_exception(e)
ValueError: in user code:
/usr/local/miniconda3/lib/python3.8/site-packages/keras/engine/training.py:853 train_function  *
    return step_function(self, iterator)
/tmp/pycharm_project_124/python/test/dev.py:14 call  *
    return self.fc(x)
/usr/local/miniconda3/lib/python3.8/site-packages/keras/engine/base_layer.py:1030 __call__  **
    self._maybe_build(inputs)
/usr/local/miniconda3/lib/python3.8/site-packages/keras/engine/base_layer.py:2659 _maybe_build
    self.build(input_shapes)  # pylint:disable=not-callable
/usr/local/miniconda3/lib/python3.8/site-packages/keras/layers/core.py:1175 build
    raise ValueError('The last dimension of the inputs to `Dense` '

ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.

Process finished with exit code 1

@sonogoto
Please refer to similar error issue and let us know:link,link2

@sonogoto Please refer to similar error issue and let us know:link,link2

I do not think it is the same issue with link2 since there is no broadcast operation in my code at all.

@sonogoto
Does link1 help.

@sonogoto Does link1 help.

I'm afraid not

Was able to reproduce your issue in Tensorflow 2.7, please find the gist here. Thanks!

Was able to reproduce your issue in Tensorflow 2.7, please find the gist here. Thanks!

It was

Hi,
Thank you for opening this issue. Since this issue has been open for a long time, the code/debug information for this issue may not be relevant with the current state of the code base.
The Tensorflow team is constantly improving the framework by fixing bugs and adding new features. We suggest you try the latest TensorFlow version with the latest compatible hardware configuration which could potentially resolve the issue. If you are still facing the issue, please create a new GitHub issue with your latest findings, with all the debugging information which could help us investigate.
Please follow the release notes to stay up to date with the latest developments which are happening in the Tensorflow space.

Hi,
Thank you for opening this issue. Since this issue has been open for a long time, the code/debug information for this issue may not be relevant with the current state of the code base.
The Tensorflow team is constantly improving the framework by fixing bugs and adding new features. We suggest you try the latest TensorFlow version with the latest compatible hardware configuration which could potentially resolve the issue. If you are still facing the issue, please create a new GitHub issue with your latest findings, with all the debugging information which could help us investigate.
Please follow the release notes to stay up to date with the latest developments which are happening in the Tensorflow space.


bare minimum update to build for python3

modified print statements to print functions. Builds fine on my machine.

Hey James,
We're actually going to make a separate 2.7 and 3.0 builds for python stattleship.  So in the next couple of days i'm going to make a new python 3 repo which you can commit your changes to.  Does this sound good?

Adam,
Thanks for the heads up! I'll keep an eye out for it.
--
James
On Mon, May 2, 2016 at 11:14 AM, Adam Jenkins<EMAIL_ADDRESS>wrote:

Hey James,
We're actually going to make a separate 2.7 and 3.0 builds for python
stattleship. So in the next couple of days i'm going to make a new python 3
repo which you can commit your changes to. Does this sound good?
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/stattleship/stattleship-python/pull/2#issuecomment-216263691

@AdamMJenks Let's keep a single repository, but maintain separate branches - a 2.7 and 3.0.
master should be the current branch in development.
Having two repo's will make it much more difficult to merge in changes as well as keep the functionality similar.
I know i have Python 2.7 by default on my mac, so would the be the version most people would use?

My fault, I was thinking in my head two branches (not two repos).  It depends, most people I know still use 2.7 as there has never been a hard conversion

According to 2to3 (output here), the changes aren't that difficult. I can make the changes if you have a branch I can make pull requests to.

I just made a Stattleship-Python(v3) branch if you wanted to pull off of that branch


Buggy behavior in the mobile menu (FF)

Two issue pop up when using the mobile menu of the docs site in Firefox on Android:

The hamburger button seems intermittently unresponsive to taps
Occasionally closing the menu results in a null page

See the following screen recording:
https://github.com/threlte/threlte/assets/20320695/ae45c8ef-7606-48a1-bb49-6e13bc93d042

The menu burger button seems to be broken after navigation, which is probably a side effect of the experimental Astro page transitions. @jerzakm if you have time on your hand, can you check that? I can also look into it but probably not before end of next week.

Since #556 is merged, can this be closed now?


'Add More Participants' quick action

Critical Changes
Changes

Add a quick action to Service Schedule to fire the Add Participants component.

Issues Closed
New Metadata
Deleted Metadata
Definition of Done
Refer to Asteroids DoD document to see any additional details for the items below

[x] Place holder data is incorporated (Refer to Case Management Sample Data document)
[ ] Base axe-core JEST test included for any new LWC (No critical violations)
[x] CRUD/FLS is enforced in Apex
[x] Permission sets & field sets are updated to account for CRUD/FLS/TABS for new object metadata
[x] All modified classes are unit tested (Apex) at 100% coverage
[x] UX approval or UX not necessary
[x] PR contains draft release notes
[x] Attach work item to the pull request with Lurch **Lurch:attach W-000000 or **Lurch:add
[ ] All acceptance criteria have been met

[x] Developer
[ ] Code Reviewer
[ ] QA

[ ] QE story level testing completed

W-8141116


Fixes release tarbomb

Packages it similar to how bitcoin release does it, avoids making a tarbomb.

Nice, looks good to me!


UB in inline-asm delay function

UB in higher opt levels with inline-asm feature, caused by forgotten asm clobber in asm::delay function.
Example fix:
asm!("1:
      nop
      subs $0, $$1
      bne.n 1b"
      : "+r"(_n / 4 + 1)
      :
      :
      : "cpsr" // <= Added here
      : "volatile");

Oh, you need to clobber the status register explicitly? That seems very easy to forget, we should audit all asm for this.

I've done an audit of all occurrences of asm! I could find in rust-embedded and this is the only instance I found which updates the condition flags. Should the fix be cpsr or cc clobber?

cspr should be the right one since it's the name of the register containing the condition flags on ARM. cc is some GCC architecture independent magic name to indicate the register holding the condition flags, but I'm not even sure it's universally applicable to non-GCC inline assembly...


UIINREACH-36: Configure FOLIO Libraries and Shelving Locations to INN-Reach Locations Mapping - create/edit backend integration

removed metadata
made the Save button disabled after a successful request
updated field values when changing the central server
removed unexpecting LoadingPane component loading
changed paths for library and location mappings

Test errors found. See https://jenkins-aws.indexdata.com/job/folio-org/job/ui-inn-reach/job/PR-32/1/

yarn run v1.22.5
$ eslint ./ && stylelint "src/**/*.css"
/home/jenkins/workspace/folio-org_ui-inn-reach_PR-32/project/src/settings/routes/FolioToInnReachLocations/FolioToInnReachLocationsCreateEditRoute.test.js
313:7   warning  Unexpected console statement  no-console
313:72  error    Missing semicolon             semi
315:7   warning  Unexpected console statement  no-console
315:73  error    Missing semicolon             semi
317:7   warning  Unexpected console statement  no-console
317:73  error    Missing semicolon             semi
✖ 6 problems (3 errors, 3 warnings)
3 errors and 0 warnings potentially fixable with the --fix option.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Test errors found. See https://jenkins-aws.indexdata.com/job/folio-org/job/ui-inn-reach/job/PR-32/2/


Created new login-link interface.

Created an awu-login-link component to prompt the user for an interface.
Fixed the login-link worker to run in the worker environment properly
(jsonwebtoken doesn't work).  Wired up and verified to work correctly.

Obsolete. https://go.awu.fyi/payment


Alignment issue when opening select2 dropdown.

Here is the tested page,
https://jsfiddle.net/skumaresan/47skokg5/

JQuery Version: 3.1.0
Select2 Version : 4.0.3

It would appear that your example was actually using jQuery 1.x and Select 4.0.0.  This problem appears to be resolved as of Select2 4.0.4 and jQuery 2.2.4.  See https://jsfiddle.net/47skokg5/2/


Not working on Laravel 9

Laravel Framework 9.4.1 output after =>
composer require appzcoder/crud-generator --dev
Using version ^3.2 for appzcoder/crud-generator
./composer.json has been updated
Running composer update appzcoder/crud-generator
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - appzcoder/crud-generator v3.2.0 requires illuminate/support ^5.3|^6.0|^7.0 -> found illuminate/support[v5.3.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev] but these were not loaded, likely because it conflicts with another require.
    - appzcoder/crud-generator[v3.2.1, ..., v3.2.2] require illuminate/support ^5.3|^6.0|^7.0|^8.0 -> found illuminate/support[v5.3.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev, v8.0.0, ..., 8.x-dev] but these were not loaded, likely because it conflicts with another require.
    - Root composer.json requires appzcoder/crud-generator ^3.2 -> satisfiable by appzcoder/crud-generator[v3.2.0, v3.2.1, v3.2.2].

You can also try re-running composer require with an explicit version constraint, e.g. "composer require appzcoder/crud-generator:*" to figure out if any version is installable, or "composer require appzcoder/crud-generator:^2.1" if you know which you need.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

I think this is more or less the same issue as #266

Close issue due to duplication of #266


Spaces in string values not returned via select

Enclosed is one way of handling output involving string values with spaces:
Suppose "entries" contains first and last names ( see example).  In order to select these, store the strings with underscore separators, and then use select/3 with pipe, map and regex.replace to substitute space for the underscores.
Example:
 entries = [
     {{:names, 0}, "fn0_ln0"},
     {{:names, 1}, "fn1_ln1"},
     {{:names, 2}, "fn2_ln2"}
  ]

def selectEntries do
   {:ok, db} = CubDB.start_link("test.db")

CubDB.select(db,
  min_key: {:names, 0},
  max_key: {:names, 2},
  pipe: [
    map: fn {_key, value} ->
      Regex.replace ~r{[_]}, value, " " # replace "_" with a space
    end
    ])
end

Implementation mistake: not an issue.
Working with the library again shows that my workaround was unnecessary.


Changing postgres_data_dir caused postgres service startup to fail

Is this a request for help?: NO

Is this a BUG REPORT or FEATURE REQUEST? (choose one): BUG REPORT
Which installer:
Postgres
Which product and version (eg: ansible & collection version - 7.24.2):
ansible 2.12.6
jfrog.platform 10.6.2
Which operating system and version(eg: ubuntu & version - 20.4):
RHEL 8.6
What happened:
I changed postgres_data_dir to /data/postgres/data.
The platform created the database in the new location and set PGDATA to the correct location in /etc/profile.d/postgres.sh.
However, the postgresql-13 service failed to start because the following line in /usr/lib/systemd/system/postgresql-13.service was left unchanged.
Environment=PGDATA=/var/lib/pgsql/13/data/

Error:
ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)

/usr/pgsql-13/bin/postgresql-13-check-db-dir /var/lib/pgsql/13/data
"/var/lib/pgsql/13/data" is missing or empty.
Use "/usr/pgsql-13/bin/postgresql-13-setup initdb" to initialize the database cluster.

What you expected to happen:
The database should come up pointing at the correct location for PGDATA.
How to reproduce it (as minimally and precisely as possible):
Change the value of postgres_data_dir to anything other than default.
Anything else we need to know:
Removing the Environment= line from /usr/lib/systemd/system/postgresql-13.service does not fix it.  Apparently, is must be changed.

Another option is to remove the ExecStartPre line and modify the ExecStart line to remove the -D $PGDATA option.

Yet another option could be to use systemctl set-environment PGDATA=????.  This would override the PGDATA setting in the service file.  No need to change the service file.

@cdalessio0131 Thanks for reporting ! Sorry missed this , let us check and come back

Systemd has its own way, shell scripts won't help you. Systemd is configured with unit files. The one for PostgreSQL comes with the package. If you need to override the PGDATA environment variable with a custom value like in your postgresql_data_dir, then the role needs to "Drop-In" a systemd override and run systemctl daemon-reload.

The bug is fixed in a PR open since March 29th.
https://github.com/jfrog/JFrog-Cloud-Installers/pull/279

Closed via https://github.com/jfrog/JFrog-Cloud-Installers/pull/292


Enhancement: Redesign checkout functionality of Branch dashboard

This PR depends on #713 It is merged

The checkout new branch and checkout remote branch functions are combined.

The cursor is set a the newly checkout branch.

close #371 close #608

The maintainers of this repo require that all pull request submitters agree and adhere to the following:

[x] I have read and agree to the contribution guidelines.
(required)
[x] All related documentation has been updated to reflect the changes made. (required)
[x] My commit messages are cleaned up and ready to merge. (required)

The maintainers of this repository require you to select the semantic version type that
the changes in this pull request represent.  Please select one of the following:

[ ]  major
[ ]  minor
[x]  patch
[ ]  documentation only

I agree. The change is not entirely breaking the old functionality.

Does it work just to change the checkboxes now?
Should I add the release notes?

Changing the check box should work. It will be great if you can prepare the release note.

Btw, should the next release also include #728 and #739?

Yes, I will go through them now.


alpha version for review

High-level description
What features does this change enable? What bugs does this change fix?
Corresponding DC/OS tickets (required)

DCOS-ID JIRA title / short description.

Related tickets (optional)

DCOS-ID JIRA title / short description.

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[ ] Change log from the last version integrated (this should be a link to commits for easy verification and review): example
[ ] Included a test which will fail if code is reverted but test is not. If there is no test please explain.
[ ] Test Results: [link to CI job test results for component]
[ ] Code Coverage (if available): [link to code coverage report]

Content of this PR has been integrated via a separate dev branch. So, cancelling it.


Add Elastic Cloud support

It appears I may have done this by accident!

https://github.com/elastic/apm-agent-ios/pull/36/commits/910bfc46c7bd8ea03a25d5534275f8e193fb50d5


Cylinder-cylinder intersection appears wrong

To reproduce, change the IntersectCylinders sample according to the following diff:
diff --git a/GTE/Samples/Intersection/IntersectCylinders/IntersectCylindersWindow3.cpp b/GTE/Samples/Intersection/IntersectCylinders/IntersectCylindersWindow3.cpp
index 99e384f5..7e566283 100644
--- a/GTE/Samples/Intersection/IntersectCylinders/IntersectCylindersWindow3.cpp
+++ b/GTE/Samples/Intersection/IntersectCylinders/IntersectCylindersWindow3.cpp
@@ -153,16 +153,16 @@ void IntersectCylindersWindow3::CreateScene()

     // Create the cylinders.
     mCylinder[0].axis.origin = { 0.0f, 0.0f, 0.0f };
-    mCylinder[0].axis.direction = { 1.0f, 1.0f, 1.0f };
+    mCylinder[0].axis.direction = { 0.0f, 0.0f, 1.0f };
     Normalize(mCylinder[0].axis.direction);
     mCylinder[0].radius = 1.0f;
     mCylinder[0].height = 2.0f;

-    mCylinder[1].axis.origin = { 0.0, 0.0, 1.5 };
-    mCylinder[1].axis.direction = { 3.0, 2.0, 1.0 };
+    mCylinder[1].axis.origin = { 4.0, 0.0, 0.0 };
+    mCylinder[1].axis.direction = { 0.0, 0.0, 1.0 };
     Normalize(mCylinder[1].axis.direction);
-    mCylinder[1].radius = 0.125;
-    mCylinder[1].height = 1.0;
+    mCylinder[1].radius = 1.4142136;
+    mCylinder[1].height = 7.0;

     // Create bases for use by Translate(...) and Rotate(...).
     std::array<Vector3<float>, 3> basis{};

Start the program, zoom out a bit and rotate camera so that both cylinders are visible
Rotate the second (blue/larger) cylinder using 'p'

Notice that an intersection is flagged (color change to cyan/magenta) before the cylinders actually intersect:

I will investigate this. Thank you for taking the time to report the issue!

This will take some time. Your failure case occurs in the SeparatedByOtherDirection function. This function has a couple of divisions by 0, so I need to read through my PDF to determine whether the algorithm is flawed or whether it is correct but the implementation is flawed.

Hi David, thanks for the library and for investigating!

Equation (16) in Intersection of Cylinders is incorrect. The last term is the length of Delta but it needs to be the absolute value of Dot(Delta,D). The current code did not take advantage of the convexity of f(x,y); the PDF has the convexity discussion because I had planned on replacing the code by a numerical minimizer that takes advantage of the convexity. In the end, the current code has sampling of lines in the "pole plane". The origin of the lines had the division by zero (a bug).
Given the sampling, I am rewriting the code to directly sample directions on the hemisphere described in the PDF. Initial tests indicate this works correctly. I have some more testing to do before posting the code. It should be ready by tomorrow. I will then rewrite the PDF.

Always so fast to react 👍👍
Le lun. 23 déc. 2024 à 21:24, David Eberly @.***> a
écrit :

Equation (16) in Intersection of Cylinders
https://www.geometrictools.com/Documentation/IntersectionOfCylinders.pdf
is incorrect. The last term is the length of Delta but it needs to be the
absolute value of Dot(Delta,D). The current code did not take advantage of
the convexity of f(x,y); the PDF has the convexity discussion because I had
planned on replacing the code by a numerical minimizer that takes advantage
of the convexity. In the end, the current code has sampling of lines in the
"pole plane". The origin of the lines had the division by zero (a bug).
Given the sampling, I am rewriting the code to directly sample directions
on the hemisphere described in the PDF. Initial tests indicate this works
correctly. I have some more testing to do before posting the code. It
should be ready by tomorrow. I will then rewrite the PDF.
—
Reply to this email directly, view it on GitHub
https://github.com/davideberly/GeometricTools/issues/99#issuecomment-2560257294,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AG3BAQKS62BS6KSHDAS7C732HBWQRAVCNFSM6AAAAABT7HPOOSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNRQGI2TOMRZGQ
.
 I posted the modified code. I also modified the IntersectCylinders sample application to start with your cylinders and camera parameters, so you may test this quickly without having to modify the cylinders in the sample. I need to update the mathematics in the PDF because equation (16) was wrong, and the ensuing derivation depends on f(x,y) defined by that equation. I will leave the issue open in case you find other problems in the short term. Thanks again for reporting the bug!

I will assume for now the issue is resolved. If necessary, re-open the issue if more problems occur.


Let players create NPCs

PCs can hire hirelings. Some optional gear packages come with animal companions that behave like hirelings. We should allow the creation and management of NPCs for players using same or similar interface for GMs.
Otherwise, we could let GMs control NPCs entirely. This may be the best option for now.

For now I would let only GM control NPCs as it is currently tied too tightly within the Game view as a whole. NPCs were originally only meant as GMs equivalent to players' characters.
We could in the future potentially add a separate simplifed view for something like hirelings (maybe similar to how Monsters work in 5E but accessible to everyone).

Closed in favor of letting GMs control NPCs. Possible planned feature for hirelings.


Add memory and disk container metrics

https://trello.com/c/yLIHCoT6/739-paas-prometheus-exporter-memory-and-disk-metrics

Follows the same pattern as the already existing CPU metric
Ensures all percentages are 0 decimal places to match existing behaviour of the paas-metric-exporter (CPU was not)
removes unneeded run function calls as the appWatcher is run by default when it is created in our tests

One bit of behaviour not copied from the paas-metric-exporter is the ability to handle 0 value memory and disk quotas as things seem to work without it (https://github.com/alphagov/paas-metric-exporter/blob/master/processors/container_metric_processor.go). Not sure if this is something we should actually be doing though so looking for a second opinion on this.
Paired with the one and only @JonathanHallam

Thanks for your review Ken.
I've actioned all your smaller comments. Let me know what you think.
In regards to test output, we haven't changed anything about the behaviour, it was doing this before so I'd be keen on not trying to change anything on it as part of this PR if thats OK?

I think the thing that this test changes is adding more tests which adds more output. What was tolerable with a small number of tests is becoming noisier. Worth seeing if we can hide or redirect log output in tests?


I want to train and object detect quickly.

Hi everyone,
I want to train and object detect quickly. Even if the accuracy is a little lower.
So I want to reduce the structure of net (vgg or resnet), but I do not know where to fix it.
How can I change the structure of net?
And when I train with vgg model, it doesn't print train process
like this resnet50:
1/2 [==============>...............] - ETA: 17s - rpn_cls: 2.6665 - rpn_regr: 0.0272 - detector_cls: 0.6931 - detector_regr: 0.4040
How can I display train process with vgg net?
Thanks.

Hello,
If you want to know where are the net config files, everything is stored in resnet.py in the keras_frcnn folder. You have the nn_base function which is the common part between the RPN and the classifier and classifier_layers and rpn functions for the ending part of each.
Concerning the train process, I believe it is printed from keras.utils.generic_utils module in the lines :
	progbar = generic_utils.Progbar(epoch_length)

progbar.update(iter_num, [('rpn_cls', np.mean(losses[:iter_num, 0])), ('rpn_regr', p.mean(losses[:iter_num, 1])), ('detector_cls', np.mean(losses[:iter_num, 2])), ('detector_regr', np.mean(losses[:iter_num, 3]))])

Hope it answered your questions !

Hi Heidisnaps and ftiguidou,
Could you share what annotation tools (if any) you were using for your custom datasets and how the simple_parser.py could be used in getting the ROI?
Thank you so much for the help.

Hi thealchemist89,
I did not use any annotation tool as my dataset was already labeled, sorry ^^'. The simple_parser is not directly used for getting the ROI, its goal is only to get the data and to parse it. If you want to know how is used the simple_parser, you have to write a txt file in which each line correspond to one of your pictures according to this format : filepath,x1,y1,x2,y2,class_name
This is explained in the README.
For getting the ROI, I suggest you to have a look at the roi_helpers.py. This scripts is used for calculating the IoU and turning the area proposed by the RPN net to ROI according to config parameters.
Hope it helped !

Hi ftiguidou,
Thanks for your reply! I was thinking of using a image annotation tool that outputs in a format that could be tweaked to follow: filepath, x1,y1,x2,y2,class_name.
I will follow up from your suggestions! May I also ask, how do you train your customized dataset on-top of the pre-train model(ResNet/VGG)? Which part of the code allows us to remove the top layer and inject our dataset in?
Thanks for your time and help again!

Hi. @ftiguidou
Thanks for your answer.
I tried to change the code in resnet.py. Especially, I tried to change the 'nn_base' code.
I put a '#' in front of the code to reduce the convolution layer.
But it was an error.
How can I reduce the number of convolution layers without error?
Can I simply reduce the number of convolution layers by modifying the resnet.py code?
`
def nn_base(input_tensor=None, trainable=False):
# Determine proper input shape
if K.image_dim_ordering() == 'th':
    input_shape = (3, None, None)
else:
    input_shape = (None, None, 3)

if input_tensor is None:
    img_input = Input(shape=input_shape)
else:
    if not K.is_keras_tensor(input_tensor):
        img_input = Input(tensor=input_tensor, shape=input_shape)
    else:
        img_input = input_tensor

if K.image_dim_ordering() == 'tf':
    bn_axis = 3
else:
    bn_axis = 1

x = ZeroPadding2D((3, 3))(img_input)

x = Convolution2D(64, (7, 7), strides=(2, 2), name='conv1', trainable = trainable)(x)
x = FixedBatchNormalization(axis=bn_axis, name='bn_conv1')(x)
x = Activation('relu')(x)
x = MaxPooling2D((3, 3), strides=(2, 2))(x)

x = conv_block(x, 3, [64, 64, 256], stage=2, block='a', strides=(1, 1), trainable = trainable)
x = identity_block(x, 3, [64, 64, 256], stage=2, block='b', trainable = trainable)
x = identity_block(x, 3, [64, 64, 256], stage=2, block='c', trainable = trainable)

x = conv_block(x, 3, [128, 128, 512], stage=3, block='a', trainable = trainable)
x = identity_block(x, 3, [128, 128, 512], stage=3, block='b', trainable = trainable)
x = identity_block(x, 3, [128, 128, 512], stage=3, block='c', trainable = trainable)
x = identity_block(x, 3, [128, 128, 512], stage=3, block='d', trainable = trainable)

**#x = conv_block(x, 3, [256, 256, 1024], stage=4, block='a', trainable = trainable)
#x = identity_block(x, 3, [256, 256, 1024], stage=4, block='b', trainable = trainable)
#x = identity_block(x, 3, [256, 256, 1024], stage=4, block='c', trainable = trainable)
#x = identity_block(x, 3, [256, 256, 1024], stage=4, block='d', trainable = trainable)
#x = identity_block(x, 3, [256, 256, 1024], stage=4, block='e', trainable = trainable)
#x = identity_block(x, 3, [256, 256, 1024], stage=4, block='f', trainable = trainable)**

return x`

You cannot just change the network by removing layers. In your case, you are changing the output shape of the nn_base network, if you do that, you need to adapt the other networks (coming after the nn_base) that use this output as an input.

@ftiguidou thanks for answer.


Flush outgoing content before sending EOF message

Fixes #42
This adds a Flush() method on win32File, and calls it on CloseWrite() just before sending the 0-length EOF message.
This makes sure that the 0-length message is not collapsed into the previous message, and that functions like io.Copy() do correctly receive an io.EOF error and completes instead of hanging.
The first commit introduces a test that hangs, the second fixes the issue (and makes the test pass)
This was identified, qualified and fixed by @dgageot and me

ping @jstarks PTAL 👍

@jstarks @thaJeztah This is really important for Docker for Windows. Please TAL

/cc @jhowardmsft

@jstarks @jhowardmsft @darrenstahlmsft we need your review on this 👼 Right now we use a patch version of this to fix some issues with docker4windows but it would be way better if it was fixed upstream 👼 🙏


#1165 Fix handling of file delete in ProjectManager

Issue #1165: The issue is that if you select a directory and some files inside of it for deletion, it would throw an exception trying to delete the files inside the directory. This is because the directory and all its files will get deleted first, and then it will attempt to delete the files that no longer exist, causing the exception.
The fix is to make the deletion smarter by parsing the paths and ignoring all files that are included in a directory about to be deleted.

Maybe @SlavaRa and some other people can take a look into this before I do?

I will look tonight


feature: support spring boot actuator

[ ] I have registered the PR changes.
Support Spring boot actuator(Only support check database connection yet)

Check Url: http://localhost:7091/actuator/health

Ⅱ. Does this pull request fix one issue?
fixes #4671
Ⅲ. Why don't you add test cases (unit test/integration test)?
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

application.raft.example.yml should also be supplemented

fixed


Script can now run all latest tools on any debian system

Test once, before even thinking of merge :)

Working on some final tests! Thanks for this big contribution @maverickNerd


[exporter] MyBB

need a dump

May I ask what the status of this exporter is?

The exporter has not been updated to the latest version of nodebb but should still be in a working state. Have recently used it to migrate a forum over

https://github.com/ASCIIcat/nodebb-plugin-import-mybb

@Radiergummi
install the correct version of NodeBB, read this here
https://github.com/akhoury/nodebb-plugin-import#works-with-nodebb-v06x-last-tested-against-37235557bba1a582dfd845aea13d4ca22ffcc746


feat: Block common exploits in Security

Type of Change

Tool Source: Security

What issue does this relate to?
Related to #353
What should this PR do?
This PR adds an option in the Security tab for blocking common exploits.
Config can be found here
What are the acceptance criteria?

note: I had trouble linting this even with prettier disabled on my side. I'll be happy to fix it with the right instructions

👋 Would it be possible for you to revert all the unrelated formatting changes in here -- it makes the diff very difficult to parse.

hey Matt! I had trouble linting as I mentioned above. Is the linting rules + command not supposed to work properly?

👀 The linting should definitely be working properly, the CI is able to run it just fine. It's just regular eslint + stylelint.

The diff here certainly looks like you've run prettier against it, which isn't tooling this project uses.

I have manually reverted styling changes made to previously existing code.
Linting simply does not work for me, I run the command and although no errors are printed, it doesn't change the formatting. It doesn't work on my windows machine or mac, even with prettier completely disabled, or even on Codespaces

What do you mean by "it doesn't change the formatting"? Are you running test:eslint, or test:eslint:fix? Eslint will only fix things that it thinks are violations -- it's not like prettier where it formats your entire project into one very specific style (unless you configure all the rules to do that)

What do you mean by "it doesn't change the formatting"? Are you running test:eslint, or test:eslint:fix? Eslint will only fix things that it thinks are violations -- it's not like prettier where it formats your entire project into one very specific style (unless you configure all the rules to do that)

Initially test:eslint:fix but I spend some time trying to figure out why this is happening (cause I just wanted to meet the project's styling) and tried all of them too.

Here's a screenshot of what happens when I run test:eslint to detect violations and then test:eslint:fix

Yah, looks to be running just fine then, eslint sees no violations.

I'm not sure that most if not all of these rules are appropriate for this tool or of much immediate or long-term value. These rules appear to be a copy/paste of stuff that has been floating around for a decade or more and could introduce many more issues than they solve, especially with the query string blocking of certain words. A quick google search shows these same rules in a thread from 2013 found here: https://serverfault.com/questions/563248/nginx-security-vs-conditionals?rq=1. Who knows exactly how old these rules are, that's just what I found on the frnt page of the search results. To say they are outdated would likely be a tremendous understatement.
Some of the blocked query strings in the "Block spam" section include gems such as huronriveracres, troyhamby, and sandyauer. Google returns absolutely nothing of value for any of those strings that would suggest the need to block them for all users. My best guess is that a decade or so ago, a single server admin was trying to stop some very specific text from his website and shared these rules someplace where it got passed down as sacred lore that all users should employ, which it is not. It's possible that these specific words are actually just placeholders too, who knows. All I know is that blocking them is useless and makes zero sense. Many of the other strings include common words that not all users would wish to block and may not skim through the code enough to realize what they've done. These words include medical terms such as ejaculation, impotence, libido, and erectile. While these words may be common in spammers trying to leave comments on blogs, they are also medical terms that can have that can have legitimate usage on a variety of websites.
The rules to "Block SQL Injections", "Block file injections", and "Block common exploits" are so dangerous to just blindly enable everything as they most definitely will break things on modern web application. Totally inappropriate for inclusion here.
The "Block user agents" rules are no better as they are wildly out of date. This is useless stuff.
It is my opinion that this tool is not the correct place for such generic rules to be employed, as there are existing software solutions that will do a much better job at keeping things safe, secure, and most importantly up-to-date without breaking stuff. My suggestion is that this pull request be denied. At the very least, every single rule should be heavily vetted against current web software such as WordPress, as it would not surprise me at all to hear that some of these rules break more things than they fix.

MattIPv4 Please refer to this comment. This PR should not be implemented IMO.

https://github.com/digitalocean/nginxconfig.io/pull/388#issuecomment-1264958298

@MattIPv4 Please refer to this comment. This PR should not be implemented IMO.
#388 (comment)

Hi there! Matt wouldn't be able to miss the wall of text you've sent here even if he wanted to.
Also on a personal note, I would very much appreciate your input during the "issue" phase (issue #353) before anyone allocates personal time to implement it. Thanks!

@MattIPv4 Please refer to this comment. This PR should not be implemented IMO.
#388 (comment)

Hi there! Matt wouldn't be able to miss the wall of text you've sent here even if he wanted to.
Also on a personal note, I would very much appreciate your input during the "issue" phase (issue #353) before anyone allocates personal time to implement it. Thanks!

Copy and pasting rules that you found on the web when that you seemingly haven't even bothered to review is not ideal or appropriate for a widely used application such as this. I'd love to hear your justification for the text in the query string blocks. Why did you include terms such as ypxaieo, unicauca, huronriveracres, sandyauer, and troyhamby? We both know why, you didn't look at them for even a second. The rules in this entire PR is not vetted at all, which is why I had to write a wall of text to try to prevent them from being blindly included in a very good application.

@MattIPv4 Please refer to this comment. This PR should not be implemented IMO.
#388 (comment)

Hi there! Matt wouldn't be able to miss the wall of text you've sent here even if he wanted to.
Also on a personal note, I would very much appreciate your input during the "issue" phase (issue #353) before anyone allocates personal time to implement it. Thanks!

Copy and pasting rules that you found on the web when that you seemingly haven't even bothered to review is not ideal or appropriate for a widely used application such as this. I'd love to hear your justification for the text in the query string blocks. Why did you include terms such as ypxaieo, unicauca, huronriveracres, sandyauer, and troyhamby? We both know why, you didn't look at them for even a second. The rules in this entire PR are not vetted at all, which is why I had to write a wall of text to try to prevent them from being blindly included in a very good application.

Peter, there's absolutely no reason to attack me like that.
Issue #353 has been open for months and you can clearly see it's labeled properly for someone to just pick it and allocate time to implement it. This is why I kindly asked for your input during the "issue" phase next time
This config was not copy pasted randomly from the web, the source is listed, and if you ask me Nginx Proxy Manager is a popular tool.

@MattIPv4 Please refer to this comment. This PR should not be implemented IMO.
#388 (comment)

Hi there! Matt wouldn't be able to miss the wall of text you've sent here even if he wanted to.
Also on a personal note, I would very much appreciate your input during the "issue" phase (issue #353) before anyone allocates personal time to implement it. Thanks!

Copy and pasting rules that you found on the web when that you seemingly haven't even bothered to review is not ideal or appropriate for a widely used application such as this. I'd love to hear your justification for the text in the query string blocks. Why did you include terms such as ypxaieo, unicauca, huronriveracres, sandyauer, and troyhamby? We both know why, you didn't look at them for even a second. The rules in this entire PR are not vetted at all, which is why I had to write a wall of text to try to prevent them from being blindly included in a very good application.

Peter, there's absolutely no reason to attack me like that.
Issue #353 has been open for months and you can clearly see it's labeled properly for someone to just pick it and allocate time to implement it. This is why I kindly asked for your input during the "issue" phase next time
This config was not copy pasted randomly from the web, the source is listed, and if you ask me Nginx Proxy Manager is a popular tool.

And it's totally inappropriate for them to have pushed that .conf live without actually vetting the code. My apologies for not commenting on the issue thread, I just happened to see the PR and was curious as to what was being added and was horrified to see this stuff that's been floating around the internet for a decade.

@PDowney Thank you for your input on this and for voicing your concerns, though as Robert noted, in future, I'd ask that you word things in a way that is less focused on personally attacking someone who was just implementing an ask from an issue with a clear source for what was being implemented.
When this issue was originally filed in the project I'd taken a quick glance at the ask, saw that it was a file already being distributed by the proxy manager project, and so green-lit the issue.
I pulled down this PR last night to start testing the generated config locally and see how aggressive the blocking was, and I am inclined to agree with Peter here that the SQL/Injection blocks are likely to be very dangerous and break things they shouldn't, and some of the other blocks in here are weirdly specific and outdated.
@treboryx thank you for the work you put into this, and sorry that this wasn't caught in the original issue by myself or anyone else. I am going to close this PR out based on the discussion here, but I hope this was at least a useful learning experience for you with contributing to the project, working with eslint, etc. 💙


[New Puppet] PuppetWechat4u - enable by WECHATY_PUPPET=wechat4u

Today, wechaty has only one puppet support: PuppetWeb, which is powered by Selenium WebDriver with Chrome Browser.
PuppetWeb has the following pros and cons:
Advantages

No need to deal with wechaty server API changes. Webdriver puppet never touches the HTTP protocol of wechaty web server API; It uses webdriver to hook angularjs in the browser. So it will never mind the server API change.
Behavior not like a bot. It's very like a user use the browser.

Disadvantages

Memory pig. The browser will eat about 100-500MB memory. After serval hours, the situation will be worse, might over 1GB with an active wechat account which has more contacts, more big rooms.
Complicated configuration. If you had set a headless browser under a Linux server, you would understand what I mean. (It became a bit better after Dockerized: https://github.com/wechaty/wechaty/issues/66)

About Wechat4U
Wechat4U is an excellent wechat bot framework that supports both Node.js & Browser, with rich features and an active community of experienced contributors.
So I believe it's a bright decision to made a new Puppet like PuppetWechat4U, to let wechaty users have the second way to use wechaty: not only by Browser Hook but also by Server API Call.
The Plan
This practice will be a good chance to check the wechaty abstract/base classes(the codes under /src directory),  to start decoupling with the WebDriver and become more robust, more reusable for the future possible PuppetAndroid, PuppetAndroidPad, PuppetIos, PuppetIosPad.
TBD
Reference

Wechat4U v0.5 Update https://github.com/nodeWechat/wechat4u/commit/5d0275e650572a57ea057c8cb1baff803a253b53

Challenge start: finish a new puppet in one night!
Now is June 1 was 10pm.

Start from scratch from 00:00, now is 2:16 am.

Succeed at 1:11 pm!
ding-dong-bot worked with PuppetWechat4u, code had pushed.
$ WECHATY_PUPPET=wechat4u WECHATY_LOG=info DEBUG=* npm run demo

><EMAIL_ADDRESS>demo /home/zixia/chatie/wechaty
> ts-node examples/ding-dong-bot.ts

| __        __        _           _
| \ \      / /__  ___| |__   __ _| |_ _   _
|  \ \ /\ / / _ \/ __| '_ \ / _` | __| | | |
|   \ V  V /  __/ (__| | | | (_| | |_| |_| |
|    \_/\_/ \___|\___|_| |_|\__,_|\__|\__, |
|                                     |___/

=============== Powered by Wechaty ===============
-------- https://github.com/chatie/wechaty --------

I'm a bot, my superpower is talk in Wechat.

If you send me a 'ding', I will reply you a 'dong'!
__________________________________________________

Hope you like it, and you are very welcome to
upgrade me to more superpowers!

Please wait... I'm trying to login in...

13:13:05 INFO Wechaty v#git[1c24bf1] starting...
13:13:05 INFO Wechaty initPuppet() using puppet: wechat4u
  wechat 重启中... +0ms
  follow-redirects options { maxRedirects: 21,
  protocol: 'https:',
  hostname: 'wx.qq.com',
  port: null,
  path:
   '/cgi-bin/mmwebwx-bin/webwxinit?pass_ticket=HVzv4jGSpfn%252F%252BM6SHE3ZR%252BiAZZ5wma7JJQJXaOJKxKm11oNhSM2kT6%252BYKwd56Lfk&skey=@crypt_c117402d_ce0dcad71413fb0db87ccbe3f445b552&r=1091971814',
  method: 'POST',
  headers:
   { Accept: 'application/json, text/plain, */*',
     'user-agent':
      'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36',
     connection: 'close',
     cookie:
      'pgv_pvi=11436618067571104000; pgv_si=s331744187855914500; wxuin=1211516682; wxsid=X5DHlBFELj1Pziyl; wxloadtime=1527915233; mm_lang=zh-CN; webwx_data_ticket=gSd1Qet8FHrlIzQl8uQCfF87; webwxuvid=747895d9dac5a25dd3a78175a5e931d820622c2c2e100257730e529062f992fe7b8677a8b2980f54e6ad283848618766; webwx_auth_ticket=CIsBEMqOnqAMGoABbV0bKSiVjFh4uH1OaLDKlkBrdj0sUYPfjR26FICA+K6SUNLBZE/Xrk3r6M6mpYIFnD6Vwuq7L/tAAovTAZxAwNMGZfEXhaGDFKBX1DL+ck8eDHmtwVax5ZEv7MdtJGy8i76oetciEhh2n++z+ps+/wRvYBZ8iobG/CagXHlSLck=',
     'Content-Type': 'application/json;charset=utf-8',
     'Content-Length': 147 },
  agent: false,
  auth: undefined } +1ms
  wechat 心跳 +2s
  follow-redirects options { maxRedirects: 21,
  protocol: 'https:',
  hostname: 'wx.qq.com',
  port: null,
  path:
   '/cgi-bin/mmwebwx-bin/webwxstatusnotify?pass_ticket=HVzv4jGSpfn%252F%252BM6SHE3ZR%252BiAZZ5wma7JJQJXaOJKxKm11oNhSM2kT6%252BYKwd56Lfk&lang=zh_CN',
  method: 'POST',
  headers:
   { Accept: 'application/json, text/plain, */*',
     'user-agent':
      'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36',
     connection: 'close',
     cookie:
      'pgv_pvi=11436618067571104000; pgv_si=s331744187855914500; wxuin=1211516682; wxsid=X5DHlBFELj1Pziyl; wxloadtime=1527915233; mm_lang=zh-CN; webwx_data_ticket=gSd1Qet8FHrlIzQl8uQCfF87; webwxuvid=747895d9dac5a25dd3a78175a5e931d820622c2c2e100257730e529062f992fe7b8677a8b2980f54e6ad283848618766; webwx_auth_ticket=CIsBEMqOnqAMGoABbV0bKSiVjFh4uH1OaLDKlkBrdj0sUYPfjR26FICA+K6SUNLBZE/Xrk3r6M6mpYIFnD6Vwuq7L/tAAovTAZxAwNMGZfEXhaGDFKBX1DL+ck8eDHmtwVax5ZEv7MdtJGy8i76oetciEhh2n++z+ps+/wRvYBZ8iobG/CagXHlSLck=',
     'Content-Type': 'application/json;charset=utf-8',
     'Content-Length': 354 },
  agent: false,
  auth: undefined } +6ms
{ MsgId: '3971822301789638769',
  FromUserName:
   '@@619a6af1d26cc8cb4f27efba3756da634a79d8565fd44dadb22ef5b728c10752',
  ToUserName:
   '@548e31e461de6823e86c4261fcd5bd5c3b5f99d911dd3b92853893c83be9171b',
  MsgType: 43,
  Content:
   '@5b7fad094cb2b09b91bbf544d02b57b4:\n@859e5247d4ffaed0372f8aa900924b01d11a3f27c2bbb3513c5ef6f37eb76d841f51c97463429b11976df154d8bbe302ee5e939915846ff4b1d40fc94ea747335af430abc2e92a5a96a7fdd957f33334bb4eaac644f1c9a6f7fd4f75b77cccf55dc949b32fc06f6eb218c13f1ad283f4a85414359937d96d80699ad425068ef2448f74c3720ae0414f4b6afaf1d5a0428bb71444fb145a43ac100c9ae05b86006e9bf6454ca13e6f933ee2bfd49876a66570ef155212e889de0cbf299d29f8cdee722495a597fa13d39f3960a481b71fb9f706b3240c8abff5ce3bd3fbbc1863f0de7fba6c04c2e79ed3fc5b4e578280aa4a75f3c96b7f0830545baa8ed9410e1bc7a98b2629e44938099f0c8eebd7b0c9b22dcd1a7857f494bed8f3ca982f3d5098e79fc0adecc0b625a530937e6a03847d3378b5ba27312d062eb5b325cebb580c736b55225e1aaef2b91c779cfdbd094e8cd0cb8ecf0d5157213f001f5e58293b1b37f57fe57f936bae31e65e78789b0e524ea88db429ced06febcb50c5de499eb01d6ada58032316110b5a68390b0d333ab1190ebb4195399bb581a3a8deda3414cc683e4be6caccbfcc7507801a5233d28e8dbcd5adc3e6f2252c402310d2230602815b07ed8692e521b007d18216e99d4096b30fbb43752a2f0bf8a582e06b99ee50dc36648aaa8c864ede4c930dab809f3de34f7ead33c430df3e204099bf2110bd0dc1d548d39a12f43106864cdf4b01ea5b5494a81f3bf83f496465e0c931ec43aa983b2ca3ab3e0c37c6bc4593fb6df958f524e7804ee9a5c377749ce08fb36974be2524c3758294773759ce95e39eb5bf54b5db8ea4c15bfb6b07676371e7dc82ba22c77859efe37753a409c4d7cdad04b8530f2ae4e9af63c4775351ff46bd0d3758dc2054bf6290d7e216eb6e089944724fab71ece7338393b183b0fe1e3d97b5190b36b4bc0daba3c2ba61edac7ae60f7c319845d1cfa91f42e115cf443adaa0d80b45a685c9565ebdeb0d4554fa4b8e9fd3d62b935b82a2f407a8a2aea5c41b60491b18ac07fd44ce1f91d8a2b1385797c27579c4450a2d0bdf38602dd0e2a8376ebb877ba7355a7934ae8dfbafa3ab4883c257e41a4f84bcc1984c0a5b4f94d1e77cc44443ccb70ecaca58dc29fd7f7338344a5e9cb88fa1c63b87630c5c64e3cfcaf27723c05166',
  Status: 3,
  ImgStatus: 1,
  CreateTime:<PHONE_NUMBER>,
  VoiceLength: 0,
  PlayLength: 15,
  FileName: '',
  FileSize: '',
  MediaId: '',
  Url: '',
  AppMsgType: 0,
  StatusNotifyCode: 0,
  StatusNotifyUserName: '',
  RecommendInfo:
   { UserName: '',
     NickName: '',
     QQNum: 0,
     Province: '',
     City: '',
     Content: '',
     Signature: '',
     Alias: '',
     Scene: 0,
     VerifyFlag: 0,
     AttrStatus: 0,
     Sex: 0,
     Ticket: '',
     OpCode: 0 },
  ForwardFlag: 0,
  AppInfo: { AppID: '', Type: 0 },
  HasProductId: 0,
  Ticket: '',
  ImgHeight: 512,
  ImgWidth: 288,
  SubMsgType: 0,
  NewMsgId:<PHONE_NUMBER>789638700,
  OriContent: '',
  EncryFileName: '',
  isSendBySelf: false,
  OriginalContent:
   '@5b7fad094cb2b09b91bbf544d02b57b4:<br/>@859e5247d4ffaed0372f8aa900924b01d11a3f27c2bbb3513c5ef6f37eb76d841f51c97463429b11976df154d8bbe302ee5e939915846ff4b1d40fc94ea747335af430abc2e92a5a96a7fdd957f33334bb4eaac644f1c9a6f7fd4f75b77cccf55dc949b32fc06f6eb218c13f1ad283f4a85414359937d96d80699ad425068ef2448f74c3720ae0414f4b6afaf1d5a0428bb71444fb145a43ac100c9ae05b86006e9bf6454ca13e6f933ee2bfd49876a66570ef155212e889de0cbf299d29f8cdee722495a597fa13d39f3960a481b71fb9f706b3240c8abff5ce3bd3fbbc1863f0de7fba6c04c2e79ed3fc5b4e578280aa4a75f3c96b7f0830545baa8ed9410e1bc7a98b2629e44938099f0c8eebd7b0c9b22dcd1a7857f494bed8f3ca982f3d5098e79fc0adecc0b625a530937e6a03847d3378b5ba27312d062eb5b325cebb580c736b55225e1aaef2b91c779cfdbd094e8cd0cb8ecf0d5157213f001f5e58293b1b37f57fe57f936bae31e65e78789b0e524ea88db429ced06febcb50c5de499eb01d6ada58032316110b5a68390b0d333ab1190ebb4195399bb581a3a8deda3414cc683e4be6caccbfcc7507801a5233d28e8dbcd5adc3e6f2252c402310d2230602815b07ed8692e521b007d18216e99d4096b30fbb43752a2f0bf8a582e06b99ee50dc36648aaa8c864ede4c930dab809f3de34f7ead33c430df3e204099bf2110bd0dc1d548d39a12f43106864cdf4b01ea5b5494a81f3bf83f496465e0c931ec43aa983b2ca3ab3e0c37c6bc4593fb6df958f524e7804ee9a5c377749ce08fb36974be2524c3758294773759ce95e39eb5bf54b5db8ea4c15bfb6b07676371e7dc82ba22c77859efe37753a409c4d7cdad04b8530f2ae4e9af63c4775351ff46bd0d3758dc2054bf6290d7e216eb6e089944724fab71ece7338393b183b0fe1e3d97b5190b36b4bc0daba3c2ba61edac7ae60f7c319845d1cfa91f42e115cf443adaa0d80b45a685c9565ebdeb0d4554fa4b8e9fd3d62b935b82a2f407a8a2aea5c41b60491b18ac07fd44ce1f91d8a2b1385797c27579c4450a2d0bdf38602dd0e2a8376ebb877ba7355a7934ae8dfbafa3ab4883c257e41a4f84bcc1984c0a5b4f94d1e77cc44443ccb70ecaca58dc29fd7f7338344a5e9cb88fa1c63b87630c5c64e3cfcaf27723c05166' }
  follow-redirects options { maxRedirects: 21,
  protocol: 'https:',
  hostname: 'webpush.wx.qq.com',
  port: null,
  path:
   '/cgi-bin/mmwebwx-bin/synccheck?r=1527916396794&sid=X5DHlBFELj1Pziyl&uin=1211516682&skey=@crypt_c117402d_ce0dcad71413fb0db87ccbe3f445b552&deviceid=e726504311449325&synckey=1_679446148%7C2_679450454%7C3_679448912%7C11_679449713%7C201_1527916387%7C203_1527910120%7C1000_1527916093%7C1001_1527894314%7C2001_1527672305',
  method: 'GET',
  headers:
   { Accept: 'application/json, text/plain, */*',
     'user-agent':
      'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36',
     connection: 'close',
     cookie:
      'pgv_pvi=11436618067571104000; pgv_si=s331744187855914500; wxuin=1211516682; wxsid=X5DHlBFELj1Pziyl; wxloadtime=1527915233_expired; mm_lang=zh-CN; webwx_data_ticket=gSd1Qet8FHrlIzQl8uQCfF87; webwxuvid=747895d9dac5a25dd3a78175a5e931d820622c2c2e100257730e529062f992fe7b8677a8b2980f54e6ad283848618766; webwx_auth_ticket=CIsBEMqOnqAMGoABbV0bKSiVjFh4uH1OaLDKlkBrdj0sUYPfjR26FICA+K6SUNLBZE/Xrk3r6M6mpYIFnD6Vwuq7L/tAAovTAZxAwNMGZfEXhaGDFKBX1DL+ck8eDHmtwVax5ZEv7MdtJGy8i76oetciEhh2n++z+ps+/wRvYBZ8iobG/CagXHlSLck=; wxpluginkey=1527916093' },
  agent: false,
  auth: undefined } +9ms
(node:4453) UnhandledPromiseRejectionWarning: Error: from not found
    at PuppetWechat4u.<anonymous> (/home/zixia/chatie/wechaty/src/puppet-wechat4u/puppet-wechat4u.ts:535:17)
    at Generator.next (<anonymous>)
    at fulfilled (/home/zixia/chatie/wechaty/src/puppet-wechat4u/puppet-wechat4u.ts:4:58)
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:4453) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:4453) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
13:13:18 INFO Bot 李卓桓 login

I have a plan that Wechaty switches to use PuppetWechat4u as default puppet in the future version, but this requires the PuppetWechat4u is stable enough for basic operations, at least the same as PuppetPuppeteer.
If anyone is interested in testing PuppetWechat4u with Wechaty v0.17, please check out the latest source code and run the following command to enable wechat4u puppet:
DEBUG=* WECHATY_LOG=silly WECHATY_PUPPET=wechat4u npm start

Please feel free to file issues if you meet any problem, thanks!

Awesome work!

Thank you @seanxlliu .
Did you use wechat4u before?

Never used yet, so I meant the efficiency of this work is very impressive. I would like to contribute to this project too, testing or coding. Just switch to this puppet due to the default puppet's limitation, room contact is incorrect.
However, I just hit some assert failures when using after switching to this one. Maybe it out of date. I am filing a bug now.

Where can I access the source code? Actually what I would like to know is how to use this module together with webchaty? Is there any example code?

You can run wechaty demo with wechaty-puppet-wechat4u by running the following command in this repository:
$ WECHATY_PUPPET=wechaty-puppet-wechat4u WECHATY_LOG=info DEBUG=* npm run demo


[1.3.x] Fix e2e-tests ci and test issues

Description
[1.3.x] Fix e2e-tests ci and test issues
Which issue(s) does this PR fix

Fixes #?

PR acceptance criteria
Please make sure that the following steps are complete:

[ ] GitHub Actions are completed and successful
[ ] Unit Tests are updated and passing
[ ] E2E Tests are updated and passing
[ ] Documentation is updated if necessary (requirement for new features)
[ ] Add a screenshot if the change is UX/UI related

How to test changes / Special notes to the reviewer

/lgtm


Allow proc as :action in cells

Allow the use of a proc for :action in cells
{
   action: -> (arguments, index_path) {
       mp arguments.inspect
   },
   arguments: {
      foo: :bar
   }
}

Can you try this in a table with 300 rows? In my experience, doing this has resulted in very laggy performance for some reason.

I tried https://github.com/bmichotte/ProMotion-tables-procs

2000 lines with proc
reload button reload all the cells

Tested on an iPhone 4s under iOS 7 and a 5s under 8.4, it's really smooth as you can see on https://www.youtube.com/watch?v=Hl-6O2PaaZc (except the reload, but well... reloading 2000 cells...)

(Which is why you should use redpotion PM:: DataTableScreen for anything over 100 or so rows 😊)

:+1:

PM::DataTableScreen is fantastic...if you're using Core Data.
But even thousands of rows can be handled by PM::TableScreen if you keep the data hash lightweight. There's a perception that PM::TableScreen isn't good for data over a few hundred rows, but the reality is that usually performance issues are in how you're handling your custom cells, not how PM::TableScreen serves them up. I should do some performance testing to have some empirical data to point to when this is brought up again.
What I would recommend is to avoid instantiating the lambda 2,000 times and instead reuse the same one, if it doesn't change. I tried it in your example and it worked fine.
  def table_data
    @number ||= 0
    @action_proc ||= -> (args, index_path) {
      mp args: args, index_path: index_path
      app.alert title: 'Hello', message: "Tapped on line #{args[:line]}"
    }

    [{
       cells: (0..2000).map do |line|
         @number += 1
         {
           title: "line #{@number}",
           action: @action_proc,
           arguments: { line: @number }
         }
       end
     }]
  end

I just ran a test with 100,000 rows and PM::TableScreen handled it fine. Memory usage was about 4 MB higher, due to PM hanging onto a bunch of arrays and hashes, but that's pretty reasonable for 100,000 rows.

@jamonholmgren you are totaly right. Adding x procs is a bad idea if they are the same. For a table with 10-15 rows, it's not a problem, even for memory.
After, I think it's more up to the dev to know when to use "inline" procs, class member procs... Or even methods

:+1: Thanks for your work on this, Benjamin.

I forgot to have you add documentation in this PR. I'll add it now.


[BUG] Blog title font doesn't support diacritics

Writing the author Radoica Draškić it has been noted that the font does not include š

(When solving this problem, the name has to be updated in this how-to .)

Moved to the blog repo