Give examples for using the GPU version of cholesky

Submisison Checklist

[ ] Run tests: ./runCmdStanTests.py src/test
[ ] Declare copyright holder and open-source license: see below

Summary:
Contains some preliminary tests in examples for the GPU version of stan-math
Intended Effect:
Increase speed of the Cholesky by using the GPU
How to Verify:
to-do
Side Effects:
to-do
Documentation:
to-do
Reviewer Suggestions:
Copyright and Licensing
Please list the copyright holder for the work you are submitting (this will be you or your assignee, such as a university or company):
By submitting this pull request, the copyright holder is agreeing to license the submitted work under the following licenses:

Code: BSD 3-clause (https://opensource.org/licenses/BSD-3-Clause)
Documentation: CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

We have good preliminary results for the big_gp stan program
CPU version:
Gradient evaluation took 5.57601 seconds
1000 transitions using 10 leapfrog steps per transition would take 55760.1 seconds.
Adjust your expectations accordingly!

GPU version:
Gradient evaluation took 1.97909 seconds
1000 transitions using 10 leapfrog steps per transition would take 19790.9 seconds.
Adjust your expectations accordingly!

I've copied two other examples from the GP examples and need to tweak them so they are the types of problems we would want on a GPU

The GPU version of big_gp just finished
examples/big_gp/optim_GP_gpu sample data file=examples/big_gp/big_gp_test.Rdat
method = sample (Default)
  sample
    num_samples = 1000 (Default)
    num_warmup = 1000 (Default)
    save_warmup = 0 (Default)
    thin = 1 (Default)
    adapt
      engaged = 1 (Default)
      gamma = 0.050000000000000003 (Default)
      delta = 0.80000000000000004 (Default)
      kappa = 0.75 (Default)
      t0 = 10 (Default)
      init_buffer = 75 (Default)
      term_buffer = 50 (Default)
      window = 25 (Default)
    algorithm = hmc (Default)
      hmc
        engine = nuts (Default)
          nuts
            max_depth = 10 (Default)
        metric = diag_e (Default)
        stepsize = 1 (Default)
        stepsize_jitter = 0 (Default)
id = 0 (Default)
data
  file = examples/big_gp/big_gp_test.Rdat
init = 2 (Default)
random
  seed =<PHONE_NUMBER>
output
  file = output.csv (Default)
  diagnostic_file =  (Default)
  refresh = 100 (Default)

Gradient evaluation took 2.03851 seconds
1000 transitions using 10 leapfrog steps per transition would take 20385.1 seconds.
Adjust your expectations accordingly!

Iteration:    1 / 2000 [  0%]  (Warmup)
Informational Message: The current Metropolis proposal is about to be rejected because of the following issue:
Exception thrown at line 30: cov_exp_quad: sigma is 0, but must be > 0!
If this warning occurs sporadically, such as for highly constrained variable types like covariance matrices, then the sampler is fine,
but if this warning occurs often then your model may be either severely ill-conditioned or misspecified.

Informational Message: The current Metropolis proposal is about to be rejected because of the following issue:
Exception thrown at line 30: cov_exp_quad: sigma is 0, but must be > 0!
If this warning occurs sporadically, such as for highly constrained variable types like covariance matrices, then the sampler is fine,
but if this warning occurs often then your model may be either severely ill-conditioned or misspecified.

Iteration:  100 / 2000 [  5%]  (Warmup)
Iteration:  200 / 2000 [ 10%]  (Warmup)
Iteration:  300 / 2000 [ 15%]  (Warmup)
Iteration:  400 / 2000 [ 20%]  (Warmup)
Iteration:  500 / 2000 [ 25%]  (Warmup)
Iteration:  600 / 2000 [ 30%]  (Warmup)
Iteration:  700 / 2000 [ 35%]  (Warmup)
Iteration:  800 / 2000 [ 40%]  (Warmup)
Iteration:  900 / 2000 [ 45%]  (Warmup)
Iteration: 1000 / 2000 [ 50%]  (Warmup)
Iteration: 1001 / 2000 [ 50%]  (Sampling)
Iteration: 1100 / 2000 [ 55%]  (Sampling)
Iteration: 1200 / 2000 [ 60%]  (Sampling)
Iteration: 1300 / 2000 [ 65%]  (Sampling)
Iteration: 1400 / 2000 [ 70%]  (Sampling)
Iteration: 1500 / 2000 [ 75%]  (Sampling)
Iteration: 1600 / 2000 [ 80%]  (Sampling)
Iteration: 1700 / 2000 [ 85%]  (Sampling)
Iteration: 1800 / 2000 [ 90%]  (Sampling)
Iteration: 1900 / 2000 [ 95%]  (Sampling)
Iteration: 2000 / 2000 [100%]  (Sampling)

 Elapsed Time: 12636.7 seconds (Warm-up)
               11713.9 seconds (Sampling)
               24350.6 seconds (Total)

So about 6.76 hours. I believe @rtrangucci said the CPU version usually takes about 10 hours

It is a start :)
I am now trying to identify the execution times of everything that is executed (part by part). Will post as soon as I have something.

To make this user visible we need to do two things

Tell the compiler we are using the gpu

Using the -DVIENNACL_WITH_OPENCL  -lOpenCL flags

Use the ViennaCL version of the code

Execution time percentages:
matrix product - ~33-35%
both inplace solves - ~33-35%
cholesky - ~20%
data transfers - <3%
The data transfers are especially encouraging, the rest can definitely can be tuned to give better results. Hopefully I will be able to run this on the GTX1070 tomorrow to see what we get on a high-end GPU.

The matrix products are very promising!
I like having my dinky gpu since it gives a nice upper bound on the time.
As for implementation, what if we did something like
#define STAN_WITH_VIENNACL 1
In the .stan file? Could Stan parse that and include the correct compilation flags + an external variable?

As to builds, you want to coordinate with @seantalts and @syclik
Great news that this is running end to end!

Bob, I think Steve is asking if we can include something in the Stan language to turn GPU support on, is that right Steve?
Unrelatedly, I don't think we generally want to check in generated files (e.g. bernoulli.hpp).

Yeah this is great! We can cut the number of computations for the first matrix production in half as both of the matrices are lower triangular. Does ViennaCL have a lower triangular multiply function?
Rob

On May 9, 2017, at 9:56 AM, Bob Carpenter<EMAIL_ADDRESS>wrote:
As to builds, you want to coordinate with @seantalts and @syclik
Great news that this is running end to end!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Fine with me as long as we can figure out how to allow it to be turned off by default and also how we can have testing for it.  So I think Sean and Daniel (@seantalts and @sycklik) need to be involved.

@rtrangucci sadly no, they do not have triangular multiply.

@Stevo15025, here are just some thoughts on the build:

I don't think the Stan program should be changed. We can leave it alone and by default it will build using the standard compiler
I think a #define may work in the code. If there's a particular #define, we can include and use the GPU-based code.
The #define can be included either in the local make file or passed as some sort of make option from CmdStan (and RStan / PyStan)

I'll walk through your pull request, but a few things:

remove the compiled binaries
remove the generated hpp files
remove the generated output (output.csv)
call the .Rdat file a .data.R file (unless it's something different)
I think we can remove the changes to makefile (you should stash changes in your local make/local file)

Bob, I think Steve is asking if we can include something in the Stan language to turn GPU support on, is that right Steve?

That is correct! Though if that is too invasive we can do something else. Was mostly throwing the idea out there.

So I think Sean and Daniel (@seantalts and @sycklik) need to be involved.

Yes, 100%. I'm very interested in how you guys think we should do this.
My idea for the #define STAN_WITH_VIENNACL 1 mostly comes from how, in ViennaCL, if you want to use the GPU backend you just place #define VIENNACL_WITH_OPENCL 1 at the top of the file. I thought users could place the stan with vienna define in their stan program and we could parse that to do what we would like. But this is out of my realm so I would much rather do what you guys feel good about.

@rtrangucci sadly no, they do not have triangular multiply.

@rok-cesnovar  Could we do this? I think we would want to only compute on warps/blocks that have no parts in the lower triangular? Otherwise we get thread divergence
Something like

__kernel void lower_triangular_matmul(const unsigned int L, const unsigned int M,
__global unsigned int *a, __global unsigned int *b, __global unsigned int *c) {

   int i, j, k, bl, di;

   i = get_group_id(1) * get_local_size(1) + get_local_id(1);
   j = get_group_id(0) * get_local_size(0) + get_local_id(0);
   // This gets the bottom left index of the work group?
   bl = get_group_id(1) * get_local_size(1) + L;
  // get diagonal index on same row as bottom left of work group
   di = j * (L + 1)
   unsigned int temp = 0;
   // If bottom left of block is not in lower tri, exit
   if (bl > di) {

   } else {
   // normal matmul
       for(k = 0; k<M; k++) {
           temp += a[j * M + k]* b[k * L + i] * (i < L && j < L);
       }
       c[j * L + i] = temp;
   }
}

I'm a little rusty so I apologize if that doesn't look right. It's getting late here so if I have time tmrw or the next day I'll try this out.

I'll walk through your pull request, but a few things:

This branch was mostly made with the intention to prototype the gpu parts of math-stan and see how well the speed-ups did "in the wild".
TODO:

[ ] remove the compiled binaries
[ ] remove the generated hpp files
[ ] remove the generated output (output.csv)
[ ] call the .Rdat file a .data.R file (unless it's something different)
[ ] remove the changes to makefile (you should stash changes in your local make/local file)

Great news that this is running end to end!

!!!

@seantalts are we able to get a travis instance with a gpu?

I think the best shot we have is to use Jenkins. The Mac Pro has a GPU. Do you know if the library is available to use on that?
For reference: http://stackoverflow.com/questions/29986942/continuous-integration-service-for-gpu-package

On May 10, 2017, at 8:33 AM, Steve Bronder<EMAIL_ADDRESS>wrote:
@seantalts are we able to get a travis instance with a gpu?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

I would cross reference what gpu your Mac has with the doc here. This is a list of the GPUs they have tested on
http://viennacl.sourceforge.net/doc/manual-introduction.html

We can buy more hardware to test and run this.

If not Travis, could we do something in AWS?  I have no idea how hard that would be, so that's a really big question mark at the end there.

I think it'd be easiest to give it a shot on the Mac Pro first - it's not listed on the ViennaCL page but I suspect it will work.

Trying out the lower triangular multiply I posted above (and fixing the missing ;) all tests for stan-math pass
Running main() from gtest_main.cc
[==========] Running 6 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 6 tests from AgradRevMatrix
[ RUN      ] AgradRevMatrix.mat_cholesky
[       OK ] AgradRevMatrix.mat_cholesky (0 ms)
[ RUN      ] AgradRevMatrix.exception_mat_cholesky
[       OK ] AgradRevMatrix.exception_mat_cholesky (0 ms)
[ RUN      ] AgradRevMatrix.mat_cholesky_1st_deriv_small
[       OK ] AgradRevMatrix.mat_cholesky_1st_deriv_small (83 ms)
[ RUN      ] AgradRevMatrix.check_varis_on_stack_small
[       OK ] AgradRevMatrix.check_varis_on_stack_small (0 ms)
[ RUN      ] AgradRevMatrix.mat_cholesky_1st_deriv_large_gradients
[       OK ] AgradRevMatrix.mat_cholesky_1st_deriv_large_gradients (1241 ms)
[ RUN      ] AgradRevMatrix.check_varis_on_stack_large
[       OK ] AgradRevMatrix.check_varis_on_stack_large (0 ms)
[----------] 6 tests from AgradRevMatrix (1324 ms total)

[----------] Global test environment tear-down
[==========] 6 tests from 1 test case ran. (1325 ms total)
[  PASSED  ] 6 tests.

@rok-cesnovar can you check out my code for the lower tri multiplication here? It took me one try to get it to work and I fail to believe that I'm that good.
Just started running the code for the big_GP example. Getting
Gradient evaluation took 1.56463 seconds
1000 transitions using 10 leapfrog steps per transition would take 15646.3 seconds.
Adjust your expectations accordingly!

Since the previous gpu version's gradient took 1.97909 and the CPU version took 5.57601 we can hand wave an extrapolation. The current version is 26% faster than the previous GPU version so it should take about 18019 seconds as compared to 24350 (about 5 hours vs  6.7 hours)
Now that @rok-cesnovar has shown a nice way to push custom kernels to ViennaCL we should use BayesCL as well. That should push us below 5 hours pretty easily.
I'm probably going to bed soon, but tomorrow/Saturday I will

Clean up this PR
Clean up stan-math PR
Try to implement BayesCL ( @rok-cesnovar would it just putting it in the right format or do we need anything else?)
More testing ( Need to do the tests as @bgoodri mentioned)

Also I graduate this weekend and will be in Chicago next week until Sunday so I may be MIA for a bit

Congratulations!

On May 11, 2017, at 10:37 PM, Steve Bronder<EMAIL_ADDRESS>wrote:
Also I graduate this weekend and will be in Chicago next week until Sunday so I may be MIA for a bit

Now that @rok-cesnovar has shown a nice way to push custom kernels to ViennaCL we should use BayesCL as well.

What is BayesCL?  I found a CRAN package for Gibbs:
https://cran.r-project.org/web/packages/bayesCL/bayesCL.pdf

I named the first version of the library with our GPU implementations bayesCL (we used it in the Cholesky benchmark and didnt have any better idea that the name of the package that we made before that and also includes the Cholesky implementation). Naming things is hard :)
@Stevo15025 I will check your implementation and let you know.
It is straightforward to replace the Cholesky_decomposition with our bayesCL. We do not need anything else (just use the example from the cholesky benchmark).
I am working on implementing some other steps in our library (particulary the solves) and tweeking the viennacl but it is still a work in progress, I should have some results by the evening ( afternoon in your case :) ). The first thing that can easily be optimized is removing the copy of vcl_L to L as L is not needed after GPU computations.
I do have the results for the GTX1070. It takes around 4 hours.

Just a heads-up that it's about $1/hr to run a NVIDIA Tesla K80 on Google's compute engine.

@Stevo15025 It seems that you commented out the cholesky_gpu in the commit and the non-gpu chain() function is called. Anyways, I tested the kernel function.
The only error is that you declared the inputs as pointers to int and not double and the temp variable should also be double. When I replaced that it passes the test. It is however not faster than the viennacl prod function.

Yikes! Thanks for catching that. Can you post the code? I will fix that up when I get home

Sure, here it is. I put it in a file as its full of quatation marks. So far I have gotten the best results by using tiling and local/shared memory, but I am still not happy with it.


search: Remove search close button when narrowed to home view.

Fixes #6426

Merged!  Thanks @synicalsyntax!


Update config to enable docfx v3

Docs Build status updates of commit dddba3e:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.publish.config.json
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit e5af18a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.publish.config.json
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Test framework

Added JUnit 5 depedency to the core project
Added file structurefor tests to match main java code
Added .gitignore at root directory to prevent .idea/ to be pushed

Will push this through!
Tests work by running through VSCode file. If not working try downloading Extension pack for java through vscode.
General solution is to run "gradle.bat core:test" through the command line. This file might be named gradlw, check that too. Should be in the root folder.


Format trailing where clauses in type aliases

Self-explanatory. cc rust-lang/rust#114901
This implementation is probably super busted. I have no idea what most of these options in rustfmt mean, lol.

r? @ytmimi or @fee1-dead
I'd like to hold off on merging this till the next-next sync & release (assuming we are still on track to get let-chains in quickly) given the diff it'll introduce on stable.
Probably worth having common (and uncommon) comments in the test snippets too

I'd like to hold off on merging this till the next-next sync & release (assuming we are still on track to get let-chains in quickly) given the diff it'll introduce on stable.

Sounds good. I think we're still on track to get that out soon. I'll likely have that PR ready later this week. Given that I'll probably hold off on reviewing this until after the next sync.

@ytmimi  do you think we should pull this in as part of the next release? I imagine this would need to be prefaced with a blog post and some associated lead time due to the intro of formatting being applied for the first time?

@ytmimi do you think we should pull this in as part of the next release? I imagine this would need to be prefaced with a blog post and some associated lead time due to the intro of formatting being applied for the first time?

@calebcartwright Yeah, I think we could pull this in for the next release. When did you want to do the sync? I'm still up for taking on the subtree push. Maybe we can talk it over on Zulip and find a time that works.

I'm expecting to see some changes now that we actually format trailing where clauses, but let's see what the Diff-Check reveals.

Okay, This Diff-Check job shows the diffs I was expecting. @compiler-errors can when you have a chance, can you review the logs and double check that things are formatted here as expected based on the formatting rules you implemented.
For your convenience I'm including the diffs inline:
note the output is a diff of diffs, so it might be a little noisy, by the highlighting should help identify the changes
Diff in /tmp/rust-lang-rust-f0yK2vou/library/core/src/ops/async_function.rs:73:
     where
         <F as FnOnce<A>>::Output: Future,
     {
-        type CallFuture<'a> = <F as FnOnce<A>>::Output where Self: 'a;
+        type CallFuture<'a>
+            = <F as FnOnce<A>>::Output
+        where
+            Self: 'a;

         extern "rust-call" fn async_call(&self, args: A) -> Self::CallFuture<'_> {
             self.call(args)

Diff in /tmp/rust-lang-rust-f0yK2vou/library/core/src/ops/async_function.rs:85:
     where
         <F as FnOnce<A>>::Output: Future,
     {
-        type CallMutFuture<'a> = <F as FnOnce<A>>::Output where Self: 'a;
+        type CallMutFuture<'a>
+            = <F as FnOnce<A>>::Output
+        where
+            Self: 'a;

         extern "rust-call" fn async_call_mut(&mut self, args: A) -> Self::CallMutFuture<'_> {
             self.call_mut(args)

Diff in /tmp/rust-lang-rust-f0yK2vou/compiler/rustc_query_system/src/query/caches.rs:32:
 pub struct DefaultCacheSelector<K>(PhantomData<K>);

 impl<'tcx, K: Eq + Hash, V: 'tcx> CacheSelector<'tcx, V> for DefaultCacheSelector<K> {
-    type Cache = DefaultCache<K, V>
+    type Cache
+        = DefaultCache<K, V>
     where
         V: Copy;
 }

Diff in /tmp/rust-lang-rust-f0yK2vou/compiler/rustc_query_system/src/query/caches.rs:84:
 pub struct SingleCacheSelector;

 impl<'tcx, V: 'tcx> CacheSelector<'tcx, V> for SingleCacheSelector {
-    type Cache = SingleCache<V>
+    type Cache
+        = SingleCache<V>
     where
         V: Copy;
 }

Diff in /tmp/rust-lang-rust-f0yK2vou/compiler/rustc_query_system/src/query/caches.rs:126:
 pub struct VecCacheSelector<K>(PhantomData<K>);

 impl<'tcx, K: Idx, V: 'tcx> CacheSelector<'tcx, V> for VecCacheSelector<K> {
-    type Cache = VecCache<K, V>
+    type Cache
+        = VecCache<K, V>
     where
         V: Copy;
 }

Diff in /tmp/rust-lang-rust-f0yK2vou/compiler/rustc_query_system/src/query/caches.rs:177:
 pub struct DefIdCacheSelector;

 impl<'tcx, V: 'tcx> CacheSelector<'tcx, V> for DefIdCacheSelector {
-    type Cache = DefIdCache<V>
+    type Cache
+        = DefIdCache<V>
     where
         V: Copy;
 }

