Failed listing remote versions for plugin java

Describe the bug
java not installed correctly
To Reproduce
rtx plugin uninstall java &&  RUST_BACKTRACE=full   RTX_DEBUG=1 rtx plugin install java
[WARN] rtx::cli::plugins::uninstall: java is not installed
[DEBUG] rtx::config: Files: ~/.tool-versions
Installed Plugins:
[DEBUG] rtx::cli: rtx plugin install java
[DEBUG] rtx::plugins::external_plugin: install java "https://github.com/rtx-plugins/rtx-java.git"
cloning https://github.com/rtx-plugins/rtx-java.git
[DEBUG] rtx::git: cloning https://github.com/rtx-plugins/rtx-java.git to /home/tyoc213/.local/share/rtx/plugins/java
[DEBUG] rtx::cmd: $ git --version
[DEBUG] rtx::cmd: $ git clone -q --depth 1 https://github.com/rtx-plugins/rtx-java.git /home/tyoc213/.local/share/rtx/plugins/java
loading plugin remote versions
[DEBUG] rtx::cmd: $ /home/tyoc213/.local/share/rtx/plugins/java/bin/list-all
Error:
   0: Failed listing remote versions for plugin java: error running list-all: exited with code 60
   0:

Location:
   /home/tyoc213/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rtx-cli-1.34.1/src/plugins/external_plugin.rs:314

Version:
   1.34.1 linux-x64 (unknown 2023-07-20)

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                                ⋮ 3 frames hidden ⋮
   4: <rtx::plugins::external_plugin::ExternalPlugin as rtx::plugins::Plugin>::list_remote_versions::hc83c79c06bb565dd
      at <unknown source file>:<unknown line>
   5: <rtx::plugins::external_plugin::ExternalPlugin as rtx::plugins::Plugin>::install::hdf6633d924af09dc
      at <unknown source file>:<unknown line>
   6: rtx::tool::Tool::install::h63ed1175cab2f3a4
      at <unknown source file>:<unknown line>
   7: rtx::cli::plugins::install::PluginsInstall::install_one::he84cd96d3847ca27
      at <unknown source file>:<unknown line>
   8: <rayon::iter::extend::ListVecFolder<T> as rayon::iter::plumbing::Folder<T>>::consume_iter::h2739c870b95f8a07
      at <unknown source file>:<unknown line>
   9: rayon::iter::plumbing::bridge_producer_consumer::helper::h368f16f726c79f4a
      at <unknown source file>:<unknown line>
  10: <rayon::iter::plumbing::bridge::Callback<C> as rayon::iter::plumbing::ProducerCallback<I>>::callback::he1672a1107adb480
      at <unknown source file>:<unknown line>
  11: rayon::iter::from_par_iter::collect_extended::h933056c0d891addf
      at <unknown source file>:<unknown line>
  12: rayon::result::<impl rayon::iter::FromParallelIterator<core::result::Result<T,E>> for core::result::Result<C,E>>::from_par_iter::h792c280f2ae6bfdc
      at <unknown source file>:<unknown line>
  13: <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute::hd42b38c6db97c4a2
      at <unknown source file>:<unknown line>
  14: rayon_core::registry::WorkerThread::wait_until_cold::hba3b0488299f4577
      at <unknown source file>:<unknown line>
  15: rayon_core::registry::ThreadBuilder::run::hafd305257b1f39d4
      at <unknown source file>:<unknown line>
  16: std::sys_common::backtrace::__rust_begin_short_backtrace::h23f62d331c820e55
      at <unknown source file>:<unknown line>
  17: core::ops::function::FnOnce::call_once{{vtable.shim}}::h84a37e3916a72670
      at <unknown source file>:<unknown line>
  18: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h9adfc2ae43657457
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/boxed.rs:1985
  19: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h14fefbfa7b574396
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/boxed.rs:1985
  20: std::sys::unix::thread::Thread::new::thread_start::ha211bb47f6f5cedc
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys/unix/thread.rs:108
  21: start_thread<unknown>
      at ./nptl/pthread_create.c:442
  22: clone3<unknown>
      at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Suggestion: Run with RTX_DEBUG=1 for more information.

Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering.

Expected behavior
To be able to use and list all java versions
rtx doctor output
This is a Linux ichirin-no-hana 5.19.0-46-generic #47~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Jun 21 15:35:31 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
rtx doctor
rtx version:
  1.34.1 linux-x64 (unknown 2023-07-20)

build:
  Target: x86_64-unknown-linux-gnu
  Features:
  Built: Thu, 20 Jul 2023 01:07:08 +0000
  Rust Version: rustc 1.71.0 (8ede3aae2 2023-07-12)
  Profile: release

shell:
  /bin/bash
  GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
  Copyright (C) 2020 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

  This is free software; you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.

rtx environment variables:
  (none)

settings:
  {"always_keep_download": "false", "always_keep_install": "false", "asdf_compat": "false", "disable_default_shorthands": "false", "disable_tools": "[]", "experimental": "false", "jobs": "4", "legacy_version_file": "true", "legacy_version_file_disable_tools": "[]", "log_level": "INFO", "missing_runtime_behavior": "warn", "plugin_autoupdate_last_check_duration": "10080", "raw": "false", "trusted_config_paths": "[]", "verbose": "false"}

config files:
  /home/tyoc213/.tool-versions

plugins:
  java     https://github.com/rtx-plugins/rtx-java.git#3a20145
  node     (core)
  python   (core)

toolset:
  neovim@stable

2 problems found:
plugin neovim is not installed

rtx is not activated, run `rtx activate` for setup instructions

Additional context
By the way, this is consistent with asdf-java https://github.com/halcyon/asdf-java/issues/173
see: https://github.com/jdxcode/rtx/issues/403

try using the core plugin:
rtx plugins uninstall java
rtx settings set experimental true
rtx ls-remote java

I think there may be an exception
$ rtx plugins uninstall java
rtx java uninstalled

then simple backtrace
$ RUST_BACKTRACE=1 RTX_DEBUG=1 rtx ls-remote java
[DEBUG] rtx::config: Files: ~/.tool-versions, ~/.config/rtx/config.toml
Installed Plugins: neovim
[DEBUG] rtx::cli: rtx ls-remote java
[DEBUG] reqwest::connect: starting new connection: https://joschi.github.io/
[DEBUG] rustls::client::hs: No cached session for DnsName("joschi.github.io")
[DEBUG] rustls::client::hs: Not resuming any session
[DEBUG] rustls::client::hs: Using ciphersuite TLS13_AES_256_GCM_SHA384
[DEBUG] rustls::client::tls13: Not resuming
[DEBUG] rustls::client::tls13: TLS1.3 encrypted extensions: [ServerNameAck, Protocols([ProtocolName(6832)])]
[DEBUG] rustls::client::hs: ALPN protocol is Some(b"h2")
Error:
   0: timed out
   1: timed out waiting on channel

Location:
   /home/tyoc213/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rtx-cli-1.34.1/src/timeout.rs:16

Version:
   1.34.1 linux-x64 (unknown 2023-07-20)

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                                ⋮ 2 frames hidden ⋮
   3: rtx::timeout::run_with_timeout::h884884a40bd02ee3
      at <unknown source file>:<unknown line>
   4: once_cell::imp::OnceCell<T>::initialize::{{closure}}::hc198088bc0bcf3a6
      at <unknown source file>:<unknown line>
   5: once_cell::imp::initialize_or_wait::h4808de3053b8d0a0
      at <unknown source file>:<unknown line>
   6: once_cell::imp::OnceCell<T>::initialize::h09adeea1600e1f34
      at <unknown source file>:<unknown line>
   7: rtx::plugins::core::java::JavaPlugin::fetch_remote_versions::hb8c348632c52cd68
      at <unknown source file>:<unknown line>
   8: once_cell::imp::OnceCell<T>::initialize::{{closure}}::hd55936d70b14150e
      at <unknown source file>:<unknown line>
   9: once_cell::imp::initialize_or_wait::h4808de3053b8d0a0
      at <unknown source file>:<unknown line>
  10: once_cell::imp::OnceCell<T>::initialize::h6ba0a279e4419a82
      at <unknown source file>:<unknown line>
  11: <rtx::plugins::core::java::JavaPlugin as rtx::plugins::Plugin>::list_remote_versions::h9b273950ff807b1c
      at <unknown source file>:<unknown line>
  12: <rtx::cli::ls_remote::LsRemote as rtx::cli::command::Command>::run::h82eb78b6dcaef060
      at <unknown source file>:<unknown line>
  13: rtx::cli::Cli::run::hbb088a3a4278d060
      at <unknown source file>:<unknown line>
  14: rtx::main::he37af2401f2eb2ab
      at <unknown source file>:<unknown line>
  15: std::sys_common::backtrace::__rust_begin_short_backtrace::hefb12f95a8d4969a
      at <unknown source file>:<unknown line>
  16: std::rt::lang_start::{{closure}}::h4f997c38466cf00d
      at <unknown source file>:<unknown line>
  17: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h5ce27e764c284c0a
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/ops/function.rs:284
  18: std::panicking::try::do_call::h4c1fc390ae241991
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:500
  19: std::panicking::try::h4d36e7eaed86af72
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:464
  20: std::panic::catch_unwind::h41cfb4dd65282b1e
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panic.rs:142
  21: std::rt::lang_start_internal::{{closure}}::hfed411c1c5fdb925
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/rt.rs:148
  22: std::panicking::try::do_call::h6893f6f32a464342
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:500
  23: std::panicking::try::h52b7102f469a0567
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:464
  24: std::panic::catch_unwind::h62120054677916b5
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panic.rs:142
  25: std::rt::lang_start_internal::hd66bf6b7da144005
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/rt.rs:148
  26: main<unknown>
      at <unknown source file>:<unknown line>
  27: __libc_start_call_main<unknown>
      at ./csu/../sysdeps/nptl/libc_start_call_main.h:58
  28: __libc_start_main_impl<unknown>
      at ./csu/../csu/libc-start.c:392
  29: _start<unknown>
      at <unknown source file>:<unknown line>

Suggestion: Run with RTX_DEBUG=1 for more information.

Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering.
Run with RUST_BACKTRACE=full to include source snippets.

