I don't remember there is a flag to disable canvas. Canvas is used on a large amount of websites so even if you can disable it most of the websites won't work without it.

Yes, the second one helped:
sed -i.bak 's/        ldflags = \[\]/        ldflags = \[ "-lz" \]/g' chrome/BUILD.gn

The chrome binary has been successfully built. And it works, it does not crashes at all. So this means, that one of the removed patches caused the crashes. Or maybe the debug mode prevented it?
Tomorrow i'll build Chromium again with no debug and without the libevent, libicu and fingerprinting patches and see if it works.
Then Privacy Badger will do the job.

Yes, the second one helped:
sed -i.bak 's/        ldflags = \[\]/        ldflags = \[ "-lz" \]/g' chrome/BUILD.gn

The chrome binary has been successfully built. And it works, it does not crashes at all. So this means, that one of the removed patches caused the crashes. Or maybe the debug mode prevented it?
Tomorrow i'll build Chromium again with no debug and without the libevent, libicu and fingerprinting patches and see if it works.
Then Privacy Badger will do the job.

I've just finished building the chrome binary with the flags.gn, without the patches above and without debug. It still crashes:
Fontconfig warning: "/etc/fonts/fonts.conf", line 100: unknown element "blank"
[26697:26697:0117/171906.350669:ERROR:browser_dm_token_storage_linux.cc(101)] Error: /etc/machine-id contains 0 characters (32 were expected).
[26697:26827:0117/171906.476505:ERROR:object_proxy.cc(621)] Failed to call method: org.freedesktop.Notifications.GetCapabilities: object_path= /org/freedesktop/Notifications: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Notifications was not provided by any .service files
Érvénytelen utasítás

(The last line means "invalid instruction" in hungarian.)
These messages (with the exception of the invalid instruction) are printed out by my working version too, so they are not the cause.
So, the debug build does not crash, the identically parametered release build does. We cannot debug. Can i do anything else, but remove the lines from the flags.gn one by one and build it again and again to test which causes the problem?

I've just finished building the chrome binary with the flags.gn, without the patches above and without debug. It still crashes:
Fontconfig warning: "/etc/fonts/fonts.conf", line 100: unknown element "blank"
[26697:26697:0117/171906.350669:ERROR:browser_dm_token_storage_linux.cc(101)] Error: /etc/machine-id contains 0 characters (32 were expected).
[26697:26827:0117/171906.476505:ERROR:object_proxy.cc(621)] Failed to call method: org.freedesktop.Notifications.GetCapabilities: object_path= /org/freedesktop/Notifications: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Notifications was not provided by any .service files
Érvénytelen utasítás

(The last line means "invalid instruction" in hungarian.)
These messages (with the exception of the invalid instruction) are printed out by my working version too, so they are not the cause.
So, the debug build does not crash, the identically parametered release build does. We cannot debug. Can i do anything else, but remove the lines from the flags.gn one by one and build it again and again to test which causes the problem?

Did you include is_official_build=true? Try remove that.
is_debug only disables certain compiler optimizations and enables some extra checks in the code. The functionalities shall be the same,so if speed is not a concern then you can just use a debug build.

Did you include is_official_build=true? Try remove that.
is_debug only disables certain compiler optimizations and enables some extra checks in the code. The functionalities shall be the same,so if speed is not a concern then you can just use a debug build.

And bingo! With is_official_build set to false it now works flawlessly, no further debugging needed.
So, thank you very much again for your vast amount of help and tremendous patience, for in round two too. Here is the - now really - final script to build (it is just finished running and the resulting package contains everything, the binary is working):
#!/bin/sh
cd "$HOME"
mkdir kocsog_gugli 2>/dev/null
cd kocsog_gugli

echo
echo "======================"
echo "Getting depot tools..."
echo "======================"
echo
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$PATH:"$HOME"/kocsog_gugli/depot_tools

echo
echo "=========================="
echo "Getting Chromium source..."
echo "=========================="
echo
mkdir chromium 2>/dev/null
cd chromium/
fetch --nohooks chromium
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

echo
echo "===================="
echo "Checkout and sync..."
echo "===================="
echo
cd src
git checkout 73.0.3683.75
gclient sync -D
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

# Use the "fontconfig.patch" from UGC and not from Debian. The rest of the two patchset can be merged.
echo
echo "==========="
echo "Patching..."
echo "==========="
echo
echo "Getting Debian patchset..."
wget http://deb.debian.org/debian/pool/main/c/chromium/chromium_73.0.3683.75-1~deb9u1.debian.tar.xz
tar xf chromium_73.0.3683.75-1~deb9u1.debian.tar.xz
rm chromium_73.0.3683.75-1~deb9u1.debian.tar.xz
rm -rf debian/patches/arm
find debian/patches/ -name '*.patch' -exec mv {} ./ \;
rm -rf debian
echo "Getting Ungoogled-Chromium patchset..."
git clone https://github.com/Eloston/ungoogled-chromium/
cd ungoogled-chromium/
git checkout 73.0.3683.103-2
cd ..
find ungoogled-chromium/patches/ -name '*.patch' -exec mv {} ./ \;
rm -rf ungoogled-chromium
# Remove unneeded libevent, libicu and fingerprinting patches.
rm event.patch icu.patch icu57.patch icu-new.patch fingerprinting-flags-client-rects-and-measuretext.patch flag-fingerprinting-canvas-image-data-noise.patch
echo "Applying patches..."
for PATCH in *.patch
do
	echo "****************"
	echo "* ""$PATCH"
	echo "****************"
	patch -p1 -f < "$PATCH"
	echo "****************"
	echo
done
rm *.patch
# Some files are left in an uncompilable state.
echo "Some hand patching..."
# Designated initializers patch is erroneous with the bundled CLang 9.
sed -i.bak 's/    Settings(bool randomise):randomised_sampling_enabled(randomise) {}//g' base/task/sequence_manager/sequence_manager.h
# Patch a mispatched file's macro.
sed -i.bak -n '1h;1!H;${g;s/#endif\n#endif/#endif/;p;}' chrome/browser/ui/chrome_pages.cc
# Safe browsing patch is erroneous with chrome 73.0.
sed -i.bak '/^static_library("safe_browsing") {/i sources = []\n deps = []' chrome/browser/safe_browsing/BUILD.gn
# Comment some ICU calls in the bug reporting.
sed -i.bak 's|u_|// u_|g' third_party/breakpad/breakpad/src/common/string_conversion.cc
# Rename a duplicate dummy function.
sed -i.bak 's/QuarantineFileResult QuarantineFile/QuarantineFileResult QuarantineFile1/g' components/download/quarantine/quarantine.cc
# Chromium needs libz.
sed -i.bak 's/        ldflags = \[\]/        ldflags = \[ "-lz" \]/g' chrome/BUILD.gn

echo
echo "============="
echo "Generating..."
echo "============="
echo
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH":/usr/lib/x86_64-linux-gnu/pkgconfig/
wget https://raw.githubusercontent.com/Eloston/ungoogled-chromium/73.0.3683.103-2/flags.gn
echo 'gtk_version=2' >> flags.gn
echo 'use_gnome_keyring=false' >> flags.gn
echo 'use_pulseaudio=false' >> flags.gn
echo 'use_sysroot=false' >> flags.gn
sed -i.bak 's/is_official_build=true/is_official_build=false/g' flags.gn
gn gen out/Release "--args=`cat flags.gn | tr '\n' ' '`"
gn args --list out/Release/ > ninja.settings
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

echo
echo "==========="
echo "Building..."
echo "==========="
echo
autoninja -C out/Release chrome
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

echo
echo "============"
echo "Packaging..."
echo "============"
echo
cd out/Release
mkdir ungoogled-chromium-devuan2-gtk2-portable
cp -R locales chrome *.pak *.info *.so *.bin *.dat ungoogled-chromium-devuan2-gtk2-portable/
tar -zcf ungoogled-chromium-devuan2-gtk2-portable.tar.gz ungoogled-chromium-devuan2-gtk2-portable
rm -rf ungoogled-chromium-devuan2-gtk2-portable
mv ungoogled-chromium-devuan2-gtk2-portable.tar.gz "$HOME"/
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

if [ "$1" != "" ];
then
	echo
	echo "=============="
	echo "Cleaning up..."
	echo "=============="
	echo
	rm -rf "$HOME"/kocsog_gugli
	free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null
fi

And bingo! With is_official_build set to false it now works flawlessly, no further debugging needed.
So, thank you very much again for your vast amount of help and tremendous patience, for in round two too. Here is the - now really - final script to build (it is just finished running and the resulting package contains everything, the binary is working):
#!/bin/sh
cd "$HOME"
mkdir kocsog_gugli 2>/dev/null
cd kocsog_gugli

echo
echo "======================"
echo "Getting depot tools..."
echo "======================"
echo
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$PATH:"$HOME"/kocsog_gugli/depot_tools

echo
echo "=========================="
echo "Getting Chromium source..."
echo "=========================="
echo
mkdir chromium 2>/dev/null
cd chromium/
fetch --nohooks chromium
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

echo
echo "===================="
echo "Checkout and sync..."
echo "===================="
echo
cd src
git checkout 73.0.3683.75
gclient sync -D
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

# Use the "fontconfig.patch" from UGC and not from Debian. The rest of the two patchset can be merged.
echo
echo "==========="
echo "Patching..."
echo "==========="
echo
echo "Getting Debian patchset..."
wget http://deb.debian.org/debian/pool/main/c/chromium/chromium_73.0.3683.75-1~deb9u1.debian.tar.xz
tar xf chromium_73.0.3683.75-1~deb9u1.debian.tar.xz
rm chromium_73.0.3683.75-1~deb9u1.debian.tar.xz
rm -rf debian/patches/arm
find debian/patches/ -name '*.patch' -exec mv {} ./ \;
rm -rf debian
echo "Getting Ungoogled-Chromium patchset..."
git clone https://github.com/Eloston/ungoogled-chromium/
cd ungoogled-chromium/
git checkout 73.0.3683.103-2
cd ..
find ungoogled-chromium/patches/ -name '*.patch' -exec mv {} ./ \;
rm -rf ungoogled-chromium
# Remove unneeded libevent, libicu and fingerprinting patches.
rm event.patch icu.patch icu57.patch icu-new.patch fingerprinting-flags-client-rects-and-measuretext.patch flag-fingerprinting-canvas-image-data-noise.patch
echo "Applying patches..."
for PATCH in *.patch
do
	echo "****************"
	echo "* ""$PATCH"
	echo "****************"
	patch -p1 -f < "$PATCH"
	echo "****************"
	echo
