Create Jellyfish-Audit module

Need to audit every action.  Then do one of three things with it:

Save to local table in JF Database
Save to local machine syslog
Post JSON payload to a URL

Old Dup ticket: https://github.com/projectjellyfish/api/issues/103

From https://github.com/projectjellyfish/api/issues/103:
Extracting useful bits from:
http://rubyjunky.com/cleaning-up-rails-4-production-logging.html
Note: BufferedLogger used in the above example is depreciated in Rails 4, attempting [workaround](http://railsware.com/blog/2014/08/07/rails-logging-into-several-backends/)

Creating this gem as a mountable engine because we may want to keep namespaces isolated to resource name conflicts between parent app and engine.
See this reference.

Actionable Items:

[ ] Create jellyfish-audit repo
[ ] Save to local table in JF Database
[ ] Save to local machine syslog
[ ] Post JSON payload to a URL

Questions Answered:

production logging 101 - rubyjunky

getting started with engines - rubyonrails

engine test setup - viget

engine with rspec & factorygirl - andrewhavens

to mount or unmount? - stackoverflow

using dev gems locally - stackoverflow

engines and migrations - pivotallabs

recent discussion about engines and migrations - taskrabbit

testing mountable engines rspec - stackoverflow

start your engines - reinteractive

jellyfish-ldapauth - github

jellyfish_fog_aws - github

Jellyfish Module Setup (Sample Documentation)
This guide explains how to create a module that can be used with Project Jellyfish.
Step 1: Create Empty Module
Modules in Jellyfish are implemented with gemified Rails engines.
To create a new module named jellyfish_logger run:
$ rails plugin new jellyfish_logger --dummy-path=spec/dummy --skip-test-unit --mountable

Jellyfish uses rspec, so exclude test-unit. See here for a good discussion on mountable engines.
Step 2: Update Gemspec and Gemfile
Populate gemspec
Start by specifying a homepage, summary and description in Gemspec:
s.homepage    = "www.projectjellyfish.org"
s.summary     = "Jellyfish Logger Module "
s.description = "A module that adds log support to Jellyfish API"

Then replace MIT-LICENSE with APACHE LICENSE and switch README to .md:
s.license     = "APACHE"
s.files = Dir["{app,config,db,lib}/**/*", "LICENSE", "Rakefile", "README.md"]

Add dependencies
Specify un-versioned rails and dotenv dependencies and remove sqlite3 from Gemspec:
s.add_dependency "rails"
s.add_dependency "dotenv-rails" # to use env vars from jellyfish api
s.add_dependency 'pg' # to use jellyfish db

And add these dev and test dependencies to your Gemfile.
  # DEV + TEST
  group :development, :test do
    gem 'factory_girl_rails'
    gem 'rspec-rails'
    gem 'capybara'
    gem 'rubocop'
  end

Step 3: Setup RSpec
Run rails generate rspec:install to add the following skeleton files:

.rspec
spec/spec_helper.rb
spec/rails_helper.rb

Delete spec/rails_helper.rb and modify .rspec like below to run spec/spec_helper.rb before specs and make output pretty:
--color
--format documentation
--require spec_helper

Then add these lines to spec/spec_helper.rb:
ENV['RAILS_ENV'] = 'test'
require 'dummy/config/environment'
require 'jellyfish_logger'

which mounts this module using the dummy application for specs.
And update spec/dummy/config/database.yml to use Postgresql:
development: &default
  adapter: postgresql
  database: jellyfish_development
  encoding: utf8
  host: localhost
  min_messages: warning
  pool: 2
  timeout: 5000

development:
  <<: *default
  adapter:  postgresql
  database: jellyfish_development

test:
  <<: *default
  database: jellyfish_test

production:
  <<: *default
  database: jellyfish_production

This file should mirror the Jellyfish API database.yml.
Step 4: Setup Rakfile
Modify Rakefile to look like this:
begin
  require 'bundler/setup'
rescue LoadError
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
end

APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
load 'rails/tasks/engine.rake'

Bundler::GemHelper.install_tasks

Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each {|f| load f }

require 'rspec/core'
require 'rspec/core/rake_task'
desc 'Run all specs in spec directory'
RSpec::Core::RakeTask.new(:spec)
task :default => :spec

Notes:

removed rake statistics reference
removed app:db:test:prepare

This project uses APACHE LICENSE.

Not sure where to plug this piece in...for some reason, specs don't load ActionController and its LogSubscriber by default (even though we're grabbing rspec-rails and rails)
In order to use a file that extends the ActionController:LogSubscriber (say an audit client), we need to explicitly require that dependency in the client file like so:
require 'action_controller/log_subscriber'

module JellyfishAudit
  class AuditClient < ActionController::LogSubscriber
    def foo
      []
    end
  end
end

Regarding this section:
Step 3: Setup Rakfile
Modify Rakefile to look like this:
begin
  require 'bundler/setup'
rescue LoadError
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
end

APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
load 'rails/tasks/engine.rake'

Bundler::GemHelper.install_tasks

Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each {|f| load f }

require 'rspec/core'
require 'rspec/core/rake_task'
desc 'Run all specs in spec directory'
RSpec::Core::RakeTask.new(:spec)
task :default => :spec

Maybe we could move
require 'rspec/core'
require 'rspec/core/rake_task'
desc 'Run all specs in spec directory'
RSpec::Core::RakeTask.new(:spec)
task :default => :spec

to the section on RSpec?

Follow-up: It seems that we can add require 'action_controller/log_subscriber' to our spec helper instead
ENV['RAILS_ENV'] = 'test'
require 'dummy/config/environment'
require 'jellyfish_audit'
require 'action_controller/log_subscriber'
so maybe we should move this here vs to keeping it in the client file?

Since Rails isn't requiring it by default, which we know since we load a Rails app, you'll have the same issue here as you originally did. That should be moved back to the file it's being used in.