Diff in /tmp/rust-lang-rust-f0yK2vou/src/librustdoc/clean/types.rs:1059:
 }

 impl AttributesExt for [(Cow<'_, ast::Attribute>, Option<DefId>)] {
-    type AttributeIterator<'a> = impl Iterator<Item = ast::NestedMetaItem> + 'a
-        where Self: 'a;
-    type Attributes<'a> = impl Iterator<Item = &'a ast::Attribute> + 'a
-        where Self: 'a;
+    type AttributeIterator<'a>
+        = impl Iterator<Item = ast::NestedMetaItem> + 'a
+    where
+        Self: 'a;
+    type Attributes<'a>
+        = impl Iterator<Item = &'a ast::Attribute> + 'a
+    where
+        Self: 'a;

     fn lists<'a>(&'a self, name: Symbol) -> Self::AttributeIterator<'a> {
         AttributesExt::iter(self)
@ -7[54](https://github.com/rust-lang/rustfmt/actions/runs/7661954853/job/20882324738#step:4:55)9,0 +7[63](https://github.com/rust-lang/rustfmt/actions/runs/7661954853/job/20882324738#step:4:64)3,7 @@ Diff in /tmp/rust-lang-rust-f0yK2vou/src/tools/rust-analyzer/crates/parser/test_

Diff in /tmp/rust-lang-rust-f0yK2vou/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0012_type_item_where_clause.rs:1:
-type Foo = () where Foo: Copy;
+type Foo
+    = ()
+where
+    Foo: Copy;

@ytmimi: Yes, that formatting looks correct. When there is a where clause present, there's always a line break, then =, then a break, then the where clauses.

@ytmimi do you think we should pull this in as part of the next release? I imagine this would need to be prefaced with a blog post and some associated lead time due to the intro of formatting being applied for the first time?

I think all the implementation work for this is done on the rustfmt side!
@calebcartwright I missed the fact that you suggested we get a blog post together for this. I'd be happy to draft something in preparation for the release. Is the idea to have the blog post go out before the release?

@ytmimi: Yes, that formatting looks correct. When there is a where clause present, there's always a line break, then = and the type, then a break, then the where clauses.

Awesome, thank you for confirming! I'm already anticipating someone asking for a single-line formatting option 😅

@calebcartwright @ytmimi: It's been almost a year since this PR was opened. Is there any chance we could finally get this merged? What's the plan on doing the next rustfmt->rust sync?

@ytmimi thoughts on how to label this one? it isn't technically part of the 2024 edition and can/should go before, but it is definitely something that can't slip past the 2024 edition

Agreed that this one should get in no later than the 2024 edition, and really as soon as we can. Just brainstorming here, but maybe we can label it something like pre-2024-must-have

What I think I'd like to do is get this merged such that it's timed to land with the addition of the style_edition option so that we can have a single blog post highlighting both

@compiler-errors i hate to ask but would you have bandwidth to rebase? if not i understand (i know how busy you are) and i can grab your commits and pull them into a new branch but just wanted to check with you first

@calebcartwright: Done. Sorry, was asleep by the time you sent that message otherwise I'd've done it sooner 😆

Do you want me to rebase?

Well, I went ahead and did it anyways.

Thank you :pray:


Pass template filename to Haml

Using the :filename option to Haml to pass the correct template filename allows correct handling of __FILE__ and __dir__ for relative file paths in the templates.
See http://stackoverflow.com/questions/38989394/render-a-relative-haml-using-guard for what prompted this PR.
I’ve changed the code to call dup on the options hash, since it is now being changed for each template. I think this is safer.
Also, I’m not too familiar with RSpec. I think the tests are right (they fail without the new code and pass with it) but if there’s something amiss let me know.

Thanks @mattwildig, LGTM!


Counts time when laptop is suspended

Toggl currently counts the time when my laptop was suspended. Sometimes this is a feature: when I am working away from my laptop, but sometimes I would want it to exclude the time when it was suspended: like when I'm on a short coffee break. It would be great if it could give the option of excluding the time when my laptop was suspended.

It should detect that you were away if you have the idle detection enabled in the Preferences. Can you check it out if it helps?

Ha! That works. It just informs me after a little while. Thank you!
Shreyas Potnis.
On Wed, Jan 7, 2015 at 7:50 PM, Tanel Lebedev<EMAIL_ADDRESS>wrote:

It should detect that you were away if you have the idle detection enabled
in the Preferences. Can you check it out if it helps?
—
Reply to this email directly or view it on GitHub
https://github.com/toggl/toggldesktop/issues/1050#issuecomment-69119497.


Decorations are incorrectly applied to paragraphs that start with a special character

Bug Report
When applying decorations to ranges that are within a paragraph that starts with a character that has a different font, the decorations are shifted with one character.
What happened?
Taking the first paragraph from a epub source file:

Everyone knows that Harry began his career in One Direction . . . or did he?! The name of his first band is super ironic considering the charmed career of charming Harry Styles—because in addition to skyrocketing, his career has gone in many directions!

You can notice that the letter E is formatted differently. Because of that when applying a decoration on any of the words in this paragraph the decoration will be shifted with one character.

Example of a decoration described by locator:
{\"href\":\"/OEBPS/xhtml/05_Chapter_1_Styles_in_E.xhtml\",\"locations\":{\"progression\":0.062947067238912732,\"totalProgression\":0.2135789222699094},\"text\":{\"after\":\" his career in One Direction . . . or did he?! The name\",\"before\":\"STYLES IN EVERY DIRECTION\\n\\t\\t\\tEveryone knows that Harry \",\"highlight\":\"began\"},\"title\":\"Chapter 1: Styles in Every Direction\",\"type\":\"application/xhtml+xml\"}

Another issue us if we select a word from that paragraph. The selection Locator will describe the text but the after field has an additional character (the last character from the highlight). E.g. selecting the word "Harry" will return this Locator for the selection:
{\"href\":\"/OEBPS/xhtml/05_Chapter_1_Styles_in_E.xhtml\",\"locations\":{\"position\":6,\"progression\":0,\"totalProgression\":0.20833333333333334},\"text\":{\"after\":\"y began his career in One Direction . . . or did he?! The name of his first band is super ironic considering the charmed career of charming Harry Styles—because in addition to skyrocketing, his\",\"before\":\"CHAPTER 1\\n\\t\\t\\tSTYLES IN EVERY DIRECTION\\n\\t\\t\\tEveryone knows that\",\"highlight\":\"Harry\"},\"title\":\"Chapter 1: Styles in Every Direction\",\"type\":\"application/xhtml+xml\"}

Please find a sample epub here:
9780593383865_ewyrds_preview.epub.zip
The chapter name is 05_Chapter_1_Styles_in_E.xhtml
Expected behavior
The decorations should be properly applied and the current selection should return the correct locator.
How to reproduce?
Apply decorations for words in the mentioned paragraph and read the currentSelection.locator by selecting a word in the same paragraph.

Everyone knows that Harry began his career in One Direction . . . or did he?! The name of his first band is super ironic considering the charmed career of charming Harry Styles—because in addition to skyrocketing, his career has gone in many directions!

Environment

Readium version: 2.6.0

Development environment
macOS: 13.5.1
platform: arm64
carthage:
Xcode 14.3
Build version 14E222b
Testing device
iOS version: 16.6.1 (not OS related)
Model (e.g. iPhone 11 Pro Max): iPhone 12
Is it an emulator? No
Additional context

Are you willing to fix the problem and contribute a pull request? Yes, with proper guidance.

Are you able to reproduce this issue with a highlight in the stock Test App? I'll reopen the issue if that's the case.
I believe the issue is caused by the strategy you used to produce the DOM range from the locator in your caching PR: https://github.com/readium/swift-toolkit/pull/354 I'll answer with more details on the PR.

I'm reopening, I tested myself and could notice the same problem with a highlight.

It looks like an issue in WebKit when using ::first-letter and getBoundingClientRects() which is used to layout the decorations.
You can reproduce it from the Safari Web Inspector:

Select a portion of text.
Get the range: const r = window.getSelection().getRangeAt(0)
Observe the client rect: r.getBoundingClientRect() -> DOMRect {x: 197, y: 247, ...}
Enable a property of the CSS pseudo-element ::first-letter on this paragraph. You can change only the text color which should not impact the position at all.
Observe the client rect again, note that the x is shifted for some reason: r.getBoundingClientRect() -> DOMRect {x: 212, y: 247, ...}.

I don't think we can address this in the toolkit without removing the ::first-letter pseudo-elements.

By the way it doesn't happen on your other sample because it doesn't use ::first-letter but a  element. In case you have control over the authoring...


Complex: moving math methods to Math

Moving Complex#exp. Complex#log, Complex#log2, Complex#log10 and Complex#sqrt to Math. (#9729)

Thank you for your feedback. You are right it’s cleaner to keep all spec for complex in the same file. I have updated the PR with the required changes.

@cristian-lsdb can you rebase this on master so the CI is happy. We are still missing one more 👍  review before merging, but since de CI is (wrongly) complaining that might mislead other reviewers.


Remaining Improvements from Meeting

[x] Shift-click to select many genes on gene tables
[x] Speed up selection algorithm, or at least make it appear so
[x] Make picture download work reliably (vector if possible? probably not though)
[x] FDR Cutoff option (genes will still appear in table even if they don't meet it, ignored if no FDR)
[x] Debug on Mac and windows (including maizeGDB link on Mac issue)
[ ] Either make GO enrichment faster (prefered) or build server overload safegaurds
[ ] Deal with no GWAS data elegantly

Moved big ones to their own issue, big ones are done from meeting


Fixed change source index warning conditional and added padding

Description of changes:
Source Index change warning now only appears if user has added an aggregation or group and returns to page 1.
Warning now appears fully within content panel with expected padding.
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.

Screenshot of updated warning padding


Capture "seen"/scanned devices

Need to start tracking these scans and frequency of seeing devices

initially just capture all UUIDs seen, with date added, and frequency of being seen, and place

Related is #49 .

I need to review how to extract data from the Manufacturing Data in the advertisement:
https://docs.silabs.com/bluetooth/4.0/general/adv-and-scanning/bluetooth-adv-data-basics#advertising-data-format

Seems like manufacturing data is somewhat proprietary ...

Add a busy wait while scanning

busy scanning indicator is in.l

Need to change this can
_devices.addIf(!_devices.contains(device) && _devices.every((element) => element['uuid'] != device.id), {
            'id': device.id.substring(device.id.length-5),
            'uuid': device.id,
            'name': device.name,
            'type':  device.manufacturerData.toString(),
            'lastseen': DateTime.now().toLocal()
          });

to do something different.  Instead of only adding new scan items, also update anything that was seen, and change its last seen.

saving these into local db.  closing.


instructions for using without express

i was wondering if you could give me some instructions on using this library without express. what files i need to modify etc. as it stands it won't run obviously as it is expecting an instance of express but is receiving an instance of http.server

chose another option.


Be more accepting in UnboundedReadDeduplicatorTest

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[x] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[x] Make sure tests pass via mvn clean verify. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
[x] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[x] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

Don't depend on all the threads failing. Instead, assert that at most
one success was encountered, and we saw at most numThreads - 1 failures.

R: @dhalperi

LGTM. Will merge when green, or harass any committer if I end up getting sidetracked


Make bedrock a meta-package by extracting files into separate package

[x] I've read the guidelines for Contributing to Roots Projects
[x] This request isn't a duplicate of an existing request
[x] This is not a personal support request that should be posted on the Roots Discourse community

Summary
By extracting the content of the config as well as the web folder into a separate package (i.e. bedrockfiles) that this package then requires,  this package could be used to create a project but the files that currently then need to be added to version control of the newly created project could still then be handled as dependencies.
Motivation
Curently after calling composer create-project roots/bedrock I will have to add the files within the config-folder as well as the files within the web-folder to my version control. But those actually aren't files I need to or should edit. Usually those files are dependencies of my project that I don't want to (and probably shouldn't) edit. Why should I add them to my version-control then? Especially when one of the great advantages of bedrock is, that I don't need to add files to my version control that do not belong there.
But when I currently do exactly that (not adding them to VersionControl)  I will not be able to retrieve a working installation using composer install as those few files are missing.
By extracting them to a separate package I would still have them installed on composer create-project but I would also get them installed on calling composer install. And a omposer update` would even update the files to the latest version.
Additional context
My main idea is to have a fully working WordPress with the least possible number of files. So for me the unique part of any WordPress installation usually is composer.json and composer.lock which contains all the plugins and WordPress as dependencies and then there is the theme folder. If the theme is a child theme, the parent theme is also a dependency within composer.json. Additionally there are some files for a docker-setup that usually are project specific (like the database-dump for dev and stage and such things). I'm currently thinking about moving them to a package as well.
This allows me to do the following to have a new (development) system up and running within seconds:
composer install
docker-compose up -d

OK: Perhaps in between one should copy the .env.dist to .env...

This is a excellent idea, since now we need to port/reapply any upgrade fixes (i.e in case of vlucas/phpdotenv ^3 -> ^4) that you apply on this repo, due to how composer create-project works. It would  be nice if this project would indeed only contain the composer.json/lock. This way those fixes don't need to be ported/reapplied by the whole community on every project (and we can rely on dependabot even more ;)).

I've created a composer-plugin that could be used. I'm happy to hand that over ;-)

I like the idea! I dislike the manual updating of the config folder as well. But sometimes I do define my own constants in the application.php file. Like a google api code for instance or a license code that I do not want to include in the database. The values are then set in my .env file. So manually extending the application.php file in some kind of way that is part of your repository would be nice!

I understand the motivation for this suggestion but in my opinion it's incompatible with the nature of the project: a boilerplate for WordPress projects. That's what makes Bedrock great is that it gives you a starting point to work from, but doesn't impose any limitations because there is no upgrade path and there can't really be one for Bedrock itself, because it's not a framework. I'm all in favor of making the default configuration in Bedrock more modular to make things easier to update for projects later on if you want to, but moving it into some official packages which are by definition uneditable is essentially turning Bedrock into a framework rather than a boilerplate.
I'm not saying it's a bad idea, just that I don't think that it fits Bedrock as a project. There's nothing stopping you from creating your own Bedrock-based framework/abstraction to make things easier for yourself and your projects though. By all means, do that (and maybe share what you made?) but let's not make Bedrock into a framework just to make things a little easier in one way and less flexible in another 🙂

Would be great to find the middle ground here. I too would like to just update dependencies by changing the version in composer.json instead of going over all files and patching them manually.
Moving files content to a separate package and just creating files with a simple require call to load them would make the committed files basically immutable when upgrading bedrock, but at the same time allow to override anything after the require call. Also, in case one overrides some options, it would be much simpler to distinguish between bedrock's config and own config.

I would be open to creating a new project which worked like this, but I highly doubt we'd change Bedrock itself to this model. It might even be possible to create the meta-package model and then generate the Bedrock boilerplate as it currently is, so we offer both alternatives.
I'll leave this issue open but it's not something we''re going to actively work on. We'd be happy to help out or discuss more if people are interesting in driving this forward.


SFTP Text Editor : Scrolling Improvement

Feature description
From #968 : I am a Logitech Combo Touch (iPad Air 5th) user and I cannot scroll correctly using the track pad while I’m in a file. Maybe it’s just a Combo Touch issue, but if it is not, I would greatly appreciate being able to scroll as usual. I’m using my iPad as a desktop computer too, and having this issue prevents me from using the editor in my external monitor (since I need to scroll using my fingers).

trackpad scroll not working
by Özlü10 – Sep 24, 2023
Hello, I cannot scroll up or down with the trackpad any conf file I open in the text editor. It is difficult with keyboard arrow keys. Is there a method for this?

Now available inside the latest beta release : https://testflight.apple.com/join/QSrBK59z


Adjust gitignore for PHPUnit 10.x

Since PHPUnit now uses a folder to store results in the cache, we should put it in .gitignore file I guess.

Thanks!


Use testnet blocks in the unit tests

At the moment, zebra-test only has mainnet test vectors.
Let's add some testnet blocks to zebra-test, and use them in the tests:

[x] Add testnet blocks to zebra-test
[ ] Update zebra-chain tests
[ ] Update zebra-state tests
[ ] Update zebra-consensus tests

Let's use a different PR for each crate where we update the tests.
It might be helpful to have utility functions that:

return the genesis block data, based on the network,
return all the test vector block data for a network
return all the test vector block data, regardless of the network

It might also be helpful to re-write some of our tests to take a Network enum parameter.

@oxarbitrage you might be interested in doing this ticket.

Will take it, thanks @teor2345

No-one is working on this ticket at the moment

These tests either got fixed, or they are obsolete.


Leafy::Rack::Logger - introduce rack middleware to load logger

Sets rack.logger so that other middleware (or frameworks like Sinatra) use leafy.

+1

+1


IO Abstraction: Introducing PathId & FileSystem (Phase 1)

IO Abstraction: Introducing PathId & FileSystem (Phase 1)
NOTE: This is only the first phase of the large goal of IO abstraction.
Big picture goal is to abstract IO operations out of Surelog and into a class implementation that can be overriden by client application. This facilitates implementation of other more extensive features (like support for UNC paths, portale cache, multi-source root directories, cache archives, etc). Adding those directly to Surelog is not ideal since in many cases this features pull in other thrid-party dependecnies that might not have the same licensing terms as Surelog (and so leave it to the client/application to decide).
Introducing two new classes - PathId & FileSystem
PathId - New class parallel to SymbolId that represent path-like objects for IO operations. Each instance can represent a directory or a file but the internal representation doesn't necessarily have to be a path. For instance, in case of compressed archive of sources, it can be a string representation of the archive + the offset. The only enforcement is that the representation needs to be printable i.e. should be convertible to a string (since thee representation is stored in SymbolTable). For the advanced users. this limitation can very easily be overcome and is left as an exercise.
FileSystem - This reroutes access to native file system or in special advanced cases can restrict access to the file system. All operations of PathId are meant to be routed thru' this class. This commit contains only the bare-bones of the implementation (to keep the rest of the change review-able). Follow up commit will add the real meat to this implementation.
Most of this change is about switching from SymbolId to use of PathId where applicable. Some specific ones that may be of interest to the reviewer.

Restrict use of std::filesystem to minimal scope (functions where possible). Do NOT pass std::filesystem::path across function boundaries. Use PathId instead.
Do NOT cache unpinned strings, especially the ones that represent paths. Add them to the SymbolTable and resolve it on restore.
PreprocessFile::m_fileId used to represent both a file path (when processing a file) or a macro name (when processing a macro). This was a problem since now the path needs to be represented using PathId but the macro name is represented using SymbolId. So, added two independent variables PreprocessFile::m_macroId & PreprocessFile::m_fileId.

There are absolutely no unit-tests that verify the new path-ID behavior, nor are there any extension to existing unit tests to verify corner cases.
Please for the next itereration, add unit also provide unit tests.

To be honest, this isn't one night effort. This was a group effort from over three months. We did a number of design iterations for deciding how we wanted to implement some of the requested features in our tool. The change was organic but the effort paid off. I am cherry-picking from a much larger change in an effort to get this back into public repository.
Frankly, I thought that's what this change was - a big text change and doesn't change anything in terms of logic. No test case broke and no test log really change in any significant meaningful manner. All this change was doing is introducing PathId class in the codebase and fixing all the fallouts from it.

PathId should start out as a no-op: have a typedef SymboldID to PathId, then change everything that needs to be a path from SymbolId to Pathid. Huge text change, but easy to review, no actual change.

That approach wouldn't have caught all the places that needed attention. I did do a few PR before this one for the changes that I could easily pull out from the larger effort. But breaking this into any smaller would have meant redoing (and verifying) a lot of work that was already completed.

But that is how code reviews and pull requests work.
Sure, you might not know beforehand what changes, that is why you work on a full change first until you're happy with it. The work then to make it reviewable is to break it up into the parts.
So now that you know what parts need to change to PathId, you then can retroactively do a change where everything is text-changed but made a typedef. etc.
Find all the changes independent from the rest, but that you also need for everything coming together, that can have their own review. Such as the const std::string& to std::string return value.
Yes, it requires a little bit more work to prepare a pull request, but that way it is not just a code-dump, but a well thought-out sequence of design decisions that the reviewers can follow.
I usually start out with the big local change (let's call it the creative phase), but then for review I re-do the exact same changes but break them out into separate commits.
That process often discovers that there are things that I don't have to change anymore.
Yes, it might take an hour of work, but it also introduces clarity and it is needed to convey ideas to fellow engineers.
This code review contains 116 changed files! With a mix of functionality addition, text changes, return value changes...
That many files should only really be with no-op starting with a typedef (such as SymbolId -> FileId where needed), or changing a single return value type throughout and have that an easy-to-review thing. So, large changes should only be text changes. Sometimes it requires a little 'dance': do a bulk change of something, then do some functionality change, do a bulk-change of some things turned back. And that is ok.
Any functionality change should be as minimal as possible (a few files and all the corresponding unit tests). Followed by a separate PR or at least commit that wires it up.

DesignComponent: change return value of name() from const std::string& to std::string can be a separate PR. In particular it would be then easy to discuss why this is not std::string_view and work towards what it is

And I wouldn't have known that such a change would be needed unless I had the PathId change in place.

That is the point: you first develop things and find out what all is needed. That is for sure.
But that is not the pull request. It is your responsibility to then break these up into independent, coherent changes before sending them as review. It also gives you another chance to reflect on why each change is needed (sometimes some change needed earlier in a larger effort turns out to not be needed anymore).

All that said, I am happy to iterate on specific PR if you feel that needs more work and needs to be broken up. Unfortunately. given time constraints, it might not always be possible but will make best effort.

Please do. I am not saying that it is simple. And often it requires to re-do the change manually into multiple commits.
The burden  you put on Alain, me or others who have to review it is much higher; so you're transferring your time constraint to multiple times that effort to the reviewers. You see that Alain often just gives up on the review and merges, hoping for the best.


jni .so file doesn't work

I'm trying to build the Java port of cld on centos 64-bit , using Virtualbox.
I followed your 'README.md' and Setting was finished.
i made new java project and i move 'cld/ports/java/java/src' to new '/src'.
but it doesn't work.
error is
Exception in thread "main" java.lang.UnsatisfiedLinkError:  com.mzsanford.cld.CompactLanguageDetector.detectLanguageDetails(Ljava/lang/String;ZZZZLjava/lang/String;)Lcom/mzsanford/cld/LanguageDetectionResult;     at com.mzsanford.cld.CompactLanguageDetector.detectLanguageDetails(Native Method)     at com.mzsanford.cld.CompactLanguageDetector.detect(CompactLanguageDetector.java:23)     at com.mzsanford.cld.CompactLanguageDetector.main(CompactLanguageDetector.java:41)
what should i do?

Saddly I am having the same issue.. It does not appear to matter what way I try I cannot get past this with a modern Operating System (Ubuntu 17) and newer Java OpenJDK8... Java 8 appears to have changed the location of the jni header files so you have to symlink them into the includes folder to even get the Java Pom to compile...

I have two Dockerfiles in the tests directory that build the Java port for OpenJDK and the Oracle JDK respectively. Try out docker build -t test/cld:centos6-openjdk -f tests/Dockerfile.centos6.openjdk . and let me know if that works for you … tests/Dockerfile.centos6.openjdk may contain whatever is missing from the build steps. Let me know what CentOS version and I can create another Dockerfile to try and replicate the error.


Fix deadlinks (AEGHB-741)

Either the project link changed or the server is down and the links aren't dead, sorry if it is the latter

This is confusing. The existing documentation refers to the esp_now API, but this repo is specifically an extension called espnow that reimplements esp_now. In either case, there doesn't seem to be any documentation hosted for this extension.


encryption: rewrite migration loop

Requires https://github.com/openshift/cluster-kube-apiserver-operator/pull/591.

don't set progressing condition when waiting
simplify migration loop without tracker
iteratively set resource annotation on secrets in order to recover from issues in one resource without repeating already migrated resources

/lgtm


Jenkins based build pipelines

Support for

[ ] java 11
[ ] java 13
[ ] java 14
[ ] native-image integration tests (Linux and Mac)

@romain-grecourt please add tracking check boxes to the issue

done.


Clean up rspec output

From @benjaminwood on April 9, 2018 23:21
There are a handful of ruby warning and puts messages displayed when running the rspec suite. This noise slows the development cycle.
Clean up rspec output so that only dots are displayed when specs are run.
Copied from original issue: hintmedia/rigse#3

Closed with #569


HIVE-27077: Upgrade to Antlr4

What changes were proposed in this pull request?
new module to host antlr4 based hive grammar
Why are the changes needed?
to phase out obsolete antlr3 based grammar
Does this PR introduce any user-facing change?
no
How was this patch tested?
build

@zabetak can you recommend any reviewer?

@mlorek Thanks for the PR. I don't think the PR can go in as it is right now. We cannot maintain two different grammars for v3 and v4 and as it is right now the v4 proposal has zero test coverage.
Are you planning to create follow-up tasks? What's your final goal?

@mlorek Thanks for the PR. I don't think the PR can go in as it is right now. We cannot maintain two different grammars for v3 and v4 and as it is right now the v4 proposal has zero test coverage.
Are you planning to create follow-up tasks? What's your final goal?

my plan was to implement new parser that uses antlr 4.
to start that work we still need antlr4 grammar and a new module, and I am happy to maintain it

@mlorek Can you please send an email to dev@hive with a concrete proposal of what you are trying to achieve. From my perspective it is still not completely clear what's the end goal and how we are going to move towards it.
Some quick questions from the top of my mind:

Is the idea to keep both v3 and v4 parsers?
Are the parers gonna be functionally equivalent?
How are we gonna test the new parser?
Which parser will be used in tests?
What are the advantages of having/moving to v4?
Are there any disadvantages?

Sorry for dumb question but where do we use antlr? It is in the query analyzer or in the parser?
Also what is the purpose of this library here?  (I'm not familiar with that and I'm asking because I'm curious :) )
Does this change introduce any breaking change? As I see from the antlr page it is 20% faster the 4 then the previous which is nice. Also in the hive 4 (4.1?) we are able to introduce if it won't introduce breaking change.
But It would be great to have an understating of the risks and motivation.

Antlr3 has been lost support long long ago. It will be great to upgrade to Antlr4. Antrl4 grammar is more simple and cleaner than Antlr3.
But i think it is not easy to do this, there is maybe some Incompatibilities need to be fixed.
Please see this ticket: https://issues.apache.org/jira/browse/HIVE-23177
@mlorek Could you please give more feadback? Thanks.

@kasakrisz haven't we already upgraded to ANTLR 4?

@deniskuzZ
AFAIK Hive uses antlr in 3 cases:

Sql query parser - antlr 3
HPL/SQL parser - antlr 4
Filter expression parser when pulling partition metadata via hms api - this was recently upgraded to antlr 4

The pre-commit tests have run 9 times so far for this PR while its context and purpose remain unclear. I am closing this down to avoid wasting more cloud resources. Let's use the respective HIVE-27077 or dev@ list to reach some consensus before re-opening this PR.


Steps To Reproduce
No response
Current Behaviour
See only my personal repositories
Expected Behaviour
See all the repositories that connect to my account

Seems like this issue is about a specific extension, not the API. Would you mind opening a new issue using the correct template so that the authors of the extension are properly aware of it?

btw, seems related to https://github.com/raycast/extensions/issues/10586


build: sign Tetragon container images

Implement container image signing using cosign in build images workflows. Leveraging image signing gives users confidence that the container images they got from the container registry were the trusted code that the maintainer built and published. This is part of efforts to improve the security posture of the Cilium family’s open source projects.
Signed-off-by: Sandipan Panda<EMAIL_ADDRESS>

Could we add something like https://github.com/cilium/cilium/blob/0c21fc324b5c1cd4779acbd5559f1a9c6568ef5f/Documentation/configuration/verify-image-signatures.rst to the Tetragon README?

Yes, definitely. On it! :rocket:


Chapter 4. Set Role problem

When set the role with hasRole("ROLE_USER") as the book said
It got

java.lang.IllegalArgumentException: role should not start with 'ROLE_' since it is automatically inserted.

I changed it to
hasRole("USER")
and
@Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return Arrays.asList(new SimpleGrantedAuthority("USER"));
    }

It can get access to "/login" and "/register" but got forbidden of "/design" even when I already successful login.

did you get the understanding of why this problem appeared? got same issue, too

The solution:
In the getAuthorities() of the User.java class, do not change "ROLE_USER" to "USER".
Expanation:
When you call method hasRole("ROLE_USER"), Spring Security automatically prefixes roles with "ROLE_", hence the exception. This is resolved by removing the "ROLE_" prefix in the hasRole() invocation. However, do not change the "ROLE_USER" in the getAuthorities() method in the User.java to "USER", this will cause the HTTP 403 error.
This is because when the application starts, if you look at the logs (enable spring security logging by adding logging.level.org.springframework.security=debug to application.properties), you will see a log entry "Adding web access control expression [hasRole('ROLE_USER')] for Ant [pattern='/design'], this implies that User must have "ROLE_USER" to access the /design path. By changing the getAuthorities() to "USER", created users will have authority of "USER" not "ROLE_USER" that Spring Security has configured for that path.
Another solution will be to change the "ROLE_USER" in the getAuthorities() method to "USER",  and make a call to hasAuthority("USER") instead of hasRole("USER").
Hope this helps somebody!!

I also observed that after completing the design Taco form and submitting it to go to /orders, I get HTTP 403 error. I fixed it by

the antMatchers("/design", "/orders") should be changed to antMatchers("/design", "/orders/**"). This is because the call to display the order is /orders/current.
add the csrf token hidden field () to your design and order form. This helps the Spring Security to validate csrf token when you submit the form


Closes #23 Implement derive_param_confirmed_resp()

Thank you for your Pull Request! We have developed this task checklist from the Development Process Guide to help with the final steps of the process. Completing the below tasks helps to ensure our reviewers can maximize their time on your code as well as making sure the admiral codebase remains robust and consistent.
Please check off each taskbox as an acknowledgment that you completed the task or check off that it is not relevant to your Pull Request. This checklist is part of the Github Action workflows and the Pull Request will not be merged into the devel branch until you have checked off each task.

[x] Code is formatted according to the tidyverse style guide
[x] Updated relevant unit tests or have written new unit tests - See Unit Test Guide
[x] If you removed/replaced any function and/or function parameters, did you fully follow the deprecation guidance?
[x] Update to all relevant roxygen headers and examples
[x] Run devtools::document() so all .Rd files in the man folder and the NAMESPACE file in the project root are updated appropriately
[x] Address any updates needed for vignettes and/or templates
[x] Update NEWS.md
[x] Build admiral site pkgdown::build_site() and check that all affected examples are displayed correctly and that all new functions occur on the "Reference" page.
[x] Address or fix all lintr warnings and errors - lintr::lint_package()
[x] Run R CMD check locally and address all errors and warnings - devtools::check()
[x] Link the issue so that it closes after successful merging.
[x] Address all merge conflicts and resolve appropriately
[x] Pat yourself on the back for a job well done!  Much love to your accomplishment!

@amitjaingsk please see https://github.com/pharmaverse/admiralonco/pull/35 for the "function which will give actual confirmed BOR value like CR,PR etc"

@amitjaingsk - please check if your comments are resolved now and we can hopefully close this one out and merge?


Fixed wrong implementation of Singleton Pattern

Singleton pattern was functional only for new instances using Singleton::getInstance().
This PR is fixing the cloning:
$obj1 = Singleton::getInstance();
$obj2 = clone $obj1;

and serialize/unserialization the singleton object.
$obj1 = Singleton::getInstance();
$serialized = serialize($obj1);
$obj2 = unserialize($serialized);

Having protected/private __wakeup() method will output a warning but script will continue and will provide a new instance of the first object. Throwing an exception on __clone and __wakeup is much safer. Making them final will prevent overwriting if class is extended.

Looks good to me

+1

To me too, merged


What strategie for binance and which Currencies?? THX!

Note: this is the technical bug tracker, please use other platforms for getting support and starting a (non technical) discussion. See the getting help page for details.
I'm submitting a ...
[ ] bug report
[ ] question about the decisions made in the repository
Action taken (what you did)
Expected result (what you hoped would happen)
Actual result (unexpected outcome)
Other information (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, etc)

This is the bug tracker for the code behind Gekko. Please see this page for where to look for help: https://gekko.wizb.it/docs/introduction/getting_help.html


Search for short product names

Description:
If you have Products with short names like:

AB 25
AB 50 PLUS
AB 75

AB 50 PLUS is not found when entering "AB 50". The other Products are found correctly. The third term in the name destroys the search for this product.
Environment:

Shopware <IP_ADDRESS>

Steps to reproduce:

Create the following Products: "AB 25", "AB 50 PLUS"
Minimal search term length 2
Search for "AB 50"

Expected result:

Find "AB 50 PLUS"

Actual result:

You only find "AB 25"

[public] Automated response: This issue is linked to the internal issue https://shopware.atlassian.net/browse/NEXT-34359.
[created from NEXT-34359, comment 485902]

[public] Hello,
Within our company roadmap and work capacity, we try to address each bug or improvement request but admit that not each one will be resolved. To continue our culture of honesty and openness, we are closing this issue to focus on our roadmap on behalf of all Shopware users.
If you feel like this issue is still impacting you, please create a new issue and let us know. Thank you again for your valuable feedback.
[created from NEXT-34359, comment 501210]


Issue #168, fixes issues in enhancement #156 that introduced two syntax ...

...bugs that crashes chef runs with the error "NameError: No resource, method, or local variable named returns' forChef::Provider::IisPool"

Hi. I am an automated pull request bot named Curry. There are commits in this pull request whose authors are not yet authorized to contribute to Chef Software, Inc. projects or are using a non-GitHub verified email address. To become authorized to contribute, you will need to sign the Contributor License Agreement (CLA) as an individual or on behalf of your company. You can read more on Chef's blog.
Non-GitHub Verified Committers
There are 1 commit author(s) whose commits are authored by a non-GitHub verified email address. Chef will have to manually verify that they are authorized to contribute.
Please sign the CLA here.


(#48) Begin work of removing stale computers from CCM

This commit lays the ground work for a mechanism to remove stale machines from the CCM database
While this is scaffolded out, design decisions may yet need to be made.

@steviecoaster is this still required based on the work that went out in CCM 0.10.0?


setSchedulerLocale & localeDayjs.locale not working

Checklist

[X] I've verified that I'm running react-big-schedule version 4.2.0 or higher

Describe the bug
The localization of the date items are not working.
Reproduction Link/Code
I have tried this configurations:
import * as dayjsLocale from 'dayjs/locale/nl';
schedulerData.setSchedulerLocale(dayjsLocale);

and
schedulerData.localeDayjs.locale('nl_NL');
schedulerData.setSchedulerLocale('nl_NL');

and
schedulerData.localeDayjs.locale('nl');
schedulerData.setSchedulerLocale('nl');

Nothing happend, also no error's. Also tried to use the br-pt local, but also not changing.
Steps to reproduce
See above.
Operating System
Mac
Browser
Chromium
React version
18.2
react-big-schedule version
4.2.1
Additional Information
No response

Which date are you checking?

There are two locale one is dayjs and second one is antd

Use antd locale also

@jovana what should it look like as I tried just runing days local and consoling it

language is same I think

For NL we always have "day month year" format.
28 June 2023 or 28-06-2023
Not sure why this does not change if I setup to scheduler to local nl?

no it will not update the format it will update the language thats it

use  schedulerData.setCalendarPopoverLocale(antdLocale); this for calender and check

@jovana  We haven't heard from you for a week, so we are closing this issue. If you still have any doubts, you can reopen the issue. Thank you once again for using our library.

use schedulerData.setCalendarPopoverLocale(antdLocale); this for calender and check

I'm very sorry for the late response, I was out for a while. But I have picked this up and it has been sorted out. The below code is working as I expect.
import * as dayjsLocale from 'dayjs/locale/nl';
schedulerData.setSchedulerLocale(dayjsLocale);

Note: I have to remove the localeDayjs setting from the Element. Probably it's conflicting?
Also, need to add this options to have the correct date / time format in the headers:
    nonAgendaDayCellHeaderFormat: 'D-M|HH:mm',
    nonAgendaOtherCellHeaderFormat: 'D-M',

Anyway, thanks for helping me out.

Translated into Dutch, it will like look this.
Week view:

Day view:

Thank you


⚠ Bofrost.fr has degraded performance

In 1cbd885, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 987 ms

Resolved: Bofrost.fr performance has improved in 9f1bce6 after 6 minutes.


Incorrect explorer maps destination

Just a small thing, explorer map destinations at least for me do not accept "minecraft:mineshaft" but instead "mineshaft".

Okay the problem was that an invalid destination doesn't show an error in the log, it just defaults to buried treasure.


logistic  GLM?

Thanks for your good job, But I noticed that Logistic GLM is absence, which mentions in the README.md, and family.py does not contain class Logisic(Family) which is parallel with class Poisson(family)、Gaussian(family).
Looking  forward  for your reply!

I think it's sufficient to use family=Binomial() to get a logistic regression. (notebook)

Thanks a lot.


Add contributors to package.json

Hey everyone,
I wanted to gauge your interest in getting some acknowledgment for your contributions on OrbitDB. The js-ipfs project includes everyone who ever contributed in their package.json.
This gives recognition for the contributions made by people over time, which I like a lot. The only down sides I can see are: it requires making sure the list of contributors is up to date (not a blocker to do it imo) and as everyone's emails are included, some people may not appreciate having their email "published" and the fact that we've had contributors "outside" repo contributions (issues, IRC discussions, etc) that I feel should be credited just the same for the value they've added to the project (and this is hard to make sure that everyone's included).
I would be more than happy to start listing everyone in the package.json. I wanted to ask how do you feel about it? Or if you have alternative places where we can give credit to people?
cc @dignifiedquire @prabodhmeshram @ricardojmendez @shamb0t @RichardLitt @Alex-Werner @Kubuxu @nightwolfz @atfornes (I'm sorry if I missed anyone)

I think it is a great practice. Both js-ipfs and karma, where I have used and seen this practice first use a simple mechanism to make this work.
Part of the release scripts is using git log to gather all contributors of all time, and simply put the names and emails into the package.json. This means it is always up to date after a new release and little time has to be spent worrying or asking individuals to add them to the package.json.
See https://github.com/ipfs/aegir/blob/master/src/release/contributors.js for how aegir does it currently.
The only drawback to this is, that if people contribute to discussions only, they are not recognised with this system.
On 23. Dec 2017, 12:08 +0100, Haad<EMAIL_ADDRESS>wrote:

Hey everyone,
I wanted to gauge your interest in getting some acknowledgment for your contributions on OrbitDB. The js-ipfs project includes everyone who ever contributed in their package.json.
This gives recognition for the contributions made by people over time, which I like a lot. The only down sides I can see are: it requires making sure the list of contributors is up to date (not a blocker to do it imo) and as everyone's emails are included, some people may not appreciate having their email "published".
I would be more than happy to start listing everyone in the package.json. I wanted to ask how do you feel about it? Or if you have alternative places where we can give credit to people?
cc @dignifiedquire @prabodhmeshram @ricardojmendez @shamb0t @RichardLitt @Alex-Werner @Kubuxu @nightwolfz @atfornes (I'm sorry if I missed anyone)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

That's a nice touch, but not a deal-breaker for me if it doesn't happen.  :-)
I've often seen it done on the README or CHANGELOG, but that mostly works for sporadic contributions. Adding people to the package.json sounds like a good approach.

Adding to the package.json makes the most sense, to me. You can also add them to the README, or to the CONTRIBUTORS file. all-contributors is an interesting spec for doing this.
You can use name-your-contributors to get all of your contributors, including discussions, which solves @dignifiedquire's issue of only getting code combinations.
Updating using a post-commit script should be doable, too, so that it stays up to date.
If you do decide on a solution - you control here, and everyone who contributes should opt-out of these lists to make it easier for you (as opposed to opt-in) - let me know if you'd like help implementing it.

If you do decide on a solution - you control here, and everyone who contributes should opt-out of these lists to make it easier for you (as opposed to opt-in)

Sounds like a good idea. Could be specified on the Contribution Guidelines, that way people are aware.

By running:
$ name-your-contributors -u orbitdb -r orbit-db > contributors.json
$ cat contributors.json | jq '[ .[][].login | " - [@ \(.)](https://github.com/\(.))"]' | jq unique | jq -r .[] |

I was able to come up with a list of all contributors in this format:
 - [@ 5310](https://github.com/5310)

Is this a good format? Perhaps First Last <github url> is better
Should we be gathering emails, too? (I don't think so.)
I'm not sure how to set this up with CircleCI, but it should work fairly well with Travis. @haadcode do you know the manifest well enough to run that command above?


EKF: Fix bug allowing state initialisation to a bad GPS height

If GPS is being used as the primary height source (EKF2_HGT_MODE = 1) then the first 3D fix from the GPS is used to set the height origin. This can cause problems because these erarly estimates are inaccurate and can result in the EKF origin being out by 30m or more. The GPS height solution then improves and the large rapid change in measurement causes it to be rejected by the EKF until the height rejection timeout, resulting in a reset. The following figure shows the large innovations and the reset caused by this behaviour.

With this fix applied, replay of the same data shows the problem to be fixed.

This fix requires that the same GPS quality check used to determine if GPs can be used for navigation are also required before it can be used as the primary height sensor. The _gps_hgt_faulty class variable has been renamed _gps_hgt_intermittent to be consistent with its usage and unnecessary resets of this variable have been removed.
Flight testing with EKF2_HGT_MODE = 1 is required

Flight test with EKF2_HGT_MODE = 0 (use Baro)

Same hardware and location tested with EKF2_HGT_MODE = 1 (use GPS). EKF switches from baro to GPS when GPS preflight checks pass:

Logically it makes sense - we shouldn't be using it for primary height if it isn't good enough for navigation. My only criticism is that I dislike solving continuous systems by adding discontinuities. Would it be possible to solve this by using an extremely large variance estimate on the initial GPS height? The EKF would then have a large variance on the height, which wouldn't have as much trouble adjusting to a rapidly changing height as the variance decreases.

We should also update the parameter description for EKF2_HGT_MODE to recommend turning on bit position index 3 in EKF2_GPS_CHECK if EKF2_HGT_MODE = 1 so that the vertical position accuracy metric check is enabled.

@jkflying Unfortunately it is the setting of the height datum that causes most of the the problems. Also the GPS solution can drift in the first 30 seconds at a rate that makes the EKF unable to distinguish between the GPS change in height offset and the IMU error.


Is there anyway to make standalone chainer application

Ok ,I made standalone software that uses chainer http://neuralstyler.com/

It looks ok to close it :)


Actually set tls.Config.PreferServerCipherSuites

It was set by default on the caddy-internal config object, and even
checked for conflicts, but it was never actually reflected on the
tls.Config.
This will have user-visible changes: a client that prefers, say, AES-CBC
but also supports AES-GCM would have used AES-CBC befor this, and will
use AES-GCM after.
This is desirable and important behavior, because if for example the
server wanted to support 3DES, but only if it was strictly necessary,
it would have had no way of doing so with PreferServerCipherSuites
false, as the client preference would have won.

Whoops. 😐 🌴
Could you do me one more quick favor and just add it to the test case in config_test.go? (I know that we need to greatly expand these tests but I want to at least start with the things that bit us.)

Nevermind, I want to work on these tests anyway. Merging now, as discussed on Slack. Thanks!!


Please invite me to the Recode-Hive GitHub Community Organization

Name
Khaja
Discord Username (if applicable)
No response
Additional Context
No response

Invitation sent to join the GitHub Organisation. Welcome to the community 🎉
Don't forget after accepting to make it public so it appears on your GitHub profile for everyone else to see. You can do this by finding your name in the GitHub organisation list and change the dropdown to public https://github.com/orgs/Recode-Hive/people


error occurred while compiling setk with kaldi & OpenBLAS

I patched kaldi/src/matrix/matrix-common.h in kaldi and followed the instruction:
mkdir build
cd build
export KALDI_ROOT=/kaldi/root/dir
export OPENBLAS_ROOT=/openblas/root/dir
cmake ..
make -j
then got this error below:
/usr/include/c++/5/bits/basic_string.h:5172:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&)
operator<<(basic_ostream<_CharT, _Traits>& __os,
^
/usr/include/c++/5/bits/basic_string.h:5172:5: note:   template argument deduction/substitution failed:
......./setk/include/beamformer.cc:174:50: note:   'kaldi::MessageLogger' is not derived from 'std::basic_ostream<_CharT, _Traits>'
<< std::imag(s) << ")" << std::endl;
^
include/CMakeFiles/setk.dir/build.make:182: recipe for target 'include/CMakeFiles/setk.dir/beamformer.cc.o' failed
make[2]: *** [include/CMakeFiles/setk.dir/beamformer.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:85: recipe for target 'include/CMakeFiles/setk.dir/all' failed
make[1]: *** [include/CMakeFiles/setk.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Can somebody help,plz ?
THX.

I fix it now.

I fix it now.

thanks for the reply,
but I encounter another err:
Scanning dependencies of target setk
[  2%] Building CXX object include/CMakeFiles/setk.dir/complex-vector.cc.o
[ 13%] Building CXX object include/CMakeFiles/setk.dir/complex-matrix.cc.o
[ 13%] Building CXX object include/CMakeFiles/setk.dir/rir-generator.cc.o
[ 11%] Building CXX object include/CMakeFiles/setk.dir/stft.cc.o
[ 13%] Building CXX object include/CMakeFiles/setk.dir/srp-phat.cc.o
[ 13%] Building CXX object include/CMakeFiles/setk.dir/beamformer.cc.o
[ 16%] Linking CXX shared library ../../lib/libsetk.so
/usr/bin/ld: cannot find -lkaldi-base
/usr/bin/ld: cannot find -lkaldi-util
/usr/bin/ld: cannot find -lkaldi-matrix
/usr/bin/ld: cannot find -lkaldi-feat
/usr/bin/ld: cannot find -lkaldi-transform
collect2: error: ld returned 1 exit status
include/CMakeFiles/setk.dir/build.make:224: recipe for target '../lib/libsetk.so' failed
make[2]: *** [../lib/libsetk.so] Error 1
CMakeFiles/Makefile2:85: recipe for target 'include/CMakeFiles/setk.dir/all' failed
make[1]: *** [include/CMakeFiles/setk.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Seems your compile of Kaldi do not produces dynamic library in src/lib. Use ./configure --shared ... instead.

Seems your compile of Kaldi do not produces dynamic library in src/lib. Use ./configure --shared ... instead.

It seems that I forgot to build Kaldi shared libraries.
After that, it successfully compiled !
Thanks for the help !


Remove symmetric basex

This PR is related to #65 and #89.
Briefly, the PyAbel codebase has a version of BASEX (call it symmetric) which accepts raw data with up/down symmetry (think of the letter B) and another version (asymmetric) which accepts raw data without this symmetry (think of the letter P). In the BASEX algorithm, raw data with up/down symmetry is essentially folded in half (i.e., the top and bottom halves are averaged), while raw data without up/down symmetry skips this step. Therefore, an equivalent result can be obtained by simply keeping the asymmetric code, and introducing a function to average the top and bottom halves when the user specifies that the raw data has up/down (or vertical) symmetry. This has the benefit of simplifying the codebase.
In this PR, I've added a function to do the up/down averaging (I couldn't find an equivalent ready-made Numpy or Scipy function), and added a condition to the BASEX code which invokes this function when the vertical_symmetry=True parameter is passed to the basex function call. The rest is mostly cleanup of basex.py and test_basex.py. All code changes are on the backend; there should not be any UX changes.

Thanks for doing this @DhrubajyotiDas!
I think that we already have the up/down averaging in the tools.symmetry.get_image_quadrants function. Are you planning (in this PR) to also modify basex to just accept a single quadrant?

@DanHickstein I just pushed #95 for the single quadrant code.

I think that we already have the up/down averaging in the tools.symmetry.get_image_quadrants function.

I hadn't realized that. I'll look to see if it is does what I intended with updown_symmetry_rawdata(), and if so, I'll modify this PR to reflect that.
If you think it's better to merge this first and file a separate PR for that, I'm okay with that as well, since I am fairly sure the code as-is is definitely functional (if a bit redundant).

@DhrubajyotiDas  This looks good, and would definitely simplify things.
So now there are this PR and PR #94  which modify pretty much the same basex.py file. Should we merge one and then look at the other?


merge package template from Kronos-Tools/npm-package-template

Updated standard to latest version

Current coverage is 87.77% (diff: 100%)

Merging #67 into master will not change coverage

@@             master        #67   diff @@
==========================================
  Files             2          2
  Lines            90         90
  Methods           8          8
  Messages          0          0
  Branches         23         23
==========================================
  Hits             79         79
  Misses           11         11
  Partials          0          0

Powered by Codecov. Last update 0572949...655c3fb


Oops! An Error Occurred The server returned a "405 Method Not Allowed".

'Ey up --
First up - absolutely love ThronesDB.
I'm trying to complete a deck, but I can't for the life of me add new cards and then save them.  When I attempt this, a blank screen appears, and if I refresh I am greeted with the above message.  Any thoughts?
Thanks a mil,
Bettsy

Hi Bettsy.
We just fixed an issue regarding the saving of decks. Can you please try again?

Hi there -
Sorted!
Thanks a mil,
Bettsy


Adding postgres pipeline agent subnet access to keyvault

JIRA link (if applicable)
Change description
Does this PR introduce a breaking change? (check one with "x")
[ ] Yes
[ ] No

failed, probably due to terraform version so updating version


reduce_limit=false is needed when using a local CouchDB

I'm using a local CouchDB on my mac and openwhisk running in vagrant.
wsk list gives:
[error] [<0.6152.0>] httpd 500 error response:
 {"error":"reduce_overflow_error","reason":"Reduce output must shrink more rapidly: Current output: '[[{\"namespace\":\"whisk.system\",\"name\":\"slack\",\"version\":\"0.0.1\",\"publish\":true,\"annotations\":[{\"key\":'... (first 100 of 578 bytes)"}

After changing "reduce_limit" to "false" in the config as done in issue #1 by the script, wsk list works as expected.

Linked to required step from readme file.


added deny public network access

updated azure sql docs page: private-endpoint-overview.md to include notes for the deny public network access, updated, and included steps to deny public network access.

@fgarofalo56 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#label:"aq-pr-triaged"

#sign-off

@fgarofalo56: I'm sorry - only the author of this article, @rohitnayakmsft, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

@rohitnayakmsft Could you review the proposed update to your article? Thanks!

#sign-off

@ktoliver : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@ktoliver : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Update Links

See https://github.com/Senzing/template-repository/issues/40
docker-compose-air-gapper/README.md:    1. [docker-compose](https://github.com/Senzing/knowledge-base/blob/main/HOWTO/install-docker-compose.md)
docker-compose-air-gapper/README.md:    1. [docker-compose](https://github.com/Senzing/knowledge-base/blob/main/HOWTO/install-docker-compose.md)
docker-compose-air-gapper/README.md:    1. [docker](https://github.com/Senzing/knowledge-base/blob/main/HOWTO/install-docker.md)
docker-compose-air-gapper/README.md:    1. [docker](https://github.com/Senzing/knowledge-base/blob/main/HOWTO/install-docker.md)
docker-compose-air-gapper/README.md:    1. [docker](https://github.com/Senzing/knowledge-base/blob/main/HOWTO/install-docker.md)
docker-compose-air-gapper/README.md:    1. [git](https://github.com/Senzing/knowledge-base/blob/main/HOWTO/install-git.md)
docker-compose-air-gapper/README.md:    1. [make](https://github.com/Senzing/knowledge-base/blob/main/HOWTO/install-make.md)
docker-compose-air-gapper/README.md:    1. Using [pip3](https://github.com/Senzing/knowledge-base/blob/main/HOWTO/install-pip3.md),
docker-compose-air-gapper/README.md:1. Have [python 3](https://github.com/Senzing/knowledge-base/blob/main/HOWTO/install-python-3.md) installed.

Pull requests:

https://github.com/Senzing/docker-compose-air-gapper/pull/45


Auto downgrade detection is currently broken

The website we're parsing doesn't have the information anymore.
I've wrote to their support if it's possible to include the downgrade information into the API.

Their home page (https://truckersmp.com/) has the following information:

1.39 is not supported

TruckersMP does not support the latest game version of Euro Truck Simulator 2 and American Truck Simulator yet.

Unfortunately the size of the page is large (37 KiB). The "Server Status" page (https://truckersmp.com/status) is large (34 KiB) too.

The "Server Status" page (https://truckersmp.com/status) is large (34 KiB) too.

We don't need to download and parse the entire html:
#! /usr/bin/env python3

"""Check whether downgrading is needed."""

import urllib.request

# pylint: disable=too-few-public-methods
class URL:
    """URLs."""

    status = "https://truckersmp.com/status"

class TMPWebHTML:
    """Strings in TruckersMP web site."""

    downgrade_prefix = b"
TruckersMP does not support the latest game version of "
    h2_prefix = b"
"
    name_ats = b"American Truck Simulator"
    name_ets2 = b"Euro Truck Simulator 2"

def check_downgrade_needed():
    """Check whether downgrading is needed."""
    try:
        with urllib.request.urlopen(URL.status) as f_in:
            for line in f_in:
                if line.startswith(TMPWebHTML.downgrade_prefix):
                    games = line[len(TMPWebHTML.downgrade_prefix):]
                    if TMPWebHTML.name_ets2 in games:
                        if TMPWebHTML.name_ats in games:
                            return dict(ats=True, ets2=True)
                        return dict(ats=False, ets2=True)
                    return dict(ats=True, ets2=False)
                if line.startswith(TMPWebHTML.h2_prefix):
                    # no need to read further
                    # because no announcement after the first "h2" element
                    break
    except OSError as ex:
        print("Failed to get content of TruckersMP Status page: {}".format(ex))
    return dict(ats=False, ets2=False)

if __name__ == "__main__":
    downgrade_needed = check_downgrade_needed()
    print("ATS:{} ETS2:{}".format(downgrade_needed["ats"], downgrade_needed["ets2"]))

I've wrote to their support if it's possible to include the downgrade information into the API.

Including downgrade information into the API is on their to-do list. The wording wasn't the way we should expect this in the very near future but we should regularly check back again.


Add AnyIpsum v0.1.2

Adding a new cask

[✔] Checked there aren’t open pull requests for the same cask.
[✔] Checked there aren’t closed issues where that cask was already refused.
[✔] When naming the cask, followed the token reference.
[✔] Commit message includes cask’s name.
[✔] brew cask audit --download {{cask_file}} is error-free.
[✔] brew cask style --fix {{cask_file}} left no offenses.
[✔] brew cask install {{cask_file}} worked successfully.
[✔] brew cask uninstall {{cask_file}} worked successfully.

@vitorgalvao: appcast has been added.


Cluster

This is a really big PR - is it possible to split this into several PRs that individually solve a specific problem?


Cleanup

Placeholder for work to clean up primitive table and improve performance on conversion of types.  This will be rebased to the master after the leak match is merged.   Please ignore until then.

This one is going to take some time to untangle.  Remains on hold until the head catches up to leak.

mhm, now I've broken cygwin compilation. The compiler just returns 127 and no proper message. Do you know whats going on here @Thrameos?

Not to worry.  This was a low priority clean up patch.  I will clean up the errors once I get everything back to head.  We don't need this one for a release.

Making some progress on this one.  Need to finish some of the clean up work before it is ready.  It is now properly rebased to the current master.

The failure makes no sense at all.  If seems more like something changing with the appveyor environment rather than a change in our code.   I will need to track the problem down.  It does not replicate on my system.

This branch is currently dead due to a second refactorization attempt.


[PowerToys Run] Vertical scrollbar for results list

Summary of the Pull Request
This PR enables the vertical scrollbar with styling that tries to mimic the UWP scrollbar - including theme support for Light, Dark and High Contrast.

This PR replaces #4165.
Known issues:
The UWP scrollbar in 'minimized' mode has a CornerRadius of 2 that transforms into 0. I don't think it's really a big deal, and would require additional animation logic that I think we want to avoid.
References
The template overrides are based on the official WPF documentation: https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/scrollbar-styles-and-templates

just ran it, seems solid!


refactor(api): move CLI-specific API contract into this repo, add openapi as submodule

This makes iterating on changes to the CLI contract slightly easier, but the main motivation is to establish a slightly better separation of concerns between the repos. openapi is meant to be the source-of-truth for our server-side APIs, so external clients/docs can point to a single place. The fact that the CLI has a separate YML contract is more of an implementation detail of the codegen system, so tracking it alongside the server-side contracts hasn't felt "right" to me.
Bundling openapi as a git submodule allows us to link the common YML components from the local filesystem without maintaining a true copy of everything in influx-cli.
See influxdata/openapi#64 for the effects of removing the YMLs from that repo.

A couple high-level comments/questions which are mostly speculative ....@glinton might have thoughts on the future of the openapi repo regarding e2e testing in particular:

On the subject of using a git submodule, I could imagine a scenario where you might be modifying the spec in the submodule (which is actually the openapi repo) alongside working on the CLI in an isolated way. You might get everything working well with the CLI and the changes in the submodule, but then when you go to push the submodule changes to the openapi repo, you find that these changes break something somewhere else that you hadn't anticipated and you have to circle back around. An alternative to the submodule is to make a branch directly on the openapi repo, make your changes there & push them to a branch, and then update the generate-openapi.sh script to temporarily reference the commit on that branch while you work on the CLI. That's extremely clunky and not very appealing right now, but I'm thinking about a future where there might be e2e tests that run on branches in openapi to verify that changes to the contracts don't break any other consumers. If that were to come to pass, you would get faster feedback that the change you want to make for the contract consumed by the CLI is incompatible with other users.

I'm also curious how other consumers of the openapi repo get the job done. The only one I've seen directly is the ui repo, which references it by commit and pulls it in that way. Are any other consumers using a submodule? My thoughts above are probably already addressed by them if there are other consumers using it in that one.

I can see why having the CLI-specific overrides/customizations in the CLI repo makes sense...but also...that's going to make it more difficult for somebody editing the openapi repo directly to know if what they are doing is breaking the CLI. This is again where e2e testing that does not yet exist might come in to play: If somebody is editing a contract in openapi, and e2e test could show that it breaks the CLI. Then if the CLI overrides/customizations are in the openapi repo as well, they might be able to fix the overrides along with the contract changes. e2e testing would still show that the contract changes break the CLI if the cli-specific stuff is in the CLI repo...but then changes would need to be made to two separate repos in order to get the job done.

Agreed in general that without e2e tests we're at risk of unexpected breakages in both directions.
I think there are three separate design questions to answer:

Should influx-cli pin a specific version/commit of openapi, or pull from master?
Should CLI-specific API customizations live in openapi, or in influx-cli?
Should influx-cli pull common pieces from openapi as a git submodule, or as a download over HTTP?

For question 1, I hope everyone agrees that pinning a specific version/commit is the right move. IMO this insulates the CLI a bit from breaking changes made to openapi (though it'd still be nice for an e2e test to catch breaking changes early).
For question 2, I like hosting customizations in influx-cli because it feels like a better division of responsibilities at face value, and IMO it further insulates the CLI from any breaking changes made to openapi. I expect that in the long run the CLI will need to make very few changes to the core openapi repo, and instead most of the API-related changes will be to extend the cli.yml file to reference additional routes and schemas. If cli.yml is tracked in influx-cli we can add new routes without needing to bump the openapi commit we pull from, which gives us some breathing room in the off chance that a big breaking change is ever merged to master there.
Question 3 is a bit linked to question 2. If everything is in openapi, then a submodule is overkill. On the other hand, if some components are hosted in influx-cli then a submodule is an easy way to handle tracking & downloading all the component pieces of openapi. For now I like the submodule because it makes testing openapi changes easier, but in the long run I don't expect that'll be a major factor.
A future-looking point I can think of in favor of the submodule is that if we ever want to write automation that can flexibly check if a given openapi reference (commit, tag, or branch) is compatible with a given influx-cli reference, cd-ing into the submodule and checking out the reference is a lot cleaner than a sed command etc. to swap the commit referenced by a download script. That said, the counterpoints could be: a submodule will add a new layer of complexity to the git-flow for the repo, and if we did write a sed to automate swapping a commit reference it'd probably be stable enough that we don't need to care if it's messy.

Good points - no doubt on question 1, and for question 2 it's definitely helpful to think about the majority of the CLI-driven API changes being specific to the customizations rather than the underlying API definition, so it makes sense to have the customizations be in the CLI repo so the CLI can be iterated independently.
I don't have any fundamental issue with the submodule approach again considering the the CLI is probably not going to drive changes in the underlying API definition very often, and it seems like the workflow of how they will be used is sufficiently documented & automated with what you're proposing in this PR. It will be interesting to see how e2e testing turns out between different repos using openapi - maybe using submodules will end up being an advantage!