[FEATURE REQUEST] Layers for keyboard shortcuts on the keyboard manager.

Description of the new feature / enhancement
Remapping a key or a combination of keys on the keyboard to a layer letting the user have completely new shortcuts on that new layer, thus making the number of possible keyboard shotcuts much much bigger.
Another way this can be implemented is having a combination of keys for creating such layer and another to cycle through all the layers.
Scenario when this would be used?
I really think that this can be really useful to a wide range of people. For example, content creators, having to in some cases use 2-3 keyboards only for keyboard shortcuts whilst by using a new layer they can seriously benefit. Next programmers, digital artists, writers etc. can really benefit by this feature, which although being obviously not an original or a never-before-seen feature,
can really make a lot of people's lives easier.
Supporting information
No response

(off-topic tip)
A digital programmable keyboard - where every key is a miniature display - would be a solution for every developer.
Have a look at https://www.youtube.com/watch?v=UvG_rTTmvmg (he shows many more very special keyboards) or https://www.artlebedev.com/optimus/popularis/

Can you help make this be more concrete for me. Provide a few crisp real world examples?  Right now I’m unsure what exactly is being asked.

Can you help make this be more concrete for me. Provide a few crisp real world examples? Right now I’m unsure what exactly is being asked.

The idea is to keep all you're needed keys close to the home row. Underneath qwerty could be 123456 for example, while holding a key that's dedicated to 'layer shift down, when held', like a caps lock key or something. Then for the same qwerty keys using a 'layer shift up key, when held' such as a right shift, the keys would produce !@#$^. Obviously it would be best if these assignments were left to be customizable, because each users preferences would be different for where the optimal location for these characters would be.

(off-topic tip)
A digital programmable keyboard - where every key is a miniature display - would be a solution for every developer.
Have a look at https://www.youtube.com/watch?v=UvG_rTTmvmg (he shows many more very special keyboards) or https://www.artlebedev.com/optimus/popularis/

So this is asking for functionality like the Fn key or just like Shift.
Can't you do this already via shortcut dialog?  Shift+1 creating a !, you could make ctrl+1 to do something different.

The author is probably talking about something like this https://dreymar.colemak.org/layers-extend.html.

Can't you do this already via shortcut dialog?

Allowing certain keys to activate layers on hold, like shift activates the "uppercase layer", would make life easier as it means not having to map out each LAYER_KEY + KEY combo in that layer manually. Plus, currently certain keys can't be used to create shortcut combos (eg. Caps Lock) in KBM

Can you help make this be more concrete for me. Provide a few crisp real world examples? Right now I’m unsure what exactly is being asked.

Yes of course, also sorry for the late reply. Essentially what I had in mind was a piece of software that could allow the end user to be able to use multiple layers on their keyboard, with every layer having it's set of shortcuts (e.x on one layer Ctrl + G could be used to open a program while on another layer that same combination could be used to run a specific script etc) in order to have even more shortcuts than it was previously possible.

Allowing certain keys to activate layers on hold, like shift activates the "uppercase layer", would make life easier as it means not having to map out each LAYER_KEY + KEY combo in that layer manually. Plus, currently certain keys can't be used to create shortcut combos (eg. Caps Lock) in KBM

That's exactly what I was thinking about. I strongly believe that this would be a very useful feature to implement not just for the poweruser but for everyone.
Essentially this whole feature is about turning this emoji keyboard by Tom Scott, who essentially used 14(!) keyboards and Lua macros to make a keyboard (?) with every single one emoji, to a piece of software where the end user would be able to create and manage his layers with keyboard shortcuts however he so pleases and cycle all of them using a fixed shortcut (maybe we could use something like ctrl + shift + tab ?)
Thank you all and I would love to hear your opinion on this.


Documentation update: source attributes, block system, sphinx docstrings

This is a documentation update:

Add comments with #: for attributes of Source, BlockSource, and a few other classes. These will appear in our API reference after this is merged.
Fix some problems with the block system documentation:

Several subsection headings did not appear;
The arguments to _compute  were never described;
Model attributes, which are relatively rare, were more prominently documented than model functions and dimensions, which are both used in every block. They were also occasionally referred to as 'static attributes', their old name.

Fix a few docstrings that weren't compatible with sphinx, and thus looked weird in the API reference.

Thanks for reviewing Pueh!


Bump ray version.

Bumping Ray version to 1.3 introduced a bug in the test infrastructure that triggers a segfault when starting/stopping Ray after performing the operation rX.T.tensordot(rX, axes=1) in test_tensordot_basic, as well as a related bug in test_matmul.
The issue with test_tensordot_basic was resolved by performing the same test with different copies of the same data. This suggests an issue when performing the tensordot operation on the same input (which is what happens when we perform tensordot on an input and its transpose).
The issue with test_matmul was resolved by generating numpy objects from nums objects instead of nums objects from numpy objects. It's unclear how this change resolved the issue, but both tests perform some variant of X.T @ X, which suggests the issue is some side effect of performing a tensordot on the same input data.


Remove chrome artifacts

There was some redundancy across several modules regarding an unwanted behaviour in Chrome. I moved the removeChromeArtifacts over to the node helpers and rewrote the affected parts. Additionally, I made sure SPANs were removed only if they had no attributes.

Overall looks sound to me :+1:, would value a second opinion from the team though.

There it is, indeed it's nicer. Thanks for the suggestion @rrees

Small (last) thing could the module be called constants rather than vars. Because they are actually invariants.

No problemo, I'll take care of this tonight :+1:


Add more validation for OCIMachineTemplate

What would you like to be added:
Now that #55 has been merged we need to work on adding more validation checks for things like the following:

CompartmentId
Shape is valid (might need to call to OCI for validation or the OCI SDK might have pre-flight validation we could use. This one might not be straight foreword so some thought should be used on this validation via a webhook or not.)
NetworkDetails (valid CIDRs)
IsPvEncryptionInTransitEnabled (some bare metal shapes require this to be false https://docs.oracle.com/en-us/iaas/releasenotes/changes/60d602f5-abb3-4639-aa19-292a5744a808/)

Why is this needed:
Now that #55 is merged we should expand upon our validation. This issue isn't to 100% cover all possibilities, but rather cover what we can now that make sense.

After speaking with the team we've decided to limit how strictly we validate for now. Things like  IsPvEncryptionInTransitEnabled are documented and handled on the compute side. Having the client side handle validation will start to become brittle.


Publish integration to HACS

https://github.com/hacs/default
Blocked by #2

https://github.com/hacs/default/pull/2473


Wrong coordinates in Godot 3.x CRT shader. Fixes #4

CRT shader with "Barrel Power" = 1.5 before:

After:

@RealJTG 1 year and a half later I finally saw this pull request, sorry it took so long, hahaha. Tested and merged with master, thanks for creating the fix!


refactor(ast_codegen): use stringify for generators names.

The generator name is always the same as its identifier so this PR changes all "<generator_ident>" to stringify!(<generator_ident>)

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#4388  👈
#4373
#4371
#4309
#4289
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @rzvxa and the rest of your teammates on  Graphite

Looks good. Do you want to move this PR out of this stack, so we can get it merged? (no worries if not)


Add Wallet Package

Is your feature request related to a problem? Please describe.
Write a wallet package that lives on top of the Construction API and keys package (#54) to create a simple interface for developers that is more familiar to existing transaction construction SDKs.
Describe the solution you'd like
A high-level view of the desired flow can be found here.

Add Wallet


AttributeError: module 'qgrid2' has no attribute 'show_grid'

#Import libraries
import pandas as pd
pd.options.plotting.backend = "matplotlib"
import datetime as dt
import numpy as np
import qgrid2 as qg
%load_ext sql

adtnl_rows = None
%sql sqlite:///NightlySleepDurations.sqlite3
result = %sql SELECT * from SLEEP_DURATIONS;
df = result.DataFrame()
len_in = df.shape[0]
df["sleep_date"] = pd.to_datetime(df["sleep_date"])
last_date_in = df.loc[len_in-1,"sleep_date"]
days_to_add = (dt.datetime.now() - last_date_in).days
if days_to_add > 0:
    day_to_add_first = last_date_in + dt.timedelta(days=1)
    day_to_add_last = last_date_in + dt.timedelta(days=days_to_add)
    dti = pd.date_range(start = day_to_add_first, end = day_to_add_last, freq='D')
    dummy_data = np.empty((days_to_add))
    dummy_data[:] = np.nan
    d={'sleep_date': dti, 'total_duration': dummy_data}
    adtnl_rows = pd.DataFrame(data=d,index=None)
    df_qgrid=qg.show_grid(adtnl_rows, show_toolbar=True)

=================================================================
The sql extension is already loaded. To reload it, use:
  %reload_ext sql
 * sqlite:///NightlySleepDurations.sqlite3
Done.

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_7444/382802327.py in <module>
     23     d={'sleep_date': dti, 'total_duration': dummy_data}
     24     adtnl_rows = pd.DataFrame(data=d,index=None)
---> 25     df_qgrid=qg.show_grid(adtnl_rows, show_toolbar=True)

AttributeError: module 'qgrid2' has no attribute 'show_grid'

Try
import qgrid as qg
Instead of
import qgrid2 as qg

I think the problem was that I still had J123's extension installed. Might have been some version issues as well. I started all over again with a fresh install of MiniConda and carefully duplicated the config that works on my desktop machine. I was able to get both the J123 extension and yours to work properly. I have yours installed now on this machine now and will switch my desktop later. Thank you very much for doing this.  :-) Gary

No worries. I am not very good at the JS side of things, and I just found I really liked the simplicity of Qgrid. When it stopped working on newer versions of Jupyterlab, I had to figure out a way to get the basic functionality to work.  That's where I am now.


Failure building in Alpine Linux

I'm trying to install memray in Alpine based container. For example python:3.8-alpine.
After installing the needed packages:
 apk update & apk add gcc g++ make libunwind-dev musl-dev
compilation errors appear. First, there is missing definition of pvalloc function, probably removed in gcc 10 which is available in Alpine.
I tried to add manually the function prototype in /usr/include/malloc.h - after that another errors appears:
      src/memray/_memray/hooks.h:31:30: error: redefinition of 'memray::hooks::SymbolHook<void* (*)(void*, long unsigned int, int, int, int, long int)> memray::hooks::mmap'
         31 |     FOR_EACH_HOOKED_FUNCTION(mmap64)                                                                    \
            |                              ^~~~~~
      src/memray/_memray/hooks.cpp:70:64: note: in definition of macro 'FOR_EACH_HOOKED_FUNCTION'
         70 | #define FOR_EACH_HOOKED_FUNCTION(f) SymbolHook<decltype(&::f)> f(#f, &::f);
            |                                                                ^
      src/memray/_memray/hooks.cpp:71:1: note: in expansion of macro 'MEMRAY_HOOKED_FUNCTIONS'
         71 | MEMRAY_HOOKED_FUNCTIONS
            | ^~~~~~~~~~~~~~~~~~~~~~~
      src/memray/_memray/hooks.h:30:30: note: 'memray::hooks::SymbolHook<void* (*)(void*, long unsigned int, int, int, int, long int)> memray::hooks::mmap' previously declared here
         30 |     FOR_EACH_HOOKED_FUNCTION(mmap)                                                                      \
            |                              ^~~~
      src/memray/_memray/hooks.cpp:70:64: note: in definition of macro 'FOR_EACH_HOOKED_FUNCTION'
         70 | #define FOR_EACH_HOOKED_FUNCTION(f) SymbolHook<decltype(&::f)> f(#f, &::f);
            |                                                                ^
      src/memray/_memray/hooks.cpp:71:1: note: in expansion of macro 'MEMRAY_HOOKED_FUNCTIONS'
         71 | MEMRAY_HOOKED_FUNCTIONS
            | ^~~~~~~~~~~~~~~~~~~~~~~
      In file included from src/memray/_memray/elf_utils.h:7,
                       from src/memray/_memray/hooks.h:10,
                       from src/memray/_memray/hooks.cpp:4:
      src/memray/_memray/hooks.cpp:96:1: error: redefinition of 'void* memray::intercept::mmap(void*, size_t, int, int, int, off_t)'
         96 | mmap64(void* addr, size_t length, int prot, int flags, int fd, off64_t offset) noexcept
            | ^~~~~~
      src/memray/_memray/hooks.cpp:87:1: note: 'void* memray::intercept::mmap(void*, size_t, int, int, int, off_t)' previously defined here
         87 | mmap(void* addr, size_t length, int prot, int flags, int fd, off_t offset) noexcept
            | ^~~~
      error: command '/usr/bin/gcc' failed with exit code 1

Is it possible to do something about it?

Thanks for the heads up. We've started working on it in #75 - it seems to be working on that branch now, though it has required quite a few changes to get things working nicely with musl instead of glibc.
If you are able to clone that branch and try building and using it, I'd love to hear whether it works for you.

The build succeeded! Thank you very much for the fast response!
I'll try the product itself in a couple of hours and update


Dependency-inject idRight into IdGenerator

Instead of accessing $_SERVER['SERVER_NAME'] directly from Swift_Mime_IdGenerator, it would be cleaner to inject idRight through the dependency injection container.
This patch also avoids the need to inject the email validator into the IdGenerator. The validator is only used to validate the config value. Elsewhere in Swiftmailer configuration values are not subject to such thorough validation.

Thank you @c960657.


Refactored to work as module

Hi! I don't think you support this stuff any longer, but nonetheless.
Refactored whole gem to working as included module instead of parent class, like:
class MyJob
include Resque::Plugins::Status
def perform
...
end
end

would love to see this make it into master!

I agreed with quirkey and trying to allocate some time for implementing his proposals :)

I'm using this right now in a fork. Is there anything I can help out with to prepare this for a proper release?

FYI, I added the Resque::JobWithStatus (which just includes the module) and updated the docs in our fork here:
https://github.com/bukowskis/resque-status/commits/status-plugin

Had to make some small adjustments, but this is finally released as 0.3.0. Thanks!


This doc only shows Node.js sample but in Next steps sections it is not clear how to pick other languages

In this paragraph:
"The "How to" articles referenced in the Next Steps section provide more complete samples and show the use of other programming languages. For more information about how devices connect to Azure IoT Central, see the Device connectivity article."
It says that next step will have information about using other programming languages. But it is not clearly stated in the next step Like for c# please go here etc....

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

ID: f765cd3a-0b7c-a968-db21-258f59b6be6d
Version Independent ID: 443e6cac-f25b-8f0c-628e-3b72f3df0239
Content: Add a real device to an Azure IoT Central application
Content Source: articles/iot-central/tutorial-add-device.md
Service: iot-central
GitHub Login: @sandeeppujar
Microsoft Alias: sandeepu

@ppathan Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

Hi @ppathan - I've updated the article and clarified the links to the how-to connect articles. Thanks for pointing this out.
#please-close


Breakdown analysis for modules, how to, glossary for DataJoint

Write detailed breakdown of documentation tasks for DataJoint pipeline.

Fixed via #60


Class 'App' not found

[x] This request isn't a duplicate of an existing issue
[x] I've read the docs and followed them (if applicable)
[x] This is not a personal support request that should be posted on the Roots Discourse community
[x] I've read the guidelines for Contributing to Roots Projects

Description
Can't get Sage to install properly.
Steps to reproduce

Install Sage through composer or git
Activate

Expected behavior: Working homepage
Actual behavior: Empty homepage with errors

( ! ) Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Class 'App' not found in /srv/www/domain.tld/current/web/app/uploads/cache/a1e3c48b0395f0adfcf4ce178f4dd567983a6e72.php on line 2
--

Reproduces how often: 100%
Versions
Windows 10 Pro 1903
VirtualBox : 5.2.32
Vagrant : 2.2.4
Ansible : 2.7.5
Trellis : 1.0.3
Sage : 9.0.9
WSL : Ubuntu 18.04.2 LTS
WSL Node : 8.10.0
WSL NPM : 3.5.2
WSL Composer : 1.9.0
WSL PHP : 7.1.3
Additional information
I also tried to downgrade my PHP version in trellis to 7.1 still not working.

Assuming you have ran composer install inside of Sage's directory, perhaps try clearing your cache located in app/uploads/cache/.
Nonetheless, this is not a bug or issue directly with Sage and is better suited for the Roots Discourse if further help is needed.

Even when clearing the cache it's not working. I'm sorry to ask you, but why are you so confident it's not a bug and it's user related ? I destroyed my VM and local files so many time that the cache got rebuild every time I tried. Seriously I spent many hours making sure it was not my manipulation that cause the bug.

What is your install / build step order for Sage?
This problem has been mentioned multiple times and has to do with Controller. There should be plenty out there to debug it no matter your specific situation by searching:
( ! ) Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Class 'App' not found in

I've read the 3 you just sent me, none worked for me. And yes I know how to do a google search I already searched that particular error.
If there's so many people talking about that error, it's not a bug, it's all people fault ?
What are my steps,
In /site/web/app/themes/ I ran :
rm -r ../uploads/cache
composer create-project roots/sage my-cool-theme
cd /my-cool-theme
composer install
yarn & yarn build
Wordpress Settings -> Activate the my-cool-theme
Go to the front page, and got error.

Just for the hint: @jonathanlaf, the root in the mentioned error (/srv/www/domain.tld/current/web/app/) differs from the last mentioned steps (/site/web/app/themes/). Did you shortened / simplify it for your last comment?

Yes I shortened it since I was typing it from the top of my head..

I have the same issue. Any update? Any one solved this bug?
-thanks

I got this fixed by upgrading composer packages.

I got this fixed by upgrading composer packages.

Could you elaborate which packages?

In our case it had to do with PHP 7.4. When we switched back to PHP 7.3 the error did not pop up anymore.

Hello. I have also the issue on my website also when migrating  PHP to a newer version here 7.4.
I'm using a plugin based on older version of Sage it seems but since I don't know about PHP it is hard to debug on my side. I'm not developing under composer.
the faulty code is certainly a "user related" but the "user" is no more there
issue is resources/views/front-page.blade.php
         <div id="cubsmap-service"                 data-zoom='{!! App::GetOption("cc_gmap_zoom", 0) !!}'                 data-lat='{!! App::GetOption("cc_gmap_lat", 0) !!}'                 data-lng='{!! App::GetOption("cc_gmap_lng", 0) !!}'                 data-markers='{!! FrontPage::MapPositions() !!}'>           </div>
Stack trace:
#0 /var/www/html/wp-content/themes/[oursite]/vendor/illuminate/view/Engines/PhpEngine.php(43): include()
#1 /var/www/html/wp-content/themes/[oursite]/vendor/illuminate/view/Engines/CompilerEngine.php(59): Illuminate\View\Engines\PhpEngine->evaluatePath('/var/www/html/w...', Array)
#2 /var/www/html/wp-content/themes/[oursite]/vendor/illuminate/view/View.php(142): Illuminate\View\Engines\CompilerEngine->get('/var/www/html/w...', Array)
#3 /var/www/html/wp-content/themes/[oursite]/vendor/illuminate/view/View.php(125): Illuminate\View\View->getContents()
#4 /var/www/html/wp-content/themes/[oursite]/vendor/illuminate/view/View.php(90): Illuminate\View\View->renderContents()
#5 /var/www/html/wp-content/themes/[oursite]/vendor/roots/sage-lib/Template/Blade.php(58): Illuminate\View\View->render()
#6 /var/www/html/wp-content/themes/[oursite] in /var/www/html/wp-content/uploads/cache/91c448e8663ee0a6aecbc2d4c451f96c9b8792c4.php on line 38

but since I don't know about PHP it is hard to debug on my side.

This is not the place for this question. Your association needs to hire a PHP developer.

Well. Seems I'm not alone to face the issue. Seems that, the plugins that where developed with roots sage in the past are facing an issue when the website is upgraded to newer version of PHP. PHP 7.4
So here it is a good place to ask the question:

So it could be bad usage by developers working with the Sage in the past
or an issue in Sage in older versions.  (usage of a now deprecated feature?, or similar )

In both case it could be interesting to document the reason here. (or on Sage side or what new in PHP 7.4 affecting the plugin)  because when you search google for that exact problem you end-up here in this place.
For your suggestion about PHP developer for my association, I would be that developer but seems I will have to ramp up quickly and installing a full development environment since upgrading composer package seems a way to go... but here no composer etc.. just sources code on production.   a classic :-D

So I've a resolution of my issue.
Seems it has to do with namespace. why affecter in PHP 7.4 is maybe(?) due to get_declared_classes() unpredictability in PHP 7.4 'https://github.com/squizlabs/PHP_CodeSniffer/pull/3052'
So I explicitly named the class including it's namespace
+               data-zoom='{!! \App\App::GetOption("cc_gmap_zoom", 0) !!}'
+               data-lat='{!! \App\App::GetOption("cc_gmap_lat", 0) !!}'
+               data-lng='{!! \App\App::GetOption("cc_gmap_lng", 0) `!!}'

Now certainly not the best approach but. I started learning PHP like today :D

I encountered something similar to this after re-provisioning Homestead vagrant box, jumping from PHP 7.1 to PHP 7.4. After a lot of digging I found that the problem was an old version of VirtualBox and everything was fixed after updating to VirtualBox 6. See: https://github.com/laravel/homestead/issues/1219

Let's continue this conversation on the forum.
https://discourse.roots.io/


Uppercase in tag breaks rancher-compose

I'm sorry if this is stated somewhere but I've tried to find a similar issue or any documentation about this without any luck.
Rancher Version:
1.0.1
Docker Version:
Tried on both 1.10.3 and 1.11.1
OS and where are the hosts located? (cloud, bare metal, etc):
Tested on MAC and Linux from local machines.
Rancher running in datacenter on VSphere6 and CentOS7 VMs
Setup Details: (single node rancher vs. HA rancher, internal DB vs. external DB)
HA Rancher with external DB
Environment Type: (Cattle/Kubernetes/Swarm/Mesos)
Swarm
Steps to Reproduce:
rancher-compose -f some/docker-compose.yml up will fail for ex: image:dev-SNAPSHOT
Tested with rancher-compose version 0.7.4 and v0.8.2-rc1
Results:
ERRO[0005] Failed to start: my-service : Bad response statusCode [422].
Status [422 Unprocessable Entity]. Body: [code=InvalidReference, fieldName=imageUuid] from [https://rancher.domain.com/v1/services]
Expected:
That the services should start.

Might be something else wrong with the name, it works with easier names.
repository.repositoryUrl.domainName/image works but
repository.repositoryUrl.domainName/com/test/image doesn't work

Can you share your docker-compose.yml?
Does your registry actually use uppercase for tags?
We expect image names to be in the following format:
[registry-name]/[namespace]/[imagename]:[version]

I've tried with very easy docker-compose files with only one service and the image tag.
  test:
    image: registry-project.registry.url/our/image:dev-SNAPSHOT

[registry-name]/[namespace]/[imagename]:[version] is as we have it.
or more like
[repository].[registry-url]/[namespace]/[imagename]:[version]

This is the error we are getting.
Bad response statusCode [422]. Status [422 Unprocessable Entity]. Body: [code=InvalidReference, fieldName=imageUuid] from [https://rancher.domain.com/v1/projects/1a22/services])

If i run docker pull [registry-project].[registry.domain.local]/our/apps/app-i-want:dev-SNAPSHOT on the HOST I want it on it starts to download the image. So nothing wrong there. Its just when adding it from a Stack(docker-compose file) it gives this error instead

Have you tried also this same image in the UI? The error message looks like the API is complaining but I want to confirm it's the API and not rancher-compose specific.

Seems it was the nested namespace.


Include example js_of_ocaml usage in wiki

My primary use requires using the same data in the browser and cli (both using Irmin), so it'd be great to have an example up-and-running project & documentation.

Sorry to give a bump, but I'm coming back to this now, and hoping to be able to sync between a js_of_ocaml Irmin client running in the browser, and an Irmin instance running server-side. I know Cuekeeper is an example, but hoping for a fairly simple, minimal set of examples.

I was talking to @yomimono about this yesterday -- she is also looking into extracting some of the CueKeeper logic into a simpler set of examples.

Closing as the README now points to https://github.com/talex5/irmin-js


Deprecated types?

I noticed Str and Num and all of those guys have been deprecated. What's the reasoning behind this? Just curious.

Long names (String, Number, Object, etc...) are more natural


ReQuEST direct convolution kernel

This PR provides a new direct convolution kernel which we used for dividiti's submission to the 1st ReQuEST competition at ASPLOS'18.
As I will prove shortly, this kernel is faster than GEMM-based convolution for 15 out of 16 MobileNets models (i.e. all except the baseline model with the width multiplier of 1.0 and the resolution of 224x224).

Here's how to read the graph:

The colour of a marker denotes the version of ArmCL: "17.12", "18.01", "18.03", "dv/dt" (this PR from a fork of "18.03").
The size of a marker is proportional to the input resolution: 224 (the largest), 192, 160, 128 (the smallest).
The shape of a marker denotes both the channel multiplier and the convolution method:

Direct convolution: 1.00 - pentagon, 0.75 - square, 0.50 - triangle-up, 0.25 - circle.
GEMM-based convolution: 1.00 - star, 0.75 - diamond, 0.50 - triangle-down, 0.25 - octagon.

Roughly speaking, a shape has N corners for the channel multiplier of *(N-1)0.25:

5 corners for the channel multiplier of 1.0 (pentagon or star);
4 corners for the channel multiplier of 0.75 (square or diamond);
3 corners for the channel multiplier of 0.50 (triangle-up or triangle-down);
"no corners" for the channel multiplier of 0.25 (circle or octagon).

The plot bounds are chosen so that all the 32 points for ArmCL 18.03 are shown (32 = 4 input resolutions times 4 channel multiplies times 2 convolution methods). Only a few points are shown for ArmCL 17.12 for two reasons:

dividiti's optimisations for direct convolution kernels were mostly disabled in 17.12 due to bugs (https://github.com/ARM-software/ComputeLibrary/issues/322, https://github.com/ARM-software/ComputeLibrary/issues/323), which were fixed in 18.01. Therefore, the most accurate points were simply too slow with 17.12 (> 100 ms).
For some points, accuracy dropped practically to ~10%. Presumably, this was due to some other bug in 17.12 which also got fixed in 18.01.

This graph plots Top 1 accuracy on all the 50,000 images of the ImageNet validation set (Y, %) against the image classification time (X, ms). Due to the long evaluation time across all the 16 models, accuracy was only evaluated using ArmCL 18.03, and then reused for the other library variants (therefore, no accuracy degradation for ArmCL 17.12 described above is visible).

In summary, using direct convolution is faster than GEMM-based convolution for 15 MobileNets models out of 16 (i.e., all except the baseline model with the channel multiplier of 1.00 and input resolution of 224). Also, it's practically possible to exceed AlexNet-level accuracy (0.59 > 0.57) in only about 17 ms per image.

FYI: We haven't forgotten about you but we're a bit tight for the merge window for 18.05, so I moved this PR to 18.08

@AnthonyARM I am looking at resolving the conflict. But I don't see the code for setting the local work size hint (_lws_hint) any more. Do you completely rely on online tuning now please?

OK, I've found it here.
Now, we have heuristics to submit for setting up _lws_hint for a couple of other kernels. Would you suggest to place them similarly to this file?

@psyhtest Yes, that's correct, we're going to move all the heuristics to that file.
We've also got a ticket to look at this PR which is getting near the top of our backlog now.

Thanks @AnthonyARM. We've clearly been unlucky with direct convolution being moved there first :). Perhaps it will be easier to merge it on your side then. The heuristics are still the same.

I tried to merge this pull request and found out that is >1.5x slower in both dynamic and static tuning against the gemm approach for the two mobilenet graph examples that we support in benchmarks. Can you rebase and check against 18.05?

Hi @GeorgeARM, As the above graph shows, this kernel is indeed slower for the baseline version (although not > 1.5x slower). I'll check against v18.05 in 1-2 weeks.
I suspect the reason it is slower relates to your second comment. This used to be correct in v17.12-v18.03 (https://github.com/ARM-software/ComputeLibrary/blob/c3f34a43ffb5d52ee4a4e9f7b1bf4c6c002aeebb/src/core/CL/kernels/CLDirectConvolutionLayerKernel.cpp#L331), but is now broken in v18.05 (https://github.com/ARM-software/ComputeLibrary/blob/b3a371bc429d2ba45e56baaf239d8200c2662a74/src/runtime/CL/tuners/BifrostTuner.cpp#L68).
The trailing underscore there was intentional - to signal that it was "sort of product of input dimensions" but not quite (please read the comment above).

Closing this pull request as no performance benefit has been noted in latest ACL.
Reopen if needed. Thank you

On your request, I have provided further evidence on the performance our ReQuEST kernel :). Unfortunately, I do not seem to have permissions to re-open this pull request? ("request" again!:))


merge release/4.0.0 to dev

Merging changes from release/4.0.0 back to dev

Codecov Report

:exclamation: No coverage uploaded for pull request base (dev@b6fd717). Click here to learn what that means.
The diff coverage is n/a.

@@          Coverage Diff           @@
##             dev    #1632   +/-   ##
======================================
  Coverage       ?   13.34%
  Complexity     ?      298
======================================
  Files          ?      165
  Lines          ?     7431
  Branches       ?      702
======================================
  Hits           ?      992
  Misses         ?     6297
  Partials       ?      142

Continue to review full report at Codecov.

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


Update records.json

🌐 Website
Link: skibidi-neon.vercel.app
go.rweb.site
Screenshot:

📋 Checklist

[x] I have starred the repository.
[x] I have read and accepted the Terms of Service.
[x] There is reasonable content on my site.
[x] I have configured a custom domain for my site.

Welcome! In order to make the subdomain available for your Vercel website, please complete the following instructions:

Add the custom domain to your Vercel project:

Copy-paste me the value of the TXT record needed to verify domain ownership:

vc-domain-verify=go.rweb.site,7a6529cb449031c64faa

We have added the record. Please open this page once again:

Alright it works

Your site is live at go.rweb.site 🎉


Cannot check the checkbox

After the Base components refactor sth bad happened with checkboxes :)
It’s not possible to check it
Please take care of it as it critical issue in the checkout and other forms

I'll fix it today.

Hmm it resulted in checkbox problem but maybe the source of it is in something else - I’ll take a look at it today thanks :)
The local problem you’re facing seems like it’s caused by ... non exiting Es index. Try to run “npm run restore2main; npm run db rebuild” to restore database