I dislike how finicky RSpec can be inside of a module. :(
I moved require 'action_controller/log_subscriber' to my spec_helper and removed it from lib/jellyfish_audit.rb and I'm running rake now without issue.
Also, I added config.autoload_paths += %W(#{config.root}/lib) to my engine so it autoloads all the lib files without requiring me to explicitly include them.

I moved require 'action_controller/log_subscriber' to my spec_helper and removed it from lib/jellyfish_audit.rb and I'm running rake now without issue.

Right, and that works because now in your spec_helper, which is required only when running specs, you're loading the file you need, namely action_controller/log_subscriber. Outside of your specs, however, this file won't be loaded because for whatever reason it's not included in the standard rails require.
For this to work outside of specs, the require line needs to be back in some file required when running require 'jellyfish_logger'. The most obvious spot for it to be is in the file where you reference it.

You are correct sir, after playing around with this I did observe that to be the case.
I did find that adding require 'action_controller/log_subscriber' to spec/dummy/config/application.rb seemed to work though.

Documentation is now on the wiki:

module setup
add module functionality

The jellyfish-audit repo should now have a working module which can be included in Jellyfish API.
The section on adding REST call functionality via module is forthcoming.

Can you please make a ticket for that under that repo?

Done, see this issue.

@mafernando is this ticket "done"?

@chriskacerguis - here are open items that are being tracked as issues in the repo. If that's good with you, then I'm ok with calling this "done".
Actionable Items:

[ ] Add IP Address to entries - see this issue
[ ] Add Staff to entries - see this issue
[ ] Post JSON payload to a URL

Going to close out this issue, since the enhancements are in new tickets in the correct repo.


docs: Clarify Complete Example and Inputs

Description
No code changes, only update docs and complete examples.

Motivation and Context

Clarify complete example
Update engine_version and off_peak_window_options input in docs

Breaking Changes

How Has This Been Tested?

[x] I have updated at least one of the examples/* to demonstrate and validate my change(s)
[x] I have tested and validated these changes using one or more of the provided examples/* projects

[x] I have executed pre-commit run -a on my pull request

$ pre-commit run -a
Terraform validate.......................................................Passed
check for merge conflicts................................................Passed
fix end of files.........................................................Passed
trim trailing whitespace.................................................Passed

why?

@bryantbiggs To make it easier for Terraform users to work with the module.

How so?

How so?

Added example values to the complete example and provided additional context in the input documentation to enhance user understanding.

Based on my user experience (using this module v1.4.0), the input descriptions were relatively lacking compared to the OpenSearch Terraform module maintained by CloudPosse, and the absence of many example values made it inconvenient.
Additionally, the fact that snapshot_options is not supported by this module v1.4.0 falls under a similar context.

thank you but unfortunately, this is what the documented variables are for. examples just demonstrate various configurations but they are not exhaustive. The documented inputs are there to show users what values the module accepts as inputs, not the examples https://github.com/terraform-aws-modules/terraform-aws-opensearch/blob/master/README.md#inputs


Instagram share option is not included

Hi Guys,
When i do "npm install react-native-share --save" and "react-native link", recent check-in which has been done to include instagram share code is not included as the par to "react-native-share" project under  node module.
Could someone please suggest on how to make sure even those changes has been inculded when i do
"npm install react-native-share --save" and "react-native link".
Regards,
Sharath

We need a release.
To work without a release, you can use master branch.


v0.8.0 KeyError: 'builder_config'  when benchmarking  with new versions config.json

System Info

CPU：4090 * 4
TensorRT-LLm : v0.8.0
CUDA Version: 12.3
NVIDIA-SMI 545.29.06

Who can help?
No response
Information

[X] The official example scripts
[ ] My own modified scripts

Tasks

[X] An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
[ ] My own task or dataset (give details below)

Reproduction
I quantize and build my engine follow the steps in  v0.8.0 Mixtral 'Readme. md' :
python3 ../llama/convert_checkpoint.py --model_dir ./Nous-Hermes-2-Mixtral-8x7B-DPO/  --output_dir ./tllm_checkpoint_mixtral_pp2 --dtype float16  --pp_size 2  --use_weight_only --weight_only_precision int4

trtllm-build --checkpoint_dir ./tllm_checkpoint_mixtral_pp2/ --output_dir ./trt_engines/mixtral/pp2  --gemm_plugin float16 --max_batch_size 32

Build successfully and  run.py script is OK:
But when I run the benchmark test with the following command, an exception occurs:
python3 benchmarks/python/benchmark.py  -m mixtral_8x7b --mode plugin   --engine_dir examples/mixtral/trt_engines/mixtral/pp2 --batch_size 1  --input_output_len "512,128"

[TensorRT-LLM] TensorRT-LLM version: 0.8.0Traceback (most recent call last):
  File "/tensorrtllm_backend/tensorrt_llm/benchmarks/python/benchmark.py", line 405, in <module>
    main(args)
  File "/tensorrtllm_backend/tensorrt_llm/benchmarks/python/benchmark.py", line 299, in main
    benchmarker = GPTBenchmark(args, batch_size_options, in_out_len_options,
  File "/tensorrtllm_backend/tensorrt_llm/benchmarks/python/gpt_benchmark.py", line 44, in __init__
    super().__init__(args.engine_dir, args.model, args.dtype, rank,
  File "/tensorrtllm_backend/tensorrt_llm/benchmarks/python/base_benchmark.py", line 83, in __init__
    config_dtype = self.config['builder_config']['precision']
KeyError: 'builder_config'
root@4090-node2:/tensorrtllm_backend/tensorrt_llm#

I checked the engine config file.  There is no builder_config and plugin_config item whitch base_benchmark.py needed.
{
    "version": "0.8.0",
    "pretrained_config": {
        "architecture": "MixtralForCausalLM",
        "dtype": "float16",
        "logits_dtype": "float32",
        "vocab_size": 32002,
        "max_position_embeddings": 32768,
        "hidden_size": 4096,
        "num_hidden_layers": 32,
        "num_attention_heads": 32,
        "num_key_value_heads": 8,
        "head_size": 128,
        "hidden_act": "swiglu",
        "intermediate_size": 14336,
        "norm_epsilon": 1e-05,
        "position_embedding_type": "rope_gpt_neox",
        "use_prompt_tuning": false,
        "use_parallel_embedding": false,
        "embedding_sharding_dim": 0,
        "share_embedding_table": false,
        "mapping": {
            "world_size": 2,
            "tp_size": 1,
            "pp_size": 2
        },
        "kv_dtype": "float16",
        "max_lora_rank": 64,
        "rotary_base": 1000000.0,
        "rotary_scaling": null,
        "moe_num_experts": 8,
        "moe_top_k": 2,
        "moe_tp_mode": 2,
        "moe_normalization_mode": 1,
        "enable_pos_shift": false,
        "dense_context_fmha": false,
        "lora_target_modules": null,
        "hf_modules_to_trtllm_modules": {
            "q_proj": "attn_q",
            "k_proj": "attn_k",
            "v_proj": "attn_v",
            "o_proj": "attn_dense",
            "gate_proj": "mlp_h_to_4h",
            "down_proj": "mlp_4h_to_h",
            "up_proj": "mlp_gate"
        },
        "trtllm_modules_to_hf_modules": {
            "attn_q": "q_proj",
            "attn_k": "k_proj",
            "attn_v": "v_proj",
            "attn_dense": "o_proj",
            "mlp_h_to_4h": "gate_proj",
            "mlp_4h_to_h": "down_proj",
            "mlp_gate": "up_proj"
        },
        "disable_weight_only_quant_plugin": false,
        "mlp_bias": false,
        "attn_bias": false,
        "quantization": {
            "quant_algo": "W4A16",
            "kv_cache_quant_algo": null,
            "group_size": 128,
            "has_zero_point": false,
            "pre_quant_scale": false,
            "exclude_modules": [
                "lm_head",
                "router"
            ],
            "sq_use_plugin": false
        }
    },
    "build_config": {
        "max_input_len": 1024,
        "max_output_len": 1024,
        "max_batch_size": 32,
        "max_beam_width": 1,
        "max_num_tokens": 32768,
        "max_prompt_embedding_table_size": 0,
        "gather_context_logits": false,
        "gather_generation_logits": false,
        "strongly_typed": false,
        "builder_opt": null,
        "profiling_verbosity": "layer_names_only",
        "enable_debug_output": false,
        "plugin_config": {
            "bert_attention_plugin": "float16",
            "gpt_attention_plugin": "float16",
            "gemm_plugin": "float16",
            "smooth_quant_gemm_plugin": null,
            "identity_plugin": null,
            "layernorm_quantization_plugin": null,
            "rmsnorm_quantization_plugin": null,
            "nccl_plugin": "float16",
            "lookup_plugin": null,
            "lora_plugin": null,
            "weight_only_groupwise_quant_matmul_plugin": null,
            "weight_only_quant_matmul_plugin": "float16",
            "quantize_per_token_plugin": false,
            "quantize_tensor_plugin": false,
            "context_fmha": true,
            "context_fmha_fp32_acc": false,
            "paged_kv_cache": true,
            "remove_input_padding": true,
            "use_custom_all_reduce": true,
            "multi_block_mode": false,
            "enable_xqa": true,
            "attention_qk_half_accumulation": false,
            "tokens_per_block": 128,
            "use_paged_context_fmha": false,
            "use_context_fmha_for_generation": false
        }
    }
}

Expected behavior
Benchmark should not error
actual behavior
[TensorRT-LLM] TensorRT-LLM version: 0.8.0Traceback (most recent call last):
  File "/tensorrtllm_backend/tensorrt_llm/benchmarks/python/benchmark.py", line 405, in <module>
    main(args)
  File "/tensorrtllm_backend/tensorrt_llm/benchmarks/python/benchmark.py", line 299, in main
    benchmarker = GPTBenchmark(args, batch_size_options, in_out_len_options,
  File "/tensorrtllm_backend/tensorrt_llm/benchmarks/python/gpt_benchmark.py", line 44, in __init__
    super().__init__(args.engine_dir, args.model, args.dtype, rank,
  File "/tensorrtllm_backend/tensorrt_llm/benchmarks/python/base_benchmark.py", line 83, in __init__
    config_dtype = self.config['builder_config']['precision']
KeyError: 'builder_config'

additional notes
v0.7.1 is OK.

I am trying to test the engine file with run.py, getting the same error.

There are two different ways of running models: python and cpp. run.py decides between the two here:
https://github.com/NVIDIA/TensorRT-LLM/blob/728cc0044bb76d1fafbcaa720c403e8de4f81906/examples/run.py#L393 The python way seems to be very out of date. It will throw the builder_config error and I imagine other errors too.
The cpp way works perfectly for me so try to figure out why args.use_py_session is being set to True for you and get it to set to False in order to use the cpp way and work around these errors.

There are two different ways of running models: python and cpp. run.py decides between the two here:
https://github.com/NVIDIA/TensorRT-LLM/blob/728cc0044bb76d1fafbcaa720c403e8de4f81906/examples/run.py#L393
The python way seems to be very out of date. It will throw the builder_config error and I imagine other errors too.
The cpp way works perfectly for me so try to figure out why args.use_py_session is being set to True for you and get it to set to False in order to use the cpp way and work around these errors.

Thanks. cpp version is available.

Thank you for report. cpp runtime is the recommended way. Also, you could also try latest main branch if you stil want to run on python runtime.

Thank you for report. cpp runtime is the recommended way. Also, you could also try latest main branch if you stil want to run on python runtime. In latest main branch, we add a checking
if 'pretrained_config' in self.config:
    ...
else:
    ...
    config_dtype = self.config['builder_config']['precision']

to fix this issue.

did this change in examples/run.py？ I still had this problem when I run ' python3 run.py '

Thank you for report. cpp runtime is the recommended way. Also, you could also try latest main branch if you stil want to run on python runtime. In latest main branch, we add a checking
if 'pretrained_config' in self.config:
    ...
else:
    ...
    config_dtype = self.config['builder_config']['precision']

to fix this issue.

I have the save problem, when I run 'python3 run.py xxx',
the error is :
Traceback (most recent call last):
  File "/root/models/TensorRT-LLM/examples/llama/../run.py", line 564, in <module>
    main(args)
  File "/root/models/TensorRT-LLM/examples/llama/../run.py", line 340, in main
    model_name, model_version = read_model_name(args.engine_dir)
  File "/root/models/TensorRT-LLM/examples/utils.py", line 56, in read_model_name
    return config['builder_config']['name'], None
KeyError: 'builder_config'

how can I run the trt model ?can you help me

@byshiue is the workaround to force the script to run on  cpp runtime ? I just cloned the repo and I still have the same issue with the python runttime

For any issue from other users, please also share your reproduced steps. Otherwise, I am not sure how to reproduce your issue.
run.py shouldn't require this workaround. Please make sure you use the latest ToT TensorRT-LLM to convert checkpoint, building engine and run inference.

This is resolved. Thanks! It seems like using the latest stable version helped

This is resolved. Thanks! It seems like using the latest stable version helped

You mean you used v0.8.0? I tried the latest main (commit 118b3d7) and got the error. I will test the aforementioned release to see if the error persists.

I got the same error with v0.8.0

input

python3 run.py --input_text "who are you" --max_output_len=50 --tokenizer_dir /mnt/baichuan2_7b_base/ --engine_dir=/mnt/baichuan2_7b_trt_engines/fp16/1-gpu/

output

[TensorRT-LLM] TensorRT-LLM version: 0.8.0
Traceback (most recent call last):
File "/opt/tritonserver/TensorRT-LLM/examples/run.py", line 504, in
main(args)
File "/opt/tritonserver/TensorRT-LLM/examples/run.py", line 306, in main
model_name, model_version = read_model_name(args.engine_dir)
File "/opt/tritonserver/TensorRT-LLM/examples/utils.py", line 56, in read_model_name
return config['builder_config']['name'], None
KeyError: 'builder_config

I'm on v0.8.0 and I'm facing the issue too. Is there a fix for this?

With master: 66ef1df492f7bc9c8eeb, Iface same issue as the below:
.....
return config['builder_config']['name'], None
KeyError: 'builder_config'
.....

Could you share your reproduced steps?

hi @plt12138 do u still have further issue or question now? If not, we'll close it soon.


Scripts need to be refactored to not use optparse

There seem to be bugs run on different systems, so these scripts should just be templates. Will do tomorrow.

This is done!


Multi-instance and forgotten task

hello,
i want to create x ScheduledTask with different expression and for the fast task (* * * * *) no problem but for (5 0 * * *) The task is not always executed i don't have any error juste no run :(
(it's not always the case)
it's maybe a gb problem ?

https://github.com/merencia/node-cron/issues/38


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-target_405b3ca3-6689-4e7c-86b2-cff7b383a049/pull/1 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-archive-test-target_405b3ca3-6689-4e7c-86b2-cff7b383a049.git

Docs Build status updates of commit b7d422e:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error: RepositoryUnauthorizedWithSourceCommit] Git data access to 'https://github.com/opstest2/docs-archive-test-source' (branch: Release_Archive_main_2022-01-25-02-52-59) is not authorized.. It looks like this might be the first time user: v-alji submitted a pull request to this repo. Before user can run builds in a pull request, he/she can enable 'v-alji' GitHub account in Docs by visiting Docs Portal (https://ops.microsoft.com). After enabling his/her account (v-alji), close and then reopen this pull request to start another build.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


[OPEN DISCUSSION] Documentation Revamp

This pull request will be merged with #62
It mainly serves as a commenting ground. To easier see the changes, checkout this branch and cd into /docs within docs run make install and than make run to checkout the documentation.
Deadline: 15th of April 2015

Amazing :+1:


Should not preference longer captures

Right now I have code that always gives preference to longer captures:
https://github.com/iter-tools/regex/blob/ccaaff4a96992749cc4a7e0bef0852c03b88f099/lib/regex.js#L392
This is incorrect. I did it because my .* implementation is not greedy, and that hack makes it act more greedy. It isn't correct though. So I need to figure out how to implement a real greedy .*, then remove that line and complete my match as soon as the pattern terminates.

In essence I think the only way to have a greedy .* is a version of the hack I already have, it just needs to be localized to the .* expression. And of course it shouldn't run on a non-greedy .*?.

The mechanism won't be completely localized to the star operator though. It will need to be part of state so that the pattern can hold off on termination while a greedy .* is growing.

I guess the bulk of the implementation has to be at the engine level. The implementation of the * operator is correct. It just keeps forking off states with one more repetition matching. This is the only way to implement *. The star operator can't itself be responsible for greediness because each fork must run though to pattern termination (or match failure) to understand whether it is possible. I guess in that way I think my current code is quite close to being correct, it just needs to be able to group the terminal states it is holding on to by the greedy * expression that produced them. And instead of keeping them all and comparing length, it will be safe to just replace the last terminal output of the greedy * with the next one that terminated successfully. I'm going to have to think real hard about what this means when there are two (or more) greedy *s in a pattern. Certainly memory usage could blow up -- this algorithm scales in memory cost not time cost as a backtracking implementation would.

Also i think we want a way to terminate certain matches. One of my though experiment patterns is: /f|.*/.exec('foo'). In a correct implementation this returns f, so unlike a greedy star, a group should cease evaluating its various forks when the first sequence in the group leads to a successful match. Since this engine works with iterables, you could imagine that someone passes us an iterable with an infinite number of os, at which point we'd enter an infinite loop while we should have terminated already, meaning this is more of a correctness issue than just an optimization thing.

Seems like it may be wise to build group termination rules first. They'll be similar to what's needed for * termination, but probably simpler.

I've been driving into the night so I am not sure if I'm my thought processes fueled by coffee are sound, but I think what I need are zombie matchers of some sort. A zombie matcher would be a width one matcher that ignores the given character and returns the previous state. This strategy would allow me to prevent pattern termination from occurring before I'm ready to make decisions about which alternate sequence in a group to accept, or about how many characters star should match. The possibility that star will create a lot of zombies burning CPU time on every iteration does worry me, but the separate optimization for pruning dead branches of execution would probably help a lot with that.

OK, I think first I have to acknowledge something silly I did in my first attempt to solve this problem: I moved binding of next arguments from pattern compilation into the matching phase (so I could capture an array of terminal states). This is just wrong as it means the pattern isn't really compiled until matching begins, something which has perf implications as well as muddying the waters as to where it is correct to implement certain features.

I still like the zombie idea, but there's something complex going on. There's always two kinds of termination: pattern termination and match termination. Take the expression /a|/. It will always match, the only question is whether it captures 'a'. We expect two pattern terminations. There will be one for each sequence in the group, and one termination will occur immediately. We want a single expression termination, which can only occur once the first alternate sequence has reached pattern termination (and on to the second if the first failed, etc). But: we can never simply stop further evaluation while we wait and see what the result of an expression is. Imagine the slightly more complex /(a|)./. Since this can match 'b', we must (and do) allow the pattern to advance out of the group expression before we know what that expression matches.
So essentially what we're doing is deferring a decision. To do that we need two things: the states needed to make the decision need to be available to be available at the time the decision is ready to be made, and there needs to be a way to take action on the decision.
Zombies can help us keep the state around until expression termination, but they need to be inserted in addition to states that continue matching on the input, not instead of them.
Since evaluation has been continuing, taking action will mean pruning branches of execution that grew from the rejected alternate sequence. In the example above when matching 'a' the branch created from the empty alternate is rejected, even though it was otherwise successful. The necessity of this pruning operation means that our ongoing execution work must be stored in some kind of nested structure which is traversed for each character. Some mutability is also implied, as changing of a structure created by a past step must have an impact in the future.

The kinds of termination are still spinning my head a little. An alternate sequence must reach pattern termination before it can be accepted or rejected. So pattern termination is the starting point for any code I write. I'll have a single terminal state as input, and I'll have to decide if the success of that state invalidates other live branches, or perhaps other terminal states.

The goal is to a) know when it is safe to terminate the pattern and b) have 0 or 1 successful terminal states remaining.

