[gen2-multiple-devices] Ping was missed, closing the device connection

Luxonis team,
I currently have three POE cameras (2 - OAK-D-POE and 1 - OAK-D-POE-PRO). At an office, I was not able to run the main.py of gen2-multiple-devices. Whenever I run the script, one of three camera gives me "ping was missed, closing the device connection" error. The camera giving me this error changes every run, so it's not happening from one camera.
This is the code I use (main.py): https://github.com/luxonis/depthai-experiments/blob/master/gen2-multiple-devices/main.py
I had a chance to talk with Erik through Discord channel. With his advice, I updated the boot-loader for all three camera, updated depthai version, and even factory reset-ed the three camera. The issue persists.
I swapped the ethernet switch with another one. Also, connected one camera through an ethernet injector. The issue persists.
I brought the three camera (plus ethernet switch) to home and ran the script. It displayed the video stream for 10 seconds and then gave me the disconnection.
I think I have tried everything I can do at this point, but still not sure what causes this issue. I purchased another 8 OAK-D-POE-PRO units recently and I really wish to know how to deal with this error. Could you please help me out?

Hi @miknai ,
What version of depthai (latest: 2.17.3) are you using, and what version of the bootlaoder (latest: 0.20) are your OAK cameras? If they aren't the latest, I would suggest updating them first (python3 -mpip install depthai -U for depthai, device manager for bootlaoder).
Thanks, Erik

All of them are latest ones.

I tried running with only two camera this time (1-OAK-D-POE and 1-OAK-D-POE-PRO). I physically disconnected the other camera. The program displayed two video stream windows as expected, worked fine for about 4 minutes, and then got the "ping was missed..." error.
Found 2 devices
=== Connected to 18443010D1F77B0E00
   >>> MXID: 18443010D1F77B0E00
   >>> Cameras: RGB LEFT RIGHT
   >>> USB speed: UNKNOWN
   >>> Loading pipeline for: OAK-D-POE
=== Connected to<PHONE_NUMBER>92F30F00
   >>> MXID:<PHONE_NUMBER>92F30F00
   >>> Cameras: RGB LEFT RIGHT
   >>> USB speed: UNKNOWN
   >>> Loading pipeline for: OAK-D-POE
[2022-08-16 16:36:09.964] [warning] Monitor thread (device: 18443010D1F77B0E00 [<IP_ADDRESS>]) - ping was missed, closing the device connection
Traceback (most recent call last):
  File "test-multiple-device.py", line 73, in <module>
    in_rgb = q_rgb.tryGet()
RuntimeError: Communication exception - possible device error/misconfiguration. Original message 'Couldn't read data from stream: 'rgb' (X_LINK_ERROR)'

Tried running with only one camera this time (1-OAK-D-POE-PRO). It lasted 15 mins and got crushed due to the same error.
Found 1 devices
=== Connected to 18443010D1F77B0E00
   >>> MXID: 18443010D1F77B0E00
   >>> Cameras: RGB LEFT RIGHT
   >>> USB speed: UNKNOWN
   >>> Loading pipeline for: OAK-D-POE
[2022-08-16 17:18:01.339] [warning] Monitor thread (device: 18443010D1F77B0E00 [<IP_ADDRESS>]) - ping was missed, closing the device connection
Traceback (most recent call last):
  File "test-multiple-device.py", line 73, in <module>
    in_rgb = q_rgb.tryGet()
RuntimeError: Communication exception - possible device error/misconfiguration. Original message 'Couldn't read data from stream: 'rgb' (X_LINK_ERROR)'

In summary,
3 cameras => lasted 10 seconds
2 cameras => lasted 4 minutes
1 camera => lasted 15 mins

Any updates on this? Is this issue not reproducible on your side?

@miknai  Sorry about the delay on our side, let me double-check with the team.