done
rm *.patch
# Some files are left in an uncompilable state.
echo "Some hand patching..."
# Designated initializers patch is erroneous with the bundled CLang 9.
sed -i.bak 's/    Settings(bool randomise):randomised_sampling_enabled(randomise) {}//g' base/task/sequence_manager/sequence_manager.h
# Patch a mispatched file's macro.
sed -i.bak -n '1h;1!H;${g;s/#endif\n#endif/#endif/;p;}' chrome/browser/ui/chrome_pages.cc
# Safe browsing patch is erroneous with chrome 73.0.
sed -i.bak '/^static_library("safe_browsing") {/i sources = []\n deps = []' chrome/browser/safe_browsing/BUILD.gn
# Comment some ICU calls in the bug reporting.
sed -i.bak 's|u_|// u_|g' third_party/breakpad/breakpad/src/common/string_conversion.cc
# Rename a duplicate dummy function.
sed -i.bak 's/QuarantineFileResult QuarantineFile/QuarantineFileResult QuarantineFile1/g' components/download/quarantine/quarantine.cc
# Chromium needs libz.
sed -i.bak 's/        ldflags = \[\]/        ldflags = \[ "-lz" \]/g' chrome/BUILD.gn

echo
echo "============="
echo "Generating..."
echo "============="
echo
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH":/usr/lib/x86_64-linux-gnu/pkgconfig/
wget https://raw.githubusercontent.com/Eloston/ungoogled-chromium/73.0.3683.103-2/flags.gn
echo 'gtk_version=2' >> flags.gn
echo 'use_gnome_keyring=false' >> flags.gn
echo 'use_pulseaudio=false' >> flags.gn
echo 'use_sysroot=false' >> flags.gn
sed -i.bak 's/is_official_build=true/is_official_build=false/g' flags.gn
gn gen out/Release "--args=`cat flags.gn | tr '\n' ' '`"
gn args --list out/Release/ > ninja.settings
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

echo
echo "==========="
echo "Building..."
echo "==========="
echo
autoninja -C out/Release chrome
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

echo
echo "============"
echo "Packaging..."
echo "============"
echo
cd out/Release
mkdir ungoogled-chromium-devuan2-gtk2-portable
cp -R locales chrome *.pak *.info *.so *.bin *.dat ungoogled-chromium-devuan2-gtk2-portable/
tar -zcf ungoogled-chromium-devuan2-gtk2-portable.tar.gz ungoogled-chromium-devuan2-gtk2-portable
rm -rf ungoogled-chromium-devuan2-gtk2-portable
mv ungoogled-chromium-devuan2-gtk2-portable.tar.gz "$HOME"/
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

if [ "$1" != "" ];
then
	echo
	echo "=============="
	echo "Cleaning up..."
	echo "=============="
	echo
	rm -rf "$HOME"/kocsog_gugli
	free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null
fi

Glad to hear it finally worked for you!
If you have some extra time, probably you can summarize the pitfalls you experienced and how you solved them in the wiki. It can be helpful to others. But no worry if you don't have the time, since this thread itself can be a great reference for those who facing building problems in the future.

Glad to hear it finally worked for you!
If you have some extra time, probably you can summarize the pitfalls you experienced and how you solved them in the wiki. It can be helpful to others. But no worry if you don't have the time, since this thread itself can be a great reference for those who facing building problems in the future.

Okay, when i'll get some free time for this, i will summarize them. However, should i create a new article or add the content to another?

Okay, when i'll get some free time for this, i will summarize them. However, should i create a new article or add the content to another?

Considering the length of the thread it shall be better to be a separate article. You can open a PR to the wiki repo and see what Eloston says. I think most likely he will agree a new article is good.

Considering the length of the thread it shall be better to be a separate article. You can open a PR to the wiki repo and see what Eloston says. I think most likely he will agree a new article is good.

Very well, i'll collect my thoughts, re-read the entire commentstream and make a new article about building UGC with GTK2. For now, under Devuan 2 (Debian 9), but when i'll have to update to Devuan 3 (Debian 10), i'll cover that too. Whenever i get the time. (Since Debian 10 is officially supported by UGC, it will be much easier, i just have to use the GTK2 patch...)
I'm curious if the GTK2 patch could be adapted to later Chromium versions too...

Very well, i'll collect my thoughts, re-read the entire commentstream and make a new article about building UGC with GTK2. For now, under Devuan 2 (Debian 9), but when i'll have to update to Devuan 3 (Debian 10), i'll cover that too. Whenever i get the time. (Since Debian 10 is officially supported by UGC, it will be much easier, i just have to use the GTK2 patch...)
I'm curious if the GTK2 patch could be adapted to later Chromium versions too...


Add randomPlaceholderImage API

Description
Used https://picsum.photos/ api to generate random placeholder image with the given height and width by the user

Checklist

[X] API used in this PR was not used in just-calling-random-api before.
[X] API used in this PR is Public or I have permission to use it.
[X] My contribution is working.
[X] My contribution doesn't expose any API keys.
[X] My changes don't generate any new warnings.
[X] My changes don't affect any work done by other developers.

Thanks for the PR


Unable to insert relative or root-relative links

Hello,
When I insert a relative or root-relative link, the media folder is prepended to the link href.
Absolute links work just fine, but are less useful if the site is used in several subdomains.
Screencast from 16-11-23 08:28:42.webm
Thanks for your work in this fantastic CMS :smile:

This is fixed in v3.4.6.


init kbfs in a goroutine so we dont get stuck

Code from @mmaxim
Otherwise when we do bind init() it gets stuck doing all this work
@keybase/react-hackers

Yeah @gabriel should look at this, I just tossed it together as a proof of concept. I don't know if kbfsConfig not being set when we return is a problem.


Un-confine the mouse on game over

The mouse doesn't need to be confined on the game over screen, so un-confine it.
I also added a space to the project name and added a description.

On second thought I'd do something like this:
diff --git a/level/ui.gd b/level/ui.gd
index 88de755..1572655 100644
--- a/level/ui.gd
+++ b/level/ui.gd
@@ -21,11 +21,12 @@ const RANDOM_BITS = [

 func _ready():
 	$game_over.hide()
-	$info.hide()

 	if global.first_run:
 		global.first_run = false
 		show_info()
+	else:
+		hide_info()

 	$game_over/random_bit.set_bbcode(RANDOM_BITS[randi() % RANDOM_BITS.size()])

@@ -69,6 +70,7 @@ func game_over():
 	$AnimationPlayer.play("game_over")
 	yield($AnimationPlayer, "animation_finished")
 	$AnimationPlayer.play("highlight_button")
+	Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)

 func show_score():

@akien-mga: On second thought I'd do something like this:
+	else:
+		hide_info()

For some reason this causes enemies to stop spawning after the first round. If I use $info.hide() in the else: it works.

For some reason this causes enemies to stop spawning after the first round. If I use $info.hide() in the else: it works.

Well the idea is that hide_info() sets the mouse mode to confined, that's why it's used there.
I think you uncovered a bug in global.reset(), try this:
diff --git a/global.gd b/global.gd
index 07b7e2d..c69c1f9 100644
--- a/global.gd
+++ b/global.gd
@@ -101,7 +101,7 @@ func reset():
 	start_time = OS.get_system_time_secs()
 	time_passed = 0
 	time_paused = 0
-	last_pause_time = 0
+	last_pause_time = start_time
 	game_over = false
 	score = 0
 	combo = 0