I'm thinking it might make sense to make a path structure a little like babel's. That way I can write something like branch.terminate() and know that considerations like removing the child from its parent (and removing parents that have become empty) are handled for me.

Note: since the basic evaluation algorithm is going to be pushed further into the tree, so too will application of 0w matches.


Implement keyboard shortcut for 'commit' and 'abort' actions

Currently, a keyboard shortcut does not exist for the 'commit' and 'abort' actions. These actions require use of the mouse to select the toolbar button or the menu item in the 'Jadeite' menu.
I'd suggest the follow keyboard shortcuts are introduced to allow 'commit' and 'abort' without the use of a mouse.
commit: ctrl + shift + c
abort: ctrl + shift + a

Should have a fix in 3.1.0.
Used Ctrl-Alt-C / A because Ctrl-Shift-A was already taken by SUnit.

I don't think I can test this to where I would feel like I trusted it... there's no feedback and no way to know if you really committed or not (other than to have made a visible change and abort afterwards)... which makes it problematic to blanket test the many panes in various different browsers to be sure all of them correctly understand that shortcut.  E.g. what happens in the Sunit browser... no jadeite menu, but there are abort/commit icons... what about the debugger?  Is it universally available or only in certain places... you just don't know.
I can say that the shortcut is missing at least from the Console, PB, and MB Jadeite menus.
Reopening since I think some way to double check on commit is needed before we can call this a completed feature (although people that don't feel strongly about commit certainly could still use the shortcuts and hope for the best).

I'm also thinking that I'm not too sure I like like having control-shift-a do an abort at all; I'd prefer to at least be able to disable this feature.  I don't use shortcuts a whole lot, but since there are so many shortcuts infesting my computer, I do sometimes do things I did not intend at all to do, by accidentally using shortcuts I was unaware of.  Having to press both control and alt is better than just a control or shift, but I still feel uncomfortable with this risk.
It will push me to use autocommit more, at least...

Maybe @kurtkilpela would like to get the latest pre-release and see if it's to his satisfaction?

The request is based upon the desire to be able to easily commit from the keyboard. Pressing ctrl + alt + c/a makes this harder as it still requires two hands. Technically, I can do it from one hand but it is very awkward. shift + alt +c/a does not work either. Windows binds shift + alt to changing the language. How often does Jadeite 'AutoCommit' if active?

If a commit happens after every change to the model, my case would be satisfied.

Regardless, I downloaded 3.1.0 pre-release 6 and I don't see the shortcut associated with any of the menu options in any of the Jadeite windows I use. (Console, Projects Browser, SUnit). Do I need to use some branch instead of the published pre-release?

@kurtkilpela It's not a menu option yet but it's bound to every window. With luck, you can press ctrl-alt-a/c from anywhere and commit or abort.
AutoCommit commits on every trip to the server. Pretty much every time the user clicks on something (but not typing in a method).

@kurtkilpela, technically I think that autocommit may commit too often, however in practical terms, commits with no dirty objects are pretty cheap (in a single user stone), I've been using autocommit since it was implemented and I don't have any complaints ...

@LisaAlmarode  @kurtkilpela Can you coordinate on what is needed? I can revert the feature. As far as the command-key combination, I don't find ctrl-alt-c/a that much different than ctrl-shift-c/a.   Regardless, I'd like to fix this and cut a pre-release 7 soon.

@LisaAlmarode I'm happy to just use AutoCommit and have this change reverted. Assuming you are fine with this.

I suggest revert until we have time to figure it out...

I'm closing this since the requestor didn't feel strongly.  Can reopen or create a new bug if it's actually needed.


About Task 2

For the task 2, the task is only to create graphs for the windowing, filtering and padding or something else?

Yes you are right. But we have to plot both the "raw" and "cleaned" spectra in the time domain. That means we have to take inverse transform.


mutter, gnome-shell: 44.0 → 44.1

Description of changes

https://github.com/GNOME/mutter/compare/44.0...44.1
https://github.com/GNOME/gnome-shell/compare/44.0...44.1

Things done

[x] Confirmed the focus issue is not fixed and we still need machine.send_key("esc")
[x] Browsed the issue tracker for mutter, gnome-shell
[x] Browsed the commits made after release for mutter, gnome-shell
Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

@ofborg test gnome gnome-xorg

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/applying-a-patch-to-gnome-mutter-via-a-nixos-option/28499/1


NullReferenceException on FormsControls.Droid.Main.Init (this);

Hi,
This component used to work without problems and now I have an exception at startup on the line that is in the title.
What can the problem be?
Thanks

Im seeing the same problem, this needs to be fixed

The Xamarin Forms should be the latest stable and NOT the PRE! Also all the support libraries must be the ones compatible with the stable Forms release, this means 23.3.0.

@Greg767 @LeoJHarris  True, lib works only with stable Xamarin.Forms version. (Latest stable is Xamarin.Forms <IP_ADDRESS>).
Xamarin Changed API for NavigationPage. I will support new API when new version of Xamarin.Forms will be stable.


bookmark changesets for later followup

I'm submitting a feature request
Brief Description
Sometimes reviewing a changset can lead to leaving a comment for the mapper, to give them a chance to correct mistakes themselves.
It would be nice to be able to bookmark changesets so as the reviewer if I don't hear back from them in a few days I'm reminded to make the corrections myself.

@andrewharvey Very interesting suggestion! We will consider it in the future plans.


  Following is from the log for the database -- it appears there is a missing single-quote on the ANY(CAST(...) line:
db_1               | 	FROM deliveryservice_request r
db_1               | 	JOIN tm_user a ON r.author_id = a.id
db_1               | 	LEFT OUTER JOIN tm_user s ON r.assignee_id = s.id
db_1               | 	LEFT OUTER JOIN tm_user e ON r.last_edited_by_id = e.id
db_1               |
db_1               | 	WHERE r.deliveryservice->>'tenantId = ANY(CAST($1 AS bigint[]))
db_1               | 	ORDER BY r.deliveryservice->>'xmlId'
trafficops_1       | ERROR: shared_handlers.go:142: 2018-07-06T14:42:18.4560917Z: Error querying DeliveryServiceRequests: pq: syntax error at or near "xmlId"

@DylanVolz -- please look at this..
after adding the missing quote here: https://github.com/apache/trafficcontrol/blob/master/traffic_ops/traffic_ops_golang/deliveryservice/request/requests.go#L116
I get this error instead:
db_1               | ERROR:  operator does not exist: text = bigint at character 462
db_1               | HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.


W2V2 LayerNorm location

Hi, thanks for the sharing! I have a question about the adapter location in W2V2.
W2V2 transformer encoder applies LN after attention. But after adding adapter, should the adapter computation be conducted after LN layers instead of before it?
https://github.com/wngh1187/IPET/blob/2e4b0e3e23bd3768c963bb092aabeac58bfe7894/VoxCeleb1/W2V2/models/W2V2.py#L547-L557

Hi. First of all, thank you very much for your interest in our research.
We positioned the adapter at the end of the attention block.
So for W2V2, it is specified in the following order: attention - adapter - layer norm - MLP - layer norm.
The figures in the paper are based on AST, which is why there is this difference.
But we haven't tried specifying the adapter after the LN, so we don't know what the result will be.


No rule against publicly sharing zs scripts?

I'm not sure this is the right place to ask this, but I wanted to double check before I do that it's okay for me to post zs files on github in my own public repo, of course with links to crafttweaker.

Uh, I can't control what you do with your scripts.
Just know that normal licensing rules apply, so if you're taking scripts from other people, you need to be wary of that

great, cool, thanks

Think about if this way if you make a Java class it’s your class you can do what you want with it. If it’s your zenscript file there is nothing we can do for you to not post it, I mean why would we stop you


Fetch Failed for db Client

Great work on this team!!
Following the example here gives me "Fetch failed" error when I'm trying to do it in Next.js API routes:
error - Error [TypeError]: fetch failed
    at Object.processResponse (evalmachine.<anonymous>:3033:34)
    at <unknown> (evalmachine.<anonymous>:3366:42)
    at <unknown> (node:internal/process/task_queues:141:7)
    at AsyncResource.runInAsyncScope (node:async_hooks:199:9)
    at AsyncResource.runMicrotask (node:internal/process/task_queues:138:8)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

However when I switched to the example in the blog post with import { connect } from "@planetscale/database"; it worked.

When you print the value of your DATABASE_URL environment variable, does it look like the following format? If the environment variable hasn't been set for the process, it's likely that it's trying to fetch a null URL and failing.
console.log(process.env['DATABASE_URL'])
// => mysql://<user>:<password>@<host>


Problem: subscache and fast render have a known issue

Solution: add a note about a known issue involving subscache and fast render compatibility to prevent others spending hours debugging.

Thanks!


Rule "class_attributes_separation" should allow to specify number of blank lines

For configuration or updating questions please read the README and UPGRADE documentation,
or visit: https://gitter.im/PHP-CS-Fixer
When reporting an issue (bug) please provide the following information:
If applicable, please provide minimum samples of PHP code (as plain text, not screenshots):
The rule should be able to produce the following code (for any number of blank lines)

before running PHP CS Fixer (no changes):

class A {
    public function a () { }
    public function b () { }
}

with the changes you expected instead:

class A {
    public function a () { }

    public function b () { }
}

Hi @apfelbox thanks for the question,
Currently we've this RFC for the fixer https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues/4014 Would this be enough for you?
TBH I think we shouldn't make the number of lines configurable (as a number). The scope of this project is to provide a tool that will fix CS (as good as possible) to widely used standards (either defined by communities, PSR's and such). Allowing the number of lines to be anything would not contribute that.
Please let us know if, for example, using 2 lines is (widely) used somewhere and we can reconsider.

Thanks for getting back to us @apfelbox :+1:
Please know that while the rules we ship are kind of opinionated in favor towards standards like PSR's and bigger communities, but the project is also a generic code fixer as you can write your only custom rules and use those (and share of course :) )


Moving start up scripts to a directory

Address #11

npm start | npm build | npm test commands now point to scripts under ./scripts directory.
npm start | ./scripts/server checks if CouchDB is running

Thanks for the PR @filipesperandio !
I am wondering if we make a small change here and that is to have fail on scripts/server exit with 0 vs 1.  The reason why is that right now when couch isn't running you will see the following NPM error:

Checking CouchDB....CouchDB must be installed and running for the server to start.
Check https://github.com/HospitalRun/hospitalrun-frontend#install
npm ERR! Darwin 14.5.0
npm ERR! argv "node" "/usr/local/bin/npm" "start"
npm ERR! node v0.12.9
npm ERR! npm  v2.14.9
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>start: ./scripts/server
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script './scripts/server'.
npm ERR! This is most likely a problem with the hospitalrun package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     ./scripts/server
npm ERR! You can get their info via:
npm ERR!     npm owner ls hospitalrun
npm ERR! There is likely additional logging output above.

While this message certainly catches your attention, it might make people think there is something wrong with the code vs couchdb not running.  If the script exits with 0, you still will see the message about CouchDB:

Checking CouchDB....CouchDB must be installed and running for the server to start.
Check https://github.com/HospitalRun/hospitalrun-frontend#install

@tangollama @jglovier See above... would love your feedback as to what error message shows when you try to run the app and couchdb isn't running.

If I let it proceed it fails later on anyways:
Error: connect ECONNREFUSED <IP_ADDRESS>:5984
    at Object.exports._errnoException (util.js:849:11)
    at exports._exceptionWithHostPort (util.js:872:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1060:14)

But I can go either way...

@filipesperandio I'm not saying let it proceed, just to exit with a status of 0 instead a status of 1 which causes NPM to display the error message above.

gotcha. pushed.

How about:

Oops! Looks like CouchDB isn't running. CouchDB must be running before you can run HospitalRun
For help or more info see https://github.com/HospitalRun/hospitalrun-frontend#install

@jglovier Sounds good! I am usually too serious on my warn messages! :)

