meson: set multiple output dirs in setup hook

Motivation for this change
Will allow us to build gdk_pixbuf using meson (#36312)
Closes: #32636
Things done
I built json-glib with this and the include directory was created correctly (did not need to be moved).

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

Success on x86_64-linux (full log)
Partial log (click to expand)
warning: no directories found matching 'syntax-highlighting'
warning: no files found matching 'authors.txt'
writing manifest file 'meson.egg-info/SOURCES.txt'
running build_ext

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
/nix/store/4m5wh4s5cxf2sa511ypw811jqd8g4d7z-meson-0.44.0

Success on x86_64-darwin (full log)
Partial log (click to expand)
warning: no directories found matching 'syntax-highlighting'
warning: no files found matching 'authors.txt'
writing manifest file 'meson.egg-info/SOURCES.txt'
running build_ext

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
/nix/store/346a91ghr7nc90mc9fahhya28ac9a52x-meson-0.44.0

Success on aarch64-linux (full log)
Partial log (click to expand)
warning: no directories found matching 'syntax-highlighting'
warning: no files found matching 'authors.txt'
writing manifest file 'meson.egg-info/SOURCES.txt'
running build_ext

----------------------------------------------------------------------
Ran 0 tests in 0.002s

OK
/nix/store/fxy7dv8ki54a6xs2k5c7frvr0404ji5n-meson-0.44.0

Rebasing onto master as it will be merged with GNOME 3.28.

Success on x86_64-linux (full log)
Attempted: meson
Partial log (click to expand)
warning: no directories found matching 'syntax-highlighting'
warning: no files found matching 'authors.txt'
writing manifest file 'meson.egg-info/SOURCES.txt'
running build_ext

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
/nix/store/1051n8g79i6dd6nw9z5rkn7xiw55761y-meson-0.44.0

Success on aarch64-linux (full log)
Attempted: meson
Partial log (click to expand)
warning: no directories found matching 'syntax-highlighting'
warning: no files found matching 'authors.txt'
writing manifest file 'meson.egg-info/SOURCES.txt'
running build_ext

----------------------------------------------------------------------
Ran 0 tests in 0.002s

OK
/nix/store/9vmdws64di028kjjb6zcfmbjcnzynnh7-meson-0.44.0

I'm afraid we have a general meson problem here; according to docs:

Installation options are all relative to the prefix, except [...adjustments not much relevant to us]

I wonder how this has been working so far? It feels like I'm missing something.  If not, maybe we could use relative paths like --libdir=../$hash-$pname-$version/lib but those would be a bit more difficult to code.
What brought me here: https://github.com/NixOS/nixpkgs/pull/65095 /cc @worldofpeace

Most packages use join_paths, which works. We are fixing issues when they occur and advocating for changing Meson expectations on related issues but we will need to step up offensive.

As long as they conform to meson docs, it seems a bit hard for me to argue that they should (also) work with absolute paths.

I've been having a hard time arguing this as well, ref the PR to gtk3 was closed


Reconsider the usage of cidr.MustParseCIDR in config.go

Looks good to me.
I question the use of cidr.MustParseCIDR causing a panic while the rest of error conditions in config.go perform a normal logged error and exit the application. But this isn't a change in your PR.

Makes sense :+1: perhaps as a follow up we can replace MustParseCIDR which something that returns an error rather than panicking (and move the v4 range check inside that function)
Originally posted by @jibi in https://github.com/cilium/cilium/issues/16646#issuecomment-869754087

Tracking this here, low priority but don't want to forget.


My Saves Component

[x] User can Save a Recipe
[x] User can Unsave a Recipe
[x] User can View All Saved Public Recipes
[x] User can View All Saved Private (Group) Recipes

When initially saving recipes from groupDetails view, the save button is rendered accordingly, but after closing the groupDetails modal, recipes that have been saved already no longer render the saved button.


No value present

Hello, I have many bug reports like this:

Nukkit Version: git-3571621

Java Version: Java HotSpot(TM) 64-Bit Server VM (1.8.0_251-b08)

Host Configuration:

Item
Value

Host OS
Linux-amd64 [4.15.0-88-generic]

Memory(RAM)
270.4 GB

Storage Size
475.3 GB

Storage Type
Disk 0:(avail=436.8 GB, total=475.3 GB)

CPU Type
UNKNOWN

CPU Core Count
24

Crashdump, Backtrace or Other Files
java.util.NoSuchElementException: No value present
	at java.util.Optional.get(Optional.java:135)
	at com.nbpe.blocktrack.BlockTrack.blockHistoryFormat(BlockTrack.java:173)
	at com.nbpe.blocktrack.BlockHistoryCommand.blockHistorySend(BlockHistoryCommand.java:38)
	at com.nbpe.listeners.async.AsyncBlockSend.onRun(AsyncBlockSend.java:22)
	at cn.nukkit.scheduler.AsyncTask.run(AsyncTask.java:23)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

What version of BlockTrack are you using?

Sorry for the delay, BE server version §bv1.16.0§r, is the latest master branch

This error sometimes appears, when you try to get the blockhistory of a block, that hasn't a history.


Merge performance tests, move comparison tests to separate repository

All Serializable related performance tests should be merged into develop and master.
Tests for comparing other frameworks against Serializable should be moved to a different repository, so that this one isn't cluttered.

This will also make sure that performance tests are run in each travis build, which should make it easier for us to spot regressions or improvements.

Serializable performance tests added in PR #98

New repo created here: https://github.com/nodes-ios/serializable-performance-comparison


Set upper bound on cellpose to 0.7.2

This is a fix for https://github.com/MouseLand/cellpose-napari/issues/21
It's a bummer that cellpose-napari installs fine from the napari plugin GUI, but then doesn't run because the current cellpose version isn't compatible.
By setting an upper bound, the plugin will work until a new version of the plugin can be developed to account for the breaking changes in current cellpose versions.

Thanks @psobolewskiPhD.   Since you’re already digging in to it, did you happen to see how hard it would be to just fix the import?  (It’s just a logger and I kinda imagine it could be a 1-2 line fix?). Maybe not

i think it might be more than just the logger, because in 0.7.2 (the newest version that works), I also get a warning:
19:17:07 WARNING cellprob_threshold and dist_threshold are being deprecated in a future release, use mask_threshold instead

I'll try and find some time to take a closer look, but this week is looking rather brutal.

@tlambert03
I guess I have a hard time letting things go 🤣
If you replace every from cellpose import logger (and similar)
with
import logging
logger = logging.getLogger(__name__)

Then the plugin works for the 2D sample. The 3D doesn't work due to
IndexError: index 2 is out of bounds for axis 1 with size 2
I think it may be because of the data shape:
viewer.layers[0].data.shape
Out[1]: (75, 2, 75, 75)

So that is ZCYX.

OK, I got the logger thing fixed so it prints. Will make a PR for that.
Then will make a PR for the sample images if I can figure that out.

Codecov Report

Merging #28 (3dccda7) into main (70a3581) will decrease coverage by 1.64%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #28      +/-   ##
==========================================
- Coverage   29.81%   28.16%   -1.65%
==========================================
  Files           3        3
  Lines         218      213       -5
==========================================
- Hits           65       60       -5
  Misses        153      153

Impacted Files
Coverage Δ

cellpose_napari/_dock_widget.py
16.20% <0.00%> (-1.84%)
:arrow_down:

cellpose_napari/_sample_data.py
96.42% <0.00%> (-0.13%)
:arrow_down:

Continue to review full report at Codecov.

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


Style: Update StyleCop rules

PR Summary
Update StyleCop rules, including the individual rules and project-scope rules.
With the updated rules, 26632 CodeFactor issues are fixed/ignored.
PR Checklist

[x] PR has a meaningful title

Use the present tense and imperative mood when describing your changes

[x] Summarized changes
[x] Change is not breaking
[ ] Make sure all .h, .cpp, .cs, .ps1 and .psm1 files have the correct copyright header
[x] This PR is ready to merge and is not Work in Progress.

If the PR is work in progress, please add the prefix WIP: to the beginning of the title and remove the prefix when the PR is ready.

User-facing changes

[x] Not Applicable
OR
[ ] User-facing Documentation needed

[ ] Issue filed - Issue link:

Testing - New and feature

[x] Not Applicable or can only be tested interactively
OR
[ ] Make sure you've added a new test if existing tests do not effectively test the code changed

[ ] Add [feature] if the change is significant or affects feature tests

@SteveL-MSFT @daxian-dbw  Today we have only two rule under question. Can we get conclusion and merge?

@iSazonov, @daxian-dbw is on vacation for one more week, I think we can wait until he gets back.  Don't worry if this PR is marked stale, the bot won't delete the branch.

@SteveL-MSFT Thanks! There is two open questions which we need resolve. We could continue with you, @adityapatwardhan and @TravisEz13.

@daxian-dbw Could we merge with the rules for which we have a consensus and see the results?

@iSazonov Yes, will get back to this PR next Monday!

@daxian-dbw Friendly ping.

This PR has been constantly pushed back by other higher priority work items ... not good 😞
This time I promise to get this PR done by end of next week.

@PoshChan Please remind me in 42 hours

@daxian-dbw, will remind you in 42 hours

@daxian-dbw, this is the reminder you requested 42 hours ago

@iSazonov I reverted all controversial changes in the PR.

@daxian-dbw Thanks! I will merge "as is" we will see what we can do better.


Minor edits

Coverage remained the same at 98.68% when pulling a04bb6f0fc604eb233c297250808d4d4f6b65574 on cclauss:patch-1 into 79424745c3832b17f7a7253a2baa2d10588730b0 on bndr:master.

Coverage remained the same at 98.68% when pulling a04bb6f0fc604eb233c297250808d4d4f6b65574 on cclauss:patch-1 into 79424745c3832b17f7a7253a2baa2d10588730b0 on bndr:master.

Thanks!


yet another - too big subrequest response while sending to client - issue

I need to transform response body so I am using r.subrequest which runs into too big subrequest response while sending to client. Several issues are there to this effect and the solution seems to be to use
subrequest_output_buffer_size {size};

In my  case I kept increasing this value until 4M until it worked by trial and error.
My question is what should be this value - does this depend on the size of the response.
If it is then how can this value to be set when we may not the size upfront.
I understand that setting this value too big is safe for it to work but at the same time unsafe for resources etc.
I tried using responseBuffer instead of responseBody but of no use.
Wondering if I should/should use subrequest in the first place ?
Wondering if this has anything to do with internal; in the subrequest location ?
# nginx.conf
location /search-subrequest {
     proxy_pass https://redacted-domain/api/search;
     subrequest_output_buffer_size 4M; # 4M is big
}
location /search {

  js_content main.search;

and here is my njs
// search.js

async function search(r) {
    let reply = await r.subrequest('/search-subrequest');
    let bodyRaw = reply.responseBuffer.toString('utf8');
    let body = JSON.parse(bodyRaw);
    // transform body
    r.return(200, JSON.stringify(body));
 }

and the errors curl -I http://localhost/search
curl: (52) Empty reply from server
[warn] 415#415: *142 an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/1/02/0000000021 while reading upstream, client: <IP_ADDRESS>, server: localhost, request: "HEAD / HTTP/1.1", subrequest: "/search-subrequest", upstream: "https://REACTTEDIP:443/api/search", host: "localhost"

[error] 415#415: *142 too big subrequest response while sending to client, client: <IP_ADDRESS>, server: localhost, request: "HEAD / HTTP/1.1", subrequest: "/search-subrequest", upstream: "https://REACTTEDIP:443/api/search", host: "localhost"

@yogeshgadge if you don't need to put some cache, using ngx.fetch is the way to go, IMO.
However if you need to have some cache (because your upstream API is rate limited for example) you will need to use subrequest like so
# /etc/nginx/conf.d/default.conf

proxy_cache_path /tmp/nginx-cache/ levels=1:2 keys_zone=cachezone:100m max_size=1g inactive=30d use_temp_path=off;

js_path "/etc/nginx/njs/";
js_import main from search.js;

server {
  server_name _;

  ### example cache configuration
  proxy_cache cachezone;
  proxy_cache_revalidate on;
  proxy_cache_min_uses 1;
  proxy_cache_background_update on;
  proxy_cache_lock on;
  proxy_cache_key $scheme$proxy_host$request_uri;
  ### end of cache configuration

  proxy_cache_use_stale error updating timeout http_500 http_502 http_503 http_504;

  proxy_cache_valid 301 1h;
  proxy_cache_valid 404 1m;

  location = /search {
    js_content main.search;
  }

  location /_internal_search {
    internal; # important so nobody can use the route from outside

    subrequest_output_buffer_size 500m; # still have a random value here
    proxy_pass https://redacted-domain/api/search;
    proxy_cache_valid 200 302 5m;
  }
}

With
// /etc/nginx/njs/search.js

async function search(r) {
  const reply = await r.subrequest('/_internal_search');
  const json = JSON.parse(reply.responseText);
  // do things with your JSON

  r.return(200, JSON.stringify(json));
}

export default { search };

Note that if you use nginx.fetch() with an https you will need to use js_fetch_trusted_certificate or disable SSL validation using either js_fetch_verify or
let reply = await ngx.fetch('https://redacted-domain/api/search', { verify: false });

Well as a followup, seems using subrequest with caching doesn't work as expected. On cache stale NJS explodes with
nginx-nginx-1  | 2023/08/26 11:11:24 [error] 28#28: *28 js exception: MemoryError while sending to client
client: <IP_ADDRESS>
server: _
request: "GET /srach HTTP/1.1"
subrequest: "/_internal_search"
upstream: "https://redacted-domain/api/search"
host: "localhost"
referrer: "http://localhost:5173/"

nginx-nginx-1  | 2023/08/26 11:11:45 [error] 28#28: *30 js exception: MemoryError
client: <IP_ADDRESS>
server: _
request: "GET /search HTTP/1.1"
subrequest: "/_internal_search"
host: "localhost"

so stick with the fetch API if you don't need caching


Refactor tools to handle new edit workflow

@rsinghal @beaudet
This pull request adds :
Main feature
Refactor pin tool / Refactor polygon tool / Refactor freehand tool to handle to be visually highlighted in edit mode
Fix deletion of only one point (freehand and polygon tool) https://github.com/IIIF/mirador/issues/986
Disable shape selecting when out of edit mode or create new annotation mode
Additional features
Add stroke width change on newly created shapes
@rsinghal I have commented some code in order to review it and tell me if you agree on removing it
What should be done in other pull requests
Have appropriate cursor change (remove awsome cursor lib, and use only native) [generalize the solution for all shapes]
Change blue doth (for rotation) to rotate icon ( Which one do you suggest to use. I like the one in the mock ups but I cannot find it)
Refactor the whole osd-overlay test suite (after we all agree on the features and workings of the annotations)
Check out the whole annotation functionality for code/memory improvements (should have good coverage and really working tests first (not only blind covering) (we have them almost) )

With this pull request I think that https://github.com/IIIF/mirador/issues/881 is rather done (except the rotate icon and the cursors changes?
@rsinghal @beaudet Please share with me if I am missing something or you suggest any improvements.

Found issues that will be fixed as part of this pull request:

[x] https://github.com/IIIF/mirador/issues/1028
[x] https://github.com/IIIF/mirador/issues/1031
[x]

Have an existing annotation for the image.
On that image, create an annotation wth one shape (in this case, I chose polygon) and save it.
Edit that new annotation and delete the shape.
Click Save and choose to delete the annotation in the modal (I can't test this with Saving the annotation without shapes because of the first bug).
Click to edit the existing annotation
Click anywhere on the image (not on one of the existing shapes), it starts drawing the points of a polygon, rather than doing nothing.

[ ] Styles for newly created shapes is not preserved when going to fullscreen mode

Coverage increased (+0.01%) to 46.226% when pulling fb3cb2682b92b1a943353d215ec32ae66843be63 on SirmaITT:feature/polygon-freeshape-pin-editable into 3470c073bb0bbf90b321eaed58ff17440c42b5a5 on IIIF:annotation-work.

@radpet I found the following bugs:

Create an annotation with one shape and save it.
Edit that annotation and delete the shape.
Save the annotation and choose Save annotation without shapes
The modal doesn't close but there are no errors in the console.

Have an existing annotation for the image.
On that image, create an annotation wth one shape (in this case, I chose polygon) and save it.
Edit that new annotation and delete the shape.
Click Save and choose to delete the annotation in the modal (I can't test this with Saving the annotation without shapes because of the first bug).
Click to edit the existing annotation
Click anywhere on the image (not on one of the existing shapes), it starts drawing the points of a polygon, rather than doing nothing.

I am still reviewing and testing, so I may have more (as well as determining if the commented out code is still needed).

@rsinghal Thanks for you response and work:
About

Create an annotation with one shape and save it.
Edit that annotation and delete the shape.
Save the annotation and choose Save annotation without shapes
The modal doesn't close but there are no errors in the console.

I made the save annotation without shapes button disabled until https://github.com/IIIF/mirador/issues/1028 is implemented

@radpet I see - perhaps hide that button entirely until #1028 is implemented, and then we can make the button visible again?  In case anyone is testing/using this branch, I don't want to get unnecessary tickets about it not working (since we already know it's not implemented yet!)

@rsinghal That is why I made it disabled I'll try to implement it as part of this pr.
Anyway about

Have an existing annotation for the image.
On that image, create an annotation wth one shape (in this case, I chose polygon) and save it.
Edit that new annotation and delete the shape.
Click Save and choose to delete the annotation in the modal (I can't test this with Saving the annotation without shapes because of the first bug).
Click to edit the existing annotation
Click anywhere on the image (not on one of the existing shapes), it starts drawing the points of a polygon, rather than doing nothing.

you are right. The current tool need to be reset but it is not now. Ty :)

Coverage increased (+0.05%) to 46.265% when pulling ad2ab70221299c1a9d868efa0ad242de1ebcd638 on SirmaITT:feature/polygon-freeshape-pin-editable into 3470c073bb0bbf90b321eaed58ff17440c42b5a5 on IIIF:annotation-work.

Coverage increased (+0.06%) to 46.276% when pulling 11e9f142c283dc5747b88734f66c54e09420b1e9 on SirmaITT:feature/polygon-freeshape-pin-editable into 3470c073bb0bbf90b321eaed58ff17440c42b5a5 on IIIF:annotation-work.

Coverage increased (+0.05%) to 46.27% when pulling 896ae7db5200646e180e4b88149ac51dbe442c46 on SirmaITT:feature/polygon-freeshape-pin-editable into 3470c073bb0bbf90b321eaed58ff17440c42b5a5 on IIIF:annotation-work.

Coverage increased (+0.07%) to 46.283% when pulling 655c53fea43e38c6680d91bdd844456fbbf6a744 on SirmaITT:feature/polygon-freeshape-pin-editable into 3470c073bb0bbf90b321eaed58ff17440c42b5a5 on IIIF:annotation-work.

Coverage increased (+0.07%) to 46.284% when pulling e817aed483476ed735e7e70fe543b686943c0397 on SirmaITT:feature/polygon-freeshape-pin-editable into 3470c073bb0bbf90b321eaed58ff17440c42b5a5 on IIIF:annotation-work.

@rsinghal Please check out the new things, I tried to fix all issues I mentioned above. I want to merge this as soon as possible because we want to trigger new build for the CS project from annotation-work :)

Reviewing now

@radpet I found a bug creating an annotation with multiple slots open.  I'm going to fix that in annotation-work now


Event Recorder AL Snippet enhancement

It would be nice if the AL Snippet of the Event Recorder would also contain the related parameter. Vincent Nicolas hat a matching Snippet in his NAV TechDays 2018 - Opening Keynote Demo, but I don’t ;-).
Current AL Snippet:
[EventSubscriber(ObjectType::Tabelle, Database::"Customer", 'OnBeforeValidateEvent', 'E-Mail', true, true)]
local procedure MyProcedure()
begin
end;

Would be nice AL Snippet:
[EventSubscriber(ObjectType::Tabelle, Database::"Customer", 'OnBeforeValidateEvent', 'E-Mail', true, true)]
local procedure CustomerEMailOnBeforeValidateEvent(var Rec : Record Customer; var xRec : Record Customer, var CurrFieldNo : Integer)
begin
end;

You can simply place your cursor in the parenthesis, press Ctrl+Space and you will get all parameters suggested by IntelliSense.
We do not want to generate event subscriber signatures with all possible parameters since many will not be used and just clutter the code.

I rather liked the idea of generating the proper procedure name.

Aaaah, I missed that part. That is indeed a good idea

Hi @StanislawStempin,
you are right. I saw this with eye of C/SIDE where all parameter gets automatically added. I'm also for a proper procedure name.
To improve visibility a comment could be added, but I get if you say this should be clear. E.g.:
[EventSubscriber(ObjectType::Tabelle, Database::"Customer", 'OnBeforeValidateEvent', 'E-Mail', true, true)]
local procedure CustomerEMailOnBeforeValidateEvent()
begin
//To add parameters place your cursor in the parenthesis, press Ctrl+Space and you get all parameters suggested by IntelliSense.
end;

Hi @atloader, just a hint: The programming of the Event Recorder should be extended. Has not much to do with the "al-snippets".


Configuration lockc.toml provided from ConfigMap cause problems

After deploying lockc.toml from ConfigMap causes issues with starting pods in restricted namespace.
How to reproduce it:

Add changes to lockc.toml and create configMap in lockc namespace
Create it
$ kubectl create configmap -n lockc lockc --from-file=./lockc.toml
Upgrade already existing lockc helm release
$ helm upgrade -n lockc lockc lockc --set lockcd.config.enabled=true

That's really odd. Do you have any clue why is this happening? Is that because the configuration from the config map is not read properly?

First problem is that previously registered container eBPF maps are lost:
          lockcd-19142   [002] d...1 75225.407785: bpf_trace_printk: adding process: success

           <...>-19191   [001] d...1 75225.407923: bpf_trace_printk: error: get_policy_level: could not found a container for a registered process


Improvement : Add some independent category page ?

An independent category page makes much more clear post management.
Example
https://bitmingw.github.io/categories/index.html

I have added a tags and categories index to the site. Check it out
Demo: http://www.codeblocq.com/assets/projects/hexo-theme-alpha-dust/
Docs:
https://github.com/klugjo/hexo-theme-alpha-dust#tags-page


Update ns-d3d12-d3d12_buffer_srv.md

Add remarks to clarify how to create a typed vs structured buffer, and match the equivalent buffer UAV page

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

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


Weights before saving are different from loaded weights while training with AdamWScheduleFree

Hi,
I am training SSM layer using AdamWScheduleFree.
During training, at the beginning of every epoch i perform: "optimizer.train()"
At the end of the training i print the model's weights and than save then using:
torch.save(model.state_dict(), model_weights_saving_path)
Right after that, i am load the weights to a new instance of the model using:
loaded_model.load_state_dict(torch.load(model_weights_saving_path))
Than i print the loaded model's weights.
It seems that the weights from the first print are slightly different from the second print weights.
For example:
Print of SSM 'B' parameter before saving the model:
tensor([[-3.4487e-02,  5.9057e-02,  2.4344e-01,  ...,  4.2111e-02,
-9.1521e-02, -1.9180e-01],
[-3.6504e-02, -1.9785e-04,  1.0433e-01,  ..., -2.0856e-01,
1.7217e-01, -7.5197e-02],
[ 1.6240e-02, -1.1561e-01, -1.0008e-02,  ...,  1.8532e-01,
-1.0054e-01, -1.0865e-01],
...,
[ 1.5122e-02, -2.6804e-02,  4.8569e-02,  ..., -6.6339e-02,
1.8961e-01,  7.9816e-03],
[ 4.0235e-01,  2.2122e-01, -1.0654e-02,  ..., -1.5958e-01,
1.5003e-02,  8.0167e-02],
[ 4.1065e-02,  1.3275e-01,  2.6065e-02,  ..., -4.8485e-02,
-8.2574e-02, -7.3376e-02]], device='cuda:0', requires_grad=True)
Print of SSM 'B' parameter after loading the model:
tensor([[-3.4062e-02,  5.8613e-02,  2.4297e-01,  ...,  4.1761e-02,
-9.1065e-02, -1.9135e-01],
[-3.6078e-02, -1.6968e-04,  1.0388e-01,  ..., -2.0811e-01,
1.7171e-01, -7.4751e-02],
[ 1.5849e-02, -1.1515e-01, -9.9889e-03,  ...,  1.8505e-01,
-1.0001e-01, -1.0819e-01],
...,
[ 1.4735e-02, -2.6397e-02,  4.8085e-02,  ..., -6.5892e-02,
1.8915e-01,  7.6361e-03],
[ 4.0188e-01,  2.2076e-01, -1.0269e-02,  ..., -1.5916e-01,
1.4539e-02,  7.9720e-02],
[ 4.0634e-02,  1.3229e-01,  2.5623e-02,  ..., -4.8351e-02,
-8.2210e-02, -7.2939e-02]], device='cuda:0', requires_grad=True)
It's important to note that when i use regular AdamW optimizer with CosineAnnealing scheduler, the weights in both cases are identical (as it should be).
This issue looks weird to me and i would appreciate some help.

Did you try to put optimizer.eval() before saving your weights ?
https://github.com/facebookresearch/schedule_free?tab=readme-ov-file#how-to-use

I just tried your suggestion and it solved the problem.
Can you explain why it is necessary? sounds a little bit odd that the optimizer mode will have an impact on the saving/loading weights process.
I think it will be good to add this requirement to the "How to Use" section since it is a very common use case.

Thank you for the suggestion, I'll look at updating the docs to make it clear that weights should be saved in eval mode.

I have updated the documentation to make it clear that checkpoints should be saved in eval mode.


Make gemspec compatible with rails 4.0, 4.1 and 4.2

:+1:

Coverage remained the same at 97.205% when pulling b24ce17029768e458d6fccda3d3ea180ec0993f3 on aminin:rails4.x into b17875a46560ebcbdf990734ae08485131771a8c on kostyantyn:rails4.1.

Coverage increased (+0.2%) to 97.368% when pulling 27f3b59e3f4dc87d6f143d6cf7f81a6b4555ea1b on aminin:rails4.x into b17875a46560ebcbdf990734ae08485131771a8c on kostyantyn:rails4.1.


Error in enabling plugin on the latest paper

Describe the bug
The plugin fails to start normally when the server starts
Screenshots or logs
This is the output error message
Additional information

Server version Paper-487 (MC: 1.16.5)
Plugin version Dangerous-Caves-2.2.14-SNAPSHOT  latest version
Server core name Paper
Plugins list Plugins (1): DangerousCaves

Thank you for the report. Should be resolved now.


kubernetes/charts stuck in 0.6.x

Is this a bug report or a feature request?:
somewhere in-between
What happened:
0.7.1 is not yet available in kubernetes/charts (nor afaict there is a PR for it)
What you expected to happen:
assuming that it is ready for wide consumption it should be there too :-)
How to reproduce it (as minimally and precisely as possible):
vd https://github.com/helm/charts/blob/master/stable/metallb/Chart.yaml
Best Regards, && thanks in advance!

Yup. Sadly, I don't have commit rights on the Kubernetes charts repo, and my PRs are not getting processed. So, unfortunately, there's nothing I can do about this right now. Hopefully someday soon someone will merge my changes :(

Sorry, to clarify: I have another in-flight PR that needs to be merged before I can update the version to 0.7.1. That's why you didn't see a PR for the version change.

@danderson thnxs for the explanation ... hopefully upstream maintainers won't go all in vacation at same time for long :-)

This can be closed?

Yup, thanks for noticing! Helm's on 0.7.3 now.


Enable using a custom rsync image

Describe what this PR does
This PR enables setting a custom image for rsync. We already an option for the stunnel container. With MTRHO / Crane we will likely encounter clusters with restricted networking or in disconnected environments where they will not be able to pull directly from Quay. Furthermore we're likely to encounter a preference for using downstream images from registry.redhat.io at some point in the future.
Related issues:
https://github.com/konveyor/crane/issues/116
https://github.com/konveyor/crane/pull/139

/cc @JohnStrunk

/approve


Indicate that this is not used, or convert functions to arrow functions

A few of the functions in Wonka triggers the @typescript-eslint/unbound-method lint rule when used. See https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/unbound-method.md.
For example, the makeSubject example from the documentation:
import { makeSubject } from 'wonka'
const subject = Wonka.makeSubject();
const { source, next, complete } = subject;

Changing export function makeSubject<T>(): Subject<T> { to export function makeSubject<T>(this: void): Subject<T> { should be enough to indicate that this is not used in these functions. Or it could just be an arrow function instead in which case we do not need to indicate that.

Hiya :wave: While I'd love to accept the issue and the corresponding PR, I'm failing to determine a reason to, sorry!
To keep it short, a random ESLint rule, that is not being applied to this repository is unfortunately not a reason to accept this issue and PR. Because no function in wonka is actually using an execution context, whether the function ends up being called bound or unbound is irrelevant. In fact, it would be pretty odd to call it bound to any given context, as there's no relevant need to. It simply does not use prototype inheritance in any sense.
This is why the difference is merely in coding style.
What's also published in the final package output, is basically transpiled & compiled code, as per the Rollup configuration: https://github.com/0no-co/wonka/blob/main/rollup.config.js
As part of this, it's a transpilation detail of whether the functions end up being arrow functions, function expressions, or function declarations. However, writing them as function declarations has the advantage of often not being transpiled away and retaining their name even when minified. This is nice for debugging in Node environments, where sourcemaps are often not used. However, in any browsers, even with a bundler, sourcemaps are still used and make the difference between styled negligible.
I hope that makes sense to you 🙌

Fair enough. I can appreciate that. That linting rule is also not included in the recommended set so I doubt there will be many with this "issue". The other approach with this: void probably makes a little bit more sense in this context but then again it mostly would cater to this linting rule.
There are some more subtle use for having this: void, it would also prohibit usage of this within the functions. There are mentions of this in the old ts docs, https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters - but nothing in the new ones as far as I can see. Won't add much - but yeah, let me know if you could accept something like that, if not, feel free to just close this of course.
Thank you for your time 🙌


Add free c# programming online book

Add C# programming in thai language.
What does this PR do?
Add resource(s) | Remove resource(s) | Add info | Improve repo
For resources
Description
Why is this valuable (or not)?
How do we know it's really free?
For book lists, is it a book? For course lists, is it a course? etc.
Checklist:

[x] Read our contributing guidelines.
[x] Search for duplicates.
[x] Include author(s) and platform where appropriate.
[x] Put lists in alphabetical order, correct spacing.
[x] Add needed indications (PDF, access notes, under construction).
[x] Used an informative name for this pull request.

Follow-up

Check the status of GitHub Actions and resolve any reported warnings!

complete checklist

Thanks, and welcome to free-programming-books!


Radiance HDR format support

Do you have some suitable test images to include for the automated tests?

I have test images. However, test suite should be modified to be able to work with HDR images. I didn't have time right now to finish that. I expect to be able to do that later this week.

Failed on documenting rayon on nightly

rustdoc seems to be slightly broken on nightly. Does it make sense to disable cargo doc for travis nightly pass?

Looks good. Thank you very much for contributing.
PS: Where did these spurious changes to png.rs etc. come from? That shouldn’t be in this patch. ;)


Feature request: stroke alignment inside/outside

I would like to request the ability to position the stroke (of a polygon) as inside or outside its path. With this I could:

create interesting custom feature interactions that need inside or outside stroke to look good
easily distinguish borders between shapes where the exact border is important, for example land parcels which are individually coloured. Current OL implementation would have 'overlapping' stroke borders, whereas I would like the edges to be distinguishable and crisp.

E.G. alignment: "inside"

Leaflet have considered this feature but I don't think they have implemented anything.
Mapbox GL JS (WebGL, not canvas) supports this via line-offset.

We will also need an inside stroke alignement for a project; I've started to work on this, see:
https://github.com/openlayers/openlayers/compare/master...fredj:stroke_alignment

@fredj nice work on your branch. Are you planning to do any more work on it? I don't know the canvas API that well but I could take a crack too

@fredj What is left to do on this? Would be a great addition and perhaps I could check it out.

Is this something you can look at reopening?

This would be covered by https://github.com/openlayers/openlayers/issues/9377

@jahow I've had a look at #9377 and at the code for v6.0.0-beta.11 and this doesn't seem to be covered - with #9377 being closed-off already.

Sorry if that wasn't clear, #9377 is simply a proposal for a more general implementation of an offset style parameter. It was closed for inactivity.

Yeah, it seems like this was closed without addressing the issue.  It would be nice to have the ability to set the stroke alignment property.  Can we re-open this issue?

Plus for re-opening. This has wide applications (e.g. municipal boundaries or parcels) and the linked issues do not directly address this, but have a related topic; just not quite the same.

While waiting for the offset functionality, I started developing a function that would add an inside and/or outside border. I use the turf library

import {Circle as CircleStyle, Fill, RegularShape, Stroke, Style, Text} from 'ol/style';
import {LineString, Polygon, Point, Circle} from 'ol/geom';
import * as math from "mathjs";
import unkinkPolygon from "@turf/unkink-polygon";
import {polygon} from "@turf/helpers";
import booleanClockwise from "@turf/boolean-clockwise";

setBorderInner(geometry, resolution) {
      let result = unkinkPolygon(polygon([geometry.getLinearRing(0).getCoordinates()]));
      let styles = []
      result.features.forEach((polygon) => {
          styles.push(...this._addBorderInner(new LineString(polygon.geometry.coordinates[0]), resolution))
      })
      return styles
  }

    _addBorderInner(geometry, resolution) {
        var styles = []
        let clockWise = booleanClockwise(geometry.getCoordinates())

        let colors = ['rgba(37,147,7,0.4)', 'transparent'];
        if(clockWise) {
            colors = colors.reverse()
        }
        let width = 8
        for (let line = 0; line < colors.length; line++) {
            let dist = width / (resolution/10) * (line - (colors.length-1)/2);
            let coords = [];
            let counter = 0;
            let coordinates = geometry.getCoordinates()
            let from = coordinates[coordinates.length-2]
            coordinates.forEach(to => {
                let angle = Math.atan2(to[1] - from[1], to[0] - from[0]);
                let newFrom = [
                    Math.sin(angle) * dist + from[0],
                    -Math.cos(angle) * dist + from[1]
                ];
                var newTo = [
                    Math.sin(angle) * dist + to[0],
                    -Math.cos(angle) * dist + to[1]
                ];
                coords.push(newFrom);
                coords.push(newTo);
                if (coords.length > 2) {
                    let intersection = math.intersect(coords[counter], coords[counter+1], coords[counter+2], coords[counter+3]);
                    coords[counter+1] = (intersection) ? intersection : coords[counter+1];
                    coords[counter+2] = (intersection) ? intersection : coords[counter+2];
                    counter += 2;
                }

                from = to;
            });
            coordinates.shift()
            coords.shift()
            coords.shift()
            styles.push(this._addStyleBorder(coordinates, coords, colors[line]))

        }
        return styles
    }

    _addStyleBorder(coordinates, coords, color) {
        var styles = []
        for (let i = 0; i < coordinates.length; i++) {
            let c = ((i+1) % coordinates.length)
            styles.push( new Style({
                geometry: new Polygon([[coordinates[i], coordinates[c], coords[c*2], coords[i*2], coordinates[i]]]),
                fill: new Fill({
                    color: color,
                })
            }))
        }
        return styles
    }`


[harvest] Fix responsibility of parsing IIP image URLs

Type of change

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[ ] I have updated the CHANGELOG
[x] I have requested at least 1 reviewer for this PR
[ ] I have made corresponding changes to the documentation

I know this is quite minor change/fix. But I am happier to see also CHANGELOG updated ;)


Pre-computed outputs check is not working properly in local archive

When restarting a crashed job, the checking of the local archive always return nothing to do as the final output was already there. This happen even if there are few pre-computed outputs and to run the pipeline I have to delete both the outputs from the archive and the working directory.

This was fixed in #43


iOS Yellow box: Class was not exported

Steps to reproduce

Install and link the library
Open your app

Expected behaviour
The app shouldn't throw the yellow boxes
Actual behaviour
Now the following warnings are shown:

Environment

React Native version: 0.56.0
React Native platform + platform version: iOS 11.4

react-native-share
Version: 1.1.1
Link to repo (highly encouraged)
https://github.com/insiderdev/minimal-quotes

I've got the same issue.
Environment
react-native: 0.55.4
iOS: 11.4
react-native-share: 1.1.1

Duplicate of #329

thanks


Building Error (weird)

After successfully developing the blog, if tried to rebuild it on Netlify - without success.
I retried to develop local but now the following strange error occurs:
Error: /Users/noir/blog/gatsby-node.js:52
      const nextSlug = arr[index - 1]?.frontmatter.slug || ``
                                      ^
  SyntaxError: Unexpected token '.'

It's also kinda strange that the develop is working without problem, but the build fails.
Has anyone had a similar issue?

I could fix the develop error by downgrade to another node version. But on build (Netlify) I get still an error:
error "gatsby-plugin-sitemap" threw an error while running the onPostBuild lifecycle:
Cannot use 'in' operator to search for 'nodes' in undefined
   40 |           case 9:
    41 |             queryRecords = _context.sent;
> 42 |             filteredRecords = (0, _internals.filterQuery)(queryRecords, excludeOptions, basePath, resolveSiteUrl);
         |                                                          ^
    43 |             urls = serialize(filteredRecords);
    44 |
    45 |             if (!(!rest.sitemapSize || urls.length <= rest.sitemapSize)) {

After successfully developing the blog, if tried to rebuild it on Netlify - without success.

That is not entirely unexpected. I sometimes get time-outs on netlify depending on how much has changed and how much of the build could be cached. So I usually build locally and then push it to production with the Netlify CLI (gatsby build && netlify deploy --prod).

I retried to develop local but now the following strange error occurs:
const nextSlug = arr[index - 1]?.frontmatter.slug || ``
SyntaxError: Unexpected token '.'

That looks like you're running a version of node that doesn't support optional chaining yet. I would try to upgrade to node v14.0.0 or above.

error "gatsby-plugin-sitemap" threw an error while running the onPostBuild lifecycle:

Ah yes, I had that error too which is why I got rid of gatsby-plugin-sitemap again for now (but didn't push that yet) until gatsby#22757 fixes it.

Ah yes, I had that error too which is why I got rid of gatsby-plugin-sitemap again for now (but didn't push that yet) until gatsby#22757 fixes it.

That did the job! Thank you very much for your support!


Bumpup premerge os

build

build

build

build

build

build

build

build

build

build

build

build

build

build

build

build

build

build

build

build

build

build


Test insert_all cast param logging

This tests the changes in the corresponding Ecto PR for sending the casted version of the query parameters to the adapters.
I also added some comments and cleaned up the old logging tests a bit to try to make them easier to understand.
Corresponding ecto PR: https://github.com/elixir-ecto/ecto/pull/3941

ah...the integration tests were passing on my machine but failing here. i need to investigate a bit.

oh because it was pointing to the wrong commit on my ecto fork

I'm going to stick with the original version where the sorting happens in Ecto.
I might live to regret it but my rationale is:

insert_all has enough complexity to deal with and this will keep the code closest to what it was
Sorting is only over the fields and not something crazy like the number of fields * the number of rows. This performance hit is already accepted when one of the values comes from a query.


Switch to RubyInstaller2 for Ruby-2.4 ?

At the last days, I was working on the MSYS2 based RubyInstaller2 . IMHO it is now roughly on the level of the current RubyInstaller. There are some outstanding issues that I've documented on the issue list. I'll work on these in the next days and will do more tests on our dev and production systems at work.
So to my question: Shall we switch to RubyInstaller2 for the Ruby-2.4 branch? This would mean:

Everyone should test for regressions compared to the current RubyInstaller and add/solve issues.
Move RubyInstaller2 to https://github.com/oneclick .
Update rubyinstaller.org for MSYS2 stuff. (And remove Ruby-1.8/1.9 related)
Answer a lot of questions related to MSYS2 and pacman.
Going EOL with MSYS1 based RubyInstaller-2.3 in 2 to 3 years and support both environments until then.

This all will probably take a while, but my hope is to have a release quality in 2-3 months.

A few simple tests with 2.4.0-4 did not turn up any oddities.

@larskanis @Azolo @luislavena can we move forward with moving RubyInstaller2 to one-click and releasing Ruby 2.4?

Hello @larskanis, I've been stalking your work on the new repository but I've been a bit busy with work.
It is possible for us to agree/meet to discuss these steps this week? You can email me at <username on GitHub>@<gmail dot com>
Thank you.

For the record, I think steps covered by first comments are good, but will introduce a few more details:

Move this repository to rubyinstaller-legacy
Document this repository is for old versions of Ruby
Move rubyinstaller2 as rubyinstaller
Add a paragraph about old (legacy) version.

@luislavena Sorry for responding so late! First I was too busy with work and second I had several outstanding issues on the agenda with rubyinstaller2, which I wanted to have solved before doing further steps.
Are you sure to rename this repository? This invalidates all links to the repository. I would leave it where it is and document the situation in both repositories.

personally, I do not see any advantage in switching the repositories around. And the disadvantage of invalidating a huge amount of links is a very valid point, in my opinion. I believe this would also create weird confusion for everyone just git pull-ing into an existing repository. I don't even know what git would do in such a case.
wouldn't adding a note to the readme of rubyinstaller(1) front and center achieve basically the same goal?

Hello @larskanis, actually renaming the repository will not produce any broken link thanks to GitHub redirect support.
Take for example sqlite3-ruby, which was hosted on my account. From emails, here is a link:
https://github.com/luislavena/sqlite3-ruby/issues/85
It performs a proper redirect to the new location (sparklemotion/sqlite3-ruby):
Same thing goes for Wiki and other elements, including direct links to commits, releases and others.

I believe this would also create weird confusion for everyone just git pull-ing into an existing repository. I don't even know what git would do in such a case.

@ccoenen the total number of clones for this repository are less than 20 per day, that might be triggered by some build infrastructure or similar. I think when the number is higher than 100 we should be considering that affecting a big user base.

wouldn't adding a note to the readme of rubyinstaller(1) front and center achieve basically the same goal?

In my painful experience through the years working with RubyInstaller I would say no, people don't read.

Is worth to mention that something similar to this was done recently by Homebrew.

@luislavena Github redirection only works as long as there is no new repository at the old name. If I understand you right, your proposed rename is:
oneclick/rubyinstaller -> oneclick/rubyinstaller-legacy
larskanis/rubyinstaller2 -> oneclick/rubyinstaller

Links to larskanis/rubyinstaller2 will still work, but it will invalidate links to issues, wiki, commits, etc. of oneclick/rubyinstaller.

@larskanis I think that's ok... most of the old issues can be closed anyway and the wiki can be copied/moved over...

I uploaded a first release candidate: https://github.com/larskanis/rubyinstaller2/releases/tag/2.4.1-1rc1
It has everything built in now, that I planned for the first release. I also added a CHANGELOG that tries to list changes compared to RubyInstaller(1). You're welcome to try it out and give some feedback.

Hello,
RubyInstaller2 repository has been migrated to OneClick organization.
https://github.com/oneclick/rubyinstaller2
A release candidate has been uploaded by Lars:
https://github.com/oneclick/rubyinstaller2/releases/tag/2.4.1-1rc1
We now require README updates to reflect the changes and later on updates to the website.

I've pushed another (and hopefully final) prerelease.
I also did some work to move rubyinstaller.org to a static site. It is stored in the rubyinstaller2 repo and hosted on github. The site is fully self contained and doesn't use external resources. I updated the texts regarding RubyInstaller2 and added a possible release post for Ruby-2.4. Feel free to open pull requests if the wording is not good. Please have a look: https://oneclick.github.io/rubyinstaller2/
I took jekyll as the site generator because it is well supported by github. And I stored it within the rubyinstaller2 repository to make release automation easier.
@luislavena If you agree to the switch of rubyinstaller.org to github, it is required to enable a custom domain in the github settings and to set the CNAME and ANAME records as described in the github docs.

Is there anything in the RC2 that should be tested in particular?

@ccoenen Thanks for asking! All 3 changes are possibly interesting:

Allow MSYS2 to be shipped together with Ruby, independent from the install path: This commit should solve this issue and this issue and is described here.
Removed some unecessary DLLs previously shipped with the installer: This shouldn't change anything visible, but reduces the DLLs to those that are really necessary for ruby core and stdlib.
Decrease the number of MSYS2 packages installed per default using 'ridk install': We don't need all the previous installed MSYS2 development packages and use a reduced set now. This is only relevant for a fresh MSYS2 installation. It's this commit.

@larskanis Nice, I really like the site. I remember discussing this in the past with @luislavena, I think even if he decides not to use GitHub Pages he will want to use the jekyll generated site.
Do you think the site should stay in the same repo or moved into a different repo?

@Azolo My intention to place the web site into the rubyinstaller2 repo was to be able to add download links and a release post (at least a template) as part of a (future) release task. However this is not absolutely necessary - it's certainly possible to automate releases with a detached repo as well. For all I care it can be stay where it is, but it could also be extracted if there is some need or wish.

@larskanis thanks for the top-notch work I and my team really appreciate it.

Hi @luislavena ! Can you please find some time to make the RubyInstaller-2.4 release happen? I'm not sure how to proceed with the web site. If switching https://rubyinstaller.org to the github hosted one is too difficult, we could use the current CMS and think about the static site later. Any chance?

@larskanis perhaps will be good to split the website from the build process? That way the history of changes made to support RubyInstaller do not interfere with regular website maintenance.

perhaps will be good to split the website from the build process?

As explained in the above comments we can separate it into it's own repository. Shall I do it?

re: dns switch, I think we can use github pages to host the site and continue to use cloudflare to provide the SSL layer:
https://blog.cloudflare.com/secure-and-fast-github-pages-with-cloudflare/

As explained in the above comments we can separate it into it's own repository. Shall I do it?

Please so, that will make things more easy to setup and others to contribute (aka: "here is the website vs the code)

@luislavena  OK, looks good. I'm not familiar with cloudflare, but let me know, if I can do something.

@luislavena I extracted the docs directory to https://github.com/oneclick/rubyinstaller.org-website (including it's history) and enabled the new github site: https://oneclick.github.io/rubyinstaller.org-website/

@larskanis excellent. Thank you.
Can we make 2.4.1-1 a draft so we can do the DNS switch and check that everything continues to work?

Can we make 2.4.1-1 a draft so we can do the DNS switch and check that everything continues to work?

Done.

@larskanis thank you!
Site is now run from the Jekyll website!!!
I've added CNAME and hide Ruby 2.4.1-1 release from downloads page. Setup Cloudflare and enforced HTTPS.
This should be good for a release and some proper announcement too!

@larskanis
I saw there were some attempts to compile Ruby 2.3 with the new repository (rubyinstaller2) but appears to be failing.
IMO I think 2.3 can still be solved by this repository and keep RI2 just for 2.4 and newer versions moving forward.
The only remaining change for this repo will be a warning/notice pointing to the new repository for those looking for Ruby 2.4.
Last but not least, there is a patch on the new installer that don't think is a good call to include (remember: RubyInstaller aimed to be as close as possible to upstream).
Let me know your thoughts.
Cheers.

@luislavena Thanks for migrating the rubyinstaller website!

I saw there were some attempts to compile Ruby 2.3 with the new repository (rubyinstaller2) but appears to be failing.

This "inofficial" - see https://github.com/oneclick/rubyinstaller2/issues/33

The only remaining change for this repo will be a warning/notice pointing to the new repository for those looking for Ruby 2.4.

I agree. May I open a pull request?

Last but not least, there is a patch on the new installer that don't think is a good call to include (remember: RubyInstaller aimed to be as close as possible to upstream).

To be honest, this was a no-brainer for me, but I was astounded how well Encoding.default_external='locale' seems to work for many people. This is not so in Europe, but I have to discuss that with the ruby core team. For the time being I reverted this patch and added it as an installer option. I also did some more work towards better Unicode/UTF-8 support on Windows which shall find it's way into future releases.

@larskanis please, send a pull request for the README changes, thank you! :heart: :heart: :heart:

RubyInstaller-2.4.1 is finally released and available on https://rubyinstaller.org !
@luislavena @Azolo I hope the release text is OK for you. If not please change it! Can you furthermore post the news as done for earlier releases? Or tell me, where+how it used to be published?

@larskanis I posted it to the RubyInstaller Google Group, rubyinstaller.org, then put the release notes on Bintray.
I was posting to ruby-talk at one point, but stopped when keeping up with that mailing list became tedious.

For the release notes I would put something in big bold letters at the top that the DevKit for Ruby 2.4 is different than for previous releases.
Then also make click bait that's something like, "Download the DevKit for Ruby 2.4" that is a separate page that gives a walkthrough.
If you decide not to do that, it's still ok. That still won't be nearly enough for some people and you will get tons of bugs that the DevKit doesn't work. 😋
Other than that it looks ok. Like 90% of the release notes that @luislavena and I did were notes about the DevKit or compiling gems. "Use this DevKit not that one.", "Not every Gem will be compiled.", or "Don't use Gems from previous releases." It probably helped a lot of people, but it never felt like it did.

RubyInstaller-2.4.1 is finally released and available on https://rubyinstaller.org !

Excellent work @larskanis !!! Thank you! ❤ ❤ ❤

I hope the release text is OK for you.

👍
Originally I put lot of thoughts based on past releases and subsequent follow up with why this doesn't work? and many other issues.
But even after putting those notes in the release announcement, nobody read them, and the questions kept coming.
I think a short announcement on RubyInstaller mailing list with the same release notes contents will be enough.
Thank you so much for stepping in and taking the lead for version 2.4, really really appreciate the effort you are making for all Ruby on Windows.
Cheers.

Greetings all, I found one oddity with the new Ruby Installer - https://github.com/oneclick/rubyinstaller2/issues/43
It's not a blocker, more of an annoyance than anything else.

I think this can finally be closed now.
Thank you to everyone how participated on this transition! Special thanks to @luislavena for getting https://github.com/oneclick/rubyinstaller.org-website up and running!


Ignore unrecognized fields

I forked you to add the option to ignore unrecognized fields because my UI framework adds some but my Node.js API doesn't need to care.  But, while reading through your code I noticed that I can get effectively the same results by instantiating my validator with a null second parameter (existing_error) :
new FieldVal(input, null);
But, I think that's just a coincidence since it still does unrecognized logic checking in generate_response().
I took a quick stab at accepting options without breaking backwards compatibility over here :
https://github.com/darcling/fieldval-js/commit/76cfc059a8297baa78dc460210fe981b41ff7fb0
But I only added the 'ignore unrecognized fields' option because that's what I needed : )
You may have a better way.
Thanks for the library by the way, I'm just getting rolling with it.

Hey @darcling. I hope the library is useful.
I looked at your change and decided the best approach was to change the constructor to accommodate options as the second (optional) argument. The existing_error argument can now be supplied using the "error" property in the options. I've also added support for your additional functionality, "ignore_unrecognized". These changes are currently on the develop_options branch (60a137b4c597e1cae8933d89a4f0ccd2ff1b566b). I'll merge them into a release soon if I find no severe issues with projects this library is being used in.
new FieldVal(my_data,{
    "error": my_existing_error,
    "ignore_unrecognized": true
});

Thanks Marcus, I'll give it a try as soon as I can circle back - probably Monday.


Readme.md: fix logo stretching on small screens

Pull Request type

Bugfix

Does this introduce a breaking change?
No
Other information
keep the aspect ratio on small screens

closed as this is fixed in #222


Mark videointelligence v1beta1 as deprecated

https://github.com/GoogleCloudPlatform/google-cloud-java/tree/master/google-cloud-video-intelligence/src/main/java/com/google/cloud/videointelligence/v1beta1
This may require work in toolkit to support.

I'm marking this feature request since it's waiting on toolkit, please re-label if appropriate.


[5.4] Resolve double spending scheduled event on multiple servers

Problem
When having multiple servers running the scheduler. If a job takes only a couple of hundred of milliseconds to execute, the withoutOverlap won't stop a second server to take the same event.
Solution
Adding an artificial delay after job completion of a couple of second will resolve this.
A cron can only at least be launched every minute, the seconds added won't influence the normal working of the scheduler.

There will always be some room for this to be the case. A better solution is to use a unique environment variable that is only true on the machine you want the job to run on and do:
schedule->command()->when(function () { return env('UNIQUE_VAR'); });

I thought of that, but that leads to a single point of failure and having to manage which machine is running the cron.
Having all the machine in charge make it less problematic to "loose" the machine running the cron.


Failing mutation test

TODO:

[ ] Fix type errors
[ ] Fix linter errors
[ ] Add test that uses named fragment

[ ] Update CHANGELOG.md with your change
[ ] Make sure all of the significant new logic is covered by tests
[ ] Rebase your changes on master so that they can be merged easily
[ ] Make sure all tests and linter rules pass

Fragment test should use: http://docs.apollostack.com/apollo-client/fragments.html#creating-fragments
And the fragment should be shared between query and mutation.


Version 0.5.x Compatibility

Hi @joostfarla -- Any plans to make jshint plugin work with Sls v0.5.x?

I certainly do! It should be available within the next few days.

Fixed & released in v0.1.0!

THANKS! :smile:


Write to an advanced log

Fixes #1431

Well i would always write it, it is not that big and I delete old version so does not really take disk space.
And lets say something happens that is not reproducable u be happy that it was turned on ;)

It can produce a lot of data though

@Geosearchef u here?

what did we agree on in the end?

Do u want to add option to disable ice adapter log itself?

An option to disable it doesn't make a lot of sense, only one to enable it does.

yeah sure

Btw Alex dont let the other PR stop you from implementing the GUI option, i can always steal your commits xD


fix: honour package.pattern over internally set exclusion list

Hey,
This PR enables the package.pattern to behave such that the user has the final say over what files are packaged.
Currently a list of predefined files are always excluded from the final zip, which is not great from a flexibility point of view #315
https://github.com/floydspace/serverless-esbuild/blob/a233a1a5294ddf0875341312590f0078f468ae26/src/pack.ts#L38
Further more currently the files returned from the pattern glob are added to an include list...
https://github.com/floydspace/serverless-esbuild/blob/a233a1a5294ddf0875341312590f0078f468ae26/src/pack.ts#L171
... so although I may have used a glob like !**/*.md, those files will still be included into the final zip as the filterFilesForZipPackage will return true for any file that does not meet an exclusion criteria.
Taking the view that what is defined in both package.pattern and function.pattern as what files the user wants then we can remove files as needed.
Let me know what you think :)
Considerations:

Some perf improvements should be seen in larger repos as one use of globby has been removed.
The glob search is ordered, so that a user can override the excludedFilesDefault.
To keep this a none breaking change - the package.json is still being excluded by default. Users will manually have to include it via patterns. In the future this could be reversed.

Btw, I'm not event sure why we should exclude any files from the build folder.
All package.* files won't be there except if it is requested by the user...

Amazon Inspector can now scan Lambda functions for vulnerabilities. However it looks like it is using package.json and package-lock.json to achieve this for Node.js functions. So having an option to manually include those files in the ZIP artifacts to be deployed would be really useful.


Changes in telemetry for Firefox 58+

See https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5.

cheers - seen that. If the pref is deprecated we'll pick up on it diffs

It won't be deprecated, they'll lock it!

^^ Is that you Appster?

They already have on Nightly, I expect the new 58 beta/dev to be affected already.
Apparently though, on release the pref should be locked to off.

^^ Is that you Appster?

??!!??!! ...

toolkit.telemetry.enabled: This preference is now locked to reflect prerelease or release builds (true and false respectively).

It surfaces at the top of about:config, in italics. Status is locked.

so user_pref("toolkit.telemetry.enabled", false); will be locked to false in stable? Is that what you're saying?
I said something would be deprecated, well - there are two checkboxes (send data, now there will be one - so probably something will go, maybe not immediately - probably toolkit.telemetry.unified - but nvm, 58 is next year

Yes, that’s what I’m saying. As well as @earthlng quote above.

Just great. What should I do now? I do not accept any telemetry (spying). Mozilla what are you doing?

Normally telemetry should not be sent anywhere, just collected locally (but that’s an issue, I agree — at the very least because it impacts performance). You should verify that datareporting.healthreport.uploadEnabled is set to false.

Just great. What should I do now? I do not accept any telemetry (spying). Mozilla what are you doing?

Well, if it doesn't know where to send it.... see user_pref("toolkit.telemetry.server", "");  .. of course we would want to make sure that this is the value used and it's not hardcoded

I just leave this link here: https://dxr.mozilla.org/mozilla-central/source/modules/libpref/Preferences.cpp#3213

I don't follow. What is the significance of this? Is this some change in Nightly that just happened? Got a bugzilla?

FYI nightly and beta users can still use autoconfig to lock the telemetry pref to false

@earthlng Thank you for the info, I have never heard about this feature before.

maybe we should add that to the user.js
0330 (current)
 * [NOTE] FF58+ `toolkit.telemetry.enabled` is now LOCKED to reflect prerelease
 * or release builds (true and false respectively), see [2]

to maybe something like
 * [NOTE] FF58+ `toolkit.telemetry.enabled` is locked true in prerelease builds, see [2]
 * Nightly and beta users can still use autoconfig to lock the telemetry pref to false

That works. Thank you.


Bombastic walker does not react to SIGINT

Using SIGINT to kill the bombastic walker does not work, as it attempts to continue on downloading the next file rather than exiting.

Both walkers and the indexers have this issue. Easily reproduced using the compose scripts.

I guess we are missing a trigger from ctrl-c to terminate. Here is how that worked in the other project:
https://github.com/drogue-iot/drogue-cloud/blob/8aa49b2482442bb13d54d97a308a16f476ace203/server/src/main.rs#L972-L979
The idea was that once a task of the main loop finishes, the application shuts down. That signal handler will block until it receives that signal. When it returns, it ends the application.
IIRC actix-web does that automatically and returns it's main thread, which currently will also work (as one task completes, the app completes).
However, in cases where we don't use actix, what needs to be done manually.

I spent some time today trying to replicate this without it being in a container and I couldn't. The release binary built by this file and configured as the EntryPoint seems to respond fine to both SIGINT and SIGTERM. So maybe there's a problem with podman?
Does anyone know if the 10s timeout occurs when docker-compose is used to shut down the walkers/indexers?
I did figure out that podman-compose -f ... kill --all avoids the delays.

Fixed now @jcrossley3 ?

I neither reacted to SIGINT, but also not to SIGTERM. I think the latter one was what @jcrossley3 found out when using down instead of Ctrl-C.

Fixed now @jcrossley3 ?

Nope. Both indexers and both exporters still hang for 10 seconds each...
podman stop -t 10 compose_vexination-exporter_1
WARN[0010] StopSignal SIGTERM failed to stop container compose_vexination-exporter_1 in 10 seconds, resorting to SIGKILL
compose_vexination-exporter_1
exit code: 0
podman stop -t 10 compose_bombastic-exporter_1
WARN[0010] StopSignal SIGTERM failed to stop container compose_bombastic-exporter_1 in 10 seconds, resorting to SIGKILL
compose_bombastic-exporter_1
exit code: 0
podman stop -t 10 compose_nats_1
compose_nats_1
exit code: 0
podman stop -t 10 compose_bombastic-indexer_1
WARN[0010] StopSignal SIGTERM failed to stop container compose_bombastic-indexer_1 in 10 seconds, resorting to SIGKILL
compose_bombastic-indexer_1
exit code: 0
podman stop -t 10 compose_vexination-indexer_1
WARN[0010] StopSignal SIGTERM failed to stop container compose_vexination-indexer_1 in 10 seconds, resorting to SIGKILL

This occurs when I run this in one shell:
podman-compose -f compose.yaml -f compose-trustification.yaml -f compose-guac.yaml up

And this in another shell (both in the same dir):
podman-compose -f compose.yaml -f compose-trustification.yaml -f compose-guac.yaml down

Are you guys not seeing the same thing?

Here is what I get in the "down" terminal:
podman stop -t 10 compose_spog-ui_1
compose_spog-ui_1
exit code: 0
podman stop -t 10 compose_osv-certifier_1
compose_osv-certifier_1
exit code: 0
podman stop -t 10 compose_guac-ingestor_1
compose_guac-ingestor_1
exit code: 0
podman stop -t 10 compose_spog-api_1
compose_spog-api_1
exit code: 0
podman stop -t 10 compose_createbuckets_1
compose_createbuckets_1
exit code: 0
podman stop -t 10 compose_guac-graphql_1
compose_guac-graphql_1
exit code: 0
podman stop -t 10 compose_guac-collectsub_1
compose_guac-collectsub_1
exit code: 0
podman stop -t 10 compose_bombastic-api_1
compose_bombastic-api_1
exit code: 0
podman stop -t 10 compose_vexination-api_1
compose_vexination-api_1
exit code: 0
podman stop -t 10 compose_init-keycloak_1
compose_init-keycloak_1
exit code: 0
podman stop -t 10 compose_minio_1
compose_minio_1
exit code: 0
podman stop -t 10 compose_vexination-exporter_1
compose_vexination-exporter_1
exit code: 0
podman stop -t 10 compose_bombastic-exporter_1
compose_bombastic-exporter_1
exit code: 0
podman stop -t 10 compose_nats_1
compose_nats_1
exit code: 0
podman stop -t 10 compose_bombastic-indexer_1
compose_bombastic-indexer_1
exit code: 0
podman stop -t 10 compose_vexination-indexer_1
compose_vexination-indexer_1
exit code: 0
podman stop -t 10 compose_keycloak_1
compose_keycloak_1
exit code: 0
podman stop -t 10 compose_kafka_1
compose_kafka_1
exit code: 0
podman rm compose_spog-ui_1
compose_spog-ui_1
exit code: 0
podman rm compose_osv-certifier_1
compose_osv-certifier_1
exit code: 0
podman rm compose_guac-ingestor_1
compose_guac-ingestor_1
exit code: 0
podman rm compose_spog-api_1
compose_spog-api_1
exit code: 0
podman rm compose_createbuckets_1
compose_createbuckets_1
exit code: 0
podman rm compose_guac-graphql_1
Error: container 5a15a19bb907399c5eec3508bc0dbf2abad91922009f923332747ea9d4eb79f1 has dependent containers which must be removed before it: 2d8b5e2e419243218c0ea34562e22c43631329db1a2764fabf3c1554f1dd24b5, ab261dcf757b9594f6c8f6c6d0291c29f3c98fac912880736475bceb9485337b: container already exists
exit code: 125
podman rm compose_guac-collectsub_1
Error: container 674e6a39a4e8956343b59bacef8dfca0f3a3343f440b97081ca9dc52ecf9b563 has dependent containers which must be removed before it: 2d8b5e2e419243218c0ea34562e22c43631329db1a2764fabf3c1554f1dd24b5, ab261dcf757b9594f6c8f6c6d0291c29f3c98fac912880736475bceb9485337b: container already exists
exit code: 125
podman rm compose_bombastic-api_1
compose_bombastic-api_1
exit code: 0
podman rm compose_vexination-api_1
compose_vexination-api_1
exit code: 0
podman rm compose_init-keycloak_1
compose_init-keycloak_1
exit code: 0
podman rm compose_minio_1
compose_minio_1
exit code: 0
podman rm compose_vexination-exporter_1
compose_vexination-exporter_1
exit code: 0
podman rm compose_bombastic-exporter_1
compose_bombastic-exporter_1
exit code: 0
podman rm compose_nats_1
Error: container 89d1bc5631dc0606a3067e96b8e1eaadbfd735737c51b33a824bed6d265b37b9 has dependent containers which must be removed before it: 2d8b5e2e419243218c0ea34562e22c43631329db1a2764fabf3c1554f1dd24b5, 5a15a19bb907399c5eec3508bc0dbf2abad91922009f923332747ea9d4eb79f1, 674e6a39a4e8956343b59bacef8dfca0f3a3343f440b97081ca9dc52ecf9b563, ab261dcf757b9594f6c8f6c6d0291c29f3c98fac912880736475bceb9485337b: container already exists
exit code: 125
podman rm compose_bombastic-indexer_1
compose_bombastic-indexer_1
exit code: 0
podman rm compose_vexination-indexer_1
compose_vexination-indexer_1
exit code: 0
podman rm compose_keycloak_1
compose_keycloak_1
exit code: 0
podman rm compose_kafka_1
compose_kafka_1
exit code: 0

I think this one should be closed. It was a mix of SIGINT, SIGTERM.


Clicking "Use the App" button does not work if app not installed

Using Chrome on Macintosh, I click the "Use the App" button from the blue banner at the bottom of the window. It opens a blank window but does not open the app.

This is expected if you don't have the app installed. If we can handle the failure case, we can prompt for a download link.


Add Endpoint.productWith

It will save some allocations and make it easier to use.
The idea is to also pass a function that collects A, B into C such that product could be defined in terms of productWith(other)(Tuple2.apply).

Done in #709.


Looking for guidance on the prefix parameter

I'm trying to process the input file in 30s chunks, while maintaining context between them.
I've tried simply using the previous iteration's output in the prefix, but the final output is terrible.
What should I be inserting into the prefix so that translating 30s chunks at a time is the same as translating the large file?

Test Code:
from faster_whisper import download_model, WhisperModel

model_dir = download_model("medium")
model = WhisperModel(model_dir, compute_type="int8")

# Single File Test
print("Single File Test")
segments, _ = model.transcribe("N5Sample.wav", language="ja", task="translate", prefix=None, beam_size=1,
                               temperature=0, vad_filter=False)

for segment in segments:
    print(f"{segment.text}")

# Split N5Sample.wav into 30s segments using
# ffmpeg -i N5Sample.wav -f segment -segment_time 30 -c:a pcm_s16le -ar 16000 -ac 1 "N5Sample-%01d.wav"
print("\n\n\nMultiple File Test")
prefix = None
for i in range(0, 11):
    segments, _ = model.transcribe(f"N5Sample-{i}.wav", language="ja", task="translate", prefix=prefix, beam_size=1,
                                   temperature=0, vad_filter=False)

    print(f"Working on N5Sample-{i}.wav")
    prefix = ""
    for segment in segments:
        print(f"{segment.text}")
        prefix += f"{segment.text}"  # The output already contains a leading space character

Audio files - N5Sample.zip
Output is a bit verbose - it's attached in output.txt
N5Sample.zip
output.txt

You usually want to use the argument initial_prompt to provide a context.
May I ask why you want to do that? That's exactly what model.transcribe does by default.

May I ask why you want to do that?

I'm trying to translate a youtube live stream.
I'm basically reading input in 30s chunks and then passing it into whisper.
I want to do exactly what model.transcribe() is doing but with input fed in incrementally in 30-second chunks.

initial_prompt is much better, but still isn't perfect.
from faster_whisper import download_model, WhisperModel

model_dir = download_model("medium")
model = WhisperModel(model_dir, compute_type="int8")

# Split N5Sample.wav into 30s segments using
# ffmpeg -i N5Sample.wav -f segment -segment_time 30 -c:a pcm_s16le -ar 16000 -ac 1 "N5Sample-%01d.wav"
print("\n\n\nMultiple File Test")
prefix = None
for i in range(0, 11):
    segments, _ = model.transcribe(f"N5Sample-{i}.wav", language="ja", task="translate", initial_prompt=prefix, beam_size=1,
                                   temperature=0, vad_filter=False)

    print(f"Working on N5Sample-{i}.wav")
    prefix = ""
    for segment in segments:
        print(f"{segment.text}")
        prefix += f"{segment.text}"  # The output already contains a leading space character

output2.txt

I think I've figured it out.
prompt_deque = deque()
max_prompt_len = 224

for i in range(0, 11):
    print(f"\n\n\nWorking on N5Sample-{i}.wav")

    # Prepare prompt string to be passed in
    prompt = None

    while len(prompt_deque) > max_prompt_len:
        prompt_deque.popleft()

    if len(prompt_deque) > 0:
        prompt = ""
        for text in prompt_deque:
            prompt += f" {text}"

    print(f"Len: {len(prompt_deque)}, Prompt: {prompt}")
    segments, _ = model.transcribe(f"N5Sample-{i}.wav", language="ja", task="translate", initial_prompt=prompt,
                                   beam_size=1, temperature=0, vad_filter=False)

    for segment in segments:
        print(f"{segment.text}")
        prompt_deque.extend(segment.text.split())

Not 100% sure whether I'm passing in the correct tokens, or the correct length of tokens, but quality has improved significantly. Thanks for pointing me towards prompt instead of prefix.

The prompts work very well after being able to insert the tokens directly instead of messing around encoding and decoding from strings.
It looks like my ffmpeg split command isn't very good.
I sometimes have files that are 30.08s long and have to sometimes deal with hallucination caused by the 0.08s input.
Easily handled by dropping segments that start after too late.
Sample Code and output.
prompt_deque = deque(maxlen=224)

for i in range(0, 11):
    print(f"\n\n\n##############################################")
    print(f"Working on N5Sample-{i}.wav")

    with contextlib.closing(wave.open(f"N5Sample-{i}.wav", 'r')) as f:
        frames = f.getnframes()
        rate = f.getframerate()
        duration = frames / float(rate)
    print(f"Wav file duration: {duration}")

    print(f"Len: {len(prompt_deque)}\nDeque: {prompt_deque}")
    segments, _ = model.transcribe(f"N5Sample-{i}.wav", language="ja", task="translate", initial_prompt=prompt_deque,
                                   beam_size=1, temperature=0, vad_filter=False)

    # Input file duration is sometimes slightly beyond 30 seconds.
	# Added a check to drop - they are usually hallucination because the input is only 0.08 seconds or so.
    for segment in segments:
        if segment.start > duration:
            print("Warning: Exceeded segment.start")
            break

        print(f"[{segment.start}->{segment.end}] {segment.text} -- {segment.tokens}")
        prompt_deque.extend(segment.tokens)

test_multi_integer_prompts.txt
Pull request soon.


init, Next Steps: Remove wrong color reset

fixes https://github.com/prisma/prisma2/issues/480

LGTM!


CAMEL-19014 - Fixing issue about concurrence on the SimpleLanguage

Signed-off-by: Rhuan Rocha<EMAIL_ADDRESS>Description
Fixing the issue CAMEL-19014
Target

[x] I checked that the commit is targeting the correct branch (note that Camel 3 uses camel-3.x, whereas Camel 4 uses the main branch)

Tracking

[x] If this is a large change, bug fix, or code improvement, I checked there is a JIRA issue filed for the change (usually before you start working on it).

Apache Camel coding standards and style

[x] I checked that each commit in the pull request has a meaningful subject line and body.

[x] I formatted the code using mvn -Pformat,fastinstall install && mvn -Psourcecheck

Hi @essobedo, thank you for reviewing the PR.
I have changed the synchronized block to lock. Now the evaluate method tries to get the ReadLock that does not block the thread for multiple ReadLock. The init method is using the WriteLock, thus the evaluate method is blocked only in case of a WriteLock on init method. It avoids the evaluate method to be blocked unnecessarily.
I think we should develop this method as thread-safe, as it is cached and can be used in a multithreaded task (like parallel or some internal multithread task). Thus, to avoid an issue now or in future, I think it should be immutable or thread-safe

I have changed the synchronized block to lock. Now the evaluate method tries to get the ReadLock that does not block the thread for multiple ReadLock. The init method is using the WriteLock, thus the evaluate method is blocked only in case of a WriteLock on init method. It avoids the evaluate method to be blocked unnecessarily.

It if needs to be fixed, it is not the right way to fix it, you don't even need locks here. If you really want to fix it, you will have to rewrite the code of the concatExpression, to have 2 classes instead of one (for constants only and not only constants). The problem is with the case of the not only constants, for it, you simply need to set the content of col once for all while initializing the instance instead of doing it in the init method. Moreover, you would need to add a unit test to prove that the bug is really fixed, see TDD.

I think we should develop this method as thread-safe, as it is cached and can be used in a multithreaded task (like parallel or some internal multithread task). Thus, to avoid an issue now or in future, I think it should be immutable or thread-safe

This decision doesn't really belong to us, especially if we disagree, I guess that someone like @davsclaus or @oscerd could eventually decide. But, here, according to your stack trace, if we get this problem it is because the expressions are misused such that the threads spend their time to re-initialize the same expression over and over again instead of only once at startup as the framework does, I don't believe that for a production-ready code, we would really want this behavior, so it tends to prove that it is more a misuse than a bug but it is only my point of view, let's see what others think.

The best approach for me is to use an immutable object, however, if it is not possible I think we should consider using a lock or synchronized block.

Actually, immutability is the idea behind what I proposed

Understood and I agree. However, I think we don't need 2 classes, but just rewrite the concatExpression to have 1 class immutable. What do you think about it?
In the case of 2 classes, we will need to define when using immutable e when using mutable. For me, it is an unneeded complex.

The best approach for me is to use an immutable object, however, if it is not possible I think we should consider using a lock or synchronized block.

Actually, immutability is the idea behind what I proposed

Hi @essobedo reviewing the class, I agree with you. This class already knows if the expression is constant or not. Thus, for me you are right! Thanks a lot.
I'll write the unit test and use the approach you said, and we can discuss it again.

Well, we don't necessarily need 2 classes, but the code will be cleaner and thus easier to maintain, it will then follow the Single-responsibility principle.
Regarding, the unit test, you can simply adapt what the OP provided as it helps to reproduce the bug.

From what I read this is really a corner case. I'm not sure we should fix that.

@rhuan080 +1 I agree, if we can end up with a solution based on immutable classes, it is a good tradeoff

Using immutable classes sounds good and I'm +1 on that

Hi,
I added the unit test. Now, I'll rewrite the concatExpression to be immutable. @essobedo and @oscerd If you have questions or improvement about the unit test, please, tell me :-)

Hi,
I added the unit test. Now, I'll rewrite the concatExpression to be immutable. @essobedo and @oscerd If you have questions or improvements about the unit test, please, tell me :-)

I don't understand why you don't use the test case provided by the OP?

The test uses components that are not available in this module. Thus, I created the test using what is available inside the support module. I have reproduced the issue with my test.

The test provided uses components that are not available in this module. Thus, I created the test using what is available inside the camel-support module. I have reproduced the issue with my test.

You can put it in this package https://github.com/apache/camel/tree/main/core/camel-core/src/test/java/org/apache/camel/language

Hi @essobedo!
Added the test according to your suggestion.

Hi @essobedo, I'll fix the unit tests. Thanks a lot!
I have committed the refractory of the concatExpression and created one method to build the optimized expression (immutable) and the unoptimized expression. Let me know if you have any questions about the solution.

be careful to not overcomplicate this - the init of services in Camel are used during bootstrap and are called by Camel in sequence (no locking needed).
We should not do special weird code for one corner case with simple language that been in Camel since 1.x.
If you can come up with a better parser (then yeah) but do not sacrifice the init service lifecycle of Camel.

I'm sorry for closing this issue. It was just a click error, and the button to close does not have a double check 🤦♂
Thank you @essobedo and @oscerd !
As the @davsclaus that the init is just called at the Camel bootstrap and the init method is not called inside a parallel process, I think just preventing the collection from being re-initialized in case of calling the init again is sufficient. I will update the issue in Jira with these information soon..

what is the status of this? And I think its safer to do this in 3.21 release only, and not 3.20.x to keep it as-is.
This is a corner case and simple language is used a lot in Camel routes.

@rhuan080 Would you mind creating a new PR for the branch camel-3.x for Camel 3.21?

This PR causes NPE errors on main, so hold until we fixed this or we need to revert and drop this PRs

okay the optimized can be even better, if there are only ConstantExpressionAdapter then you can build the result string in init and return its constant value in evaluate

Okay this commit fixes the NPEs
https://github.com/apache/camel/commit/d6ca5fca99d528b5394113433c5f4e9a1b0b5296

And this commit optimizes when there are only constant values
https://github.com/apache/camel/commit/f2a3cc20d07271cc2bfba26cb3ecdcf4c119866d

So we need a PR for camel-3.x branch and leave 3.20.x as-is.
And in 3.x we need this PR and the 2 commits I linked.

Hi @davsclaus, ok! I'll send a PR to camel-3.x. I'll update the 3.x to add the commits.

PR 3.x: https://github.com/apache/camel/pull/9531


ardy easy task fishing requirement of 15 isn't correct

I was doing the ardy easy tasks today, and it said I needed 15 fishing for the trawler part. I went in with 11 fishing and the task completed anyway!

Of note for whoever fixes this, from the Fishing Trawler wiki page:

Players need a minimum of level 15 Fishing to receive any rewards, but can board the ship otherwise at any level.

Yeah just checked you can do it with 1 fishing even. 15 is req to get rewards.


chore(main): release 0.2.0

:robot: I have created a release beep boop
0.2.0 (2023-11-24)
Features

reworked import paths to improve usage (c336c2c)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/pdylanross/gh-release-autoupdate/releases/tag/v0.2.0 :sunflower:


Not able to install Conjur plugin due to Credentials Binding Plugin dependency/compatibility

Hi,
I am currently trying to install Conjur's plugin from https://github.com/cyberark/conjur-credentials-plugin/releases/download/v0.5/Conjur.hpi on a Jenkins ver. 2.150.2 on Openshift.
java.io.IOException: Conjur Secrets Plugin v0.5 failed to load.

Credentials Binding Plugin v1.15 is older than required. To fix, install v1.16 or later.
at hudson.PluginWrapper.resolvePluginDependencies(PluginWrapper.java:652)

Tried also the repo clone and maven compilation, both sources do not work with the mentioned versions:
joalmaraz$ md5 Conjur.hpi
MD5 (Conjur.hpi) = 98461ba333421f4a9f3c859d89d7631c
joalmaraz$ md5 Conjur.hpi.1
MD5 (Conjur.hpi.1) = b71ab22c973b5ac8b4f953b1ed69cd80

I've upgrade the Credentials bind plugin, but it would be good to have in the Conjur's repo page the details of the required minimum version of Jenkins' plugins.


Full meeting summary

@G1lius Thank you again for this.

Just a small nit for next time: can you set your edit to spaces rather than tab indents please? :+1:
Fixed in 05425d2e80955ec234b686d31d777b48dce725fb

Ok, Will do.


.github: Fix dependabot schedule and bump open PR limit

GH threw the following error:
The property '#/updates/0/schedule/time' value "4:00" did not match the regex '^\d\d:\d\d$'
The property '#/updates/1/schedule/time' value "4:00" did not match the regex '^\d\d:\d\d$'

Seems like this needs tools/prepare-source.sh ?

Indeed, done!


editorconfig/sh: Use 4 spaces

The editorconfig says it wants to use 2 spaces for indentation inside
shell scripts, but none of the shell scripts in the repository follow
this.
# Files using 4 spaces:
% rg -g '!/pulumi/' -g '*.sh' --files-with-matches '^    \S' | wc -l
       4

# Files using 2 spaces:
% rg -g '!/pulumi/' -g '*.sh' --files-with-matches '^  \S' | wc -l
   0

Instead of going back and fixing each script, just update the
editorconfig.

Current dependencies on/for this PR:

main

PR #1080   👈

This comment was auto-generated by Graphite.


MBR reading

Adds functionallity for reading the MBR table in the core
library, sedlockctl, and tcgsdiag.
It still needs to be added to the locking API library.

:tada: This PR is included in version 0.8.7 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Scene background color renders incorrectly

TANGRAM VERSION: 0.13.4
ENVIRONMENT:
OSX Chrome.
TO REPRODUCE THE ISSUE, FOLLOW THESE STEPS:
Render this scene file:
scene:
  background: 'hsl(204, 39%, 95%)'

RESULT:
The result is rendered on the left side of this image.

EXPECTED RESULT:
Expected the color on the right hand side (hsl(204, 39%, 95%)).
Any idea what's wrong here? That's a very big colour difference. Do I need to change some lighting settings or something? I'm just creating a regular, static 2D map - no 3D required.

 The syntax needs to be:
scene:
  background:
    color: 'hsl(204, 39%, 95%)'

:+1: easiest bug all day :)
I've added an issue to track a related issue, which is that Tangram syntax errors like the one above example fail silently with no feedback in the browser.


私聊时出现以下错误，请问该如何解决？

retry 1 times, error: Error: ChatGPT error 429: {
"error": {
"message": "Your access was terminated due to violation of our policies, please check your email for more information. If you believe this is in error and would like to appeal, please contact<EMAIL_ADDRESS>"type": "access_terminated",
"param": null,
"code": null
}
}

这个不是代码的问题了，是你使用过渡了吧，频繁调用可能会被限制

看报错是调用次数过于频繁


[tracking] Browser Support

Great work on shumai! I'm very new to bun specifically and javascript in general, but I love the idea.
I am trying to import shumai into an html page I'm building and am curious how all the pieces work together.
I have @shumai/shumai installed via bun and can import it using ES6 syntax into a .js file no problem.
I run bun bun which generates a node_modules.bun which can be copied into node_modules.js by running ./node_modules.bun > node_modules.js
I can then import a script module <script type="module" src="node_modules.js">...</script> which seems to work.
However, as is intended by bun, hashes are exported instead of the modules holding the same structure. So now importing and using sm doesn't expose the same API and randn or tensor for example aren't available.
In your time working with bun, have you figured out a supported way to do this? How would you suggest using shumai in a web page?
I appreciate your help

Unfortunately, we don't have a browser backend yet.  I'll leave this open as the web support tracking issue!
We'll probably want to use the kernels in TF.js and Paddle.js.
I'm curious to hear about your use case.  Are you targeting portability (runs on phones etc) or would you be happy to use specific browsers (which comes with speed)?

Not mobile, I'm mostly interested in the "privacy" aspect of running everything client side. So speed and generality matter less than simply working. I like the tensor interface of Shumai. I'm happy to help out here if I can


Setting up of sphinx-gallery

There are folders inside hoi/examples for Examples on respective topics.

Great, thank you !

#14


Use SELECT...FOR UPDATE to update session data in the database instead of DELETE, INSERT.

I have only compile-tested this; I wanted to get feedback on the approach, how to handle errors, etc.

@ChristopherSchultz Is there a list of supported database systems with which the DataSourceStore is compatible?  Are you sure that they all support "SELECT FOR UPDATE"?  I tried to look that up and the "best" thing I found was https://www.sql-workbench.eu/dbms_comparison.html

@ChristopherSchultz Is there a list of supported database systems with which the DataSourceStore is compatible? Are you sure that they all support "SELECT FOR UPDATE"? I tried to look that up and the "best" thing I found was https://www.sql-workbench.eu/dbms_comparison.html

Good question. I was originally going to use MERGE but the database I have at-hand (MariaDB) doesn't support it, so I went with SELECT...FOR UPDATE. It's not clear to me if the SELECT...FOR UPDATE NOWAIT listed in that table is specifically talking about the NOWAIT part of the query. For example, I know that both MariaDB and MySQL have supported SELECT...FOR UPDATE for a long time, but the entry for MySQL states "Since 8.0" and MariaDB says "No". A quick check of the HSQLDB Documentation shows that SELECT...FOR UPDATE is available while that list claims it is not supported. Same thing with IBM DB2 and SQL Server. But it's clear that not all RDMBSs support that syntax.
Maybe it's not possible to write a single code-path to satisfy all major RDBMS systems. I'd be happy to change the PR to offer a selection between the two via configuration.

Yeah, I guess that site is not up to date.  I also used SELECT FOR UPDATE in MySQL 5.7.
There is also INSERT ON CONFLICT UPDATE support in MySQL and Postgres, but it would be difficult to find an optimized solution that fits all.

I have a question that why we don't add a real primary key(auto-increment) to solve the problem that primary key constraint violation when insert data to database simultaneously? And we can select session data from table by session-id and order (DSC) by ID (real primary key) when load session, then the newest result is what we need.  Thus, we can avoid adding lock(FOR UPDATE or others) from the database level by this way.
I think this will work and so simple, but I don't know if there will be any security issues.
Thoughts?

The problem is that there is a window of opportunity between the existing DELETE and INSERT where the session_id column (which is UNIQUE or equivalent) can be INSERTed by another thread. Changing the definition of the table to include a separate PK and removing the UNIQUE constraint from the session_id column is one way to solve this issue, but it would break any existing installation which is not using that kind of table definition.
I would definitely not want to do that for a point-release, and my goal here is to back-port this all the way back to 8.5 at this point. I think some larger changes could be made separately from this current effort, and restricted to maybe Tomcat 11.0.x and later.

I've been thinking about this more and I think it could cause problems for people not using appId+sessionId (or just sessionId) as the primary key for the DB table storing the sessions. INSERT and DELETE are not required to include a value for the PK. Some databases can automatically-allocate a value for that purpose and so the existing DELETE+INSERT scheme works for them. But the SELECT ... FOR UPDATE will not because it does not include the table's PK.
One way to fix this would be to add an optional PK column (columns?) to the configuration.
I think this is pretty important, because databases which use PK-indexed organization (SQL Server, InnoDB, and others) will thrash-around if appId+sessionId are the PK columns, so anybody using those kinds of DBs would likely choose a separate PK column that doesn't cause those ugly performance problems.
Any other thoughts?

Considering the difficult of handling all situation for all databases perhaps the following:
Punt the session update operation to a callback or interface, have one or two sensible defaults (like for the major databases and specific table configuration) and have a way for the user to provide their own implementation? Adds a little of complexity but code flow would arguably be cleaner and more organized since the DataStoreSource::save wouldn't need to have a bunch of knowledge on how it works. And it would be more flexible for users with more complex setups that they can't change.
Basically something similar to how the X509UserNameProvider works.

I would love to see an interface that goes a step further and allows for NoSQL implementations as well.  For example, Redis is an excellent option for a data store IMO.

One way to fix this would be to add an optional PK column (columns?) to the configuration

+1 for a Primary Key column.  It improves performance and is supported by all SQL compliant DBMS's.

One way to fix this would be to add an optional PK column (columns?) to the configuration.

+1

I have a question that why we don't add a real primary key(auto-increment) to solve the problem that primary key constraint violation when insert data to database simultaneously?

The problem is that there is a window of opportunity between the existing DELETE and INSERT where the session_id column (which is UNIQUE or equivalent) can be INSERTed by another thread. Changing the definition of the table to include a separate PK and removing the UNIQUE constraint from the session_id column is one way to solve this issue, but it would break any existing installation which is not using that kind of table definition.
I would definitely not want to do that for a point-release, and my goal here is to back-port this all the way back to 8.5 at this point. I think some larger changes could be made separately from this current effort, and restricted to maybe Tomcat 11.0.x and later.

Punt the session update operation to a callback or interface, have one or two sensible defaults (like for the major databases and specific table configuration) and have a way for the user to provide their own implementation?

If you are going to provide your own implementation, you could just subclass DataSourceStore and change the behavior of the store (or load, etc.) methods.
This does bring up a good point: rather than having a new configuration option, I could simply have a subclass of DataSourceStore which overrides the store method to do the SELECT...FOR UPDATE. Then there is a much smaller change to the existing code, which is beneficial for stability. In fact, I think no existing code needs to change; everything is in the new class,  including this optional new primary key column option.


Add version: LuaLS.lua-language-server version 3.6.3

Pull request has been created with Komac v1.9.1 :rocket:
Microsoft Reviewers: codeflow:open?pullrequest=https://github.com/microsoft/winget-pkgs/pull/116107&drop=dogfoodAlpha

@wingetbot waivers Add Validation-Executable-Error