Hi guys, I'm experiencing the same issue.
This is depthai <IP_ADDRESS>.dev+dev, running on a raspberry pi 4, on a docker container with base image luxonis/depthai-library:v<IP_ADDRESS>-armv7
I run 2 oak-1-poe simultaneously from the same raspi, and the problem happens on both cameras.
They had firmware 0.018, but the problem persists after updating both of them to 0.0.20.
This is the error I see: [2022-08-27 12:11:06.162] [#033[33m#033[1mwarning#033[m] Monitor thread (device:<PHONE_NUMBER>73DE0F00 [<IP_ADDRESS>]) - ping was missed, closing the device connection

Here are some logs with debug enabled if it helps:
`[2022-08-27 15:34:45.036] [debug] Python bindings - version: <IP_ADDRESS>.dev+dev from  build: 2022-08-07 12:42:18 +0000
[2022-08-27 15:34:45.036] [debug] Library information - version: 2.17.3, commit:  from , build: 2022-08-07 12:42:08 +0000
[2022-08-27 15:34:45.041] [debug] Initialize - finished
DEPTHAI VERSION: <IP_ADDRESS>.dev+dev
[1243.33760] finished setup 02-front oak
DEPTHAI VERSION: <IP_ADDRESS>.dev+dev
[1243.33940] finished setup 01-back oak
cams setup, starting them
[2022-08-27 15:34:45.063] [debug] Device - OpenVINO version: 2022.1
[2022-08-27 15:34:45.063] [debug] Device - OpenVINO version: 2022.1
[2022-08-27 15:34:45.063] [debug] Device - BoardConfig: {"emmc":null,"gpio":[],"logPath":null,"logSizeMax":null,"logVerbosity":null,"network":{"mtu":0,"xlinkTcpNoDelay":true},"pcieInternalClock":null,"sysctl":[],"uart":[],"usb":{"flashBootedPid":63037,"flashBootedVid":999
,"maxSpeed":4,"pid":63035,"vid":999},"usb3PhyInternalClock":null,"watchdogInitialDelayMs":null,"watchdogTimeoutMs":null}
libnop:
0000: b9 0d b9 05 81 e7 03 81 3b f6 81 e7 03 81 3d f6 04 b9 02 00 01 ba 00 be be bb 00 bb 00 be be be
0020: be be be
[2022-08-27 15:34:45.064] [debug] Device - BoardConfig: {"emmc":null,"gpio":[],"logPath":null,"logSizeMax":null,"logVerbosity":null,"network":{"mtu":0,"xlinkTcpNoDelay":true},"pcieInternalClock":null,"sysctl":[],"uart":[],"usb":{"flashBootedPid":63037,"flashBootedVid":999
,"maxSpeed":4,"pid":63035,"vid":999},"usb3PhyInternalClock":null,"watchdogInitialDelayMs":null,"watchdogTimeoutMs":null}
libnop:
0000: b9 0d b9 05 81 e7 03 81 3b f6 81 e7 03 81 3d f6 04 b9 02 00 01 ba 00 be be bb 00 bb 00 be be be
0020: be be be
[2022-08-27 15:34:45.381] [debug] Resources - Archive 'depthai-bootloader-fwp-0.0.20.tar.xz' open: 7ms, archive read: 334ms
[2022-08-27 15:34:46.423] [debug] Resources - Archive 'depthai-device-fwp-602822fe9eaca68a72c666497dc4979b29291b3e.tar.xz' open: 7ms, archive read: 1377ms
[2022-08-27 15:34:46.578] [debug] Searching for booted device: DeviceInfo(name=<IP_ADDRESS>, mxid=184430101173DE0F00, X_LINK_BOOTLOADER, X_LINK_TCP_IP, X_LINK_MYRIAD_X, X_LINK_SUCCESS), name used as hint only
[2022-08-27 15:34:46.579] [debug] Searching for booted device: DeviceInfo(name=<IP_ADDRESS>, mxid=18443010D162DE0F00, X_LINK_BOOTLOADER, X_LINK_TCP_IP, X_LINK_MYRIAD_X, X_LINK_SUCCESS), name used as hint only
[2022-08-27 15:34:46.821] [debug] Connected bootloader version 0.0.20
[2022-08-27 15:34:46.823] [debug] Connected bootloader version 0.0.20
[2022-08-27 15:35:05.678] [debug] Booting FW with Bootloader. Version 0.0.20, Time taken: 18855ms
[2022-08-27 15:35:05.678] [debug] DeviceBootloader about to be closed...
[2022-08-27 15:35:05.679] [debug] XLinkResetRemote of linkId: (0)
[2022-08-27 15:35:06.908] [debug] DeviceBootloader closed, 1229
[2022-08-27 15:35:07.013] [debug] Searching for booted device: DeviceInfo(name=<IP_ADDRESS>, mxid=184430101173DE0F00, X_LINK_BOOTED, X_LINK_TCP_IP, X_LINK_MYRIAD_X, X_LINK_SUCCESS), name used as hint only
[2022-08-27 15:35:07.495] [debug] Booting FW with Bootloader. Version 0.0.20, Time taken: 20673ms
[2022-08-27 15:35:07.495] [debug] DeviceBootloader about to be closed...
[2022-08-27 15:35:07.495] [debug] XLinkResetRemote of linkId: (1)
[2022-08-27 15:35:08.723] [debug] DeviceBootloader closed, 1227
[2022-08-27 15:35:08.832] [debug] Searching for booted device: DeviceInfo(name=<IP_ADDRESS>, mxid=18443010D162DE0F00, X_LINK_BOOTED, X_LINK_TCP_IP, X_LINK_MYRIAD_X, X_LINK_SUCCESS), name used as hint only
[184430101173DE0F00] [<IP_ADDRESS>] [657.484] [system] [info] Memory Usage - DDR: 0.12 / 340.93 MiB, CMX: 2.05 / 2.50 MiB, LeonOS Heap: 24.96 / 77.58 MiB, LeonRT Heap: 2.88 / 41.37 MiB
[184430101173DE0F00] [<IP_ADDRESS>] [657.484] [system] [info] Temperatures - Average: 28.86 °C, CSS: 30.32 °C, MSS 28.13 °C, UPA: 28.37 °C, DSS: 28.62 °C
[184430101173DE0F00] [<IP_ADDRESS>] [657.484] [system] [info] Cpu Usage - LeonOS 6.86%, LeonRT: 0.56%
[2022-08-27 15:35:10.578] [debug] Schema dump: {"connections":[{"node1Id":4,"node1Output":"bitstream","node1OutputGroup":"","node2Id":5,"node2Input":"in","node2InputGroup":""},{"node1Id":7,"node1Output":"out","node1OutputGroup":"","node2Id":0,"node2Input":"inputControl","
node2InputGroup":""},{"node1Id":0,"node1Output":"still","node1OutputGroup":"","node2Id":4,"node2Input":"in","node2InputGroup":""},{"node1Id":1,"node1Output":"bitstream","node1OutputGroup":"","node2Id":2,"node2Input":"in","node2InputGroup":""},{"node1Id":3,"node1Output":"o
ut","node1OutputGroup":"","node2Id":1,"node2Input":"in","node2InputGroup":""},{"node1Id":0,"node1Output":"isp","node1OutputGroup":"","node2Id":3,"node2Input":"inputImage","node2InputGroup":""}],"globalProperties":{"calibData":null,"cameraTuningBlobSize":null,"cameraTuning
BlobUri":"","leonCssFrequencyHz":700000000.0,"leonMssFrequencyHz":700000000.0,"pipelineName":null,"pipelineVersion":null,"xlinkChunkSize":-1},"nodes":[[0,{"id":0,"ioInfo":[[["","preview"],{"blocking":false,"group":"","name":"preview","queueSize":8,"type":0,"waitForMessage
":false}],[["","video"],{"blocking":false,"group":"","name":"video","queueSize":8,"type":0,"waitForMessage":false}],[["","still"],{"blocking":false,"group":"","name":"still","queueSize":8,"type":0,"waitForMessage":false}],[["","raw"],{"blocking":false,"group":"","name":"r
aw","queueSize":8,"type":0,"waitForMessage":false}],[["","inputConfig"],{"blocking":false,"group":"","name":"inputConfig","queueSize":8,"type":3,"waitForMessage":false}],[["","isp"],{"blocking":false,"group":"","name":"isp","queueSize":8,"type":0,"waitForMessage":false}],
[["","inputControl"],{"blocking":true,"group":"","name":"inputControl","queueSize":8,"type":3,"waitForMessage":false}]],"name":"ColorCamera","properties":[185,23,185,20,0,3,0,185,3,0,0,0,185,5,0,0,0,0,0,185,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,129,104,1,1
29,224,1,255,255,133,0,15,133,112,8,1,136,0,0,240,65,136,0,0,128,191,136,0,0,128,191,0,185,4,0,0,0,0,3,3,4,4,4]}],[1,{"id":1,"ioInfo":[[["","bitstream"],{"blocking":false,"group":"","name":"bitstream","queueSize":8,"type":0,"waitForMessage":false}],[["","in"],{"blocking":
true,"group":"","name":"in","queueSize":4,"type":3,"waitForMessage":true}]],"name":"VideoEncoder","properties":[185,11,134,0,36,244,0,30,0,0,0,0,1,80,0,0,136,0,0,240,65]}],[2,{"id":2,"ioInfo":[[["","in"],{"blocking":true,"group":"","name":"in","queueSize":8,"type":3,"wait
ForMessage":true}]],"name":"XLinkOut","properties":[185,3,136,0,0,128,191,189,5,118,105,100,101,111,0]}],[3,{"id":3,"ioInfo":[[["","out"],{"blocking":false,"group":"","name":"out","queueSize":8,"type":0,"waitForMessage":false}],[["","inputConfig"],{"blocking":true,"group"
:"","name":"inputConfig","queueSize":8,"type":3,"waitForMessage":false}],[["","inputImage"],{"blocking":true,"group":"","name":"inputImage","queueSize":8,"type":3,"waitForMessage":true}]],"name":"ImageManip","properties":[185,6,185,8,185,7,185,4,136,0,0,0,0,136,0,0,0,0,13
6,0,0,0,0,136,0,0,0,0,185,3,185,2,136,0,0,0,0,136,0,0,0,0,185,2,136,0,0,0,0,136,0,0,0,0,136,0,0,0,0,0,136,0,0,128,63,136,0,0,128,63,0,1,185,15,133,128,7,133,56,4,0,0,0,0,186,0,1,0,186,0,0,0,136,0,0,0,0,0,1,185,3,22,0,0,0,1,1,0,0,134,0,118,47,0,4,0,0,189,0]}],[4,{"id":4,"i
oInfo":[[["","bitstream"],{"blocking":false,"group":"","name":"bitstream","queueSize":8,"type":0,"waitForMessage":false}],[["","in"],{"blocking":true,"group":"","name":"in","queueSize":1,"type":3,"waitForMessage":true}]],"name":"VideoEncoder","properties":[185,11,0,30,0,0
,1,0,4,65,0,0,136,0,0,128,63]}],[5,{"id":5,"ioInfo":[[["","in"],{"blocking":true,"group":"","name":"in","queueSize":8,"type":3,"waitForMessage":true}]],"name":"XLinkOut","properties":[185,3,136,0,0,128,191,189,3,106,112,103,0]}],[6,{"id":6,"ioInfo":[[["","in"],{"blocking"
:true,"group":"","name":"in","queueSize":8,"type":3,"waitForMessage":true}]],"name":"XLinkOut","properties":[185,3,136,0,0,128,191,189,7,112,114,101,118,105,101,119,0]}],[7,{"id":7,"ioInfo":[[["","out"],{"blocking":false,"group":"","name":"out","queueSize":8,"type":0,"wai
tForMessage":false}]],"name":"XLinkIn","properties":[185,3,189,10,99,97,109,67,111,110,116,114,111,108,130,32,161,7,0,8]}]]}
[2022-08-27 15:35:10.579] [debug] Asset map dump: {"map":{}}
[184430101173DE0F00] [<IP_ADDRESS>] [657.594] [system] [info] ImageManip internal buffer size '188608'B, shave buffer size '35840'B
[184430101173DE0F00] [<IP_ADDRESS>] [657.594] [system] [info] SIPP (Signal Image Processing Pipeline) internal buffer size '16384'B
[184430101173DE0F00] [<IP_ADDRESS>] [657.629] [system] [info] ColorCamera allocated resources: no shaves; cmx slices: [10-15]
ImageManip allocated resources: shaves: [15-15] no cmx slices.
[1269.03297] CONNECTED TO CAMERA: 01-back<PHONE_NUMBER>73DE0F00
[184430101173DE0F00] [<IP_ADDRESS>] [658.486] [system] [info] Memory Usage - DDR: 203.17 / 340.93 MiB, CMX: 2.29 / 2.50 MiB, LeonOS Heap: 40.24 / 77.58 MiB, LeonRT Heap: 5.00 / 41.37 MiB
[184430101173DE0F00] [<IP_ADDRESS>] [658.486] [system] [info] Temperatures - Average: 31.65 °C, CSS: 32.97 °C, MSS 31.53 °C, UPA: 30.56 °C, DSS: 31.53 °C
[184430101173DE0F00] [<IP_ADDRESS>] [931.822] [system] [info] Memory Usage - DDR: 203.17 / 340.93 MiB, CMX: 2.29 / 2.50 MiB, LeonOS Heap: 40.24 / 77.58 MiB, LeonRT Heap: 5.00 / 41.37 MiB
[184430101173DE0F00] [<IP_ADDRESS>] [931.822] [system] [info] Temperatures - Average: 29.53 °C, CSS: 31.04 °C, MSS 29.35 °C, UPA: 28.86 °C, DSS: 28.86 °C
[184430101173DE0F00] [<IP_ADDRESS>] [931.822] [system] [info] Cpu Usage - LeonOS 14.82%, LeonRT: 1.38%
[2022-08-27 15:39:45.531] [warning] Monitor thread (device: 18443010D162DE0F00 [<IP_ADDRESS>]) - ping was missed, closing the device connection
connected cameras: [<CameraBoardSocket.RGB: 0>]
memory used: 213035008 remaining: 144453119 total: 357488127
is device closed: None
[1544.04101] topic: dc-a6-32-57-5d-7a msg: {'action': 'setLed', 'color': 'red', 'mode': 'blink', 'status': 'error', 'msgId': 'e4e2ff3825b911ed9489dca632575d7a'}
[2022-08-27 15:39:45.761] [debug] DataOutputQueue (preview) closed
[2022-08-27 15:39:45.761] [debug] XLinkResetRemote of linkId: (2)
FFMPEG PIPE ERROR write to closed file
ffmpeg stdout: b'' stderr: b'pipe:: Invalid data found when processing input\n'
[2022-08-27 15:39:45.762] [debug] DataOutputQueue (video) closed
VIDEOFRAME DATA: 0:25:32.589992 7866 52825
[2022-08-27 15:39:45.763] [debug] DataOutputQueue (jpg) closed
[2022-08-27 15:39:45.765] [debug] Log thread exception caught: Couldn't read data from stream: '__log' (X_LINK_ERROR)
[2022-08-27 15:39:45.765] [debug] Timesync thread exception caught: Couldn't read data from stream: '__timesync' (X_LINK_ERROR)
[2022-08-27 15:39:45.767] [debug] Device about to be closed...
memory used: 213035008 remaining: 144453119 total: 357488127
is device closed: None
[1544.06524] topic: dc-a6-32-57-5d-7a msg: {'action': 'setLed', 'color': 'red', 'mode': 'blink', 'status': 'error', 'msgId': 'e4e6b25425b911ed83e4dca632575d7a'}
FFMPEG PIPE ERROR write to closed file
ffmpeg stdout: b'' stderr: b'pipe:: Invalid data found when processing input\n'
VIDEOFRAME DATA: 0:25:25.552082 7720 56995
connected cameras: [<CameraBoardSocket.RGB: 0>]
[184430101173DE0F00] [<IP_ADDRESS>] [932.823] [system] [info] Memory Usage - DDR: 203.17 / 340.93 MiB, CMX: 2.29 / 2.50 MiB, LeonOS Heap: 40.24 / 77.58 MiB, LeonRT Heap: 5.00 / 41.37 MiB
[184430101173DE0F00] [<IP_ADDRESS>] [932.823] [system] [info] Temperatures - Average: 30.80 °C, CSS: 31.77 °C, MSS 31.04 °C, UPA: 29.83 °C, DSS: 30.56 °C
[184430101173DE0F00] [<IP_ADDRESS>] [932.823] [system] [info] Cpu Usage - LeonOS 15.87%, LeonRT: 1.35%
memory used: 213035008 remaining: 144453119 total: 357488127
is device closed: None
[1544.27472] topic: dc-a6-32-57-5d-7a msg: {'action': 'setLed', 'color': 'red', 'mode': 'blink', 'status': 'error', 'msgId': 'e506ab1825b911ed83e4dca632575d7a'}
FFMPEG PIPE ERROR write to closed file
ffmpeg stdout: b'' stderr: b'pipe:: Invalid data found when processing input\n'
VIDEOFRAME DATA: 0:25:25.751384 7726 64363
[2022-08-27 15:39:46.510] [debug] Device closed, 743
[2022-08-27 15:39:46.511] [debug] DataInputQueue (camControl) closed
Exception in thread 18443010D162DE0F00:
Traceback (most recent call last):
File "/home/pi/camera/utils.py", line 523, in startOak
self.ffmpeg.stdin.write(framedata)
ValueError: write to closed file
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/threading.py", line 973, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.9/threading.py", line 910, in run
self._target(*self._args, **self._kwargs)
File "/home/pi/camera/utils.py", line 531, in startOak
self.ffmpegErrorHandler(error, videoFrame)
File "/home/pi/camera/utils.py", line 340, in ffmpegErrorHandler
print("connected cameras:", self.device.getConnectedCameras())
ValueError: Device already closed or disconnected
connected cameras: [<CameraBoardSocket.RGB: 0>]
memory used: 213035008 remaining: 144453119 total: 357488127
is device closed: None`

Thanks for the reports on this issue - we'll be looking into this in more details and will post back as soon as we get more information on it.

Is there a good way to prove that this is not caused by insufficient power?

@miknai as the timings degrade with multiple cameras I highly suspect this not being a power supply issue (otherwise it should either be okay or start failing after more cameras, if POE switch wouldn't be able to supply enough power)

@miknai Could you run a test with an environment variable set: DEPTHAI_WATCHDOG=0 , to see if it improves the stability.
On Linux, to not have to export, can prepend it to the command being ran:
depthai-experiments/gen2-multiple-devices$ DEPTHAI_WATCHDOG=0 python3 main.py

A note for DEPTHAI_WATCHDOG=0, it should work fine with the above script, but on the latest release (v<IP_ADDRESS>) it may cause issues with pipelines that load assets (like NeuralNetwork blobs, StereoDepth undistortion mesh, etc). Recently we fixed this issue on the develop branch.

Okay I will try that within a couple of hours and share the results here.

Hi!
I've run into this same issue, but consistently only effecting one camera (using static IPs). I'm also able to run all my cameras (currently 3) with no issues if I run them in completely separate terminals. My system previously worked on older depthai/bootloader versions (<IP_ADDRESS>/0.0.15) and has been having this issue since I flashed the newest bootloader version (0.0.20) yesterday (persists even after factory reset).
The watchdog fix worked on my system, both using this script and a custom one.

On my end, even though I run three cameras on separate terminals, I still get the connection drop from the two OAK-D-POE units.

When I mention separate terminals I mean a process like:

no Cameras
plug in problem camera and run the multi-device main.py
plug in the other two and then run the script again in a different terminal
This has no issues and I've run it for more than 15min a couple times before manually stopping both windows.

If I have all three cameras viewable by Device.getAllAvailableDevices(), but only try to add a camera that presents the ping issue (I'm using device = dai.Device(pipeline, device_info) ), it will crash with the same error pretty quickly after Device() is called.
Currently I'm not doing anything with the cameras besides streaming RGB images on v<IP_ADDRESS> and have not seen any issues with the watchdog env variable fix

With the disabled watchdog, I was able to run the multi-device video stream without the connection drop. For some cameras, the streaming became really laggy quite often like 2 frames per second or even less frames. But, at least, I don't lose connection.
What does watchdog do in the system and why did disabling it make difference?

@miknai
Do you mind testing out latest develop as well? It was likely an issue with how PoE devices had the WD timing configured.
We've tweaked it now and should work better without changing the watchdog manually (or disabling it with that said)
Also, if that doesn't work, do you mind comparing it with the env var set to DEPTHAI_WATCHDOG=60000?

@themarpe When you say the latest develop branch, it's the one in this repo, correct? As I mainly use Python, I don't use this repo much. The repo I initially opened this issue was depthai-experiement.
Oh wait, I believe the depthai-python repo is the wrapper of this depthai-core, so the changes in this repo make changes in depthai-python repo as well. Then, how the depthai-experiment repo gets affected by depthai-core? I don't see anything like "depthai-core @ commit id" in depthai-experiment repo.
How do I know that the gen2-multiple-devices runs with the code changes you made in depthai-core repo?

@miknai
WD stands for watchdog.
Go under depthai-python, checkout develop branch and run python3 examples/install_dependencies.py then run the gen2-multiple-devices experiment (without installing requirements specified in that experiment)

@themarpe, thank you for providing me the instruction to follow.
I encountered this issue with the develop branch.

When I run with DEPTHAI_WATCHDOG=60000, the program opens up three windows (I have three cameras), but only 1 unit (oak-d-poe-pro) streams the video properly. Other two units (oak-d-poe) freezes as shown in the this video.
https://user-images.githubusercontent.com/58019428/189461804-1b2ca1d9-8f9f-447a-9034-b4f94a65635d.mp4

@miknai On the same branch/version, if you run with DEPTHAI_WATCHDOG=0, are all cameras working well, no freezing?

@alex-luxonis If I run with DEPTHAI_WATCHDOG=0, all cameras work but 2 of them are extremely slow. In the below video, I am waving constantly in front of all three cameras, but only 1 unit (oak-d-poe) works properly.
https://user-images.githubusercontent.com/58019428/189462646-ae559591-202e-4abc-b04d-af3cbcbd5fd1.mp4

@miknai Thanks for testing, this makes sense. It looks like the bandwidth available in your setup is limited, for example due to WiFi, or 100Mbps Ethernet links, and severe congestion happens for some of the TCP streams.
In its current form, gen2-multiple-devices/main.py requires around 409Mbps of bandwidth for 3x OAK-D-PoE devices. The RGB camera of each is configured to stream uncompressed images, consuming each:
 600*300 (w*h) * 3 (Bpp,RGB) * 30 (fps) * 8 (bits) = 130 Mbps for video payload, plus some extra overhead (TCP/IP, etc)
If the communication is completely stalled for several seconds, as it appears from the above video, the device watchdog would kick in and reset it. That's likely what happens with the value 60000ms, that gets capped to 5000ms due to some hardware constraints, and it's insufficient for the above scenario. (We should revisit that logic in firmware, and auto-feed the watchdog for values larger than 5000.)
On my side, testing with 3x OAK-D-PoE devices and the same app, they all stream smoothly and with no lag, over a 1Gbps Ethernet link from the PoE switch to the test PC. You can try a similar setup, or edit the script to reduce the preview size for a test. Ideally, VideoEncoder should be used to compress to JPEG/H.264/H.265 for such limited bandwidth cases.
But we should also fix the crash/hang in the first place, in case network congestion still happens due to various reasons.

@alex-luxonis Thank you so much for sharing the detailed info. It makes much more sense with the calculation. The wifi speed was 78 Mbps. Only one camera works well with this setup. Now, I am trying with ethernet cable which enables me to have 350 Mbps, and two cameras work well in this setup. Makes sense with the calculation that 2x OAK-D-POE requires 260 + extra.
Questions:

How did you measure that "gen2-multiple-devices/main.py requires around 409Mbps"?
Are there still minor firmware issues when you say "crash/hang in the first place"?
My ultimate goal to capture high resolution frames from multiple cameras whenever needed instead of streaming all time. Let's say I have 3 POE cameras and I would like to get 12MP color image and 1MP stereo image from each camera. The calculation for each camera will be 12M (pixels) * 3 (3-color channel, RGB) * 8 (bits) * 1 (number of frame) = 288 Mbps for color and 1M (pixels) * 1 (1-color channel) * 8 (bits) * 1 (number of frame) = 8Mbps for stereo image. The total is 296 Mbps and 296*3 = 888 Mbps for 3 cameras. Is this calculation correct?

Thank you!

Hi @alex-luxonis,
have you solved this issue?
I'm getting the same error.
Setup: 1x OAK-1-POE, 1Gbps network switch, CAT5e ethernet cable (should support up to 1Gbps for lengths up to 50m).
Monitor thread (device:<PHONE_NUMBER>605D1200 [<IP_ADDRESS>]) - ping was missed, closing the device connection
F: [global] [    784991] [EventRead00Thr] tcpipPlatformRead:272 Cannot find file descriptor by key: 56
F: [global] [    784991] [Scheduler00Thr] tcpipPlatformWrite:300        Cannot find file descriptor by key: 56
F: [global] [    784991] [EventRead00Thr] tcpipPlatformRead:272 Cannot find file descriptor by key: 56
[1844301001605D1200] [<IP_ADDRESS>] [1704452793.244] [host] [warning] Device crashed, but no crash dump could be extracted.
terminate called without an active exception

Hi @blukaz sorry for the delay. Do you have a means to reproduce the above. CC: @jakaskerl

@themarpe  Thanks for reaching out!
Yes, the system is currently running and this error happens every now and then (it seems random to me)
We even exchanged the ethernet cable to CAT6, but we still encounter this problem.

Hi @blukaz, Could you provide more information on the error. Does it happen shortly after device boot, or after a while, or it does not matter. Just to confirm, you are running unaltered gen2-multiple-devices/main.py script with depthai=2.24 and bootloader version 0.0.26?
Thanks.


fix BGPmon link on Tools page

The "Visit Site" link on the Tools page should point to https://www.bgpmon.net/ instead of https://bgpmon.net/.
$ curl -v -I https://bgpmon.net/
*   Trying <IP_ADDRESS>:443...
* connect to <IP_ADDRESS> port 443 failed: Connection refused
* Failed to connect to bgpmon.net port 443 after 99 ms: Couldn't connect to server
* Closing connection
curl: (7) Failed to connect to bgpmon.net port 443 after 99 ms: Couldn't connect to server
$ curl -v -I https://www.bgpmon.net/
*   Trying [2600:9000:25ef:c800:13:6b60:1cc0:93a1]:443...
* Connected to www.bgpmon.net (2600:9000:25ef:c800:13:6b60:1cc0:93a1) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=bgpmon.net
*  start date: Oct 13 00:00:00 2023 GMT
*  expire date: Nov  9 23:59:59 2024 GMT
*  subjectAltName: host "www.bgpmon.net" matched cert's "www.bgpmon.net"
*  issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M03
*  SSL certificate verify ok.
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://www.bgpmon.net/
* [HTTP/2] [1] [:method: HEAD]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: www.bgpmon.net]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.4.0]
* [HTTP/2] [1] [accept: */*]
> HEAD / HTTP/2
> Host: www.bgpmon.net
> User-Agent: curl/8.4.0
> Accept: */*
>
< HTTP/2 200
HTTP/2 200
< content-type: text/html
content-type: text/html
< content-length: 21021
content-length: 21021
< last-modified: Fri, 02 Feb 2024 01:31:19 GMT
last-modified: Fri, 02 Feb 2024 01:31:19 GMT
< x-amz-server-side-encryption: AES256
x-amz-server-side-encryption: AES256
< accept-ranges: bytes
accept-ranges: bytes
< server: AmazonS3
server: AmazonS3
< date: Mon, 06 May 2024 01:09:53 GMT
date: Mon, 06 May 2024 01:09:53 GMT
< etag: "b2dd566299136438ad11d13e4f5a94d3"
etag: "b2dd566299136438ad11d13e4f5a94d3"
< x-cache: Hit from cloudfront
x-cache: Hit from cloudfront
< via: 1.1 55e9464473b96a5fed56600591202122.cloudfront.net (CloudFront)
via: 1.1 55e9464473b96a5fed56600591202122.cloudfront.net (CloudFront)
< x-amz-cf-pop: SFO53-P3
x-amz-cf-pop: SFO53-P3
< x-amz-cf-id: 8WE25U8ir-MSYUty-MYC5-hO65_twqzCUeaXF6iawxl3uBZCia5I2A==
x-amz-cf-id: 8WE25U8ir-MSYUty-MYC5-hO65_twqzCUeaXF6iawxl3uBZCia5I2A==
< age: 10390
age: 10390

<
* Connection #0 to host www.bgpmon.net left intact

updated.


Add use_external_pager_for_lsp_document_symbols option

Adding as a workaround for #163

You should be able to just pass in an override previewer to the builtin.
Why would we need this setting?

I've tried with both previewer = previewers.qflist and previewer = previewers.bat_maker in defaults of telescope.setup and it gives me those raw ANSI escape sequences again. This was the only way I could get it to work, but yes if there's a way of getting it done without a new config value that would be preferable.

You just need to add back the -R flag to https://github.com/nvim-lua/telescope.nvim/blob/6267ead134032b3746488d804b0e09a740d54ab6/lua/telescope/previewers.lua#L33 (which the latest commit already did for line 35, which isn't called for lsp symbols).

gotcha, #172 indeed helps. closing this one


cxx_minus_to_noop produces wrong diff(patch file)

hello.
I am reporting that mull creates an incorrect patch file.

environment

Ubuntu 20.04
clang-12
install w/ "sudo apt-get install mull-12"

The cxx_minus_to_noop mutator works as follows.
Simple example code for bug reproducing.

a.c.

#include <stdio.h>

int main() {
     int x = -1;
     int y = -x;

     return y;
}

command

clang-12 -fexperimental-new-pass-manager \
   -fpass-plugin=/usr/lib/mull-ir-frontend-12 \
   -g -grecord-command-line \
   a.c

output (killed-home_topcue_tmp_a_c-cxx_minus_to_noop-L5-C13.patch)

--- a/home/topcue/tmp/a.c 0
+++ b/home/topcue/tmp/a.c 0
@@ -5,1 +5,1 @@
- int y = -x;
+ int y = ;
--
Build Date: 17 Jan 2023
Commit: 3060128
LLVM Version: 12.0.0
Mull Version: 0.20.0
URL: https://github.com/mull-project/mull

Instead of int y = ;, int y = x; should be generated, but the patch file is generated as above.
Thanks.

Hi @topcue, thank you so much for bringing this up. It's very similar to the other issue (#1023) and I think I have a solution for both of these in mind. I'll do my best to address these issues soon.

Hi @topcue, the issue is fixed here. I'll cut the new release soon.

Here we go https://github.com/mull-project/mull/releases/tag/0.21.0

Thanks!


info? compare and contrast this project viz a viz anchore/syft

Trying to understand what the core differences are wrt https://github.com/anchore/syft
For example, is this project specific to k8s only!
Also, would you consider accepting PRs to make these values as cmdline params:
https://github.com/kubernetes-sigs/bom/blob/main/pkg/spdx/document.go#L175
since the creator could be org-specific.

Hello, @rchincha. Thanks for the issue and the question. I will try to answer
This project started around the same timeframe as the other, and we built that to integrate, in the first place, with the k8s release process, but after that, for any kind of GO project (for now, it focuses on GO applications) and it uses the guidelines defines by the SPDX working group.
But this is not only for K8s projects. You can use it in your project.
And you can open a PR I will be happy to review that.
Hope that clarifies your question


Consider adding a unit of measure to MemoryCacheOptions.SizeLimit property summary

Currently, the property summary for the MemoryCacheOptions.SizeLimit property is:
    /// <summary>
    /// Gets or sets the maximum size of the cache.
    /// </summary>

It would be nice if this explicitly provided the unit of measure (bytes, kilobytes, etc.). Like this:
    /// <summary>
    /// Gets or sets the maximum size of the cache in kilobytes.
    /// </summary>

This was deliberate. The memory cache does not measure the size of its contents, it relies on them to self-declare their size. The units are arbitrary so long as those sharing the cache agree.

It might be worth mentioning that, then.

@Eilon I wholeheartedly agree.  For example, I intended to use the default implementation of the InMemory cache provider in a very small website to store lookup values that I don't update often. I have a set cache size in mind (in bytes), but I'm not sure how to specify this given the documentation.

How am I supposed to set the size of the entries ? Is it safe to use Marshal.SizeOf() method the get the size of entries I'm adding to cache with SetSize() method ? Like below:
//GET ORGANIZATION NAMES FROM CACHE
        public async Task<List<Organization>> GetOrganizationNames()
        {
            string key = CacheKeys.Organizations;

            if (!_cache.TryGetValue(key, out List<Organization> organizations))
            {

                organizations = await _db.Organization.Select( o=>new Organization() { Id=o.Id ,Name=o.Name}).ToListAsync();

                var cacheEntryOptions = new MemoryCacheEntryOptions()

                    .SetSlidingExpiration(TimeSpan.FromMinutes(3))
                    .SetPriority(CacheItemPriority.High)
                    .AddExpirationToken(new CancellationChangeToken(OrganizationsToken.Token))
                    .SetSize(Marshal.SizeOf(organizations));

                _cache.Set(key, organizations, cacheEntryOptions);
            }

            return organizations;
        }

@brainoverflow98 I think it's doubtful that Marshal.SizeOf will be of much use here unless the object is very simple. I don't think it will account for complex types that include references to other object instances, which could be of enormous sizes.

@brainoverflow98 I think it's doubtful that Marshal.SizeOf will be of much use here unless the object is very simple. I don't think it will account for complex types that include references to other object instances, which could be of enormous sizes.

So can I consider it as safe on an object which only has 2 string values ?  And what other solutions I can use for limitting the size properly ? I'm trying to implement a good db cache system.

@Eilon Is there any way that I can track the size of complex types or better if there is any way I can controll memory usage ?

Unfortunately I don't think there's any good general-purpose way of doing this. If there was, it would likely have been built-in.
Because it's so complex and not generalizable, it's left up to each person using the cache to use the "size" logic that makes sense for them.

Here's one example where we estimate the size of a specific structure.
https://github.com/aspnet/ResponseCaching/blob/c1cb7576a0b86e32aec990c22df29c780af29ca5/src/Microsoft.AspNetCore.ResponseCaching/Internal/CacheEntry/CacheEntryHelpers .cs#L11-L40
Note there are no units on the cache size field. You don't need to account for every last byte, but rather you need to ensure that you use a consistent approach across the objects you cache.

Thank you so much guys ! One last question,  do I need to make any configurations to use clear on memory pressure option or is it going to be configured all by the program based on the OS it works?

Memory cache does not account for memory pressure, only the size limit you specify.


Mason failed to install stylua

Describe the bug

When I enter neovim mason fails to install stylua.
To Reproduce

Open neovim in my /.config/nvim folder using nvim . You can se my config here.

Desktop

OS: Linux (WSL), Ubuntu
Terminal: Windows terminal

Neovim Version

NVIM 0.9.4
Build type: Release
LuaJIT 2.1.1692716794
system vimrc file: "$VIM/sysinit.vim"
fall-back for $VIM: "/__w/neovim/neovim/build/nvim.AppDir/usr/share/nvim"

Also, I have no experience with WSL, can you provide some quick instructions how to setup that?
Not sure if I should treat this as a linux or windows issue, but it works fine for me in both environments (windows and linux).
Can you provide more details, for starters the mason.log, such as:
C:\Users\vbox\AppData\Local\nvim-data>cat mason.log
[INFO  2/29/2024 12:52:13 PM] ...m-data/lazy/mason.nvim/lua/mason-core/installer/init.lua:184: Executing installer for Package(name=lua-language-server) {}
[INFO  2/29/2024 12:52:13 PM] ...m-data/lazy/mason.nvim/lua/mason-core/installer/init.lua:184: Executing installer for Package(name=stylua) {}
[INFO  2/29/2024 12:52:17 PM] ...m-data/lazy/mason.nvim/lua/mason-core/installer/init.lua:245: Installation succeeded for Package(name=stylua)
[INFO  2/29/2024 12:52:19 PM] ...m-data/lazy/mason.nvim/lua/mason-core/installer/init.lua:245: Installation succeeded for Package(name=lua-language-server)

The Mason/stylua works fine for me:
 Installed
    ◍ lua-language-server lua_ls
    ◍ stylua
      An opinionated Lua code formatter.

      installed version v0.20.0
      homepage          https://github.com/JohnnyMorganz/StyLua
      languages         Lua, Luau
      categories        Formatter
      executables       stylua.cmd

using these windows install instructions:
https://github.com/nvim-lua/kickstart.nvim/blob/master/README.md#windows-installation
install [chocolatey](https://chocolatey.org/install) either follow the instructions on the page or use winget, run in cmd as admin:
winget install --accept-source-agreements chocolatey.chocolatey
install all requirements using choco, exit previous cmd and open a new one so that choco path is set, run in cmd as admin:
choco install -y neovim git ripgrep wget fd unzip gzip mingw make

Ok, I tried out WSL and it works fine for me, here is what I tried:
wsl --install
wsl
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
sudo apt install neovim make gcc ripgrep unzip
git clone https://github.com/dam9000/kickstart-modular.nvim.git "$HOME/.config/nvim"
nvim

not sure how you installed nvim, but using the ppa/unstable as seen above installs the version 0.10
and from my testing it works fine.

I removed my configuration and re-started from scratch as you did and now it works perfectly, I forked this repo and I will re-add the modifications that I had done so far.
Thanks a lot.

I removed my configuration and re-started from scratch as you did and now it works perfectly, I forked this repo and I will re-add the modifications that I had done so far.
Thanks a lot.


Template repos for bots and appservices

https://github.blog/2019-06-06-generate-new-repositories-with-repository-templates/

and / or https://github.com/audreyr/cookiecutter :smile:

This is also heavily tied in with https://github.com/turt2live/matrix-js-bot-sdk/issues/22

Bot repo: https://github.com/turt2live/matrix-bot-sdk-bot-template


Specify handlerKey for the @restrict(la(as("foo"))) template

While using @Restrict annotation one can specify handlerKey property.
I have read somewhere that this handler, once instantiated, is being cached.
Is it true?
If yes - it should be possible to specify handlerKey for the @restrict(la(as("foo"))) template
So far I have found a workaround:
@restrictOr(la(as("foo", "bar"), as("hurdy")), new com.example.SomeSpecificDeadboltHandler())
but there, you must create new handler for each invocation, which is not optimal.

Handlers are eagerly created and cached, and held in the HandlerCache instance.  You can inject this into your controllers, get the desired handler from there and then pass it into the template as a parameter.
Simple example:
public class MyController extends Controller {
    private final HandlerCache handlerCache;

    @Inject
    public MyController(final HandlerCache handlerCache) {
        this.handlerCache = handlerCache;
    }

    public static F.Promise<Result> foobar() {
        return F.Promise.promise(() -> myPage.render(handlerCache.get("alternativeHandler")))
                        .map(content -> ok(content))
    }
}

In your template, you would then have
@(handler: DeadboltHandler)

@restrictOr(la(as("foo", "bar"), as("hurdy")), handler) {
    // protected content
} {
    // fallback content
}

This approach also means you're not hard-coding handler choice into the templates, and so you get more flexibility.

yeah, but if you allow to configure "handlerKey" in @Restrict then it would be nice and consistent across the API if @restrict would also allow to do it.
And last, but not least - even if I pass this handler to the template, I have to create/inject/find it somewhere else anyway so I loose the benefit of defining it in application.conf.

By the way - which of these websites is most up-to-date:
http://deadbolt.ws/#/java-docs or http://deadbolt-2-java.herokuapp.com/#controller-Restrictions ?

I'll have a think about this - I'll need to do it in the least invasive way, but it's a good idea and now is the time to make breaking changes if they have to be made.
deadbolt.ws is the most up to date, but it's not been reworked for 2.4 yet.  https://github.com/schaloner/deadbolt-2-java-examples is the most up to date - this is the app which runs on heroku, but it hasn't been deployed there yet.

So in http://deadbolt.ws/#/java-docs look at the  Define a DeadboltHandler in the template  subsection under the restrict section and compare it to the same subsection under the dynamic section. Is this correct?
If its about http://deadbolt-2-java.herokuapp.com/#controller-Restrictions
In 2.4 version I can not find @And and @Restrictions is this correct?

Doc error fixed, thanks.
And and Restrictions are gone - there's now a single Restrict constraint that handles this.  And was replaced by Group.

Use @import be.objectify.deadbolt.java.ViewAccessPoint.Implicits._ to get the handler cache, and you can then call apply on it with a handler key.
@import be.objectify.deadbolt.java.ViewAccessPoint.Implicits._
@import be.objectify.deadbolt.java.views.html._

@dynamicOr(name = "pureLuck", handler = handlerCache.apply(HandlerKeys.ALT.key)) {
    This content should NOT be visible
}{Guess you were unlucky}

In this example, taken from here, HandlerKeys is an enum.
public enum HandlerKeys
{
    DEFAULT(ConfigKeys.DEFAULT_HANDLER_KEY),
    ALT("altHandler"),
    BUGGY("buggyHandler"),
    NO_USER("noUserHandler");

    public final String key;

    private HandlerKeys(final String key)
    {
        this.key = key;
    }
}


Why is Azure CLI 1.0 preferred over 2.0?

This document has the following note:
There are currently two versions of the Azure CLI. CLI1.0 is based on Node.js, and has commands beginning with "azure". CLI2.0 is based on Python and has commands beginning with "az". While zone file import is supported in both versions, we recommend using the CLI1.0 commands, as described in this page.
However it provides no information whatsoever as to why CLI 1.0 is recommended making it hard to decide if I should stick to the recommendation or if I'm ok with whatever it is that's a limitation/risk in CLI 2.0. Please add more information to make this decision possible.

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

ID: 5e7a82c4-2bed-a8c7-6ce9-9bd895771337
Version Independent ID: 5233a0b2-fc92-efb5-8d8d-8c53d5e68109
Content: Import and export a domain zone file to Azure DNS using Azure CLI 1.0 | Microsoft Docs
Content Source: articles/dns/dns-import-export.md
Service: dns
GitHub Login: @georgewallace
Microsoft Alias: gwallace

@gsacavdm Thanks for reaching out with your question. I have assigned this document to the author to help with the reason why 1.0 is preferred over 2.0.

@KumudD Can you answer @gsacavdm ?  When I originally wrote the article 2.0 did not work to import zone files, as I have not owned this content in a while I am not sure if this has changed.

@gsacavdm The doc needs to be updated to use Azure CLI 2.0.
#In-process

can this be closed? @amanarneja documentation has been updated


[REQUEST] esbuild clarification

What would you like to have implemented?
Hello there!
I've been using this great package with Heroku and I tried to bundle my Node.js app with TypeScript using esbuild. However, I encountered a bug that said Error The input directory "/app/bin" does not exist..
I already fixed that error by adding to my build script the flag --packages=external (didn't know that was recommended by the esbuild documentation). Therefore, this is the build script that I have that works with this package:
"build": "esbuild src/index.ts --bundle --platform=node --packages=external --target=node18 --outdir=dist"

I'm wondering if it's possible to add a clarification in the documentation in case some else encounters this same bug. The only issue that I can think of is that I'm not entirely sure if the problem that I had was exclusively to Heroku or not. So probably some research needs to be done with at least a couple of different services to check if the problem persists.
If you think this makes any sense, I'm willing to research about it and, if the same problem is anywhere else, I can create PR with the clarification.
Let me know if this makes any sense.
Why would it be useful?
It will help the people who will use esbuild to bundle their Node.js app.

yup. im using esbuild also. and this will surely help a lot!


using multiple successive interpolations hangs the sampler

due to the fact that we use a multidimentional tensor of embeddings made out of all the possible permutations of control points of all interpolation expressions to interpolate a prompt, using more than 10 interpolations will take a long time to schedule.
I'm not sure how to fix this. Something could be done so that only the control points needed for sampling are passed to modules.prompt_parser. However this would at best make the time complexity = O(2^n), which doesn't solve the combinatorial issue.

To fix this, we HAVE to use another method to find the embedding at step t (so no regression on some sort of "nested" curved hyperplane).

In the end the leafs of the prompt tensor are control points for an n-dimentional bezier surface. Maybe knowing this can help us look up and experiment with other representations of n-dimentional surfaces.
I know we discussed this irl, I just want to leave a note about it.

Sometimes I use curves that share control points and curves. IIUC, all axes that have the same shape (which means they share step numbers and interpolation function) can be simplified together into 1 axe without deforming the resulting interpolation curve.
In this case, variables can also be used to rewrite the interpolations (that have the same shape) as a single interpolation. It is a corner case but handling these cases should allow more prompts to be written without hanging the runtime.


Add support for block comments

This is just a place holder issue to add support for block comments like /* comment */
This should be fairly straight forward with ast parser since the comments array includes comments of both type CommentLine and CommentBlock however this will be challenging as support is added for languages for which the ast parser cannot be used.

https://github.com/Bogdan-Lyashenko/codecrumbs/pull/82


Add the live-server's file option in it

The live-server  has a file option, it can server this option'value for every 404, so it's useful for single-page applications.
I just add it in vscode-live-server.

LGTM, thanks for the PR!


Memory leaks

Great library but the memory leaks makes it unusable with over 400MB memory usage sometimes that persist even after deallocating multiple parent VCs. I think displaying each emoji in a single UILabel might not be the best way to do it.

I haven't achieved that much memory consumption, but yes, it's a big problem. For which, unfortunately, I still haven't found a solution. Even using the CoreText does not solve the problem.
The only working solution I have found is to display the emoji as a UIImage, this does not lead to such a large memory consumption.
If you have any ideas or suggestions on how to fix this, I will be glad.

What about presenting the view controller with a scroll view.
On the bottom is a horizontal stack view representing the categories. Then on the scroll view you present a list of imageviewes vertically where each imageview represent an emoji category in a single image containing all the emojis related to the category. And when ever the user taps you detect the location of the particular emoji in place then either present the skin tone options or just dismiss the picker and get the selection.
You may also make a table view/ collection view for easier layout of the imageviews.
I am thinking outloud here and haven't thought it through really.

Interesting suggestion, I will be glad to see your contribution.
I want to still try to figure out how using UILabel you can display emoji without compromising memory. Since this is a global problem in Swift, it would be interesting to solve it and simplify the development of thousands of other developers.
In the current version, the library is still usable, since you will not be able to find analogues without this problem.

If the app back to background, the memory will be deallocated.


fixed UnicodeDecodeError

On Win10 I got UnicodeDecodeError on an attempt to iterate over any table. Specifying UTF-8 as the encoding for the open() call fixes the issue.

Thank you for reporting this bug!


fix: skip proc.cwd() when cwd is given

Initial checklist

[x] I read the support docs
[x] I read the contributing guide
[x] I agree to follow the code of conduct
[x] I searched issues and couldn’t find anything (or linked relevant results below)
[x] If applicable, I’ve added docs and tests

Description of changes
make VFile skip unnecessary filesystem access for process.cwd() if cwd is already given.
due to how VFile.cwd works:

set to process.cwd() (/ if browser)
override to options.cwd if exists as stated in https://github.com/vfile/vfile/pull/15#issuecomment-272976878

VFile will always request filesystem access even if it's not needed.

Heya!
Let me try to fix the build issue.

VFile will always request filesystem access even if it's unnecessary.

This project should be usable. proc redirects to a file that depends on conditions. Only explicitly in Node does one get process.
Why are you/Deno specifically using a node condition?

import_map.json

Right, you specifically choose to use Node APIs. Why?

Only explicitly in Node does one get process.

I was using import { VFile } from<EMAIL_ADDRESS>out of habit, and the npm: specifier polyfilled node process.cwd() (Deno.cwd()).
changing import to import { VFile } from<EMAIL_ADDRESS>does resolve to browser-based module.

Why are you/Deno specifically using a node condition?

to recap:

npm:vfile: node polyfill, for server
https://esm.sh/vfile: for browser

I think it makes sense to choose node condition depending on how the library is used. The concern I have right now would be

Right, you specifically choose to use Node APIs. Why?

Also, does Deno expect users to map every imported thing to a file on the file system? These internals specifically contain do-not-use. I was not aware of that. That does not sound good.

Oh, most wouldn't, please ignore this one, I experimented running repo code as-is while reproducing the issue and had to do manual mapping myself.

VFile will always request filesystem access even if it's unnecessary.

This project should be usable.

I'm sorry, could you elaborate further? Would it mean vfile should always request cwd even if it's explicitly given in constructor?

Ah okay, so the import map has to do with trying to make a small repro, good!

I'm sorry, could you elaborate further? Would it mean vfile should always request cwd even if it's explicitly given in constructor?

Nope!
First: a cwd (and path) is really useful. There are many plugins and other things that will look for package.jsons or .git or whatnot relating to the file. path can be relative (in which case it relates to cwd). And cwd (where a programmer runs code from) is also very useful.
But process.cwd is a Node thing. So only if Node is explicitly specified, will process.cwd be used:
https://github.com/vfile/vfile/blob/de87feae24b65cd21975022636b70b0ad7331342/package.json#L36-L50
Everything else gets the default condition. And so, gets:
https://github.com/vfile/vfile/blob/de87feae24b65cd21975022636b70b0ad7331342/lib/minproc.browser.js#L7

sorry, I'm getting even more confused. My point was:

VFile constructor shouldn't request cwd via process.cwd() if cwd was explicitly given from construtor (opt.cwd)

I think this applies to not only deno but in node.

Maybe. But:

this shouldn’t be something you notice, you are not using Node
which cwd value are you setting? cwds are quite useful, perhaps we can improve cwds on deno
how are you getting a relevant cwd, perhaps on deno we can use those cwd values you somehow find

make VFile skip unnecessary filesystem access for process.cwd() if cwd is already given.

I updated the PR description to remove relations with deno, as i changed my position to optimization (removing unneeded system call) they were less relevant.

Alright, done, slightly different mechanism but mainly wanted to add a comment!


Use select2

 Issue by dleehr
Wednesday Apr 16, 2014 at 13:58 GMT
Originally opened as https://github.com/NESCent/dplace/issues/60

select2 and ui-select2

 Comment by dleehr
Friday May 30, 2014 at 15:11 GMT

I tried this on the geographic search (#91). angular-ui-select2 has a fair amount of bugs and it wasn't working out there (realistically 3-way binding), but it may work in this case, and the groundwork (bower) is laid


Update main.cpp

change long timestamp declaration to long long timestamp

I'm pretty sure we need to change the type of timestamp in measurement_package.h too.


Crashing in v3.0

Hi, when I dismissed the modal View Controller containing the MXSegmentPager instance, application crashed with the following error.
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'An instance 0x151e9000 of class MXScrollView was deallocated while key value observers were still registered with it. Current observation info: <NSKeyValueObservationInfo 0x16259d70> (...)'

I currently had the same issue
When I implement segmentedpager at a detail page and want to push pop the view it crashes some times at first pop and sometimes at second push. Here is the call stack.
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'An instance 0x14480a600 of class MXScrollView was deallocated while key value observers were still registered with it. Current observation info: NSKeyValueObservationInfo 0x144704da0 (
NSKeyValueObservance 0x14468d180: Observer: 0x144588900, Key path: contentOffset, Options: New: YES, Old: NO, Prior: NO Context: 0x1001e00e8, Property: 0x144553890
NSKeyValueObservance 0x1446dc1b0: Observer: 0x144588900, Key path: contentInset, Options: New: YES, Old: YES, Prior: NO Context: 0x1001e00e8, Property: 0x1446bcc30
)'
*** First throw call stack:
(0x18475cf48 0x19930ff80 0x18475ce90 0x18561f640 0x199329ae8 0x184640a4c 0x184712068 0x184640ca0 0x18f87c088 0x189d58ffc 0x1000c3fe8 0x199b5e8b8)
libc++abi.dylib: terminating with uncaught exception of type NSException

Thanks for the report, I will have a look asap. It seems to be an issue in MXParallaxHeader.

Can you please try something for me and replace @property (nonatomic,weak) UIScrollView *scrollView; by @property (nonatomic,strong) UIScrollView *scrollView; in the MXParallaxHeader.m line 27.

Hello maxep, I didn't test much but replacing weak to strong fixed the crash.

Thanks:)

I've released the 3.0.1 with this fix.


Added ability to parse nested terraform modules.

Approved in meeting 11/11/2022 - demo Terrform script to be uploaded to demo branch


e2e sink test fail

Describe the bug
| e2e_test/source/nexmark_endless_sinks/../../streaming/nexmark/sinks/q20.slt.part .. [OK] in 20058 ms[FAILED]

failed to run `e2e_test/source/nexmark_endless_sinks/nexmark_endless_part4.slt` Caused by:     statement failed: db error: ERROR: QueryError: internal error: transport error     [SQL] drop sink nexmark_q18;     at e2e_test/source/nexmark_endless_sinks/nexmark_endless_part4.slt:16

https://buildkite.com/risingwavelabs/main/builds/4305#0188519d-909e-4d07-8c34-6452dee5d4e0
To Reproduce
No response
Expected behavior
No response
Additional context
No response

Caused by:
--
  | 2023-05-25 07:11:59 UTC | statement failed: db error: ERROR: QueryError: internal error: transport error

Seems an very occusional problem?

Can't find any crashes in the logs. Not sure if there're OOM issues.
meta:
2023-05-25T06:53:49.864993Z  INFO risingwave_meta::barrier: ... in_flight_barrier_nums=10 <- !!

compute:
2023-05-25T07:09:23.345516Z  WARN risingwave_stream::executor::source::source_executor: source SourceExecutor 187000027F9 paused, wait barrier for 1.398522823s
2023-05-25T07:09:23.346757Z  WARN risingwave_stream::executor::source::source_executor: source SourceExecutor 18A000027F9 paused, wait barrier for 1.417317484s
2023-05-25T07:09:24.715010Z  WARN risingwave_stream::executor::source::source_executor: source SourceExecutor 18A000027F9 paused, wait barrier for 1.343123662s
2023-05-25T07:09:24.743967Z  WARN risingwave_stream::executor::source::source_executor: source SourceExecutor<PHONE_NUMBER>6 paused, wait barrier for 1.366030788s
2023-05-25T07:09:24.758573Z  WARN risingwave_stream::executor::source::source_executor: source SourceExecutor 17A00002796 paused, wait barrier for 1.366944646s
2023-05-25T07:09:24.794112Z  WARN risingwave_storage::hummock::event_handler::uploader: fail to acqiure memory 258965 B, skip merging imms for table 1257, shard 690
2023-05-25T07:09:24.794133Z  WARN risingwave_storage::hummock::event_handler::uploader: fail to acqiure memory 254 B, skip merging imms for table 1260, shard 710
2023-05-25T07:09:24.794138Z  WARN risingwave_storage::hummock::event_handler::uploader: fail to acqiure memory 7439780 B, skip merging imms for table 1255, shard 692
2023-05-25T07:09:24.794141Z  WARN risingwave_storage::hummock::event_handler::uploader: fail to acqiure memory 236180 B, skip merging imms for table 1257, shard 698
2023-05-25T07:09:24.794144Z  WARN risingwave_storage::hummock::event_handler::uploader: fail to acqiure memory 7411388 B, skip merging imms for table 1255, shard 696
2023-05-25T07:09:24.794147Z  WARN risingwave_storage::hummock::event_handler::uploader: fail to acqiure memory 7532173 B, skip merging imms for table 1255, shard 688
2023-05-25T07:09:24.794149Z  WARN risingwave_storage::hummock::event_handler::uploader: fail to acqiure memory 4071198 B, skip merging imms for table 1251, shard 676
2023-05-25T07:09:24.795556Z  WARN risingwave_storage::hummock::store::state_store: blocked at requiring memory: 119, current 826228402
2023-05-25T07:09:24.795585Z  WARN risingwave_storage::hummock::store::state_store: blocked at requiring memory: 119, current 826228402
2023-05-25T07:09:24.795741Z  WARN risingwave_storage::hummock::store::state_store: blocked at requiring memory: 119, current 826228402
2023-05-25T07:09:24.820690Z  WARN risingwave_storage::hummock::store::state_store: blocked at requiring memory: 119, current 826228402
2023-05-25T07:09:37.538973Z  WARN risingwave_storage::hummock::store::state_store: successfully requiring memory: 119, current 823582290
2023-05-25T07:09:37.538990Z  WARN risingwave_storage::hummock::store::state_store: successfully requiring memory: 119, current 823582528
2023-05-25T07:09:37.538976Z  WARN risingwave_storage::hummock::store::state_store: successfully requiring memory: 119, current 823582409
2023-05-25T07:09:37.539006Z  WARN risingwave_storage::hummock::store::state_store: successfully requiring memory: 119, current 823582647
2023-05-25T07:09:37.539070Z  WARN risingwave_stream::executor::source::source_executor: source SourceExecutor<PHONE_NUMBER>6 paused, wait barrier for 12.743570818s
2023-05-25T07:09:37.539074Z  WARN risingwave_stream::executor::source::source_executor: source SourceExecutor 18A000027F9 paused, wait barrier for 12.743617649s
2023-05-25T07:09:37.539070Z  WARN risingwave_stream::executor::source::source_executor: source SourceExecutor 17A00002796 paused, wait barrier for 12.743418732s
2023-05-25T07:09:37.539094Z  WARN risingwave_stream::executor::source::source_executor: source SourceExecutor 187000027F9 paused, wait barrier for 12.718495998s

There're frequent compaction errors in the compactor's log. Is this normal? cc @hzxa21
2023-06-08T07:04:01.149054Z  WARN risingwave_storage::hummock::validator: Skip sanity check for SST 83. ObjectStore failed with IO error Internal error: read "hummock_001/39/83.data" in block Some(BlockLocation { offset: 6536, size: 432 }) failed, error: service error

IIRC, the SST validation only runs in CI and these log lines are expected since there is no coordination between validation and vaccum. In other words, validation task may be running on a recently vaccumed SST. https://github.com/risingwavelabs/risingwave/blob/572780bbca08c25a5d2f71016b915733e146df04/src/storage/src/hummock/validator.rs#L50

There're frequent compaction errors in the compactor's log. Is this normal?
It's normal. Will simplify the misleading message.

Removed from milestone.
I'll keep an eye on it when it's reproduced.

This issue has not reappeared recently.


Monitoring beacons - OnExit always called right after OnEntry even when staying in region.

  PLEASE DON'T ASK FOR WORKAROUNDS OR TIMELINES - THIS IS FREE SOURCE CODE
NO ISSUES ARE BEING TAKEN FOR DOCS, ONLY PR'S
ISSUES MUST include full reproducible sample and stacktrace or they will be closed without explanation!!!
Please check all of the platforms you are having the issue on (if platform is not listed, it is not supported)

[ ] iOS
[X] Android
[ ] UWP

PLATFORMS THAT YOU CANNOT FILE ISSUES ON RIGHT NOW: Tizen, watchOS, tvOS, macOS
IF YOU HAVE AN ISSUE WITH DOCUMENTATION, DO NOT FILE AN ISSUE - PR'S ONLY!
Feature Library

[ ] Core (Jobs, Settings, Initialization)
[ ] Locations (GPS, Geofencing, Motion Activity)
[ ] HTTP Transfers
[ ] Notifications
[ ] NFC
[ ] Push - Native
[ ] Push - Azure Notification Hub
[ ] Push - Firebase
[ ] Sensors
[ ] BluetoothLE Client
[ ] BluetoothLE Hosting
[X] Beacons
[ ] SQLite Integration

Version of Library
<IP_ADDRESS>10
Version of OS(s) listed above with issue
Android 10
Steps to Reproduce

Setup Beacon Monitoring
Start monitoring a region
Come into that region

Expected Behavior
Region Enter fires
Actual Behavior
Region enter fires and immediately after that region exit fire.
I think the issue is in this file shiny/src/Shiny.Beacons/Platforms/android+uwp/BackgroundTask.cs
async Task CheckStates(IList<Beacon> beacons)
        {
            var copy = this.GetCopy();
            var maxAge = DateTime.UtcNow.Subtract(TimeSpan.FromSeconds(20));  **// this will always be in the past**

            foreach (var state in copy)
            {
                foreach (var beacon in beacons)
                {
                    if (state.Region.IsBeaconInRegion(beacon))
                    {
                        state.LastPing = DateTime.UtcNow; **//this is now**
                        if (state.IsInRange == null)
                        {
                            state.IsInRange = true;
                        }
                        else if (!state.IsInRange.Value)
                        {
                            state.IsInRange = true;
                            if (state.Region.NotifyOnEntry)
                            {
                                await this.core.Services.RunDelegates<IBeaconMonitorDelegate>(
                                    x => x.OnStatusChanged(BeaconRegionState.Entered, state.Region)
                                );
                            }
                        }
                    }
                }
            }
            foreach (var state in copy)
            {
**//on first entry everything is true. LastPing will always be > maxAge. Seems maxage is setup wrong should be in the future not past?**
                if (state.IsInRange != null && state.IsInRange.Value && state.LastPing > maxAge)
                {
                    state.IsInRange = false;
                    if (state.Region.NotifyOnExit)
                    {
                        await this.core.Services.RunDelegates<IBeaconMonitorDelegate>(
                            x => x.OnStatusChanged(BeaconRegionState.Exited, state.Region)
                        );
                    }
                }
            }
        }

This will be fixed in an upcoming preview


Support configuring output nodes of dynamic tasks

This ensures the build system can correctly track when dynamic task outputs are deleted, and rebuild them

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please test Windows platform


smartphone landscape mode

Hello
While using the datetime picker is there a way to display the time picker inline with the calendar while the device is locked in landscape mode?
Thank you! :)

Hi,
you mean something like this?
This is not yet possible. Do you want to make a PR? Or I can add it instead.
The height of the popup is 374px in this configuration so it wouldn't fit on a 360px screen though.. It would need some optimalizations.

Yes! Exactly like that :)
I've tried editing the regular date time picker but could not get to your result?
Could you share it please ?
Thank you! :)