@filipesperandio thanks for making the suggested changes.  I just tested your changes and for some reason npm build doesn't work for me.  I can call ./script/build and that runs but if I call npm build it doesn't do anything.

@jkleinsc Is that suppose to work? I think it is not: https://docs.npmjs.com/cli/build
My understanding is that npm build [directory] is to build a subdirectory.
npm start and npm test, though, are aliases for npm run start and npm run test.
So npm run build works.
Am I missing something?

@filipesperandio Gah!  My bad!  I was thinking that npm build would directly run ember build, but yes you are right.  I'll merge the PR.


output from get_flowline_index is inconsistent if search radius is expanded

I'm using get_flowline_index() to find the nearest NHDPlusv2 flowline(s) to a set of point locations and noticed some unexpected behavior when expanding the search radius. For a given point, one of the matching COMID's is associated with different values of offset depending on what value I use as the search radius, even though this COMID should be located within either radii.
I think this happens because some linestrings are dropped when casting to single linestrings (at least some of the time):
library(nhdplusTools)
library(sf)
#> Linking to GEOS 3.10.2, GDAL 3.4.1, PROJ 7.2.1; sf_use_s2() is TRUE
library(tidyverse)

# Define points
locs <- tibble(lon = -89.53656,
               lat = 44.52144)
points <- sf::st_as_sf(locs, coords = c("lon", "lat"), crs = 4269) %>%
  sf::st_transform(5070)
flines_aoi <- sf::st_buffer(points, dist = units::as_units(5000, "m")) %>%
  sf::st_bbox() %>%
  sf::st_as_sfc()

# Define objects that we'd pass to get_flowline_index() args
search_rad_1 <- units::as_units(500, "m")
search_rad_2 <- units::as_units(200, "m")
max_match <- 5
precision <- 10

flines <- nhdplusTools::get_nhdplus(AOI = flines_aoi, realization = "flowline")
#> Spherical geometry (s2) switched off
#> Spherical geometry (s2) switched on

# get_flowline_index() returns different offsets for each search radius, even
# though comid 14702648 should be within both radii
get_flowline_index(flines, points,
                   search_radius = search_rad_1,
                   max_matches = max_match,
                   precision = precision)
#>   id    COMID      REACHCODE REACH_meas   offset
#> 1  1 14703128<PHONE_NUMBER>0126    36.8697 133.1620
#> 2  1 14703130<PHONE_NUMBER>0126    36.0666 145.0908
#> 3  1 14702662<PHONE_NUMBER>0126    29.7252 279.8264
#> 4  1 14702648<PHONE_NUMBER>0126    84.6159 492.4937

get_flowline_index(flines, points,
                   search_radius = search_rad_2,
                   max_matches = max_match,
                   precision = precision)
#>   id    COMID      REACHCODE REACH_meas     offset
#> 1  1 14702648<PHONE_NUMBER>0126    59.3248   3.532443
#> 2  1 14703128<PHONE_NUMBER>0126    36.8697 133.162017
#> 3  1 14703130<PHONE_NUMBER>0126    36.0666 145.090805