diff --git a/level/ui.gd b/level/ui.gd
index 88de755..627c5bd 100644
--- a/level/ui.gd
+++ b/level/ui.gd
@@ -21,11 +21,12 @@ const RANDOM_BITS = [

 func _ready():
 	$game_over.hide()
-	$info.hide()

 	if global.first_run:
 		global.first_run = false
 		show_info()
+	else:
+		hide_info()

 	$game_over/random_bit.set_bbcode(RANDOM_BITS[randi() % RANDOM_BITS.size()])

@@ -66,6 +67,7 @@ func _process(_delta):

 func game_over():
+	Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
 	$AnimationPlayer.play("game_over")
 	yield($AnimationPlayer, "animation_finished")
 	$AnimationPlayer.play("highlight_button")

Thanks!


chore(copy): change "zero fees" to "low fees" for ramp cash-in bottom…

… sheet
Description
Ramp doesn't have zero fees anymore, so we should say "low fees"
Other changes
na
Tested
ran locally and checked that the new copy appears where I expected it to

How others should test
na
Related issues
na
Backwards compatibility
na

Hey @MuckT since NA is mentioned in how other should test section, we are skipping this PR
Cc: @cajubelt
Thanks.!


deps: regenerating with new Protobuf (2.0.x)

To merge into 2.0.x branch. This PR was generated using Protobuf 3.19.6. Source-Link: https://github.com/googleapis/googleapis/commit/e1738ee972b49fd0c4d4718b035444495142b781

Looks like we're seeing the following with `ci/depenendecies (17):
Unrecognized VM option 'MaxPermSize=128m'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
failure (1), sleeping 40...
Unrecognized VM option 'MaxPermSize=128m'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

dependencies check is not needed. Removed from required checks.

OwlBot Post Processor tried to update the workflow file. It's not relevant here.
To https://github.com/suztomo/java-iamcredentials.git
 ! [remote rejected] 2.0.x_patch -> 2.0.x_patch (refusing to allow a GitHub App to create or update workflow `.github/workflows/ci.yaml` without `workflows` permission)
error: failed to push some refs to 'https://github.com/suztomo/java-iamcredentials.git'
owl-bot.js commit-post-processor-update


Applying the patch that includes the test on 0.66.0 and running the tests shows that the test doesn't pass:
test registry::package_lock_as_a_symlink_inside_package_is_overwritten ... FAILED

This is partially correct.
The fix was indeed committed to Rust 1.64.0 / Cargo 0.65.0 (https://github.com/rust-lang/cargo/commit/15f1e4b0bf4b4fc20369e0a85d9b77957c4dd52a), but due to a mistake in the backporting process it was not included in Rust 1.65.0 / Cargo 0.66.0 (good catch!). From Rust 1.66.0 / Cargo 0.67.0 it's permanently included.
The affected version should be updated to say it's fixed in 0.65.0, and 0.67.0 onwards.

Hi there @pietroalbini! A community member has suggested an improvement to your security advisory. If approved, this change will affect the global advisory listed at github.com/advisories. It will not affect the version listed in your project repository.
This change will be reviewed by our highly-trained Security Curation Team. If you have thoughts or feedback, please share them in a comment here! If this PR has already been closed, you can start a new community contribution for this advisory

Hi!
Thanks for the feedback, I just added a new commit to reflect this information!


[suggestion] debug_assertions aware logging.

Feature request
Add shorthand macros for iroha_logger which expand to
#[cfg(debug_assertions)]
::iroha_logger::trace!(thing, "message that occurs frequently and ruins performance");
#[cfg(not(debug_assertions)]
// no-operation

and similarly for debug.
Motivation
In some situations, an event should not be logged unless in a debug build.
Who can help?
@appetrosyan

related to #3126


Include corresponding transformer names in the Tour?

The "Standard" entries on https://6to5.org/docs/usage/transformers/ link directly to sections of http://6to5.org/docs/tour/
It might be useful to have the sections of the Tour page mention the names of the corresponding transformers somehow, e.g. have http://6to5.org/docs/tour/#arrows mention arrowFunctions

The tour page is currently a fork of es6features. I'm a bit hesitant to deviate from it too much and that page is meant to be a general tour of ES6, not 6to5.

@sebmck I think it's okay for us to add to that page, but this in particular could likely be better documented on the transformers page.

@thejameskyle Some of the features on the tour page spread over multiple transformers. It'll be difficult to reflect.

Yup agreed, I think this one belongs on the transformers page.

I was just saying we shouldn't avoid changing that page for the sake of keeping it as similar as possible to the original.

I was more heading towards cluttering it with unnecessary stuff that the page shouldn't be worried about.

My more general criticism here is how the Transformers page currently hyperlinks directly to a subsection of another page that's not about exactly the same thing, with no further context.

Don't know if we still want to do this


Rails 6: rails generate devise:install hangs(master)

Environment

Ruby 2.6.3
Rails 6.0 (release)
Devise: master branch

Current behavior
rails g devise:install   hangs
If you add the '--skip-spring' flag to 'rails new' it appears you can get the devise generator to run after
Expected behavior
Generators are run

I believe that's not something specific to Rails 6, in the past I had students hanged on that very command for Rails 4 and Rails 5. The trick I told them was to:
spring stop

And then relaunch the command.

Yeah, this really looks like a Spring issue.
I just run the generator with a newly created Rails 6 app and everything worked correctly.

spring stop

Works like a charm!

spring stop

Works like a charm!


cypress: 10.3.1 -> 10.8.0

Description of changes
Update cypress to 10.8.0 using the update script: https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/web/cypress/update.sh
Things done

Built on platform(s)

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

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

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Please, fix commit message title:
https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#submitting-changes

Slipped my mind, thanks for the catch!

Result of nixpkgs-review pr 191199 run on x86_64-linux 1

2 packages failed to build:

polaris
polaris-web

1 package built:

cypress

polaris, polaris-web are already failing on master.

Cypress is named in uppercase. Would be relevant to have a dynamic link to lowercase.

meta.mainProgram is missing

@superherointj I added the meta.mainProgram change.
I did not add a link since the existing version in nixpkgs does not have a cypress link. Since this is a version upgrade PR, I do not believe it should introduce such a change. I suggest if you would like a lower cased link then you could make such a change in a future PR.
❯ nix build nixpkgs#cypress

❯ ls result/bin/
Cypress  resources

❯ nix build .#cypress
warning: Git tree '/home/ana/git/nixos/nixpkgs' is dirty

❯ ls result/bin
Cypress  resources

@superherointj I added the meta.mainProgram change.

mainProgram is unnecessary if cypress exist in lowercase (as symlink).

I did not add a link since the existing version in nixpkgs does not have a cypress link.

Exactly because it doesn't exist that a symlink should be added.

Since this is a version upgrade PR, I do not believe it should introduce such a change.

It is fine to make changes in upgrades.

I suggest if you would like a lower cased link then you could make such a change in a future PR.

-.-

There are plenty of examples of packages (such as neovim) which do not have symlinks in their output for that package name:
❯ nix build nixpkgs#neovim

❯ ls result/bin/
nvim  nvim-python3  nvim-ruby

I do not think this change is necessary for this package upgrade.

There are plenty of examples of packages (such as neovim) which do not have symlinks in their output for that package name

Is Vim application named as Vim in uppercase? I guess no.
Suggested symlink is to make application available in lowercase. Avoiding the need of mainProgram.

@ofborg build cypress

@superherointj disagree. We should stick to upstream naming conventions for binaries (even if they're weird) and not disseminate unusual aliases which only work in nixpkgs. mainProgram only is the correct approach here.

@superherointj disagree. We should stick to upstream naming conventions for binaries (even if they're weird) and not disseminate unusual aliases which only work in nixpkgs. mainProgram only is the correct approach here.

Problem with uppercase is it does not list when auto completing when typing in lower case. And no one knows to type in upper case when looking up something. It is like the application the does not exist. Until the person understand that it is in uppercase.
Uppercase could make sense for Windows but not Linux. Anyway. We diverge then.

@superherointj disagree. We should stick to upstream naming conventions for binaries (even if they're weird) and not disseminate unusual aliases which only work in nixpkgs. mainProgram only is the correct approach here.

Problem with uppercase is it does not list when auto completing when typing in lower case. And no one knows to type in upper case when looking up something. It is like the application does not exist. Until the person understand that it is in uppercase.
Try: nix-shell -p cypress
Then: type: cy [TAB]
Notice package name is in lowercase. Why would the application name be in upper case?
I imagine the reason upstream is using uppercase is Windows.
If you stick by that. We diverge then. I stick to my position. Uppercase for application name is problematic.

Then get upstream to change that, or use a smarter shell. We shouldn't change upstream behaviour where it's not necessary to make it work on NixOS.


Flaky tests with noisy simulation

Sometimes not within atol which is easy to fix but sometimes there are NaN probabilities which is more concerning. See e.g. https://github.com/asciineuron/bgls/actions/runs/6059288452/job/16442260817

@rmlarose I would have to look into act_on again to see the details - but I know by default only the density matrix sim state can properly simulate noisy circuits, whereas the failing test is with a state vector sim.
https://quantumai.google/cirq/simulate/noisy_simulation#simulating_noisy_circuits
mentions "monte carlo wavefunction simulation" for state vectors, but I think this may be handled by cirq.Simulator. I think we might need to implement an improved act_on that natively can handle noise by sampling one of the Kraus operators in the mixture?


UI - Workflow credential - When authentication  is done , we are presented with Authenticated and Done.

Steps to reproduce the problem:

Create a workflow with credential.
Click on "Authenticate"
Complete the oauth workflow when presented with it.

Notice that once oauth flow is completed , notice that there are 2 "Authenticated" and "Done" being presented .

Expected Behavior:
There should be only "Authenticated" presented. "Done" seems to be the same as "Authenticated" and seems like a duplicate entry.

We are reworking this whole process and itll be addressed then


[WIP] Update grpc and gogoproto deps

This PR updates the grpc and gogo/protobuf deps to match recent
updates to the envoyproxy/go-data-plane repo. This brings Istio
up-to-date with recent updates.
After updating the deps, I ran go generate ./... on the files.
Reviewers: I have not validated this update with any local testing.
For this reason, I have applied the "WIP" label.
/hold

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: douglas-reid
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [douglas-reid]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@douglas-reid: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
18d52bccfea4f10051523af02730d68635984c79
link
/test istio-unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@douglas-reid: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
18d52bccfea4f10051523af02730d68635984c79
link
/test istio-unit-tests

prow/istio-presubmit.sh
18d52bccfea4f10051523af02730d68635984c79
link
/test istio-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

So, as far as I can tell, the generation mechanism for pilot/pkg/config/kube/types.go depends on that exact file for its generation purposes. Awesome-sauce.

Looks that you didn't actually update gRPC in Gopkg.lock.
Also, don't you need to update go-control-plane as well? Otherwise, there will be a mismatch between gRPC and protobuf from this PR and those used in the current version of go-control-plane.

@douglas-reid: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
18d52bccfea4f10051523af02730d68635984c79
link
/test istio-presubmit

prow/istio-unit-tests.sh
a0ad330ae84a345b1d99a319a41d965afa7dcb56
link
/test istio-unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@douglas-reid: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
a0ad330ae84a345b1d99a319a41d965afa7dcb56
link
/test istio-unit-tests

prow/istio-presubmit.sh
a0ad330ae84a345b1d99a319a41d965afa7dcb56
link
/test istio-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@PiotrSikora good points -- probably. i definitely haven't finished this PR.

@douglas-reid: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
a0ad330ae84a345b1d99a319a41d965afa7dcb56
link
/test istio-presubmit

prow/istio-unit-tests.sh
a3da9b7dae91f1eed1c5f2d82cd6c0ae4d2de9d8
link
/test istio-unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

This needs to go into release-1.0.. We have to fix a gRPC streaming bug in Envoy (by setting the idle timeout to 0), but since @kyessenov updated go-control-plane's gRPC version, we need to update it here as well. Please rebase this PR to 1.0 branch.. This is pre-requisite for #7428 which is a release blocker (as gRPC streaming for long running connections is broken)

update: I reverted the gRPC changes and have used a different version of go-control-plane without grpc/gogo changes (but with new data plane APIs). https://github.com/istio/istio/blob/release-1.0/Gopkg.toml#L112
All tests passed. So, when you fix up this PR, please make sure to update Gopkg.toml

@PiotrSikora I have no idea why dep fails to update gRPC even when it is constrained to a higher version already. Beats me.

@kyessenov don't you need to manually update the Gopkg.lock with the new commit and then run dep ensure to update vendor directory? That's what I've been doing in the past and it worked pretty well so far.

@PiotrSikora so we're back to manually picking SHAs? I thought lock file was not meant to be touched by humans.

@kyessenov maybe? But if you look at the commit history of Gopkg.*, that's definitely not the case.

@douglas-reid: PR needs rebase.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

All, should I continue with this PR?  I feel like it probably still valuable, but having been OOO for awhile, I've lost track of current status / desires.

ref #7985

please continue with the PR.. we need this in order to be able to pull in other updates from Envoy.

Closing in favor of https://github.com/istio/istio/pull/8036


Tests are broken

Issue Description
Tests are failing on executing test command.
Expected Behavior
Every test should pass.
Current Behavior
Tests are failing while executing test command.
Screenshots

Environment

Operating System: [e.g., Windows, macOS, Linux]
Browser (if applicable): [e.g., Chrome, Firefox, Safari]
Version of Software/Project: [e.g., v1.0.0]

Checklist

[x] I have read and followed the project's code of conduct.
[x] I have searched for similar issues before creating this one.
[x] I have provided all the necessary information to understand and reproduce the issue.
[x] I am willing to contribute to the resolution of this issue.

Thank you for contributing to our project! We appreciate your help in improving it.
📚 See contributing instructions.

@shreya-mishra assign this to me


Typo in Publish and Sharing section

Under the section Publish and Sharing there is a typo DAYS: "With Power BI, there are a few days you can make printouts of your visuals" . It should be WAYS.

⚠ Idea migrated from UserVoice
Created By: SK
Created On: 2018/02/27 01:29:33 +0000
Votes at Migration: 1
Supporters at Migration: 1

Related to this:
https://docs.microsoft.com/en-us/power-bi/guided-learning/publishingandsharing#step-3
@kfile - can you help route this to the right person?

@davidiseminger Can you fix it? @kfile for awareness.

@davidiseminger  is the rightful owner. He's now seen this and the email so I expect it will be resolved soon. Thanks.

@davidiseminger has fixed this so thanks for the feedback!


asset doesn't work with JavaScript code splitting enabled

Whenever code splitting for JavaScript is enabled, trying to call<EMAIL_ADDRESS>doesn't work deterministically since it may or may not return multiple URLs, depending on whether the JavaScript has been split into multiple, smaller chunks.
The current behavior is that an exception will be thrown since the _dependencies.json map isn't loaded and thus returns an "asset '/namespace/code-splitted.js' can't be found".

Fixed with asset_link and the parsing of _dependencies.json in v4.


Running on a public cloud ?

Hi,
I found this project very useful, at least an element of my technical choices.
I think that running all tests on one public cloud

AWS
DigitalOcean
...

Could help / lead in technical choices ?
What do you think about that ?
Regards,

I'm NOT a fan of performing benchmarks on a cloud/shared anything as then you will get inconsistent results (well you would get inconsistent results on a mac desktop too)  An 'empty' dedicated server is what should be used (see my other issue with some results from that among other tests, which really should be built in to this too for statistical testing).  https://github.com/tbrand/which_is_the_fastest/issues/101

@OvermindDL1 I understand you concern, I'm not a fan either. For me running, running on shared environments COULD break result consistency.
However, cloud IS NOT shared. Of course, technically an hypervisor is used

XEN
KVM
Hyper V
...

However, running on cloud mean isolation (all instances has their own CPU / memory), at least cloud providers I have tested

AWS
DigitalOcean

I know cloud is not shared, but cloud does not always imply a 'set' instance of cpu/memory.  Those can be migrated in surprising ways and though you may keep a set amount of cpu and memory there can be sudden and surprising latencies that will not occur on a dedicated system.

I understand. However :

a majority of (enterprise) application adopt cloud

why running elsewhere ?
is our goal to be closest to production-ready application usage ?

bar-metal / full isolation are expensive

could bar-metal automatizable ?

is our goal to be closest to production-ready application usage ?

This is expressely not the goal of this repository.  ;-)

We want to know the response time (routing time), not a usability.

And the latency randomness and other issues that cloud would induce would just induce random noise into the benchmarks, which is NOT what you want in a benchmark.

bar-metal / full isolation are expensive

Not even remotely?  I have a 16 core with 16gigs ram dedicated server that I test on here, see:  https://github.com/tbrand/which_is_the_fastest/issues/101

This is expressely not the goal of this repository. ;-)
So what is the main goal ?

@OvermindDL1 I do not understand your last point

So what is the main goal ?

Pure speed testing with as few other variables as possible.

@OvermindDL1 I do not understand your last point

I.E. I can perform dedicated server tests with ease.  It's a build server I own and it's trivial to suspend the CI for a period as I run tests, as I did in that post.  In the post I show the statistical output of the tests and if run on a cloud or shared system then these would vary far more wildly that a statistical system could show but would otherwise corrupt the output of the current setup (as tbrand is currently doing by running it on a desktop, why do you think his results wildly differ from mine).

Pure speed testing with as few other variables as possible.
yes, but it will be accurate to use a particular usage, production usage.
actually, django run on gunicorn (no built-in server) but flask use buit-in one.
none of enterprise project, using flask, run on built-in

@OvermindDL1 I understand that you have different result than @tbrand, not the same hardware ... so why not running on a standard (and usable by others) hosting, aka cloud ?

Because free server, and a lot more powerful than what most cloud things offer especially taking into account the prices...  ^.^;
/me is still amazed at how slow crystal was on the tests here, wonder if related to them not running in production mode, should test again (ping me on that one issue if anyone wants the statistical tests to be re-run!)...

:trollface: free ? it is amazing, it don't known about free hardware
anyway, my presonal purpose IS to test raw-performance in each frameworks, but in the closest way as enterprise does use those frameworks

:trollface: free ? it is amazing, it don't known about free hardware

It's quite common!  Once it's paid for you get free unlimited use of it!  Excepting cost of electricity (and maybe internet if it's not shared out to something else, which mine is).  ;-)

IS to test raw-performance in each frameworks,

Ah so you definitely don't want weird latencies popping up!

It's quite common! Once it's paid for you get free unlimited use of it! Excepting cost of electricity (and maybe internet if it's not shared out to something else, which mine is). ;-)
Sure, it not free but the major cost part is initial ;-)

Ah so you definitely don't want weird latencies popping up!
I don't understand

I don't understand

If you are wanting to test raw throughput without uncontrollable internet and system conditions interfering, then you want as stable a test-bed as possible.  :-)

ah, ok
you say that the internet connection stability could case result inconsistency

you say that the internet connection stability could case result inconsistency

That is one possible conditions, hence why you'd prefer to test between 2 machines on a dedicated local wired network (which I also have, though this repo's built-for single server right now, which is not entirely reliable either since you should never test from the same system that the server is running on), with no other processes running on them, dedicated hardware with no chance of migration or anything else of the sort, etc...
Running it under any other conditions (like on a desktop machine) introduces in changes that be be quite significant (like the latest update that puts Phoenix faster than Plug, which would never ever happen as Phoenix is just 'more' plugs on top of Plug).

interesting point of view
you must do a lot of automation, to provide a clean and isolated environment to run each framework, thus
even in cloud we can run on a dedicated connection (or as closest as a local one)

you must do a lot of automation

Ungodly huge amounts.  CI build systems for everything from C++ to Elixir and more (Rust recently growing).  Server deployment automation.  Etc...  I have no clue how I've even reached this point but even just me personal non-work stuff is massive...  >.>

I see that it is a point to run on cloud, though, at least to decrease your time automating everything

I see that it is a point to run on cloud, though, at least to decrease your time automating everything

Except that would cause me 'more' work, as well as substantially more cost.  ^.^;


Create release notes for GOV.UK Frontend v4.0.1 (fix release)

What
Create release notes for GOV.UK Frontend v4.0.1 (fix release)
Why
To tell users about the fixes we've made.
Who needs to work on this
Technical Writer, Developers
Who needs to review this
Developers
Done when

[x] Technical writer / developer drafts release notes
[x] Release notes pass 2i
[x] PR raised for updating the release notes in the Changelog

We haven't added this change to the CHANGELOG, but we should thank the contributor in our release notes.
#2516

Draft doc to share with pre-i and 2i reviewers (thought it might be easier to review than a PR):
https://docs.google.com/document/d/1ag3bi-4z-QdR3nYxYNUq-8G6Sbd-_sQ3cW03e7CC410/edit#

Release notes have passed pre-i, so I've now sent them for 2i.

@domoscargin Thanks for flagging this! I think we're going to thank them in the Slack comms and possibly also the Mailchimp sendout.

We've done everything on the 'Done when' checklist. Should we now move this issue to the 'Done' column on our Kanban? Or should we hold off till we've actually put the release name at the top of the notes and published them?

@EoinShaughnessy I'm trying a slightly different way of structuring our release epics this time, so this card doesn't need to hang around while we wait to do the release. The release documentation instructs us to add the release name at the top of the notes, so that'll be covered when we do the release. So if you're happy, I suggest we move this to done?

@vanitabarrett Ah cool, gotcha. Over to 'Done' it goes!


compile fewer artifacts for each invocation

for large projects, dbt commands take a long time (15s-ish for one project I'm working on). the step that takes a long time is compilation. I believe that every dbt invocation compiles all objects. it would be useful if invocations could only compile the artifacts that are relevant to that invocation—nothing sophisticated like only compiling specific models, more only compiling tests if the command is test, etc. could cut the compilation time significantly.

TODO: re-evaluate timing after this PR is merged https://github.com/analyst-collective/dbt/pull/292


If a session is closed and reopened, ConferenceService.getParticipants() can return corrupted data.

If a session is closed and reopened, the list obtained from the getParticipants() method can sometimes get corrupted. This can result in no preview video being displayed for the local participant or the local participant appearing twice on the list.

Issue has been addressed in 3.6.0-beta.3


⚠ Bofrost.de has degraded performance

In 19309f9, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1591 ms

Resolved: Bofrost.de performance has improved in a9b68bc after 17 minutes.


[Boss] Medusa/Phoniex mix Sun boss

Boss idea: Medusa/Phoniex ult mix sun thing. So the arena has lava around the edges, massive dot if a hero stands on it.
Phase 1: The boss only uses obvious ground targeting spells, but kinda moves around the arena in a circle while he does it.
Phase 2: 75% hp the boss starts be able to use another ability. Basically medusa ult: it's uninterruptible, but knockback and stun and bonus magical damage instead of physical if the heroes are facing this boss. Heavy damage is dealt if people face the boss, no damage is deal if they turn their backs on the boss but the knockback effect still happens.
Phase 3: 50% hp The boss starts throwing "sun grenades", which does the aoe knockback spell but without the knockback part. Boss is still able to use his massive aoe spell.
Jack Grayling - Today at 12:01 PM
Phase 4: 25% hp The boss sometimes goes into rage mode, throwing sun bombs in the four corners in a random order. The players have to remember the order and turn accordingly.

I see the idea here. It's actually really good. The boss could be an angel/demon of light.
His main spell makes him glow so brightly it hurts the players. Then he shoots "solar flares" or something like grenades that do the same thing when they impact the ground.
Unfortunately it's a bit weak in substance. You refer to "spells" in phase 1. Maybe you could elaborate on what those spells are. Also the fact that you can't look at the boss/suns is interesting, maybe remove the stun?

Spells: Lina stun but without the stun. Sun grenades later on

Seems pretty cool, although not being able to look at the boss might be extremely frustrating

Any review on this? Try to format it according to #37


[FLOC-1477] Sketch of deployer deletion action and calculation

https://clusterhq.atlassian.net/browse/FLOC-1477
This presumes #1185 and #1184 for low-level ZFS destroy operation and deleted attribute on Dataset class respectively.

Thanks.  This looks great.  Just those two minor inline comments, integrate as you think makes sense.  Please proceed.


GZip viewer

Could https://github.com/Pascal-Krenckel/NppGZipFileViewer be added to the Notepad++ plugin manager list of plugins please?
Many thanks

To add this plugin to N++ PluginAdmin a packaging as zip file is needed, see https://github.com/notepad-plus-plus/nppPluginList -> https://npp-user-manual.org/docs/plugins/#plugins-admin

@ctr Sadly, I'm not able to run notepad++ in debug mode to test whether the nppPluginList.json file is correct.
@chcg The GH Action doesn't work as dependencies are missing.
Since there are additional libraries the releases are now in a zip archive with hopefully the correct folder structure.

@Pascal-Krenckel Therefore the initial. I didn't take a closer look into the needs of the plugin but just adapted to the published single dll for version 2.2.0. See https://www.manuelmeyer.net/2016/01/net-power-tip-10-merging-assemblies/ to create a single dll with embedded dependencies.
In the meantime I adapted the PR to create a zip file of the complete release folder https://github.com/chcg/NppGZipFileViewer/actions/runs/7097250421 . The upload-artifact actions adds automatically another zip layer around the zip package. Currently no option exists to avoid that (see https://github.com/actions/upload-artifact/issues/367)
Please be aware that N++ PluginAdmin needs the plugin dll at the toplevel and not like in your current release with a extra NppGZipFileViewer folder.

@chcg Ah it does make sense to avoid problems with duplicated names.

Added with https://github.com/notepad-plus-plus/nppPluginList/pull/722 .


Refresh Sessions

This PR adds the ability to detect new installations, so they can be included in message fanout.
Not covered in this PR:

generating sessions for new installations
integration of refresh_installations

SenGoing to merge this, open questions around storage can be pulled out into another change set


Expose secure-random-algorithm configuration property

Expose secure-random-algorithm configuration property for both, http client and http server.
On Linux (Unix) based operation systems NativePRNG algorithm is being used. This algorithm
fetched random bytes directly from the operation system using the /dev/random and /dev/urandom
files. It uses /dev/random to get the seed, and /dev/urandom to get the bytes.
The problem is that /dev/urandom is still slow, and single threaded.
Below is the test on the machine with 4 CPU
for i in {1..}; do dd if=/dev/urandom of=/dev/null bs=8K count=3000 & done

3000+0 records in
3000+0 records out
24576000 bytes (25 MB, 23 MiB) copied, 1,81277 s, 8,9 MB/s

for i in {1..4}; do dd if=/dev/urandom of=/dev/null bs=8K count=3000 & done

3000+0 records in
3000+0 records out
24576000 bytes (25 MB, 23 MiB) copied, 6,39533 s, 2.2 MB/s
3000+0 records in
3000+0 records out
24576000 bytes (25 MB, 23 MiB) copied, 6,49464 s, 2,2 MB/s
3000+0 records in
3000+0 records out
24576000 bytes (25 MB, 23 MiB) copied, 6,55815 s, 2,3 MB/s
3000+0 records in
3000+0 records out
24576000 bytes (25 MB, 23 MiB) copied, 6,60145 s, 2,1 MB/s

HTTPS (TLS) with block encryption requires ~16 bytes of random data for every single
encrypted block which is ~16kb of size. When the network is fast (infini-band) than
given throughput of /dev/urandom could be a bottle neck. For such cases it is better
to have a way how to switch the random number generator to something less strict, but
still secure. e.g.: java based SHA1PRNG generator that takes seed from the system,
but uses it's own long enough sequence to generate random bytes.

Note that SHA1PRNG will use /dev/random even though its source file is set to /dev/urandom. To use /dev/urandom one has to configure its source as something like /dev/./urandom
Also note that SecureRandom.nextBytes(byte[]) is synchronized, independently of the provider implementation.

I don't think we should expose the exact algorithm name as a string. Instead, we should have boolean option to switch between the two types.
What is should be called and what the default should be is not immediately clear. If SHA1PRNG is faster, why not make it the default? Or skip the config and always use it? It is apparently the default on Windows. This post goes into detail: https://tersesystems.com/2015/12/17/the-right-way-to-use-securerandom/

Is it possible to write an HTTP client/server benchmark that demonstrates the difference between the two?

Note that SHA1PRNG will use /dev/random

It uses /dev/random only to generate seed. So, i think it is fine.

Instead, we should have boolean option to switch between the two types.

How would you call it? http-client.ssl.use-pseudo-random? http-client.ssl.use-fast-secure-random?

If SHA1PRNG is faster, why not make it the default?

It is pseudo random. But the sequence is pretty long though. It can be considered secure. But /dev/random is more reliable. I'm not a security addict actually, so in general i like your idea =)

Is it possible to write an HTTP client/server benchmark that demonstrates the difference between the two?

Will do

Data transfer benchmark:
Environment:

32x vCPU Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
40gb/s infiniband network

No encryption:

Concurrency: 1

[Thread #0] Throughput: 1946282kb/s. Transferred: 116776960kb
[Total] Throughput: 1946282kb/s. Transferred: 116776960kb

Concurrency: 20

[Thread #0] Throughput: 229802kb/s. Transferred: 13788160kb
[Thread #1] Throughput: 231850kb/s. Transferred: 13911040kb
[Thread #2] Throughput: 231082kb/s. Transferred: 13864960kb
[Thread #3] Throughput: 232533kb/s. Transferred: 13952000kb
[Thread #4] Throughput: 231424kb/s. Transferred: 13885440kb
[Thread #5] Throughput: 230741kb/s. Transferred: 13844480kb
[Thread #6] Throughput: 234240kb/s. Transferred: 14054400kb
[Thread #7] Throughput: 227157kb/s. Transferred: 13629440kb
[Thread #8] Throughput: 233130kb/s. Transferred: 13987840kb
[Thread #9] Throughput: 233216kb/s. Transferred: 13992960kb
[Thread #10] Throughput: 233557kb/s. Transferred: 14013440kb
[Thread #11] Throughput: 232021kb/s. Transferred: 13921280kb
[Thread #12] Throughput: 232704kb/s. Transferred: 13962240kb
[Thread #13] Throughput: 233130kb/s. Transferred: 13987840kb
[Thread #14] Throughput: 232277kb/s. Transferred: 13936640kb
[Thread #15] Throughput: 232533kb/s. Transferred: 13952000kb
[Thread #16] Throughput: 234496kb/s. Transferred: 14069760kb
[Thread #17] Throughput: 232277kb/s. Transferred: 13936640kb
[Thread #18] Throughput: 231765kb/s. Transferred: 13905920kb
[Thread #19] Throughput: 236800kb/s. Transferred: 14208000kb
[Total] Throughput: 4646741kb/s. Transferred: 278804480kb

TLS. NativePRNG.
Concurrency: 1

[Thread #0] Throughput: 72192kb/s. Transferred: 4331520kb
[Total] Throughput: 72192kb/s. Transferred: 4331520kb

Concurrency: 20

[Thread #0] Throughput: 33792kb/s. Transferred: 2027520kb
[Thread #1] Throughput: 33450kb/s. Transferred: 2007040kb
[Thread #2] Throughput: 33621kb/s. Transferred: 2017280kb
[Thread #3] Throughput: 33024kb/s. Transferred: 1981440kb
[Thread #4] Throughput: 33365kb/s. Transferred: 2001920kb
[Thread #5] Throughput: 33024kb/s. Transferred: 1981440kb
[Thread #6] Throughput: 33365kb/s. Transferred: 2001920kb
[Thread #7] Throughput: 33280kb/s. Transferred: 1996800kb
[Thread #8] Throughput: 33280kb/s. Transferred: 1996800kb
[Thread #9] Throughput: 33194kb/s. Transferred: 1991680kb
[Thread #10] Throughput: 33109kb/s. Transferred: 1986560kb
[Thread #11] Throughput: 33194kb/s. Transferred: 1991680kb
[Thread #12] Throughput: 33450kb/s. Transferred: 2007040kb
[Thread #13] Throughput: 33280kb/s. Transferred: 1996800kb
[Thread #14] Throughput: 33365kb/s. Transferred: 2001920kb
[Thread #15] Throughput: 33450kb/s. Transferred: 2007040kb
[Thread #16] Throughput: 33706kb/s. Transferred: 2022400kb
[Thread #17] Throughput: 33450kb/s. Transferred: 2007040kb
[Thread #18] Throughput: 33621kb/s. Transferred: 2017280kb
[Thread #19] Throughput: 33536kb/s. Transferred: 2012160kb
[Total] Throughput: 667562kb/s. Transferred: 40053760kb

TLS. SHA1PRNG.
Concurrency: 1

[Thread #0] Throughput: 75776kb/s. Transferred: 4546560kb
[Total] Throughput: 75776kb/s. Transferred: 4546560kb

Concurrency: 20

[Thread #0] Throughput: 51370kb/s. Transferred: 3082240kb
[Thread #1] Throughput: 51797kb/s. Transferred: 3107840kb
[Thread #2] Throughput: 51285kb/s. Transferred: 3077120kb
[Thread #3] Throughput: 51882kb/s. Transferred: 3112960kb
[Thread #4] Throughput: 51370kb/s. Transferred: 3082240kb
[Thread #5] Throughput: 52394kb/s. Transferred: 3143680kb
[Thread #6] Throughput: 51285kb/s. Transferred: 3077120kb
[Thread #7] Throughput: 52309kb/s. Transferred: 3138560kb
[Thread #8] Throughput: 51797kb/s. Transferred: 3107840kb
[Thread #9] Throughput: 52480kb/s. Transferred: 3148800kb
[Thread #10] Throughput: 52736kb/s. Transferred: 3164160kb
[Thread #11] Throughput: 52565kb/s. Transferred: 3153920kb
[Thread #12] Throughput: 50517kb/s. Transferred: 3031040kb
[Thread #13] Throughput: 52821kb/s. Transferred: 3169280kb
[Thread #14] Throughput: 51114kb/s. Transferred: 3066880kb
[Thread #15] Throughput: 52138kb/s. Transferred: 3128320kb
[Thread #16] Throughput: 50858kb/s. Transferred: 3051520kb
[Thread #17] Throughput: 51370kb/s. Transferred: 3082240kb
[Thread #18] Throughput: 51541kb/s. Transferred: 3092480kb
[Thread #19] Throughput: 52650kb/s. Transferred: 3159040kb
[Total] Throughput: 1036288kb/s. Transferred: 62177280kb

Benchmark source:

https://github.com/arhimondr/airlift/blob/secure_random_benchmark/sample-server/src/main/java/io/airlift/sample/HttpsServer.java
https://github.com/arhimondr/airlift/blob/secure_random_benchmark/sample-server/src/main/java/io/airlift/sample/HttpsClient.java

Random number generator benchmark:
Environment:

32x vCPU Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz

[NativePRNG:Singleton] Concurrency: 1, Duration: 30.00s
[Thread #0] Throughput: 1568kb/s. Generated: 47069kb
[Total] Throughput: 1568kb/s. Generated: 47069kb

[NativePRNG:Singleton] Concurrency: 4, Duration: 30.00s
[Thread #0] Throughput: 397kb/s. Generated: 11939kb
[Thread #1] Throughput: 200kb/s. Generated: 6027kb
[Thread #2] Throughput: 570kb/s. Generated: 17100kb
[Thread #3] Throughput: 259kb/s. Generated: 7797kb
[Total] Throughput: 1428kb/s. Generated: 42863kb

[NativePRNG:Singleton] Concurrency: 24, Duration: 30.00s
[Thread #0] Throughput: 30kb/s. Generated: 904kb
[Thread #1] Throughput: 63kb/s. Generated: 1903kb
[Thread #2] Throughput: 54kb/s. Generated: 1623kb
[Thread #3] Throughput: 35kb/s. Generated: 1075kb
[Thread #4] Throughput: 34kb/s. Generated: 1031kb
[Thread #5] Throughput: 105kb/s. Generated: 3151kb
[Thread #6] Throughput: 88kb/s. Generated: 2646kb
[Thread #7] Throughput: 73kb/s. Generated: 2199kb
[Thread #8] Throughput: 62kb/s. Generated: 1867kb
[Thread #9] Throughput: 41kb/s. Generated: 1233kb
[Thread #10] Throughput: 56kb/s. Generated: 1695kb
[Thread #11] Throughput: 112kb/s. Generated: 3367kb
[Thread #12] Throughput: 49kb/s. Generated: 1475kb
[Thread #13] Throughput: 66kb/s. Generated: 1989kb
[Thread #14] Throughput: 52kb/s. Generated: 1587kb
[Thread #15] Throughput: 90kb/s. Generated: 2711kb
[Thread #16] Throughput: 128kb/s. Generated: 3843kb
[Thread #17] Throughput: 85kb/s. Generated: 2569kb
[Thread #18] Throughput: 31kb/s. Generated: 938kb
[Thread #19] Throughput: 45kb/s. Generated: 1355kb
[Thread #20] Throughput: 35kb/s. Generated: 1077kb
[Thread #21] Throughput: 29kb/s. Generated: 897kb
[Thread #22] Throughput: 17kb/s. Generated: 521kb
[Thread #23] Throughput: 43kb/s. Generated: 1317kb
[Total] Throughput: 1432kb/s. Generated: 42973kb

[NativePRNG:ThreadLocal] Concurrency: 4, Duration: 30.00s
[Thread #0] Throughput: 585kb/s. Generated: 17574kb
[Thread #1] Throughput: 299kb/s. Generated: 8983kb
[Thread #2] Throughput: 186kb/s. Generated: 5601kb
[Thread #3] Throughput: 358kb/s. Generated: 10768kb
[Total] Throughput: 1430kb/s. Generated: 42926kb

[NativePRNG:ThreadLocal] Concurrency: 24, Duration: 30.00s
[Thread #0] Throughput: 13kb/s. Generated: 408kb
[Thread #1] Throughput: 77kb/s. Generated: 2325kb
[Thread #2] Throughput: 19kb/s. Generated: 584kb
[Thread #3] Throughput: 60kb/s. Generated: 1828kb
[Thread #4] Throughput: 63kb/s. Generated: 1894kb
[Thread #5] Throughput: 80kb/s. Generated: 2420kb
[Thread #6] Throughput: 61kb/s. Generated: 1835kb
[Thread #7] Throughput: 78kb/s. Generated: 2356kb
[Thread #8] Throughput: 5kb/s. Generated: 168kb
[Thread #9] Throughput: 69kb/s. Generated: 2098kb
[Thread #10] Throughput: 120kb/s. Generated: 3609kb
[Thread #11] Throughput: 43kb/s. Generated: 1311kb
[Thread #12] Throughput: 120kb/s. Generated: 3621kb
[Thread #13] Throughput: 95kb/s. Generated: 2864kb
[Thread #14] Throughput: 122kb/s. Generated: 3675kb
[Thread #15] Throughput: 14kb/s. Generated: 435kb
[Thread #16] Throughput: 27kb/s. Generated: 822kb
[Thread #17] Throughput: 99kb/s. Generated: 2975kb
[Thread #18] Throughput: 70kb/s. Generated: 2105kb
[Thread #19] Throughput: 70kb/s. Generated: 2118kb
[Thread #20] Throughput: 63kb/s. Generated: 1911kb
[Thread #21] Throughput: 10kb/s. Generated: 329kb
[Thread #22] Throughput: 8kb/s. Generated: 266kb
[Thread #23] Throughput: 40kb/s. Generated: 1217kb
[Total] Throughput: 1439kb/s. Generated: 43174kb

[SHA1PRNG:Singleton] Concurrency: 1, Duration: 30.00s
[Thread #0] Throughput: 36949kb/s. Generated: 1108475kb
[Total] Throughput: 36949kb/s. Generated: 1108475kb

[SHA1PRNG:Singleton] Concurrency: 4, Duration: 30.00s
[Thread #0] Throughput: 5257kb/s. Generated: 157731kb
[Thread #1] Throughput: 5320kb/s. Generated: 159605kb
[Thread #2] Throughput: 7614kb/s. Generated: 228426kb
[Thread #3] Throughput: 5974kb/s. Generated: 179241kb
[Total] Throughput: 24166kb/s. Generated: 725003kb

[SHA1PRNG:Singleton] Concurrency: 24, Duration: 30.00s
[Thread #0] Throughput: 712kb/s. Generated: 21364kb
[Thread #1] Throughput: 1022kb/s. Generated: 30668kb
[Thread #2] Throughput: 1069kb/s. Generated: 32092kb
[Thread #3] Throughput: 1315kb/s. Generated: 39468kb
[Thread #4] Throughput: 1093kb/s. Generated: 32797kb
[Thread #5] Throughput: 890kb/s. Generated: 26720kb
[Thread #6] Throughput: 1169kb/s. Generated: 35078kb
[Thread #7] Throughput: 710kb/s. Generated: 21305kb
[Thread #8] Throughput: 1124kb/s. Generated: 33742kb
[Thread #9] Throughput: 1093kb/s. Generated: 32816kb
[Thread #10] Throughput: 851kb/s. Generated: 25544kb
[Thread #11] Throughput: 1097kb/s. Generated: 32934kb
[Thread #12] Throughput: 1292kb/s. Generated: 38761kb
[Thread #13] Throughput: 596kb/s. Generated: 17881kb
[Thread #14] Throughput: 1305kb/s. Generated: 39162kb
[Thread #15] Throughput: 1341kb/s. Generated: 40247kb
[Thread #16] Throughput: 628kb/s. Generated: 18868kb
[Thread #17] Throughput: 1197kb/s. Generated: 35922kb
[Thread #18] Throughput: 896kb/s. Generated: 26900kb
[Thread #19] Throughput: 380kb/s. Generated: 11422kb
[Thread #20] Throughput: 1101kb/s. Generated: 33030kb
[Thread #21] Throughput: 1189kb/s. Generated: 35687kb
[Thread #22] Throughput: 883kb/s. Generated: 26505kb
[Thread #23] Throughput: 867kb/s. Generated: 26036kb
[Total] Throughput: 23831kb/s. Generated: 714949kb

[SHA1PRNG:ThreadLocal] Concurrency: 4, Duration: 30.00s
[Thread #0] Throughput: 38310kb/s. Generated: 1149309kb
[Thread #1] Throughput: 25204kb/s. Generated: 756137kb
[Thread #2] Throughput: 33391kb/s. Generated: 1001741kb
[Thread #3] Throughput: 33989kb/s. Generated: 1019693kb
[Total] Throughput: 130896kb/s. Generated: 3926880kb

[SHA1PRNG:ThreadLocal] Concurrency: 24, Duration: 30.00s
[Thread #0] Throughput: 10035kb/s. Generated: 301056kb
[Thread #1] Throughput: 10315kb/s. Generated: 309451kb
[Thread #2] Throughput: 20134kb/s. Generated: 604022kb
[Thread #3] Throughput: 18994kb/s. Generated: 569821kb
[Thread #4] Throughput: 22358kb/s. Generated: 670764kb
[Thread #5] Throughput: 15027kb/s. Generated: 450823kb
[Thread #6] Throughput: 22875kb/s. Generated: 686252kb
[Thread #7] Throughput: 15487kb/s. Generated: 464613kb
[Thread #8] Throughput: 20255kb/s. Generated: 607667kb
[Thread #9] Throughput: 15681kb/s. Generated: 470449kb
[Thread #10] Throughput: 16378kb/s. Generated: 491366kb
[Thread #11] Throughput: 27962kb/s. Generated: 838885kb
[Thread #12] Throughput: 11420kb/s. Generated: 342620kb
[Thread #13] Throughput: 12781kb/s. Generated: 383446kb
[Thread #14] Throughput: 13552kb/s. Generated: 406576kb
[Thread #15] Throughput: 14862kb/s. Generated: 445885kb
[Thread #16] Throughput: 15105kb/s. Generated: 453157kb
[Thread #17] Throughput: 13306kb/s. Generated: 399207kb
[Thread #18] Throughput: 18321kb/s. Generated: 549630kb
[Thread #19] Throughput: 20721kb/s. Generated: 621630kb
[Thread #20] Throughput: 13509kb/s. Generated: 405291kb
[Thread #21] Throughput: 16756kb/s. Generated: 502706kb
[Thread #22] Throughput: 19291kb/s. Generated: 578735kb
[Thread #23] Throughput: 22395kb/s. Generated: 671875kb
[Total] Throughput: 407530kb/s. Generated: 12225927kb

I'm not sure how to name it, since I don't fully understand the tradeoffs. If we call it use-fast, why would you not want to be fast? Or we can say use-fast-but-possibly-insecure or use-slower-but-maybe-more-secure, but those are bad names, too.
Note that JMH is much better for doing this sort of benchmark. However, I don't really care about SecureRandom performance in isolation. What matters is that when running an HTTP server and client, what is the performance impact of different SecureRandom implementations? I'm surprised that it could make a difference at all (considering all the other work that needs to be done).

@electrum Based on the data transfer benchmark data transfer is only 2 times slower with using NativePRNG.
But what i'm experiencing on a real presto cluster running simple aggregation query is much worse.
I ran  SELECT suppkey, count(*) AS c FROM "lineitem" GROUP BY suppkey ORDER BY c DESC LIMIT 10; on 1tb TPCH data source on 8 nodes Presto cluster.
With insecure internal trasfer it takes ~ 1m 20s.  With HTTPS enabled it takes ~4m.
Diving deeper into investigation i found that  java.security.SecureRandom.nextBytes(byte[]) is the hot spot. And lot of threads are blocked at this method. Besides the SSL encryption code, a lot of invocation are coming from java.util.UUID.randomUUID(), which is being called from TraceTokenFilter and ServiceAnouncment. So the native SecureRandom is overloaded.

Once i switched PRNG algorithm to SHA1PRNG, the query takes only ~2m, and all the cores became utilized much better.

This should fix the ServiceDescriptorBuilder issue: https://github.com/airlift/airlift/pull/485

@electrum

I'm not sure how to name it, since I don't fully understand the tradeoffs. If we call it use-fast, why would you not want to be fast? Or we can say use-fast-but-possibly-insecure or use-slower-but-maybe-more-secure, but those are bad names, too.

Such names might be really confusing. I decided to just set the SHA1PRNG as a default. And hopefully no one would ever want to change it. But still, i think it is better to leave such ability.

Note that JMH is much better for doing this sort of benchmark. However, I don't really care about SecureRandom performance in isolation

I know that JMH is better. But i aggree that SecureRandom performance in isolation doesn't matter a lot. So i just wanted to see the rough estimates of how fast it is.

What matters is that when running an HTTP server and client, what is the performance impact of different SecureRandom implementations?

Please check the first benchmark. It is most important part. Then please check the profiler screen-shot. Native SecureRandom is operation system wide singleton. And it is really slow. So, it is easy to overload it.

This fixes trace tokens: https://github.com/airlift/airlift/pull/486

@electrum Thanks for fixing this. But still, i believe it is worth to change the RNG algorithm for Http Server/Client. It is twice as faster for high concurrency.

We're going to merge this as is. Can you take a look the build failures?

@martint It was some intermittent failure. Now tests pass.

Merged, thanks!


Convert more library types for cellranger multi.

Should we also add an ERCC modality? :thinking:

Should we also add an ERCC modality? 🤔

Only if it needs to have a special name.. this PR will make sure that it gets added as the ercc by default.


Implement force-deletion

For stacks in a DELETE_FAILED state

I think this is handled by https://github.com/glassechidna/stackit/blob/bb3ee3809b245d31fde3aaf2c6339a45b8b6237a/pkg/stackit/up.go#L65


Regen byron

using specs/byron_minimal.cddl
byron/utils.rs had to be modified a fair bit to deal with changes in
cddl-codegen since then, .cbor bytes support, etc.

to see which changes were made from the old code, ignore the first commit in the diff tab. the first commit is just copying over the old byron code directly.


Preserve patch line endings for cbmc patch files.

CBMC proofs start by patching the code with a few patch files to prepare the code for proof.  We apply the patch files using "git apply foo.patch".  It seems that the Windows git supplied by Visual Studio on Windows does not like crlf line endings in the patch files.
This patch added a .gitattributes to the tools/cbmc/patches directory that forces eol=lf for the patch files in that directory.  We should probably be adding this to the top-level .gitattributes, but we keep it local to the patches directory to limit the blast radius of unintended consequences.
This has been test on macos, linux, and windows with the equivalent of the script
git clone https://github.com/markrtuttle/amazon-freertos.git debug
cd debug
git checkout preserve-patch-line-endings
git submodule update --init
cd tools/cbmc/proofs
prepare.py

for dir in \
    CheckOptions \
    CheckOptionsInner \
    CheckOptionsOuter \
    ReadNameField \
    SkipNameField \
    ProcessDHCPReplies \
    ParseDNSReply \
    HTTP/IotHttpsClient_AddHeader;
do
    make -C $dir cbmc;
done

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

The failing HTTPS Disconnect proof will be fixed when https://github.com/aws/amazon-freertos/pull/1583 is merged.


readxl skip and column designation not working if there are blanks

I have an MS excel sheet containing around 16,000 rows and 16 columns.  There is some un-needed text above the column  headers, so I need to skip the first three rows when reading the data in (4th row contains column headers, 5th row is the start of the data).
However I noticed that using skip=3 resulted in the column headers not being read in and everything started on the 5th row.
Also, the 2nd and 3rd column of my data contain text (names) but in one file the first 1500 cells in these columns are blank because the names are missing.  These columns are misidentified as numeric unless I specify col_types.  The 4th and subsequent columns contain data for all rows.  I tried adding an initial column with the sequence number but the result was the same.
I think both behaviors are due to the missing data; not sure if it would be possible to correct this by going to the first cell that has data in it for each column and then determining the column type from there and below (I guess if the data is mixed numeric and text, the column type would default to text and in order to do this multiple cells would have to be evaluated?)
If the automated column type assignation would work even when there is some missing data, this would be helpful as although not too much of a problem to manually specify the types for 16 columns, I often have many more than this.
Would be great if there was a fix for this - otherwise the package works great and I found it much faster than the java based ones.

I have experienced a similar glitch.
If skip>0 and one or more of those header rows is empty, then the read starts at the wrong row.
For example, if skip=9 but there are two empty rows among those 9, then the read starts two rows further down the data than intended.
In other words, as long as some text is present somewhere in every skipped row, then the read will be fine.

Concrete examples of the above would be helpful to work against.
How to provide a readxl reprex
We're in a much better position to address your issue if you can provide a reprex (reproducible example). Provide as much of this as you can:

An actual xls or xlsx file. Preferably stripped down to the minimal size and complexity to demonstrate your point. And, obviously, stripped of any sensitive data.
A small bit of R code that uses readxl on the provided xls or xlsx file and demonstrates your point.

Consider using the reprex package to prepare this. In addition to nice formatting, this ensures your reprex is self-contained. Currently GitHub-only, but going to CRAN soon.

Any details about your environment that seem clearly relevant, such as operating system.
reprex(..., si = TRUE)
will append a standard summary, folded neatly away, at the bottom of your reprex.

How to provide the xls/xlsx file? In order of preference:

Attach the file directly to your issue. Instructions are always at the bottom of the issue or comment box.
Share via DropBox or Google Drive and provide the link in your issue.
Explain you absolutely cannot provide a relevant file via github.com and offer to provide privately.
Don't share a file and realize you're hoping for, e.g., a bug fix with no concrete example to go on.

Will be fixed by #240. And the interaction with column names is covered by #157.


When gdi+ cannot be loaded on MacOs or Linux the system should give a more descriptive exception

As found in PR #495 loading problems regarding gdi+ on MacOs and Linux will often result in a confusing exception. Depending on the entry point to the SVG library the user will sometimes not be presented with an error, but will get a null reference to the document.
When on a MacOs system a call is done to library classes like SvgText, we will get a TypeInitializationException, while calls to the SvgDocument.Load(xml) will yield a null as result and will likely cause nullpointer exceptions lateron, when the user works with the document reference.
I propose that at least in the SvgDocument.Load() we watch for the type exceptions and wrap the exception stating the current requirements regarding the gdi+ on MacOs and Linux. Catching calls in all Svg classes (like SvgText) is undoable, so I suggest leaving that there. These will directly result in the type errors, which can be documents (and I saw @mrbean-bremen already doing some additions to the help files, so maybe we can also add the error thrown in that case so people can find it more easily via search engines and github).

I propose that at least in the SvgDocument.Load() we watch for the type exceptions and wrap the exception stating the current requirements regarding the gdi+ on MacOs and Linux

Good idea - are you planning to provide a PR for this?

I saw @mrbean-bremen already doing some additions to the help files

Do you mean the Q&A section in the Wiki? Yes, I can add a related entry there, good point.

Great, I’ll try to put it in there and make a PR.
I will also try to propose some additions/changes to the documentation if required (but first I’ll have to do some reading).
Op 26 jun. 2019 om 07:59 heeft mrbean-bremen <notifications<EMAIL_ADDRESS>het volgende geschreven:
I propose that at least in the SvgDocument.Load() we watch for the type exceptions and wrap the exception stating the current requirements regarding the gdi+ on MacOs and Linux
Good idea - are you planning to provide a PR for this?
I saw @mrbean-bremenhttps://github.com/mrbean-bremen already doing some additions to the help files
Do you mean the Q&A section in the Wiki? Yes, I can add a related entry there, good point.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/vvvv/SVG/issues/501?email_source=notifications&email_token=ABZ6U4SMP2PJMCDRYYGQ4B3P4MAVLA5CNFSM4H3LYHP2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYSNP7I#issuecomment-505731069, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABZ6U4TROYL7AO3T77KVLVTP4MAVLANCNFSM4H3LYHPQ.

@gvheertum - I added a prelimary entry to Q&A yesterday, you can adapt it later. I'm not sure if you can edit the Wiki yourself, though...

@gvheertum - this has finally been merged to master. Are you still working on this?

@mrbean-bremen I just pushed a new PR ( #511 ) with some revisions in the check (based on remarks by @H1Gdev ). I also updated the wiki to reflect the situation since version 3 and a small instruction how to validate/ensure capabilities for the developer.

Ah, so you have write access to the Wiki - good to know, I wasn't sure about this :) And thanks for the documentation update!


[SIMARBridge]: Add new bridge

Another hyper-specific bridge, just like #1049

Rebased this to the latest master branch.

Thanks for the PR ! Merged !


Update README.md

The new image is placed alongside the existing one.

Hey @bw4sz, I have placed a new image below the existing one like what you suggested to do in my previous PR. Please review this PR and suggest any other changes you would like me to make in my commit. Thanks.


Build package and add a release on GitHub

Change the project layout to match Unity's package convention.

May need to remove some directories from the repo
Actually figure out how to build and release a package

After building create a release. May want to add an Action to build the package. Check to see if a package builder action already exists here.

Splitting this into two tasks. One for package changes, and one for the package zip and release


Update contributing for eslint

While working through some eslint updates, I noticed the contributor docs were mentioning jshint. This PR updates that doc to mention eslint (the current linting tool).

Woops... meant to use a separate branch... this is a branch that fixes lots of styling issues.


Release latest updates to npm

I started using this module and it turned out that some features and fixes that was fixed in master weren't released on npm, please make a new release from master branch @vayser.

fixed


Ergonomic Operators

There are lots of symbols that could be useful for short-hand functional operations.
Most even have ligatures supported by major coding fonts (like Fira code).
Below is a list of symbols that can inspire new operators:

|>
||
<|
||>

<|>
<>
>>=
>>>

==>
=>>
==<
=<<

==/
=/=
/==
/=>

|==
==|
/>
</

|>
>>
<<
?.

??
~>
>>>
<<<

<-
->
^.
.

:
++
::
..

~
->
<$>
<*>

<|>
<<>>
<+>
<||>

@~@
<->
<~>
>?<

<*>
<=>
<>!<>
<*>

<->
<@>
<][>

Suggestions

Pipeline Operator (|>): Chaining of functions in a readable manner. For example, x |> f |> g would mean g(f(x)).
Function Composition Operator (>> or <<): Enables the creation of new functions by composing existing ones.
Optional Chaining Operator (?.): Allows safe access to nested object properties. If a property does not exist, instead of throwing an error, the expression short-circuits and returns undefined.
Nullish Coalescing Operator (??): Returns the right-hand operand when the left-hand operand is null or undefined and otherwise returns the left-hand operand.
Pattern Matching Operator (~>): Enables concise and powerful pattern matching, similar to what's available in languages like Haskell or Elixir.
Monad Binding Operator (>>= or =<<): Used in monadic operations to chain together actions while managing side effects.
List Comprehension Operators (<-, =>): For easy and declarative creation of lists based on existing lists, similar to Haskell's list comprehensions.
Concurrency Operator (<|>): To denote concurrent execution of functions, allowing easy parallelism in functional code.
Lens Operator (^.): For dealing with immutable data structures, you can focus on and update specific parts of a data structure in memory.


Remember folding per file

One thing I miss from my TextMate days is that my "foldings" aren't remembered when I close and open a file. That is, if I fold a block of code, and then close the file, it would be wonderful when I re-open the file for the block of code to be folded as I left it.
Is this something you can add to this project?

👍


Validate graph schema using ShEx

To address #286
@matentzn if we go with ShEx, we can put them in a directory in this branch and possibly run them as part of our Jenkins pipeline

Why would this have to be shex? Couldnt we use shacl or any other tool in the pipeline?

Why would this have to be shex? Couldnt we use shacl or any other tool in the pipeline?

Sure, shacl or another tool is fine


Reset conversation

Hi, I am building a bot application. I want my bot to be able to reset the conversation whenever a particular time delay is exceeded. Suppose, the bot prompts the user to give his or her name, and waits for another method in which the name will be received. If more than 5 mins is spent on waiting, then the bot says sorry i did not get your input. you have to start your conversation again or something like that.
public async Task Name(IDialogContext context)
{
await context.PostAsync("Enter your name:");
context.Wait(NameReceived);
}
public async Task NameReceived(IDialogContext context, `IAwaitable<IMessageActivity>` activity)
{
var name = await activity;
...
...
}

So, I want the bot to be able to handle the delay features. Please help me with this one..

Sorry, I did not get what I needed. I wanted to know whether there are any ways to wait for a particular time after I invoke the method context.Wait().

@saikatbh94  context.Wait(methodname) is a continuation delegate, not an async/await type thread barrier.  If you want to timeout the conversation, you would need to write code to do that.  I've provided an example of this type of conversation timeout here:  https://github.com/EricDahlvang/EndConversationTest/blob/master/EndConversationTest/ConversationTimeout.cs  Note: this example will only work for a single user, since the class itself is static.  It is a proof of concept.  An actual implementation would be more complex.


Support Enabling Auth for pulsar / etcd

ATT.

related: https://github.com/milvus-io/milvus/issues/36903

[ ] #200
[ ] etcd to do


Enable the use of d3.join() without implicit d3.order() call

I switched one of my applications from the "old" enter()/merge() pattern to use the "new" join() method.
I really like how concise data binding becomes using this method.
Sadly, only after this move I found out that join() automatically performs order() after the merge of the enter and update selection.
Possible improvement: Since my application relies on preserving the document order, and data array reordering is not really feasable in my case, I would like to ask whether it is possible to add an additional (optional) parameter to the join() method that allows users to specify whether they want to automatically perform order() at the end of the join method. Probably somethink like an options parameter.
An example for this problem can be found here: https://stackoverflow.com/q/71179024/2938364
The problematic line is https://github.com/d3/d3-selection/blob/91245ee124ec4dd491e498ecbdc9679d75332b49/src/selection/join.js#L14

ordering is not an implicit byproduct of selection.join, but an explicit part of the feature as mentioned in the documentation and in the unit test:
https://github.com/d3/d3-selection/commit/146af5da2ed1bba5246e1e6a4d930f8c3d0adc5c
Have you considered applying selection.sort after the join()?

Yes, I read the documentation, and yes, probably I used the word "implicit" wrong in this context.
But I do no think that ordering, sorting, and then ordering again is the way how this problem should be tackeled.
I think there are use cases where it is not desired that join calls order at the end, and I just think that it would be nice if it was possible to call join with this setting (either by adding a parameter to join or by providing another method similar to join that does not order the selection).
Otherwise, methods such as raise and lower lose their applicability in data-joined visualization, since they will be "overridden" on the next join call.

selection.join is a convenience function. If you don’t want to order, you should call the underlying methods directly yourself. We shouldn’t add options to selection.join.


Tooltip Issue

Hi
I am facing the issue with the tooltip, It is not fully rendering when length of labels is large. Is that issue is not fixed yet ? I am using chart JS version 2.9.5

Hi @ishant4398, do you have a fiddle that reproduces this? We haven't released a 2.9.5 version.

Hi @ishant4398, do you have a fiddle that reproduces this? We haven't released a 2.9.5 version.

Can you also tell us which browser you are using, because it might be an issue with brave as pointed out in #8280 and #6411

Can you also tell us which browser you are using, because it might be an issue with brave as pointed out in #8280 and #6411

Hi @ishant4398, do you have a fiddle that reproduces this? We haven't released a 2.9.5 version.

I am sorry, I was talking about the 2.9.4 Version.
I have attached the codepen for testing it out. I think it is due to the last point position which is making tooltip to not render fully.
Codepen Link  :-
codepen.io/Ishant-5678/pen/bGwjNWB

But I have also Add other images where I am using this chart where tooltip is not fully visible.

Hi @ishant4398, do you have a fiddle that reproduces this? We haven't released a 2.9.5 version.

I am sorry, I was talking about the 2.9.4 Version.
I have attached the codepen for testing it out. I think it is due to the last point position which is making tooltip to not render fully.
Codepen Link  :-
codepen.io/Ishant-5678/pen/bGwjNWB

But I have also Add other images where I am using this chart where tooltip is not fully visible.

Can you also tell us which browser you are using, because it might be an issue with brave as pointed out in #8280 and #6411

I am Using Google Chrome

Can you also tell us which browser you are using, because it might be an issue with brave as pointed out in #8280 and #6411

I am Using Google Chrome

Hi @ishant4398, do you have a fiddle that reproduces this? We haven't released a 2.9.5 version.

Hi @ishant4398, do you have a fiddle that reproduces this? We haven't released a 2.9.5 version.

I don't know why that last point is placed in so awkward position.

Hi @ishant4398, do you have a fiddle that reproduces this? We haven't released a 2.9.5 version.

Hi @ishant4398, do you have a fiddle that reproduces this? We haven't released a 2.9.5 version.

I don't know why that last point is placed in so awkward position.

I guess your best bet to solve this is using the external tooltips
https://www.chartjs.org/docs/latest/configuration/tooltip.html#external-custom-tooltips

I guess your best bet to solve this is using the external tooltips
https://www.chartjs.org/docs/latest/configuration/tooltip.html#external-custom-tooltips

Hi @etimberg @LeeLenaleee Thanks !!
But I am not sure that last point on the chart which is not rendering fully is related to tooltip issue. I have also attached the image as well.

Hi @etimberg @LeeLenaleee Thanks !!
But I am not sure that last point on the chart which is not rendering fully is related to tooltip issue. I have also attached the image as well.

If ticks on x axis are enabled everything renders fine. It seems like the chart tries to take as much space in the horizontal axes as it can and since it isnt limited somehow by the ticks anymore it will go till the end which cuts of a part of the tooltip and point element

If ticks on x axis are enabled everything renders fine. It seems like the chart tries to take as much space in the horizontal axes as it can and since it isnt limited somehow by the ticks anymore it will go till the end which cuts of a part of the tooltip and point element

If ticks on x axis are enabled everything renders fine. It seems like the chart tries to take as much space in the horizontal axes as it can and since it isnt limited somehow by the ticks anymore it will go till the end which cuts of a part of the tooltip and point element.
Issue is persistent in v3 beta 7: https://codepen.io/leelenaleee/pen/WNGKwdg

Okay, Thanks !!
As of now for this, I have find solution by setting right padding through the layout properties of chart.
Link :-
https://codepen.io/Ishant-5678/pen/bGwjNWB

If ticks on x axis are enabled everything renders fine. It seems like the chart tries to take as much space in the horizontal axes as it can and since it isnt limited somehow by the ticks anymore it will go till the end which cuts of a part of the tooltip and point element.
Issue is persistent in v3 beta 7: https://codepen.io/leelenaleee/pen/WNGKwdg

Okay, Thanks !!
As of now for this, I have find solution by setting right padding through the layout properties of chart.
Link :-
https://codepen.io/Ishant-5678/pen/bGwjNWB

Hello, another test case with v3 beta 8 and the starting sample:
https://codepen.io/tofnet/pen/abmQOXx
With legend and x-axis set to false there are not enough space to draw the circle point and the tooltip.
This is a real bug but your workaround ishant4398 with layout padding right work fine !

Hello, another test case with v3 beta 8 and the starting sample:
https://codepen.io/tofnet/pen/abmQOXx
With legend and x-axis set to false there are not enough space to draw the circle point and the tooltip.
This is a real bug but your workaround ishant4398 with layout padding right work fine !


[JENKINS-38699] Validate git repository with rev-parse --resolve-git-dir

JENKINS-38699 - Validate .git directory with --resolve-git-dir
As the validation of a git repository presently is checked using git rev-parse --is-inside-work-tree but if the .git directory is corrupted then current repository's parent directories are searched for a valid .git directory. To limit/confine the traversal, --is-inside-work-tree is replaced by --resolve-git-dir which check if path to the .git directory of the current git repository is valid.
Checklist

[x] I have read the CONTRIBUTING doc
[x] I have referenced the Jira issue related to my changes in one or more commit messages
[x] I have added tests that verify my changes
[x] Unit tests pass locally with my changes
[x] I have added documentation as necessary
[x] No Javadoc warnings were introduced with my changes
[x] No spotbugs warnings were introduced with my changes
[x] I have interactively tested my changes

Types of changes
What types of changes does your code introduce?

[x] Bug fix (non-breaking change which fixes an issue)

Further comments
Switched from the original implementation as a breaking change to instead add a new API that allows the caller to define if parent directories should be searched for a git repository.  Retains the existing behavior for the CLI git implementation (searching parent directories if the workspace contains a .git directory) and the existing behavior of the JGit implementation (never searching parent directories).  Retains the previous implementation and includes a statement in the javadoc about the behavioral difference between the CLI git and JGit implementations of hasGitRepo().

Thanks @MarkEWaite for getting involved and providing a new functionality. But JENKINS-38699 issue still persists as the git-plugin currently uses the hasGitRepo() method. So should a PR for the issue(JENKINS-38699) be opened in git-plugin which could use the functionality implemented by this PR?

Thanks @MarkEWaite for getting involved and providing a new functionality. But JENKINS-38699 issue still persists as the git-plugin currently uses the hasGitRepo() method. So should a PR for the issue(JENKINS-38699) be opened in git-plugin which could use the functionality implemented by this PR?

Thanks @arpoch .  Yes, that's what will be needed.  I'm preparing that change now with a series of interactive and automated tests to confirm that JENKINS-38699 is resolved.  As far as I can tell from reading the git plugin code, all the cases of hasGitRepo() should be replaced with hasGitRepo(false).  Would you be willing to look at the git plugin and see if that matches your reading as well?
The behavior of hasGitRepo() for CLI git was different enough from the behavior for JGit that I didn't want to risk changing either of their implementations.  I don't know which plugins depend on the JGit behavior and which depend on the CLI git behavior.  The new methods are consistent between CliGit and JGit.

I completely agree on replacing hasGitRepo() with hasGitRepo(false), I will definitely look into the git-plugin code-base as well and update you further.

@arpoch See https://github.com/jenkinsci/git-plugin/pull/1064 for the proposed change to git plugin

I searched for hasGitRepo() method usage in git-plugin source code and automated tests as well, the jenkinsci/git-plugin#1064(https://github.com/jenkinsci/git-plugin/pull/1064) changes match with my results.


*: integrate new silence package

For now this just maps the current REST API into the new package around the semantic difference around comments.

:+1: (at a first glance).