For a quick fix you can wrap each part with
 elements and wrap those two divs with
 element. It would need some improvements for general use though..


Pixelated banner unraid after adding custom theme

Hey gilbN
I added your theme for urnaid today using the plugin. But I have one issue my banner is now all pixlated? What could cause this? It worked before I added the theme:

Yeah, think I know why.

Cool is there a way to fix it?

Can you try and disable and re enable the custom banner.

I tried that also I changed back to the original banner for unraid still was an issue with it

Try and clear cache now

It works but now the font is removed here:

yeah removed the accent on the logo. Figured it would be hard to read on some banners
If you want to add it back:
#header path {
    fill: var(--accent-color);
}
</style><link type="text/css" rel="Stylesheet" href="https://gilbn.github.io/theme.park/CSS/themes/unraid/space-gray.css" />

Yea I get what you mean:

Pretty hard to read this text also

doesn't seem to happen with my space-gray them when i add those lines

maybe a browser limitation?

Tried edge just for the hell of it and it is the same on both Chrome and Edge

maybe it is worth to reinstall the Theme Engine plugin..

I actually tried that no luck :( it seems this problem is persistent over all themes for me the text is black instead of white which makes it hard to read

Can you inspect the element to see what's overriding it?

Can you inspect the element to see what's overriding it?
It does look like some weird cache issue though.

Is this what you want to see?

Something like this:

@AquaRelliux try and clear cache now

@AquaRelliux try and clear cache now

Seems to work now thank you :)