# I think this happens because linestrings get dropped when casting to single
# LINESTRING within get_flowline_index() (?)
buff_500 <- sf::st_buffer(points, units::as_units(500, "m"))
flines_200 <- suppressWarnings(sf::st_intersection(flines, sf::st_buffer(points, units::as_units(200, "m"))))
flines_500 <- suppressWarnings(sf::st_intersection(flines, buff_500))

fline_200_cast <- sf::st_cast(flines_200, "LINESTRING", warn = FALSE)
fline_500_cast <- sf::st_cast(flines_500, "LINESTRING", warn = FALSE)
#> Warning in st_cast.MULTILINESTRING(X[[i]], ...): keeping first linestring only

# I don't really understand why other linestrings would get dropped or what
# causes that. Weirdly, casting to multilinestring first seems to avoid that
# issue, at least for this small example
flines_500_cast2 <- st_cast(st_cast(flines_500, "MULTILINESTRING"),"LINESTRING")
#> Warning in st_cast.sf(st_cast(flines_500, "MULTILINESTRING"), "LINESTRING"):
#> repeating attributes for all sub-geometries for which they may not be constant

Created on 2023-08-03 by the reprex package (v2.0.1)
library(mapview)
mapviewOptions(fgb = FALSE)

mapview(buff_500, alpha.regions = 0.2, layer.name = "500m radius") +
  mapview(points, col.region = "black", layer.name = "point") +
  mapview(fline_200_cast, layer.name = "200m radius flines") +
  mapview(fline_500_cast,
          layer.name = "500m radius flines",
          color = "darkgreen",
          lwd = 8, alpha = 0.5) +
  mapview(flines_500_cast2,
          layer.name = "500m radius flines - cast twice",
          color = "#e6ab02",
          lwd = 8, alpha = 0.3)

packageVersion("nhdplusTools")
#> [1] '1.0.1'
packageVersion("sf")
#> [1] '1.0.9'

@lkoenig-usgs -- thanks for such detailed reprex analysis.
After https://github.com/DOI-USGS/hydroloom/commit/f1ce2c417893f925f91cf118bc2cafa7e6475dc7 I now see:
library(nhdplusTools)
library(sf)
#> Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE
library(tidyverse)

locs <- tibble(lon = -89.53656,
               lat = 44.52144)
points <- sf::st_as_sf(locs, coords = c("lon", "lat"), crs = 4269) %>%
  sf::st_transform(5070)
flines_aoi <- sf::st_buffer(points, dist = units::as_units(5000, "m")) %>%
  sf::st_bbox() %>%
  sf::st_as_sfc()

search_rad_1 <- units::as_units(500, "m")
search_rad_2 <- units::as_units(200, "m")
max_match <- 5
precision <- 10

flines <- nhdplusTools::get_nhdplus(AOI = flines_aoi, realization = "flowline")
#> Spherical geometry (s2) switched off
#> Spherical geometry (s2) switched on

get_flowline_index(flines, points,
                   search_radius = search_rad_1,
                   max_matches = max_match,
                   precision = precision)
#>   id    COMID      REACHCODE REACH_meas     offset
#> 1  1 14702648<PHONE_NUMBER>0126    42.9976   3.532443
#> 2  1 14703128<PHONE_NUMBER>0126    36.8697 133.162017
#> 3  1 14703130<PHONE_NUMBER>0126    36.0666 145.090805
#> 4  1 14702662<PHONE_NUMBER>0126    29.7252 279.826351

get_flowline_index(flines, points,
                   search_radius = search_rad_2,
                   max_matches = max_match,
                   precision = precision)
#>   id    COMID      REACHCODE REACH_meas     offset
#> 1  1 14702648<PHONE_NUMBER>0126    42.9976   3.532443
#> 2  1 14703128<PHONE_NUMBER>0126    36.8697 133.162017
#> 3  1 14703130<PHONE_NUMBER>0126    36.0666 145.090805

Created on 2023-08-11 with reprex v2.0.2


libre no longer translating

deep_translator version: 1.8.0
Python version: 3.8
Operating System: Linux

Description
Translating "Ich mag Züge" which is German for "I like trains" with the libre flavor.
The result is still in German. All other flavors work.

@Zethson thanks for opening the issue. With "no longer translating", do you mean that it worked with previous versions (e.g v1.7.0)?

Yes exactly. Sorry, should have clarified this.

@Zethson thanks for the feedback. Did you pass the source and target language as abbreviations? can you show me how you called the function

it would probably work if you use abbreviations as source and target languages. I just merged a fix for this

Sorry, here's the code: https://github.com/theislab/ehrapy/blob/development/tests/tools/nlp/test_translator.py
Pretty sure that we are using abbreviations already.

@Zethson I think your problem is the way you are passing the arguments. It's hard to tell from the code you are providing.
Anyway, this simple example works:
    l = LibreTranslator(source="en", target="de")
    res = l.translate("good")

or if you have an api_key and want to use it:
    l = LibreTranslator(api_key="your_key", source="en", target="de")
    res = l.translate("good")

these two code examples work fine


The "url" string format seems too strict

The URL regexp doesn't allow the following valid urls:

http://localhost:3000 - valid url for local development,
mysql://user:pass@mysql:3306/local - for example valid host in docker network

It seems, this pattern works better in those cases:
/^(?:https?|wss?|ftp|mysql):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.?(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu

I've registred this format as url-local, so it gives some flexibility in case if i want to allow such urls or not.

This is exactly why typebox doesn't ship with these formatters by default - the standards are sometimes nonexistent, unclear and/or not widely adopted. The latest v7 draft might address some of the ambiguities though. I'll make a note of this particular shortcoming and perhaps introduce some useful variants and/or add support for some of the newer draft formats (i.e. hostname, uri, uri-reference, etc.)


Validation warnings for ocs registry

We have an automation downstream for registry containers that validates the registry. It is currently showing a number of warnings:
http://external-ci-coldstorage.datahub.redhat.com/cvp/cvp-redhat-operator-metadata-validation-test/ocs-registry-container-4.2-103.142e3ba.master/b97282c0-7ce5-402f-ace1-9712657f2b6f/operator-metadata-linting-output.txt
This is using operator-courier [1] to verify the registry. These warnings might not point to an actual problem with the registry but it would be nice if you could review them and suggest an action, i.e. fix/ignore/...
[1] https://github.com/operator-framework/operator-courier

Some of those are probably things we could touch up. All the CRD warnings can be ignored, since the user isn't expected to manually create any of those.

I am attaching the output of operator-courier since the link is not publicly available and may disappear at some point:
WARNING: csv metadata.annotations.description not defined [0.0.1/ocs-operator.v0.0.1.clusterserviceversion.yaml]
WARNING: csv metadata.annotations.containerImage not defined [0.0.1/ocs-operator.v0.0.1.clusterserviceversion.yaml]
WARNING: csv metadata.annotations.createdAt not defined [0.0.1/ocs-operator.v0.0.1.clusterserviceversion.yaml]
WARNING: csv metadata.annotations.support not defined [0.0.1/ocs-operator.v0.0.1.clusterserviceversion.yaml]
WARNING: csv metadata.annotations.certified not defined. [0.0.1/ocs-operator.v0.0.1.clusterserviceversion.yaml]
WARNING: csv spec.icon not defined [0.0.1/ocs-operator.v0.0.1.clusterserviceversion.yaml]
WARNING: csv metadata.annotations.description not defined.Without this field, the description displayed in the tiles of the UI will be a truncated version of spec.description. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: csv metadata.annotations.repository not defined.Without this field, the link to the operator source code will not be displayed in the UI. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: csv metadata.annotations.createdAt not defined.Without this field, the time stamp at which the operator was created will not be displayed in the UI. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: csv metadata.annotations.containerImage not defined.Without this field, the link to the operator image will not be displayed in the UI. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: csv spec.icon not defined. Without this field, the operator will display a default operator framework icon. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: CephCluster CRD does not have an entry in alm-examples - please add such an example CR. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: CephBlockPool CRD does not have an entry in alm-examples - please add such an example CR. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: CephObjectStore CRD does not have an entry in alm-examples - please add such an example CR. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: CephObjectStoreUser CRD does not have an entry in alm-examples - please add such an example CR. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: CephNFS CRD does not have an entry in alm-examples - please add such an example CR. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: NooBaa CRD does not have an entry in alm-examples - please add such an example CR. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: BackingStore CRD does not have an entry in alm-examples - please add such an example CR. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]
WARNING: BucketClass CRD does not have an entry in alm-examples - please add such an example CR. [b97282c0-7ce5-402f-ace1-9712657f2b6f/ocs-operator.package.yaml]

We have added all the needed annotations and the rest can be ignored.


[Fair Map] Possible zoom related improvements.

These are just a few things I came across and would like to get all your’s yay or nay on.

[ ] The first double-tap only zooms in 1 level, but doesn’t yet show any extra features. I think it could, because it doesn’t take much more zooming to make them show or possibly the 1st level could zoom in a bit more?

[ ] When zoomed-in, it’s easily possible to scroll the content out of view in all corners. Should we constrain that?

