Viseron is bombing MQTT Messages in a loop

Hi , I am running Viseron with 3 cams sending MQTT messages to my broker service. I noticed that sometimes , if someone was doing something in front of the cams a lot of images are generated and send within MQTT. Everything allright so far .. But after such a high message rush, viseron seems to be continue sending MQTT messages... I noticed it after some hours because my receiving fhem server was lagging due to overload with these messages. Next time I will continue here to provide you with more detail informations like logs etc... but the question is : Is there something easy I can adjust like "do not send more then 1 Message / second " ?
here is what I found in the logs:
[2023-05-29 19:12:34] [ERROR   ] [root] - Uncaught thread exception
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/src/viseron/components/data_stream/__init__.py", line 185, in consume_data
    self.static_subscriptions(data_item)
  File "/src/viseron/components/data_stream/__init__.py", line 165, in static_subscriptions
    self.run_callbacks(
  File "/src/viseron/components/data_stream/__init__.py", line 122, in run_callbacks
    for callback in callbacks.values():
RuntimeError: dictionary changed size during iteration
[2023-05-29 19:12:36] [ERROR   ] [viseron.components.nvr.nvr.camera_2] - Failed to retrieve result for object_detector
[2023-05-29 19:12:39] [ERROR   ] [viseron.watchdog.thread_watchdog] - Thread data_stream is dead, restarting
[2023-05-29 19:28:34] [ERROR   ] [root] - Uncaught thread exception
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/src/viseron/components/data_stream/__init__.py", line 185, in consume_data
    self.static_subscriptions(data_item)
  File "/src/viseron/components/data_stream/__init__.py", line 165, in static_subscriptions
    self.run_callbacks(
  File "/src/viseron/components/data_stream/__init__.py", line 122, in run_callbacks
    for callback in callbacks.values():
RuntimeError: dictionary changed size during iteration
[2023-05-29 19:28:39] [ERROR   ] [viseron.watchdog.thread_watchdog] - Thread data_stream is dead, restarting
[2023-05-29 20:24:34] [ERROR   ] [root] - Uncaught thread exception
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/src/viseron/components/data_stream/__init__.py", line 185, in consume_data
    self.static_subscriptions(data_item)
  File "/src/viseron/components/data_stream/__init__.py", line 165, in static_subscriptions
    self.run_callbacks(
  File "/src/viseron/components/data_stream/__init__.py", line 122, in run_callbacks
    for callback in callbacks.values():
RuntimeError: dictionary changed size during iteration
[2023-05-29 20:24:36] [ERROR   ] [viseron.components.nvr.nvr.camera_2] - Failed to retrieve result for object_detector
[2023-05-29 20:24:36] [ERROR   ] [viseron.components.nvr.nvr.camera_1] - Failed to retrieve result for object_detector
[2023-05-29 20:24:39] [ERROR   ] [viseron.watchdog.thread_watchdog] - Thread data_stream is dead, restarting
[2023-05-29 20:27:33] [ERROR   ] [root] - Uncaught thread exception
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/src/viseron/components/data_stream/__init__.py", line 185, in consume_data
    self.static_subscriptions(data_item)
  File "/src/viseron/components/data_stream/__init__.py", line 165, in static_subscriptions
    self.run_callbacks(
  File "/src/viseron/components/data_stream/__init__.py", line 122, in run_callbacks
    for callback in callbacks.values():

and here I have a log part - you can see what kind of MQTT messages are beeing send nonstop:
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_garage attributes_theoretical_max_fps: 15.6
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_garage attributes_name: terrasse_vorn Object Detector FPS
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_garage attributes_preprocessor_fps: 118.7
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_garage attributes_inference_fps: 15.6
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_domain: sensor
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn 15.6
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_name: terrasse_vorn Object Detector FPS
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_preprocessor_fps: 118.7
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_inference_fps: 15.6
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_theoretical_max_fps: 15.6
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_domain: sensor
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse 15.6
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_preprocessor_fps: 118.7
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_name: terrasse_vorn Object Detector FPS
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_inference_fps: 15.6
2023-05-29 20:45:41 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_theoretical_max_fps: 15.6
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_domain: sensor
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_theoretical_max_fps: 15.6
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn 15.6
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_inference_fps: 15.6
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_name: terrasse_vorn Object Detector FPS
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_preprocessor_fps: 135.0
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage attributes_theoretical_max_fps: 15.6
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage 15.6
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage attributes_inference_fps: 15.6
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage attributes_preprocessor_fps: 135.0
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage attributes_name: terrasse_vorn Object Detector FPS
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage attributes_domain: sensor
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_domain: sensor
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_name: terrasse_vorn Object Detector FPS
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_preprocessor_fps: 135.0
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_inference_fps: 15.6
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse 15.6
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_theoretical_max_fps: 15.6
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage attributes_domain: sensor
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage attributes_inference_fps: 16.0
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage attributes_name: terrasse_vorn Object Detector FPS
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage attributes_preprocessor_fps: 131.9
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage attributes_theoretical_max_fps: 15.9
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_garage 15.9
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_theoretical_max_fps: 15.9
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_domain: sensor
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn 15.9
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_inference_fps: 16.0
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_name: terrasse_vorn Object Detector FPS
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_preprocessor_fps: 131.9
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_theoretical_max_fps: 15.9
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_domain: sensor
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse 15.9
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_inference_fps: 16.0
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_name: terrasse_vorn Object Detector FPS
2023-05-29 20:45:42 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_preprocessor_fps: 131.9

Is there anything I can adjust to avoid this? After a restart of Viseron everything works fine for the first time

I saw your discussion about this but was awaitng the logs, so thanks for that!
First if all, it seems that you are not running the latest version, could you update to 2.2.0? The error in your logs, RuntimeError: dictionary changed size during iteration is fixed there.
The only image sent over MQTT is the latest_thumbnail which is only generated and sent once when a recording starts, which should not flood your MQTT server.
The FPS sensor that you see in your MQTT log is only updated once every 30 seconds.
Try updating and see if that solves anything, if not, it would be great if you could catch the logs when the flooding begins

as suggested, I updated to the last version, but the problem persists. Here are some new logs:
[2023-06-28 21:47:39] [ERROR   ] [root] - Uncaught thread exception
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/src/viseron/components/data_stream/__init__.py", line 185, in consume_data
    self.static_subscriptions(data_item)
  File "/src/viseron/components/data_stream/__init__.py", line 165, in static_subscriptions
    self.run_callbacks(
  File "/src/viseron/components/data_stream/__init__.py", line 135, in run_callbacks
    thread.start()
  File "/usr/lib/python3.8/threading.py", line 852, in start
    _start_new_thread(self._bootstrap, ())
RuntimeError: can't start new thread
[2023-06-28 21:47:41] [ERROR   ] [viseron.components.nvr.nvr.camera_1] - Failed to retrieve result for object_detector
[2023-06-28 21:47:53] [ERROR   ] [viseron.watchdog.thread_watchdog] - Thread data_stream is dead, restarting
[2023-06-28 21:47:55] [INFO    ] [viseron.components.nvr.nvr.camera_3] - Stopping recording in: 9
[2023-06-28 21:47:56] [INFO    ] [viseron.components.nvr.nvr.camera_3] - Stopping recording in: 8
[2023-06-28 21:47:57] [INFO    ] [viseron.components.nvr.nvr.camera_3] - Stopping recording in: 7
[2023-06-28 21:47:58] [INFO    ] [viseron.components.nvr.nvr.camera_3] - Stopping recording in: 6
[2023-06-28 21:47:59] [INFO    ] [viseron.components.nvr.nvr.camera_3] - Stopping recording in: 5
[2023-06-28 21:48:00] [INFO    ] [viseron.components.nvr.nvr.camera_3] - Stopping recording in: 4
[2023-06-28 21:48:01] [INFO    ] [viseron.components.nvr.nvr.camera_3] - Stopping recording in: 3
[2023-06-28 21:48:02] [INFO    ] [viseron.components.nvr.nvr.camera_3] - Stopping recording in: 2
[2023-06-28 21:48:03] [INFO    ] [viseron.components.nvr.nvr.camera_3] - Stopping recording in: 1
[2023-06-28 21:48:04] [INFO    ] [viseron.components.nvr.nvr.camera_3] - Stopping recording in: 0
[2023-06-28 21:48:04] [INFO    ] [viseron.components.nvr.nvr.camera_3] - Pausing motion detector
[2023-06-28 21:48:04] [INFO    ] [viseron.components.ffmpeg.recorder.camera_3] - Stopping recorder
[2023-06-28 21:56:47] [ERROR   ] [root] - Uncaught thread exception
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/src/viseron/components/data_stream/__init__.py", line 185, in consume_data
    self.static_subscriptions(data_item)
  File "/src/viseron/components/data_stream/__init__.py", line 165, in static_subscriptions
    self.run_callbacks(
  File "/src/viseron/components/data_stream/__init__.py", line 122, in run_callbacks
    for callback in callbacks.values():
RuntimeError: dictionary changed size during iteration
[2023-06-28 21:56:53] [ERROR   ] [viseron.watchdog.thread_watchdog] - Thread data_stream is dead, restarting
[2023-06-28 21:57:17] [ERROR   ] [root] - Uncaught thread exception
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/src/viseron/components/data_stream/__init__.py", line 185, in consume_data
    self.static_subscriptions(data_item)
  File "/src/viseron/components/data_stream/__init__.py", line 165, in static_subscriptions
    self.run_callbacks(
  File "/src/viseron/components/data_stream/__init__.py", line 122, in run_callbacks
    for callback in callbacks.values():
RuntimeError: dictionary changed size during iteration
[2023-06-28 21:57:23] [ERROR   ] [viseron.watchdog.thread_watchdog] - Thread data_stream is dead, restarting

the last entry was written 2 hours ago from now ...!
and here what in my mqtt server is arriving:
2023-06-28 22:36:38 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_domain: sensor
2023-06-28 22:36:38 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_theoretical_max_fps: 18.6
2023-06-28 22:36:38 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_theoretical_max_fps: 18.6
2023-06-28 22:36:38 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_domain: sensor
2023-06-28 22:36:38 MQTT2_DEVICE MQTT2_viseron_terrasse 18.6
2023-06-28 22:36:38 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_preprocessor_fps: 165.2
2023-06-28 22:36:38 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_name: terrasse_vorn Object Detector FPS
2023-06-28 22:36:38 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_inference_fps: 18.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_inference_fps: 18.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_name: terrasse_vorn Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_preprocessor_fps: 160.0
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_theoretical_max_fps: 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_inference_fps: 18.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_name: terrasse_vorn Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_preprocessor_fps: 160.0
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_theoretical_max_fps: 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_theoretical_max_fps: 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_name: terrasse_vorn Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_preprocessor_fps: 160.0
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_inference_fps: 18.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage 23.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_inference_fps: 23.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_preprocessor_fps: 185.3
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_name: garage Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_theoretical_max_fps: 23.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_theoretical_max_fps: 23.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_name: garage Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_preprocessor_fps: 185.3
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_inference_fps: 23.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn 23.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse 23.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_theoretical_max_fps: 23.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_preprocessor_fps: 185.3
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_name: garage Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_inference_fps: 23.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_theoretical_max_fps: 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_inference_fps: 18.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_name: terrasse_vorn Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_preprocessor_fps: 165.2
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_theoretical_max_fps: 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_inference_fps: 18.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_preprocessor_fps: 165.2
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_name: terrasse_vorn Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_inference_fps: 18.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_preprocessor_fps: 165.2
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_name: terrasse_vorn Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_theoretical_max_fps: 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_theoretical_max_fps: 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_preprocessor_fps: 160.0
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_name: terrasse_vorn Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_inference_fps: 18.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_name: terrasse_vorn Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_preprocessor_fps: 160.0
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_inference_fps: 18.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_theoretical_max_fps: 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse 18.6
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_inference_fps: 18.7
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_preprocessor_fps: 160.0
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_name: terrasse_vorn Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_theoretical_max_fps: 18.6
2023-06-28 22:36:39 at ScriptAnwesendCheck Next: 22:37:34
2023-06-28 22:36:39 at atVictronOutputPow Next: 22:36:38
2023-06-28 22:36:39 ModbusAttr VictronMP DailyPowerToBattery: 5252.79166667171
2023-06-28 22:36:39 ModbusAttr JKBMS AlarmCellInbalance: 0
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_preprocessor_fps: 204.3
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_name: terrasse_hinten Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_inference_fps: 16.4
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn 16.3
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_theoretical_max_fps: 16.3
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse_vorn attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage 16.3
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_theoretical_max_fps: 16.3
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_name: terrasse_hinten Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_preprocessor_fps: 204.3
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_garage attributes_inference_fps: 16.4
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_theoretical_max_fps: 16.3
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_name: terrasse_hinten Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_preprocessor_fps: 204.3
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_inference_fps: 16.4
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse 16.3
2023-06-28 22:36:39 Shelly ShellyBalkon Power_GUI: 0
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_domain: sensor
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse 18.4
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_theoretical_max_fps: 18.4
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_preprocessor_fps: 203.4
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_name: terrasse_hinten Object Detector FPS
2023-06-28 22:36:39 MQTT2_DEVICE MQTT2_viseron_terrasse attributes_inference_fps: 18.5

as told before these messages are arriving in a permanent loop, and the main process of my FHEM Server is consuming 100% CPU...
When I reboot viseron the problem is resolved for some days...

hmm ... no ideas with his problem ? Arent there any things I can try? Am I the only person with such a problem?

I have not had any other reports like this unfortunately.
What could be helpful for me is if you can redirect the logs for both Viseron and your MQTT server to files, that way we can see exactly what happens before the flooding begins.
For docker you can do this:  docker logs viseron>& viseron.log

I just now noticed the RuntimeError: can't start new thread error in your log.
Seems that Viseron is spawning more threads than your machine can handle, that might then spiral into some edge case, causing the flood.
I just pushed a new version to dev which includes some extra safe guards against that.
Can you pull latest dev and see if there are any improvements?

wow cool ... im just pulling the dev version  ... it will take some days , maybe some weeks to verify if the problem persists or not ...
thanks a lot!

unfortunately it happend 2 more times... yesterday and today... I cant see this "cant start thread" message anymore in the logs... I also did not see any crashes or something strange in the logs... Is there anything I can adjust the logs to see more?

Sad to hear that :(
Could you enable debug logging?
logger:
  default_level: debug

And also redirect the logs to a file so we can see the whole event process like this: docker logs viseron>& viseron.log


[Remote State Repositories] Introduce a new prefix for configuring remote publication repositories

Is your feature request related to a problem? Please describe
For remote clusters, that store segment and translog in remote,  the repositories are configured as node attributes with attribute prefix remote_store. This causes limitation for clusters which want to store only metadata in remote. As the repositories for cluster-state and routing-table also use the same prefix remote_store, it causes cluster-manager to incorrectly assume that publication nodes as remote nodes.
Describe the solution you'd like
We can introduce a new attribute prefix  remote_publication to configure publication repositories and make the prefix configurable via static setting. Since the attributes of remote_store and remote_publication configuration don’t overlap, the validation of repository attributes during NodeJoin would be evaluated only for the corresponding node types by cluster-manager.
Related component
Cluster Manager
Describe alternatives you've considered
No response
Additional context
No response

[Catch All Triage - 1, 2, 3, 4]


Add Sha1 class methods digest() and size()

Adds the following methods to the Sha1 class:

digest(): returns a pointer to the digest data.
size(): returns the digest size.

It's strange, I've just pushed the same commit to main but this PR is not marked as merged. Closing it (but it's merged).


Icon request: My Digital Life Forums

URL for the brand / site / app
https://forums.mydigitallife.net/
Logo resources for the icon
https://forums.mydigitallife.net/img/logo.svg
Anything else?
My Digital Life has 2FA and support Aegis

Here is the link: https://forums.mydigitallife.net/account/two-step
Confirmation

[X] I have read and followed the issue guidelines.

Here you go!
https://github.com/aegis-icons/aegis-icons/blob/master/SVG/My Digital Life Forums.svg

:question: How to add icon(s) to Aegis?
:star: Support this project by giving a star! Just adding like to this comment is also appreciated.


[KIWI-1540] - BAV | FE | Welsh Translation copy changes

What changed
Updated BAV journey to include Welsh translation for all text.
Why did it change
So Welsh speaking users can access the BAV service.
Issue tracking

KIWI-1540

Checklists

Do we need to update allowedLangs so that the html language updates?


[FLINK-7450] [types] Fix type extraction of bounded generic POJO fields

What is the purpose of the change
This PR fixes the type extraction of POJO fields with bounded generics. Before those fields were treated as unknown fields with Object type in Kryo. This PR breaks backwards compatibility for jobs with such special cases. We need to discuss if we want to do that.
Brief change log

Use generic bounds of type variables during POJO extraction

Verifying this change

Two unit tests have been added

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: yes
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? JavaDocs

Hi, @twalthr may I review this ?

@twalthr Is this PR still active ?

@echauchot the PR is quite old. actually it is valid but would break backwards compatibility with records stored in Flink's state

I will close it for now. Maybe we can include it in Flink 2.0 or so.

Ok Timo, thanks for the update


Stat name collisions

Description:

http.<stat_prefix>.fault.delays_injected and http.<stat_prefix>.fault.<downstream-cluster>.delays_injected both resolve to http.fault.delays_injected
http.<stat_prefix>.fault.aborts_injected and http.<stat_prefix>.fault.<downstream-cluster>.aborts_injected both resolve to http.fault.aborts_injected

https://www.envoyproxy.io/docs/envoy/latest/configuration/http_filters/fault_filter#statistics
edit:
I found one more https://www.envoyproxy.io/docs/envoy/latest/configuration/cluster_manager/cluster_stats.html#alternate-tree-dynamic-http-statistics
Those resolve to the same as https://www.envoyproxy.io/docs/envoy/latest/configuration/cluster_manager/cluster_stats.html#dynamic-http-statistics

I'd like to broaden this issue a bit since a collision has happened before here.  In addition to correcting the collision above, we should add ASSERTs to ensure they don't happen anywhere else.  Also, because the tag system is configurable and we want to maintain its flexibility, maybe it should be possible to disable these ASSERTs as well, but I'm less sure if that makes sense.  Thoughts?
cc @mattklein123 @jmarantz @htuch

@ofek I'm confused how there is a collision here. I don't think there is. Can you expand?
@mrice32 sure we can do collision detection somehow, though TBH I'm not sure exactly how since the stats system is built such that multiple code sites can access the same stat. Can you open a fresh issue for discussing that?

@mattklein123 The tag-extracted metric names are the same, so there is no way to discern the meaning unless you give meaning based on the number of tags, which is not right.

@mattklein123 See #2687.

@ofek yup OK sorry didn't realize this was a tag extraction collision. I will defer to @mrice32 and @taiki45 on how to resolve.

@jmarantz I think you were asking whether we should change the names of those stats or modify the extraction process to fix this collision instance.  tl;dr Without changing the names of the stats themselves, I'm not sure how to fix this instance.
I think it will be difficult to use the same sort of regex fix that we used in #2141 here because that took advantage of Envoy-defined structure in the tag value.  The tags here are user defined, so we can't assume any structure for them.  The current system doesn't allow tag extraction to add anything to the name - only remove, which limits our mitigation options here.

So I still don't really understand the bounds of the solution space.
What if the tag extraction process didn't merely remove the tag values, but replaced them with the values with the names of the extracted tags?  Of course that would be a stats_impl change that would require some effort, but I don't know who is dependent on the current exact syntax of the tag-extracted names.

@jmarantz That's an interesting idea.  I have no problem with something like that, although IMO, it makes the names a little less intuitive to read.  I'll pull in a few folks who have worked on integrating with other stats systems to hear their thoughts: @srvaroa @taiki45 @JonathanO @lita.  Feel free to pull in others who may have opinions here.

@jmarantz @mrice32 Can you please give an example of what that might look like? Also fyi, @DataDog will (using the /stats endpoint) soon depend on tag-extracted names being unique metric names.

I found one more https://www.envoyproxy.io/docs/envoy/latest/configuration/cluster_manager/cluster_stats.html#alternate-tree-dynamic-http-statistics
Those resolve to the same as https://www.envoyproxy.io/docs/envoy/latest/configuration/cluster_manager/cluster_stats.html#dynamic-http-statistics

@ofek An example of @jmarantz's proposed solution is that http.my_custom_prefix.fault.delays_injected resolves to http.envoy.http_conn_manager_prefix.fault_delays_injected` as its tag extracted name.  This means that collisions will essentially never occur.
Also, both solutions will affect user visible stats outputs, so I'm curious what Envoy's change policy is with respect to stats?  Should we go through a deprecation cycle where we have the old name and new name coexist for a version?

@mrice32 @jmarantz Using the /stats endpoint, how could one derive my_custom_prefix from envoy.http_conn_manager_prefix? If you can't, then the output would be more or less useless to consumers of the stats API.

@ofek http.envoy.http_conn_manager_prefix.fault.delays_injected would be the new tag extracted name (this example would resolve to http.fault.delays_injected today).  The vector of tags and tag names would still accompany the tag extracted name as they do today, so envoy.http_conn_manager_prefix would be listed as a tag in that vector with a tag_value of my_custom_prefix.

Ah, now I understand. Yes that envoy prefix indication of the tag would be great.
It would be really, really useful if the json output had a format like:
{
  "name": "http.fault.delays_injected",
  "value": 0,
  "tags": {
    "stat_prefix": "my_custom_prefix"
  }
}

Are collisions now impossible?

Yeah, I don't think this has changed. Reopened and tagged "help wanted". @jmarantz is there any suggested resolution on your side?


docs: add comma in list

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Please refer to the first reviewer :)

I'm gonna close this one to only merge the other one


fix(styles): improve selector lint rules

Alaska Airlines Pull Request
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes: #290
Summary:
This change adds local lint rules for ID and class selector syntax
Type of change:
Please delete options that are not relevant.

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

Checklist:

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

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

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


access vlan support for app interfaces

Signed-off-by: gkodali-zededa<EMAIL_ADDRESS>

Overall direction is reasonable, but it is actually very difficult to review until we do rebase on the latest netlink as a separate PR.
Let's do that first @gkodali-zededa

Done. Pulled latest netlink as a separate PR and merged.


Create topLevelGroup if not-cache hit. Fixes #129

We want to add a group to the topLevelGroups array if it was not caused
by a cache hit (at any level recursively -- because this means we
already would have added it), AND only the top-most group (after
all intermediate groups finish.
This regressed in the most recent fix to fileGroups.
Looks like this regressed with the fix to fileGroups. It seems like
the topLevelGroups field is a big source of problems, so I put a TODO
to figure out a way to kill it.
It would be nice to capture createIntermediateGroups somehow in the fixture, but then we wouldn't be catching the other case. Maybe we need another fixture?

Thanks for this @bkase, but I'm not sure I'm such a fan of all the required caching params and the complexity this adds.
I think I would need to see a failing test to understand the problem better, but can this be solved by checking if a group is already in topLevelGroups before trying to add it?

We would need to check if any parents of this path is in topLevelGroups as well, but that's an interesting idea, I'll see if I can get something better

We're heads down at work on getting a proof-of-concept up, so I may not have time for this until the weekend. fileGroups should work on master, though, so hopefully this isn't blocking anyone.

Tagging @keith, so he's aware

Fixed in #144


Model static data file dependencies

To support a deployable sandbox with a selection of available models, we need to identify, document, and curate the required static resources for each model.
This issue is intended to track known existing data dependencies required, where they currently exist, and how we intend to support deploying these into a given sandbox instance.
In order to support a standard, reproducible sandbox with well defined applications, these static data should be pinned to particual model code versions that support those, and I suspect we will need to copy these files into an s3 sandbox archive to guarantee reproducibility?  Or we will want to checksum each static resource and keep those available to verify each deployment (assuming the source of the data will be available as long as this project is.)

We have been saving versioned static data for the NOSOFS model applications since early in this project. We have also saved this data for each of the model applications we have tested. Each institution's model application will have different dependencies and might do things a lot differently, e.g. LiveOcean.
See:
https://github.com/ioos/Cloud-Sandbox/blob/main/cloudflow/workflows/scripts/getNOSOFSfix.sh
and
https://github.com/ioos/Cloud-Sandbox/blob/main/cloudflow/workflows/scripts/get_fixfiles_s3.sh
Saving them to an S3 bucket is the best bet to ensure long-term availability.


ignore syntax doesn't appear to work

const paths = {
  scripts: ["client/**/*.js", "!client/app.js"]
};

export default function* () {
  yield this.watch(paths.scripts, "build")
}

export function* build () {
  yield this
    .source(paths.scripts)
    .concat('app.js')
    .target("client");
}

I'm getting multiple copies of the code in app.js, one for each time the build task is executed

Hi chovy,
This was actually reported earlier (#106) and it's on the radar for the near future! Heck, I might even get to it tonight, seeing that I've tip-toed around the same issue in previous projects :wink:

@chovy I forgot that I had actually fixed this for myself a few weeks ago. Just sent over the commits & then I'll ping you when they've made it in :+1:

Closed in 0.8.7. Please let me know if you are still having issues. :)


step095-emscripten object loader warning, "Material file [ fourareen.mtl ] not found in a path :"

The App prints the warning, "Material file [ fourareen.mtl ] not found in a path :" when running the branch "step095-emscripten" as a native build using MinGW gcc (installed via MSys2, run via CLion).  The effect of not loading the material is the boat is darker and the background is black.
There's an additional argument that can be passed to tinyobj::LoadObj, "mtl_basedir".  You'd think when mtl_basedir is not passed (left default), LoadObj would use the path where the "fourareen.obj" file is to find the corresponding "fourareen.mtl" file in the same folder.  This appears not to be the case; it needs to be explicitly told where to look.
When I used filesystem::path::remove_filename() to create a value to pass for mtl_basedir, then the native build of the App is able to load the mtl file.  The effect is the boat model is lighter in shade and the background is dark gray instead of black.
Unfortunately my fix does not work on the Emscripten target:  there, it changes the warning to, "Material file [ fourareen.mtl ] not found in a path : C:/Users/dferr/CLionProjects/LearnWebGPU-Code/resources/".  A full path from my C: drive seems incorrect here.  I tried using direct strings such as RESOURCE_DIR macro or various relative paths, but they didn't work.
I notice you use ${CMAKE_CURRENT_SOURCE_DIR} to construct RESOURCE_DIR in CMakeLists.txt; CMAKE_CURRENT_SOURCE_DIR is an absolute path, and I think that gets "baked in" when you pass it to --preload-file in Emscripten.  (Uncertain, then, why the absolute path for fourareen.obj works to load it, but an absolute path for mtl_basedir fails to work for fourareen.mtl?  Might have something to do with the file api tinyobj uses, or the way it processes paths.)
I looked at an unrelated Emscripten-powered project I have which loads game files from a resource folder, and there I was using a relative path ("../res") as the argument to --preload-file.  When I changed RESOURCE_DIR and --preload-file in the LearnWebGPU-code project to use "../resources" and passed that for mtl_basedir, loading the materials worked in all 3 of my configuration targets (native debug, native release, and web).
Of course this relative dir of "../resources" is relative to how CLion instructs CMake to place build files in a cmake-build-x folder; I'm not sure how to generalize this for all situations.

The .mtl file is referenced by the .obj file, but since we do not use the information it contains, I did not share it. The warning can be ignored and has no impact (ideally I should edit the .obj so that it no longer references this .mtl file).

When I used filesystem::path::remove_filename() to create a value to pass for mtl_basedir, then the native build of the App is able to load the mtl file. The effect is the boat model is lighter in shade and the background is dark gray instead of black.

This difference in colors comes from the fact that the surface provided by Chrome/Dawn is not in the same color space than the one provided by wgpu-native. You can address this by changing the 2.2 pow to a 1.0 at the end of the fragment shader but it is not related to the warning. You may even use this function to automatically figure out which value to use.

I notice you use ${CMAKE_CURRENT_SOURCE_DIR} to construct RESOURCE_DIR in CMakeLists.txt; CMAKE_CURRENT_SOURCE_DIR is an absolute path, and I think that gets "baked in" when you pass it to --preload-file in Emscripten. (Uncertain, then, why the absolute path for fourareen.obj works to load it, but an absolute path for mtl_basedir fails to work for fourareen.mtl? Might have something to do with the file api tinyobj uses, or the way it processes paths.)

The idea of using the RESOURCE_DIR define is that depending on whether you build a dev version, a sharable desktop version or a web version, it is left to the build system to manage whether paths are absolute or relative so you should not have to worry about it.
In the case of emscripten, all resource files are bundled in a .data file that reproduces a mini file system. The web application cannot directly access your local files for obvious security and portability reasons. ;)


Incremental compiler should always run the java compiler

In mixed mode, if there are Scala errors issued by the Java parser in scalac, java sources are not recompiled. This can lead to very confusing behavior in the IDE, where there's no bytecode generated, but no error messages.
Because the Java parser in Scala is not 100% compatible with Java, the Eclipse IDE won't show errors in Java sources when they are reported by scalac (for example, see this ticket) -- an error marker would prevent launching, for example.

Should we close this?

I don't think the problem was solved.

True, my bad @dragos.
So, IIUC, you suggest to always run the Java compiler even if the Scala compilation fails. You want it to get sane error messages from Javac -- so that you know that Scala dependencies are missing and were not compiled. Please, confirm this is what you had in mind and I'll port it over to the Zinc repository.

Ported to Zinc, can be closed. https://github.com/sbt/zinc/issues/343


Caddy does not recognize middleware for server type other than HTTP

1. What version of Caddy are you using (caddy -version)?
Caddy 0.10.6
2. What are you trying to do?
Run Caddy with server type DNS as a DNS proxy to Google's DNS-over-HTTPS
3. What is your entire Caddyfile?
.:53 {
	proxy . <IP_ADDRESS>:53 <IP_ADDRESS>:53 {
		protocol https_google
	}
}

4.  Please paste any relevant HTTP request(s) here.
N/A
6. What did you expect to see?
The server is running and proxying DNS queries to Google's DNS-over-HTTPS
7. What did you see instead (give full error messages and/or log)?
2017/08/06 22:40:23 no action found for directive 'proxy' with server type 'dns' (missing a plugin?)
8. How can someone who is starting from scratch reproduce the bug as minimally as possible?
Download caddy with the DNS plugin, create the Caddyfile referenced above, then run caddy.
For the record, I am able to run Coredns with the same file successfully.

Hmm, I wonder if the dns plugin is configured to plug in the correct package?
/cc @miekg

./caddy -plugins should list them all? Note that caddy also has a proxy plugin....
I would just use CoreDNS binary is itself: https://github.com/coredns/coredns/releases/latest
(and https://coredns.io)

Well, it should work when built from the website, too. From what I can tell, the CoreDNS plugin on the Caddy website should be configured to have this as its package: github.com/coredns/coredns/core- because that package imports all the plugins. If the website has a different package then it's probably configured wrong.
@Mohammed90 What is the output of caddy -plugins?

This is the output of caddy -plugins:
Server types:
  dns
  http

Caddyfile loaders:
  short
  flag
  default

Other plugins:
  http.basicauth
  http.bind
  http.browse
  http.errors
  http.expvar
  http.ext
  http.fastcgi
  http.gzip
  http.header
  http.index
  http.internal
  http.limits
  http.log
  http.markdown
  http.mime
  http.pprof
  http.proxy
  http.push
  http.redir
  http.request_id
  http.rewrite
  http.root
  http.status
  http.templates
  http.timeouts
  http.websocket
  shutdown
  startup
  tls
  tls.storage.file

Hmm, I'm seeing it too. @miekg, what is the package configured on the website?

What? What do you need?
On Aug 7, 2017 5:57 PM, "Matt Holt"<EMAIL_ADDRESS>wrote:

Hmm, I'm seeing it too. @miekg https://github.com/miekg, what is the
package configured on the website?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mholt/caddy/issues/1810#issuecomment-320719592, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAVkW1lcgWE9Muo0NDeUuaLfetauDNAqks5sV0HngaJpZM4Ou0nt
.

@miekg Sorry to not be clear -- I mean, when publishing a plugin to the Caddy website, the submitter needs to give the package import path. i.e. github.com/coredns/coredns/core - is this the package path for your plugin? (You can log into the devportal and take a look. I could too but I'd have to write a little bit of code to inspect it, and I'm at work right now...)
Just saying, if it's simply a wrong package path, this is an easy fix. :)

[ Quoting<EMAIL_ADDRESS>in "Re: [mholt/caddy] Caddy does not re..." ]

@miekg Sorry to not be clear -- I mean, when publishing a plugin to the Caddy website, the submitter needs to give the package import path. i.e. github.com/coredns/coredns/core - is this the package path for your plugin? (You can log into the devportal and take a look. I could too but I'd have to write a little bit of code to inspect it, and I'm at work right now...)
Just saying, if it's simply a wrong package path, this is an easy fix. :)

Oh I had coredns/coredns/core/dnsserver ...
Did a new deploy with the above path.
/Miek
--
Miek Gieben

Yay \o/
Now it will import all the things :tada: Thanks!

@miekg Oops:
package github.com/mholt/caddy/caddy
	imports github.com/mholt/caddy/caddy/caddymain
	imports github.com/coredns/coredns/core/: non-canonical import path: "github.com/coredns/coredns/core/" should be "github.com/coredns/coredns/core"

Lose the trailing slash ;)

[ Quoting<EMAIL_ADDRESS>in "Re: [mholt/caddy] Caddy does not re..." ]

@miekg Oops:
package github.com/mholt/caddy/caddy
	imports github.com/mholt/caddy/caddy/caddymain
	imports github.com/coredns/coredns/core/: non-canonical import path: "github.com/coredns/coredns/core/" should be "github.com/coredns/coredns/core"

Lose the trailing slash ;)

Ack, but that interface could use some finishing touches :)

I'm sorry! I'll get around to it eventually. I'll try to add a thing that just strips any trailing slash.

I confirmed it works now. Thanks!

[ Quoting<EMAIL_ADDRESS>in "Re: [mholt/caddy] Caddy does not re..." ]

I confirmed it works now. Thanks!

Awesome! \0/
/Miek
--
Miek Gieben


The future of cocos2d-x

I do not want to harm such a strong desire to fix and improve something in dead cocos2d-x, but I really want to clarify this.
It's just simply abandoned and dead as for me.

I created a simple bug in UI which is till this day wasn't fixed and it's 2years passed like since that/
https://github.com/cocos2d/cocos2d-x/issues/18616
When people ask simple question - where is roadmap?  They didn't get any proper answer, just like because there is no any real roadmap.
But they still just pretend that there is life, only I don't understand for whom, honestly.
Who is using cocos2d-x for the new games? Everyone is using the only one engine - unity.
When you download any SDK from analytics or ads for iOS&android  it's just presented in two versions:

native ObjC/Swift
unitypackage
What does this mean?

Moreover, if you want to publish your game with some mobile publisher and tell him that your game is made on cocos2d-x - you will have a big problems in everything. Simply put, the publisher will ask you to redo everything on a unity.

I think, they are focus on Cocos Creator

Yes, trying to clone unity. Waste of time.

Actually, we are using unity

And our company also have cocos2d game published, and very successfully.

Some improvements of this repo inspired from them

Such as openal for all platform, freetype stream pasing

@KAMIKAZEUA
Maybe you have to look here: (there is always a C++ support)
e.g. FireBase Android https://firebase.google.com/docs/samples/#android
If your focus more on some 3th party SDKs so you have to choose what your "important"  3th party SDK supporting at the moment.
Of course it is Unity and some others too (C++) at the moment.

I just want to say that there’s no sense to develop such engine.. at all.

That's right.
There are much more things wich makes no sense but we like it.
Neverone can stop us 😏

@KAMIKAZEUA, you having a big challange to tell all "not Unity using" projects on the world "only Unity is the right stuff".
You get my respect for this journey :)

Just take a look - https://discuss.cocos2d-x.org/t/is-cocos2d-x-still-being-maintained/51394
Someone asked this. But first - why to ask? Like if you ask the same question about unity? Lol.. nothing to add.
Last remaining users asking this because there are a lot of reasons for this.. they see this and even feel. Most of other users have long given up the idea of using it.
Notice also, that any such kind of topics on that forum always closing asap, like that one or even removed later.
If that admin will find my these posts here) he(slackmoehrle) will remove that topic for sure. By the way that forum is like he's place, he is god here) bcs no one else from officials doing/answering anything there.
I have no idea why he trying to convince everyone that cocos2d-x is not dead. More and more remaining users will ask this, seeing the reality..
People need truth! But no facts!

Ok. Let me say you are right. But that's your way.
Here is my way:
I like to use ENGX.  Hazel Engine i think it will have a lot of future, and will have all this c++ freedom we love. I would put efforts on this engine.

@mignaciolopez looks interesting. I hope they will do a proper editor for it!


Change between front and back camera

How can I change between front and back camera?

Hi, @CassianoMouraLeao
You can change devicePosition property to .front. Please see the example code https://github.com/nkmrh/FilterCam/blob/master/Example/Example/ViewController.swift#L25

What if I watch to switch between front and back camera on button action, in that case changing the value of devicePosition is not working

@khanskt786 I think I'm experiencing this as well. Although I was playing around with the framework to understand it but for now let's assume the project I downlaoded is in the same state as the OP.
Keep in mind I just began working on the camera frameworks and shaders so my knowledge may not be best practice. Although looking through Apple's Camera Project AVCam, you can tell it's similar to this awesome framework the Author has made for us, and just by looking at the changeCamera(_:) method you can made a crude adaption to the code base.
The first place we should begin is within the the Capture class. Tested on my iPhone X, you'll need to also include conditional code that applies to the target devices for your app. But this should get the camera to switch, although my video isn't mirrored properly which is something you may experience too, but we're only talking about switching cameras here.
`func changeCamera(devicePosition: AVCaptureDevice.Position) {
queue.async {
guard let session = self.session else { return }
//remove existing input devices first then add the new devices
session.beginConfiguration()
		//https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/avcam_building_a_camera_app
		//https://stackoverflow.com/questions/30755043/avfoundation-toggle-camera-fails-at-canaddinput
		for input in session.inputs {
			//video
			session.removeInput(input as! AVCaptureDeviceInput)
			//audio
			session.removeInput(input as! AVCaptureDeviceInput)
		}

		//create new AVCaptureDeviceInput for video
		if let videoDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: devicePosition) {
			self.videoDevice = videoDevice
			guard let videoDeviceInput = self.videoDeviceInput else { return }
			if session.canAddInput(videoDeviceInput) {
				session.addInput(videoDeviceInput)
			} else {
				session.addInput(self.videoDeviceInput!)
			}
		}

		//create new AVCaptureDeviceInput for audio
		if let audioDevice = AVCaptureDevice.default(.builtInMicrophone, for: .audio, position: .unspecified) {
			self.audioDevice = audioDevice
			guard let audioDeviceInput = self.audioDeviceInput else { return }
			if session.canAddInput(audioDeviceInput) {
				session.addInput(audioDeviceInput)
			} else {
				session.addInput(self.audioDeviceInput!)
			}
		}

		session.commitConfiguration()
	}
}`

I call this function in the Recorder class. So make another function in the Recorder class to be called in your appropriate ViewController.
Cheers

Thought I'd quickly add mirroring documentation is provided by the author. Just search for mirroring and apply the transform as written.

@khanskt786 I think I'm experiencing this as well. Although I was playing around with the framework to understand it but for now let's assume the project I downlaoded is in the same state as the OP.
Keep in mind I just began working on the camera frameworks and shaders so my knowledge may not be best practice. Although looking through Apple's Camera Project AVCam, you can tell it's similar to this awesome framework the Author has made for us, and just by looking at the changeCamera(_:) method you can made a crude adaption to the code base.
The first place we should begin is within the the Capture class. Tested on my iPhone X, you'll need to also include conditional code that applies to the target devices for your app. But this should get the camera to switch, although my video isn't mirrored properly which is something you may experience too, but we're only talking about switching cameras here.
func changeCamera(devicePosition: AVCaptureDevice.Position) {
	queue.async {
		guard let session = self.session else { return }
		//remove existing input devices first then add the new devices
		session.beginConfiguration()
		//https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/avcam_building_a_camera_app
		//https://stackoverflow.com/questions/30755043/avfoundation-toggle-camera-fails-at-canaddinput
		for input in session.inputs {
			//video
			session.removeInput(input as! AVCaptureDeviceInput)
			//audio
			session.removeInput(input as! AVCaptureDeviceInput)
		}
		//create new AVCaptureDeviceInput for video
		if let videoDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: devicePosition) {
			self.videoDevice = videoDevice
			guard let videoDeviceInput = self.videoDeviceInput else { return }
			if session.canAddInput(videoDeviceInput) {
				session.addInput(videoDeviceInput)
			} else {
				session.addInput(self.videoDeviceInput!)
			}
		}

		//create new AVCaptureDeviceInput for audio
		if let audioDevice = AVCaptureDevice.default(.builtInMicrophone, for: .audio, position: .unspecified) {
			self.audioDevice = audioDevice
			guard let audioDeviceInput = self.audioDeviceInput else { return }
			if session.canAddInput(audioDeviceInput) {
				session.addInput(audioDeviceInput)
			} else {
				session.addInput(self.audioDeviceInput!)
			}
		}

		session.commitConfiguration()
	}
}

I call this function in the Recorder class. So make another function in the Recorder class to be called in your appropriate ViewController and attach it to your button.
Cheers

thanks for your replay but please where to put this function and when call it ?

@khanskt786 I think I'm experiencing this as well. Although I was playing around with the framework to understand it but for now let's assume the project I downlaoded is in the same state as the OP.
Keep in mind I just began working on the camera frameworks and shaders so my knowledge may not be best practice. Although looking through Apple's Camera Project AVCam, you can tell it's similar to this awesome framework the Author has made for us, and just by looking at the changeCamera(_:) method you can made a crude adaption to the code base.
The first place we should begin is within the the Capture class. Tested on my iPhone X, you'll need to also include conditional code that applies to the target devices for your app. But this should get the camera to switch, although my video isn't mirrored properly which is something you may experience too, but we're only talking about switching cameras here.
func changeCamera(devicePosition: AVCaptureDevice.Position) {
	queue.async {
		guard let session = self.session else { return }
		//remove existing input devices first then add the new devices
		session.beginConfiguration()
		//https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/avcam_building_a_camera_app
		//https://stackoverflow.com/questions/30755043/avfoundation-toggle-camera-fails-at-canaddinput
		for input in session.inputs {
			//video
			session.removeInput(input as! AVCaptureDeviceInput)
			//audio
			session.removeInput(input as! AVCaptureDeviceInput)
		}
		//create new AVCaptureDeviceInput for video
		if let videoDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: devicePosition) {
			self.videoDevice = videoDevice
			guard let videoDeviceInput = self.videoDeviceInput else { return }
			if session.canAddInput(videoDeviceInput) {
				session.addInput(videoDeviceInput)
			} else {
				session.addInput(self.videoDeviceInput!)
			}
		}

		//create new AVCaptureDeviceInput for audio
		if let audioDevice = AVCaptureDevice.default(.builtInMicrophone, for: .audio, position: .unspecified) {
			self.audioDevice = audioDevice
			guard let audioDeviceInput = self.audioDeviceInput else { return }
			if session.canAddInput(audioDeviceInput) {
				session.addInput(audioDeviceInput)
			} else {
				session.addInput(self.audioDeviceInput!)
			}
		}

		session.commitConfiguration()
	}
}

I call this function in the Recorder class. So make another function in the Recorder class to be called in your appropriate ViewController and attach it to your button.
Cheers

Hey @markhmwong,
Thanks for your help. When I call the method after pressing my button, the camera view pauses and the console prints this:
AVAudioSession_iOS.mm:1243  Deactivating an audio session that has running I/O. All I/O should be stopped or paused prior to deactivating the audio session. 2022-02-05 14:54:56.920404-0800 te[11623:2926004] Failed to set background audio preference
Any idea why this is happening?


unicode characters in response body

https://github.com/darrenburns/posting/blob/7b1d0ae86d2990fa89d52b612284af3aaf590b55/src/posting/widgets/response/response_area.py#L80
In some JSON-type API requests, the returned content may contain Unicode characters, it will show as '\uxxx....' and making the response body unreadable.
Maybe, will you please add an 'ensure_ascii=False' parameter in json.dumps to resolve this kind of issue?

Thanks for the report! Fixed in 1.1.0: https://github.com/darrenburns/posting/releases/tag/1.1.0


log4j-core-2.x.jar file replacement

Note I haven't tested this in recipe form yet.
Added a new template for unzip in prefetch block so it doesn't try to use the Utility command in a prefetch block.
Tested my original version on Windows and Linux, will test in recipe form later today.

Minor issues on yamllint and pre-commit results, but those can be tweaked later.


Hack teleporting from top of the map to bottom

Hi, i got hack today, he is teleport from top of the map to bottom
flying to top 2 and eating him!
how i prevent this hackers from doing so.
i didn't got such of hackers in 1.5.0, i don't know is this hacker new or designed to the new version.
my current version 1.6.1

@SomeoneCares11 send a GIF / video clip of such thing happening.

This script i modified works on agar.red
`
var EjectDown = false;
var speed = 1;
window['addEventListener']('keydown', keydown);
window['addEventListener']('keyup', keyup);
var Feed = false;
var Speed = 25; //uknow
function split() {
var EjectDown = false;
var speed = 1;
$('body')['trigger']($.Event('keydown', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}));
$('body')['trigger']($.Event('keyup', {
keyCode: 32
}))
}
function mass() {
if (Feed) {
window['onkeydown']({
keyCode: 87
});
window['onkeyup']({
keyCode: 87
});
setTimeout(mass, Speed)
}
}
function keydown(_0xdd63x8) {
if (_0xdd63x8['keyCode'] == 69) {
Feed = true;
setTimeout(mass, Speed)
};
if (_0xdd63x8['keyCode'] == 75) {
X = window['innerWidth'] / 5;
Y = window['innerHeight'] / 0;
$('canvas')['trigger']($.Event('mousemove', {
clientX: X,
clientY: Y
}))
};
if (_0xdd63x8['keyCode'] == 16 || _0xdd63x8['keyCode'] == 52) {
split();
setTimeout(split, Speed);
setTimeout(split, Speed * 2);
setTimeout(split, Speed * 3)
};
//if (_0xdd63x8['keyCode'] == 82 || _0xdd63x8['keyCode'] == 'yourkey') {
//split();
//setTimeout(split, Speed);
//setTimeout(split, Speed * 2)
//};
if (_0xdd63x8['keyCode'] == 81 || _0xdd63x8['keyCode'] == 'yourkey') {
split();
setTimeout(split, Speed)
};
if (_0xdd63x8['keyCode'] == 'yourkey' || _0xdd63x8['keyCode'] == 'yourkey2') {
split();
split(1000);
setTimeout(split, Speed);
setTimeout(split, Speed * 2);
setTimeout(split, Speed * 4)
};
if (_0xdd63x8['keyCode'] == 76) {
X = window['innerWidth'] / 0;
Y = window['innerHeight'] / 5;
$('canvas')['trigger']($.Event('mousemove', {
clientX: X,
clientY: Y
}))
};
if (_0xdd63x8['keyCode'] == 74) {
X = window['innerWidth'] / -0;
Y = window['innerHeight'] / 3.2;
$('canvas')['trigger']($.Event('mousemove', {
clientX: X,
clientY: Y
}))
};
if (_0xdd63x8['keyCode'] == 73) {
X = window['innerWidth'] / 3.0;
Y = window['innerHeight'] / -0;
$('canvas')['trigger']($.Event('mousemove', {
clientX: X,
clientY: Y
}))
}
}
function keyup(_0xdd63x8) {
if (_0xdd63x8['keyCode'] == 69) {
Feed = false
}
}
if (event['keyCode'] == 68) {
X = window['innerWidth'] / 0;
Y = window['innerHeight'] / 5;
$('canvas')['trigger']($.Event('mousemove', {
clientX: X,
clientY: Y
}))
}
`

@AlexHGaming see @OfficialKake reply, thats what is going on in my servers too.
@OfficialKake does it works with 1.5.0 ? Or you didn't try yet? and what is the solution in your opinion

Definitely the same issue as #1370 has, but now that it's been reported again this looks like our issue. I'll look into it in about 12ish hours

@SomeoneCares11 I dont try for 1.5.0

Didn't read the other issue, but it appears Luka already did some tests and it doesn't work with the latest version of the server. Can we get more people to do tests with newer versions of the server see if it still occurs at all or if it's just these two running custom versions of MultiOgar?

@MastaCoder I can help

I haved tested on 6 servers:
MultiOgar
1.2.68 = Does not work.
MultiOgar-Edited
1.3.5 = Does not work.
1.4.2 = Does not work.
1.6.0 = Works.
1.6.1 = Works.
MultiOgar-Edited-Unlimited
1.0.3 = Does not work.

Good work on testing them all, I'll get a patch up ASAP

@OfficialKake version 1.5.0 is here: https://github.com/Megabyte918/MultiOgar-Edited/tree/8eec70e43dc9ab9a891a5163a23f01d38abb07e0.

Any news?

@Agarian Thanks.

This has been fixed.
Close.

Please don't close, i'm still having this issue, even after the fix. i'm trying to inform you with more details.

https://youtu.be/hoBdl2cfgbQ ,This is after the fix.

Now?


SECURESIGN-185 | Add tests to all pipelines

Pr to re add rekor e2e tests in RHTAP
May have to wait until resource quota issues are fixed for it to run

/retest

/retest

/retest


venv/bin/pip install breaks when PYVENV_LAUNCHER is present

... rather than just getting virtualenv from PATH. I am currently having some hard-to-debug issues on Travis CI (OS X, with python.org CPython installers) right now (e.g.) partly because the system virtualenv is not what I want nox to use. (Also relevant)

This would be pretty straightforward, we should just invoke "python -m
virtualenv".
On Sun, Sep 17, 2017, 10:32 AM Danny Hermes<EMAIL_ADDRESS>wrote:

... rather than just getting virtualenv from PATH. I am currently having
some hard-to-debug issues on Travis CI (OS X, with python.org CPython
installers) right now (e.g.
https://travis-ci.org/dhermes/bezier/jobs/276557367) partly because the
system virtualenv is not what I want nox to use.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/jonparrott/nox/issues/44, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPUczybh1a1W0uBTOOzEgqXnkYpX3ilks5sjVeGgaJpZM4PaN2y
.

OK so it turns out that was not the real issue, but https://github.com/pypa/virtualenv/issues/845 is.
With the same invoke.py from there:
# https://github.com/pypa/virtualenv/issues/845
import sys
import subprocess

subprocess.Popen(sys.argv[1:]).wait()

The following (do_it.sh) produces a sad face:
#!/bin/bash
#
# FROM: https://github.com/pypa/virtualenv/issues/845

PY_EXE="/Library/Frameworks/Python.framework/Versions/3.6/bin/python3"
${PY_EXE} -m virtualenv venv > /dev/null 2>&1
${PY_EXE} invoke.py venv/bin/pip install pytest > /dev/null 2>&1
cat venv/bin/py.test
rm -fr venv > /dev/null 2>&1

Witness:
$ ./do_it.sh
#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3

# -*- coding: utf-8 -*-
import re
import sys

from pytest import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

To make you extra happy @jonparrott here is a repro of this issue with nox:
# nox.py
import nox

VERSION_CMD = '; '.join([
    'import sys',
    'print(sys.prefix)',
    'print(getattr(sys, "real_prefix", None))',
])

@nox.session
@nox.parametrize('py', ['2.7', '3.5', '3.6'])
def aw_man(session, py):
    session.interpreter = 'python{}'.format(py)

    session.install('pytest')

    bin_path = '.nox/aw_man-py-{}/bin/py.test'.format(py.replace('.', '-'))
    session.run('cat', bin_path)
    session.run('python', '-c', VERSION_CMD)

Make sure everything is up to date:
$ /Library/Frameworks/Python.framework/Versions/2.7/bin/python2 -m pip install \
>   --upgrade virtualenv pip nox-automation
$ /Library/Frameworks/Python.framework/Versions/3.5/bin/python3 -m pip install \
>   --upgrade virtualenv pip nox-automation
$ /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 -m pip install \
>   --upgrade virtualenv pip nox-automation

Then run each session with the "wrong" virtualenv:
$ PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" nox -s "aw_man(py='2.7')"
nox > Running session aw_man(py='2.7')
nox > virtualenv /Users/...here/.nox/aw_man-py-2-7 -p python2.7
nox > chdir /Users/...here
nox > pip install --upgrade pytest
nox > cat .nox/aw_man-py-2-7/bin/py.test
#!/Users/...here/.nox/aw_man-py-2-7/bin/python

...
nox > python -c import sys; print(sys.prefix); print(getattr(sys, "real_prefix", None))
/Users/...here/.nox/aw_man-py-2-7/bin/..
/Library/Frameworks/Python.framework/Versions/2.7
nox > Session aw_man(py='2.7') successful. :)
$
$
$ PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}" nox -s "aw_man(py='3.5')"
nox > Running session aw_man(py='3.5')
nox > virtualenv /Users/...here/.nox/aw_man-py-3-5 -p python3.5
nox > chdir /Users/...here
nox > pip install --upgrade pytest
nox > cat .nox/aw_man-py-3-5/bin/py.test
#!/Library/Frameworks/Python.framework/Versions/3.5/bin/python3

...
nox > python -c import sys; print(sys.prefix); print(getattr(sys, "real_prefix", None))
/Users/...here/.nox/aw_man-py-3-5/bin/..
/Library/Frameworks/Python.framework/Versions/3.5
nox > Session aw_man(py='3.5') successful. :)
$
$
$ PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}" nox -s "aw_man(py='3.6')"
nox > Running session aw_man(py='3.6')
nox > virtualenv /Users/...here/.nox/aw_man-py-3-6 -p python3.6
nox > chdir /Users/...here
nox > pip install --upgrade pytest
nox > cat .nox/aw_man-py-3-6/bin/py.test
#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3