K8s python client failing to load_kube_config generated with newer versions of kconnect later than 0.5.10

What happened:
We use Kubernetes python client to perform operations on our EKS clusters. With the version of kconnect later than 0.5.10 kubernetes python client fails to perform load_kube_config with the error as:
while parsing a block mapping   in "/home/appuser/.kube/27ec83ee-a1f3-4dd6-9c18-8361b55ddbc0", line 20, column 7 expected <block end>, but found '-'   in "/home/appuser/.kube/27ec83ee-a1f3-4dd6-9c18-8361b55ddbc0", line 32, column 7
What did you expect to happen:
Kubernetes python client to work seamlessly with the newer versions of kconnect
How to reproduce it:
Use kconnect version later than 0.5.10, connect to cluster and use kubernets python client load_kube_config function
Anything else you would like to add:
We notice a new line "provideClusterInfo: false" being added to the config file which wasn't the case earlier.
Environment:

kconnect version (use kconnect version): 0.5.10
Kubernetes version (use kubectl version): 1.28.3
Target environment (e.g. EKS, AKS, Rancher): EKS
Authentication Used (e.g. SAML, IAM, Azure AD): IAM
Kubernetes python client version: 28.1.0

not an issue from kconnect

For reference, we determined the issue was some custom logic within a Python script:
with open(kubeconf_path, "a+") as f:
            f.write('      - name: AWS_SHARED_CREDENTIALS_FILE\n')
            f.write('        value: ' + awscred_path)