TLDR: I think the first bit should be done :+1: - and the second not.
Both of these ideas came from the fact that we wanted the map to be generic and to support whatever we are given ( The map renderer is the same as an artwork renderer for example. ) But also that we expect to support a wide array of maps ( not all will be at this 45' angle. )


Upgrade to ruby 2.7.1

These are the necessary changes for Ruby 2.7.1
I've left the Ruby version as 2.6.6 since there is an automatic script to update all apps' Ruby versions.
The main change is removing the formtastic forms, since formtastic and formtastic-bootstrap are not maintained any more.
:warning: This application is Continuously Deployed: :warning:

Merged changes are automatically deployed to staging and production.

Make sure you follow the guidance for deployments before you merge.

Check your branch is being deployed in the Release app, after merging.

Looks great, just left a few minor comments 👍


Need to attach process and start the Debug from outside application just in one click

Issue Type: Feature Request
We are supporting the vs code for python scripts editing and debugging for our users. We have alredy supported the editing and debigging the script, but we are facinng one blocker i.e. we need to start the debigging as soon as user selects debug button from our application we expect that we start the debug session and stop at the first line of the script. Is there any option in VS code to strat the debug from outside application. Instead of pressing F5 or green button in debug profile.
VS Code version: Code 1.37.1 (f06011ac164ae4dc8e753a3fe7f9549844d15e35, 2019-08-15T16:17:55.855Z)
OS version: Windows_NT x64 10.0.16299

You can use the vscode.debug.startDebugging API:
https://github.com/microsoft/vscode/blob/9f49056ec7ece19d69507dfe956fb3aae8fc355c/src/vs/vscode.d.ts#L9082-L9093


Updates for account

Should be solved by https://github.com/binlab/terraform-aws-vault-ha-raft/pull/43 and Example: Public SSH access to the instances by OpenSSH private key


Fix app crash when all wallets are deleted

Fix #741
Fix #680

remove excess padding on create password modal

Code looks good. Tested functionality and it works. However if I delete all wallets and try to create a new wallet without restarting godcr, after wallet is created I see [ERR] UI: Wallet Error: listener_already_exist on the console. dcrlibwallet.MultiWallet still holds reference to the listener created before the previous wallet was deleted. This doesn't affect functionality and it is an extreme case.

did not get this but let me see if i can reproduce it.


chore: ignore lock

Trying to ignore the lock file again, it has come back somehow.
I'll back port this on next too.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


DO NOT MERGE: hacky breaking changes to make it talk to a real backend

This breaks all the FE tests, it was done purely as an experiement to see the frontend talking to backend

I've performed the necessary style rule changes to enable the pages to render as intended. These should surface in the latest commit to this branch.

Some further style amends to get the Stats page more inline with Karwai's final designs added to the latest commit on this branch.

@chrisns this should be mergeable now.

won't merge, needs css to be fixed, merge commits removed have split out the functional changes into another branch and PR, so the css+html work can be rebased from that work.

new pull request at: https://github.com/UKHomeOffice/removals_dashboard/pull/13


Add proper fonts

Exe said it's still a very clunky process, so this may have to be done later on.

Squarewave has been added.


Implement kiota_serialization_text

Fixes #21
Enum deserialisation is currently not possible, because Dart doesn't have reflection. I linked to an issue that proposes to add abstract static members to classes, which would in turn allow the Dart SDK to provide static access to the values member of enums which would allow us to use it to deserialise a specific value.
In the meantime we either don't support enum deserialisation (not preferred) or we implement a workaround which would increase the amount of generated code (via static factories that register each available enum).

Just rebased (no conflicts); continuing with merge


remove highlight.el

Most users probably get this package from Melpa now and that does
not include the bundled highlight.el, which demonstrates that
this patched version is no longer required.
Remove it so that those users who install floobits using git
submodules are not negatively affected by an outdated version
laying around on their load-path.

Friendly ping ;-)

Here's another friendly ping for you!

Highlight.el doesn't ship with Emacs 24, so removing this file breaks the plugin for users without MELPA.
Sorry, but it looks like this crufty code is going to stick around for a while.

Highlight.el doesn't ship with Emacs 24, so removing this file breaks the plugin for users without MELPA.

True, those users (which includes myself) will now have to install highlight separately. The argument I was trying to make is that some of those users might already have installed it separately. When such a user updates that separately installed highlight s/he expects that version to be loaded. However your package bundles an older copy and so it is undefined which version gets loaded (it depends on the order of the load-path). This can be very confusing. Imagine you update highlight to get a new feature and that feature simply not being there even after recompiling and restarting Emacs...

Fixed by #94.


Scrape all "variablelist" tags in "Properties" section

Fixes #23.
Originally the scraper only found the first two properties when
scraping this CloudFormation doc:
  "Parameters": [
    {
      "Name": "Body",
      "Type": "JSON object",
      "Documentation": "A Swagger specification that defines a set of RESTful APIs in the JSON format.",
      "Required": false
    },
    {
      "Name": "BodyS3Location",
      "Type": "Amazon API Gateway RestApi S3Location",
      "Documentation": "The Amazon Simple Storage Service (Amazon S3) location that points to a Swagger file, which defines a set of RESTful APIs in JSON or YAML format.",
      "Required": false
    }
  ]

because the "Properties" section contains multiple class="variablelist" tags.
After this change, all of the properties are successfully scraped:
  "Parameters": [
    {
      "Name": "Body",
      "Type": "JSON object",
      "Documentation": "A Swagger specification that defines a set of RESTful APIs in the JSON format.",
      "Required": false
    },
    {
      "Name": "BodyS3Location",
      "Type": "Amazon API Gateway RestApi S3Location",
      "Documentation": "The Amazon Simple Storage Service (Amazon S3) location that points to a Swagger file, which defines a set of RESTful APIs in JSON or YAML format.",
      "Required": false
    },
    {
      "Name": "CloneFrom",
      "Type": "Text",
      "Documentation": "The ID of the API Gateway RestApi resource that you want to clone.",
      "Required": false
    },
    {
      "Name": "Description",
      "Type": "Text",
      "Documentation": "A description of the purpose of this API Gateway RestApi resource.",
      "Required": false
    },
    {
      "Name": "FailOnWarnings",
      "Type": "Bool'",
      "Documentation": "If a warning occurs while API Gateway is creating the RestApi resource, indicates whether to roll back the resource.",
      "Required": false
    },
    {
      "Name": "Name",
      "Type": "Text",
      "Documentation": "A name for the API Gateway RestApi resource.",
      "Required": false
    },
    {
      "Name": "Parameters",
      "Type": "[Text]",
      "Documentation": "Custom header parameters for the request.",
      "Required": false
    }
  ]

Only "variablelist" tags in the "Properties" section are targeted. The
"variablelist" tag in the "Return Values" section is ignored.

I tested this out on a few docs pages that we've already scraped, and I found no regressions. Thanks again!
Apparently the new YAML/JSON filter breaks the Type of resources. I'll have to fix that.

Apparently the new YAML/JSON filter breaks the Type of resources. I'll have to fix that.
That was fast! :)


Fix error in secret ballot tutorial

Remove Ok(...) from constructor.

You don't have to update docs/ any more.


[CHORE] Update Mint constructor tests

This PR updates the Mint constructor tests for both the rest client and browser client when using positional arguments and keyword arguments.
It tests the 4 different possibilities for passing the username and email into the mint constructor are:

Keyword arguments using the rest client
Positional arguments using the rest client
Keyword arguments using the browser client
Positional arguments using the browser client

My previous PR which added these tests were not testing all four possibilities.

Thanks, did you mean to close this?

Ah yes. I'm still learning good practices for syncing a fork in git and branching. I was making a lot of commits to my main branch of my fork. As I'm learning, it sounds like a better practice would be to "Fork"->"Branch"->"Commit"->"Pull Request"->"Sync Fork Main"? Appreciate any tips or feedback!


Update to handle flipped reference alleles in dosage files (encoded 0 to 2) in predict_gene_expression.py

Original Program's handling of flipped reference alleles operates for dosage files encoded -1, 0, 1 (continuous). This update would handle SNPs with flipped reference alleles with dosages encoded 0, 1, 2 (continuous). The 0:2 dosage format is used in PrediXcan example dosage files and produced if using the convert_plink_to_dosage.py script.
Hope this is helpful,
-Hannah C Ainsworth, Kip D Zimmerman, Carl D Langefeld from Wake Forest's Center for Public Health Genomics

Thank you for the contribution.
This has been merged to the hakyimlab/PrediXcan fork.


Bump AppVersion in node-problem-detector chart

Current AppVersion of node-problem-detector is v0.8.18, but a new version has been released a couple of months ago: https://github.com/kubernetes/node-problem-detector/releases/tag/v0.8.19
Changing https://github.com/deliveryhero/helm-charts/blob/master/stable/node-problem-detector/Chart.yaml#L4 and https://github.com/deliveryhero/helm-charts/blob/master/stable/node-problem-detector/values.yaml#L59 is all what's needed.

I can open a PR with the changes if that's ok.

PRs are always welcome @cmontemuino 🙂

Opened a PR to bump the chart: https://github.com/deliveryhero/helm-charts/pull/610


Screen distortion at 960 X 540 resolution

Hello @pedroSG94
I am using your library well.
There is one problem, when I show the preview or start stream, there is distortion at 16:9 960 X 540 resolution (qhd).

1280 X 720 (HD)

960 X 540 (qHD)

The source code that tested the above situation is as follows.

fragment_gl_view

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="viewModel"
            type="com.example.filterexample.glView.GlViewModel" />
    </data>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <FrameLayout
            android:id="@+id/addWebViewContainer"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <com.pedro.rtplibrary.view.OpenGlView
            android:id="@+id/glView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
<EMAIL_ADDRESS>            app:isFlipHorizontal="false"
            app:isFlipVertical="false"
            app:numFilters="10" />

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#77777777">

            <TextView
                android:id="@+id/textView"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="Apply by directly entering the preview quality"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="parent"/>

            <EditText
                android:id="@+id/widthEt"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:inputType="number"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/textView"
                android:layout_marginTop="10dp"/>

            <EditText
                android:id="@+id/heightEt"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="20dp"
                android:inputType="number"
                app:layout_constraintStart_toEndOf="@+id/widthEt"
                app:layout_constraintTop_toTopOf="@+id/widthEt" />

            <Button
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:onClick="@{() -> viewModel.setPreviewCustomSize()}"
                android:text="apply"
                app:layout_constraintBottom_toBottomOf="@+id/heightEt"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@+id/heightEt"
                app:layout_constraintTop_toTopOf="@+id/heightEt" />
        </androidx.constraintlayout.widget.ConstraintLayout>

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true">

            <Button
                android:id="@+id/qualityLow"
                android:layout_width="120dp"
                android:layout_height="wrap_content"
                android:onClick="@{() -> viewModel.setPreview(1)}"
                android:text="nHD\n(640*360)"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toStartOf="@+id/qualityMiddle"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <Button
                android:id="@+id/qualityMiddle"
                android:layout_width="120dp"
                android:layout_height="wrap_content"
                android:onClick="@{() -> viewModel.setPreview(2)}"
                android:text="qHD\n(960*540)"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <Button
                android:id="@+id/qualityHigh"
                android:layout_width="120dp"
                android:layout_height="wrap_content"
                android:onClick="@{() -> viewModel.setPreview(3)}"
                android:text="HD\n(1280*720)"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@+id/qualityMiddle"
                app:layout_constraintTop_toTopOf="parent" />

            <Button
                android:id="@+id/quality2k"
                android:layout_width="120dp"
                android:layout_height="wrap_content"
                android:onClick="@{() -> viewModel.setPreview(4)}"
                android:text="FHD\n(1920x1080)"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toStartOf="@+id/quality4k"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/qualityLow" />

            <Button
                android:id="@+id/quality4k"
                android:layout_width="120dp"
                android:layout_height="wrap_content"
                android:onClick="@{() -> viewModel.setPreview(5)}"
                android:text="UHD\n(3840x2160)"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/qualityMiddle" />

            <Button
                android:id="@+id/setAspectRatioMode"
                android:layout_width="120dp"
                android:layout_height="wrap_content"
                android:onClick="@{() -> viewModel.setAspectRatioMode()}"
                android:text="setAspectRatioMode\n(cur : adjust)"
                android:textSize="11sp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@+id/quality4k"
                app:layout_constraintTop_toBottomOf="@+id/qualityMiddle" />
        </androidx.constraintlayout.widget.ConstraintLayout>
    </RelativeLayout>