then something funny happened
$ RUST_BACKTRACE=full RTX_DEBUG=1 rtx ls-remote java
[DEBUG] rtx::config: Files: ~/.tool-versions, ~/.config/rtx/config.toml
Installed Plugins: neovim
[DEBUG] rtx::cli: rtx ls-remote java
[DEBUG] reqwest::connect: starting new connection: https://joschi.github.io/
[DEBUG] rustls::client::hs: No cached session for DnsName("joschi.github.io")
[DEBUG] rustls::client::hs: Not resuming any session
[DEBUG] rustls::client::hs: Using ciphersuite TLS13_AES_256_GCM_SHA384
[DEBUG] rustls::client::tls13: Not resuming
[DEBUG] rustls::client::tls13: TLS1.3 encrypted extensions: [ServerNameAck, Protocols([ProtocolName(6832)])]
[DEBUG] rustls::client::hs: ALPN protocol is Some(b"h2")
adoptopenjdk-jre-large_heap-openj9-8.0.192+12.OpenJDK8U-jre_x64_linux_openj9_linuxXL_8u192b12.tar.gz
adoptopenjdk-jre-large_heap-openj9-8.0.192+12.openj9-0.11.0
adoptopenjdk-jre-large_heap-openj9-8.0.202+8.OpenJDK8U-jre_x64_linux_openj9_linuxXL_8u202b08-openj9-0.12.0.tar.gz
adoptopenjdk-jre-large_heap-openj9-8.0.202+8.openj9-0.12.1
adoptopenjdk-jre-large_heap-openj9-8.0.212+3.openj9-0.14.0
adoptopenjdk-jre-large_heap-openj9-8.0.212+4.openj9-0.14.2
...

Seems it is installed now?

 $ /home/tyoc213/.local/share/rtx/plugins/neovim/bin/download
==> curl -Lo /tmp/neovim_build_XqTfOv/neovim-stable.tar.gz -C - https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (60) SSL: no alternative certificate subject name matches target host name 'objects.githubusercontent.com'
More details here: https://curl.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
Error:
   0: failed to install neovim@stable
   1: ~/.local/share/rtx/plugins/neovim/bin/download exited with non-zero status: exit code 1

Location:
   /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/convert/mod.rs:717

Version:
   1.34.1 linux-x64 (unknown 2023-07-20)

Suggestion: Run with RTX_DEBUG=1 for more information.

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

Here is full didnt finish like the one from java
~$ RUST_BACKTRACE=full RTX_DEBUG=1 rtx install neovim
[DEBUG] rtx::config: Files: ~/.tool-versions, ~/.config/rtx/config.toml
Installed Plugins: neovim
[DEBUG] rtx::cli: rtx install neovim
[DEBUG] rtx::toolset::builder: neovim@stable
downloading
[DEBUG] rtx::cmd: $ /home/tyoc213/.local/share/rtx/plugins/neovim/bin/download
==> curl -Lo /tmp/neovim_build_AIubpK/neovim-stable.tar.gz -C - https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
curl: (60) SSL: no alternative certificate subject name matches target host name 'objects.githubusercontent.com'
More details here: https://curl.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
Error:
   0: failed to install neovim@stable
   1: ~/.local/share/rtx/plugins/neovim/bin/download exited with non-zero status: exit code 1

Location:
   /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/convert/mod.rs:717

Version:
   1.34.1 linux-x64 (unknown 2023-07-20)

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                                ⋮ 3 frames hidden ⋮
   4: rtx::plugins::script_manager::ScriptManager::run_by_line::ha5a5c2b268220a41
      at <unknown source file>:<unknown line>
   5: <rtx::plugins::external_plugin::ExternalPlugin as rtx::plugins::Plugin>::install_version::hb0c6c60f86f0420c
      at <unknown source file>:<unknown line>
   6: rtx::tool::Tool::install_version::h8ed049e7295fade5
      at <unknown source file>:<unknown line>
   7: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once::h054f20d068b8ac77
      at <unknown source file>:<unknown line>
   8: <alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend::h1bdf712d2adb8fdc
      at <unknown source file>:<unknown line>
   9: rayon::iter::plumbing::bridge_producer_consumer::helper::h88cb5b4b4855f624
      at <unknown source file>:<unknown line>
  10: <rayon::vec::IntoIter<T> as rayon::iter::IndexedParallelIterator>::with_producer::h905439e029cdaebc
      at <unknown source file>:<unknown line>
  11: rayon::result::<impl rayon::iter::FromParallelIterator<core::result::Result<T,E>> for core::result::Result<C,E>>::from_par_iter::hdfa5f4fd63fd1e66
      at <unknown source file>:<unknown line>
  12: rtx::cli::install::Install::install_requested_versions::h491ddf85aefa3bbe
      at <unknown source file>:<unknown line>
  13: rayon_core::thread_pool::ThreadPool::install::{{closure}}::h70d6d042fd54d376
      at <unknown source file>:<unknown line>
  14: <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute::h8b5dbb3837cda945
      at <unknown source file>:<unknown line>
  15: rayon_core::registry::WorkerThread::wait_until_cold::hba3b0488299f4577
      at <unknown source file>:<unknown line>
  16: rayon_core::registry::ThreadBuilder::run::hafd305257b1f39d4
      at <unknown source file>:<unknown line>
  17: std::sys_common::backtrace::__rust_begin_short_backtrace::h23f62d331c820e55
      at <unknown source file>:<unknown line>
  18: core::ops::function::FnOnce::call_once{{vtable.shim}}::h84a37e3916a72670
      at <unknown source file>:<unknown line>
  19: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h9adfc2ae43657457
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/boxed.rs:1985
  20: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h14fefbfa7b574396
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/boxed.rs:1985
  21: std::sys::unix::thread::Thread::new::thread_start::ha211bb47f6f5cedc
      at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys/unix/thread.rs:108
  22: start_thread<unknown>
      at ./nptl/pthread_create.c:442
  23: clone3<unknown>
      at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Suggestion: Run with RTX_DEBUG=1 for more information.

Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering.

these are all networking problems on your machine

~ took 10s
❯ RTX_DEBUG=1  rtx ls-remote  java
[DEBUG] rtx::config: Files: ~/.tool-versions, ~/.config/rtx/config.toml
Installed Plugins:
[DEBUG] rtx::cli: rtx ls-remote java
[DEBUG] reqwest::connect: starting new connection: https://joschi.github.io/
[DEBUG] rustls::client::hs: No cached session for DnsName("joschi.github.io")
[DEBUG] rustls::client::hs: Not resuming any session
[DEBUG] rustls::client::hs: Using ciphersuite TLS13_AES_256_GCM_SHA384
[DEBUG] rustls::client::tls13: Not resuming
[DEBUG] rustls::client::tls13: TLS1.3 encrypted extensions: [ServerNameAck, Protocols([ProtocolName(6832)])]
[DEBUG] rustls::client::hs: ALPN protocol is Some(b"h2")
Error:
   0: timed out
   1: timed out waiting on channel

Location:
   src/timeout.rs:16

Version:
   1.35.1 macos-arm64 (unknown 2023-07-27)

Suggestion: Run with RTX_DEBUG=1 for more information.

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

is there any way to increase timeout duration ?  current timeout duration is 10s

Same problem when installing java.
~ ❮ RUST_BACKTRACE=full RTX_DEBUG=1 rtx install java
[DEBUG] rtx::config: Files: ~/.config/rtx/config.toml
Installed Plugins: go, zig
[DEBUG] rtx::cli: rtx install java
[DEBUG] rtx::toolset::builder: node@lts, zig@latest, go@latest
[DEBUG] reqwest::connect: starting new connection: https://joschi.github.io/
[DEBUG] rustls::client::hs: No cached session for DnsName("joschi.github.io")
[DEBUG] rustls::client::hs: Not resuming any session
[DEBUG] rustls::client::hs: Using ciphersuite TLS13_AES_256_GCM_SHA384
[DEBUG] rustls::client::tls13: Not resuming
[DEBUG] rustls::client::tls13: TLS1.3 encrypted extensions: [ServerNameAck, Protocols([ProtocolName(6832)])]
[DEBUG] rustls::client::hs: ALPN protocol is Some(b"h2")
Error:
   0: timed out
   1: timed out waiting on channel

Location:
   src/timeout.rs:16

Version:
   1.35.1 linux-x64 (61bc54f 2023-07-27)

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                                 ⋮ 1 frame hidden ⋮
   2: once_cell::imp::initialize_or_wait::h0df70739ca5faec8
      at <unknown source file>:<unknown line>

Suggestion: Run with RTX_DEBUG=1 for more information.

Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering.

I believe this was fixed by moving away from rustls


Add elevation data to report

Add section (perhaps by the mini-map) providing elevation context to the report location.  For points, it'd be the elevation.  For areas, it'd be min/max/mean for the area.

I can see how this would be somewhat problematic for areas that include, say, Denali.  :)

So you can get an elevation via the API, but you're correct there will be problems because of how the DEM is interpolated. At 1 km, you are going to lose those maximum Denali-style elevations. Native resolution is 30 m, so we can get those back but of course it'll slow down HUC queries and create sizable difference in scales between the DEM and the climate data (771 m, 1 km, 2 km, 4 km, etc.) although I'm not sure that matters at all.
If the elevation is just for context we might just need to see how it looks in a few of the reports.


Update pre-deploy tests

Run pre-deploy stress tests as a separate job
Run pre-deploy unit tests for all supported combinations of platforms, versions, and requests versions
Add option to run pre-deploy tests without publishing to PyPI
Silence DeprecationWarnings during tests for deprecated methods

Currently having test errors on Windows in 4 tests due to timestamp differences of around 10ms for CachedResponse.created_at. No idea why that would be getting modified after creation.


Key PRINTSCREEN/COMMAND & KeyModifers Problem

There are issues with following keys - Key.PRINTSCREEN & Key.COMMAND -> typing those in text editor results in typing empty curly braces - {}.
The modifiers+brackets doesn't seem to work with current version (0.5.3)? E.g. typing "+(abc)" results in actually seeing "+(abc)" typed, instead of "ABC" (input string in caps).

The parentheses syntax was removed with version 0.5.0 for Sikuli compatibility. That was an innovation of mine which Sikuli didn't provide, and caused problems with using Lackey as a drop-in replacement for Sikuli.
The other key issues are just incorrect key definitions. Should be easy to fix!

I am updating key codes to better reflect the Sikuli documentation.
WIN, CMD, and META will now all (on Windows) trigger the WIN key. (There is no Key.COMMAND.)
Key.PRINTSCREEN seems to be an issue with the underlying keyboard library. I've opened an issue and will pursue.

The bug with keyboard has been fixed. These changes should all be complete in develop and will be rolled out with the next release.

These have been fixed with the latest release.


read_ply issue on Windows

see https://ci.appveyor.com/project/fwilliams/point-cloud-utils/builds/26724090

Fixed when closing #17


Add PIDfile support