This snippet was causing the KUBECONFIG file to be invalid.


SAML attribute mapping failing

Is the issue already present in https://github.com/cloudera/hue/issues or discussed in the forum https://discourse.gethue.com?
No
Describe the bug:
When attempting to authenticate users via SAML attribute mapping, Hue thows the following error: backends     ERROR    attributes[saml_attr] attribute value is missing. Probably the user session is expired.
Googling this error message shows that it is thrown in djangosaml2.
Steps to reproduce it?
I have extended the latest Hue Docker image (and for now have successfully configured SAML authentication with  username_source=nameid as a workaround).
When initially configuring SAML authentication, I had noticed the suggestion of attribute mapping as an alternative option for my use-case. I noticed this approach outlined in a forum post, and further research showed the same style solution in the Cloudera documentation.
As per these examples I had configured [libsaml] with:
username_source=attributes
attribute_map_dir=/opt/cloudera/security/saml/attribute_mapping
user_attribute_mapping='{"uid":"username"}'

I also created the following map at /opt/cloudera/security/saml/attribute_mapping/saml_uri.py:
MAP = {
  "identifier": "urn:oasis:names:tc:SAML:2.0:attrname-format:uri",
 "fro": {
  'uid': 'uid',
 },
 "to": {
  'uid': 'uid',
 }
}