I don't have any console erros in Safari + dev tools on Macosx; but the checkboxes don't work :)


Metrics API ignores multiple path arguments

While the API docs (https://github.com/pyr/cyanite/blob/master/doc/source/api.rst#metrics) claim that the metrics API supports multiple path arguments only a single result is returned:
$ curl 'http://<IP_ADDRESS>:8080/metrics?path=com.example.h01.load.load.longterm&from=1490721538&to=1490807938'; echo; echo
{"from":1490804400,"to":1490807700,"step":300,"series":{"com.example.h01.load.load.longterm":[0.392,0.35649999999999993,0.35850000000000004,0.3370000000000001,0.31799999999999995,0.3610526315789474,0.3545,0.39849999999999997,0.3995,0.39449999999999996,0.36199999999999993,0.4545]}}

$ curl 'http://<IP_ADDRESS>:8080/metrics?path=com.example.h02.load.load.longterm&from=1490721538&to=1490807938'; echo; echo
{"from":1490804400,"to":1490807700,"step":300,"series":{"com.example.h02.load.load.longterm":[0.2733333333333334,0.25800000000000006,0.27349999999999997,0.28350000000000003,0.30850000000000005,0.27399999999999997,0.22650000000000006,0.201,0.17800000000000002,0.17950000000000005,0.1915,0.1795]}}

$ curl 'http://<IP_ADDRESS>:8080/metrics?path=com.example.h01.load.load.longterm&path=com.example.h02.load.load.longterm&=from=1490721538&to=1490807938'; echo; echo
{"from":1490804400,"to":1490807700,"step":300,"series":{"com.example.h01.load.load.longterm":[0.392,0.35649999999999993,0.35850000000000004,0.3370000000000001,0.31799999999999995,0.3610526315789474,0.3545,0.39849999999999997,0.3995,0.39449999999999996,0.36199999999999993,0.4545]}}

Multiple path arguments are used by graphite-api/cyanite when rendering multiple metrics into one chart.

As far as I know, according to HTTP spec, it has to be path[]. Full disclaimer: I haven't checked it on Cyanite yet (working on a different branch that's not fully ready just yet).