In order to be compatible with "monit", is it possible to add the possibility to add the pidfile support in the doh-server ?

It is a good idea!
I have been using systemd so I never considered about pidfile.
But do you know how to do that? Do I just have to write my PID to a file and remove it before exiting?
Or, can it be done by a bash script like this?
#!/bin/bash
set -e
doh-server "$@" &
echo "$$" >/var/run/doh-server.pid
wait

Would you please give me any suggestions?

No, inside your code
a piece of example, you just have to write the file eg /var/run/doh-server.pid
import (
"os","fm"
)
func main() {
     pid := os.Getpid()

     parentpid := os.Getppid()

     fmt.Printf("The parent process id of %v is %v\n", pid, parentpid)

     proc, err := os.FindProcess(pid) // or replace with other process number

     if err != nil {
             panic(err)
     }

     fmt.Println(proc.Pid)

}

I am not sure about 2 things:

Why do I need to care about Parent PID?
Why do I need to FindProcess, and then get the PID? (since I already have the PID)

Would you please explain it to me?

No " parentpid := os.Getppid()" you did not need it
was just an example
In fact you just need "pid := os.Getpid()" and put pid in the file
I'm not familiar with go but for me the real code is more simple:
 import (
     "fmt"
     "log"
     "os"
 )

 func main() {
     file, err := os.Create("/var/run/doh-server.pid")
     if err != nil {
         log.Fatal("Cannot create pid file file", err)
     }
     pid := os.Getpid()
     defer file.Close()
     fmt.Fprintf(file, pid)
 }

OK. Thank you for that!
And, do I need to remove the file before the program exits? Or just leave it as is?

In fact
You have to remove it if a signal "KILL" is sent to your daemon.
When your program start:
Check if /var/run/doh-server.pid exists.
If exists then read the pid in /var/run/doh-server.pid
get the integer, and check if you have a /proc/[PID]/cmdline file.
if /proc/[PID]/cmdline exists then an already instance of doh-server exists then die()
if /proc/[PID]/cmdline did not exists, remove /var/run/doh-server.pid and create a new one with the new PID file.
This to prevent a script that loop to run multiple time your program.

Understood! Thank you for your detailed explanation!
Please give me some 1 or 2 days so I can implement and test the feature.
I will tell you when I finish. Please help me to test the stability then.
By the way, I found it a little bit difficult to implement on other OSes, due to the following reasons:

On Windows, we don't have a global tmpfs which is erased after reboot.
On macOS, we don't have either a global tmpfs and a procfs. And due to the documentation, os.FindProcess can't check whether a process is still alive on Unix systems.

However PID file is not necessary for Windows and macOS:

On Windows, one of my friend is working on integration with NT Services. Thus PID file will not be implemented on Windows.
On macOS, since we already have launchd integration, PID file will not be implemented either.

Therefore, PID file will only be implemented on Linux for daemon management systems that are not able to use cgroups to track processes (e.g. sysvinit / upstart / monit / some Dockerized environments). Is it enough for your scenario? Do I need to expand the support to other operating systems such as BSD?
After the feature is added to the code, you will be able to try the new feature in master branch.
But a version number and tarball downloads will be released only after I collect 2-3 new features.

i think if add pid file support, user a flag to turn on this feature,
because if it runs under systemd the pid file support is unnecessary
David Touzeau<EMAIL_ADDRESS>于 2018年11月24日周六 16:21写道：

You should organize your code for windows and linux like this way
https://kylewbanks.com/blog/cross-compiling-go-applications-for-multiple-operating-systems-and-architectures
Other point, for maintain your product we need to expose the version number
i suggest to get a "-version" command line in order to get the version of
your code.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/m13253/dns-over-https/issues/29#issuecomment-441351718,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJoPKThqyGk16murdDbz-Bo--XIwQkWUks5uyQGJgaJpZM4YwtYM
.

Fixed in commit 35ddf435059fb3f4a9a2903a5235622fe3d3a590.
Please have a test.
The feature will only be available on certain platforms.

Fixed, closing.


JSON for body formatting does not work as mentioned in the documentation