Finally, on the IdP side I created a custom attribute named uid  for consistency with the examples (I had previously tried with the default Active Directory attributes, which also failed with the same error).
I confirmed that the uid attribute was present in the IdP response before Hue errored out:
<saml:Attribute xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="uid" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"><saml:AttributeValue xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema">MY-CUSTOM-ID</saml:AttributeValue></saml:Attribute>
Finally, as referenced previously, Hue thows the following error on the backend: backends     ERROR    attributes[saml_attr] attribute value is missing. Probably the user session is expired. On the frontend authentication fails and entires an infinite loop of page redirects with https://[my-domain]/saml2/acs/ returning a 403 error.
Hue version or source? (e.g. open source 4.5, CDH 5.16, CDP 1.0...). System info (e.g. OS, Browser...).
Open Source 4.10.0

Commenting to remove 'stale' label.

For reference, I have documented my workaround here -<EMAIL_ADDRESS>

Hi @oisinBates, thanks for reporting this issue and sharing your solution. I apologize for the late reply, we are working on getting our community process back on track.
@wing2fly can you have a look to see if this is something we need to pick up?

@oisinBates,
As the post, please check if the file permission is readable for Hue runtime. You can Hue runtime user by run ps -ef | grep runcpserver or grep rungunicornserver depends on the version.
NOTE2: make sure hue can read from the saml_uri.py file.
For example:
# chown hue:hue saml_uri.py