</layout>

GlViewModel

class GlViewModel() : BaseViewModel() {
    val aspectRatioMode = MutableLiveData<AspectRatioMode>(AspectRatioMode.Adjust)

    private val _clickSetPreviewSizeChannel = Channel<Unit>(Channel.CONFLATED)
    val clickSetPreviewSizeChannel = _clickSetPreviewSizeChannel.receiveAsFlow()

    fun setPreviewCustomSize() = viewModelScope.launch {
        _clickSetPreviewSizeChannel.send(Unit)
    }

    private val _clickSetPreviewChannel = Channel<Size>(Channel.CONFLATED)
    val clickSetPreviewChannel = _clickSetPreviewChannel.receiveAsFlow()

    fun setPreview(quality: Int) = viewModelScope.launch {
        val size = when(quality) {
            1 -> Size(640, 360)
            2 -> Size(960, 540)
            3 -> Size(1280, 720)
            4 -> Size(1920, 1080)
            5 -> Size(3840, 2160)
            else -> Size(16, 9)
        }
        _clickSetPreviewChannel.send(size)
    }

    private val _setAspectRatioModeChannel = Channel<Unit>(Channel.CONFLATED)
    val setAspectRatioModeChannel = _setAspectRatioModeChannel.receiveAsFlow()

    fun setAspectRatioMode() = viewModelScope.launch {
        aspectRatioMode.postValue(
            if (aspectRatioMode.value == AspectRatioMode.Adjust)
                AspectRatioMode.Fill
            else AspectRatioMode.Adjust
        )
        _setAspectRatioModeChannel.send(Unit)
    }
}

GlViewFragment

class GlViewFragment : BaseFragment<FragGlViewBinding, GlViewModel>(), SurfaceHolder.Callback,
    ConnectCheckerRtmp {

    private val mainViewModel: MainViewModel by activityViewModels()

    private val camera2Base: Camera2Base by lazy {
        RtmpCamera2(binding.glView, this)
    }

    // This function is defined in BaseFragment and operates within onViewCreated
    override fun init() {
        binding.lifecycleOwner = viewLifecycleOwner
        binding.viewModel = viewModel
        binding.glView.holder.addCallback(this@GlViewFragment)
    }

    // This function is defined in BaseFragment and operates within onViewCreated
    override fun initViewModelCallback(): Unit = with(viewModel) {
        // When you click the Apply button after entering any resolution
        clickSetPreviewSizeChannel.onEach {
            val width = binding.widthEt.text.toString()
            val height = binding.heightEt.text.toString()

            if (width.isEmpty() || height.isEmpty()) {
                Common.showSnackBar(binding.root, "You must enter a resolution.")
                return@onEach
            }

            mainViewModel.width.value = width.toInt()
            mainViewModel.height.value = height.toInt()

            updateGlViewPreview()
        }.observeInLifecycle(viewLifecycleOwner)

        // Click the predefined resolution button at the bottom of the screen
        clickSetPreviewChannel.onEach { size ->
            mainViewModel.width.value = size.width
            mainViewModel.height.value = size.height

            binding.widthEt.setText(size.width.toString())
            binding.heightEt.setText(size.height.toString())

            updateGlViewPreview()
        }.observeInLifecycle(viewLifecycleOwner)

        setAspectRatioModeChannel.onEach {
            binding.setAspectRatioMode.text = "setAspectRatioMode\n(cur : ${viewModel.aspectRatioMode.value?.name})"

            updateGlViewPreview()
        }.observeInLifecycle(viewLifecycleOwner)
    }

    private fun updateGlViewPreview() = with(camera2Base) {
        stopPreview()

        prepareAudio()
        prepareVideo(
            mainViewModel.width.value,
            mainViewModel.height.value,
            2000
        )

        startPreview()
    }

    override fun surfaceCreated(holder: SurfaceHolder) {}

    override fun surfaceChanged(p0: SurfaceHolder, format: Int, width: Int, height: Int) {
        updateGlViewPreview()
    }

    override fun surfaceDestroyed(p0: SurfaceHolder) {
        if (camera2Base.isRecording) {
            camera2Base.stopRecord()
        }
        if (camera2Base.isStreaming) {
            camera2Base.stopStream()
        }
        camera2Base.stopPreview()
    }

    override fun onAuthErrorRtmp() {}

    override fun onAuthSuccessRtmp() {}

    override fun onConnectionFailedRtmp(reason: String) {
        camera2Base.stopStream()
    }

    override fun onConnectionStartedRtmp(rtmpUrl: String) {}

    override fun onConnectionSuccessRtmp() {}

    override fun onDisconnectRtmp() {}

    override fun onNewBitrateRtmp(bitrate: Long) {}

    override fun onDestroyView() {
        binding.glView.holder.removeCallback(this)
        super.onDestroyView()
    }
}

I am using Camera2Base. Can you solve this problem?

Hello,
You are right, the image is distorted using 960x540.
Apparently this happens in few cases if you use a resolution not supported by the camera. Seems that Camera2 API resize other resolution to fit with it producing this distortion.
Also, I had a bug using aspect ratio 1:1 but I fixed it here:
https://github.com/pedroSG94/rtmp-rtsp-stream-client-java/commit/b3b5139ab6adbaff19a69f67132add90d9c08fa2
I will need find a trick to fix it because I haven't a code error calculating the image size of OpenGlView (you can check that the stream/video is distorted and the surface is exactly the same size that your resolution selected so I'm not doing any transformation).
Meanwhile, I recommend you use resolutions listed in getResolutionsBack and getResolutionsFront methods

The edits above did nothing for me.
I'm trying to use the resolutions listed with getResolutionsBack and getResolutionsFront , but we are forced to use the 960 X 540 resolution because the native resolution we require is a 16:9 aspect ratio.
The picture below is the method I thought of, but is it impossible to modify it in that direction?

Suggestion 1

Suggestion 2

My idea is use the method 2. But this have a problem.
What should I do if the user set a aspect ratio not found in the supported resolutions? throw an error? ignore it and set it by default that maybe produce distortion?

Released devices continue to create new resolutions. Looking into the future, I think that whatever resolution you set, you need to develop a way to compress it from the nearest optimal resolution to the resolution you set.
But I think this will be very difficult.
For now, wouldn't it be better to correct only the supported resolutions by compressing them, and then modifying the other resolutions by displaying distortion?

Hello,
I did a commit that should solve the problem:
https://github.com/pedroSG94/rtmp-rtsp-stream-client-java/tree/camera2res
With this commit 960x540 was working fine in my case. Test it and let me know if it is working as expected.
If you need use gradle you can compile it like this:
implementation 'com.github.pedroSG94.rtmp-rtsp-stream-client-java:rtplibrary:camera2res-6d2c05f0d8-1'

As a result of testing with the changed commit, it was confirmed that it works normally.
Thank you for your efforts.

Thank you for your efforts.
I checked that it works without distortion when the commit of the answer you sent is applied.
However, the current work is in a format in which 960 X 540 (QHD) quality is returned to 1280 X 720 (HD) quality.
Even if want to transmit the broadcast in QHD quality, if it is forced to change to HD, can't use QHD quality?
Is it impossible to work with the way I answered above?