In the documentation there is sample code written for custom body JSON with sections. The example JSON provided has
"sections": [
        {
            "displayName": "",
            "fields": [
                "Title"
            ]
        },

But using "displayName" with capital "N", list form do not render the value of the attribute in the page. If I replace it with small letter "n" , the section display name gets rendered properly. So, working example should be as below:
"sections": [
        {
            "displayname": "",
            "fields": [
                "Title"
            ]
        },

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

ID: 0f6aeedd-a76d-88b0-7ed5-93e20ac218bc
Version Independent ID: 64315895-1103-d5f6-0195-9b5b61211132
Content: Configure the list form
Content Source: docs/declarative-customization/list-form-configuration.md
Product: sharepoint
GitHub Login: @VesaJuvonen
Microsoft Alias: vesaj

This is duplicate to issue https://github.com/SharePoint/sp-dev-docs/issues/6643
PR is already raised for the prior issue https://github.com/SharePoint/sp-dev-docs/issues/6643 at https://github.com/SharePoint/sp-dev-docs/pull/6646

This is duplicate to issue https://github.com/SharePoint/sp-dev-docs/issues/6643
PR is already raised for the prior issue https://github.com/SharePoint/sp-dev-docs/issues/6643 at https://github.com/SharePoint/sp-dev-docs/pull/6646

Closing as issue has been fixed.


Hexo Hello World

Hexo Hello World
Install Hexo
npm install hexo-cli -g

Create Hexo Project
hexo init project_name

Run
If you want to run hexo project run the simply command
hexo server

Hi @yonisaka thank you for your contribution.
Would you mind filling the checklist included in the PR template?


Add ability to copy untranslated string to translated one

Some words (mostly app names) should be kept the same, this will get rid of the hassle to rewrite them too.

Some words (mostly app names) should be kept the same

That's creators' choice. Currently, if a <string …> has the translatable="false" attribute, it will not be shown on the list of strings. However, a Copy button is not so hard to implement, and it might still be useful in some cases.

Or allow selection in that field.

Or allow selection in that field.

I was surprised when it didn't work. I wish there was some readonly="true" attribute for EditText.

Now you can select the text of the original string, which is a bit less intrusive than a whole new button.

I would still vote for the button, it really helps in complex code strings, like HTML links. Similar to online services like Crowdin and Transifex, that let the user do both.
The UX would be

Tap a button that copies and selects the translation field
Modify text as needed

Instead of current

Select all the text (manually or with the option on Android 6+)
Hit copy
Hold on the translation field
Hit paste
Focus the translation field
Edit as needed

Where should this button go then? Bear in mind not all screens are too large, and this extra button may easily become a problem when the keyboard is also shown, and the string spans accross a few lines. I wonder if it would be possible to modify the context menu of the original string field to include "Copy below" or something.

Perhaps on the end of the label "Translated string", therefore also increasing the space between text fields.

I wonder if it would be possible to modify the context menu of the original string field to include "Copy below" or something.

Well, there's this but it seems to be way too global for this purpose.


No Event "MintingUpdate" for adjust if minted is decreased

Issue with state
How to replicate:

Open Position (minted: 0 ZCHF)
Call "adjust" and mint some ZCHF e.g. minted: 1000 ZCHF
"MintingUpdate" event triggered: ponder & api will index and update state
Call "adjust" and return your outstanding mint to 0 ZCHF
Tx done. Debt paid. No event triggered, like "MintingUpdate"
Ponder is not aware of the minted: 0 ZCHF state and remains at the old state
Api is not aware of the new minted: 0 ZCHF state, because:

Api depends on ponder indexed state and blockchain stored history to minimize fetching manual data.
It was anticipated that the event "MintingUpdate" gets triggered if you adjust your position incl. minting amount.
Event MintingUpdate includes uint256 minted, however, never called/triggered. never indexed.

Explanation:

if there is no event, then there is no ponder indexing
if there is no ponder indexing, there is no update in api
Therefor also no updates for the application

Similar issue is already known with collateral transfer

solved by overriding the balance of the position to include ERC20 transfer events

Solvable?

quick and dirty, fetching latest minted of each position?

FIXME:

position: collateral balanceOf
position: minted
use multiCall and replace single eth_data requests

done

Thanks for the hint. I also fixed this in the upcoming 2024 version of the smart contracts:
https://github.com/Frankencoin-ZCHF/FrankenCoin/commit/e4e051a3549a4d8ef05600fd03d695bc76c48822


Update gist description

https://docs.github.com/en/rest/gists/gists?apiVersion=2022-11-28#update-a-gist

@Ahmed-E-86 this should address your comment https://github.com/carlocardella/vscode-VirtualGists/issues/16#issuecomment-1859726556

My only problem now is renaming the created gists.

Version 0.7.0 should be available in the Marketplace soon.

@Ahmed-E-86 this should address your comment #16 (comment)

My only problem now is renaming the created gists.

Version 0.7.0 should be available in the Marketplace soon.

That is great news. Thanks for your support.


Add code action to convert to a readonly clone

Purpose
Fixes #33563
Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[x] Added necessary tests

[x] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[x] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Closing on behalf of https://github.com/ballerina-platform/ballerina-lang/pull/33568


Introduce Pojo Builders

Summary
Quoting myself commenting in PR #150

What I did in tests that involved lots of Pojo manipulation was to create separate methods to construct these Pojos (createPersonWithId, createPersonWithoutId), so I could just refer to a instance for a specific purpose in a single line.
However I am coming to realize that a better solution exists. There is a design pattern called Builder that can help us create these Pojos in a much cleaner way.

Indeed, a Builder for each Pojo in this project would do wonders. Here's a great article that explains the design pattern, its use case and how it ends up looking like. The basic idea is to refactor all uses of Pojo constructors and setters out of tests into a class specialized in creating Pojos.
And here's my take on this. Methods for these Builders should be chainable by returning the Builder themselves on each call except build() or related methods.
Expected outcome
To be able to create Pojo classes using a clean, uncluttered API similar to
Pojo instance = new PojoBuilder().withName("name").withId(1).build();

These chain calls could be refactored down to separate methods (Director methods?) to be reused and they would still be readable.
Considered alternatives
Defining methods to separate creation logic. Which proved to aid little in improving code readability.
At best, it took lines away from test methods. At worst, it just appended them to the end of the test class.

Summary
Quoting myself commenting in PR #150

What I did in tests that involved lots of Pojo manipulation was to create separate methods to construct these Pojos (createPersonWithId, createPersonWithoutId), so I could just refer to a instance for a specific purpose in a single line.
However I am coming to realize that a better solution exists. There is a design pattern called Builder that can help us create these Pojos in a much cleaner way.

Indeed, a Builder for each Pojo in this project would do wonders. Here's a great article that explains the design pattern, its use case and how it ends up looking like. The basic idea is to refactor all uses of Pojo constructors and setters out of tests into a class specialized in creating Pojos.
And here's my take on this. Methods for these Builders should be chainable by returning the Builder themselves on each call except build() or related methods.
Expected outcome
To be able to create Pojo classes using a clean, uncluttered API similar to
Pojo instance = new PojoBuilder().withName("name").withId(1).build();

These chain calls could be refactored down to separate methods and would still be readable.
Considered alternatives
Defining methods to separate creation logic. Which proved to aid little in improving code readability.
At best, it took lines away from test methods. At worst, it just appended them to the end of the test class.

Is it ok we annotate those pojo's w/ @builder since we are using lombok?

@NyorJa damn... I'm defeated now. I didn't know Lombok provided such an annotation!
Totally YES.


Make it easy to derive grouped histograms from Dataset

Right now it is difficult to derive histograms from Dataset as frequencies are derived from the raw data and are a function of all the various bin widths. The best suggestion seems to be to support a group_by argument to the hist method that does the grouping and returns the output as an NdOverlay.

This has now been added along with some gallery examples.


Implemented new StatusCake API

New StatusCake API: https://developers.statuscake.com/

This looks great @bahattincinic ! Thank you for making this contribution. The PR is neat concise and complete, well done. Enjoy your day :)

Thank you for your kind words. I'm glad you found the PR neat and complete. Have a great day! 😄


docker-compose not successful in current version

Could not build the Testbed in current version with the docker-compose file.
Found some quick-fixes to make it run:
add version number to docker-compose.yaml
version: "3.0"
services:
  omejdn: ...

fix env variables by removing quotation marks
OMEJDN_VERSION=1.6.0
...
UI_VERSION=dev

Hi @kretzschi!
Which version of docker-compose are you using?
Could you please paste the errors in this issue?


bug(google-maps): google.maps.ControlPosition.RIGHT_TOP returning undefined when pushing measure distance widget

Is this a regression?

[ ] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was
No response
Description
We are running some unit tests for our google map component where the tests seem to fail due to google.maps.ControlPosition.RIGHT_TOP returning undefined when trying to push the measure distance widget element in our ngAfterViewInit() function like so: this.map.controls[google.maps.ControlPosition.RIGHT_TOP].push(measureDistanceWidgetRootElement)
where measureDistanceWidgetRootElement is defined as a native element:
this.measureDistanceWidget.map = this.map.googleMap!
let measureDistanceWidgetRootElement = this.measureDistanceWidget.element.nativeElement
Error output:
TypeError: Cannot read properties of undefined (reading 'push')
However, all the tests pass once we change the control position to a value that does not return undefined, like google.maps.ControlPosition.RIGHT_BOTTOM. This behavior is only observed when running the unit tests and not while the application is running, the measure distance widget works as expected. Therefore, we want to know why some control positions are returning undefined while others are not and if this error could be replicated.
Reproduction
Steps to reproduce:
Create a measure distance widget component and try pushing it to the RIGHT_TOP control position in ngAfterViewInit() as a native element, something like this:
this.measureDistanceWidget.map = this.map.googleMap! let measureDistanceWidgetRootElement = this.measureDistanceWidget.element.nativeElement this.map.controls[google.maps.ControlPosition.RIGHT_TOP].push(             measureDistanceWidgetRootElement         )
Expected Behavior
google.maps.ControlPosition.RIGHT_TOP should not return undefined and the unit tests pass.
Actual Behavior
google.maps.ControlPosition.RIGHT_TOP returns undefined and the unit tests fail.`
Environment

Angular CLI: 13.3.10
Node: 16.14.0
Package Manager: npm 8.3.1
Browser(s): Google Chrome
Operating System (e.g. Windows, macOS, Ubuntu): Windows 64 bit

Package                         Version
@angular-devkit/architect       0.1303.10
@angular-devkit/build-angular   13.3.10
@angular-devkit/core            13.3.10
@angular-devkit/schematics      13.3.10
@angular/cdk                    13.3.9
@angular/cli                    13.3.10
@angular/flex-layout            13.0.0-beta.38
@angular/google-maps            13.3.9
@angular/material               13.3.9
@schematics/angular             13.3.10
rxjs                            7.8.0
typescript                      4.6.4

This is likely because the Google Maps API isn't included in the tests.


Bug located in ...

🔍 Before submitting the issue

[X] I have searched among the existing issues
[X] I am using a Python virtual environment

🐞 Description of the bug
I've installed the required package.
The code [
from ansys.mapdl.core import launch_mapdl
mapdl = launch_mapdl(start_instance=False)
print(mapdl)
]
Unexpected,
Error: Unable to connect to MAPDL gRPC instance at <IP_ADDRESS>:50052
HELP!!
Info: Win10, ANSYS 2021R1, Python3.8, Pycharm2022.
File path: F:\08Database\Pycharm2022
📝 Steps to reproduce
The code [
from ansys.mapdl.core import launch_mapdl
mapdl = launch_mapdl(start_instance=False)
print(mapdl)
]
Error: Unable to connect to MAPDL gRPC instance at <IP_ADDRESS>:50052
💻 Which operating system are you using?
  Please see the following PyMAPDL documentation page:
https://mapdl.docs.pyansys.com/getting_started/running_mapdl.html
You would need to launch MAPDL from a DOS command line like so:
C:/Program Files/ANSYS Inc/v211/ansys/bin/winx64/ANSYS221.exe -grpc
Then once that is started up (it will give you an output window) you can issue those commands in PyCharm:
from ansys.mapdl.core import launch_mapdl
mapdl = launch_mapdl(start_instance=False)
print(mapdl)

Mike

Closed because of inactivity.


Enable configuring of hostname generation and ports

Is your feature request related to a problem? Please describe.
We aim to run Solr in Amazon EKS (managed Kubernetes). We have microservices in an Amazon VPC that wants to communicate with Solr and Zookeeper running in a Kubernetes cluster that belongs to the same VPC. Amazon EKS exposes pod IPs in the VPC, but not service IPs. So our microservices (outside of Kubernetes but in the same VPC) can only talk to Solr pods, not Solr services. The Solr Operator can't easily be configured to enable this use-case.
Describe the solution you'd like
Possibility to configure template like expression for hostnames: {{ .Name }}.{{ .Namespace }}.ourdomain.com
Possibility to configure service port. It's now hardcoded to 80.
Additional context
By using ExternalDNS (https://github.com/kubernetes-incubator/external-dns) and annotating the Solr and Zookeeper headless services we can get Solr and Zookeeper pod IPs (VPC IPs, not Kubernetes internal IPs) registered in DNS (Route53). Our microservices can use these DNS records to talk to Solr pods.
As an example, let's say we create a solrcloud "example" with ingress-base-domain=ourdomain.com, namespace=default, ExternalDNS enabled, the result is then
hosts registered in zookeeper:
default-example-solrcloud-0.ourdomain.com:80
default-example-solrcloud-zookeeper-0.ourdomain.com:80
pods:
example-solrcloud-0 8983
example-solrcloud-zookeeper-0 8983
services:
example-solrcloud-0 80
example-solrcloud-zookeeper-0 80
dns:
example-solrcloud-0.ourdomain.com
example-solrcloud-zookeeper-0.ourdomain.com
With the help of ExternalDNS our own microservices can now use example-solrcloud-zookeeper-0.ourdomain.com:2181 as address to zookeeper. It will resolve to the Zookeeper pod IP in the VPC. However, the solrj client will get the state of the cluster from Zookeeper and it says all hosts are prefixed with "default-". So solrj tries to use the hostname default-example-solrcloud-0.ourdomain.com to talk to solr. But this host does not exist in DNS. If it was possible to configure the Solr Operator how the hostnames are generated it would be possible to skip the namespace and generate the same hostnames as ExternalDNS (example-solrcloud-0.ourdomain.com).
With this change our own microservices could now get a working Solr hostname and IP. But this will still not work because the port is wrong. The Solr pods are reachable on port 8983, but Zookeeper will tell the clients that Solr can be reached on port 80 (because that is the internal Kubernetes service port). If it was possible to configure the Solr Operator to have 8983 as the service port rather than 80 this communication would work.
This way the hostname/port is the same for external and internal communication, but they are resolved to pods for external access and services for internal access. We have tested to implement this and it seems to work. No ingresses or loadbalancers are needed.

So I think this would be an awesome addition. We should probably make this a broader addressability configuration feature that lets you select from:

LoadBalanced Services, services + ingress, or headless service (to possibly use with external DNS?)
Override the default ports
Service Annotations for ExternalDNS, and if so what the format of the URL should be? (option to include namespace or not)

A quick question about how you are using ExternalDNS, as I'm just learning about it now. There is a way to scrape kubernetes services using ExternalDNS without the services having annotations, correct? We can definitely add the annotations, but it looks like there is a way to scrape all services using a filter. At that point I think you should be able to do run ExternalDNS with the parameter --fqdn-template={{.Name}}.{{.Namespace}}.ourdomain.com, and I think it would probably work with the namespace in the domain... I still need to do some research into the ports though.
I worry about removing the namespace from the external DNS, as there could be conflicts with similarly named solrClouds in different namespaces. I may be overly cautious about that, so for now I've included it in the preliminary list of configuration options above.

Currently we annotate the headless solr and zookeeper services.
We are experimenting with not having an ingress-base-domain. If we use ingress-base-domain then that domain must somehow be added to Kubernetes DNS. Can that easily be configured? Prometheus exporter can't resolve example-solrcloud-0.ourdomain.com because ourdomain.com is not in Kubernetes DNS, only in our external DNS (route53). So now we don't use ingress-base-domain. Instead we have a dns zone for each solrcloud with the name solrcloudname-solrcloud-headless.
Yes, namespace in the domain probably works if it's a subdomain, but having it as a prefix to all generated hostnames makes the naming incompatible with the ExternalDNS naming where you can't customize the prefix.

What about something like this in solrcloud.yaml?
kind: SolrCloud
spec:
  solrServicePort: 8983
  solrFqdnTemplate: {{ .Name }}.{{ .Namespace }}.domain.com

Yeah, we should definitely add a spec entry for addressability.
I can probably work on that sometime next week. I'll support Ingress, ExternalDNS, and headless services at first.

@HoustonPutman That's great!
Right now we create a headless prometheus exporter service ourselves to get ExternalDNS integration for prometheus. Maybe it would be a good addition as well? Is that included in your work or should I create a new issue for that?

@timterle , sorry for the extremely late reply.
I've started to work on a big overhaul of customization. I've done a lot of reading on ExternalDNS, and I still have a few questions.

Do you use externalDNS with services that are not loadBalanced? If so I don't see how that works in their documentation, it looks like a Service must be either 1) LoadBalanced 2) ExternalName 3) Headless Node-Port. Our services for the solrcloud are none of those, so I was looking into giving both of following options, which would work together: 1) use LoadBalanced services or and Ingress and 2) Use externalDNS or not.
Would you be able to use ExternalDNS with ingresses? Because it looks like that is also supported. This is less important if your answer to the previous bullet point is yes.

I'm planning on pushing a PR with the CRD changes I'm proposing before actually implementing the logic. That way we can iterate on features and design without having to do a ton of rewrites. So I'd really appreciate your input, as we run our kube clusters very differently than y'all do.

Finally got it merged in @timterle ! Sorry it took this long, but I really think we got it right.
If you still use the Solr Operator and ExternalDNS mind testing it out at some point? (I'd love for someone to test it out before we do a release.)


support backup preservation

About this change: What it does, why it matters
Supports request for preserving/holding a backup till a particular date, this way we can guarantee that the backup is not deleted during a restoration request.
If the oldest backup is being preserved, myhoard will not purge any backup but will keep generating new backups. Purging is resumed till the preservation date is met.
How to request a backup preservation?
For preserving a backup, a request to the HTTP API needs to be performed. For example:
POST /backup_preservation
{
    "stream_id": "valid_stream_id_1234",
    "preserve_until": "2023-09-12T13:30:00"
}

This will trigger the controller on fetching the respective backup stream and storing preserved_info.json on the object storage, it will contain the request  preserve_until. After storing the file, all backups metadata are immediately refreshed and myhoard considers updated preserve_until values before trying to purge old backups.
How to cancel a backup preservation?
POST /backup_cancel_preservation
{
    "stream_id": "valid_stream_id_1234",
}

This will trigger the controller on fetching the respective backup stream and storing preserved_info.json on the object storage, but will store an empty "preseve_until" value.

Codecov Report

Merging #171 (8a6ab95) into master (f587485) will decrease coverage by 0.14%.
The diff coverage is 87.17%.

@@            Coverage Diff             @@
##           master     #171      +/-   ##
==========================================
- Coverage   78.52%   78.39%   -0.14%
==========================================
  Files          17       17
  Lines        4373     4439      +66
  Branches      987      995       +8
==========================================
+ Hits         3434     3480      +46
- Misses        708      728      +20
  Partials      231      231

Files Changed
Coverage Δ

myhoard/backup_stream.py
77.32% <64.70%> (-0.30%)
:arrow_down:

myhoard/controller.py
80.42% <84.00%> (+0.25%)
:arrow_up:

myhoard/util.py
89.11% <100.00%> (+0.11%)
:arrow_up:

myhoard/web_server.py
80.48% <100.00%> (+3.47%)
:arrow_up:

... and 2 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Possible to reset to default out-of-package behavior?

Hi, thanks for that great tool.
I played a little on 2 machines running Ubuntu Focal Fossa. Is there a way to switch back to the out-of-box behavior of the AMD Wraith Prism?
Out-of-box, w/o any intervention and no connection, logo & fan does cycle slowly thru a rainbow cycle and the ring also but with different speed, faster than logo & fan.
Cheers

Hi, thank you fo r your kind words :)
Rainbow mode in not supported yet, but this is something that will be possible.
There is an open feature request for this #10 and other modes.
Other than that it can be done rather painfully through Windows VM and original app.

Hi, ok, sounds good, will be patient.
And no it's not painful to work with on/with Windows ... every OS has it's character, I prefer to handle all of them instead of complaining ... ^^

What I meant is, using VM with USB passthrough to run original app in order reset to factory settings is painful :)


Does not compile with Vapor 4 RC

As part of this PR the following improvements could be made:
Add case patch to OperationType
Especially when patching/updating is done partially (e.g. only providing the fields to-be-updated).
Add the following extension:
extension QueryEndpoint {
    public func register(to routes: RoutesBuilder) {
        switch operationType {
        case .get:
            routes.get(use: handler)
        case .post:
            routes.post(use: handler)
        case .put:
            routes.put(use: handler)
        case .patch:
            routes.patch(use: handler)
        case .delete:
            routes.delete(use: handler)
        }
    }
}

This allows most routes to drop their implementation of register()
Update Custom to allow for different return values.
Right now T must be returned. This would implicate that the path parameter must be optional.


LinuxMac.sh installation failed: Miniforge --> miniforge3

One user had problems with the installation. It must be miniforge3 instead of Miniforge line 106/107.
The installation then worked but with the following message:
$miniforge3/envs/mssenv/etc/conda/deactivate.d/libxml2_deactivate.sh:
line 3: xml_catalog_files_libxml2: unbound variable
But nevertheless msui seems to work afterwards.

just checked, we have a difference when using the -a automatic installation


chore: decouple cargo-near from rustup

I've been patching this locally for a while and never got around to it, this should save some headache for nixos users.
Basically taken from https://github.com/rustwasm/wasm-pack/blob/32aaecfb9be36dd741de96fb8230ad8b2579dca4/src/build/wasm_target.rs#L69
Tested just now, works well for me on nix.

@dndll Can you try 0.6.2 release? This PR is already included there

@dndll Can you try 0.6.2 release? This PR is already included there

Looks like theres an issue with the clap macro, getting
no field build_command_args on type &commands::deploy::InteractiveClapContextScopeForContract


When attempting to download video+audio, youtube-dl will falsely claim "already downloaded and merged" if the video has already been downloaded

Checklist

[x] I've verified that I'm running youtube-dl version 2019.06.27

Joshuas-MacBook-Pro:ff7 joshuarodman$ youtube-dl -U
Updating to version 2019.06.27 ...
Updated youtube-dl. Restart youtube-dl to use the new version.

[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar bug reports including closed ones
[x] I've read bugs section in FAQ

Verbose log
Joshuas-MacBook-Pro:ff7 joshuarodman$ youtube-dl -v -f 243+250  'https://www.youtube.com/watch?v=tht4GQWOHiE&list=PLE3sw8KYN43fG6U6S0c00PLZtzI_dftv-'
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v', u'-f', u'243+250', u'https://www.youtube.com/watch?v=tht4GQWOHiE&list=PLE3sw8KYN43fG6U6S0c00PLZtzI_dftv-']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2019.06.27
[debug] Python version 2.7.16 (CPython) - Darwin-17.7.0-x86_64-i386-64bit
[debug] exe versions: ffmpeg 4.1.3, ffprobe 4.1.3, rtmpdump 2.4
[debug] Proxy map: {}
[youtube:playlist] Downloading playlist PLE3sw8KYN43fG6U6S0c00PLZtzI_dftv- - add --no-playlist to just download video tht4GQWOHiE
[youtube:playlist] PLE3sw8KYN43fG6U6S0c00PLZtzI_dftv-: Downloading webpage
[download] Downloading playlist: Final Fantasy VII - Let's Play/Walkthrough (2019) - w/ Cam, Commentary & Live Chat! (Complete)
[youtube:playlist] playlist Final Fantasy VII - Let's Play/Walkthrough (2019) - w/ Cam, Commentary & Live Chat!  (Complete)

Description
I stumbled when trying to navigate the new reality of youtube where

video and audio are always split
typical best formats are way way way bigger than I want.

Thus I'm struggling to use the various format flags and making missteps, leading this this situation:
Step 1 - Download video-only version of playlist accidentally with -f 243
Step 2 - Attempt to download video + audio with -f 243+250
This results in youtube-dl deciding that everything has been downloaded and merged, but yet there is no audio.  The workaround is to delete all the files and download again.
I don't know enough about the project to know how hard it would be to either just work, or to give an accurate output message (eg, cannot use already-merged webm to create merged audio+video)
Feel free to convert to feature request etc as makes sense.

This is expected behavior. youutube-dl will not overwrite existing files.


QuickFilter Event

I want to know, which event i have to capture for following situation:
user selects item from Quickfilter and Grid gets populated with data. Now user clicks on x in a quickfilter.
which removes selected text from QuickFilter, but grid data does not change.

regards
Shailesh

It refreshes on clear, check if you have a script error.

when x is clicked, it doesn't refreshes grid, neither i am getting any script error.
Text of Cascaded lookup editor gets cleared.
regards
Shailesh

It works in all Serene pages, so sorry don't know what is problem of yours.


Enhancing User Experience with Interactive Quizzes

Description
We propose implementing interactive quizzes as a new feature to enhance user engagement and learning outcomes on the platform. Interactive quizzes can provide immediate feedback to users, reinforcing their understanding of the concepts covered in the courses.
Key Functionalities:
Varied Question Types: Add different question types like multiple-choice, fill-in-the-blanks, and true/false for diverse assessment.
User-Friendly Interface: Design a user-friendly quiz interface that is easy to navigate and interact with.
Mobile Compatibility: Ensure quizzes are accessible and optimized for mobile devices for on-the-go learning.
Please assign me to this issue so that I can start working on implementing these enhancements. I'm excited to collaborate and contribute to creating a more appealing and user-friendly website.
Thank you for considering this proposal!
Screenshots
No response
Checklist

[X] I have checked the existing issues.
[X] I follow Contributing Guidelines of this project.
[X] I am a GSSoC'24 contributor.
[X] I want to work on this issue.

Code of Conduct

[X] I agree to follow this project's "Code of Conduct".

@DeeptiWani Are you going to make complete frontend and backend for the QUIZ Part

No, I won't create a complete frontend and backend for the quiz part
Interactive quizzes can provide immediate feedback to users, reinforcing their understanding of the concepts covered in the courses. This immediate feedback can be especially beneficial as it allows users to learn from their mistakes and reinforce correct answers promptly.
For example, if a user selects the wrong answer, CSEdge Learn interactive quiz feature can display the correct answer along with an explanation immediately after the question. This approach not only helps users understand why their answer was incorrect but also ensures that they grasp the correct information for future reference.
Tech Stack-Html,CSS,JS


Tooltips

This replaces tooltips site-wide with xivanalysis/tooltips, ready for when xivdb inevitably isn't updated for 4.4. I got there. End me.

A lot of this just looks like black magic fuckery to me, but I didn't see anything obviously wrong. I'll pull down the branch tonight and test it out a bit with my WIP modules to see how she handles.
P.S. Until proven otherwise, I'm going to assume that HOC stands for Heart of (the) Cards.

Aite, I've fixed up some crap left over from last night, think we should be good to go.
I'll merge it tonight so I've got the whole weekend to Fix Shit™ - @KhloeLeclair / @MikeMatrix, any opinions would be 👌 if you've got the time.

This is pulling in the optionalDependencies which is annoying. There's only one, and it's pretty small, so I'm going to let it slide for now. Need to research how best to handle it for future updates.


Sean

Adding myself to contributor's page!

Hello @kirmani thank you for the PR. This is great, cool stuff with the date :+1:  One thing that is missing in the PR is route, deep-linking URL. Once you add the route and test the formatting of the page we are good to go! Please take a look at staticfiles/js/crowdsource.routes.js and include the link to sean.html, your homepage.
Thank you!


stringFirst/stringLast crashes at aggregation time

Affected Version
0.13.0-incubating (and maybe older versions)
Description
See discussion on #5789 for background.
Set up a fresh install of Druid 0.13-incubating following the quickstart.
Write this index spec:
{
  "type" : "index",
  "spec" : {
    "dataSchema" : {
      "dataSource" : "wikipedia",
      "parser" : {
        "type" : "string",
        "parseSpec" : {
          "format" : "json",
          "dimensionsSpec" : {},
          "timestampSpec": {
            "column": "time",
            "format": "iso"
          }
        }
      },
    "metricsSpec": [{
      "name": "channel",
      "fieldName": "channel",
      "type": "stringFirst",
      "maxStringBytes": 100
    }],
      "granularitySpec" : {
        "type" : "uniform",
        "segmentGranularity" : "day",
        "queryGranularity" : "hour",
        "intervals" : ["2015-09-12/2015-09-13"],
        "rollup" : true
      }
    },
    "ioConfig" : {
      "type" : "index",
      "firehose" : {
        "type" : "local",
        "baseDir" : "quickstart/tutorial/",
        "filter" : "wikiticker-2015-09-12-sampled.json.gz"
      },
      "appendToExisting" : false
    },
    "tuningConfig" : {
      "type" : "index",
      "targetPartitionSize" : 5000000,
      "maxRowsInMemory" : 1000,
      "forceExtendableShardSpecs" : true
    }
  }
}

and post it:
$ bin/post-index-task --file stringfirst-index.json
Beginning indexing data for wikipedia
Waiting up to 119s for indexing service [http://localhost:8090/] to become available. [Got: <urlopen error [Errno 61] Connection refused> ]
Task started: index_wikipedia_2019-03-12T19:07:26.507Z
Task log:     http://localhost:8090/druid/indexer/v1/task/index_wikipedia_2019-03-12T19:07:26.507Z/log
Task status:  http://localhost:8090/druid/indexer/v1/task/index_wikipedia_2019-03-12T19:07:26.507Z/status
Task index_wikipedia_2019-03-12T19:07:26.507Z still running...
Task index_wikipedia_2019-03-12T19:07:26.507Z still running...
Task index_wikipedia_2019-03-12T19:07:26.507Z still running...
Task index_wikipedia_2019-03-12T19:07:26.507Z still running...
Task finished with status: FAILED

The log reads:
2019-03-12T19:07:45,892 WARN [appenderator_merge_0] org.apache.druid.segment.realtime.appenderator.AppenderatorImpl - Failed to push merged index for segment[wikipedia_2015-09-12T00:00:00.000Z_2015-09-13T00:00:00.000Z_2019-03-12T19:07:26.636Z].
java.lang.ClassCastException: org.apache.druid.query.aggregation.SerializablePairLongString cannot be cast to java.lang.String
	at org.apache.druid.query.aggregation.first.StringFirstAggregateCombiner.reset(StringFirstAggregateCombiner.java:35) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
	at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.resetCombinedMetrics(RowCombiningTimeAndDimsIterator.java:249) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
	at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.combineToCurrentTimeAndDims(RowCombiningTimeAndDimsIterator.java:229) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
	at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.moveToNext(RowCombiningTimeAndDimsIterator.java:191) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
	at org.apache.druid.segment.IndexMergerV9.mergeIndexesAndWriteColumns(IndexMergerV9.java:492) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
	at org.apache.druid.segment.IndexMergerV9.makeIndexFiles(IndexMergerV9.java:191) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
	at org.apache.druid.segment.IndexMergerV9.merge(IndexMergerV9.java:914) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
	at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:832) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
	at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:810) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
	at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.mergeAndPush(AppenderatorImpl.java:719) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
	at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.lambda$push$1(AppenderatorImpl.java:623) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
	at com.google.common.util.concurrent.Futures$1.apply(Futures.java:713) [guava-16.0.1.jar:?]
	at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:861) [guava-16.0.1.jar:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_162]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_162]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162]

@gianm suggested in #5789 that the AggregateCombiner code was just not running at all and that it should always be acting on SerializablePairLongString values rather than Strings. I am not enough of an expert on aggregation to know if that's correct.

I'd be happy to fix this, and it's probably a small fix, but I'm lost as to where the appropriate place to add a unit test is. It seems like the issue here is less "a specific class's implementation has a bug" and more "a class implements the wrong design which only fails in a larger context", so it seems like I'd want to write a test that actually uses the larger context that a StringFirstAggregatorFactory is used in, instead of just being a unit test that StringFirstAggregateCombiner implements what we now think it should implement. Anyone have a good idea of where such a test could go?  (An integration test seems overkill.)

Maybe this is a question that @leventov (who added AggregateCombiners) could help with? I'm wondering where would be a good place to write a test that verifies that a specific AggregateCombiner works in the context of its AggregatoryFactory. My belief is that StringFirstAggregateCombiner (and StringLastAggregateCombiner) doesn't actually act on the right data type, but it doesn't seem like this is something that should be tested just by testing SFAC itself...

The problem is that StringFirstFoldingAggregatorFactory and StringLastFoldingAggregatorFactory have improper makeAggregateCombiner() implementations. They inherit makeAggregateCombiner() from StringFirstAggregatorFactory and StringLastAggregatorFactory, which is wrong.
Related to #6039.

I honestly couldn't figure out what the purpose of the StringFirstFoldingAggregatorFactory class was.
For a short term fix (to fix the bug, without the refactors you're suggesting), is the suggestion that StringFirstFoldingAggregatorFactory.makeAggregateCombiner should have return this?

For a short term fix (to fix the bug, without the refactors you're suggesting), is the suggestion that StringFirstFoldingAggregatorFactory.makeAggregateCombiner should have return this?

It seems to me that no, you cannot return this. Folding aggregators are uniquely different from the simple aggregators. You can make simple aggregators kinda accept both (AFAIR some complex aggregators work this way), but it will make the basic aggregation less efficient.
As a short term fix you can override makeAggregateCombiner() in Folding aggregators properly, shouldn't be a very big deal (still without refactoring I'm suggesting.)

Oh I see. I was getting makeAggregateCombiner() and getCombiningFactory() confused. So make StringFirstFoldingAggregatoryFactory.makeAggregateCombiner() return a new StringFirstFoldingAggregateCombiner which acts on pairs. I still don't know where to write tests that prove that I've written the correct classes, though.

I cannot think of a better place than StringFirstFoldingAggregatoryFactoryTest, and calling methods like makeAggregateCombiner() manually and applying values manually. Admittedly, these interfaces are hard to test. It needs work. I've opened #7340 about this.
For your patch, it's not obligatory to add such tests, at least because many other aggregator factories currently don't have such tests either.

Sure, I guess the problem is I can write tests that validate that the particular classes do what I wrote them to do, but I'm not sure how to write tests that validate that all the different components of aggregating work together properly with the right types, especially as I don't really understand this corner of Druid well.  The difference between "does the code do what I think it does" and "does the code implement the right thing".

I saw this message in the latest version :
(Double/Float/Long) First and Last aggregator cannot be used in ingestion spec, and should only be specified as part of queries.

@glasser Hi David, do you know if there is any progress on this issue? We were hoping to use this feature for a use-case but have come across this bug. Otherwise, do you know if there is an undocumented workaround?

My attention has been elsewhere but my situation remains the same -- the fix seems trivial but I'd be way more comfortable making it if there was a more integration/end to end test showing that the fix was correct, and I need advice on how to do that.

Is there any update on this topic? It would be neat to be able to use this feature at ingestion time. It would allow us to reduce the amount of stored data and hopefully speed up our queries.

We also encountered similar issue. We have attempted the fix proposed in the above conversion. I will try to post a PR for review soon.


[doc] Use "param" instead of "code" to refer to parameters #2

Also fixes the set_font_size description in Theme.xml.
One of several commits to fix all of the class XML docs (see #64134).

There seems to be a bug in make_rst.py.
In TileMap.xml, if we convert tile_data on line 28 from [code]tile_data[/code] to [param tile_data], we end up with a Tag depth mismatch error.

@asmaloney Can it be because there are several cases of [code]coords[/coords] in there (and not just in that description)? 🙃

lol - I'm using a regex find, and didn't even see that. Cross-eyed looking at all these.
Seems like something make_rst.py could catch & report.
Can these tags can't be nested?

Aside (and maybe not the right place for this):
Would it be reasonable to add a check in the ci for docs-only changes like this, skip the builds, and only do the static check? Or is it possible that the results of changing the docs can break a build?
The way I do it in my own repos is look for a special code ("[skip ci]") in the commit message and skip running the CI build steps. In this case maybe "[static checks only]" or "[skip build]" would be useful.
This would save a lot of time working on the docs and a lot of extra building on the GitHub side. Save the environment!

Seems like something make_rst.py could catch & report.

Yeah, no idea why it doesn't complain about the issue as is, but starts to complain when you make this edit there. I'll see if we can add a check for unrecognized tags to catch this kind of typos.

Can these tag be nested?

Well, some can, and there is a counter in the logic there to make sure we properly handle that. But I guess it doesn't work perfectly.

Would it be reasonable to add a check in the ci for docs-only changes like this, skip the builds, and only do the static check? Or is it possible that the results of changing the docs can break a build?

Yes, I think that would be reasonable for some of the edits. I believe we discussed this before, but I don't remember if there was a reason not to do this, or if we agreed that it was good but never implemented it. Feel free to bring this on Rocket.Chat, if you want and more importantly know how to do this.
Technically, changes to the XML can break something in the built-in documentation, but I don't think we test editor_help.cpp in any way in CI. So even if that happens, we'd be none the wiser.

I downloaded and signed up to Rocket.Chat, but it's really unusable for me. I can't use dark modes because I get "eyeball burn-in" and headaches. I haven't found a way to change to a light theme.

Unfortunately, I think the theme is enforced by server on Rocket.Chat. If you use it in browser, you may be able to override it with some extensions that can enforce light mode.

I figured why the [/coords] thing wasn't caught. The parser allows any [tag]-like string inside of the code block or inline code tag. It is all parsed as code until the closing tag is found. As a result, here's how it looks in the output:

So technically, it just successfully parses this, as it doesn't see it as a closing tag, but finds one later. Not sure if there is a good way to improve the parser here.

When you enter a [code] tag, could you add a "tag stack" and push when you see [foo], pop when you see [/foo], error if you see [/bar] which doesn't match the top of the stack?
Or does it really need to allow this?:
[code] ... blah blah [/bar] blah blah ... [/code]

I downloaded and signed up to Rocket.Chat, but it's really unusable for me. I can't use dark modes because I get "eyeball burn-in" and headaches. I haven't found a way to change to a light theme.

You can toggle between dark mode and light mode normally. At least on the mobile app on Android it's configurable. Can't check desktop right now but there should be a icon for it (possibly themed like a sun or light bulb).

Thanks @akien-mga - I'm not seeing it anywhere in the downloaded one (or online, which I assume is the same codebase). Nothing in the settings and just have these in the upper-right (which look to be just server-related things):

I'll look around a bit more later, but unfortunately this is a showstopper for me.

The custom CSS is hardcoded, so you can't switch back to the default (light) theme.
I would have preferred to use @media (prefers-color-scheme: dark) to enable the dark theme only when requested, but the Electron app doesn't have a way to toggle this.

Or does it really need to allow this?:
[code] ... blah blah [/bar] blah blah ... [/code]

That's how it's written, but I'm not sure. I'll tally the cases of [something] inside of code blocks tomorrow and try to make the rules stricter to help catch such mistakes. I assume it's most likely needed for array literals, and maybe for some decorator syntax in C#?

Can't you increase the font size or reduce screen brightness?

It's actually not the brightness - it's the white text on black background. I get a "burn-in" effect with it (not sure how else to describe it).
It's fine - I'll skip it for now.

I'll tally the cases of [something] inside of code blocks tomorrow and try to make the rules stricter to help catch such mistakes. I assume it's most likely needed for array literals, and maybe for some decorator syntax in C#?

So there is a good reason to support the syntax, so instead I added a warning, and not an error. I've also refactored the makre_rst.py's whole parser to be more organized, IMO, and fixed extra issues on top of that which I didn't even know about.
https://github.com/godotengine/godot/pull/64230
Since it fixes the [code]foo[/foo] cases, it would conflict with this PR. Depending on what we merge first, the other one would need a rebase. I'll try to review yours tomorrow (and any follow-up that you may make in the meantime).

👍 Great stuff.

Since it fixes the [code]foo[/foo] cases, it would conflict with this PR.

I fixed the two cases of [/coords] and forced-pushed the changes ☝ - would it still conflict?
Either way rebasing is no problem!

would it still conflict?

Yeah, if the other PR is merged first, then you're going to end up with a changeset that changes the same lines. And the same for me, if this one is merged first. It shouldn't be a big deal, I just wanted to warn ahead of time :)

Ah, yeah I see now - I'm looking at your changes.

Thanks!


Support targeting signals more cleanly

Today, signals must be targeted by activity id, which require users to construct the raw activity ID string the same way Flux does it internally. While this is not complicated, it does make it more difficult for Flux to adjust its naming strategy in the future.
Instead, Flux should support accepting three separate fields in the signal input, instead of activityId.
For example, today a DelayRetry signal's content would be this:
{
  "activityId": "EatSandwich_5_grape",
  "delayInSeconds": 543
}

Instead, we could accept this input:
{
  "stepName": "EatSandwich",
  "attemptNumber": 5,
  "partitionId": "grape",
  "delayInSeconds": 543
}

The partitionId field would be ignored for non-partitioned steps.
It might be feasible to drop the attemptNumber input entirely; we could instead determine the applicable attempt number by comparing the event order of the various ActivityTaskFailed and WorkflowExecutionSignaled events.

Also need to update https://github.com/danielgmyers/flux-swf-client/blob/main-2.1.0/SIGNALS.md


Add support for GHC 8.6

Fixes #28.

@Mikolaj can you try out this branch with LambdaHack?

Yes, with pleasure!

Results are here: https://travis-ci.org/github/LambdaHack/LambdaHack
I think it failed due to test stanza in .cabal requiring too new packages.

I think you're right: https://travis-ci.org/github/LambdaHack/LambdaHack/jobs/772529273#L1008
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: witch-<IP_ADDRESS> (user goal)
[__1] rejecting: witch:!test (constraint from config file, command line flag, or user target requires opposite flag selection)
[__1] trying: witch:*test
[__2] trying: hspec-2.8.2 (dependency of witch *test)
[__3] trying: hspec-core-2.8.2 (dependency of hspec)
[__4] trying: setenv-<IP_ADDRESS> (dependency of hspec-core)
[__5] next goal: unix (dependency of setenv)
[__5] rejecting: unix-<IP_ADDRESS>/installed-<IP_ADDRESS> (conflict: witch => time>=1.9.1 && <1.12, unix => time==<IP_ADDRESS>/installed-<IP_ADDRESS>)
[__5] rejecting: unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-<IP_ADDRESS>, unix-2.0 (constraint from project config TODO requires installed instance)
[__5] fail (backjumping, conflict set: setenv, unix, witch)
After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: witch, unix, setenv, hspec, hspec-core, witch:test
Try running with --minimize-conflict-set to improve the error message.

I'm not sure why your CI is trying to build Witch's test suite though. Perhaps because you're using Witch as a Git dependency, so it's picking up tests: True in the cabal.project file?
I could probably remove that, but it might take some fiddling with my CI setup. Since it seems promising that this branch will work, I'll merge it and release a new version for you to test.

Alright, you should be able to try with witch-<IP_ADDRESS>.

Works great now, thank you: https://travis-ci.org/github/LambdaHack/LambdaHack/builds/772595973
If anybody asks, I will recommend your library for catching conversion bugs.

Wonderful! Thanks for the endorsement :)
For posterity, this commit did the switchover: https://github.com/LambdaHack/LambdaHack/commit/21d4fd17ecef18e0cc6552ef0c3a11d56545940b


Add game: Cubzh

Here you can find Cubzh: Cubzh Github
Cubzh is an open-source game engine written in C, C++, Lua that allows anyone to rapidly script games and host them for free on the platform

Thank you for the suggestion. I would like to try out Cubzh and see some games for myself. It might be that Cubzh is a bit outside of the scope of this list which focuses more on single games and less on game engines and even less on whole platforms. I will come back here.


aapt is outdated

It does not work with recent apktool

hi  mittorn ,
I have tried a newly compiled aapt, but it cannot run successfully.
it will fail with illegal instruction. It maybe the same/related issue as issue 58663 or
issue 58449

What instruction is at signal address?
You can run it with gdb and get disassemble about crash point.
Other possible solution is remove '--forced-package-id' from arguments and use old version, it helps.

The ALOG_ASSERT in system/core/libutils/VectorImpl.cpp is causing illegal instruction when running aapt, commenting it off seems to fix the aapt crash issue.
I have checked in a new branch with the binaries and shared libs. build-21
build-21.md has the details.

hopefully, this will be running well, I have not tested it much.

will be awol for ..

so far so good (in Debian jessie).
Given that Debian stretch provides aapt for arm, https://packages.debian.org/stable/aapt
, there will not be any more updates here.


3532 cli enhancements

Resolves #3532
Add --quiet flag to flynn ps
Add --type flag to flynn ps
Let flynn kill receive multiple job IDs

@simon0191 what do you think about using a job predicate. Basically, an inline function that receives a job and says if it should be printed or not. The job predicate can encode all the conditions (only running jobs or all, given type, ...). Thus we could use the simple linear algorithm the code had instead of the jumps between functions and required pre-steps.

@simon0191 also not sure if you need to check both short and long args with go-docopt. I think the longer suffice and the short are not even on the Bool map? worth the investigation.

 and "...we could use the simple linear algorithm the code had instead of the jumps between functions..." here's the version with everything in one function and below my thoughts:

func runPs(args *docopt.Args, client controller.Client) error {
	jobs, err := client.JobList(mustApp())
	if err != nil {
		return err
	}
	sort.Sort(sortJobs(jobs))
	w := tabWriter()
	defer w.Flush()
	headers := []interface{}{"ID", "TYPE", "STATE", "CREATED", "RELEASE"}
	if args.Bool["--command"] {
		headers = append(headers, "COMMAND")
	}
	listRec(w, headers...)
	for _, j := range jobs {
		if !args.Bool["--all"] && j.State != ct.JobStateUp && j.State != ct.JobStatePending {
			continue
		}
		if j.Type == "" {
			j.Type = "run"
		}
		if args.String["<type>"] != "" && j.Type != args.String["<type>"] {
			continue
		}
		id := j.ID
		if id == "" {
			id = j.UUID
		}
		if args.Bool["--quiet"] {
			fmt.Println(id)
			continue
		}
		var created string
		if j.CreatedAt != nil {
			created = units.HumanDuration(time.Now().UTC().Sub(*j.CreatedAt)) + " ago"
		}
		fields := []interface{}{j.ID, j.Type, j.State, created, j.ReleaseID}
		if args.Bool["--command"] {
			fields = append(fields, strings.Join(j.Args, " "))
		}
		listRec(w, fields...)
	}
	return nil
}

With the "just one function" implementation filtering logic, printing logic and job preparation logic (fixing type and ID) is mixed up.
With the "just one function" implementation we are doing 3 things that are not needed if the --all flag is on:

	w := tabWriter()
	defer w.Flush()
	headers := []interface{}{"ID", "TYPE", "STATE", "CREATED", "RELEASE"}

With the current implementation, prepareAndFilterJobs function will decrease jobs slice size
and sort and further functions will process less jobs.
With the current implementation it's easier to read the code and to make modifications
because the logic is splited in functions with different responsibilities.

So, What do you think?
I have the "just one function" commit ready to be pushed in case you still want that implementation.

@simon0191 lets go with having all the filtering in the existing loop.

@lmars, Done

@lmars Some tests failed but I think that they don't have to do with the changes I did:
15:22:43.418 FAIL: test_release.go:106: ReleaseSuite.TestReleaseImages
15:36:33.397 FAIL: test_scheduler.go:638: SchedulerSuite.TestDeployController

Thanks!


File type detection does not recognize JSON in certain cases

Describe the bug
Creating a project by fetching JSON from certain URLs does not pick the JSON importer by default.

To Reproduce
Steps to reproduce the behavior:

Go to "Create project"
"Web addresses"
Use "https://query.wikidata.org/sparql?query=SELECT %3Fitem %3Furl WHERE {
  %3Fitem p%3AP6269 [ps%3AP6269 %3Furl %3B
        pq%3AP2700 wd%3AQ458022].
} LIMIT 100&format=json"

Current Results
The default importer is "line-based text files"
Expected behavior
The JSON importer should be proposed by default.
Desktop:

OS: Windows, Linux

OpenRefine :

Version 3.3, still present in master

Additional context
Encountered in this video: https://www.twitch.tv/videos/659297903

Note that the importer being selected is "Line based text files" as opposed to "text files". This is the default fallback when OpenRefine is unable to guess anything else. This distinction is important because JSON is a text file and it is possible (likely IMO) the importer is never hitting the TextFormatGuesser

Thanks, I corrected the issue.

The server is sending content-type: application/sparql-results+json;charset=utf-8. This is one of the cases that would potentially be helped by my suggestion that we handle mime type suffixes (e.g. +json).
Having said that, it seems like the character frequency analysis in TextFormatGuesser should still spot this as JSON, so perhaps that could be made smarter.

Perhaps the recently added wilcards for mime types could also be used (#2598)? We could add application/*+json as a mapping? But #2612's implementation would not support that, I think.

@tfmorris I would like to see the TextFormatGuesser made smarter.  Because I have seen on occasion where even using the clipboard (and not URL downloading) was not guessing JSON correctly.  I'll see if I can dig up one of the messy JSON's where I saw that happen...

I think it is worth doing both, to cover a large range of scenarios.

Perhaps the recently added wilcards for mime types could also be used (#2598)? We could add application/*+json as a mapping? But #2612's implementation would not support that, I think.

I think that's the wrong way to do this. I've promoted my suggestion to an issue so that we can reference it (and I've lost the original context). I think we should implement #2805 instead. It should be part of the framework and not require anything from the importers themselves.

I would like to see the TextFormatGuesser made smarter. Because I have seen on occasion where even using the clipboard (and not URL downloading) was not guessing JSON correctly. I'll see if I can dig up one of the messy JSON's where I saw that happen...

The TextFormatGuesser never gets invoked here, so that wouldn't help. Besides, the server told us explicitly that it's JSON, so there's no guessing needed.
Having said that, please do open issues for any cases where you think the guesser(s) could do a better job. If you do it when you first run into the problem, you won't have to worry about tracking down the files later.

It should be part of the framework and not require anything from the importers themselves.

I think there is a misunderstanding - I don't think I suggested that this should be handled by importers, rather by the ImportingManager, which handles the logic of mapping MIME types to formats. So there is no disagreement here!

The TextFormatGuesser never gets invoked here, so that wouldn't help.

This is another unnecessarily deep hole that I noticed imports can fall into. Our default fallback is text/line-based but the LineBasedFormatGuesser will only attempt TSV, CSV, and Fixed formats and will never invoke the TextFormatGuesser where the character frequency analysis is done. I've changed the default to text instead of text/line-based which should make this less of a trap, hopefully.


Update cds and ads prompt

Related to #499
This PR:

Fixed issue when setting up cds source credentials via the prompt did not work.
Fixed issue when setting up ads source credentials via the prompt did not work.
Increased cdsapi dependency to version 0.7.2 to be compatible with the new CDS/ADS services.

Planned to be released as 0.10.9.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Please upload report for BASE (main@6730370). Learn more about missing BASE report.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #504   +/-   ##
=======================================
  Coverage        ?   90.60%
=======================================
  Files           ?      123
  Lines           ?     8344
  Branches        ?      361
=======================================
  Hits            ?     7560
  Misses          ?      653
  Partials        ?      131

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


⚠ Bofrost.be has degraded performance

In 11e0523, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 2312 ms

Resolved: Bofrost.be performance has improved in 6301815.


Silent refresh without iFrame

Hello @brockallen,
I was wondering if there is a way to silently refresh a token for a user without the use of an iFrame.
I noticed the library attempts to inject an iFrame into my application, however the framework I am working with (aurelia, together with SystemJS to load libraries) seems to keep getting rid of this iFrame because it replaces the entire DOM structure and keeps only the application and libraries loaded with SystemJS.
Now, I managed to load the library through SystemJS, however using an iFrame does not seem to be an option.
Would there be any workaround or a way to use ajax calls for this?
Thanks a lot in advance!

I was wondering if there is a way to silently refresh a token for a user without the use of an iFrame.

You need some way to access the authorization endpoint under the user's current login session (meaning cookie). So you can redirect the entire window, use a popup, or use an iframe. That's how it works from a JS based app.
The OIDC/Auth2 specs don't allow using refresh_tokens directly from JS, but you might be able to use hybrid flow and do the code/refresh token exchange on your server (and it's more complex to manage this). I don't have any samples for this, unfortunately.

All set on this issue?

Due to a lack of time at the moment this has not been resolved yet.
We are working on trying this approach and will check back in once it's done.
Thanks!

Ok, when you get back to it then feel free to reopen if it's still an issue.

Hi @Creative-Punch did you make any progress using the hybrid flow? I'm interest in the solution how to handle this issue.


Adapt to 18.x time api changes

This does the right thin on 18.x, but I don't know how to silence the compiler warning, and I'm not sure why it's reported at all, since bootstrap is not supposed to be compiled before execution.

This does the right thing on 18.x, but I don't know how to silence the compiler warning, and I'm not sure why it's reported at all, since bootstrap is not supposed to be compiled before execution.

There's actually a compatibility module that the OTP team published that might be interesting to adopt, although it does rely on try...catch to work and would be subject to similar warnings.
Otherwise we might have to go the macro way like for typespecs.

There's actually a compatibility module that the OTP team published that might be interesting to adopt, although it does rely on try...catch to work

I prefer this style, because it's self-documenting, whereas a try-catch may not be as obvious, but what are the details of that module?

and would be subject to similar warnings.

Is it a header where you could define a macro to silence the warning?
In any case, I don't know why escript complains here, given we didn't tell it to compile bootstrap. We should figure that out, and maybe it's a bug.

Otherwise we might have to go the macro way like for typespecs.

Are you suggesting to introduce an indirection to execute the bootstrap escript?

Added -compile({nowarn_deprecated_function, [{erlang, now, 0}]}), but that shouldn't be necessary, since we don't have -mode(compile).


Pickle error when using deep learning based models with SUOD

Environment: WSL2 with Conda (Python 3.8.10)
Error:
joblib.externals.loky.process_executor._RemoteTraceback:
"""
Traceback (most recent call last):
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/site-packages/joblib/externals/loky/process_executor.py", line 356, in _sendback_result
    result_queue.put(_ResultItem(work_id, result=result,
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/site-packages/joblib/externals/loky/backend/queues.py", line 241, in put
    obj = dumps(obj, reducers=self._reducers)
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/site-packages/joblib/externals/loky/backend/reduction.py", line 271, in dumps
    dump(obj, buf, reducers=reducers, protocol=protocol)
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/site-packages/joblib/externals/loky/backend/reduction.py", line 264, in dump
    _LokyPickler(file, reducers=reducers, protocol=protocol).dump(obj)
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/site-packages/joblib/externals/cloudpickle/cloudpickle_fast.py", line 563, in dump
    return Pickler.dump(self, obj)
TypeError: cannot pickle '_thread.RLock' object
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "suod_test.py", line 51, in <module>
    clf.fit(X_train)
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/site-packages/pyod/models/suod.py", line 210, in fit
    self.model_.fit(X)
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/site-packages/suod/models/base.py", line 290, in fit
    all_results = Parallel(n_jobs=n_jobs, max_nbytes=None, verbose=True)(
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/site-packages/joblib/parallel.py", line 1054, in __call__
    self.retrieve()
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/site-packages/joblib/parallel.py", line 933, in retrieve
    self._output.extend(job.get(timeout=self.timeout))
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/site-packages/joblib/_parallel_backends.py", line 542, in wrap_future_result
    return future.result(timeout=timeout)
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/concurrent/futures/_base.py", line 444, in result
    return self.__get_result()
  File "/home/pbosch/miniconda3/envs/data_science/lib/python3.8/concurrent/futures/_base.py", line 389, in __get_result
    raise self._exception
TypeError: cannot pickle '_thread.RLock' object

How to reproduce: Add AutoEncoder or DeepSVDD to list of detectors in base SUOD example (DeepSVDD(hidden_neurons=[2, 1])).
Just for completeness sake, using AutoEncoder or DeepSVDD alone works perfectly fine.

Thanks for the note. I forget to mention in the documentation that the deep learning model will not benefit from SUOD acceleration...
The bottleneck of deep learning training is mainly the accessibility to GPUs...Sorry for the confusion.

In that case, what is the best approach to benefit from the acceleration for non deep learning models but being able to combine them with deep learning models? SUOD has that mechanism build in, which is handy. It would also be possible to train each model separately and then use combination. But is there a way to have both?

This is a great point! I think the combination comes from two perspectives. First, you may consider using deep learning models as feature extractors, and then apply the classifical OD models on the extracted latent representations.
Second, you could construct a matrix to hold the outlier scores for combination, and then use the https://github.com/yzhao062/pyod/blob/master/examples/comb_example.py for combination.
Actually, I created another package called combo a few years ago for model combination: https://github.com/yzhao062/combo/blob/master/examples/detector_comb_example.py although I am not sure whether deep learning models are compatible there.

Sorry for the late answer, I didn't get any notification for some reason.
The second option you outlined is what I had in mind. But I think the first option might work better for my current problem. The data is fairly noisy and the prediction probabilities are all over the place.
Considering, for example, an AutoEncoder, what would be the easiest way to extract the latent representations? Would I need to go through the Keras object or is there another way?


update intercompatible scripts and add a demo notebook

This PR updates the data producing intertidal modules and makes them intercompatible, working from a single master ds variable throughout the workflow. Suitable arrays have been converted as integer outputs. A notebook that runs the whole workflow is added - note that some modules are dependent on others being run first. The optimal ordering of modules is recommended in the demo notebook.

Hey @robbibt, thanks for reviewing this PR. I agree with all your comments and the changes have considerably improved the work. Would you mind having a look through the revised workflow please and add any comments? Thank-you :)


feat: always keep stable and nightly

In particular I had a problem that lake didn't work anymore because this tool removed my default stable toolchain. I think stable is always the default in a fresh install, isn't it? (Added nightly for good measures)

I also don't quite know what the difference between these two toolchains are:
erasing leanprover/lean4:stable
erasing stable

Thank you! Sorry for the slow response; I had forgotten about this PR.