...
nox > python -c import sys; print(sys.prefix); print(getattr(sys, "real_prefix", None))
/Users/...here/.nox/aw_man-py-3-6/bin/..
/Library/Frameworks/Python.framework/Versions/3.6
nox > Session aw_man(py='3.6') successful. :)

There is a reasonable fix (H/T to https://github.com/sephii/taxi/commit/91bf6e4e293580433dee211a3d7b64e8bc21d1f2):
If I change invoke.py
...
# WAS: subprocess.Popen(sys.argv[1:]).wait()
subprocess.Popen(sys.argv[1:], env={}).wait()

then we have
$ ./do_it.sh
#!/Users/...REDACTED.../venv/bin/python3

...

So is this our fault or vitualenvs? If it's our fault, what can we do to fix it?
It seems tox removes a few env vars before invoking processes, we could easily do the same.

It's the fault of the python.org distributed Python IIUC. This is how I chose to fix it so that I could get green tests using nox and the "official" Python distros on OS X (this is actually important when building wheels).
I would suggest doing exactly what tox does. As linked, you can see that I endorse pop-ing __PYVENV_LAUNCHER__. I can't speak for PIP_RESPECT_VIRTUALENV or PIP_REQUIRE_VIRTUALENV but I'm sure they are in the same boat.

Does it make sense to do this unilaterally for all commands?

@jonparrott I'm not sure, but definitely with pip install.


Fixed reconcile running on all KIngress after ksvc deletion

Why
I found Reconcile running on all KIngress after ksvc was removed.
The same problem has been reported. #941
Changes
Fixed conditions under which resyncConflicts are executed.
https://github.com/knative-extensions/net-kourier/blob/cbd0d74/pkg/reconciler/ingress/ingress.go#L135
Related PR
#502, #486

/ok-to-test

I tested it locally with conflicting dms, stamping it.
/lgtm

/cherry-pick release-1.12
/approve


[Docs] Component Dependencies: Operator deployments

Current State
Make sure you deploy operators as needed when designs that contain models and components are dependent upon them.
Desired State
Update this https://docs.meshery.io/guides/infrastructure-management/overview#meshery-internals-provisioning-process with information answering the question of:
How does Meshery know what Operator to provision when provisioning components from a given Model?

Contributor Guides and Handbook

📚 Instructions for contributing to documentation

Meshery documentation site and source

🛠 Meshery Build & Release Strategy
🎨 Wireframes and designs for Meshery UI in Figma (open invite)
🙋🏾🙋🏼 Questions: Discussion Forum and Community Slack

Hi @leecalcote is this issue up for grabs?

Yes, thanks for asking, @Haimantika. Although, I'm afraid that you're going to hit a wall here where we don't have enough of the information needed internally available to deliver to you to properly document Meshery's behavior here. @MUzairS15 is familiar with this area and can offer the necessary insight, however, I don't know that he's available to do so. I'll let him answer...

@MUzairS15

There’s a open PR for this


About setting values

what's the mouse_fov_width and mouse_fov_highth mean？Sorry I didn't understand your comment,are they the coordinates of the character's initial perspective in game?

https://www.pcgamingwiki.com/wiki/Glossary:Field_of_view_(FOV)#Vertical_and_horizontal_FOV

Thank you!This helps a lot

Aiming is very messy when I use it in apex, am I missing any settings?
I opened the Debug window settings and observed that the recognition was accurate, but there was a problem with the aiming.
In order to save space, the number of frames of the recorded video is very low, which is not a performance lag.
https://github.com/SunOner/yolov8_aimbot/assets/57427866/864324f1-df98-4ab2-bad8-b13f8a4c7d69
This is my config.txt
The module I used another author's 640 size training model specifically for apex.

Try to enable instant replay in nvidia experience so that the card raises the frequencies.

Try to enable instant replay in nvidia experience so that the card raises the frequencies.
sorry, what I'm saying is that the bot-aiming position is incorrect,the stuttering is just because the frame rate of the video file is low,you can see my game fps is normal.


Real machine can't run in VSCode when I run Flutter

My Xcode is upgraded to Xcode12, but my flutter project can run in Xcode, but it cannot run in vscode. When vscode is running on a real device, the black screen is stuck after the startup page pops up. Please help me, thanks.
Console print:
**event sent after app closed: {id: 0, progressId: null, message: Running "flutter pub get" in 太阳系...}
event sent after app closed: {id: 0, progressId: null, finished: true}
Launching lib/main.dart on TMPhone in debug mode...
lib/main.dart:1
Automatically signing iOS for device deployment using specified development team in Xcode project: BFTR54X3SG
Xcode build done.**

hen the pop-up window keeps loading the prompt:

**Syncing files to device TMPhone...**

Hi @harleyGit
Are you experiencing it from the terminal as well?
Can you please provide your flutter doctor -v your flutter run --verbose
Thank you

Without additional information, we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.

Hi @harleyGit
Are you experiencing it from the terminal as well?
Can you please provide your flutter doctor -v your flutter run --verbose
Thank you

I solve this proplem,because this problem is I upgrade Xcode, thank you

Without additional information, we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.

I solve this problem, thank you

Why I can't access to my account

Thank you for your kindness and fixed it right away
Sent from my iPhone

On Nov 27, 2020, at 7:03 PM, Harley<EMAIL_ADDRESS>wrote:

Hi @harleyGit
Are you experiencing it from the terminal as well?
Can you please provide your flutter doctor -v your flutter run --verbose
Thank you
I solve this proplem,because this problem is I upgrade Xcode, thank you
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

Why I can't access to my account

what do you want to access account


*: Catch up with refs/ removal (remove RefsRegexp, etc.)

Two minor fixups in the wake of #533.  Details in the commit messages (which I'm happy to split out into separate PRs if folks want).

LGTM

LGTM


[hotfix][docs]fix flink sql Cascading Window TVF Aggregation exception

What is the purpose of the change
Aliases need to be used under Cascading Window Aggregation, otherwise an error will be reported, but there is no such thing in the documentation, so I fixed it
Brief change log
Fix errors in documentation, add aliases
Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (no)

@wenlong88 hello, can you help me review the code

@MartijnVisser Can you review it for me?

Merged. Thanks for contribution @simenliuxing


Add button to show QR code after a link has been created

Requires Nederland translation.

Thanks @thijskh. Added.


[#noissue] Reorganization of class-loading policy for Integration Test

Codecov Report

Merging #7511 (d37466e) into master (e1b0842) will decrease coverage by 0.04%.
The diff coverage is 10.59%.

@@            Coverage Diff             @@
##           master    #7511      +/-   ##
==========================================
- Coverage   38.90%   38.85%   -0.05%
==========================================
  Files        3469     3478       +9
  Lines       99464    99629     +165
  Branches    12213    12234      +21
==========================================
+ Hits        38694    38709      +15
- Misses      57788    57935     +147
- Partials     2982     2985       +3

Impacted Files
Coverage Δ

...rp/pinpoint/test/plugin/DefaultProcessManager.java
0.00% <0.00%> (ø)

...pinpoint/test/plugin/ForkedPinpointPluginTest.java
0.00% <0.00%> (ø)

...nt/test/plugin/ForkedPinpointPluginTestRunner.java
0.00% <0.00%> (ø)

...int/test/plugin/PinpointPluginTestRunListener.java
0.00% <ø> (ø)

...pinpoint/test/plugin/PinpointPluginTestRunner.java
0.00% <0.00%> (ø)

...point/test/plugin/PinpointPluginTestStatement.java
4.68% <0.00%> (+0.07%)
:arrow_up:

.../pinpoint/test/plugin/PinpointPluginTestSuite.java
0.00% <0.00%> (ø)

.../pinpoint/test/plugin/PinpointPluginTestUtils.java
0.00% <0.00%> (ø)

...rcorp/pinpoint/test/plugin/PluginClassLoading.java
0.00% <0.00%> (ø)

...corp/pinpoint/test/plugin/PluginTestConstants.java
0.00% <0.00%> (ø)

... and 47 more

Continue to review full report at Codecov.

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


Error when trying to use the master branch

Hello,
I want to contribute to your project but I'm unable to run the master branch. I'm cloning the repo here ~/.composer/vendor/mkusher/padawan, I'm running composer install, and when I execute padawan binary this error shows up.
PHP Fatal error:  Class 'Symfony\Component\Console\Application' not found in /Users/nacholibre/.composer/vendor/mkusher/padawan/src/Padawan/Framework/Application.php on line 17
Fatal error: Class 'Symfony\Component\Console\Application' not found in /Users/nacholibre/.composer/vendor/mkusher/padawan/src/Padawan/Framework/Application.php on line 17

Thanks

I solved the issue. I've just cloned to repo and put the binaries in my path. Silly me.
Regards


RFC: Test add custom errors on helpers

Added a new helper error message, that has a callback function that can be called when the Ginkgo trigger an error, so the errors dump to users are more powerful.

This change is

test-me-please

test-me-please


SqlServerCompiler - ORDER BY uses wrong moniker

When generating a query that uses aliased column names AND paged queries, the ORDER BY syntax uses the aliased column, which SQL Server does not like...
Example Query from Northwind database using aliased column names (see the ORDER BY statement below):
SELECT *
FROM (
SELECT
[XT1].[ProductID] AS [XT1_Products_ProductID],
[XT1].[ProductName] AS [XT1_Products_ProductName],
[XT1].[SupplierID] AS [XT1_Products_SupplierID],
[XT1].[CategoryID] AS [XT1_Products_CategoryID],
[XT1].[QuantityPerUnit] AS [XT1_Products_QuantityPerUnit],
[XT1].[UnitPrice] AS [XT1_Products_UnitPrice],
[XT1].[UnitsInStock] AS [XT1_Products_UnitsInStock],
[XT1].[UnitsOnOrder] AS [XT1_Products_UnitsOnOrder],
[XT1].[ReorderLevel] AS [XT1_Products_ReorderLevel],
[XT1].[Discontinued] AS [XT1_Products_Discontinued],
[XT2].[SupplierID] AS [XT2_Suppliers_SupplierID],
[XT2].[CompanyName] AS [XT2_Suppliers_CompanyName],
[XT3].[CategoryID] AS [XT3_Categories_CategoryID],
[XT3].[CategoryName] AS [XT3_Categories_CategoryName],
ROW_NUMBER() OVER (ORDER BY [XT1_Products_ProductID])  <<- should be [XT1].[ProductID]
AS [row_num] FROM [Products] AS [XT1]
INNER JOIN [Suppliers] AS [XT2] ON [XT1].[SupplierID] = [XT2].[SupplierID]
INNER JOIN [Categories] AS [XT3] ON [XT1].[CategoryID] = [XT3].[CategoryID]) AS [results_wrapper] WHERE [row_num] BETWEEN 16 AND 30
SQL Server does not like the XT1_Products_ProductID column name in the ORDER BY statement.

Could you post the C# code related to this query?

Could you post the C# code related to this query?

Here is the CS code for the ProductModel.  The SQL query is built in the Query() method (L85..130).  The compiled SQL is created and used at L118-119.
If you need the whole solution, I can send it to you; let me know if you need it.
// ------------------------------------------------------------------------------------------------
//
// This code was generated by a tool.
// Runtime Version: 4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
//
//
// Code Generator   : ApiStudio 1.0a
// Code Template    : Default
// Template Language: CSharp
// Date Modified    : 5/12/2021 11:55 AM
// ------------------------------------------------------------------------------------------------
using BlazorStudio.ProjectName96.DataServices.Contracts;
using BlazorStudio.ProjectName96.DataServices.Models;
using Microsoft.EntityFrameworkCore;
using SqlKata;
using SqlKata.Compilers;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Threading.Tasks;
namespace BlazorStudio.ProjectName96.DataServices.Services
{
[ExcludeFromCodeCoverage]
public partial class ProductsModelDataService : IProductsModelDataService
{
private IProductsDataService ProductsDataService { get; set; }
private DatabaseContext Context { get; set; }
    /// <summary>
    /// Initializes a new instance of the <see cref="ProductsModelDataService"/> class.
    /// </summary>
    public ProductsModelDataService(DatabaseContext databaseContext, IProductsDataService productsDataService)
    {
        this.Context = databaseContext;
        ProductsDataService = productsDataService;
    }

    /// <summary>
    /// GetById returns the requested ProductsModel entity
    /// </summary>
    /// <returns>Returns a ProductsModel object from the database</returns>
    public async Task<ProductsModel> GetById(int Products_ProductID)
	{
        var compiler = new SqlServerCompiler();
        var query = GetBaseQuery()
            .Where("XT1.ProductID", $"{Products_ProductID}");
        var result = compiler.Compile(query);
        ProductsModel viewModel = await Context.ProductsModels.FromSqlRaw<ProductsModel>(result.Sql, result.Bindings.ToArray()).SingleOrDefaultAsync();

        return viewModel;
	}

    /// <summary>
    /// Creates a new the ProductsModel data model
    /// </summary>
    /// <param name="productsModel"></param>
    /// <returns></returns>
    public async Task<ProductsModel> Create(ProductsModel productsModel)
    {
        Products products = productsModel.GetProducts();
        products = await ProductsDataService.Create(products);
        return await GetById(products.ProductID);
    }

    /// <summary>
    /// Update the ProductsModel data model
    /// </summary>
    /// <param name="productsModel"></param>
    /// <returns></returns>
    public async Task<ProductsModel> Update(ProductsModel productsModel)
    {
        Products products = productsModel.GetProducts();
        products = await ProductsDataService.Update(products);
        return await GetById(products.ProductID);
    }

	/// <summary>
    /// Return all records for the specified page
    /// </summary>
    /// <returns>Returns a list of ProductsModel objects matching the query parameters</returns>
    public async Task<PagedQueryResults<ProductsModel>> Query(PagedQueryRequest pagedQueryRequest)
    {
        var compiler = new SqlServerCompiler();
        SqlResult sqlResult = null;

        int itemCount = Context.Products.Count();
        Query query = GetBaseQuery();

        // Query/filter parameter
        if (!string.IsNullOrWhiteSpace(pagedQueryRequest.QueryParameter))
        {
            query = query.Where(pagedQueryRequest.QueryParameter, pagedQueryRequest.QueryValue);

            // Get item count
            var countQuery = query.Clone();
            countQuery.SelectRaw("count(*) as ItemCount");
            sqlResult = compiler.Compile(countQuery);
            var sqlCount = await Context.SqlCounts.FromSqlRaw<SqlCount>(sqlResult.Sql, sqlResult.Bindings.ToArray()).ToListAsync();
            itemCount = sqlCount.FirstOrDefault().ItemCount;
        }

        // Sort Order
        if (pagedQueryRequest.SortDirection.ToLower().StartsWith("asc"))
            query.OrderBy(pagedQueryRequest.SortColumn);
        else
            query.OrderByDesc(pagedQueryRequest.SortColumn);

        // Pagination
        query = query
            .Limit((int)pagedQueryRequest.PageSize)
            .Offset((int)(pagedQueryRequest.PageNumber * pagedQueryRequest.PageSize));

        // Get the rows and return the PagedQueryResults
        sqlResult = compiler.Compile(query);
        List<ProductsModel> viewModels = await Context.ProductsModels.FromSqlRaw<ProductsModel>(sqlResult.Sql, sqlResult.Bindings.ToArray()).ToListAsync();
        PagedQueryResults<ProductsModel> pagedQueryResults = new PagedQueryResults<ProductsModel>()
        {
            ItemCount = itemCount,
            PageNumber = pagedQueryRequest.PageNumber,
            PageSize = pagedQueryRequest.PageSize,
            SortColumn = pagedQueryRequest.SortColumn,
            SortDirection = pagedQueryRequest.SortDirection,
            Items = viewModels
        };
        return pagedQueryResults;
    }

    /// <summary>
    /// Common query builder parameters
    /// </summary>
    /// <returns>Returns the base query for the primary table and all joined tables</returns>
    public Query GetBaseQuery()
    {
        return new Query("Products as XT1")
                   .Select(
                       "XT1.ProductID AS XT1_Products_ProductID",
                       "XT1.ProductName AS XT1_Products_ProductName",
                       "XT1.SupplierID AS XT1_Products_SupplierID",
                       "XT1.CategoryID AS XT1_Products_CategoryID",
                       "XT1.QuantityPerUnit AS XT1_Products_QuantityPerUnit",
                       "XT1.UnitPrice AS XT1_Products_UnitPrice",
                       "XT1.UnitsInStock AS XT1_Products_UnitsInStock",
                       "XT1.UnitsOnOrder AS XT1_Products_UnitsOnOrder",
                       "XT1.ReorderLevel AS XT1_Products_ReorderLevel",
                       "XT1.Discontinued AS XT1_Products_Discontinued",
                       "XT2.SupplierID AS XT2_Suppliers_SupplierID",
                       "XT2.CompanyName AS XT2_Suppliers_CompanyName",
                       "XT3.CategoryID AS XT3_Categories_CategoryID",
                       "XT3.CategoryName AS XT3_Categories_CategoryName")
                   .Join("Suppliers as XT2", "XT1.SupplierID", "XT2.SupplierID")
                   .Join("Categories as XT3", "XT1.CategoryID", "XT3.CategoryID");

;
}
}
}

I am curious why you always go back to DbContext?
How have seen or used EF and Sqlkata/Dapper is to use EF to do all saving related and use Sqlkata/Dapper for all query related

I have an entire code generator built around EFCore, and currently I don't have any plans on refactoring it.  All I wanted was to generate a few queries, as shown above, and execute them directly.  I'd rather drop SqlKata altogether and write my own query builder than remove EFCore and move to Dapper-and I don't want to have both, nor do I want to include the SqlKata execute assemblies in my generated solutions.  However, I was able to refactor my code generator and build the actual SQL in my code generator instead of creating the query in the generated output, so this issue is now moot - at least for me.

Maybe close issue? No others have come with same issue
We also use ef and sqlkata.
Ef for simple, kata when ef makes a mess of it.


New data store schema

The previous schema was lengthy and some times exceeded the character limit of 2000. Here's how it looked like before
clicker={2.7881026E22,"Worker",3633,37,"",70,6,"it",{"School","Cheese developing","Fullstack cheese developing","Junior Sports Club","High School"},{{"Ambulance!",25}},{"Worker","Businessman","Degree Holder","Investor","Getting Experience","Dedicated Learner","Little Learner"}}

The string values is the most obvious reason for this exceeding character limit.
This PR is intended to replace those string values with numbers, and use other methods to reduce the characters
For example, like below (it's also decided to rename clicker with merchant)
merchant={12345,3,5343,12,5,4,"it",{1,2,3,4,5},{{1,25},{2,4},{1,2,3,4,5}

From the above example it's obvious that we can save more with this method
closes #76

All fields are saved in a short format now. Following is an example of such player data (which have bought all the items in the shop)
merchant={55844,2,490,13,6,0,4,"it",{1,2,3},{{1},{13,2},{2,10},{3,1},{4,1},{5,1},{6,1},{7,1},{8,1},{9,1},{10,1},{11,1},{12,1}},{2,3,4,6,5}}

And we have managed to reduce half of the size compared to the data saved for me using the old schema. (current size with all inventory items: 140)

Will merge this PR + #83 after some public tests and removing the save command


write validation fails for VerticesDiscretization

In GitLab by @luitjansl on May 26, 2023, 17:54
to reproduce, go the example in imod-python\examples\mf6\circle.py
and add the following line at line number 114
gwf_model["disv"]._validate(imod.mf6.VerticesDiscretization._write_schemata, idomain=idomain )
this crashes and gives the following message:
Exception has occurred: KeyError
'bottom'
File "D:\dev\imod-python\imod\schemata.py", line 349, in validate
other_obj = kwargs[self.other]
File "D:\dev\imod-python\imod\mf6\pkgbase.py", line 421, in _validate
schema.validate(self.dataset[variable], **kwargs)
File "D:\dev\imod-python\examples\mf6\circle.py", line 114, in
gwf_model["disv"]._validate(imod.mf6.VerticesDiscretization._write_schemata, idomain=idomain )
KeyError: 'bottom'

In GitLab by @JoerivanEngelen on Jul 24, 2023, 17:50
marked this issue as related to #483

In GitLab by @JoerivanEngelen on Jul 24, 2023, 17:23
I investigated this. This is caused by a missing overrided of the _validate method, where "bottom" is added to the validation kwargs. By shere accident, the models already add this "bottom" to the kwargs:
...
            pkg_errors = pkg._validate(
                schemata=schemata,
                idomain=idomain,
                bottom=bottom,
            )
...

The "bottom" is required in model validation to compare with the River bottom_elevation.
So this error is only thrown when calling validation on the DiscretizationVertices package separately


local variable 'vision_config_path' referenced before assignment

Error:
Exception has occurred: UnboundLocalError       (note: full exception trace is shown but execution is paused at: _run_module_as_main)
local variable 'vision_config_path' referenced before assignment
  File "...\Lib\site-packages\ram\models\ram_plus.py", line 89, in __init__
    vision_config = read_json(vision_config_path)
  File "...\Lib\site-packages\ram\models\ram_plus.py", line 391, in ram_plus
    model = RAM_plus(**kwargs)
  File "C:\Users\FCA\dev\nudity-labeling\main.py", line 16, in <module>
    model = ram_plus(pretrained=PRETRAINED,
  File "...\Lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "...\Lib\runpy.py", line 196, in _run_module_as_main (Current frame)
    return _run_code(code, main_globals, None,
UnboundLocalError: local variable 'vision_config_path' referenced before assignment

Reproduction:
pip install git+https://github.com/xinyu1205/recognize-anything.git@b426768ae1bdcdc20ce2de7f2beffdb58111582f

import torch

from PIL import Image
from ram.models import ram_plus
from ram import inference_ram as inference
from ram import get_transform

IMAGE_SIZE = 1280
PRETRAINED = True
IMAGE = "path/to/image.jpg"

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

transform = get_transform(image_size=IMAGE_SIZE)

model = ram_plus(pretrained=PRETRAINED,
                            image_size=IMAGE_SIZE,
                            vit='swin_l')

model.eval()
model = model.to(device)

image = transform(Image.open(IMAGE)).unsqueeze(0).to(device)

res = inference(image, model)
print("Image Tags: ", res[0])
print("图像标签: ", res[1])

pip install raises errors, can you help with this issue @guillaume-rochette-oxb ?


refactor: login screen refactored to show external login first

Description
Login screen refactored to show external login options first (if any available) with tabular view. Another option for login is local which means login with functional account. Added some e2e tests for it.

I've notice that you added support for only one OIDC service? Have you thought about allowing multiple of them?

@nitrosx Not sure what do you mean by "only OIDC" service. I think that's configurable and you can add as many services as you want. Or maybe I misunderstand you somehow