I think that the stream result is still 960x540 (at least in my tests.
The only difference is that the camera is opened in 1280x720 and scaled to 960x540

There was a confusion in the comment I wrote.
As you said, the actual broadcast transmission will be sent in a size of 960 X 540.
Thank you for the correction of broadcast distortion.
I mean, I wanted the preview screen to be displayed without distortion in the same image quality as well as correcting the broadcast transmission distortion phenomenon.
For example, if I send a broadcast in 960 x 540 (qHD) size and the same ratio size of the next level in the list of supported image quality to the device is 3840 x 2160 (UHD), the broadcast will be sent in qHD quality, but the preview screen will be displayed in UHD this example will apply equally to not only the 16:9 ratio, but to all other ratios.
This makes the preview screen and the outgoing screen look like a big difference in quality.
I sincerely hope you will consider the above as well.

You mean use the higher resolution only on preview?
I think it is not possible because preview and stream get video frames from the same source (I'm using one surface that is copied to both). That means that if you open camera to UHD, the preview and stream will be UHD scaled.
Also, use UHD by default is not the best for all cases because open camera in the highest resolution could produce problems with temperature or performance in few devices and you can't avoid it using lower resolution because internally I'm using the highest resolution.
I can use a higher resolution and re scaled it but only if you set it using a method that is totally optional

answer is late I'm sorry.
I don't mean that previews should have higher resolution than streams. This means that the preview and stream should be applied at the same resolution.
When a stream is sent out at 960 X 540 resolution after a recent modification, the preview is displayed at 1280 X 720 resolution to eliminate distortion, and the stream and preview are of different sizes.
The comment above illustrates the case where the 16:9 resolution size supported by the device is 960 X 540, 3840 x 2160 with no medium size.
Of course, there are no devices that support only two sizes, but this situation is explained because the percentage you want may not be a typical percentage.
The ideal solution to this issue is to want the preview, stream screen to be displayed the same size without distortion.

When a stream is sent out at 960 X 540 resolution after a recent modification, the preview is displayed at 1280 X 720 resolution to eliminate distortion, and the stream and preview are of different sizes.

No, it isn't the case. In both cases the resolution is 1280x720 scaled. In preview scaled to OpenGlView resolution and in stream scaled to stream resolution but the source is exactly the same (1280x720) so the quality is the same.
It is because I'm using the same surface to copy data in preview surface and in stream surface. After copy the image I do the scale depend of the surface used (stream or preview).

We will close the issue because it is currently operating normally without distortion.
Thank you for the correction.

at preview and record and stream at 1280x720 I am getting distrotation code is same as example

Please, avoid write in a closed issue. Open a new issue and explain with detail your case.
You can refer to this issue if needed


We shouldn't be downloading all the statuses, favourites, and bookmarks on each call.

We should only bring down the latest status, favourites, and bookmarks when we call the CLI.

Statuses docs: https://docs.joinmastodon.org/methods/accounts/#query-parameters
Looks like the bookmarks and favourites don't really support a since_id.

So, because bookmarks and favourites don't support a since_id, but they should return in save order, my thought is to pull pages until we hit the most recent one, which we pull from the db. Does this work, @myles ? If so I can code that up.


Call to undefined method Laravel\Lumen\Application::booting()

lumen5.6  Call to undefined method Laravel\Lumen\Application::booting()

I have the same issue, How can I fix this?


update darvaza core to v0.6.0 due to WaitGroup.GoCatch fatal problems

tagged agent/v0.1.1 and shared/v0.4.2


Add North Star Community trust

@mantis Thank you for your patience while waiting for a review and processing your request. Pull request merged.


False negative on UnnecessaryLet in nested nullable property

Expected Behavior
Following TC should pass
@Test
fun `reports nested nullable property`() {
    val findings = subject.compileAndLintWithContext(
        env,
        """
            class Dialog(val window: Int?)
            val dialog: Dialog? = null
            fun test() {
                dialog?.let {
                    it.window?.let {
                        it++
                        println(it)
                    }
                }
            }
    """.trimIndent()
    )
    assertThat(findings).hasSize(1)
}

Compliant code should be as below
class Dialog(val window: Int?)
val dialog: Dialog? = null
fun test() {
    dialog?.window?.let {
        it++
        println(it)
    }
}

Observed Behavior
Above TC is failing
Context
There is existing issue to create a new rule to detect this but I think this should be handled by the UnnecessaryLet

Agree

I could try looking into this if someone hasn't already started.

Hi @mjovanc you can go ahead. I am not looking into this

I could try looking into this if someone hasn't already started.

That's assigned to you to work on it if you wish @mjovanc 👍

@cortinico Will do! Thanks!

@BraisGabin @cortinico I have raised the PR for fixing the issue

@cortinico can you take another look. thanks


chore: add lints to papyrus_storage

Lior banned as repo-wide, unless absolutely necessary.
Notable changes, the rest is either From or usize->u64 casts:

storage_benchmark: all usages are usize, not u128, so switching.
db_stats: to usages needed as f64 so added exception, last usage used f64 pow, no need to pass through i32.
serializers: multi-type use macro, added exception.
utils.rs: metrics need as f64.

This change is

crates/papyrus_storage/src/bin/storage_benchmark.rs line 159 at r1 (raw file):
Previously, dorimedini-starkware wrote…
@yair-starkware is this ok?

@DvirYo-starkware


Internal Server Error after Logging in with Social Provider

I got a "Internal Server Error" Message, when trying to log in with Github and/or Twitter (not tried Google), after redirected back to KC URL https://keycloak.dukecon.org/auth/realms/javaland/login-actions/first-broker-login?code=...
There was only the error message in the browser, no styled error message!

I think this should be in the keycloak project I think - but I don't know how to move it!

Tested again, works.


Introduction to the ELIF series

Welcome to "ELIF - Blockchain, SSI, Assisted AI, DAOs, and Cryptocurrencies," a series designed to demystify the complex world of digital technologies and currencies. In this series, we'll dive into the foundational elements that are reshaping finance, governance, and data management in the digital age.
We begin with Blockchain, the revolutionary technology behind cryptocurrencies. It's not just the backbone of Bitcoin but also a transformative force in sectors like healthcare, supply chain, and more.
Next, we explore Self-Sovereign Identity (SSI), a concept pivotal to privacy and security in our increasingly digital lives. We'll see how SSI empowers individuals, giving them control over their personal data.
We then step into the realm of Assisted AI, understanding how artificial intelligence is not just a buzzword but a tool that, when combined with blockchain and SSI, can lead to smarter, more secure, and more equitable systems.
Decentralized Autonomous Organizations (DAOs) are up next, showcasing how governance and decision-making can evolve beyond traditional structures, enabled by blockchain technology.
And, of course, we delve into the heart of digital finance with Cryptocurrencies. We'll decode what they are, how they work, and why they might be much more than just digital money.
So, whether you're a curious beginner, a tech enthusiast, or a seasoned professional looking to brush up on the latest in digital innovations, this series has something for you. Let's embark on this journey together, breaking down complex concepts into digestible bits, one episode at a time.

HELLO and welcome to our new "Explain it like I'm five" Series!
This series is designed to demystify the complex world of the emerging digital technologies like Blockchain, SSI, Assisted AI, Daos and Cryptocurrencies!
My name is Marcus, Co-founder of Larissa.Health and I will guide you through these sessions.
We begin with Blockchain, the revolutionary technology behind cryptocurrencies! It's not just the backbone of cryptocurrencies but also a transformative force in sectors like healthcare, supply chain, and more.


Null reference exception - Object reference not set to an instance of an object

Hi,
i get null reference exceptions when using the current version of the CI Framework. It also happens when i try to use the Power Dev Ops Tools from Azure DevOps, version 12.*.
My connection string is<EMAIL_ADDRESS>The null reference exception occurs in Import-XrmSolution and even in Publish-XrmCustomizations.

sorry, left the username in the connection string. my mistake.


Limit the amount of records pulled into memory at once

https://bugzilla.redhat.com/show_bug.cgi?id=1337159
This is a simple tactical change to the migration to alleviate the memory pressure in large databases.  In our candidate database that has ~65000 BinaryBlob records, the find ends up consuming all of the memory on the appliance, moving it into swap, and the migration takes something like 7 hours.  This should alleviate the memory pressure, allow GC to do its job, and not hit swap, which should allow the migration to complete in less time.
This is not a final fix, as it will still take hours, just hopefully not as many (hard to test locally because I'd have to run for 7 hours :wink:).  After this change, the majority of the time is spent in YAML.dump/load land, but I am having a very hard time getting that to parallelize in a migration (due to transactions and postgres connections not playing nice in parallel).
@gtanzillo Please review

cc @lfu

@Fryguy If I remember right, find_each grabs records in chunks of 1000, but you could configure that using the :batch_size option. Perhaps something like 5k would be a happy medium? Just a thought.

Yeah, I tested various sizes and 1000 was the happy number.  Actually 100 was even better on memory for the binary_blobs, but during a migration nothing else should be running, so I don't mind eating up even more.

Another thing I did not do in this PR was introduce disable_ddl_transaction!  That's because the way the migration is written, it is not reentrant.  This is another we can do in a follow up PR.

Looks good to me!  😎  👍


Added feedback Form

🚀 Pull Request
Description
Added the feedback form with validation and submission pop-up.

Related Issue
Closes: #394

Type of Change
What kind of change does this pull request introduce?

[ ] 🐛 Bug fix
[X] 🚀 New feature
[ ] 📄 Documentation update
[ ] 🛠 Code improvement/refactor
[ ] 🖼 UI/UX update
[ ] Other (please specify)

Screenshots (if applicable)
https://github.com/user-attachments/assets/2811a6bb-e5fc-468e-b94a-79ed4c253713

Checklist
Please ensure the following tasks are complete before submitting the pull request:

[X] I have tested my changes and ensured they work as expected.
[X] I have checked the existing issues and pull requests to avoid duplicates.
[X] I have starred this repository.
[X] I have reviewed my code for best practices and readability.
[X] I have included any relevant tests (if applicable).

@gauravsingh1281 Sir, Please review this PR. Thank You!!

@gauravsingh1281 , Sir, Please review this PR. Thank You!!

hey @TBorundia please resolve the merge conflicts.

@gauravsingh1281 , Solved

Hey @TBorundia , your changes are not visible, and your deploy preview has not been generated by Netlify. Please pass all the checks by Netlify. and resolve the merge conflicts.

@gauravsingh1281 , I shall work on it !!

@TBorundia ?

@gauravsingh1281 ,
Due to my exam, it's taking me more time, but I will complete it by today or, at the latest, tomorrow.
Sorry for this !!

@gauravsingh1281 , Added feedback Form. Please review it now.
https://github.com/user-attachments/assets/82c244a4-4928-4872-82e7-1c7ad74c088f


feat(h1): add server header read timeout

Implements a timeout for reading the request header. The timer starts either when the connection is established (first request) or when the first byte is read from the header (subsequent requests reusing the same connection). The entire header must be read before the specified timeout is elapsed.
This is the first step towards protecting from Slowloris types of attacks
Supersedes #2661 by fixing https://github.com/hyperium/hyper/pull/2661#discussion_r728809455
Partially fixes #2457
Closes #2661

Resolved the merge conflicts after the last PR was merged.
Ping @seanmonstar. We're waiting for a code review :smiley:

@paolobarbolini  From the header_read_timeout_no_write test case, it seems that once the connection is established, the timeout mechanism is started. Is that correct? I think this implementation is lacking, which means that the client's connection pool cannot establish connections in advance, and the client's keepAlive configuration is broken and does not keep alive as expected.

@paolobarbolini From the header_read_timeout_no_write test case, it seems that once the connection is established, the timeout mechanism is started. Is that correct? I think this implementation is lacking, which means that the client's connection pool cannot establish connections in advance, and the client's keepAlive configuration is broken and does not keep alive as expected.

Right, I didn't consider connection pools starting connections in advance. Fixed

Great work here! This PR leaves me wondering though, won't hyper also need this for h2 and h3, or are there other mechanisms in place there that prevent slow loris attacks?

Valiant effort, but still there is no way to set a timeout for clients that connect but send no data (by experimentation I discovered that the timeout does not fire if I just telnet into the TCP port and hang on there).  Which means it's trivial to gum up a hyper server just by sending a lot of connections and nothing else.