Add cross-vendor Open CL interoperability samples (KHR Extensions)

Description
This PR adds a cross vendor Vulkan and OpenCL interoperability sample that updates an image using OpenCL which is displayed in Vulkan. It makes use of external memory and external semaphores. The ARM specific OpenCL interop sample is still there, but has been renamed. I also had to move some OpenCL source files into a shared folder, so both samples can be built without naming conflicts.
Note: If you want to test this on nvidia, make sure you use a recent driver. Older drivers were based on a provisional OpenCL spec (for external objects) and will crash as this sample uses the final version of that spec. I have tested this on Windows 11 with a nvidia RTX 2060.
The sample requires support for the following extensions:
Vulkan:

VK_KHR_external_memory
VK_KHR_external_semaphore
VK_KHR_external_memory_capabilities
VK_KHR_external_semaphore_capabilities
For Windows

VK_KHR_external_memory_win32
VK_KHR_external_semaphore_win32

For all other platforms (Linux, Android, etc.)

VK_KHR_external_memory_fd
VK_KHR_external_semaphore_fd

OpenCL:

cl_khr_external_memory
cl_khr_external_semaphore
For Windows

cl_khr_external_memory_win32
cl_khr_external_semaphore_win32

For all other platforms (Linux, Android, etc.)

cl_khr_external_memory_opaque_fd
cl_khr_external_semaphore_opaque_fd

Fixes #474
General Checklist:
Please ensure the following points are checked:

[x] My code follows the coding style
[x] I have reviewed file licenses
[x] I have updated the header Copyright to reflect the current year (CI build will fail if Copyright is out of date)
[x] I have commented any added functions (in line with Doxygen)
[x] I have commented any code that could be hard to understand
[x] My changes do not add any new compiler warnings
[x] My changes do not add any new validation layer errors or warnings
[x] I have used existing framework/helper functions where possible
[x] My changes build on Windows, Linux, macOS and Android. Otherwise I have documented any exceptions
[x] My changes do not add any regressions
[x] I have tested every sample to ensure everything runs correctly
[x] This PR describes the scope and expected impact of the changes I am making

Sample Checklist
If your PR contains a new or modified sample, these further checks must be carried out in addition to the General Checklist:

[x] I have tested the sample on at least one compliant Vulkan implementation
[n/a] If the sample is vendor-specific, I have tagged it appropriately
[x] I have stated on what implementation the sample has been tested so that others can test on different implementations and platforms
[x] Any dependent assets have been merged and published in downstream modules
[x] For new samples, I have added a paragraph with a summary to the appropriate chapter in the samples readme

I see quite a lot of build warnings when building this PR:
In file included from Vulkan-Samples/samples/extensions/open_cl_common/open_cl_utils.cpp:20:
Vulkan-Samples/samples/extensions/open_cl_common/open_cl_functions.inl:36:26: warning: ‘_cl_command_queue* clCreateCommandQueue(cl_context, cl_device_id, cl_command_queue_properties, cl_int*)’ is deprecated [-Wdeprecated-declarations]
   36 | OPENCL_EXPORTED_FUNCTION(clCreateCommandQueue);
      |                          ^~~~~~~~~~~~~~~~~~~~
Vulkan-Samples/samples/extensions/open_cl_common/open_cl_utils.h:25:75: note: in definition of macro ‘OPENCL_EXPORTED_FUNCTION’
   25 | #define OPENCL_EXPORTED_FUNCTION(func_name) extern std::function<decltype(func_name)> func_name##_ptr
      |                                                                           ^~~~~~~~~
In file included from Vulkan-Samples/third_party/opencl/CL/cl_ext.h:24,
                 from Vulkan-Samples/samples/extensions/open_cl_common/open_cl_utils.h:21,
                 from Vulkan-Samples/samples/extensions/open_cl_common/open_cl_utils.cpp:20:
Vulkan-Samples/third_party/opencl/CL/cl.h:1920:1: note: declared here
 1920 | clCreateCommandQueue(cl_context                     context,
      | ^~~~~~~~~~~~~~~~~~~~
Vulkan-Samples/samples/extensions/open_cl_common/open_cl_functions.inl:36:26: warning: ‘_cl_command_queue* clCreateCommandQueue(cl_context, cl_device_id, cl_command_queue_properties, cl_int*)’ is deprecated [-Wdeprecated-declarations]
   36 | OPENCL_EXPORTED_FUNCTION(clCreateCommandQueue);
      |                          ^~~~~~~~~~~~~~~~~~~~
Vulkan-Samples/samples/extensions/open_cl_common/open_cl_utils.cpp:30:68: note: in definition of macro ‘OPENCL_EXPORTED_FUNCTION’
   30 | #define OPENCL_EXPORTED_FUNCTION(func_name) std::function<decltype(func_name)> func_name##_ptr = nullptr
      |                                                                    ^~~~~~~~~
In file included from Vulkan-Samples/third_party/opencl/CL/cl_ext.h:24,
                 from Vulkan-Samples/samples/extensions/open_cl_common/open_cl_utils.h:21,
                 from Vulkan-Samples/samples/extensions/open_cl_common/open_cl_utils.cpp:20:
Vulkan-Samples/third_party/opencl/CL/cl.h:1920:1: note: declared here
 1920 | clCreateCommandQueue(cl_context                     context,
      | ^~~~~~~~~~~~~~~~~~~~
Vulkan-Samples/samples/extensions/open_cl_common/open_cl_functions.inl: In function ‘_cl_platform_id* load_opencl()’:
Vulkan-Samples/samples/extensions/open_cl_common/open_cl_functions.inl:36:26: warning: ‘_cl_command_queue* clCreateCommandQueue(cl_context, cl_device_id, cl_command_queue_properties, cl_int*)’ is deprecated [-Wdeprecated-declarations]
   36 | OPENCL_EXPORTED_FUNCTION(clCreateCommandQueue);
      |                          ^~~~~~~~~~~~~~~~~~~~
Vulkan-Samples/samples/extensions/open_cl_common/open_cl_utils.cpp:107:90: note: in definition of macro ‘OPENCL_EXPORTED_FUNCTION’
  107 | # define OPENCL_EXPORTED_FUNCTION(func_name) func_name##_ptr = reinterpret_cast<decltype(func_name) *>(dlsym(handle, #func_name))
      |                                                                                ^~~~~~~~~
In file included from Vulkan-Samples/third_party/opencl/CL/cl_ext.h:24,
                 from Vulkan-Samples/samples/extensions/open_cl_common/open_cl_utils.h:21,
                 from Vulkan-Samples/samples/extensions/open_cl_common/open_cl_utils.cpp:20:
Vulkan-Samples/third_party/opencl/CL/cl.h:1920:1: note: declared here
 1920 | clCreateCommandQueue(cl_context                     context,
      | ^~~~~~~~~~~~~~~~~~~~
In file included from Vulkan-Samples/samples/extensions/open_cl_interop/open_cl_interop.cpp:18:
Vulkan-Samples/samples/extensions/open_cl_interop/open_cl_interop.h:25:45: warning: extra tokens at end of #include directive
   25 | #include "../open_cl_common/open_cl_utils.h";
      |                                             ^
In file included from /usr/include/c++/9/backward/strstream:50,
                 from Vulkan-Samples/samples/extensions/open_cl_interop/open_cl_interop.cpp:25:
/usr/include/c++/9/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated. [-Wcpp]
   32 | #warning \
      |  ^~~~~~~
In file included from Vulkan-Samples/samples/extensions/open_cl_interop/open_cl_interop.h:25,
                 from Vulkan-Samples/samples/extensions/open_cl_interop/open_cl_interop.cpp:18:
Vulkan-Samples/samples/extensions/open_cl_interop/../open_cl_common/open_cl_functions.inl:36:26: warning: ‘_cl_command_queue* clCreateCommandQueue(cl_context, cl_device_id, cl_command_queue_properties, cl_int*)’ is deprecated [-Wdeprecated-declarations]
   36 | OPENCL_EXPORTED_FUNCTION(clCreateCommandQueue);
      |                          ^~~~~~~~~~~~~~~~~~~~
Vulkan-Samples/samples/extensions/open_cl_interop/../open_cl_common/open_cl_utils.h:25:75: note: in definition of macro ‘OPENCL_EXPORTED_FUNCTION’
   25 | #define OPENCL_EXPORTED_FUNCTION(func_name) extern std::function<decltype(func_name)> func_name##_ptr
      |                                                                           ^~~~~~~~~
In file included from Vulkan-Samples/third_party/opencl/CL/cl_ext.h:24,
                 from Vulkan-Samples/samples/extensions/open_cl_interop/../open_cl_common/open_cl_utils.h:21,
                 from Vulkan-Samples/samples/extensions/open_cl_interop/open_cl_interop.h:25,
                 from Vulkan-Samples/samples/extensions/open_cl_interop/open_cl_interop.cpp:18:
Vulkan-Samples/third_party/opencl/CL/cl.h:1920:1: note: declared here
 1920 | clCreateCommandQueue(cl_context                     context,
      | ^~~~~~~~~~~~~~~~~~~~
[100%] Built target open_cl_interop
[100%] Building CXX object app/apps/CMakeFiles/apps.dir/apps.cpp.o
In file included from app/apps/apps.cpp:60:
Vulkan-Samples/samples/extensions/open_cl_interop/open_cl_interop.h:25:45: warning: extra tokens at end of #include directive
   25 | #include "../open_cl_common/open_cl_utils.h";
      |                                             ^
In file included from Vulkan-Samples/samples/extensions/open_cl_interop/open_cl_interop.h:25,
                 from app/apps/apps.cpp:60:
Vulkan-Samples/samples/extensions/open_cl_interop/../open_cl_common/open_cl_functions.inl:36:26: warning: ‘_cl_command_queue* clCreateCommandQueue(cl_context, cl_device_id, cl_command_queue_properties, cl_int*)’ is deprecated [-Wdeprecated-declarations]
   36 | OPENCL_EXPORTED_FUNCTION(clCreateCommandQueue);
      |                          ^~~~~~~~~~~~~~~~~~~~
Vulkan-Samples/samples/extensions/open_cl_interop/../open_cl_common/open_cl_utils.h:25:75: note: in definition of macro ‘OPENCL_EXPORTED_FUNCTION’
   25 | #define OPENCL_EXPORTED_FUNCTION(func_name) extern std::function<decltype(func_name)> func_name##_ptr
      |                                                                           ^~~~~~~~~
In file included from Vulkan-Samples/third_party/opencl/CL/cl_ext.h:24,
                 from Vulkan-Samples/samples/extensions/open_cl_interop/../open_cl_common/open_cl_utils.h:21,
                 from Vulkan-Samples/samples/extensions/open_cl_interop/open_cl_interop.h:25,
                 from app/apps/apps.cpp:60:
Vulkan-Samples/third_party/opencl/CL/cl.h:1920:1: note: declared here
 1920 | clCreateCommandQueue(cl_context                     context,
      | ^~~~~~~~~~~~~~~~~~~~

Thanks for bringing this up. At least some of these stem from units taken from the arm sample, and will apply to both samples. Will take a look them.

@SaschaWillems, really cool sample!!
Fixing the following allowed me to run the sample on Linux
Vulkan-Samples/samples/extensions/open_cl_interop/open_cl_interop.h:25:45: warning: extra tokens at end of #include directive
   25 | #include "../open_cl_common/open_cl_utils.h";

Unsure on how we can fix the deprecation issues

I (hopefully) fixed the deprecation errors. Aside from the CL ones I also noticed that I've been using strstream instead of stringstream, which also caused a general deprecation warning.
Feel free to test again.

When running this sample on Win10, using NVIDIA GPU, I get this validation layer warning:
Validation Warning: [ UNASSIGNED-BestPractices-TransitionUndefinedToReadOnly ] Object 0: handle = 0x1f4a00e0df0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x9f63e654 | VkImageMemoryBarrier is being submitted with oldLayout VK_IMAGE_LAYOUT_UNDEFINED and the contents may be discarded, but the newLayout is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, which is read only.

Where is it triggered from? prepare_shared_image?
Yep, that's right.

CI on Android is failing, but with an error not related to the sample itself:
Evaluating root project 'vulkan_samples' using build file '/home/runner/work/Vulkan-Samples/Vulkan-Samples/build/android_gradle/build.gradle'.
Resource missing. [HTTP HEAD: https://dl.google.com/dl/android/maven2/com/android/application/com.android.application.gradle.plugin/7.4.2/com.android.application.gradle.plugin-7.4.2.jar]
Resource missing. [HTTP HEAD: https://dl.google.com/dl/android/maven2/com/android/library/com.android.library.gradle.plugin/7.4.2/com.android.library.gradle.plugin-7.4.2.jar]

Not sure how to fix this :/

With such failures, I usually re-run the failed jobs. Often, they run through then.

@tomadamatkinson : I'm still getting the aforementioned build errors on Android and I don't know how to fix them. I really want this to be merged, been working on it for ~2 years now :/

I have resolved the merge conflict, so this is ready. Any review is appreciated, would love to see this finally getting merged :)
@tomadamatkinson: The review status still says that you requested changes, but I think I fixed those some time ago.


Opening the recommendation popup only works with enabled subscription

Issue Summary
Trying to open the recommendation pop up (https://example.org/#/portal/recommendations) - e.g. through the URL, or through the "View all" button on the homepage - doesn't do anything when Subscription access is disabled / set to "nobody".
Steps to Reproduce

Set the Subscription access to Nobody (https://example.org/ghost/#/settings/members)
Enable the publication info sidebar at https://example.org/ghost/#/settings/design/edit - in the Tab Homepage.
Recommend a site (https://example.org/ghost/#/settings/recommendations)
See the recommendation panel. (https://example.org)
Try to click on "View all".

Ghost Version
5.89.1
Node.js Version
v18.20.4
How did you install Ghost?
Via Docker Compose
Database type
MySQL 8
Browser & OS version
Firefox 129.0.1 (64-Bit) on Windows 11 Pro
Relevant log / error output
No response
Code of Conduct

[X] I agree to be friendly and polite to people in this repository

I'm not able to replicate the issue with these instructions, is this with a fresh install of Ghost? If you could share reproduction steps using the latest version of Ghost & the Ghost CLI, that would be really helpful!
I also noticed that you're installing with Docker Compose - which is not an officially supported install method, it's unlikely to be the cause, but to rule it out, could you try replicating with the recommended installation methods instead?

Thanks! I will look into this further!

I'm able to confirm the behavior also, on 5.96.0.

@cathysarisky As you can see in my demonstration above, I have recommendations.

It's a little hard to tell - are you reloading the page after setting the recommendation?

Yes, I am. If not, then the recommendations wouldn't show in the sidebar as well.
If you need a live example, I could send my blog here, as there I have membership disabled, but I have recommendations set - and the popup doesn't open. (Don't want to accidentally advertise if that's not allowed / not needed anyway.)

Let me see if I can repro this again.  I found one error in the routing for recommendations, but I'm not sure I fully reproduced this case.

I just replicated with a fresh local installation of ghost, like it's explained in the README of this repository (ghost install local). Here you can see the full replication:
https://github.com/user-attachments/assets/40a6c2e5-97f5-4318-b527-831fcbdc0d7b
You can also test this setup on my blog - https://steffo.blog - it's the same settings. The only difference is that I use the (not official) docker image to host this - but this shouldn't be an issue, as it's the same ghost technically, I think. (Also, I can still reproduce it locally.)

Ah. Interesting.  Your site doesn't appear to be loading the portal script, which does all the membership functionality AND recommendations.
Looks like the bug is here:
    if (!settingsCache.get('members_enabled') && !settingsCache.get('donations_enabled')) {

(ghost_head.js, line 49).  That's preventing the portal script from loading recommendations.
Thanks for your patience on sorting out the repro.  I now see that the portal script is completely failing to load, which is why that button is not doing anything.  Will patch!


Cannot deobfuscate large files

I got error when deobfuscating a large file for analysis.
It would be much better if floss would get me the strings till 0x1000000 bytes only, if not for the whole.

See https://github.com/mandiant/flare-floss/issues/893

It would be much better if floss would get me the strings till 0x1000000 bytes only, if not for the whole.

FLOSS does a code and data analysis of the input program. If it truncated a large file, then many of the code/data references would be broken and this would have a major impact on the accuracy of FLOSS. Therefore, we prefer to use an all-or-nothing strategy.


Add zsh completion

Adds zsh completion support to drone-cli.
To use, the file contrib/completion/zsh/_drone must be installed to /usr/share/zsh/site-functions/_drone (linux) or a similar location. I did not add it to make install since I'm not sure if this location is correct for other systems e.i. OS X.
Note this depend on sed and awk in order to format nodes and users output. This could be avoided by simplifying the output of drone user ls and drone node ls or maybe add a --porcelain argument for when running those commands in a script. I don't know what you prefer?

:+1:

very cool, do you know how this works with https://github.com/codegangsta/cli#bash-completion ?

@bradrydzewski I didn't know about that, but that's an interesting approach. I'll check out how capable that system is and report back (might take some time).

Ok, I had a look at it and it's indeed useful for making decent bash-completion support. However since zsh has a more powerful completion system compared to bash it will be held back by this approach. A native zsh implementation as provided by this PR is more powerful than an implementation in codegangsta/cli.
I think a good approach would be to use the native zsh completion but add the bash completion support through codegangsta/cli. It's not much work to implement the bash-completion and I would be happy to do it if you think this is a good idea.

yes, if we can get it working with the builtin codegangsta/cli implementation, and then offer a native zsh approach that would be great.

So I tried to use the codegangsta/cli implementation, but quickly realized how broken it actually is. It only sorta works with the example in their README, but that is more by accident than anything. Unfortunately the codegangsta/cli completion system would need to be rewritten before it can be used.


Create a functioning favourites list

This PR primarily works towards closing #53 by implementing a favourites list specific to a user, which uses movie ID's to display information about the movies in the favourites list. Key changes and additions include...

creating a FavouritesList component, which has an index and style file
creating a useFavourites hook which uses the relevant endpoints to fetch the favourites list from the server, and also has within it the functionality to add and remove movies from the favourites list
Updating the userModel to correctly interact with the favourites list in the database
Updating the favourites page to incorporate the FavouritesList component

Here is a screenshot of what the favourites list page currently looks like, for reference (when user testing)


Heat stack should add wildcard A record to zone

During the deployment with the 'loadbalancer_dedicated' option and dynamic DNS, the loadbalancer entry is created for the developers as -devs..  A comparable A record should be added for the applications: *.apps..
Then when the zone is properly delegated users will be able to find the apps correctly.

Could this be implemented  for LBaaS too triggering a SoftwareDeployment on the bastion node?

Yes, though the DNS service has been moved out of the heat stack to reflect more real-world deployments.  The mechanism is different but the desired result is the same.

@markllama

if you have a LoadBalancer, openshift-on-openstack configure the nodes to point the loadbalancer dns record

this means you need either to:

configure the DNS as soon as openstack gives you the loadbalancer ip

or

setting a static ip for the load balancer, but I can't find a way to do it via the templates

Do you have any hint?
Thx++,
R:


Add embed link below each embed preview

This PR adds a corresponding embed link under each embed preview on the "Tools" page. This is a work-in-progress. Some notes regarding necessary revisions are attached to specific parts of the code below.

 Embed links on tools page


Add Linux Commands deprecation document

See this for formatted/presented ASCIIDOC output: https://github.com/mbbx6spp/styleguides/blob/shell-command-deprecations/bash/COMMANDS.asciidoc

@polynomial what other use case examples would be useful for ss command?

The only other one that is pretty common for me is -p, to show whats binding a port (netstat -anp | grep LISTEN replacement)
It's unclear why some of the examples have -r and -n, aren't these contradictory?
Include nslookup in deprecated list, provide examples for:

host HOSTNAME
dig -t ANY hostname

wan't to be fancy pants? Include dnstracer example for looking up the tree of authority without multiple commands.

I will add the -p case for netstat and explain the -r and -n parts better. It's mostly a personal preference but I usually don't want to see :documentum instead of :10002 or on overloaded ports *:wap-wsp instead of *:9200 for Elasticsearch, but I usually want to see the resolved hostnames instead of IPs. I will illustrate with examples.

Note: I just added sections on ip neighbor and ip link this morning as replacements for arp and other ifconfig usages.

@polynomial I think I addressed the -p use case and the explanation of the -n option and why you would use it over not using it in the new subsection titled 'Look ma, no pipes' https://github.com/mbbx6spp/styleguides/blob/shell-command-deprecations/bash/COMMANDS.asciidoc#-look-ma-no-pipes-

Adding nslookup and alternatives now. Thanks!

I added the dig section here: https://github.com/mbbx6spp/styleguides/blob/shell-command-deprecations/bash/COMMANDS.asciidoc#dig
Do we really need dnstracer which is non-standard command?

WOW. SO CAPS, MUCH OMG.

As per @stephenweber I updated the structure of the COMMANDS document to show the outline more as it was confusing and added the 'Alternatives' level.


Train with larger dataset from pretrained checkpoint

Thank you for the great work.
I want to train with my own dataset that has 37 classes. I can train with ImageNet pretrained checkpoint correctly. But when I used Cityscapes pretrained checkpoint (19 classes), I got this error:
ValueError: Tensor's shape (1, 1, 256, 37) is not compatible with supplied shape (1, 1, 256, 19)

Hi @nguyenhuylan,
Thanks for reporting the issue.
The error happens because the mistmatch between the last 1x1 convolution layer pretrained on Cityscapes (19 classes) and the last 1x1 convolution used in your current dataset (37 classes).
You could set restore_semantic_last_layer_from_initial_checkpoint to false in the config, which will not load the pretrained last 1x1 convolution.
Cheers,

Thank you!
I can train my dataset from Cityscapes pretrained checkpoint now.
I close this issue.


Region restrictions are not working

Hi,

YEP_RegionRestrictions
is not working.

Thank you for reporting this issue! I'm trying to make sense of it so that I can test on the right plugin combination. Based on what I've found online, YEP_RegionRestrictions is for RPG Maker MV only. The equivalent for RPG Maker MZ is VisuMZ_1_EventsMoveCore.js, which is a paid plugin. However, your screenshot shows that you're in RPG Maker MZ working with YEP_RegionRestrictions. It looks like what you have is an unofficial port. Out of respect for Yanfly's wishes, I advise against using it in a published game, and I am unwilling to provide compatibility support for it.
What I can do for you is recommend Tyruswoo Map Properties MZ, which provides the same feature: specific region numbers can block or allow NPCs or players. I'm not sure we've tested Tyruswoo Altimit Movement's compatibility with this feature yet, so I'll get right on it. I'm glad you got us thinking about it.
--Kathy

Thank you for reporting this issue! I'm trying to make sense of it so that I can test on the right plugin combination. Based on what I've found online, YEP_RegionRestrictions is for RPG Maker MV only. The equivalent for RPG Maker MZ is VisuMZ_1_EventsMoveCore.js, which is a paid plugin. However, your screenshot shows that you're in RPG Maker MZ working with YEP_RegionRestrictions. It looks like what you have is an unofficial port. Out of respect for Yanfly's wishes, I advise against using it in a published game, and I am unwilling to provide compatibility support for it.
What I can do for you is recommend our free plugin Tyruswoo Map Properties MZ, which provides the same feature: specific region numbers can block or allow NPCs or players. I'm not sure we've tested Tyruswoo Altimit Movement's compatibility with this feature yet, so I'll get right on it. I'm glad you got us thinking about it.
--Kathy

Sure, I checked your free Plugin Tyruswoo Map Properties MZ,

But this only works if Tyruswoo_AltimitMovement is OFF.
The issue should be located in this 3 'Blocks':

#NOTE :
To Plugin Tyruswoo Map Properties MZ,

Yes, I noticed this issue when I tested the plugins together yesterday. My plan is, when the Map Properties plugin is present, Altimit Movement will calculate a collision mesh for players and a different collision mesh for events. I'll let you know as soon as I have it working.

I've updated Tyruswoo Map Properties and Tyruswoo Altimit Movement to work together as intended. Below are links to the cross-compatible versions:

Tyruswoo Altimit Movement v0.9.2
Tyruswoo Map Properties v2.1.0

Per your note on Region Zero, this new version of Map Properties also ignores zeroes in its region lists and has a note in the help text to that effect. (We strive to make our help text complete, while also making our plugin easy to use for those who haven't read or don't remember all the help text.)


(PUP-6491) fix parser_validate acceptance test for puppetserver

puppet acceptance tests run from the root of puppetserver in a submodule
which is at puppetserver/ruby/puppet.  In order to use the fixutres in
this test (or any tests) we should use a path relative to the test file
itself, not where beaker thinks itself to be.
[skip ci]

👍

skip ci?

🙈


http_hooks always connect to localhost on Docker compose

Version: ossrs/srs:5 Docker image
I run SRS locally via docker-compose for testing but the my http_hooks seems not to work.
http_hooks callbacks to my local server listening port 3000. However, there were no requests my server when I started to stream from OBS. And I was still able to do this even when I shutdowned my server.

srs.conf
listen              1935;
max_connections     1000;
daemon              off;
srs_log_tank        console;
vhost __defaultVhost__ {
    http_hooks {
        enabled         on;
        on_publish      http://localhost:3000/live/start;
        on_unpublish    http://localhost:3000/live/end;
        on_play         http://localhost:3000/live/play;
        on_stop         http://localhost:3000/live/stop;
    }
}

compose.yaml
name: dev

services:
    redis:
        container_name: cache
        image: redis
        ports:
            - 6379:6379
        volumes:
            - redis:/data

    rtmp:
        container_name: rtmp
        image: ossrs/srs:5
        volumes:
            - ./srs.conf:/usr/local/srs/conf/srs.conf
        network_mode: host

volumes:
    redis:
        driver: local

I placed the srs.conf file in the same directory of compose.yaml and it's definitely mounted to the container.
$ docker exec -it rtmp /bin/bash
$ root@orbstack:/usr/local/srs# cat /usr/local/srs/conf/srs.conf
listen              1935;
max_connections     1000;
daemon              off;
srs_log_tank        console;
vhost __defaultVhost__ {
    http_hooks {
        enabled         on;
        on_publish      http://localhost:3000/live/start;
        on_unpublish    http://localhost:3000/live/end;
        on_play         http://localhost:3000/live/play;
        on_stop         http://localhost:3000/live/stop;
    }
}

I just have solved similar problem, maybe you have the same. Check srs container logs with:
docker container logs <container-id>
There was red error lines like "connection refused" and there was ip 172.x.x.x. I made a conclusion that srs server in docker on windows has another ip sub net and it is trying send callback request to localhost backend server (<IP_ADDRESS>). So it can not to connect.
I solved it with hosting backend on local network ip (for example <IP_ADDRESS>) and srs server on VM with Ubuntu (with ip in same subnet <IP_ADDRESS>) . I'm not an expert so maybe there is more simple decision

@caesar-ibrahimovic Very appreciate your response. However, you can see network_mode: host in my srs Docker compose config, which mean srs now is in the same net of my localhost server.

You should know what localhost means, it's the container itself, not your callback server.

I know what is localhost fortunately and my problem is even though my callback server isn't there (localhost:3000), I can still stream to the RTMP container. IIRC, it should fail unless the callback API responses with statusCode 2xx. In other words, my RTMP container didn't apply the config at path /usr/local/srs/conf/srs.conf as written in document.


remove brace expansion

Brace expansion doesn't work here because of the RUN command. This results in these directories not being created. Transmission still functions without them, but it wasn't what I expected to happen.
https://stackoverflow.com/questions/40164660/bash-brace-expansion-not-working-on-dockerfile-run-command

thanks!


Enable project only user access to pipelines if setup by a cluster level user

Rancher versions: v2.0.2
Steps to Reproduce:

As admin enable Pipeline on cluster level
Add a user that only has access to the default project
Log in as user and go to pipelines page to add pipeline

Results:  Can't add pipelines

Duplicate https://github.com/rancher/rancher/issues/13643


Fixed onPasswordAccepted Notified

onPasswordAccepted does not react to change so added the these lines on calculatePasswordSecurityLevel because whenever the level is either increase or not then passwordAccepted also updated.

Thank you for this bug report. It is correct that onPasswordAccepted did not react to changes in the password input. However, I don't think that changing the default strength level calculator is a good solution to this problem, as I have made it possible for users to create and use their own algorithms. Therefore I chose to fix this issue in the refresh() method instead (see commit).


Adds french translation

Hello, @achedeuzot! This is your first Pull Request that will be reviewed by Ebert, an automatic Code Review service. It will leave comments on this diff with potential issues and style violations found in the code as you push new commits. You can also see all the issues found on this Pull Request on its review page. Please check our documentation for more information.

Ebert has finished reviewing this Pull Request and has found:

14 fixed issues! 🎉

You can see more details about this review at https://ebertapp.io/github/ikeikeikeike/phoenix_html_simplified_helpers/pulls/9.

Thanks


Support Opentelemetry trace propagator for pubsub

We have use case to pass the opentelemetry trace and span id's across the pubsub. it would be great, if we have this implemented as part quarkus extension rather than writing our own implementation. BTW we are using Quarkus extension for opentelemetry.

@loicmathieu have also been looking at this for a bit last week, might be able to pick this up. Not sure on timeline, but seems doable.

Upstream tracking issue for support in the Pubsub library itself: https://issuetracker.google.com/issues/183608476?pli=1

Semantic conventions for Pubsub spec: https://opentelemetry.io/docs/specs/semconv/messaging/gcp-pubsub/

Feature request in google-apis/java-pubsub https://github.com/googleapis/java-pubsub/issues/1981

@jfbenckhuijsen  thanks for your effort in pushing google pubsub to support OTEL.


No working with Objective-C?

language doesn't matter

My logging function:
NSLog(@"%s:%s",FILE,PRETTY_FUNCTION);
Is this wrong?

what's the output?

It log the file path and function but not clickable

is it higlighted in console ?

No

see #6 as we are discussing possible issue that some people might be facing


feat: descPochhammer_natDegree

[ ] depends on: #6918

see #6897 for the ascPochhammer version (before the rename...)


#358 Renamed postman demo to parceldemo

Renamed postman demo to parceldemo

@Divyansh1908 thanks.
Could you also rename the folder

Yeah renaming the folder would be good


Formula wrapper: work without plist_options

Right, I should fix the caveats detection so I can merge this.


[FEATURE] Front-end Create the project wireframe

Is your feature request related to a problem? Please describe.
Create a wire frame for the front-end project

Setup done


Is v2 ready?

I see that you have a Pull request for v2... Is it close to ready... Would like to test this out a little more on our server.

I haven't touched the project in a while as we stopped using it on my server, The Coalition, for various reasons. As far as I recall, everything works well, but I have yet to document it. It's very similar to V1, however, so feel free to start using the branch if you are happy to attempt it without documentation. The index.js file in the root is a good starting place.
I have been planning on continuing working on this for a week or two now, but I imagine that my changes are either going to come as a v3 or in a new repo. This is due to plans to make significant changes to simplify to the system (e.g. remove the Koa style middleware) as I don't think the complexity, despite making this tool extremely powerful, is required in most use cases or the plugins I currently want to implement for my own server. v3 will also bring chat streaming, which I have working now in my own RCON client.

Please see the new SquadJS repo for the new rewrite/latest version: https://github.com/Thomas-Smyth/SquadJS


Choose between dictionaries

I feel this dictionary has a lot of potential, and as you say: it's pretty fast!
I was wondering if there's a way to use multiple dictionaries.
Example:
Make mouse show EN-EN and EN-JA definitions of a word at the same time.
Be able to turn off/on a specific dictionary.
I'm used to the built-in dictionary from iOS, so I was thinking something in that direction.

Hi, thank you for using.
Currently, Mouse Dictionary doesn't have such feature.
Importing EN-JA + JA+EN works, but EN-JA + EN-EN may cause same spelling headwords' conflicts.
Currently workaround is to use Beta version and import different dictionary data respectively.

there is an already JSON Websters English-English you can add (open license),
and a bunch from babyl0n I've converted to HTML (so they would need some work..) in https://github.com/eladkarako/Dictionaries (ambiguous license, so just do it for yourself/testing).


increase wait period for deployment of hub

/azp run c - client - tests

/azp run c - client - tests

/azp run c - client - tests

/azp run c - client - tests

/azp run c - client - tests

/azp run c - client - tests

Merging since I can't get the failure to repro. Debugging is now on with the powershell script though so hopefully when/if it rears its head again it will be easier to diagnose.


How does the bootstrap btn-social work in LoginProvider.razor

Hello Anthony,
what do you need to do to get these social links to work.
<a class="btn btn-block btn-lg btn-social<EMAIL_ADDRESS><EMAIL_ADDRESS>I looked at your sample and I don't see any special bootstrap css file.  I'm new to Blazor WASM so maybe it's something simple, I don't know.  It looks like it also uses Font Awesome as well and I don't know how your configure that either.
Thanks,
John Marsing
Here's my Blazor Azure Static WebApp GitHub page that I'm working on.
LoginProvider.razor
`@page "/login-providers"
@{
var providers = new Dictionary<string, string>
{
{ "github", "GitHub" },
{ "twitter", "Twitter" },
{ "facebook", "Facebook" }
};
}
Login

    @foreach(var provider in providers)
    {

 Sign in with @provider.Value

    }
`

@JohnMarsing Bootstrap, Font Awesome  & other CSS are added in blazor-auth-static-web-apps/sample/app/wwwroot/index.html file.


restrict regular user access

disable registration
disable muc creation

fixes #5

I would like to stick to the open settings here and do these changes on the custom images. What do you think?

See: https://github.com/hausgold/docker-ejabberd/pull/14

Closed and relocated. https://github.com/hausgold/docker-ejabberd/pull/14 https://github.com/hausgold/maklerportal-api/pull/479


Optimize dependency checking

When applying this branch, running SageMath's setup.py goes 25% faster when all sources are up to date.

How about checking equality of timestamps? Would that work for you?

That being said, most of the time is gained because every dependency is copied at most once (as opposed to k*n times where n is the number of Cython extensions with that dependency and k is the number of different filesystem paths pointing to the same file).

OK, I think this is safe.

Thanks!

You're welcome. Sorry for the long delay...
On Sun, Feb 21, 2016 at 12:15 AM, jdemeyer<EMAIL_ADDRESS>wrote:

Thanks!
—
Reply to this email directly or view it on GitHub
https://github.com/cython/cython/pull/461#issuecomment-186774655.


Multiple tests cause parser error

If a function contains more than one instance of the test function, it complains of a parse error
// example bad rule:
/a/.test('a') && /x/.test('x')
Error: "preg_match(): Unknown modifier '.'"
File: nicoswd/php-rule-parser/src/Grammar/JavaScript/Methods/Test.php
Line: 46
Function: preg_match
PHP Version: 7.4.3 (ubuntu)
I have tried reordering them, changing contents of test, and removing "i" modifier. It simply doesn't like it when there are two.
Related side issue: documentation provides use as "foo".test(/oo/i) but actual usage requires the reverse:/oo/i.test("foo")
Thanks for providing this helpful utility.

Hey @wbrian-onlineed
Thank you for bringing this up. As of now, all expressions require a comparison operator. Try something like this:
 /a/.test('a') === true && /x/.test('x') === true

I know it's not very intuitive, but it's an issue that resides from where the project originally started. I will eventually fix this at some point.
Let me know if this works for you.

This does not work ;-(
I understand that there needs to be an explicit equality operator present. However, even when present, the parser does not handle two or more tests in the same rule. It will fail with PHP error  "preg_match(): Unknown modifier '.'".
This test should produce the error:
$rule = new Rule('/foo/.test(foo) === true && /bar/.test(foo) === false', ['foo' => 'foo']);
var_dump($rule->isTrue()); // PHP error


Ambassador upgrade has caused memory usage increase

Describe the bug
When ambassador is upgraded from 1.11.0 to 1.12.2, we have noticed a memory usage increase. Even in normal state(no changes), ambassador increases steadily memory, as well as once in a while there are sharp spikes in increase of memory usage.
To Reproduce
Steps to reproduce the behavior:
Upgrade Ambassador to version 1.12.2

Expected behavior
Memory use shouldn't increase.
Versions (please complete the following information):
Ambassador: 1.12.2
Kubernetes environment: AWS setup
Version: v1.13.10
Not sure how to restore memory usage, and the suggestion in https://github.com/datawire/ambassador/issues/3329 to use prune_unreachable_routes does not help.

Hi @dzkaraka - were you able to address the issue where "ambassador increases steadily in memory"? We are seeing indefinite memory growth as well. See: https://github.com/emissary-ingress/emissary/issues/3684

Hi @etotten! Unfortunately, we still experience the memory leakage. We have tried AMBASSADOR_FAST_RECONFIGURE setting, and we have upgraded to 1.13.10, but the issue still persists(nor we have found anything in the docs that will help). As a temporary solution, we have identified the situations where throttling occurs, and we scale up ambassador temporary to create some pods with low memory(my understanding is that the throttling does not occur as long as the memory is 50% from the memory limit). That lowers the impact, and we combine that with a retry mechanism on the client side to effectively mitigate the issue. Not ideal, but it gets the job done until there is a permanent solution. Please keep us posted if you find something that fixes the issue.


Alternative to array-based boolean indexing for jax.jit

I have a couple instances in some code I'm refactoring that use numpy-style array indexing, e.g.
thing = thing[thing > 0]
and
result = [x for x in arr if any(x[0][x[0] > 0])].
These functions are part of a long workflow that I want to be differentiable, and in many places jittable. As expected, when trying to jit the functions containing these statements, I get errors like IndexError: Array boolean indices must be static (e.g. no dependence on an argument to a jit or vmap function).
I'm aware that I could jit smaller sets of functions to avoid re-writing the above code, but I feel like I'm missing an obvious trick here. I've tried many combinations of jax.lax.cond and jax.numpy.where, but I'm struggling to produce things that mimic the same behaviour as the above two expressions for some reason.
Is there a general way I should be thinking about refactoring expressions when I have array-based indexing so I can incorporate them into a jittable function? These two use cases in particular would be nice to solve, if possible :)

The problem here is that the shape of the output of thing[thing > 0] depends on the values in thing and changes for each run, while every array inside a jitted function needs to have a predictable shape (one of the optimizations XLA applies to jitted functions is pre-allocating all memory needed up front, and that requires knowing intermediate shapes at the time of invoking the function).
Some things you can do here:

think about expressing a slightly larger chunk of the computation—it's often the case that these dynamically shaped intermediates feed into predictably-shaped results; if you describe the overall flow we might be able to figure out a way to write it that uses other kinds of indexing/where/gather.
we're working on an experimental transform called mask that will make it easier to express shape-polymorphic code, so it might be useful for us to look into how or whether that would apply to your use case when it's ready.
before mask is ready, you can simulate what it would do a little more manually. In this case that might look something like:

n_valid_things = np.sum(thing > 0)
valid_thing_indices = np.where(thing > 0, np.arange(thing.shape[0]), thing.shape[0])
padded_things = np.concatenate([thing, 0])
padded_valid_things = padded_things[np.sort(valid_thing_indices)]

(note: untested and probably not the fastest way to do this)

You might also want to take a look at the implementation of _unique1d_sorted_mask in https://github.com/google/jax/pull/2760, which is similar to what you're trying to do.

I added "enhancement" because we might want to make this work via mask.

I add a similar problem and use the following trick:
I wanted to compute the product of only a selected part of an array
def proba(mx,select_val):
    return np.prod(mx[select_val])

It does not work so I used a condition to return mx[i] if the value select_val[i] is > to 0.5
or 1 if not.
As 1 is the identity element of the multiplication, it gives the same result.
def select_sup_half(val,sel):
    return  lax.cond(sel < 0.5, sel, lambda x: 1., val, lambda x: val)

select = vmap(select_sup_half,(0,0),0)

@jit
def proba(mx,select_val): #discrete
    return np.prod(select(mx,select_val))

val = np.array([1.,2.,3.,4.])
select_val = np.array([1,1.,0.,1])

print(proba(val,select_val))
# 8.0


added a build action, that builds workbench on the build branch.

This is a stub (feel free not to merge).
Next step would be to figure: https://github.com/satackey/action-docker-layer-caching/blob/main/action.yml as currently ./workbench.sh build takes 26 minutes, which would consume too much compute without caching. Another approach would be to have an action that pushes the image, and the test ones that pull it.
Anyway workbench works smoothly so the need for actions is questionable.

For tests, it would be better to cache the binaries built from source as they take up most of the build time.


Cause of "QImage::scaleWidth: Image is a null image" Log Message

Following the instructions in the README.md of the Zoom Meeting SDK for Linux Headless Bot Sample and joining a meeting, I observed the following logs:
zoomsdk-1  | ✅ configure
zoomsdk-1  | ✅ initialize
zoomsdk-1  | ✅ authorize
zoomsdk-1  | ✅ join a meeting
zoomsdk-1  | ⏳ connecting to the meeting
zoomsdk-1  | ❌ unknown meeting status
zoomsdk-1  | ⏳ reconnecting to the meeting
zoomsdk-1  | QImage::scaleWidth: Image is a null image
zoomsdk-1  | QImage::scaleWidth: Image is a null image
zoomsdk-1  | QImage::scaleWidth: Image is a null image
zoomsdk-1  | ⏳ connecting to the meeting
zoomsdk-1  | ✅ connected
zoomsdk-1  | ⏳ requesting local recording privilege
zoomsdk-1  | ⏳ disconnecting from the meeting
zoomsdk-1  | ✅ meeting ended

The repeated log messages QImage::scaleWidth: Image is a null image are somewhat unexpected, and I’m curious about the root cause. Could you clarify what might be causing these messages? Are they related to any configuration or setting within the SDK or environment?
Additionally, if possible, I would appreciate any advice on how to prevent these messages from appearing in the logs.
Thank you for your support.

+1
Also experiencing this issue

Mee too


Possibility to skip store key with combineReducers

Since probably 80 or more % of the apps will be using store not only with forms, combineReducers function will be used a lot. So, we will have:
forms: combineForms({
  user: initialUserState
}, 'forms')

Is it somehow possible to avoid using forms.user / forms.user.name and just user / user.name, maybe a convention?

Sure, I can provide a mapForms function (I'm sure there's a better name than "mapForms", any suggestions?) that would simply give the object that combineForms uses in Redux's combineReducers():
// Let's come up with a better name than 'mapForms'
import { utils: { mapForms } } from 'react-redux-form';
import { createStore, combineReducers } from 'redux';

const store = createStore(combineReducers({
  existing: existingReducer,
  nonForm: nonFormReducer,
  ...mapForms({
    user: initialUserState,
    foo: initialFooState,
  }),
});

How does this look? You'd just use the spread operator to assign the user, foo, and generated forms reducers directly on the object passed into combineReducers, so that you can access model values by user.name and foo.name.

Yes, this would be great. Will the Partial Models with just .name work as well?

Will the Partial Models with just .name work as well?

Yes, that's independent of this and will continue to work.

Should I call this createForms({ ... }) instead of mapForms({ ... }) ?

@davidkpiano createForms, mapForms, composeForms - any would be great, pick one you like the most 😉

Waiting for this 🎉  createForms sounds good.

Docs here: https://davidkpiano.github.io/react-redux-form/docs/api/createForms.html
import { combineReducers } from 'redux';
import { createForms } from 'react-redux-form';

const initialUserState = {};
const initialGoatState = {};

const reducer = combineReducers({
  foo: fooReducer,
  bar: barReducer,
  ...createForms({
    user: initialUserState,
    goat: initialGoatState,
  }),
});

// reducer state shape will be:
// {
//   foo: fooReducer,
//   bar: barReducer,
//   user: modelReducer('user', initialUserState),
//   goat: modelReducer('goat', initialGoatState),
//   forms: formReducer(''),
// }


Plugin sleep ~60 seconds

Plugin version: 2.2.5
Platform: Android
OS version: 4.1, 6.0
Device manufacturer and model: xiaomi redmi note 4, lenovo p770
Cordova version: 6.4.0
Cordova platform version (cordova platform ls): android 6.0.0
Plugin configuration options:

var config = {
        stationaryRadius: 10,
        distanceFilter: 20,
        desiredAccuracy: 10,
        debug: debug,
        notificationTitle: 'Background tracking',
        notificationText: 'enabled',
        notificationIconColor: '#FEDD1E',
        notificationIconLarge: 'mappointer_large',
        notificationIconSmall: 'mappointer_small',
        locationProvider: 0,
        interval: duringCoordinateRequestTrack * 1000,
        fastestInterval: 2000,
        activitiesInterval: duringCoordinateRequestTrack * 1000,
        stopOnTerminate: false,
        startOnBoot: false,
        startForeground: true,
        stopOnStillActivity: true,
        activityType: 'AutomotiveNavigation',
        pauseLocationUpdates: false,
        saveBatteryOnBackground: false,
        maxLocations: 10
 };

Hello.
When i run:
backgroundGeolocation.configure(successBackgroundGeolocation, failureBackgroundGeolocation, config);
backgroundGeolocation.start();

plugin get first coordinate and sleep ~60sec. Then continues to read the coordinates.
What is the pause? How disable this pause?

Could it be because you are not moving? Try setting
stopOnStillActivity: false

I test with stopOnStillActivity: false. Pause remained. And when i test, i move in automobile.

I also have this issue.
I'm so glad you pointed it out, at first I thought it just wasn't updating location, but it was because I was only testing it for ~15 seconds. After a minute or so, it starts updating regularly.
Still would be nice if there wasn't the pause.
My config is:
var bgOptions = {                 stationaryRadius: 50,                 distanceFilter: 10,                 desiredAccuracy: 0,                 debug: false,                 notificationTitle: 'SeaIce Tracking',                 notificationText: 'Your route is being tracked!',                 notificationIconColor: '#00388d',                 notificationIconLarge: 'mappointer_large',                 notificationIconSmall: 'mappointer_small',                 locationProvider: 0,//backgroundGeolocation.provider.ANDROID_DISTANCE_FILTER_PROVIDER,                 interval: 5000,                 fastestInterval: 5000,                 stopOnTerminate: true,                 startOnBoot: false,                 startForeground: true,                 activityType: 'AutomotiveNavigation',                 pauseLocationUpdates: false,                 saveBatteryOnBackground: false             };

If I'm not wrong, this is due to use locationProvider: 0 (aka distanceFilter provider). I don't know the inner working of the method, but as far as I remember taking a quick look at the code, it needed several locations to start performing the calculations (see distanceFilter provider ).
Use  locationProvider: 1, and see if it gets locations faster.

It is not just that. It is how just this provider works. You already provided link to explanation, so I'm not going to repeat it. Just read it and you'll get it.

Notice: this issue has been closed because it has been reported for branch 2.x or later. It could be already fixed in v3 or is not relevant anymore. You may reopen this issue if it has been closed in error.

I'm having the same issue... any updates?


Players gets kicked when joining server

Whenever two or more players join the server, they get disconnected.
Sometimes the server even crashes
Log:
https://cdn.discordapp.com/attachments/848608690776834068/876809328919736350/2021-08-16-3.log

Is this on the right mod as I simply cannot reproduce this issue?

Yes, I was testing manually with each mod and as soon as i uninstalled fabricsit and bfapi, everything was fine.
This maybe a incompatibility with any other mod also.
Here is the list of my mods:
https://media.discordapp.net/attachments/848608690776834068/877056996094914580/unknown.png

Also, if you want i can share my server with you for testing

if you could send a copy of all those jars I would be happy to do some more investigation

Here:
https://drive.google.com/file/d/10vJvnT8IGiAT5r6vqHD9C3LjTK7r4E9H/view?usp=sharing

You are on an outdated version of bfapi: update and see if it persists

Just tested it, with your mods: there was no issue present

Ok that works, but i think you should update both of your mod on all the platforms because at first I thought that I was using the latest version of bfapi because i was only looking on GitHub

But anyways thanks for helping

Okay then, thanks for the issue.


TODO is showing on Flutter Website

on
https://flutter.io/basic-widgets/

Just testing.

Fixed.


JSON generated with WebInspect Scan could not be parsed

Subject of the issue

JSON generated with WebInspect Scan could not be parsed

Your environment

[Yes] Verify you are using the most recent version of WebBreaker
[Docker] Python version
[Docker] Operating System
[Latest Trial] WebInspect, Fortify SSC, ThreadFix versions (if relevant)

Expected behaviour

Generate a valid JSON with brackets making the findings field an array.

Actual behaviour

The "findings" field of the json file is an array, but its writing does not have a "[]" bracket.
Error encountered in JSONLint.
When manually correcting by inserting a bracket "[" and "]" at the end of the code, JSON is valid and can be parsed.

Sorry for my english.

Thanks for opening up the issue Rafael and PR, if I may ask what is your use case for parsing?  Are you forwarding the .json to an ELK, Splunk, or other?  Curious on your use-case.

I have an application with a pipeline in Gitlab-CI. One of the jobs in this pipeline is the WebInspect vulnerability test through the Webbreaker in container. And the following Job is a container with a shell script that I wrote that parses JSON and kills the pipeline when it encounters vulnerability with a certain severity level.

Thank you.


Single thread profiling?

Now that Ruby 3.3 supports thread-specific profiling, I would love to see Vernier add support for this so I can show people how to profile a single job in production.
A Sidekiq middleware like this might work:
class JobProfiler
  include Sidekiq::ServerMiddleware

  def call(_worker, job, _queue, &block)
    return yield unless job["profile"]

    jid = job["jid"]
    klass = job["class"]
    Vernier.trace(out: "/tmp/#{klass}-#{jid}.profile.json", mode: :thread, &block)
  end
end
Sidekiq.configure_server do |config|
  config.server_middleware.add JobProfiler
end

$ irb
> SomeJob.set(profile: true).perform_async

You'd just need to add support for mode: :thread or similar.

Hi Mike. Vernier profiles all threads, so I'm not sure what value there is in profiling a specific one, you can filter that in the viewer.
We aren't currently using the rb_profile_thread_frames API as I don't believe it can be used safely without sending a signal, and since we're sending a signal we might as well use the old API.

I was thinking that profiling a single thread allows the user to focus on that one thread. Sidekiq has ~10 different threads running by default so a full profile is quite complex and "noisy" to the viewer.
It may also be less overhead in production if Ruby knows it does not need to collect full samples while the other 9 threads are running. Are there really no benefits?

I'm very keen to make Vernier work as well as possible for Sidekiq users, that was one of the inspirations behind it's design. Definitely open to changes improving that.
I don't think overhead is much of a concern. Because Vernier is based around tracing the GVL, any non-running threads we don't even collect a sample and just increment the weight of the previous one. Even when we do collect a sample, in Vernier it's is tiny, just a few integers vs the stack and line numbers Stackprof would record in raw mode.
What difficulty are you seeing viewing multi-threaded Vernier profiles of sidekiq? I'd definitely want to solve that. We have an example in the README (which only uses two threads but it could have recorded any number) and I think it's really great. The firefox profiler, which we've chosen as our viewer, is really designed for the purpose of viewing multithreaded programs and drilling down to the issue that's being investigated.

I think it's better, assuming it's viable, to include all the data we can on the profiling side and filter on the viewer. Say, for example, if you were profiling one job and found that it was stalled waiting on the GVL, wouldn't you want to check the other threads to see who was responsible?
One thing we might be able to use and improve is we have control over which thread(s) are initially selected and initially visible. Do you think that would achieve what you're looking for?
(for reference keys in the profile JSON I would want to set https://github.com/firefox-devtools/profiler/blob/53cd026bffd8230fb3dc300220102d8ccd7bb99c/src/types/profile.js#L911-L918)

I think it's a great idea to collaborate and find rough edges where we can make Vernier profiling jobs easier for all. I think for the majority of Rubyists, that UI can be daunting and/or inexplicable.
I have my weekly Office Hour tomorrow 9am Pacific, I'd extend a special invite to you if you're available to chat.
https://sidekiq.org/support.html

We discussed this and the main incentives for single thread profiling would be to reduce file size and avoid confusing the user. I think the advantages single thread profiling could have will be more easily solved by #56 to avoid user confusion and #47 to even further improve file size.


Interaction between TLS config on HTTPRoute and Gateway

After trying to implement TLS in the GKE Gateway controller it raised some questions around what the interaction should be between TLS config in the HTTPRoute and the Gateway. Let's say I have the following Gateway:
kind: Gateway
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: tls-gateway
spec:
  gatewayClassName: acme-lb
  listeners:
  - protocol: HTTPS
    port: 443
    tls:
      certificateRef:
        kind: Secret
        group: core
        name: gateway-cert
      routeOverride:
        certificate: Allow
    routes:
      kind: HTTPRoute
---
kind: HTTPRoute
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: foo1
spec:
  hostnames:
  - "foo.example.com"
  tls:
    certificateRef:
      kind: Secret
      group: core
      name: foo-cert-1
  rules:
  - matches:
    - path:
        type: Prefix
        value: /path1
    forwardTo:
    - serviceName: foo-svc-1
      port: 8080
---
kind: HTTPRoute
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: foo2
spec:
  hostnames:
  - "foo.example.com"
  tls:
    certificateRef:
      kind: Secret
      group: core
      name: foo-cert-2
  rules:
  - matches:
    - path:
        type: Prefix
        value: /path2
    forwardTo:
    - serviceName: foo-svc-2
      port: 8080

This config raises a couple gray areas:

How does a Gateway certificate without a hostname specified, interact with HTTPRoutes that have certificates and hostnames? Does it become like a default certificate that terminates any HTTPRoutes on the listener that don't have certificates? Or is TLS only supported on the Gateway OR HTTPRoute but not both?
What if the Gateway does have TLS and a hostname specified? Would that TLS config take precedence over a Route with the same hostname and a TLS config? Or would the HTTPRoute take precedence?
How should conflicts be handled between two HTTPRoutes with different certificates but overlapping hostname? Is this simply a bad practice and should result in error?
If an HTTPRoute does error due to cert conflict, does the HTTPRoute fail-closed and the Route doesn't get applied at all? This is probably implementation specific but just wondering.

cc @hbagdi @robscott @bowei

@stevesloka @danehans @hbagdi - how are Contour and Kong planning to deal with this (interaction between Gateway and HTTPRoute secret)?
Here is one proposal, but I can think of other combinations that would also make sense so feel free to shoot holes in this:

The secrets specified for a Gateway listener are used for any HTTPRoutes bound to it, if the HTTPRoutes don't have secrets specified themselves
The secrets specified for a Gateway listener are used for any HTTPRoutes bound to it if routeOverride.certificate=Deny (this is also the default)
If routeOverride.certificate=Allow and a bound HTTPRoute has secrets configured, then the HTTPRoute's secrets will be used to terminate traffic for hostnames in the HTTPRoute

Conflicting Secrets between HTTPRoutes that match on the same hostname is an error, but it may be difficult for the controller to flag this error since it would have to look at the secret.

I think Contour is in the same boat as @SantoDE is where we have't gotten there just yet, but I your proposal @mark-church outlined makes sense to me.
The other scenario I'm not sure on would be:

A Gateway has a secret specified, routeOverride.certificate=Allow is set, but two different HTTPRoutes reference different secrets for the same host.

I'm not sure how to validate that since you'd have conflicting secrets for the same resource fqdn, or would you have to use the timestamps again to pick the oldest cert? What error Condition could we raise since one of the secrets is going to get ignored?

Yeah @stevesloka, we are in the same boat :)
And I also agree that @mark-church's purpose is good. About validation that cert from @stevesloka, I think we would either have to pick the oldest, or error out the Gateway with a config issue condition? 🤷♂

It's a long shot but I'm just pinging some of the top cert-manager contributors here on this question to see if they have thoughts on this topic. Hi @munnerz, @joshvanl, and @meyskens -  Gateway is an evolution to the Ingress API being worked on in SIG-Network. There are two places where TLS can be configured - on the HTTPRoute and also on the Gateway and we are discussing how these two TLS configurations should interact, override, supercede, default, etc between each other as in the following picture. Since you're much closer to TLS workflows and user journeys I figure you might have an interesting take on this.

Hi :wave: I have been quickly reading into the whole proposal to get an idea how it functions. As i understand a Gateway would handle multiple routes which each also have their own TLS cert. I do wonder why both have a TLS cert? The example in the issue the two HTTPRoutes have different certificates but the same domain, which is not possible as the gateway will only receive he HTTP Path after the TLS handshake is finished. Which can cause confusion which certificate is used.

What if the Gateway does have TLS and a hostname specified? Would that TLS config take precedence over a Route with the same hostname and a TLS config? Or would the HTTPRoute take precedence?

If the Gateway has domain specific certs which can be specified i think it should use those, giving the operator control over the exact certificate surfaced to the client and avoiding the per path certificate scenario (thinking of it Ingress has that today also...).
I think I ended up with more questions that with a good answer, sorry :D

👋

As i understand a Gateway would handle multiple routes which each also have their own TLS cert. I do wonder why both have a TLS cert?

It's a question of responsibilities out of the gateway spec so far, I would assume. One is controlled by an operator while the other might be merely maintained by a developer. For me, the general idea would be that a gateway could potentially set some defaults or more "important" certs, but who knows?

If the Gateway has domain specific certs which can be specified i think it should use those, giving the operator control over the exact certificate surfaced to the client and avoiding the per path certificate scenario (thinking of it Ingress has that today also...).

I agree with you. If there is a matching cert on a gateway, it should take those. On Routes, it should only be used if none matching can be found at the gateway level (imho).

It's a question of responsibilities out of the gateway spec so far, I would assume. One is controlled by an operator while the other might be merely maintained by a developer. For me, the general idea would be that a gateway could potentially set some defaults or more "important" certs, but who knows?

I would always assume the operator has the last say :) It does solve a common issue of needing 1 certificate across namespace boundaries.

Some notes:
Gateway provider has to explicitly allow override (see RouteOverride field) to allow the behavior -- and this represents a delegation of authority w/ attendant issues once it has been delegated. It was discussed that for more complex permissions model, this can be implemented via separate infra that is trusted w/ edit access to the Gateway itself. Sketch: set of CRs accessible to the *Route authors that handles allocation of certs and domains based on some criteria.
I know that K8S grouped them together, but certs are public and can have conflicting SANs detected by inspection and hence the controller can perform validation:

Controller can read secrets -- which means that it can perform full validation
a different infra is handling certs+secrets -- I assume that most infra will have a way to view the cert domains etc w/out needing access to secrets in this case. Note that doing this properly is up to the impl, it's hard to definitively enforce this at the API schema level.

There is nothing that requires the private key to be bundled in the same visibility scope as the certificate.

Putting in my 2c:
Overarching question I have, which is a really hard but important question: Do we support traffic where the SNI and Host header are not the same? This would apply to HTTPS only

How does a Gateway certificate without a hostname specified, interact with HTTPRoutes that have certificates and hostnames? Does it become like a default certificate that terminates any HTTPRoutes on the listener that don't have certificates? Or is TLS only supported on the Gateway OR HTTPRoute but not both?

Seems like route ones are called overrides, so if its in Route it takes precedence. Any routes with TLS config will present those certificates when SNI matches route.hostname. Note that this means that SNI must equal Host!
Open question: for a request to foo.bar, do we do a TLS handshake (then 404, due to no matching routes) or not accept the connection (due to no matching SNI)? This goes back to the original question

What if the Gateway does have TLS and a hostname specified? Would that TLS config take precedence over a Route with the same hostname and a TLS config? Or would the HTTPRoute take precedence?

No, HTTPRoute is always priority

How should conflicts be handled between two HTTPRoutes with different certificates but overlapping hostname? Is this simply a bad practice and should result in error?

This is a conflict - even without TLS. I think the ordering is already defined on how conflicts are handled?

If an HTTPRoute does error due to cert conflict, does the HTTPRoute fail-closed and the Route doesn't get applied at all? This is probably implementation specific but just wondering.

Per conflict resolution, I think one of the routes "wins" and is used fully while the other is completely ignored (with some error in the status)

Reading through linked issues it seems like there are two tensions in the API:

(A) Who gets define a VHOST and it's properties
(B) The difference between where a cert is loaded from and what properties that cert or TLS negotiation should have.

The model in proxies is LISTENER(IP, port) --> VHOST(domain/host, TLS) --> ROUTE(host, path, headers, ...)
The discussion in #103 is really about allowing app-owners to define VHOST if I'm reading it right. We think sometimes the ownership model is infra-admin(LISTENER, VHOST) & app-admin(ROUTE) and sometimes it's infra-admin(LISTENER) & app-admin(VHOST, ROUTE). Do folks have any 80/20 rules about the prevalence of one situation or the other?
My experience has been that most enterprises use broad wild-carded VHOSTs owned by infra-admin and that some large solution-providers (think wordpress) use a VHOST-per-tenant. I see more instances of the former but the instances of the latter tend to be quite large.
In the API model Gateway=LISTENER+VHOST and we didn't want app-owners to control LISTENER properties in shared infra. Since Gateway-->XXXRoute supports delegation from infra-admin to app-owner the solution to the above was to start to duplicate aspects of VHOST into XXXRoute resources to leverage that delegation. This choice came with the following costs:

TLS configuration space can be quite large so this can become a large duplicate surface
Any VHOST capable protocol added via a new XXXRoute would need to duplicate what was done for HTTP. E.g. SMTP, CoAP, AMQP.
TLSRouteConfig is delegating the 'source' of the PKI which is different from 'constraints on the behavior of TLS and PKI selection'. This is important when PKI is provided as a service outside of the K8S secret model.

Alternative API models would have been:

Gateway Merging. Leave VHOST in Gateway and allow for Gateway merging to enable VHOST delegation to app-owner. May be needed anyway by infra-owners to manage port/IP ownership but would require a constraint on app-owner ability to override LISTENER so requires some adjustment to API.
Decompose VHOST into separate resource and allow for VHOST delegation in the same manner as route. Gateway --> VHost --> XXXRoute. Probably worth noting that VHOST and TLSRoute could possibly become the same API (Gateway --> VHost --> Service)
Hybrid of above with in-line VHOST in Gateway as is currently defined to short-hand simple, i.e broad wildcard or small host cardinality, use-cases

Thanks for the great write up @louiscryan! I think you've summarized our current state and tradeoffs well. I just have a couple questions about the alternatives you mention at the end:

What would it look like to "Leave VHOST in Gateway and allow for Gateway merging to enable VHOST delegation to app-owner"? Would this involve infra-owners owning a root Gateway that could then delegate domains to Gateways owned by app-owner?
I'm having trouble picturing how the third option would differ from what we already have, do you have an example of what that might look like?

@robscott
For 'Gateway merging' there are two options:

'merge-in-workload' - The API doesn't dictate how the merge occurs but rather a controller implementation which is going to materialize many Gateways in a single proxy uses moderately straight-forward merge semantics on (ip, port, protocol, domain-hierarchy) to ensure a functioning proxy. The API doesn't impose any declarative constraints on the merge so that responsibility is deferred to (a) the mechanism binding a proxy to a set of Gateways and (b) admission-control to make sure app-owners don't violate the infra-admins control over LISTENER. This could also be implemented in CI/CD as concat(set-of-Gateways) for folks who wanted there to be a one-Gateway-per-proxy model.
'merge-in-API' - A Gateway listener/host can reference a subordinate Gateway resource much like it can reference routes. Only listeners from the child Gateway that 'agree' with the referring listener are merged. Agreement includes port, domain/subdomain wildcard matching rules, protocol etc. i.e Parent listener (port=443, host=*.org) agrees with Child listener(port=443, host=x.org). The agreement rules are moderately sophisticated but not excessively so. This gives the infra-admin LISTENER control.

kind: Gateway
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: parent
spec:
  gatewayClassName: acme-lb
  listeners:
  - hostname: *.org
    protocol: HTTPS
    port: 443
    // tls elided as delegated to child Gateways to define or defined for catch-all matching
    routes:
      kind: Gateway
---
kind: Gateway
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: child
spec:
  // gatewayClass elided as defined by parent
  listeners:
  - hostname: good.example.org
    protocol: HTTPS
    port: 443
    tls:
      certificateRef:
        kind: Secret
        group: core
        name: good-cert
  routes:
    kind: HTTPRoute

My 3rd option was to introduce an explicit VirtualHost CRD like my second option but still allow declaring those properties in-line in Gateway. It would look a lot like 'merge-in-api' above
kind: Gateway
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: parent
spec:
  gatewayClassName: acme-lb
  listeners:
  - hostname: *.org
    protocol: HTTPS
    port: 443
    // tls elided as delegated to VirtualHost
    routes:
      kind: VirtualHost
---
kind: VirtualHost
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: child
spec:
  hostname: *.good.org
  protocol: HTTPS // Likely not strictly necessary
  tls:
    certificateRef:
      kind: Secret
      group: core
      name: good-org-cert
  routes:
    kind: HTTPRoute

Given the extreme similarity maybe this isn't such a good option. The remaining option was to take aspects of VHOST out of Gateway entirely and move them into a VirtualHost resource. This retains LISTENER control for infra-admin but the domain/sub-domain agreement in the above two options is lost and may need to be recovered by some other means, probably by something which allows for chaining of VHOSTS which would start to look like the above again.
kind: Gateway
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: parent
spec:
  gatewayClassName: acme-lb
  listeners:
  - protocol: HTTPS
    port: 443
    routes:
      kind: VirtualHost
---
kind: VirtualHost
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: catch-all
spec:
  hostname: *.org
  tls:
    certificateRef:
      kind: Secret
      group: core
      name: wildcard-cert
  routes:
    kind: VirtualHost
---
kind: VirtualHost
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: catch-all
spec:
  hostname: *.good.org
  tls:
    certificateRef:
      kind: Secret
      group: core
      name: good-org-cert
  routes:
    kind: HttpRoute

A small revision to there 'merge-in-api' option above would be to introduce a 'virtual-host' Gateway class in the child. This has a few effects:

Clear signal to controllers that this is not a thing to instantiate outside of a parent & codifies validation of fields
Can be used to address the namespace transitivity issue. E.g. Gateways where class=virtual-host would not be allowed to delegate to routes or descendant Gateways across namespace boundaries. At least not until we were comfortable with transitivity for XXXRoute --> XXXRoute

This issue really has exposed some things that I thought we'd all agreed on, but obviously haven't been written down anywhere.
Based on our earlier discussions about this, I thought that Gateways were already mergable under something like "merge-in-workload", although I considered the merging to happen at the Listener level - there's not much difference, practically, between merging Listeners between Gateways and merging Listeners within Gateways.
With respect to @howardjohn's question:

Overarching question I have, which is a really hard but important question: Do we support traffic where the SNI and Host header are not the same? This would apply to HTTPS only

We have specifically denied this in Contour. We decided that configuring domain fronting is an advanced enough use case that it's okay to have people have to jump through hoops to do it.
It has really bad interactions with client certificate validation (in that you can use it to swing horizontally between TLS hosts), and also there is intermittent browser support (Safari, at least, does not handle the required 421 redirect when used in combination with TLS connection sharing). We dealt with a problem around this in projectcontour/contour#1493.

#749 Removes TLS configuration from routes. In light of that, shall we close this issue? @mark-church

I think it is safe to close this.
@mark-church Please holler in case no.
/close


Have bootstrap force version upgrade

@yimuchen can you test? (I also just made a 0.2.9 release)
Annoyingly, bootstrap.sh always has to be updated after new tags, but I don't see another way unless we have some pre-release-hook github action. Anyway it's pretty easy to manage so far

Just tried the following:
Install 0.2.8 using old bootstrap script.
download/run the new bootstrap script
checked that the lpcjobqueue version in python environment has been updated to 0.2.9
So it seems to work.


Feature/Guardian: Confirm invite.

This PR will allow the user to Invite selected guardians.
Only UI work done.
Need to make network call to inv guardians when the user taps on "Send Invite"
Icon is place holder. Need Assets from design.

I aligned the text after the screenshot was taken :)


Add visualbell toggle

Description
Please explain the changes you made here.
Checklist

[ ] I have read CONTRIBUTING guidelines.

CHANGELOG:

[ ] Updated
[ ] I will update it after this PR has been discussed
[ ] No need to update

KEYBINDINGS:

[ ] Updated
[ ] I will update it after this PR has been discussed
[ ] No need to update

PLUGINS:

[ ] Updated
[ ] I will update it after this PR has been discussed
[ ] No need to update

Merging on the correct repo


Naming model outputs by layer causes collision when sharing layer among different output tensors

When a model is created, the output_names property inherited from Network takes those names from the output layer(s). When the outputs are produced by different layers, there is no issue in using multiple losses or a multi-output loss as these can be matched by passing a loss dictionary when compiling the model:
model.compile(optimizer=opt, loss={'output_layer_1': loss_fn1, 'output_layer_2':loss_fn2})
# or
model.compile(optimizer=opt, loss={'output_layer_1': loss_fn, 'output_layer_2':loss_fn})

However, when sharing a layer for multiple outputs, there is no way to identify these tensors as they come from the same layer and would have the same key:
layer = SomeLayer(args, name='output_layer')
output1 = layer(tensor1)
output2 = layer(tensor2)
model = Model(..., [output1, output2])
print(model.output_names)
# : ['output_layer', 'output_layer']
model.compile(optimizer=opt, loss={'output_layer': loss_fn1, 'output_layer':loss_fn2})  # improper syntax

https://github.com/keras-team/keras/blob/7a39b6c62d43c25472b2c2476bd2a8983ae4f682/keras/engine/network.py#L300

I suppose you can get around this by using separate identity Lambda layers for each output, but still.

@mogeid
hey we were supposed to connect for that dataset, did u go tru it?


Validate models against XSD schema

We could validate the XML part of models against the published RESQML schema, to check for errors.
This could be available as a function validate_model or similar. It could also be used in our test suite, to ensure we are creating each object correctly.
RE implementation, lxml looks promising as it is already a dependency:

Example here: https://lxml.de/validation.html
This class looks like it can be used for validation: https://lxml.de/apidoc/lxml.etree.html#lxml.etree.XMLSchema

We would presumably need to have the XSD files available to the code. We should probably check whether we're allowed to include them in the repo; and in the mean time, we could try to get it working against a local copy of the XSDs outside version control.

This issue is duplicated in #381


Expose binder/notebook image name via environment variable to notebook container

First of all. You all rock. I recently deployed a binderhub on GCP following your docs and it basically worked on my first try.
I would like to find a way to expose the name (e.g. a GCR or dockerhub path) of the built docker image in the notebook environment. I want to do this because I'd like to give the name of this docker image to dask-kubernetes to support scaling computations done in a binder notebook across a larger kubernetes cluster.
I have looked at the current environment variables but it doesn't seem like this functionality is covered yet.
(more discussion on the larger use case and progress related to this issue here: https://github.com/pangeo-data/pangeo/issues/283)

Off the top of my head I can't think of a reason why we couldn't do this. Will need to think a bit about how to do it. Binderhub itself has nothing to do with how each pod is started, it makes an API request to JupyterHub. So it is probably something to configure in kubespawner.

As a temporary bandaid you can probably construct the name of the image from the information available inside the container + your admin knowledge. Checkout https://github.com/jupyterhub/binderhub/blob/59ace6dc8223a6f88e4eea29ecca0f1838e5a9c3/binderhub/builder.py#L243-L247 for how the name is computed.

@betatim - thanks for your response. I'll look into the bandaid that you mention. Would it make sense to cross post this with kubespawner?

+1 to opening this up in kubespawner so we can figure out where is the right place for this fix to happen!


prometheus-operator: Enable monitoring of control plane

This enables monitoring of controller-manager, coredns, scheduler.
Apiserver monitoring works fine out of the box.

For etcd and kubelet the work is tracked in https://github.com/kinvolk/lokomotive/issues/42

@invidian I have made changes inspired from your commit. PTAL.

@invidian

I'm talking about the scalability of given solution, not about specific examples mentioned.

Right now we can't have ordering the tests. So we need this to be run after e2e tests are run. How do we enable this without having to have different build tag?
Going forward we should revamp our tests and rely on using something else than build tags to order the way tests are invoked. Something using https://golang.org/pkg/testing/#hdr-Main

Finally all tests passed !

@invidian I think you missed my comment here https://github.com/kinvolk/lokomotive/pull/38#issuecomment-597505207

Yes we talk to prometheus pod because the API lacks support of providing a service name and then figuring out which pod to connect to.

Yes we talk to prometheus pod because the API lacks support of providing a service name and then figuring out which pod to connect to.

But mention of prometheus pod is in the generic port-forwarding code. It shouldn't mention prometheus specifically.

@invidian I think you missed my comment here #38 (comment)

I've seen it and I responded. I suggested using post-e2e name instead of prometheus.


Create Post Component

Frontend Part

[ ] Create the create post component to create the posts
[ ] Create one Text area for description
[ ] Create Input fields to add Tags to the post
[ ] Create Image button and Post button

Backend Part

[ ] Add Image functionalities to the create post
[ ] Add see preview of the image
[ ] Connect the services to backend

Frontend Part

[x]  Create the create post component to create the posts
[x]  Create one Text area for description
[x]  Create Input fields to add Tags to the post
[x]  Create Image button and Post button

Backend Part

[x]  Add Image functionalities to the create post
[x]  Add see preview of the image
[x]  Connect the services to backend


Only allow firstcharacter to be an alpha character

Closes: #1
Updated validations.py python script.
Fixed the behavior of validate_user function in validations.py.
Fixes #1

It's a good idea to open an issue first for discussion.

[ ] Tests pass
[ ] Appropriate changes to README are included in PR

@googlebot I signed it!


Major Refactor

Commit Notes
Additional objects implemented
Standardized function naming
Fixed missing error handling
Support and enforce QB's rate limiting
Bumped Go to 1.18 as 1.14 is EOL
Ran gofumpt -w over the repo to cleanup code formatting
Description
Hey! Awesome library, the authorization flow was something I was struggling with myself, so this saved me a lot of time.
I've refactored the majority of the library to try and enforce consistency throughout. I've also implemented a few new entities. I realise this is a pretty significant refactor, and I'm sure you'll question or disagree with certain decisions made. But please take a look when you have the time to do so, and I'll be sure to either explain or resolve any issues you raise.
Thanks!

@rwestlund is there any chance of this getting reviewed? :)

Hey, sorry for not looking at this sooner. It became one of those critical dependencies that gets ignored because it was working.
Looks like there was a build failure: Error: ../../../go/pkg/mod/golang.org/x/oauth2@v0.19.0/internal/token.go:140:10: lc.v.CompareAndSwap undefined (type atomic.Value has no field or method CompareAndSwap)
I've tagged current master as v1.0.0 and would be happy to merge this once that's resolved and tag it v2.0.0.

Hey @rwestlund, any chance you've got some time to review this? :)

Thanks for the follow up. I've merged and tagged v2.0.0!

Heads up v2.0.0 is not installable afaik:


Render build fails

Describe the bug
Render build fails.
To Reproduce
Render build fails with yarn commands
below are the logs
==> Checking out commit 58122e985c26620206d8a1c7848acfe2dacc6b14 in branch main
==> Downloading cache...
==> Transferred 617MB in 9s. Extraction took 15s.
==> Requesting node version >=18.15.0 <19.0.0 || ^20
==> Using Node version 20.11.1 via /opt/render/project/src/package.json
==> Docs on specifying a Node version: https://render.com/docs/node-version
==> Running build command 'yarn install; yarn build'...
error This project's package.json defines "packageManager": "yarn<EMAIL_ADDRESS>However the current global version of Yarn is 1.22.22.
Presence of the "packageManager" field indicates that the project is meant to be used with Corepack, a tool included by default with all official Node.js distributions starting from 16.9 and 14.19.
Corepack must currently be enabled by running corepack enable in your terminal. For more information, check out https://yarnpkg.com/corepack.
error This project's package.json defines "packageManager": "yarn<EMAIL_ADDRESS>However the current global version of Yarn is 1.22.22.
Presence of the "packageManager" field indicates that the project is meant to be used with Corepack, a tool included by default with all official Node.js distributions starting from 16.9 and 14.19.
Corepack must currently be enabled by running corepack enable in your terminal. For more information, check out https://yarnpkg.com/corepack.
==> Build failed 😞
==> Common ways to troubleshoot your deploy: https://docs.render.com/troubleshooting-deploys

You'll have to change the yarn command to pnpm command. For example, yarn install to pnpm install, yarn build to pnpm build


Bot not working

When launching bot, nothing happens, the bot correctly displays messages in the console but is useless when claiming or rolling.  Channel ID and token are correct, but still doesn't work.

I have found the issue, using wrong discum version. To help other people with this issue, run pip3 uninstall discum, then run python -m pip install --user --upgrade git+https://github.com/Merubokkusu/Discord-S.C.U.M.git#egg=discum


CI, tox: fixing CI warnings produced by ansible_lint

Updating "include:" & "include_tasks:" paths to be relative to the location
of the relevant yaml files (vs. relative to the project root).
Typo fixed.

Signed-off-by: Pavel Bar<EMAIL_ADDRESS>

Verified: executed the full flow: generate, validate, failover, failback on a host with 2 VMs.


Documentation typos

The documentation for Clifford.Layout mixes up "inner" and "outer" to describe the tables produced by omt and imt. Here the one for the outer product says "inner" where it should say "outer":
https://github.com/pygae/clifford/blob/1b566721b877bed1854929642c1b80518e2a3165/clifford/_layout.py#L370-L372
And here the one for the inner product says "outer" where it should say "inner":
https://github.com/pygae/clifford/blob/1b566721b877bed1854929642c1b80518e2a3165/clifford/_layout.py#L375-L377

The documentation for Clifford.Multivector doesn't describe the commutator properly. It shows "+" where it should be "-":
https://github.com/pygae/clifford/blob/1b566721b877bed1854929642c1b80518e2a3165/clifford/_multivector.py#L809-L815

Whoops, good catch


Detach the sessions

How i can detach the sessions?
in tmux if we want to make new sessions, we just need -d for making the new sessions without opening the sessions
tmux new -s mysessions -d
i tried to add -d in config files but won't close it

Hi, there's no way to do it at the moment. I'll work on this soon

okay, right now i'm doing this
session: crot

root: ~/lokasifolder

windows:
  - name: code
    layout: main-vertical
    commands:
      - nano namafile.crot
    panes:
      - type: vertical
        commands:
          - tmux detach # add this from detach the sessions

You can use the --detach option now


[vm/ffi] Support iOS calling calling convention and library loading

Wanna follow up whether we can expect iOS support by Dec 2019?

Second this. Flutter makes sense for my project with FFI support for iOS but not without it. Can we get an ETA?

Sorry, usually we don't provide ETAs or concrete timelines. The work on FFI is going full steam and we hope to have all pieces necessary for Flutter developers to be able to develop apps using FFI on all supported platforms at some point in the near future.

The VM work is done. Once the decommissioning DBC work lands the FFI will work on iOS automatically. It also will already work in AOT (release/profile builds).

It also will already work in AOT (release/profile builds).

Wow, so AOT support for iOS comes even before AOT support for Android 🤓

AOT support for Android is already available actually :smile:

AOT support for Android is already available actually 😄

I'm so outdated 😆

Once the decommissioning DBC work lands the FFI

Can you point me to the issue tracking this one?

@sjindel-google can we use FFI with iOS already, or need to wait for some other github ticket? any example yet?

FFI is equally available for iOS and Android now.
I wouldn't call https://github.com/dart-lang/sdk/blob/master/samples/ffi/sqlite/docs/android.md an example, but you can find more information at https://github.com/flutter/flutter/wiki/Binding-to-native-code-via-FFI

@sjindel-google when trying to run --profile or run --release on iOS, I got
 Running Xcode build...
 ├─Building Dart code...                                    30.8s
 ├─Assembling Flutter resources...                           1.8s
 └─Compiling, linking and signing...                         0.3s
Xcode build done.                                           34.5s
Failed to build iOS app
Error output from Xcode build:
↳
    ** BUILD FAILED **

Xcode's output:
↳
    === BUILD TARGET Runner OF PROJECT Runner WITH CONFIGURATION Profile ===
    Building AOT snapshot in profile mode (ios-profile)...
    Building App.framework for arm64...
    ProcessException: Process exited abnormally:
    clang: error: unable to execute command: Segmentation fault: 11
    clang: error: linker command failed due to signal (use -v to see invocation)
      Command: xcrun clang -arch arm64 -miphoneos-version-min=8.0 -dynamiclib -Xlinker -rpath -Xlinker @executable_path/Frameworks
      -Xlinker -rpath -Xlinker @loader_path/Frameworks -install_name @rpath/App.framework/App -o build/aot/arm64/App.framework/App
      build/aot/arm64/snapshot_assembly.o
    cp: build/aot/App.framework: No such file or directory
    cp: /Users/truongsinh/Dev/ml/flutter_realtime_detection/ios/Flutter/App.framework/Info.plist: No such file or directory
    Project /Users/truongsinh/Dev/ml/flutter_realtime_detection built and packaged successfully.
    Command /bin/sh emitted errors but did not return a nonzero exit code to indicate failure
    === BUILD TARGET Runner OF PROJECT Runner WITH CONFIGURATION Profile ===
    ld: framework not found App
    clang: error: linker command failed with exit code 1 (use -v to see invocation).

[✓] Flutter (Channel master, v1.10.3-pre.37, on Mac OS X 10.14.6 18G95, locale en-VN)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.1)
[✓] Xcode - develop for iOS and macOS (Xcode 11.0)
[✓] Chrome - develop for the web
[✓] Android Studio (version 3.5)
[✓] VS Code (version 1.38.1)
[✓] Connected device (3 available)

@truongsinh Are you using callbacks (fromFunction)?

no callback. To give you more context, I use only API from https://github.com/tensorflow/tensorflow/blob/r1.14/tensorflow/lite/experimental/c/c_api.h

It looks like we're generating Assembly snapshots which are crashing Clang.

@mraleph mentioned that he's seen this before and it may be caused by generating too many symbols.
@truongsinh Could you please share the .S file which clang is crashing on?

@truongsinh Could you please share the .S file which clang is crashing on?

Dumb question, how can I find this .S file 😅

Actually, I've opened a separate issue to investigate this: https://github.com/dart-lang/sdk/issues/38526

@truongsinh Please see my instructions in #38526


Abseil fails to build since commit f6ae816 (Nov 16, 2018)

Since commit f6ae816, abseil fails to build.
I suspect the following internal commit may be at the source of the issue:

f4044c56d44ba0ac2a9f218ed55f1b1f9e985eae by Abseil Team<EMAIL_ADDRESS>Update absl/base/CMakeLists.txt to use new functions
i.e. absl_cc_(library|test)
PiperOrigin-RevId: 221676669
GitOrigin-RevId: da04b8cd21f6225d71397471474d34a77df0efd6
Change-Id: If6621e10d096a39b6a056a072c2727a0df0b0620

Attached is the output for a build starting in an empty folder, with no extra options passed to CMake.
abseil_build_output.txt
The problem reproduces in Visual Studio 2017 as well

@JonathanDCohen @Mizux Is there a way to exclude absl/base/spinlock_test_common from being built when testing isn't requested? It's really a test only library that depends on gtest.


Automatically service registration and discovery support in cloud environment

finished feature 331
https://github.com/line/armeria/issues/331

General comment: could you fill proper PR title?

Oh, by the way, did you sign the ICLA?
https://feedback.line.me/enquete/public/799-Z6ygVz3U
If not, please sign it.

Current coverage is 65.26% (diff: 70.53%)

Merging #357 into master will increase coverage by 0.12%

@@             master       #357   diff @@
==========================================
  Files           330        335     +5
  Lines         13449      13557   +108
  Methods           0          0
  Messages          0          0
  Branches       2014       2026    +12
==========================================
+ Hits           8761       8848    +87
- Misses         3743       3759    +16
- Partials        945        950     +5

Powered by Codecov. Last update 0824cb7...00b618a

@naude-r Thank you for your notification!  I'm not familiar with Apache Curator framework, this feature implemented here is simple and straight ahead, just using ZooKeeper' s native API make it efficient, clear and clean. I also add full covered test cases against those features to ensure every situation works correctly. Any further suggestion will be welcome!

@jonefeewang Gentle ping - we are almost there! :-)


When a rule is an array, everything just dies

For instance, if a ruleset for a field is defined like so ['required', ['lengthMin', 3] ] the entire system grinds to a halt.
Must add support for rules that are arrays

issue is resolved with https://github.com/macder/wp-form-validation/commit/2f817c08cda7a810b92d0389702d998254e37f53
the validation adapter and rules collection now handle the rule array condition

0.10.1 introduces this fix https://github.com/macder/wp-form-validation/pull/85


DOC Add section on security of supported libraries

This is to make it more transparent for users what they can expect when using skops with supported external libraries.

Ready for review @skops-dev/maintainers


Feature/application espresso test

Priority
Low
Description

This is an example of how to write espressoTests in android.
It tests the creation of a  new wallet using 12 or 24 words.

I've also reviewed and edited the grammar in the testing readme.md haha :)

thank you @Daniel-Wang! I am thinking that the readme file is more like a generic best practices of Espresso tests in Android. We have to find a better place for that file.