path[] means
http://<IP_ADDRESS>:8080/metrics?path=[com.example.h01.load.load.longterm,com.example.h02.load.load.longterm]&from=1490721538&to=1490807938'?

If I understand it correctly, it means that:
http://<IP_ADDRESS>:8080/metrics?path[]=com.example.h01.load.load.longterm&path[]=com.example.h02.load.load.longterm&from=1490721538&to=1490807938

At least at some point in time ?path=foo&path=bar worked, because that's what graphite-cyanite does when making queries. path[] is a PHP thing (at least). The HTTP spec doesn't say anything about the way repeated query string parameters are parsed, it is up to the server to interpret them the way it needs (first wins, last wins, or yield a list).

Oh, I was sure it was a part of 3986 RFC, although I haven't checked. I only know that major web frameworks (like rails) did it this way, maybe they took it from php.
But if graphite-cyanite works this way, and it used to work, it's just a regression.
I'm mostly done with a branch I was working on and hope to be able to work on that one soon (unless someone wanted to tackle it right away).

`http://<IP_ADDRESS>:8080/metrics?path[]=com.example.h01.load.load.longterm&path[]=com.example.h02.load.load.longterm&from=1490721538&to=14908079? => Internal Server Error
@brutasse: Yes... I tried to track down why graphite-web won't render multipe metrics into a single chart anymore and found out that Cyanite - in the current master version - only returns a single data series.
Either cyanite or graphite-cyanite should be fixed. I might fix graphite-cyanite if someone can tell me which parameter format Cyanite expects. (Please add examples to the API docs.)

I'm pretty sure it's on cyanite side. I just didn't know about this feature and it did't have any tests. I'll make sure to fix it and add a test if possible..

@ifesdjeen thank you, that would be great :)

If I recall, you need to use ring.middleware.params/wrap-params to get the ability to have either single value for a params or a vector of values decoded from the query-string into :params. It's a bit of a hairy thing tho: foo=bar will return {:foo "bar"} but foo=bar&foo=baz will return {:foo ["bar" baz"]}. Maybe cyanite use to use this middleware in the past?

Thank you. I can confirm it works, when building cyanite against this PR.

Thank you @MichaelHierweck!


✨  Clean ups after bumping Rukapk

This PR makes the following changes:

Removes the use of a separate handler, given rukpak has now externalized its implementation.
Removes the unpacking status, which is no longer required with the use of direct registry client.

Description

Reviewer Checklist

[ ] API Go Documentation
[ ] Tests: Unit Tests (and E2E Tests, if appropriate)
[ ] Comprehensive Commit Messages
[ ] Links to related GitHub Issue(s)

Looks like https://github.com/operator-framework/operator-controller/pull/916 is causing merge conflicts when added to the queue. Will rebase this after #916 gets merged.

/lgtm


Add Nat ranges and zipWithIndex to HList and tuples

As discussed here. Three questions:
Do we want to allow the user to specify the step for ranges? It adds a lot of complexity for something that's questionably useful.
Any thoughts on whether (1 :: 'a :: HNil).zipWithIndex should be (1 :: _0 :: HNil) :: ('a :: _1 :: HNil) :: HNil or (1, _0) :: ('a, _1) :: HNil? My vote's for the latter but the former might be more consistent.
Is there really any reason to provide this for Coproduct?

Fixed by @AndreasKostler in #450.


TF1.14 compile still fails with CUDA 10.1 ("Could not find any cublas_api.h")

Please make sure that this is a build/installation issue. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:build_template
System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): CentOS 7.6
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary): Source
TensorFlow version: r1.14 tag
Python version: 3.6
Installed using virtualenv? pip? conda?: venv
Bazel version (if compiling from source): 0.24.1
GCC/Compiler version (if compiling from source): 8.2.1
CUDA/cuDNN version: 10.1/7.5.1
GPU model and memory: V100

Describe the problem
CUDA build fails because cublas_api.h is now under /usr/include and not /usr/local/cuda/include. (And the r1.14 find_cuda_config.py script ignores TF_CUDA_PATHS when searching for cublas.)
This problem is fixed on master. Someone just needs to bring third_party/gpu/find_cuda_config.py to the r1.14 branch.
Provide the exact sequence of commands / steps that you executed before running into the problem
env TF_CUDA_PATHS=/usr/local/cuda,/usr ./configure
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
Any other info / logs
Cuda Configuration Error: Failed to run find_cuda_config.py: Could not find any cublas_api.h matching version '' in any subdirectory:
''
'include'
'include/cuda'
'include/*-linux-gnu'
'extras/CUPTI/include'
'include/cuda/CUPTI'
of:
'/usr/local/cuda'
INFO: Elapsed time: 0.468s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded)

@plopresti Can you please follow the steps install TF from sources. Please install 10.0 CUDA version and let us know how it progresses. Thanks!

@plopresti Automatically closing due to lack of recent activity. Please update the issue when new information becomes available, and we will reopen the issue. Thanks!

Reopening the issue just because I faced the same problem on Windows.
System Information

OS Platform: Windows 10
TensorFlow installed from (source or binary): Source
TensorFlow version: master at 2fd2eff6cb
Python version: 3.6.8
Bazel version (if compiling from source): 0.26.1
GCC/Compiler version (if compiling from source): MSVC Tools 19.20 (cl v.)
CUDA/cuDNN version: 10.1/7.6.1
GPU model and memory: Quadro P1000 4GB

Describe the problem
During the configuration process I specified the CUDA paths with as C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1. When Bazel launches cuda_configure.bzl, the find_cuda_config.py script is not able to locate the libraries because the paths are purged from the single back slashes.
Provide the exact sequence of commands / steps that you executed before running into the problem
I was following the steps provided on the Build from source on Windows page. The error raised after launching the bazel compilation.
Any other info/logs
Reading rc options for 'build' from d:\tensorflow\.tf_configure.bazelrc:
'build' options:
    --action_env PYTHON_BIN_PATH=C:/Program Files/Python36/python.exe
    --action_env PYTHON_LIB_PATH=C:/Program Files/Python36/lib/site-packages
    --python_path=C:/Program Files/Python36/python.exe
    --action_env TF_CUDA_VERSION=10.1
    --action_env TF_CUDNN_VERSION=7.6.1
    --action_env TF_CUDA_PATHS=C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.1,C:localcudnn-10.1-v7.6.1cuda
    --action_env CUDA_TOOLKIT_PATH=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1
    --action_env TF_CUDA_COMPUTE_CAPABILITIES=6.1
    --config=cuda
    --config monolithic
    --copt=-w
    --host_copt=-w
    --copt=-DWIN32_LEAN_AND_MEAN
    --host_copt=-DWIN32_LEAN_AND_MEAN
    --copt=-DNOGDI
    --host_copt=-DNOGDI
    --verbose_failures
    --distinct_host_configuration=false
    --define=override_eigen_strong_inline=true
    --action_env TF_CONFIGURE_IOS=0

I moved forward adding an additional back slash to the paths I was specifying.

You may instead use backslashes, as in all other paths.
Worked for me.

What worked for me was editing the find_cuda_config.py file. I went to line 455, after the script updated variable base_paths by filtering paths that existed via os.path.exists(path), and then I added a base_paths.append("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v10.1") line, explicit adding to base_paths the CUDA path in my Windows 10. After that, bazel build --config=v2 //tensorflow/tools/pip_package:build_pip_package stopped complaining that it didn't find cublas_api.h file.
Observation: I had to run configure.cmd again, and even it started to find CUDA and cuDNN automatically, without the need to explicit inform their paths. Changing find_cuda_config.py also fixes configure.cmd calls.

I have faced with the same issue:
For such path C:\tools\cuda,C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1:
INFO: Repository local_config_cuda instantiated at:
  C:/tensorflow/WORKSPACE:19:16: in <toplevel>
  C:/tensorflow/tensorflow/workspace.bzl:98:19: in tf_repositories
Repository rule cuda_configure defined at:
  C:/tensorflow/third_party/gpus/cuda_configure.bzl:1399:33: in <toplevel>
ERROR: An error occurred during the fetch of repository 'local_config_cuda':
   Traceback (most recent call last):
        File "C:/tensorflow/third_party/gpus/cuda_configure.bzl", line 1369, column 38, in _cuda_autoconf_impl
                _create_local_cuda_repository(repository_ctx)
        File "C:/tensorflow/third_party/gpus/cuda_configure.bzl", line 955, column 35, in _create_local_cuda_repository
                cuda_config = _get_cuda_config(repository_ctx, find_cuda_config_script)
        File "C:/tensorflow/third_party/gpus/cuda_configure.bzl", line 657, column 30, in _get_cuda_config
                config = find_cuda_config(repository_ctx, find_cuda_config_script, ["cuda", "cudnn"])
        File "C:/tensorflow/third_party/gpus/cuda_configure.bzl", line 635, column 41, in find_cuda_config
                exec_result = _exec_find_cuda_config(repository_ctx, script_path, cuda_libraries)
        File "C:/tensorflow/third_party/gpus/cuda_configure.bzl", line 629, column 19, in _exec_find_cuda_config
                return execute(repository_ctx, [python_bin, "-c", decompress_and_execute_cmd])
        File "C:/tensorflow/third_party/remote_config/common.bzl", line 208, column 13, in execute
                fail(
Error in fail: Repository command failed
Could not find any cudnn.h, cudnn_version.h matching version '' in any subdirectory:
        ''
        'include'
        'include/cuda'
        'include/*-linux-gnu'
        'extras/CUPTI/include'
        'include/cuda/CUPTI'
of:
        'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1'
ERROR: Skipping '//tensorflow/tools/pip_package:build_pip_package': no such package '@local_config_cuda//cuda': Repository command failed
Could not find any cudnn.h, cudnn_version.h matching version '' in any subdirectory:
        ''
        'include'
        'include/cuda'
        'include/*-linux-gnu'
        'extras/CUPTI/include'
        'include/cuda/CUPTI'
of:
        'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1'
WARNING: Target pattern parsing failed.
ERROR: no such package '@local_config_cuda//cuda': Repository command failed
Could not find any cudnn.h, cudnn_version.h matching version '' in any subdirectory:
        ''
        'include'
        'include/cuda'
        'include/*-linux-gnu'
        'extras/CUPTI/include'
        'include/cuda/CUPTI'
of:
        'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1'
INFO: Elapsed time: 0.381s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded)
    currently loading: tensorflow/tools/pip_package

And for such path C:\\tools\\cuda,C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v10.1:
INFO: Repository local_config_cuda instantiated at:
  C:/tensorflow/WORKSPACE:19:16: in <toplevel>
  C:/tensorflow/tensorflow/workspace.bzl:98:19: in tf_repositories
Repository rule cuda_configure defined at:
  C:/tensorflow/third_party/gpus/cuda_configure.bzl:1399:33: in <toplevel>
ERROR: An error occurred during the fetch of repository 'local_config_cuda':
   Traceback (most recent call last):
        File "C:/tensorflow/third_party/gpus/cuda_configure.bzl", line 1369, column 38, in _cuda_autoconf_impl
                _create_local_cuda_repository(repository_ctx)
        File "C:/tensorflow/third_party/gpus/cuda_configure.bzl", line 1214, column 56, in _create_local_cuda_repository
                host_compiler_includes + _cuda_include_path(
        File "C:/tensorflow/third_party/gpus/cuda_configure.bzl", line 363, column 32, in _cuda_include_path
                inc_entries.append(realpath(repository_ctx, cuda_config.cuda_toolkit_path + "/include"))
        File "C:/tensorflow/third_party/remote_config/common.bzl", line 268, column 19, in realpath
                return execute(repository_ctx, [bash_bin, "-c", "realpath \"%s\"" % path]).stdout.strip()
        File "C:/tensorflow/third_party/remote_config/common.bzl", line 208, column 13, in execute
                fail(
Error in fail: Repository command failed
realpath: 'C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1/include': No such file or directory
ERROR: Skipping '//tensorflow/tools/pip_package:build_pip_package': no such package '@local_config_cuda//cuda': Repository command failed
realpath: 'C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1/include': No such file or directory
WARNING: Target pattern parsing failed.
ERROR: no such package '@local_config_cuda//cuda': Repository command failed
realpath: 'C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1/include': No such file or directory
INFO: Elapsed time: 1.268s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded)
    currently loading: tensorflow/tools/pip_package

Why it so complicated to compile tensorflow for Windows ???
It seems for me that it is bunch of issues in python script on Windows ((

I have faced with another issue:
If the definition of 'com_google_protobuf' was updated, verify that the hashes were also updated.
ERROR: An error occurred during the fetch of repository 'com_google_protobuf':
   Traceback (most recent call last):
        File "C:/tensorflow/third_party/repo.bzl", line 110, column 25, in _tf_http_archive
                _apply_patch(ctx, ctx.attr.patch_file)
        File "C:/tensorflow/third_party/repo.bzl", line 68, column 32, in _apply_patch
                _execute_and_check_ret_code(ctx, cmd)
        File "C:/tensorflow/third_party/repo.bzl", line 52, column 13, in _execute_and_check_ret_code
                fail(("Non-zero return code({1}) when executing '{0}':\n" + "Stdout: {2}\n" +
Error in fail: Non-zero return code(2) when executing 'C:\WINDOWS\system32\bash.exe -l -c "patch" "-p1" "-d" "C:/users/{user}/_bazel_{user}/xv6zejqw/external/com_google_protobuf" "-i" "C:/tensorflow/third_party/protobuf/protobuf.patch"':
Stdout:
Stderr: patch: **** Can't change to directory C:/users/{user}/_bazel_{user}/xv6zejqw/external/com_google_protobuf : No such file or directory
ERROR: Analysis of target '//tensorflow/tools/pip_package:build_pip_package' failed; build aborted: no such package '@com_google_protobuf//': Non-zero return code(2) when executing 'C:\WINDOWS\system32\bash.exe -l -c "patch" "-p1" "-d" "C:/users/{user}/_bazel_{user}/xv6zejqw/external/com_google_protobuf" "-i" "C:/tensorflow/third_party/protobuf/protobuf.patch"':
Stdout:
Stderr: patch: **** Can't change to directory C:/users/{user}/_bazel_{user}/xv6zejqw/external/com_google_protobuf : No such file or directory

It is pretty strange because when I run the following command manually it works:
'C:\WINDOWS\system32\bash.exe -l -c "patch" "-p1" "-d" "C:/users/{user}/bazel{user}/xv6zejqw/external/com_google_protobuf" "-i" "C:/tensorflow/third_party/protobuf/protobuf.patch"'
But build still fails ...


[release-1.10] Improve injection performance

This is an automated cherry-pick of #34805

@googlebot I consent.

@istio-testing: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio_release-1.10
d631d6632a9356b65730f8317ad61b119d4300ae
link
/test integ-pilot-k8s-tests_istio_release-1.10

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.

@istio-testing: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio_release-1.10
d631d6632a9356b65730f8317ad61b119d4300ae
link
/test integ-pilot-k8s-tests_istio_release-1.10

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.

/retest


Exception with raster source when zoomed out

Describe the bug
When zooming out and the layer gets so small that it's not visible, the following exception is thrown:
Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
at getImageData
at RasterSource.push../node_modules/ol/source/Raster.js.RasterSource.processSources_
at RasterSource.push../node_modules/ol/source/Raster.js.RasterSource.getImage
at CanvasImageLayerRenderer.push../node_modules/ol/renderer/canvas/ImageLayer.js.CanvasImageLayerRenderer.prepareFrame
at ImageLayer.push../node_modules/ol/layer/Layer.js.Layer.render
at CompositeMapRenderer.push../node_modules/ol/renderer/Composite.js.CompositeMapRenderer.renderFrame
at Map.push../node_modules/ol/PluggableMap.js.PluggableMap.renderFrame_
at Map.
This happens with ol/layer/Image and ol/source/Raster, but not with ol/layer/Tile and ol/source/TileWMS.
Maybe Raster#getImageData should return null if width or height is zero?
To Reproduce
Sorry, no demo.
Expected behavior
Nothing is shown on map and there is no exception.

Thanks for reporting this. Can you provide a working example (e.g. by clicking "Edit" in one of the official examples) that shows the issue?

Here you go: https://codesandbox.io/s/hopeful-shockley-mylyx?file=/main.js
Just zoom out and and error will be shown.
In Firefox the error message is a bit different: "Uncaught DOMException: Index or size is negative or greater than the allowed amount"

@tapioko Thanks! You are right, Raster#getImageData() should return null when width or height is 0. Would you be able to create a pull request with that fix?


When I don't pass onNodesChange to , there's no measure attribute on the nodes.

What platform were you using when you found the bug?

React Flow / Svelte Flow version: 12.1.1

Live code example
No response
Describe the Bug
When I don't pass onNodesChange to , there's no measure attribute on the nodes.
I want to pass custom onNodeDrag / onNodeClick / onConnect / onConnectStart / onConnectEnd and etc. But if I don't pass onNodesChange, I can't get node's width and height.
Could anyone help me out ?
Steps to reproduce the bug or issue
Just remove the onNodesChange
Expected behavior
Expect that I can get node's measure
Screenshots or Videos
No response
Additional context
No response

If you want to use a controlled flow, you have to pass a onNodesChange handler.
Read this section of the docs to learn more about controlled vs uncontrolled flows.

If you want to use a controlled flow, you have to pass a onNodesChange handler.
Read this section of the docs to learn more about controlled vs uncontrolled flows.

I find this as below
export type NodeChange<NodeType extends NodeBase = NodeBase> = NodeDimensionChange | NodePositionChange | NodeSelectionChange | NodeRemoveChange | NodeAddChange<NodeType> | NodeReplaceChange<NodeType>;

without onNodesChange

I can pass onNodeDrag to handle NodePositionChange
I can pass onNodeClick to handle NodeSelectionChange
also I can handle NodeRemoveChange and NodeAddChange

but there's no handler call onNodeDimensionChange or something，I customized almost every handler besides dimension.
If I pass onNodesChange to , there might be conflicts between them. So I have such a confusion.

Idk where you ever read that you should be listening to onNodeDrag and update positions yourself, even if that "works" it's not the intended way of applying changes.
Read the documentation link above, it explains what onNodesChange and onEdgesChange is for and why you have to add it.
You are free to customize the change application and handling but you still need to add one either way.
It just sounds to me like you're trying to work around something that isn't supposed to be worked around like you're attempting to and you haven't explained why you seem to think this workaround is necessary either.
Just stick to the implementation that is intended ^^

As @bcakmakoglu already explained, if you are working with a controlled flow, you have to add an onNodesChange handler. If you are fine with an uncontrolled one, you can use defaultNodes and defaultEdges without onNodesChange.

@bcakmakoglu  Thank you for explaining patiently.
I am reading the source code of Dify which is using reactflow 11.
https://github.com/langgenius/dify/blob/main/web/app/components/workflow/index.tsx#L320
And there is no onNodesChange passed to ReactFlow but it can get the width and the height.
Thank you again. I'll do as you said.

@bcakmakoglu  Thank you for explaining patiently.
I am reading the source code of Dify which is using reactflow 11.
https://github.com/langgenius/dify/blob/main/web/app/components/workflow/index.tsx#L320
And there is no onNodesChange passed to ReactFlow but it can get the width and the height.
Thank you again. I'll do as you said.


Dataloader for JAT evaluation

Build dataloader to evaluate JAT on MultiNet v0

Data loader for eval of JAT on OpenX


[New Game]:Atari breakout

PR Description 📜
Please include summary related to the issue you have fixed and describe your PR in brief over here by specifying the issue number on which you were working below
Fixes #123

Mark the task you have completed ✅

[x] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[x] I have added screenshot for website preview in assets/images
[x] I have added entries for my game in main README.md
[x] I have added README.md in my folder
[x] I have added working video of the game in README.md (optional)
[x] I have specified the respective issue number for which I have requested the new game.

Add your screenshots(Optional) 📸

Thank you soo much for contributing to our repository 💗

Thank you @singh-anushka ,for creating the PR and contributing to our GameZone 💗
Review team will review the PR and will reach out to you soon! 😇
Make sure that you have marked all the tasks that you are done with ✅.
Thank you for your patience! 😀

Hey @singh-anushka 👋!
@kunjgit here,
We have this annoucement to make 📢!!
During the time of PR don't alter main index file ! 🙂
In main Readme file just use * as a game number during the time we are merging we will add number !! 👀
Make sure you join our Discord🕹 if you haven't 😇
Thank you 💗!

Add game entry in main README file

@kunjgit Added the game into main readme file

Thank you  @singh-anushka , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀


Add adapter layer in Kyuubi Hive JDBC module

Why are the changes needed?
Separate noisy code in an adapter layer to make code maintainable.
How was this patch tested?

[ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[ ] Run test locally before make a pull request

Codecov Report

Merging #1411 (e1ee424) into master (2baabf4) will increase coverage by 0.04%.
The diff coverage is 0.17%.

:exclamation: Current head e1ee424 differs from pull request most recent head f38e689.

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

cc @turboFei, hope this PR can merge after #1414(I will fix the conflict), please review when you have a chance.

cc @yaooqinn should we align with upstream?

Will reopen when related feature request come in.


Fix typo in web push protocol

What's changed, or what was fixed?

Two typos in web push protocol markdown

Target Live Date: N/A

[ ] This has been reviewed and approved by (NAME)
[x] I have run npm test locally and all tests pass.
[ ] I have added the appropriate type-something label.
[ ] I've staged the site and manually verified that my content displays correctly.

CC: @petele

I signed it!

Not sure how that happened. thank you.

thank you!


Considering a more detailed example?

Thanks a lot for such a life saving great project! As so many people are looking for a gradio image prompter tool, do you consider make it more readable with a detailed documentation and examples? Thanks!

Hi, @Shengguang-Zhou
We aim to provide the simplest example following the official demo style.
You can directly refer the official documentation for Custom Components.


Allow per-test settings in openassetio.test.manager cases

What
Allow individual test classes, or cases, to support custom manager settings in openassetio.test.manager suites.
Why
Part of verifying a manager's business logic may require assertion that settings are respected. Or, different settings may be needed to ensure the correct pre-conditions. Presently, this is somewhat complex to achieve, see #474.

There's a workaround for this in BAL, where we reinitialize the settings from the file with new settings, but that's a bit dodgy.


Aura: Skip initialize block & remove cache

This instructs the Aura runtime api to skip initialize block, when
requesting the authorities. This is important, as we don't want to use
the new authorities that should be used from the next block on.
Besides that, it removes the caching stuff. The cache is not available
on full nodes anyway. In the future we should store the authorities
probably in the aux store.

bot merge


[WIP] Supporting Suspense

This discussion originally started by @texastoland in https://github.com/LegendApp/legend-state/discussions/125#discussioncomment-6546293
I've made a simple hook that I think might be all we need to support Suspense? I have not actually used Suspense before, though if it's this easy I may start using it more 😂. So would any of you Suspense wizards out there be able to give this a test and let me know if it works correctly? If so I'll add it to the repo in an update.
import { isPromise, Selector } from '@legendapp/state';
import { useSelector } from '@legendapp/state/react';

export function useSelectorSuspense<T>(selector: Selector<T>): T {
    const value = useSelector(selector) as any;
    if (isPromise(value)) {
        throw value;
    } else if (value?.error) {
        throw value.error;
    } else {
        return value;
    }
}

And this is my simple test case:
const state$ = observable(
    new Promise<string>((resolve) => {
        setTimeout(() => {
            resolve('hello');
        }, 1000);
    })
);

function Test() {
    const value = useSelectorSuspense(state$);
    console.log({ value });
    return
{value}
;
}

export default function App() {
    return (

Suspense test

            <Suspense fallback={
Loading...
}>
                <Test />
            </Suspense>

    );
}

Also if this does work, what would be your preferred way of using it?

Is this a good name for a hook?
It could be a new function added to observables a la use() named useSuspense()?
Or it could even be done in a parameter to use() like state.use({ suspense: true })?

@texastoland It looks like the underlying implementation of use just throws a Promise: https://github.com/facebook/react/blob/fdb368d9e7430b50b9c506e76ccd46bf0576ef9b/packages/react-reconciler/src/ReactFiberThenable.js#L180
But I see from the Valtio thread that React will force using use, though I'd love to know where they said that if you know? The information around Suspense seems to be all over the place... Is it in that RFC and I didn't see it?
Do you think it would work to keep the implementation in the original post but change throw value to use(value)? So it would just return the value normally unless it's a promise in which case it would forward it to use?
Do you know if there is a shim to make use backwards compatible to React 17? If not, maybe we want to call use if it's available, otherwise throw the promise to work in 17?

Here's the RFC again:
https://github.com/acdlite/rfcs/blob/first-class-promises/text/0000-first-class-support-for-promises.md

It looks like the underlying implementation of use just throws a Promise

Correct. That's why Suspense must be opt-in. Otherwise non-Suspense components will error out. See Resuming a suspended component by replaying its execution:

RFC: If a promise passed to use hasn't finished loading, use suspends the component's execution by throwing an exception.

But see also Enable compiler-driven optimizations:

RFC: only Hooks (in other words use) will be allowed to suspend. An auto-memoizing compiler (codename Forget) can take advantage of this knowledge to prevent arbitrary function calls from unnecessarily invalidating a memoized computation.

React will force using use, though I'd love to know where they said that if you know?

See my Takeaway 1 from the same paragraph as previous:

RFC: in the current version of React, an unstable mechanism allows arbitrary functions to suspend during render by throwing a promise. We will be removing this in future releases in favor of use.

maybe we want to call use if it's available, otherwise throw the promise to work in 17?

Possibly! Just a question if you want backwards compatibility for an unstable API?

Do you think it would work to keep the implementation in the original post but change throw value to use(value)?

IIUC you want to refactor promise handling out of createObservable/set into useSelector right? But that wouldn't be nice for non-Suspense anymore 🙀 See examples further down.
IMO useSelector/property.use should delegate directly to React.use instead of another function. It would receive options like { suspend: true } which could be configured globally for convenience.
Also I can't think of a case for throwing error values?
Better to step back and exampine the 3 cases to support:
Option 1

useObservable (current behavior):
const result = state.promise

// these aren't very intuitive
const isPending = isPromise(result)
const isRejected = "error" in result
const isFulfilled = !isPending && !isRejected

if (isPending) {
  // TypeScript understands result is a Promise
} else if (isRejected) {
  // TypeScript understands result has an error
} else { // if isFulfilled
  // TypeScript doesn't understand result's type but is fixable
}

useSelector without Suspense (current behavior): same as above except state.promise.use()

useSelector with Suspense (your proposal):
const data = state.promise.use({ suspend: true })
// pending would suspend
// rejected would propogate to an error boundary
// TypeScript could understand data's type

I like the parity between Case 1 and 3 but they can't currently coexist. Case 1 relies on overwriting the promise with its result. Case 3 relies on passing a then-able object to use. It could work if proxies created ObservablePromises that store their promise but return their result. This would also fix nested promises (state.api.promise) not evaluating like root promises.
Option 2

useObservable (my proposal):
const { status, value: data, reason: error } = state.promise
if (status === "pending") {
  // TypeScript understands data and error are undefined
} else if (status === "pending") {
  // TypeScript understands error exists
} else { // if "fulfilled"
  // TypeScript understands data's type
}

useSelector without Suspense (current behavior): same as above except state.promise.use()

useSelector with Suspense (my proposal):
// identical usage as Option 1
const data = state.promise.use({ suspend: true })
// or state.promise.use() if Suspense confgured globally

This lacks the parity of your API but is nicer to use without Suspense. It also enables storing POJOs internally instead of promises if that's beneficial.
Happy to throw together a POC of either alterntive. PS I appreaciate the collaboration 🙏🏼

My proposal is simply to add support for Suspend to useSelector. I had experimented with it as a separate hook, but I believe this should be all the changes needed, adding the 7 lines between the comments:
export function useSelector<T>(selector: Selector<T>, options?: { suspend: boolean }): T {
    if (tracking.inRender) {
        return computeSelector(selector);
    }

    const ref = useRef<SelectorFunctions<T>>();
    if (!ref.current) {
        ref.current = createSelectorFunctions<T>();
    }
    const { subscribe, getVersion, run } = ref.current;

    const value = run(selector) as any;

    useSyncExternalStore(subscribe, getVersion, getVersion);

    // Suspend support
    if (options?.suspend) {
        if (isPromise(value)) {
            throw value;
        } else if (value?.error) {
            throw value.error;
        }
    }
    // / Suspend support

    return value;
}

The RFC says "this means only Hooks will be allowed to suspend" which I think means we can throw in our useObservable hook and that should be fine. But also it suggests using use so I'm not quite sure exactly what it means. I'll reach out to my friend on the React team and ask him. For now I think we should just throw the promise and not worry about use because that seems to be work and be well-supported.
As far as all the extra status and all that, I think that's just an implementation detail inside use. If in the future if switch to use, we can replace throw value; with use(value), and then it will handle the promise side.
Our implementation can be less complex because the observable will update to the value after the promise resolves, which triggers useSelector to run again, which then returns the value instead of throwing the Promise. React's use needs to follow the promise because they're not already observing the promise like we are.
Also I believe the case for throwing errors is that Suspense should still render the fallback. That's what use does under the hood.
So I think all we need for Suspense support is the above change to useSelector and a tweak to our observable.use() function to pass the options through.

I don't think you directly adressed any of my replies. Anyway best of luck it's a nice library!

Sorry for the confusion, I thought I was addressing your replies 😂. I should probably make a habit of quoting replies more often.

IIUC you want to refactor promise handling out of createObservable/set into useSelector right? But that wouldn't be nice DX for non-Suspense anymore 🙀 See examples further down.

I was trying to clarify my proposal, that it wouldn't change any core behavior but just be a change in useSelector.

As far as all the extra status and all that, I think that's just an implementation detail inside use for how they track the status of the promise. If in the future if switch to use, we can replace throw value; with use(value), and then it will handle the promise side.

And it seemed like you were trying to give React promises with all the status they set up in use and I was trying to explain why I don't think that's necessary.
I'd be happy to chat more here or on our Slack if you'd like to join it. I definitely didn't mean to be dismissive. I would very much like to know what you think about the proposed change to useSelector - is it missing something or do you think that would work well?

Nice to see suspense support for legend state, I like what @jmeistrich suggested which is adding to options

I released the updated useSelector hook and use({ suspend: true }) in version 1.8.0. Please let me know how that works for you 😀


how to valide a multiple nested struct

Im  trying to valide this struct, my data is a object with 1 object property, this one can have multiple objects with its own propertys, when i send the data, the govalidator respond with an error

have you solved this issue yet ?

have you solved this issue yet ?


feat: javascript + typescript code execution support

Why are these changes needed?
Description
This pull request adds JavaScript support in addition to Python for code execution.
I kindly ask for review and feedback, thank you!
Checks

[ ] I've included any doc changes needed for https://microsoft.github.io/autogen/. See
[ ] I've added tests (if relevant) corresponding to the changes introduced in this PR.
[ ] I've made sure all auto checks have passed.

@microsoft-github-policy-service agree

...users might not have ts-node installed so a npx ts-node might be necessary here (I don't think ts-node comes installed by default on the docker images either)

Hey thanks! correct, up until now i had the agents install/resolve anything that was missing 🤷♂, just like in python it also had to create the venv and do the pip installs, same goes for js in the default dir ./coding/ or maybe im missing something.

Another is how is this going handle typescript configurations in general. For example, from what I've seen, unless specified the code could come from the provider in CJS, or ESM or even both and ts-node struggle differentiating them.

yes thats right i was only able to execute simple functions, for my specific use case, which is zk smart contracts, it dit require me to just copy all the config files after initialization into .coding/ before being able to yarn test successfully. im not aware of all the limitations of ts-node beyond simple scripts.

Maybe using tsx instead would solve this module resolution problem but what about the stuff like compilerOptions? Would the agent be prepared to save a tsconfig.son and use it?

Could you please explain the use of .tsx do you mean tsc? which i used initially but went for ts-node to skip the compilation step but can implement tsc instead for starts by just assuming the filename stays the same just the extension changes.
should we use a default config/setup for typescript? open for ideas, happy to help


Bazel Plugin is incompatible with GoLand 2018.2

Tried on the following configuration:
GoLand 2018.2
Build #GO-182.3684.99, built on July 24, 2018
JRE: 1.8.0_152-release-1248-b8 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Linux 3.10.0-693.17.1.el7.x86_64

Did you build from source or download from here? https://plugins.jetbrains.com/plugin/8609-bazel
We haven't published 2018.2-compatible builds yet.

Should build for --define=ij_product=intellij-2018.2 now.

Yes, now it was built successfully and loaded into IDE.
Thanks!

@SNestertsev were you able to use this plugin normally?
If so, could you tell me please how you configured GoLand: things like GOROOT, GOPATH?
thanks!


build librealsense2 on LoongArch system.

try to build librealsense2 on the PC with LS3A500 CPU.
The CPU is built by Loongson (www.loongson.cn)
LoongArch is the name of Instruction Set Architecture. The OS is a Linux distribution.

@bu3w Thanks for the PR.
Did you managed to build the SDK with this change?


Create v17 files

lets merge this https://github.com/novasamatech/nova-utils/pull/2254 and add it to v17


Here is a hammer. I want a t-shirt.

Hi @TRQuake!
Sorry, but this is not pixel art, not original work, please read CONTRIBUTING.md first and there are plenty of issues to choose from.


chore: Build wheels in CI

Blocked by https://github.com/sparkfish/resvg-py/pull/8

Tests on s390x are getting stuck https://github.com/sparkfish/resvg-py/actions/runs/4642211533/jobs/8216003057?pr=1


IS-04 doesn't distinguish between ST 2110-21 Type A and Type W Receivers

VSF TR-08 defines two Timing Recovery Modes for Receivers: SYNC and ASYNC. These are based on ST 2110-21 Type W and Type A Receivers.

Using BCP-004-01 Receiver Capabilities, Receivers can indicate which ST 2110-21 Sender Types they support, but both Type W and Type A Receivers would indicate exactly the same thing:
"st2110_21_sender_type": {
  "enum": [
    "2110TPN",
    "2110TPNL",
    "2110TPW"
  ]
}

The difference between Type W and Type A Receivers is whether they can accept streams from Senders with a different timing source (or different TROFF values?).
The timing source of a Sender is indicated via the a=ts-refclk: attribute line in the SDP data, and in the IS-04 Node clocks entry indicated by the Sender clock_name.
However, the timing source associated with a Receiver is not indicated in IS-04.
Do we need to (a) add a Receiver attribute clock_name, and (b) add a Boolean Receiver attribute indicating asynchronous support?

Architecture Review Group review: place on backlog


ci: Run shellcheck and shfmt on shell scripts in the util directory

Both, shellcheck and shfmt are well established tools to lint and format shell scripts. If we would run these tools in a ci job on all the scripts in the util directory, we would improve the readabiltiy (shfmt) and reduce common errors (shellcheck) of shell scripts.

great idea!

Yeah I like it too! I thought we already had shellcheck, but it seems like I just suggested adding it to the CI (https://github.com/uutils/coreutils/pull/3013), but seems like it wasn't actually implemented.

Great!

Hi, I'd love to do some work to add this workflow.

@starccy: sure, go ahead :)


parsing error re prefix op

> (+) 1 1 bar has parsing errors
should eval as
(function app
  (function app
    (function app
      (op)
      (nat))
    (nat))
    (wordy_id))

has been resolved


NodeJS: Migrate Migrate Nodejs Return Documentation to MVVM.

Codecov Report

Merging #1102 into master will decrease coverage by -0.26%.
The diff coverage is 92.5%.

@@             Coverage Diff              @@
##             master    #1102      +/-   ##
============================================
- Coverage     85.52%   85.26%   -0.26%
- Complexity     3497     3513      +16
============================================
  Files           365      365
  Lines         13848    13957     +109
  Branches       1575     1593      +18
============================================
+ Hits          11844    11901      +57
- Misses         1554     1604      +50
- Partials        450      452       +2

Impacted Files
Coverage Δ
Complexity Δ

...google/api/codegen/viewmodel/ApiMethodDocView.java
100% <ø> (ø)
2 <0> (ø)
:x:

...n/transformer/DynamicLangApiMethodTransformer.java
99.07% <100%> (+0.02%)
21 <0> (+1)
:white_check_mark:

...m/google/api/codegen/transformer/SurfaceNamer.java
78.07% <66.66%> (-0.22%)
151 <2> (+1)

...codegen/transformer/nodejs/NodeJSSurfaceNamer.java
90.29% <92.3%> (+6.96%)
48 <30> (+30)
:white_check_mark:

.../google/api/codegen/nodejs/NodeJSGapicContext.java
74% <0%> (-15.53%)
70% <0%> (-16%)

Continue to review full report at Codecov.

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


[Enhancement] Range slider additions

Summary
So far I have been using https://github.com/halkar/xamarin-range-slider as range slider, but wouldn't mind migrating to the one in XCT.

Missing bindable properties:

I couldn't find the equivalence for the following properties that prevent me from migrating yet; maybe there's something similar in the component and I just missed it, but here goes:
StepValue: Minimum step value when the slider is scrubbed.

Editing step position in step changed callback is ignored:

The following use case doesn't work with XCT's range slider:
"When slider is scrubbed, detect in what range the change is, and possibly edit the value in the callback".
The reason for this is a range slider that has different granularities, say the leftmost part is for values 1-20, after 20 every 'tick' increments 5, and after 50 every 'tick' increments 10.
My code for this, which works with https://github.com/halkar/xamarin-range-slider, is:
private void SomeSlider_ValueChanged(object sender, ValueChangedEventArgs e)
{
    var stepValue = e.NewValue < 15 ? 1 : (e.NewValue < 50 ? 5 : 10);

    var newStep = Math.Round(e.NewValue / stepValue);
    var newValue = newStep * stepValue;
    if (newValue != this.maxDistanceSlider.Value)
        this.someSlider.Value = newValue;
}

So TLDR: In my use case I have set step value to 1, and then in the value changed callback modify the value further depending on where it ends up in the range, but this doesn't work with XCT's range slider (modifying the value in the callback seems to do nothing). The effect should be that when scrubbing the higher ranges the knob moves larger distances at a time.

Look of the control (Minor):

The range slider component doesn't look native at least on iOS (didn't test it on Android), as it doesn't have a shadow under the thumb as regular sliders do. It would be a great addition to add it for a more native look.
Alternatively, https://github.com/halkar/xamarin-range-slider uses native iOS and Android components behind the scenes. Shouldn’t native controls be preferred whenever possible instead of implementing them manually, as they will follow OS styling and behavior to a tee?
Thanks.

Is #2 actually a bug?

Hi. If you guys think that number 2 is a bug I'd be happy to move it to a bug report, but would prefer confirmation on it being a bug first.
Thanks!

Definitely, native controls are preferable over cross-platform solutions
if @halkar agrees to contribute his controls, I think everyone will be happy

StepValue: Minimum step value when the slider is scrubbed.
This property is not implemented yet. Can be a good enhancement

Could you specify what event do you use in XCT RangeSlider? (seems there is no any event there)

Oh I see. My use case is to set it to 1. When I tested the control and scrubbed it, I got values like 1.223323, 2.3424234 etc (with a range of 15 to 80). I'd at least like the value to be an integer and not a floating number. The values displayed on the right side of the control took up almost the entire horizontal space as it showed so many decimals, not to mention that when the user should pick integers and it shows decimal numbers it just doesn't work. Looking forward to this as I think this is a mandatory addition.

I can't actually remember. It is possible I forgot to actually bind the event when testing XCT's range slider. Now looking at the code I can't find a command or event for it either, which can explain why it didn't work :P Well, in that case another absolutely mandatory addition is the ability to subscribe to position changed events.

I understand, but on platforms where there is a native component (as is Android in this case) shouldn't it use the native control there, and a managed control on other platforms?

Thanks!

Once a configurable step value (and support for integer steps) has been implemented, along with the necessary events, I am very much looking forward to using this component and think it's a really nice addition!

ValueLabelStringFormat. You can try to play with this property to show only integers

Actually you can do it now :) PropertyChanged event. But I agree that it makes sense to expose a separate event for it

I see, thanks! That should fulfil my use case, albeit i still think there should be a value for step length (I just happen to use 1 in my case).

Thanks for that too. I'll give it a try, but yeah I think separate events for these kinds of things make a lot of sense.

I'm happy to give the component to XCT if they are interested.

I'm happy to give the component to XCT if they are interested.

They are highly interested, I guess :) CC @jfversluis

Definitely! Can we integrate this with what's already here now?

Definitely! Can we integrate this with what's already here now?

I think yes, but my impl can be enabled for Tizen / WPF / GTK and optionally for all platforms (maybe we can add a property for managing whether we should use native look or cross-plat)

I always think that the best option is to use a native control whenever one is available, and a cross-platform version on platforms where one does not exist. This ensures look and feel parity with other UI components on platforms where a native control exists.
So imho, and this is just imho, the best course of action in this case would be to:

Keep the existing control and focus on making it as robust as possible (including exposing events for data changing and step value, to reach feature parity with @halkar's control - there may be more but those I think are most important).
Then copy over whatever native code can be taken from @halkar's control and use it on supported platforms (iirc iOS and Android).

@AndreiMisiukevich Thank you for the additions! It works absolutely flawlessly and I started using it in my project. It really is a solid component so thank you so much for it.
The only other enhancement idea I have is to use the native component on Android as one exists there, but the current one looks very very close to it already.

@AndreiMisiukevich Thank you for the additions! It works absolutely flawlessly and I started using it in my project. It really is a solid component so thank you so much for it.
The only other enhancement idea I have is to use the native component on Android as one exists there, but the current one looks very very close to it already.

Thank you :)
I've created a ticket for adding "ShadowEffect". Once the shadow effect is done, we will be able to add it to RangeSlider's thumbs. So they will look more attractively 👍


Package request: python311Packages.signxml

Project description

Metadata

homepage URL:
source URL:
license: mit, bsd, gpl2+ , ...
platforms: unix, linux, darwin, ...

Add a :+1: reaction to issues you find important.

code at https://pypi.org/project/signxml/
license is asl20
homepage at https://xml-security.github.io/signxml/
in the future please fill out whochever fields are possible/known.

Is already available.

I should have filled in the title, request was for to add in 23.11. YES its available in 24.05
https://search.nixos.org/packages?channel=23.11&from=0&size=50&sort=relevance&type=packages&query=signxml

23.11 won't be supported in 3 weeks; it's best to migrate off.


default folder did not create automatically

First time I installed KeeAnywhere-1.4.1.plgx with KeePass 2.36 I had to create the following directory in my user folder "AppData\Local\KeePass\KeeAnywhereOfflineCache" otherwise the plugin crashes.

I could not reproduce this issue. Offline Cache Folder should always be created if tried to use it.
Did an Exception Message Box was shown? If yes: could you please restart KeePass using "-debug" and post the Exception Stack from the error message's temporary file here?

It should be created automatically but will throw an Exception if the folder could not be created anyway.

I guess AppData\Local\KeePass\ may not exist in case the user does not use plgx files but instead dlls directly (easier for me to understand what code is running and debug it)
Here is a stack trace:
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\Faark\AppData\Local\KeePass\KeeAnywhere.Accounts.json'.    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)    at System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)    at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)    at System.IO.File.InternalWriteAllText(String path, String contents, Encoding encoding, Boolean checkHost)    at KeeAnywhere.Configuration.ConfigurationService.SaveAccountsToLocalSecureStore() in C:\Users\Faark\Source\Repos\KeeAnywhere\KeeAnywhere\Configuration\ConfigurationServiceLocalSecureStore.cs    at KeeAnywhere.Configuration.ConfigurationService.Save() in C:\Users\Faark\Source\Repos\KeeAnywhere\KeeAnywhere\Configuration\ConfigurationService.cs    at KeeAnywhere.Forms.SettingsForm.OnBtnOkClick(Object sender, EventArgs e) in C:\Users\Faark\Source\Repos\KeeAnywhere\KeeAnywhere\Forms\SettingsForm.cs    at System.Windows.Forms.Control.OnClick(EventArgs e)    at System.Windows.Forms.Button.OnClick(EventArgs e)    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)    at System.Windows.Forms.Control.WndProc(Message& m)    at System.Windows.Forms.ButtonBase.WndProc(Message& m)    at System.Windows.Forms.Button.WndProc(Message& m)    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Released in v1.5.0


JavaScript heap out of memory when run karma start

<--- Last few GCs --->
[5616:00000212BE116EF0]   942600 ms: Mark-sweep 1885.6 (1915.3) -> 1885.6 (1914.8) MB, 1692.8 / 0.0 ms  last resort GC in old space requested
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 000000E336325879
1: set(this=000003EEE62B15B1 ,0000027383806E49 <String[180]: c:/$recycle.bin/s-1-5-21-854245398-1972579041-362288127-2049712/$r62t0oj/cache/v1/npm-caniuse-lite-1.0.30000851-3b498aebf9f92cf6cff4ab54d13b557c0b590533/data/features/ogg-vorbis.js>,000002738380B889 )    2: acquireOrUpdateDocument(aka acquireOrUpdateDocument) [C:......
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node_module_register
2: v8::internal::FatalProcessOutOfMemory
3: v8::internal::FatalProcessOutOfMemory
4: v8::internal::Factory::NewFixedArray
5: v8::internal::HashTablev8::internal::SeededNumberDictionary,v8::internal::SeededNumberDictionaryShape::IsKey
6: v8::internal::Dictionaryv8::internal::SeededNumberDictionary,v8::internal::SeededNumberDictionaryShape::AtPut
7: v8::internal::compiler::RawMachineAssembler::MakeNode
8: 0000007D733043C1
error Command failed with exit code 3.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

This is not a karma issue, try https://stackoverflow.com/questions/38558989/node-js-heap-out-of-memory

Lol how does this link prove that its a node issue and not a karma issue? https://stackoverflow.com/questions/38558989/node-js-heap-out-of-memory
"Oh yea if you increase the size of the node memory heap to 4 GB the issue goes away, therefore it is an issue with node" yea that's definitely not a memory leak. It totally makes sense that karma should need 4 GB of memory to run. Totally reasonable. Not karma's fault at all.

I got the same issue... it's some combination of babel and karma. Babel itself runs perfectly, it's only on karma that it has issues

I know its been a while but did you ever fix this?

I got the same issue... it's some combination of babel and karma. Babel itself runs perfectly, it's only on karma that it has issues

I know its been a while but did you ever fix this?

The only way that I was able to fix this was to increase the size of the memory heap every time I run my karma tests.
It's pretty clear to me that karma has a memory leak. There is no reason that a unit testing framework requires 4GB of RAM just to run your unit tests.
I don't buy johnjbarton's assertion that this isn't a karma issue. The solution to solving a memory leak shouldn't be to feed more memory to the memory leak. It should be to fix the memory leak.

@Zachalot Please set up a minimal project exhibiting this problem and push it to GitHub, so I can clone it, run and see the reported error. Without such a reproduction there is nothing we can do to identify the root cause of the problem and fix it. This may be a Karma bug, but this also may be a bug elsewhere or a misconfiguration in your project.

It's pretty clear to me that karma has a memory leak.

Seems unlikely as we run many thousands of tests on many large apps across multiple frameworks and products.  So the question here is what are you doing that is different?

I have faced the similar issue while running the js test cases build was throwing out of memory error.This issue was there when we upgraded to Node 14.For us upgrading karma version and its dependencies in package json and then do clear build has fixed the issue.


make error

Execute the make copy-exchange-client command, it prompts that ../injective-exchange is missing.

Same as #20


Unmarshal result is inconsistent with the standard library

package main

import (
	"encoding/json"
	jsoniter "github.com/json-iterator/go"
	"fmt"
)

var json2 = jsoniter.ConfigCompatibleWithStandardLibrary

func main() {
	data1 := map[string]string{}
	json.Unmarshal([]byte(`{"a":1,"b":"abc"}`), &data1)
	fmt.Println(data1) // Output map[a: b:abc]

	data2 := map[string]string{}
	json2.Unmarshal([]byte(`{"a":1,"b":"abc"}`), &data2)
	fmt.Println(data2) // Output map[a: b:abc]

	data3 := map[string]string{}
	json.Unmarshal([]byte(`{"a":12,"b":"abc"}`), &data3)
	fmt.Println(data3) // Output map[a: b:abc]

	data4 := map[string]string{}
	json2.Unmarshal([]byte(`{"a":12,"b":"abc"}`), &data4)
	fmt.Println(data4) // Output map[a:] <- key "b" is missing
}

All four of those Unmarshalling calls result in errors, which are ignored. So it seems you're relying on the output of failed operations and expect them to fail in the same manner.
Also, the documentation for the standard library notes:

If a JSON value is not appropriate for a given target type, or if a JSON number overflows the target type,
Unmarshal skips that field and completes the unmarshaling as best it can. If no more serious errors are
encountered, Unmarshal returns an UnmarshalTypeError describing the earliest such error. In any case,
it's not guaranteed that all the remaining fields following the problematic one will be unmarshaled into the target object.

To me it sounds like what's in C parlance undefined behaviour and you should not really rely on the output of such operations.

OK, I get it. Thanks for your reply.