Also enable the debug in Hue config by setting django_debug_mode=true. I hope we can see more info from https://github.com/IdentityPython/djangosaml2/blob/109fd9e07fc9ec3bd098aa744b3e158fee29be8b/djangosaml2/backends.py#L104.


Added how-html-works

Added How HTML works with web browsers in a new file how-html-works.md. #29

Done

@Ajay-Dhangar Please assign the labels to it.


1.0 TextField ref return null

1.0 TextField ref return null

[x ] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior

Current Behavior

1.0 TextField ref return null
Steps to Reproduce (for bugs)

Context

Your Environment

Tech
Version

Material-UI

React

browser

etc

The TextField is a stateless functional component, it's expected.

@oliviertassinari How will that helping me?


Show message on lbry.tv about balance sync if determined that user has an account on desktop/android

stub

possibly display something the first time a user signs in?


Second attempt to fix CSS regression.

6.0.5 (https://github.com/wikimedia/wikimedia-page-library/pull/137) fixed the CSS regression when developing locally, but when 6.0.5 was published the CollapseTable css again jumped above the ThemeTransform css. Based on the information below I suspect extract-text-webpack-plugin is at fault.
So this PR uses mini-css-extract-plugin instead of extract-text-webpack-plugin, per the recommendations in the comments linked below.

How can I keep the css order in the css file when I use extract-text-webpack-plugin？

https://github.com/webpack-contrib/extract-text-webpack-plugin/issues/200

...extract-text-webpack-plugin is for webpack3 and older (will not support webpack 4 it seems). They say to move to mini-css-extract-plugin...

https://github.com/webpack-contrib/extract-text-webpack-plugin/issues/200#issuecomment-374860248

The webpack >= v4.0.0 'support' for extract-text-webpack-plugin was moved to mini-css-extract-plugin as more lightweight approach for webpack >= v4.0.0 and ETWP entered maintenance mode. We are sorry for the inconvenience here, but ETWP reached a point where maintaining it become too much of a burden and it's not the first time upgrading a major webpack version was complicated and cumbersome due to issues with ETWP. The mid-term plan is integrate CSS support directly into webpack to avoid this kind of issue in the future

https://github.com/webpack-contrib/extract-text-webpack-plugin/issues/701#issuecomment-374551300

baseline at the top too


Warnings at compile

Compiling this sample as is and I have the following errors:
`warning MSB3246: Resolved file has a bad image, no metadata, or is otherwise inaccessible. Could not load file or assembly 'RevitAPILink.dll' or one of its dependencies. The module was expected to contain an assembly manifest.
warning MSB3246: Resolved file has a bad image, no metadata, or is otherwise inaccessible. Could not load file or assembly 'RevitAPIUILink.dll' or one of its dependencies. The module was expected to contain an assembly manifest.
warning MSB3246: Resolved file has a bad image, no metadata, or is otherwise inaccessible. Could not load file or assembly 'RevitDB.dll' or one of its dependencies. The module was expected to contain an assembly manifest.
warning MSB3246: Resolved file has a bad image, no metadata, or is otherwise inaccessible. Could not load file or assembly 'RevitUI.dll' or one of its dependencies. The module was expected to contain an assembly manifest.`
I have the SDK installed and under it all of the DLLs show up  (Even ones with warnings above) See image below. Any ideas?

Didn't come across that errors. One thing I would try is remove from your local .nuget directory any reference to Autodesk.Revit NuGet package and let VS to reinstall them again.

This didn't exactly work but it put me on the right track, Thank you!
.nuget and .proj files format still confuse the hell out of me compared to just referencing a dll through the UI, but here is how I got this to work:

download Revit_All_Main_Versions_API_x64 .nuget and install to VS each version you need ( I had to install them one at a time to this project & overwrite last reference
remove last .nugget reference installed to the project
in .csproj file go to the item group where it says <PackageReference Include="Autodesk.Revit.SDK" Version="2021.*" Condition=" '$(RevitVersion)' == '2021' " PrivateAssets="All" /> and change to <PackageReference Include="Revit_All_Main_Versions_API_x64" Version="2021.*" Condition=" '$(RevitVersion)' == '2021' " PrivateAssets="All" /> do that for all the version you need to target

Well, glad that you found a solution! The benefit of using NuGet package instead of referencing a dll from a local Revit installation is that it is easier to conditionally load one version from another, plus using NuGet package you don't necessary need to have Revit installed, although I admit making Revit addins without Revit is a shoot in the dark


Problem with emoji in anaconda prompt(miniconda)

So i run a twint in anaconda prompt(miniconda) to save out csv file and process in python and if i encounter tweet with emoji it will stop saving tweet.
This is a error message

1235038564930293762 2020-03-04 10:05:14 SE Asia Standard Time  ไฟนอล 7 รีเมค 😭😭😭😭😭�Traceback (most recent call last):
File "c:\users\user\miniconda3\lib\runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "c:\users\user\miniconda3\lib\runpy.py", line 85, in run_code
exec(code, run_globals)
File "C:\Users\User\Miniconda3\Scripts\twint.exe_main.py", line 7, in
File "c:\users\user\miniconda3\lib\site-packages\twint\cli.py", line 298, in run_as_command
main()
File "c:\users\user\miniconda3\lib\site-packages\twint\cli.py", line 290, in main
run.Search(c)
File "c:\users\user\miniconda3\lib\site-packages\twint\run.py", line 288, in Search
run(config, callback)
File "c:\users\user\miniconda3\lib\site-packages\twint\run.py", line 211, in run
loop.run_until_complete(Twint(config).main(callback))
File "c:\users\user\miniconda3\lib\asyncio\base_events.py", line 579, in run_until_complete
return future.result()
File "c:\users\user\miniconda3\lib\site-packages\twint\run.py", line 149, in main
await task
File "c:\users\user\miniconda3\lib\site-packages\twint\run.py", line 194, in run
await self.tweets()
File "c:\users\user\miniconda3\lib\site-packages\twint\run.py", line 140, in tweets
await output.Tweets(tweet, self.config, self.conn)
File "c:\users\user\miniconda3\lib\site-packages\twint\output.py", line 149, in Tweets
await checkData(tweets, config, conn)
File "c:\users\user\miniconda3\lib\site-packages\twint\output.py", line 136, in checkData
_output(tweet, output, config)
File "c:\users\user\miniconda3\lib\site-packages\twint\output.py", line 98, in _output
print(output.replace('\n', ' '))
OSError: [WinError 87] The parameter is incorrect
1235038564930293762 2020-03-04 10:05:14 SE Asia Standard Time  ไฟนอล 7 รีเมค 😭😭😭😭😭�Exception ignored in: <_io.TextIOWrapper name='' mode='w' encoding='utf-8'>
OSError: [WinError 87] The parameter is incorrect
1235038564930293762 2020-03-04 10:05:14 SE Asia Standard Time  ไฟนอล 7 รีเมค 😭😭😭😭😭�1235038564930293762 2020-03-04 10:05:14 SE Asia Standard Time  ไฟนอล 7 รีเมค 😭😭😭😭😭😭😭

i'm using Windows 10 pro 64-bit

OSError: [WinError 87]

Seems to be a compatibility issue with Windows rather than Twint itself

Do you mind sharing the Python version you're using? This problem was supposedly fixed in a patch on Python itself from the past year.

I'm currently using 3.7.5

It has to do with a tweet ending with emojis, as far as I'm aware. I don't really use python but I what I found is that the issue occurs only when outputting the tweets to console (as mentioned in https://github.com/twintproject/twint/issues/532#issuecomment-542697140 here).
So either using -ho/--hide-output, commenting from line 103 to line 107 in output.py or modifying line 104 to print(output.replace('\n', ' ').encode('utf-8')) fixes the issue if you want to output to a json or a csv file, though I'm not sure if it's the best solution.


Update 简体中文.json

fix JSON parse error.

I saw this too late. Already fixed via https://github.com/DevilXD/TwitchDropsMiner/commit/9ee872f4754f3a88043c5f94358bc22763d6058d.


Implement VRoomEditor GUI layout

This revision implements VRoomEditor GUI initial layout

Add initial GUI layout with UI Builder, UI Toolkit
Resize camera viewport adjusted with GUI scene rectangle

References

<EMAIL_ADDRESS>https://www.youtube.com/watch?v=t4tfgI1XvGs
https://www.youtube.com/watch?v=EVXFWXaZtjw

Good Job!
다만 Scene폴더와 Scenes폴더 중 사용 하지 않는 것은 삭제 하는 것이 좋을 것 같아.

@lusianm Good point!! I removed the unused directory Assets/Scenes.

Thanks for review!


Made confirmation message legible for userprofile setting in dark mode.

Made confirmation message legible for userprofile setting in dark mode
Closes #16783
Description

Added line for flash-message class.

color:#37474f
This changes color and thus the user can see the message "Your theme has been updated" when the user changes theme to dark mode from light mode.

@camperbot Hi thank you for the guideline. I will definitely follow it from next time.

Thanks @HebleV, looks great :+1:

Its been a pleasure @Bouncey Looking forward to more such contribution.


With recent ChatGPT UI update, the toolbar and injected "/" disappears after first use.

ChatGPT recently upated the UI and with the recent change the extension no longer works as expected. It will show up when first loading Chatgpt website, but after first use, the toolbar and script are no longer accessible in subsequent message exchanges. It will come back if you refresh the page but it will be entire new conversation.

Looks like this is getting addressed in next release.

Already submitted a patched versions to all the web stores, it'll take some time before they're reviewed and become available.
In the meantime you can install v3.2.7 manually.


[FEATURE REQ] Encode invalid URL character, even when encoded=true on PathParam or QueryParam

Is your feature request related to a problem? Please describe.
@PathParam(value = "<>", encoded = true) or @QueryParam(value = "<>", encoded = true).
If customer sends some value that containsinvalid character (e.g. "foo bar" which contains a space), the URL sent would include the space, e.g.
"HTTP request","method":"GET","url":"https://localhost:3000/contoso/v1/contoso/foo bar"

(I tested on Netty and OkHttp client)
This would be an invalid URL.
Describe the solution you'd like
azure-core keeps the reserve character like / or %, but still percent-encoding the character that would be invalid in URL.
We need some investigation about what character is invalid in URL.
Reply from Python, the percent-encoding happens in their underlying http client.
Describe alternatives you've considered
Codegen may do the escaping. But it would be more consistent if in azure-core
Additional context
Add any other context or screenshots about the feature request here.
Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[x] Description Added
[x] Expected solution specified

Thanks for reporting this ask Weidong.
I'm actually going to push back against this request from the Core perspective as in this case the path and query parameter annotations state the passed value is already encoded. Which if we try to encode again, we may run into double encoding issues which are just as nebulous, if not worse because they'll always be valid but would result in possible corruption / requests that aren't doing what is expected.
Or to state it more bluntly, I'd rather throw a very explicit error than try to work and maybe work correctly. But, I'd be happy to add in utility methods that could be called to handle these scenarios.

Note that there could be some difference (other than the invalid char) between allowReserved from x-ms-skip-url-encoding.
https://github.com/Azure/cadl-ranch/pull/673#discussion_r1726178663
I think currently that discussion is still on going.
If eventually we do need to do some extra encoding for valid char (but not among "reserved" char), we may do this in generated code, and not touching the encoded = true logic in azure-core.


⚠ Itaca Gallery has degraded performance

In adf5f4c, Itaca Gallery ($SITE_TCGLR) experienced degraded performance:

HTTP code: 200
Response time: 5952 ms

Resolved: Itaca Gallery performance has improved in 789c87a after 20 minutes.


IS NULL filter operator

Describe the bug
IS NULL is included in the filter extension logic. However, I cannot get it to work with cql2-json or cql2-text.
https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/blob/2d6cb4dabb5847fa22e4734187779dcbcb7b41b9/stac_fastapi/core/stac_fastapi/core/extensions/filter.py#L74
To Reproduce
Steps to reproduce the behavior:

docker compose up app-opensearch or docker compose up app-elasticsearch
python3 data_loader.py --base-url http://localhost:8082
Try the following:
POST http://localhost:8082/search
body

{
  "filter-lang": "cql2-json",
  "filter": {
            "op": "isNull",
            "args": [ { "property": "sentinel:data_coverage" } ]
          }

}

{
    "detail": "Error with cql2_json filter: Q() can only accept dict with a single query ({\"match\": {...}}). Instead it got ({})"
}

GET http://localhost:8082/search?filter=sentinel:data_coverage > 50 OR landsat:coverage_percent < 10 OR (sentinel:data_coverage IS NULL AND landsat:coverage_percent IS NULL)
{
    "detail": "Error with cql2_json filter: Q() can only accept dict with a single query ({\"match\": {...}}). Instead it got ({})"
}

Expected behavior
valid ItemCollection

In https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/blob/e45cfea64871978a90e99cdfc8d185dec5c6f30f/stac_fastapi/core/stac_fastapi/core/extensions/filter.py#L135-L142:
It seems ComparisonOp.IS_NULL is absent in the list, so that the following if query["op"] == ComparisonOp.IS_NULL: fails. Could this be the problem?


Analyst Dashboard - Filters

User Story
As an analyst, I want to open a sidebar with filters not in the table columns so that I can easily find applications from more detailed criteria.
Acceptance Criteria
Filter fields
| CCBC ID | text |
| Status | Dropdown |
| Project name | Text |
| Oraganization | Text |
| Lead| Dropdown |
| Package | Dropdown |
Screen behaviour

[ ] Show filter row (1st click):
Given the filter row is hidden
When I click on the "Filter by" button
Then the filter row slides down css {transition: all .5s ease-in-out;}
And the filter by button changes to selected (#3F5986 50%)

[ ] Hide filter row (2nd click):
Given the filter row is visible
When I click on the "Filter by" button
Then the filter row slides up css {transition: all .5s ease-in-out;}
And the filter by button changes back to (#3F5986 16%)

[ ] Click filter by then the filter row slides down. css {transition: all .5s ease-in-out;} and the filter by button changes to selected (3F5986 50%)
Filter icon: https://fontawesome.com/icons/filter?s=solid&f=classic
[ ] Click filter by again and the filter row slides up
[ ] For text input filters, begins after 3 characters typed and 500ms delay
[ ] Typing another character
[ ] Filter will search for all the letters together anywhere in the results.
[ ] Adding a subsequent filter finds the match of the two (received AND tel; not received OR tel)
[ ] Chip appears above the table when a filter is applied
[ ] Remove filter by clicking x in the chip
[ ] For text input filters, backspace to no characters removes filter (and chip)
[ ] Text input maxlength is the length of the longest string for that field in the database OR CCBCID is 11 characters, Project title is 60, Organization is 60
[ ] Number of results shows beside the chip(s)
[ ] Sort order is kept when filters are applied

Design
Default view

Chips

@elliottSlee thoughts on the and/or logic for each of them? they are a bit wonky

Blocked by design decisions of eligibility assessment outcomes

Is this now unblocked given that we have the outcomes

Looking into the CAS table, it looks like we'd have to use this extension: https://github.com/graphile-contrib/postgraphile-plugin-connection-filter to include filters on the table. There are some other settings we'd want to look into for this, and also will need to some checks on load testing to see if we need to create any indexes on the jsonb columns and their nested fields to increase speed. There are some tradeoffs to this that we'll need to examine with some additional load testing and analyses.

I noticed that it doesn't do dynamic filtering, i.e. you have to click Apply after you have typed in the filter.  Would it be a setting to allow dynamic filtering or does it require more custom coding?

@elliottSlee and @zoeyli-46 , the wireframes links are pointing to hidden frames.
Can you add the screenshot on the card?

@eazeredo as mentioned yesterday, these cards are outdated. We will be starting them over from scratch when we have more solidified designs. In chat with Mars, we decided that we need to figure out more about dev effort for different aspects.

@MarsRomer2 AC & wireframes updated for this card

@elliottSlee , follow some suggestions below for the first part.
I also added a few new ACs.

User Story
As an analyst,
I want to filter applications
so that I can easily find them
Acceptance Criteria
Filter fields

Field
Type
Domain
MaxLength

CCBC ID
text
-
6

Status
Dropdown
List of implemented statuses
-

Project name
Text
-
60

Oraganization
Text
-
60

Lead
Dropdown
Full list of analysts
-

Package
Dropdown
List of existent packages
-

Page behaviour
Filter by button
Filter icon: https://fontawesome.com/icons/filter?s=solid&f=classic

[ ] Show filter row (1st click):
Given the filter row is hidden
When I click on the "Filter by" button
Then the filter row slides down css {transition: all .5s ease-in-out;}
And the filter by button changes to selected (#3F5986 50%)

[ ] Hide filter row (2nd click):
Given the filter row is visible
When I click on the "Filter by" button
Then the filter row slides up css {transition: all .5s ease-in-out;}
And the filter by button changes back to (#3F5986 16%)
And the applied filters are reseted

Filter Behaviour

[ ] Show "Number of results" after a filter is applied
[ ] Sort order is kept when filters are applied
[ ] For text input filters, begins after 3 characters typed and 500ms delay
[ ] For text input filters, typing another character, the filter will search for all the letters together anywhere in the results
[ ] For text input filters, a "space" character has the behaviour of an "OR" for the field (organization="TELUS" OR "Rogers")
[ ] For text input filters, backspacing to no characters removes the filter (and chip)
[ ] For dropdown filters, selecting an empty value removes the filter (and chip)
[ ] Filtering by two or more fields, they will be combined by an inclusive clause (status="Received" AND organization="TELU")

Chip

[ ] Chip appears above the table when a filter is applied
[ ] Remove the filter by clicking x on the chip

@eazeredo Looks much more legible, go ahead & put that in the card. Except please remove this AC: > For text input filters, a "space" character has the behaviour of an "OR" for the field (organization="TELUS" OR "Rogers")

@elliottSlee I changed it from

For text input filters, a "space" character has the behaviour of an "OR" for the field (organization="TELUS" OR "Rogers")

to

For text input filters, a "space" character has the same behaviour as any other character

I think it's important to make clear the expected behaviour of the space character.


fix(dependencies): remove dependency font-awesome

This dependency has been added in #418 and is only useful in the context
of a specific plugin.

Mmm, you are right, I'm going to move it to devDependencies, so the examples can be run.
Thanks

:+1:


Proposal for a public BigFloat::to_f64

I have a use case where I need to go back and forth between BigFloat and f64. fn to_f64(&self) -> f64 would be perfect.
For context there is an existing pub(crate) implementation. https://github.com/stencillogic/astro-float/blob/00d5150dabcd578b89e83ab9f34f1605568f5a7e/astro-float-num/src/num.rs#L795.
I would like to propose cleaning up this method and tweak it to follow Rust's convention with casting between f32 and f64. According to the nomicon

Casting from an f32 to an f64 is perfect and lossless
Casting from an f64 to an f32 will produce the closest possible f32

if necessary, rounding is according to roundTiesToEven mode ***
on overflow, infinity (of the same sign as the input) is produced

*** as defined in IEEE 754-2008 §4.3.1: pick the nearest floating point number, preferring the one with an even least significant digit if exactly halfway between two floating point numbers.

Here the same rules can be followed.

If precision is <= 52, the conversion is lossless.
Otherwise produce the closest possible f64 (includes subnormals)

if necessary, rounding is according to roundTiesToEven mode
on overflow, infinity (of the same sign as the input) is produced

I am open to working on this contribution.

Yes, please, feel free to make this change. The reason why this function is only crate-public is exactly because it requires proper rounding and transition to subnormal. I would though consider the following signature for the function: pub fn to_f64(&self, rm: RoundingMode) -> f64, so user would be able to choose how to round.

Actually it would be nice to have conversion for all primitives with similar behaviour as when using the as keyword. (e.g., negative f64 as u64 gives 0). We could implement the From/Into traits. An example for u64: (I didn't test for nan and inf yet):
impl From<BigFloat> for u64 {
    fn from(value: BigFloat) -> u64 {
        let sign = value.sign().unwrap();
        let exponent = value.exponent().unwrap();
        let mantissa = value.mantissa_digits().unwrap()[0];
        match sign {
            Sign::Pos => {
                if exponent > 0 {
                    if exponent <= 64 {
                        let shift = (64 - exponent) as u64;
                        let ret = mantissa;
                        ret >> shift
                    } else {
                        u64::MAX
                    }
                } else {
                    0
                }
            }
            Sign::Neg => 0,
        }
    }
}

Agreed that some generic way could be nice here, but I don't know if From/Into is the right thing. Those are meant for lossless conversions, e.g. the below does not work:
let a: f32 = 10.0f64.into();

I still think that generics are a good idea, since if we are lucky we will have f16 and f128 at some point. Maybe a signature using num_traits like:
impl BigFloat {
    fn as_float<T: Float>(&self, rounding_mode: RoundingMode) -> T;
}

Yes you are right using the From/Into for something that is not perfectly converted wouldn't follow rust idioms.
if we can have a as_float but also a as_int (maybe also a as_uint) that would be awesome. If this complicates things, having one function per type (i.e., to_f64, to_u64, ... ) as initially proposed won't bother me that much neither.

BTW: The solution I posted above only work for 64 bits architecture, I'm sure you know better than I how to fix this. Hopefully I won't encounter users that still very old computers :) (though if we can have an official well tested functions that would be better).

Regarding implementing conversion to primitive integer types, do you have actual use cases for it?
Issues that I can think of: what would be the behavior if the value exceeds the maximum allowed value for the primitive type? Return error and let client code decide, or clamp to max value? With clamping you can encounter situation when you want to know if it was clamped, and have a way to determine it somehow?
Seems like a good idea to have, for example, both kinds of functions: the one that returns error and the other is saturating, e.g. to_u64_saturating which does clamping.

New issue #28 has been opened. Please use it for further discussion.


Introduce an event sink and improve fixup

This introduce an event sink instead of logging everything to os.Stderr.
The goal is for client code to control the rendering of events in a meaningfull way.
3 events are exposed:

CopyImageStart: happens when the fixup logic starts working on an image
CopyImageEnd: happens when the fixup logic ends working on an image (Error field is populated on error)
Progress: a new progress snapshot has been recorded

The Client Code can choose the granularity of its display. The Progress snapshot exposes the whole graph of descriptor currently processed by the fixup logic.
Example of rich output that can be done:

Squashed & cleaned-up a bit the fixup logic
@silvin-lubecki @ijc PTAL

@simonferquel you've ended up commiting a file called nul here again...

Yes, don't know why, anytime I run the e2e tests locally, I get this file created and my reflex of doing git add . && git commit --sm "blabla" makes it appear againg and again...

nul is the windows equivalent of /dev/null I suppose? I wonder if it is the value of ioutil.Discard on Windows (devnull(0)) or something?

@chris-crone @ijc I'll wait for your feedback to squash / remove the nul file

Just squashed (and removed the nul file). Waiting for @chris-crone GO to merge.