PureThermal mini

I have been trying to use this with the PureThermal mini, I know that it doesn't specify compatibility with this version of the PureThermal board. But I thought it may anyway because they're both made by GroupGets.

Should have mentioned that I haven't gotten it to work

It should work the same as any other PureThermal board.

I can confirm that the software works with the PureThermal Mini

Has this issue been resolved?

It wasn’t tested because we got the pure thermal 2 instead
On Fri, 8 May 2020 at 22:07, Kurt Kiefer<EMAIL_ADDRESS>wrote:

Has this issue been resolved?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/groupgets/GetThermal/issues/27#issuecomment-626021064,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOPYU2I5NDCMUAYOFJYRN73RQRYCLANCNFSM4K4YWQKQ
.


You cannot break out of GET$() and GET() and probably WAIT and INPUT as well.

Break detection is done but not acted on.

Fixed


How can I obtain the intrinsics of the depth camera (D435 Series) instead of color camera?

Required Info

Camera Model
D400

Firmware Version
up-to-date

Operating System & Version
Archlinux

Kernel Version (Linux Only)
up-to-date

Platform
PC

SDK Version
2

Language
C++/opencv

Segment
Robot/VR/AR/others

Issue Description
Hi,
I am wondering whether I can get the intrinsics of the depth camera in Realsense D400 Series.
I have read the documentation about the intrinsics. I only found it is feasible to obtain the intrinsics for video camera(colour camera). How can I get the intrinsics of depth camera?
The SDK provides the alignment of depth image and colour image. So, I think I can get intrinsics of depth camera.
Is it possible if I follow the procedure of obtaining intrinsics of the video camera?
Regards

It seems that I can follow the procedure of finding intrinsics of the video camera. I will check it.

The intrinsics and extrinsics of all sensors can be listed using a RealSense SDK program called rs-enumerate-devices.
https://github.com/IntelRealSense/librealsense/tree/master/tools/enumerate-devices
The command to access the extrinsics and intrinsics is:
rs-enumerate-devices -c

in code it would be something like:
pipeline p;
auto r = p.start();
auto intr = r.get_stream(RS2_STREAM_DEPTH).as<rs2::video_stream_profile>().get_intrinsics();

This case will be closed after 7 days from the time of writing this message if there are no further comments.   Thanks!


Unexpected behavior on source_rate_limit

Describe the bug
for MQ source, the rate limit have no effect on the downstream MV
dev=> show create source s;
   Name   |                                                                                Create Sql
----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 public.s | CREATE SOURCE s (a INT, b CHARACTER VARYING) WITH (connector = 'kafka', topic = 'test', properties.bootstrap.server = '<IP_ADDRESS>:29092', source_rate_limit = 0) FORMAT PLAIN ENCODE JSON
(1 row)
dev=> create materialized view mv as select * from s ;
CREATE_MATERIALIZED_VIEW
dev=> select count(*) from mv ;
 count
-------
   101
(1 row)

for FS source, the rate limit does have the effect
dev=>  CREATE source diamonds1 (
    carat FLOAT,
    cut TEXT,
    color TEXT,
    depth FLOAT,
) WITH (
    connector = 'posix_fs',
    match_pattern = 'data*.csv',
    posix_fs.root = 'e2e_test/source_inline/fs/data',
    source_rate_limit = 0
) FORMAT PLAIN ENCODE CSV ( without_header = 'false', delimiter = ',');
CREATE_SOURCE
dev=> create materialized view mv1 as select * from diamonds1 ;
CREATE_MATERIALIZED_VIEW
dev=> select count(*) from mv1 ;
 count
-------
     0
(1 row)

expect:

downstream MV should be throttled
alter source’s rate_limit should affect the downstream MV

Error message/log
No response
To Reproduce
No response
Expected behavior
No response
How did you deploy RisingWave?
No response
The version of RisingWave
No response
Additional context
No response

false alarm related to shared source.
after disabling streaming_use_shared_source, it works as expected.
dev=> set streaming_use_shared_source to false ;
SET_VARIABLE
dev=>  create source s1 (a int, b varchar) with ( connector = 'kafka', topic = 'test', properties.bootstrap.server = '<IP_ADDRESS>:29092', source_rate_limit = 0) format plain encode json ;
CREATE_SOURCE
dev=> create materialized view mv1 as select * from s1 ;
CREATE_MATERIALIZED_VIEW
dev=> select * from mv1 ;
 a | b
---+---
(0 rows)


How to config the domain for gitness?

Hello everyone,
I run a gitness via docker, and I want to change this url.

I checked the gitness docs, but I didn't find how. Can anyone help? Thank you so mcuh.

You should use the GITNESS_URL_BASE env var. Check here, Configuration. Hope it helps

@indaco Great, thank you so much.


Implement view centering and zooming in 3.3

Due to API changes, the plugin is unable to correctly focus the view on artboards / layers.

Not sure if this helps, but since 3.3 I’ve been doing something like so:
var doc = context.document; var view = [doc currentView];
then select either an artboard or a layer, as you would, then
[view zoomToSelection];

Thanks! :)


Inject abruptly stops

When debugging Java (LWJGL 2) application, the following happens when renderdoc redirects back to "Inject into Process" screen.
RDOC 002284: [18:22:34]    win32_process.cpp( 518) - Log     - Injecting renderdoc into process 5988
RDOC 005988: [18:22:34]             core.cpp( 318) - Log     - RenderDoc v0.91 x64 Release (2d8b2cf818746b6a2add54e2fef449398816a40c) capturing application
RDOC 005988: [18:22:34]   win32_libentry.cpp(  67) - Log     - Loading into C:\Program Files\Java\jdk1.8.0_121\bin\java.exe
RDOC 002284: [18:22:35]   target_control.cpp( 412) - Log     - Got remote handshake: java () [5988]
RDOC 005988: [18:22:40]   gl_hooks_win32.cpp( 613) - Log     - dc 000000005A01107B. PFD: type 0, 32 color bits, 24 depth bits, 0 stencil bits. Win: 854x480
RDOC 005988: [18:22:40]        gl_common.cpp( 406) - Log     - Vendor checks for 0 (NVIDIA Corporation / GeForce GTX 950M/PCIe/SSE2 / 4.5.0 NVIDIA 378.92)
RDOC 005988: [18:22:40]        gl_common.cpp( 688) - Warning - FBOs are shared on this implementation
RDOC 005988: [18:22:40] gl_texture_funcs.cpp(1281) - Error   - Called texture function with invalid/unrecognised texture, or no texture bound to implicit slot
RDOC 005988: [18:22:40] gl_texture_funcs.cpp(1281) - Error   - Called texture function with invalid/unrecognised texture, or no texture bound to implicit slot
RDOC 005988: [18:22:40] gl_texture_funcs.cpp(1281) - Error   - Called texture function with invalid/unrecognised texture, or no texture bound to implicit slot
RDOC 005988: [18:22:40] gl_texture_funcs.cpp(1689) - Error   - Called texture function with invalid/unrecognised texture, or no texture bound to implicit slot
RDOC 005988: [18:22:40] gl_texture_funcs.cpp(2353) - Error   - Calling non-DSA texture function with no texture bound to active slot
RDOC 005988: [18:22:40] gl_texture_funcs.cpp(1281) - Error   - Called texture function with invalid/unrecognised texture, or no texture bound to implicit slot
RDOC 005988: [18:22:40] gl_texture_funcs.cpp(1281) - Error   - Called texture function with invalid/unrecognised texture, or no texture bound to implicit slot
RDOC 005988: [18:22:40] gl_texture_funcs.cpp(1281) - Error   - Called texture function with invalid/unrecognised texture, or no texture bound to implicit slot
RDOC 005988: [18:22:40] gl_texture_funcs.cpp(1281) - Error   - Called texture function with invalid/unrecognised texture, or no texture bound to implicit slot
RDOC 005988: [18:22:40] gl_texture_funcs.cpp(4692) - Error   - Called texture function with invalid/unrecognised texture, or no texture bound to implicit slot
RDOC 002284: [18:22:40]    win32_network.cpp( 178) - Warning - recv: 10054

Seems like 10054 (connection closed) is the only thing that might be related to the issue. If I understand correctly, it's telling that injected DLL suddenly disconnected from local server, and pretty much nothing else. What do I do?

Can you clarify some things:

Does the program crash? It looks like it, but you don't say exactly. By 'redirects back to the "Inject into Process" screen' do you mean that your program closes/crashes and so the connection window in renderdoc closes, and the next visible window is back to "Inject into Process"?
If you're injecting are you injecting before the target program has used the target API?

My best guess is that you've injected into the program after the API is initialised, then a context creation is seen and renderdoc starts intercepting GL calls but without having seen all of the initialisation necessary to have the textures tracked. Some functions will handle it (as the errors indicate) but I'm sure others won't, and will just crash.

It doesn't crash. Java process keeps working with no problems.
I've set breakpoint into the first line of main, and inject while the process is paused in debugger. LWJGL (and OpenGL context) gets initialized much further.

OK. In that case I'm not sure what's wrong, I'd need more information to investigate. The error message about the socket is most likely just be a symptom of something else - the connection is lost due to some other problem.
Can you re-attach by going to file -> attach to running instance and locating the running program there? Do you get the overlay in your program, and if so are you able to make captures and see them saved to disk (by default to %TEMP%/RenderDoc/)?
The GL error messages still indicate that something is quite wrong, and I don't know if RenderDoc can survive whatever is causing that.
Are you able to share the program with me to debug directly?

Yes, I understand that there's certainly not enough information.
There was no overlay, and at first I didn't even understand what are you talking about. Now that I restarted RenderDoc instance, application crashes, because getFunctionAddress for glMatrixMode returns null. When I do the same without attaching RenderDoc instance (either under debugger or not), it works. I restarted RenderDoc once again, and this time the issue persists.
The program is called Minecraft, and I'm afraid EULA doesn't allow me to share the jar file. Their website hosts jar file here, and if you need more readable names, you can use semi-official decompiler from here.
But I don't think it's really related to its source code. I've created a blank project with LWJGL 2.9.4 with the following file:
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import java.lang.management.ManagementFactory;
public class Test {
    public Test() {
        try {
            Display.setDisplayMode(new DisplayMode(800, 600));
            Display.create();

            while(!Display.isCloseRequested()) {
                Display.update();
            }

            Display.destroy();
        } catch(LWJGLException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        System.out.println(ManagementFactory.getRuntimeMXBean().getName());
        new Test();
    }
}

If I attach RenderDoc to it, I get the following overlay:


CMA-ES

Hello,
CMA-ES is a powerful evolutionary algorithm for black-box optimization problems. If there is interest in adding it to this optimization suite, I would be happy to give it a try. My plan is to start by following the purecma.py implementation, a public domain pedagogical implementation by the author of the algorithm, and add more advanced features if necessary.

Hi,
Thanks for your interest in contributing to argmin! CMA-ES would be a great addition to argmin and I'd very much appreciate it if you would implement this.
We've recently made a lot of changes (#3 ) to the code, therefore it could easily happen that you run into unforeseen problems. Also, the documentation isn't everywhere up to date yet and may sometimes be not very helpful, outright wrong or may not exist at all. Please don't hesitate to get in touch in case you have any problems, suggestions of if your code requires changes to the overall design of argmin.

Hi @Armavica,
Have you had a chance to give this a try yet? Is there anything I can help you with?

Hi! Sorry for the delay, I have been busy and out of the country for the last few weeks. I do have a working prototype, and I wanted to add more tests before submitting it. I will do that as soon as I find time.

Sounds great! :)
There's no rush, take your time!

I would be interested in implementing this algorithm and others for a chemical yield optimisation project at work. I have only recently started learning Rust but am happy to try and develop further with help. If this has already been done then perhaps there is something else I can help with.

Hi @PyPete ,
thanks for your interest in contributing! I haven't heard anything from @Armavica in a while, so I'm not sure what the current status of this is. I'm still very much interested in an implementation of CMA-ES. Unless Armavica objects I would suggest that you start working on this feature if you like. Should Armavica come back to this I'm sure that there will be the possibility to merge the implementations.
I'm happy to help you with the implementation and guide you. Just open a WIP pull request and don't hesitate to ask any questions :)

Hi @stefan-k, I think I'll take care of this issue, if you don't mind! I've already have a working implementation of this algorithm in Scala https://github.com/VolodymyrOrlov/cma-es-scala and I think have a good understanding on how the method works

@VolodymyrOrlov sounds great! :)
The only other population based method so far is particle swarm optimization which uses PopulationState to carry state from one iteration to the next. PopulationState is therefore somewhat "tailored" to PSO and as such you may have to adapt it to your needs. Let me know if you have any questions or run into any problems!

Agree! Looks like my state will have to carry on a NxP 2d array, where N is my population size and P is number of parameters. This way I'll be able to quickly perform Eigendecomposition operation, which is a central operation in CMA-ES.

I also need to add these new operations to the argmin-math:

argsort: https://numpy.org/doc/stable/reference/generated/numpy.argsort.html
eigSym: https://www.rdocumentation.org/packages/MGMM/versions/0.3.1/topics/eigSym
np.random.standard_normal: https://numpy.org/doc/stable/reference/random/generated/numpy.random.standard_normal.html
np.outer: https://numpy.org/doc/stable/reference/generated/numpy.outer.html

Looks like my state will have to carry on a NxP 2d array, where N is my population size and P is number of parameters. This way I'll be able to quickly perform Eigendecomposition operation, which is a central operation in CMA-ES.

Currently the population is stored as a Vec<P> in PopulationState. I think this can be implemented in a more flexible way with generics which would allow both your NxP 2D array and Vec<P>.
If you need to carry state which is very specific to CMA-ES, then you can of course store them in your CMA-ES struct.

I hope you don't mind me implementing all these new methods and traits for CMA-ES :)

Not at all! :)

np.outer: https://numpy.org/doc/stable/reference/generated/numpy.outer.html

I think this is already covered with ArgminDot, at least for ndarray: https://github.com/argmin-rs/argmin/blob/2943e256800196ac800d477cd3f99def8a08c142/argmin-math/src/ndarray_m/dot.rs#L35
But I have no objections to split this off into an ArgminOuter trait since it's more explicit. Also, the current implementation looks awfully inefficient.

@stefan-k , while working on CMA-ES I've stumbled upon this implementation of a dot product between 2 matrices:
https://github.com/argmin-rs/argmin/blob/main/argmin-math/src/vec/dot.rs#L51
It seems to be some kind of task-specific implementation. Not sure where is it used in the code. Can I replace it with a more traditional dot product, similar to np.dot?

It is needed (at least) in BFGS. Both ndarray and np.dot compute the matrix product when given two 2D matrices. The ArgminDot implementation for Vecs should also do so (unless there is a bug). What would you want to replace it with?

Current implementation fails this test:

#[test]
fn [<test_mat_mat_2_ $t>]() {
    let a = vec![
        vec![1 as $t, 2 as $t, 3 as $t],
        vec![4 as $t, 5 as $t, 6 as $t]
    ];
    let b = vec![
        vec![1 as $t, 2 as $t],
        vec![3 as $t, 4 as $t],
        vec![5 as $t, 6 as $t]
    ];
    let expected = vec![
        vec![22 as $t, 28 as $t],
        vec![49 as $t, 64 as $t],
    ];

    let product = a.dot(&b);

    println!("{:?}", product);

    assert_eq!(product.len(), 2);
    assert_eq!(product[0].len(), 2);

    product.iter().flatten().zip(expected.iter().flatten()).for_each(|(&a, &b)| assert!((a as f64 - b as f64).abs() < std::f64::EPSILON));
}

Also, why do we need to transpose second matrix right before dot product?
I have another implementation that works with existing test, where you multiply 3x3 matrices, as well as with a new test

Also, I am not sure I understand why this test should fail:
item! {
#[test]
#[should_panic]
fn [<test_mat_mat_panic_4_ $t>]() {
    let a = vec![
        vec![1 as $t, 2 as $t, 3 as $t],
        vec![4 as $t, 5 as $t, 6 as $t],
        vec![3 as $t, 2 as $t, 1 as $t]
    ];
    let b = vec![
        vec![3 as $t, 2 as $t],
        vec![6 as $t, 5 as $t],
        vec![3 as $t, 2 as $t]
    ];
    a.dot(&b);
}
}

I've had a closer look and I agree, the transpose is complete nonsense. Not only that, the entire implementation makes no sense at all! This is quite embarrassing. I have no idea what I was thinking.
Sorry about any inconvenience this has caused and thanks for digging into this! I would appreciate it if you could replace that with your working implementation.

No worries, @stefan-k ! There are no "right" and "wrong" implementations, only implementations that works and ones that don't. I assume existing implementation works just fine for  BFGS, hence it is good enough. But I will replace it with another version, that can handle both my and BFGS use cases.

I'd argue the current implementation is definitely wrong, even for BFGS ;) The only reason why nobody noticed/complained is likely because people tend to (and should) use the ndarray/nalgebra math backends for matrix/linalg-heavy solvers. The Vec based math backend is neither efficient nor complete (for instance, ArgminInv is missing).
The ArgminDot implementations for both the nalgebra and ndarray backends should do the right thing, because they just forward the calls to the respective functions of the crates.

Hi @stefan-k! I have a first version of the CMA-ES implementation ready for your review in this PR. This version can definitely be improved in the future, but as a MVP I think it is good enough.


Cannot start automatically

After today's CN server update, it can not automatically start

same issue for me

same issue for me
I don't know if you solved it. For me, after I uninstalled and re-installed it, it appeared in the small box in the lower right corner of the taskbar (not directly pop-up window), click the Taskbar extension bar to find it.

the window pops up just like it's working for me, but in actual game playing it is not working properly

same issue for me
I don't know if you solved it. For me, after I uninstalled and re-installed it, it appeared in the small box in the lower right corner of the taskbar (not directly pop-up window), click the Taskbar extension bar to find it.

Oops, I think I have figured it out, I just removed the previous alex from my PC and then downloaded  a new one from github, reinstall just like usual. Then it works fine, idk the reason of it, but it just works.


Attempt to work around the zip download issue in Azure DevOps Windows CI

PR Summary
Attempt to work around the zip download issue in Azure DevOps Windows CI
PR Context

PR Checklist

[x] PR has a meaningful title

Use the present tense and imperative mood when describing your changes

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

If the PR is work in progress, please add the prefix WIP: or [ WIP ] to the beginning of the title (the WIP bot will keep its status check at Pending while the prefix is present) and remove the prefix when the PR is ready.

Breaking changes

[x] None
OR
[ ] Experimental feature(s) needed

[ ] Experimental feature name(s):

User-facing changes

[x] Not Applicable
OR
[ ] Documentation needed

[ ] Issue filed:

Testing - New and feature

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

@daxian-dbw Can you open a tracking bug to remove the workaround when the issue is fixed.

Merging without waiting for 24 hours to unblock CI.

Absolutely. Issue filed: #9912


What cam job did you use?

Hey, do you remember what CAM job you used to plot the Gerber and drill files? I wanted to recommend it to people for use with kitnic.it because it actually produces drill files that are to spec.

CAM Jobs are confusing to me so I ended up using Autodesk's eagle brd importer and then exporting the Gerber. You might be able to find what they used at circuits.iohttp://circuits.io or maybe you can ask them.
On May 26, 2017 12:29 AM, Kaspar Emanuel<EMAIL_ADDRESS>Hey, do you remember what CAM job you used to plot the Gerber and drill files? I wanted to recommend it to people for use with kitnic.ithttps://kitnic.it because it actually produces drill files that are to spec.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/UDXS/Arduitsy/issues/1, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AJmihKMhy4K4sGKrEGPb69UWCHNfQPBsks5r9gDhgaJpZM4Nm96-.


How to manage BGRA8 image encoding

Hello guys and thanks for the amazing work! I am currently using the elevation mapping tool with a ZedX Mini camera that uses the BGRA8 encoding for the colored image. This is the config file I am currently using:

#### Plugins ########
plugin_config_file: '$(rospack find elevation_mapping_cupy)/config/core/plugin_config.yaml'

#### Channel Fusions ########
pointcloud_channel_fusions:
  rgb: 'color'                # 'color' fusion is used for the 'rgb' channel
  default: 'average'          # 'average' fusion is used for channels not listed here

image_channel_fusions:
  rgb: 'color'                # 'color' fusion is used for the 'rgb' channel
  default: 'exponential'      # 'exponential' fusion is used for channels not listed here
  feat_.*: 'exponential'      # 'exponential' fusion is also used for any channel starting with 'feat_' Regular expressions can be used for channel names

subscribers:
  front_cam:
    topic_name: '/zedx_left/zed_node/point_cloud/cloud_registered'
    data_type: pointcloud
  color_cam: # for color camera
    topic_name: '/zedx_left/zed_node/rgb/image_rect_color'
    camera_info_topic_name: '/zedx_left/zed_node/rgb/camera_info'
    data_type: image

publishers:
  elevation_map_raw:
    layers: ['elevation', 'traversability', 'variance']
    basic_layers: ['elevation']
    fps: 5.0
  elevation_map_recordable:
   layers: ['elevation', 'traversability']
   basic_layers: ['elevation', 'traversability']
   fps: 2.0
  elevation_map_filter:
    layers: ['min_filter', 'smooth', 'inpaint', 'elevation']
    basic_layers: ['min_filter']
    fps: 3.0

However, when I run the code, it returns me the following error:
Mismatch in the size of multichannel_image (4), channels (1). Please check the input.
Current Channels: rgb

Digging in you code, it should support the bgra8 image encoding but I don't know how to fix this problem. Probably the issue is in the rgbfield of the Channel Fusion section of the config file but I am not sure how the code will react by simply modifying the config file field.
What should I do to use the elevation mapping with bgra8 endoded images?
Thank you very much.
Luca Rossini

Hello guys. Is there any news related to this topic?
Thank you

Hi, can you try setting the channels in the subscriber?
subscribers:
front_cam:
topic_name: '/zedx_left/zed_node/point_cloud/cloud_registered'
data_type: pointcloud
color_cam: # for color camera
topic_name: '/zedx_left/zed_node/rgb/image_rect_color'
camera_info_topic_name: '/zedx_left/zed_node/rgb/camera_info'
data_type: image
channels: ["rgb", "a"]
Something like this?

Hi @mktk1117 and thank you for your reply. So far, I avoided the problem converting  the encoding of my camera from bgra to rgb. Yet, I see a strange behavior when I generate the elevation mapping in correspondence of differently colored areas. For instance, the elevation mapping is not generated on areas of the ground where we have some circular orange adhesive patches and also in correspondence of a wooden box with a light color, despite the point cloud detects both areas. The floor is colored with a dark gery-ish color and I am wondering if the contrast in color influences the generation of the elevation map, and how it can be eventually disabled. Maybe your previous answer will fix also this behavior.
I cannot attach pictures right now but I will do it in the next days.
Thank you.
Luca

Hello there! I just took some pictures from the robot to give you a clearer idea of the problem. I moved the robot in front in front of the circular orange markers and in front of a light colored step and the elevation mapping is not returning any value in correspondence of these two areas.
Pointcloud and elevation mapping

Pointcloud

Elevation mapping

Pointcloud and elevation mapping

Pointcloud

Elevation mapping
Here you see that the elevation mapping is not constructed also in correspondence of the light colored tape on the floor

The funny thing is that I am able to detect the step and generate correctly the elevation map by covering the step with a darker layer:

Is it possible that the color encoding returns null values in correspondence of specific colors?
Thank you,
Luca

I just tried with the D435i Realsense (with rgb encoding) and it works fine.

Yes, the point cloud is in input to the elevation map of course and the elevation layer is used both for the height and color.
I don't know if I can actually deactivate the color transformer but here's a screenshot with the pointcloud visualized with color transformer intensity.

Now I will try to iterate inside the pointcloud and see if there are points with a=0 that maybe can be ignored by the elevation_mapping tool even if you do not use the rgba fields for this purpose.
Thank you for your help :)

I just made a simple script to remove all points with a < 255 and none of the points was removed and so the problem is not related to transparent points.

If you have a rosbag to try, could you share it?

Hello @mktk1117 and sorry for the late reply, I was out of the office and somehow I missed the notification of your reply. Here's a bag file with the pointcloud taken from the ZedX Mini:
https://drive.google.com/file/d/1M5WfcTheIMeCIR9ijf6EP84UbcAxACy_/view?usp=sharing
This is a pointcloud of the of the camera facing the light colored wooden step. Please run rosrun tf static_transform_publisher 0 0 0 0 0 0 map zedx_left_left_camera_frame 30to visualize it on rViz in case you need it.


Add templated link for regulates closure in context of isa_partof world

From @cmungall , more or less: from pages like http://amigo-exp.geneontology.io/amigo/term/GO:0006915 , add wired-in link to: http://amigo-exp.geneontology.io/amigo/search/annotation?q=:&fq=regulates_closure:%22GO:0006915%22&sfq=document_category:%22annotation%22 below term info, where the other links are.

@cmungall Amusingly, slightly less trivial now as the code is less hard-wired now ;) But still super easy.
Do you really just want the one, or do you want a "regulates" version of all the links?

@cmungall I believe what was requested (more or less--feel free to have me provide less options) is now on amigo-exp.


Split Testcase Steps Field into 3: Setup Steps, Action Steps, Cleanup Steps

In the test case details window, instead of 1 text box for Steps, make 3 text boxes - 1 each for Setup, Action, and Cleanup steps
Remove "Add Step" button
Remove "Precondition" text box - all tests should be able to run independently and in any order
Remove "Expectations"  section
Make each text box big enough to handle 200 lines maximum

Won't fix


ADF public SDK change for sprint 49

Add several linked service type properties

Hi @jackmagic313, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (jikma). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, or work for Microsoft Open Technologies, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;


Touch events bleed through divs to the map when they are animated over the map

I'm submitting a ...  (check one with "x")

[ ] question
[x] any problem or bug report
[ ] feature request

If you choose 'problem or bug report', please select OS:  (check one with "x")

[x] Android
[x] iOS

cordova information:  (run $> cordova plugin list)
branch-cordova-sdk 2.6.0 "branch-cordova-sdk"
com.adjust.sdk 4.12.5 "Adjust"
com.googlemaps.ios 2.6.0 "Google Maps SDK for iOS"
com.testfairy.cordova-plugin 2.9.0 "TestFairy Plugin"
cordova-android-play-services-gradle-release 1.2.1 "cordova-android-play-services-gradle-release"
cordova-clipboard 1.1.1 "Clipboard"
cordova-plugin-actionsheet 2.3.3 "ActionSheet"
cordova-plugin-advanced-http 1.11.1 "Advanced HTTP plugin"
cordova-plugin-allow-backup 0.0.2 "cordova-plugin-allow-backup"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-badge 0.8.7 "Badge"
cordova-plugin-calendar 5.0.0 "Calendar"
cordova-plugin-camera 3.0.0 "Camera"
cordova-plugin-datepicker 0.9.3 "DatePicker"
cordova-plugin-device 1.1.7 "Device"
cordova-plugin-dialogs 1.3.4 "Notification"
cordova-plugin-facebook4 1.9.1 "Facebook Connect"
cordova-plugin-file 6.0.1 "File"
cordova-plugin-firebase 1.0.0 "Google Firebase Plugin"
cordova-plugin-googlemaps 2.3.0-beta-20180430-1841 "cordova-plugin-googlemaps"
cordova-plugin-googleplus 5.3.0 "Google SignIn"
cordova-plugin-inappbrowser 1.7.2 "InAppBrowser"
cordova-plugin-ionic-webview 1.2.0 "cordova-plugin-ionic-webview"
cordova-plugin-market 1.2.0 "Market"
cordova-plugin-network-information 2.0.1 "Network Information"
cordova-plugin-screen-orientation 2.0.2 "Screen Orientation"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.3.0 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-plugin-x-socialsharing 5.3.2 "SocialSharing"
cordova-sqlite-storage 2.3.0 "Cordova sqlite storage plugin"
es6-promise-plugin 4.1.0 "Promise"
ionic-plugin-keyboard 2.2.1 "Keyboard"
uk.co.workingedge.phonegap.plugin.launchnavigator 4.2.0 "Launch Navigator"

If you use @ionic-native/google-maps, please tell the package.json (only @ionic-native/core and @ionic-native/google-maps are fine mostly)
@ionic-native/core: "4.4.0"
@ionic-native/google-maps: "^4.7.0"

Current behavior:

In the page that has the map, I have several buttons that when you tap them they enable (with ngIf) and slide in/fade in various divs (such as calendars or option selectors) over the map (no page changes). Tapping on those buttons again will disable the divs. When I tap inside the overlayed divs, the map behind them receives the touches instead of the divs.
Expected behavior:

The divs should receive the touches, and the map shouldn't receive them/move etc.
Additional information:

Any div that exists already in the page over the map (and is not animated in), will correctly receive the touches
Pushing pages to the stack works perfectly as well.
This has been a problem again in the past, but at some point it was fixed. The last commit that I have tried where the problem does not exist is https://github.com/mapsplugin/cordova-plugin-googlemaps/commit/5f4a80a295a7a695c8aeef354d7d59cb152c6790 from April 3rd. I couldn't test which commit exactly introduced the problem as from commit https://github.com/mapsplugin/cordova-plugin-googlemaps/commit/c3574354deaa033adc86ec65c5571b16ba7aa0f1 to commit https://github.com/mapsplugin/cordova-plugin-googlemaps/commit/32a9f3da78613cce5c05290151ca98cc869a89d0 my app would not launch since multiple_maps would cause a javascript error (instance[output.propName].subscribe is not a function)
I tried to work around this problem by calling setClickable(false) when I animate the div in, and setClickable(true) when I animate the div out. This way the touches go to the divs, but when I call setClickable(true), the map will not receive any touches immediately. I first have to touch any other element outside the map and only then the map will start receiving touches again. I also tried putting setClickable(true) in a timeout so it is called after the divs have transitioned out, but the behavior is the same.

Do not animate on map.

I tried cordova.fireDocumentEvent('plugin_touch') but it doesn't make any difference. However there is definitely something wrong with what happens in the transitionEnd events in the plugin, and it looks like the touchable area detection of the plugin, happens for the previous animationEnd, and not the current.
Example:
Map is full screen (100% width / 100% height)
Div 1 and Div 2 are 100% width / 50% height and have z-index larger than the map.
Both Div 1 and Div 2 are positioned absolute at top: 0 and have translate3d 0, -100%, 0.
Initially, the map moves ok wherever I touch it.
I animate Div 1 to translate3d 0,0,0  so it covers the top half of the map.

The map moves wherever I touch it, even if I touch Div 1.

I animate Div 1 again back to translate3d 0, -100%, 0 so the map is fully visible again.

The map does not move if I touch the top half of it, but moves ok if I touch the bottom half of it.

I animate Div 1 again to translate3d 0, 0, 0 so it covers the top half of the map.

The map moves wherever I touch it, even if I touch Div 1.

I animate Div 2 to translate3d 0, 0, 0. (on top of Div 1 so it too covers the top half of the map.).

The map does not move if I touch div 2, but moves ok if I touch the bottom half of the map.

I animate Div 2 back to translate3d 0, -100%, 0.

The map moves wherever I touch it, even if I touch Div 1.

I animate Div 1 again back to translate3d 0, -100%, 0 so the map is fully visible again.

The map does not move if I touch the top half of it, but moves ok if I touch the bottom half of it.

All animations are done with css (transition: all 0.3s ease-out).
So it looks like that the touchable area calculation of the map is one transition behind.

As I said, If you can't solve your problem by yourself, please share your project files on github.

I have found a workaround by checking your commits so I have solved my problem, but I am trying to help you pinpoint the bug in the plugin.
I had to use cordova.fireDocumentEvent('plugin_touch', {force: true}) after the animation ends (it will not work without force: true ).
So I suppose this was removed at some point from the plugin code in the transitionEnd touchable area detection. If this was done on purpose because it conflicts with some other mechanism of the plugin, then maybe it should be exposed as a method of the map plugin and be included in the documentation (like let's say  recalculateTouchArea(), which would be a wrapper for the plugin_touch cordova event.

Since there is no contribution, no help.

Since I cannot share my project files due to NDA, I have created a very simple sample project where the bug I am describing is demonstrated here https://github.com/aMUSiC/gmapbugs
(You'll need to use your own google keys for the map though)
Click on the Toggle button, and it will animate in a div to cover half of the map. You'll notice that the map will still move if you touch your finger on the blue div. Then click on the toggle button again to hide the div. You'll notice that the map does not move if you touch it where the div was before.

Thank you for creating a project that reproduce the issue. That's a contribution. I will check it tomorrow.

Okay, I fixed the issue. Sharing the project that reproduce an issue is good way to figure out the root of the problem.
Just adding some code in somewhere is not enough, because I can not verify the way is good or not.
Reinstall the plugin from the multiple_maps branch, you can touch the overlay without firing the plugin_touch event. Please try it, and let me know the new code works for you.

I confirm that the fix works perfectly, both in the sample project and in my production project.
I understand that an actual project is much more helpful both to display the bug and help you fix it. Now that I have one in place, it will be easy for me too to update it to demonstrate any potential bugs I stumble upon in the future.
Thank you for fixing this. Unless you'd like more information from me, you can close this ticket.


Note regarding multi-table inheritance field names

The warning raised in this case (models.E006) is a bit obscure, so a note in the docs seems appropriate.
For reference, the error message is
The field 'restaurant' clashes with the field 'restaurant' from model 'mymodel.Place'.

I think this is the bug described in https://code.djangoproject.com/ticket/28110?

Ah, yes that's it. If the error message was improved this documentation tweak wouldn't be necessary

Although, perhaps it's worth noting in the docs anyway? I'll leave that decision to the maintainers. Feel free to close if you think this PR is not needed.


remove compiler warnings, whitespace cleanup

Introduces NABO_UNUSED macro to bypass -Wunused-parameter
in the trap methods
CXX11: register is deprecated, removed
Strip trailing whitespace on all source files

I can undo this and just revive the stuff related to compiler warnings, I've got my editor setup to do this by default so it felt weird to submit a patch with just nabo.h and index_heap.h getting changed but not the others.  If you would like the compiler fixes without the whitespace stuff, let me know!

okay to test

test this please


pdns-recursor: 4.1.12 -> 4.1.13

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/pdns-recursor/versions.
meta.description for pdns-recursor is: '"A recursive DNS server"'.
meta.homepage for pdns-recursor is: '"https://www.powerdns.com/"

Checks done (click to expand)

built on NixOS
/bin/sh passed the binary check.
1 of 1 passed binary check by having a zero exit code.
0 of 1 passed binary check by having the new version present in output.
found 4.1.13 with grep in /nix/store/ar3rsz37fp1n3g165m28bkg2wjpnn2zd-pdns-recursor-4.1.13
directory tree listing: https://gist.github.com/ecf1093f158fee00ee828ddce0fe44a4
du listing: https://gist.github.com/211e45d0b7b69799aaa216ace8497143

Rebuild report (if merged into master) (click to expand)

3 total rebuild path(s)
1 package rebuild(s)
1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
0 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
pdns-recursor

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/ar3rsz37fp1n3g165m28bkg2wjpnn2zd-pdns-recursor-4.1.13 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A pdns-recursor https://github.com/r-ryantm/nixpkgs/archive/5215f3e081a13f67eb3e2a70d68cf5e862bc8c37.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/ar3rsz37fp1n3g165m28bkg2wjpnn2zd-pdns-recursor-4.1.13
ls -la /nix/store/ar3rsz37fp1n3g165m28bkg2wjpnn2zd-pdns-recursor-4.1.13/bin

cc @rnhmjoj for testing.

@GrahamcOfBorg test pdns-recursor


Do not consume src buffer before decoding succeeds

#270

This is fine in the case of the FrameDecoder because we have a LengthDelimitedCodec that already ensures a complete frame is received before attempting to decode it.


KNN returns incorrect values unless tree is Balance()d

This might be a case of "using it wrong", but KNN does not always return the nearest neighbour(s) unless the tree is balanced before the query.
My understanding is that KNN search might be slow/not-optimal on an unbalanced tree, but should still work correctly. If this isn't the case then just adding that in the doc for KNN is likely enough.
This issue is demonstrated by the attached test program, which iteratively mutates a random tree, and makes two KNN queries against it without any modifications to the tree in-between. The first has 'k' set to some low number (few), and the second has 'k' set to a higher number (many).
I would expect the first 'k' entries in the many query to match the entries in the few query, but the few query often omits the closest neighbours. In the output below, you can see that the t.KNN(p, 1) says that a point at a distance of 14.32 is the closest, whereas t.KNN(p, 10) gives the correct result of 11.66. After balancing, the results are correct. The value of few isn't critical - in my tests, any value of k < (number of entries - 1) shows the problem, but less frequently than smaller 'k's
Getting 1 NNs out of 10 entries
Failure on iteration 618
KNN((186.00, 218.00), 1)
   NN 0: distance((186.00, 218.00)->(172.00, 215.00)) = 14.32
KNN((186.00, 218.00), 10)
   NN 0: distance((186.00, 218.00)->(176.00, 212.00)) = 11.66
   NN 1: distance((186.00, 218.00)->(172.00, 215.00)) = 14.32
   NN 2: distance((186.00, 218.00)->(206.00, 196.00)) = 29.73
   NN 3: distance((186.00, 218.00)->(214.00, 188.00)) = 41.04
   NN 4: distance((186.00, 218.00)->(218.00, 253.00)) = 47.42
   NN 5: distance((186.00, 218.00)->(269.00, 176.00)) = 93.02
   NN 6: distance((186.00, 218.00)->(276.00, 181.00)) = 97.31
   NN 7: distance((186.00, 218.00)->(279.00, 264.00)) = 103.75
   NN 8: distance((186.00, 218.00)->(287.00, 244.00)) = 104.29
   NN 9: distance((186.00, 218.00)->(299.00, 205.00)) = 113.75
After balance:
KNN((186.00, 218.00), 1)
   NN 0: distance((186.00, 218.00)->(176.00, 212.00)) = 11.66
KNN((186.00, 218.00), 10)
   NN 0: distance((186.00, 218.00)->(176.00, 212.00)) = 11.66
   NN 1: distance((186.00, 218.00)->(172.00, 215.00)) = 14.32
   NN 2: distance((186.00, 218.00)->(206.00, 196.00)) = 29.73
   NN 3: distance((186.00, 218.00)->(214.00, 188.00)) = 41.04
   NN 4: distance((186.00, 218.00)->(218.00, 253.00)) = 47.42
   NN 5: distance((186.00, 218.00)->(269.00, 176.00)) = 93.02
   NN 6: distance((186.00, 218.00)->(276.00, 181.00)) = 97.31
   NN 7: distance((186.00, 218.00)->(279.00, 264.00)) = 103.75
   NN 8: distance((186.00, 218.00)->(287.00, 244.00)) = 104.29
   NN 9: distance((186.00, 218.00)->(299.00, 205.00)) = 113.75

Code follows:
package main

import (
	"fmt"
	"math"
	"math/rand"
	"time"

	"github.com/kyroy/kdtree"
	"github.com/kyroy/kdtree/points"
)

func distance(a, b *points.Point2D) float64 {
	return math.Sqrt(math.Pow(a.X - b.X, 2) + math.Pow(a.Y - b.Y, 2))
}

func dumpNNs(p kdtree.Point, nns []kdtree.Point) {
	p2d1 := p.(*points.Point2D)
	fmt.Printf("KNN((%3.2f, %3.2f), %d)\n", p2d1.X, p2d1.Y, len(nns))

	for i, n := range nns {
		p2d2 := n.(*points.Point2D)
		fmt.Printf("   NN %d: distance((%3.2f, %3.2f)->(%3.2f, %3.2f)) = %3.2f\n",
			i, p2d1.X, p2d1.Y, p2d2.X, p2d2.Y, distance(p2d1, p2d2))
	}
}

func main() {
	w, h := 300, 300
	maxSize := 10
	maxTime := time.Minute

	t := kdtree.New([]kdtree.Point{})
	arr := make([]kdtree.Point, 0, maxSize)

	many := maxSize
	few := maxSize - 1

	for ; few > 0; few-- {
		fmt.Printf("Getting %d NNs out of %d entries\n", few, maxSize)
		start := time.Now()
		for i := 0; ; i++ {
			p := &points.Point2D{
				X: float64(rand.Intn(w / 2) + w / 2),
				Y: float64(rand.Intn(h / 2) + h / 2),
			}

			// Two KNN queries
			fewNN := t.KNN(p, few)
			manyNN := t.KNN(p, many)

			// Check if the nearest is the same
			if len(fewNN) > 0 {
				if distance(p, fewNN[0].(*points.Point2D)) >
					distance(p, manyNN[0].(*points.Point2D)) {
					fmt.Println("Failure on iteration", i)
					dumpNNs(p, fewNN)
					dumpNNs(p, manyNN)

					// Balance the tree and try again
					t.Balance()
					fmt.Println("After balance:")
					fewNN = t.KNN(p, few)
					manyNN = t.KNN(p, many)
					dumpNNs(p, fewNN)
					dumpNNs(p, manyNN)

					break
				}
			}

			// Add in the new point
			arr = append(arr, p)
			//fmt.Printf("Insert (%3.2f, %3.2f)\n", p.X, p.Y)
			t.Insert(p)

			// Limit the max number of elements - which will also
			// introduce some churn in the tree
			if len(arr) > maxSize {
				idx := rand.Intn(len(arr))
				//fmt.Printf("Remove (%3.2f, %3.2f)\n", p.X, p.Y)
				t.Remove(arr[idx])
				p = arr[idx].(*points.Point2D)
				arr[idx] = arr[len(arr)-1]
				arr = arr[:len(arr)-1]
			}

			if since := time.Since(start); since > maxTime {
				fmt.Printf("No failure after %d iterations (%v)\n", i, since)
				break
			}
		}
		fmt.Println("================================================")
		t.Balance()
	}
}

Hi @usedbytes,
Thank you for the very detailed description. It has been some time since I worked on the project. If I remember correctly, it should still return the correct neighbours.
Within the next days, I will hopefully have the time to look deeper into the problem.

Hi, ok thanks for the confirmation. My suspicion is that it's related to node removal.
I'm happy to have a go at debugging further and trying to fix this. I'm planning to take a closer look this evening. Now that I've got an isolated reproducer, I think I should be able to narrow it down to a specific tree change

I got a compact reproducer and dumped the trees. The image shows the tree before the red node is removed, and then the tree after the red node is removed.

You can see that after removal, the left-most leaf has a larger 'Y' value (green) than its parent (blue), however its parent should be indexing on 'Y'.
I hope the fix in the pull request is the correct thing to do, it does seem to fix the issue. I added my specific test-case and a randomised one. They fail without the fix and pass with it.


Ability to insert child entity items?

If I have a class, Customer which contains a List Orders. It seems that there is no way of specifying that I would like this also saved and instead I need to write a separate Insert statement for Orders.  Not terrible, and this might be by design? but would be neat for Simple.Data to handle that too :)

Doing that kind of thing becomes enormously complicated, having to watch out for circular references and such-like. Also you would expect Orders that had been removed from the List to be deleted from the database, which requires tracking of List deletions, and it's all just too much. So I'm afraid you'll just have to be explicit, although remembed that you can just call db.Orders.Upsert(customer.Orders) (making sure you've set the CustomerId value first, of course!).

Ok, fair enough :)


Transaction Pagination on the Blockchain Sidetree

This is a question around pagination of the GET /v1.0/transactions endpoint.
https://github.com/decentralized-identity/sidetree-core/blob/master/docs/implementation.md#request-example
The sidetree protocol includes a afterBlockNumber field for paginating through GET transactions requests.  This is specific to Bitcoin as the Ethereum Sidetree will be using other methods for specifying pagination location.
Could we rename that field to a more generic name?  Fwiw, on Ethereum the anchor file hashes will all be saved in one smart contract and stored within an array.  So the pagination value would point to an index within that array.

Agree on making interface more generic. That specific API has already been reworked yesterday and the next pull request (coming out today/tomorrow) will look more generic, you can see the updated spec here if you cannot wait.
The essence of the change is that the API now will look like:
GET /<api-version>/transactions?after=<transaction-number>

Commit https://github.com/decentralized-identity/sidetree-core/commit/0098a9458042ec41ce011dbab0b52f9782e44cb8 merged into master.
Closing this question, feel free to reopen if needed.


First_name and last_name should use the parse method - :ru locale

[x] Fixed bug reported in the issue https://github.com/stympy/faker/issues/1154: we were basically using the wrong method, that's why it was printing the "\#{female_last_name}" or "\#{male_last_name}" outputs
[x] Added two missing tests for first_name and last_name methods.

ps: I think this PR might be related to this one https://github.com/stympy/faker/issues/1024 as well

Merged successfully 👍


Enhance the VCIO UI to make use of all available screen space

It is time to enhance the VCIO UI to be more flexible and make use of all available screen space.  (This should be done in all AboutCode.org projects.)

A related consideration is responsive design, including an issue that came up yesterday while I was working on issue 1228 -- we appear to have nearly 3000 instances of px (I'm the culprit) that will need to be converted to rem (in custom.css and mostly as width settings in a number of Jinja2 templates).
(I'm hoping there is some way we can automate the conversion process -- which might consist of dividing each px by 16 if 16px is our default font size and rounding in some manner, and of course agreeing to the number of decimal places for each resulting rem. ;-)

Note that the bulma-0.9.4.min.css used in SCIO has 564 instances of px and 514 of rem.  The bulma.css we use in VCIO has a similar number of instances.

@DennisClark @pombredanne and colleagues:  I've just increased the CSS width settings to use the same width as ScanCode.io and will push the changes and open a PR shortly.  This is VCIO before:

and after:

and this is the current ScanCode.io:


Persistent log does not work on centos-bootc-dev:stream9 (stream9.20240210.0)

Persistent log does not work on centos-bootc-dev:stream9 (stream9.20240210.0)
System reboot once so there should be two items in journalctl --list-boots
journalctl --list-boots -q
0 c13ec31950c847aaafbdd0ab7e4db64c Sun 2024-02-11 04:19:49 UTC Sun 2024-02-11 04:20:29 UTC

last reboot
reboot   system boot  5.14.0-412.el9.x Sun Feb 11 04:19   still running
reboot   system boot  5.14.0-412.el9.x Sun Feb 11 04:16 - 04:19  (00:02)

But centos-bootc:stream9 (stream9.20240210.0) does not have this issue. And the previous image, centos-bootc-dev:stream9 (stream9.20240209.0), did not have this issue as well. https://github.com/virt-s1/bootc-workflow-report/projects/1
Both centos-bootc:stream9 and centos-bootc-dev:stream9 are built from same CS9 repo CentOS-Stream-9-20240207.d.0. But the result is different.

Hm, the behavior here should just come from the /usr/lib/systemd/journald.conf.d/10-centos-bootc-persistent.conf dropin, not aware of any reason this should be different.

Can't find this issue since stream9.20240212.0 from compose CentOS-Stream-9-20240212.d.0. The recent changes should not be related with persistent log.


Add support for anyOf

Fixes #567
Renders anyOf options as children, similar to object rendering, with a naming convention:

Definitely open to alternatives/suggestions on how to render it!

Thanks! Make sure to update the test snapshots ;)

I personally love to add a any of: label, and a list of object collapsible below.

Those sound like good idea to me but I'm a little confused. Here's what it currently looks like:

Where would you want to see "any of:" here?
And the type field, to my understanding, is rendering "Any properties in object, object, object | null". Are you saying that should be "enum" instead?

Correct, for the any of label, I mean:

Type name
Description
Any of:

Do you mean like this?

Hmm yes but without the wrapper of Object type collapsible and the "prompt (option n)" label.

You can open the "allow edits from maintainers" option so that I can show it to you

That'd be great! I just gave you write access to https://github.com/braintrustdata/fumadocs. Does that allow you to?

Thanks for contributing! I noticed other problems like self-referencing schemas and object types mentioned in other fields (like allOf and oneOf), since it's a bit complicated, I'll make a minor release on my own instead.

The release is nice but the reason I didn't originally do it that way is that if you omit the type information, for non-object children, you get a suboptimal experience:

Eg. in this case, the third option is "null", but since it's not an object nor does it have children, it just shows up as an empty "Object type"

I am running on a fork (for bundling reasons) and using it for all packages -- this is the latest dev branch (6d9526c36590693ad53ecd8454f62fa1cdb2b9ee)


colorls: init at 1.1.1

Motivation for this change
I want to use colorls without downloading it (including ruby and necessary fonts) manually.
Things done

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

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[X] Assured whether relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

@symphorien If the merge conflict is fixed do you approve this PR?
@SomeDer Are you able to continue with this PR and fix the merge conflict?

Looks good to me (but I am not familiar with ruby and I have not even built the derivation).

@SomeDer Can you please git squash?
@manveru Are you up for some review so we can merge?

colorls has been added in #62226


SO-4702: Avoid creating duplicate issues in MRCM constraint type rule

Codecov Report

Merging #772 (65e2624) into 7.x (438cd66) will decrease coverage by 0.00%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##                7.x     #772      +/-   ##
============================================
- Coverage     58.85%   58.85%   -0.01%
- Complexity    12821    12822       +1
============================================
  Files          1774     1774
  Lines         65501    65501
  Branches       6460     6460
============================================
- Hits          38550    38549       -1
  Misses        23939    23939
- Partials       3012     3013       +1

Impacted Files
Coverage Δ
Complexity Δ

...onal/snowowl/snomed/core/tree/TerminologyTree.java
80.76% <0.00%> (-1.93%)
20.00% <0.00%> (-1.00%)

.../b2international/index/es/client/EsClientBase.java
65.47% <0.00%> (-1.20%)
14.00% <0.00%> (ø%)

.../snomed/core/ecl/SnomedEclRefinementEvaluator.java
87.16% <0.00%> (-0.60%)
108.00% <0.00%> (ø%)

...index/src/com/b2international/index/es/EsNode.java
85.88% <0.00%> (+1.17%)
16.00% <0.00%> (+1.00%)

...wl/fhir/core/model/conceptmap/TranslateResult.java
83.87% <0.00%> (+6.45%)
7.00% <0.00%> (+1.00%)

Continue to review full report at Codecov.

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


Pasting a value in a select cell that is not in the select list breaks the view

When you paste a value in a select field that is not in the source of the select component the view will break leaving you with a string undefined being shown.

I am having the same issue. however the demo grid does not have this issue. have you been able to solve this problem?

Should be fixed now.


doc: cleaning up the readme.md

Cleaning up the language and formatting in the
README.md document file.
Signed-off-by: Pekka Niskanen<EMAIL_ADDRESS>

Not ready for review yet. Need to first figure out whether we can use the abbreviation NCS. @carlescufi seems that I cannot add reviewers. Am I missing some rights or something?

Not ready for review yet. Need to first figure out whether we can use the abbreviation NCS. @carlescufi seems that I cannot add reviewers. Am I missing some rights or something?

We cannot use the abbreviation because this is not rendered by Sphinx, it's just an .md file rendered by GitHub itself. The guide can be found here:
https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax
Try again to add reviewers, should work now

Thanks for the PR @peknis! This is great stuff.

we should upstream changes first

Are you expecting any actions from tech pubs?

we should upstream changes first

Are you expecting any actions from tech pubs?

maybe open a PR here: https://github.com/zephyrproject-rtos/example-application (we'll sync this fork periodically, so any generic changes should go there first)

Here goes my PR to the Zephyr example application https://github.com/zephyrproject-rtos/example-application/pull/29

shouldn't we pull upstream changes, revert previous noup and re-apply it with changes?

shouldn't we pull upstream changes, revert previous noup and re-apply it with changes?

Hmm. The main branch already has the upstream changes. @peknis did you rebase this PR against the current main?

Ah ok I see what you mean now @gmarull.
@peknis, can you please send all the changes that are not NCS-specific upstream first?

Ah ok I see what you mean now @gmarull, @peknis added some additional changes that should go upstream instead.
@peknis, can you please send all the changes that are not NCS-specific upstream first?

this was already done, right? I mean to keep a single noup.

Ah ok I see what you mean now @gmarull, @peknis added some additional changes that should go upstream instead.
@peknis, can you please send all the changes that are not NCS-specific upstream first?

this was already done, right? I mean to keep a single noup.

I believe I have done everything needed already.

Ah ok I see what you mean now @gmarull, @peknis added some additional changes that should go upstream instead.
@peknis, can you please send all the changes that are not NCS-specific upstream first?

this was already done, right? I mean to keep a single noup.

It was done but @peknis has added more changes in this PR that are not NCS-specific.
After all is done I will rebase to squash @peknis' commit into the single noup.


Cleanup of blocks at app close?

Previous discussion on a test where an effect exited without having run its cleanup:
@cmfcmf
This test makes me wonder whether we should cleanup effects when react is garbage collected.
@tom95
Interesting discussion. I believe for e.g. the Godot host this could lead to troubles, as the point where React is actually garbage collected Godot is most likely already closed. However, a shutdown event of some sort that the hosts could send could be actually quite beneficial (we already experience this with custom allocations in Godot where Godot now no longer cleanly exits because cleanup blocks don't release their references). I'll open an issue for further tracking.

Fixed in 8420b0079ff98b978fbff1f43fd1221a9292e813 (see also https://github.com/hpi-swa-lab/pivr/commit/d082939c1e4490dd1176830bbf7704a7e6b91f2d, cc @leogeier).


Link to Imandra

Description of/link to Imandra automated reasoning engine

Merged. Thanks for the new link!


Add a config section to be able to define container registries (host/login/password)

Problem:
Currently, there needs to be a way to specify container registries (Azure, Google, DockerHub, Amazon, others?) host/login/password in TES configuration.
Solution 1 :

Review whether this should be added to the TES spec.  Maybe add to Resources section or consider backend_parameters.  Consult with @vsmalladi

**Solution 2: **

Add a TES config section to be able to supply a list of the tuple:

"ContainerRegistryHostname", "ContainerRegistryLogin", "ContainerRegistryPassword"

Validate that all properties of the tuple contain a value at startup, and throw an exception if not and TES shall not start.
Consider whether there are additional properties needed to support the following container registry providers: (Azure, Google, DockerHub, Amazon, others?).
TES shall parse the image name to determine whether the container credentials were provided in configuration, and if so, it shall use the provided credentials to connect.

@MattMcL4475 current discussion in TES Spec: TES Issue #167


Issue 39 improve logging

This PR adds additional logging throughout the Gratibot application. This should assist debugging issues and identifying solutions for reoccurring problems. This PR also includes changes to make use of logging levels and sets our nonprod environment to used debug by default.
The most pressing change is that I updated the log format to use prettyPrint as it makes it much easier to parse logs. Open to changing to strict JSON to support querying on Azure but I figured that belonged in a separate PR.

Looks like codecov is taking a hit due to the new logging adding additional lines, causing a decrease in codecov patch status

Not strictly in scope for this PR, but I'd like to have some discussion about tracking a request through the logging, such as by logging the message id (timestamp) with each log message generated from the request.
I don't know the best way to go about that without passing around a lot of variables, but it's something that would be really valuable.


Implementation of the exit_process for Actor

Context
In my journey of learning how the OTP works, when I tried to send an exit signal to an Actor I noticed that the exit_process wasn't fully implemented. So, I tried to give it a try and implement it based on:

https://erlang.org/documentation/doc-4.9.1/doc/design_principles/sup_princ.html#shutdown
https://www.erlang.org/doc/apps/erts/erlang#exit/2
https://erlang.org/pipermail/erlang-questions/2005-April/014993.html

Apologies in advance if this isn't the correct way of implementing the Shutdown protocol. I will be more than happy to amend the PR with a more correct Shutdown protocol based on the received feedback.
Changes

linting on the otp/actor.gleam (I can move this to a separate PR, if necessary).
exit_process now supports Normal, Killed and Abnormal exit reasons.
fix the broken failed_init_test: this test was blocking the whole actor test from running due to an unhandled crash.

  Compiling gleam_otp
   Compiled in 0.29s
    Running gleam_otp_test.main
....
Pending:
  undefined
    %% Related process exited with reason: {abnormal,<<"not enough wiggles">>}

tests for the exit_process implementation: this covers the Normal, Killed and Abnormal reasons.

Hi, @bighelmet7! I ran into the same issue recently, but didn't spot your PR when looking for relevant PRs, as the title didn't include any references to the public functionality that was misbehaving (which I would say is actor.Stop). exit_process is private function in the module, so when I was first looking for relevant issues, I didn't recognize this as related.
I haven't been doing much open source stuff on GitHub recently (other than my own projects), so I also didn't think of opening an issue in addition to PR, to bring more visibility for what is actually being fixed.
@lpil it might be a good idea to add CONTRIBUTING.md files similar to the one in the main Gleam repo to encourage opening descriptive issues in addition to PRs, to avoid issues like this in the future.
As for the content of the PR itself, comparing to my PR, the main difference in the implementation seems to be that here we're still exiting the process with an abnormal reason after a failed init. In my opinion, this should not happen, as the error is already included in the return value of start_spec, so a user of the function should not need to handle any abnormal exit signals in addition to this.
Also, I'm using selecting_trapped_exits in tests to avoid having to start the actor in a separate unlinked process. However, when doing this, I ran into this issue, which complicated things.


feat: Support CodeScanner and Video simultaneously

What
WIP

Changes

Tested on

Related issues

Very nice -- looking forward


7za.exe can not extract file because the file path is not correct

12/05/2018 00:13:30 : [ERROR] Unexpected output from 7za.exe when creating C:\LISAv2\DVAO52284\C:\Windows\TEMP\PERF-DPDK-FWD-PPS-DS15-636795656101414519.zip :
12/05/2018 00:13:30 : [ERROR]  7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18 Scanning  Creating archive C:\LISAv2\DVAO52284\C:\Windows\TEMP\PERF-DPDK-FWD-PPS-DS15-636795656101414519.zip   Error: 7-Zip cannot open file C:\LISAv2\DVAO52284\C:\Windows\TEMP\PERF-DPDK-FWD-PPS-DS15-636795656101414519.zip The filename, directory name, or volume label syntax is incorrect.     System error: Unspecified error
12/05/2018 00:13:30 : [INFO ] Using user provided storage account key.
Get-Item : Cannot find path
'C:\Windows\TEMP\PERF-DPDK-FWD-PPS-DS15-636795656101414519.zip' because it
does not exist.
At C:\LISAv2\DVAO52284\Utilities\UploadFilesToStorageAccount.ps1:66 char:32

    $LocalFileProperties = Get-Item -Path $fileName

                           ~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (C:\Windows\TEMP...56101414519.z
ip:String) [Get-Item], ItemNotFoundException
FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetIt
emCommand

@juhlee-microsoft How to repro it?

@juhlee-microsoft
I think the problem is with the double paths -> C:\LISAv2\DVAO52284\C:\Windows\TEMP\PERF-DPDK-FWD-PPS-DS15-636795656101414519.zip ?

Odd, I can't repro it locally.

Not sure about this particular issue. But I had too many problems with 7za in the past. Make sure you use the version that didn't have problems before.

@santoshx  as you can see in the logs, 7z is not the issue here, the path is the problem.

Correct

From: Adrian Vladu<EMAIL_ADDRESS>Sent: Wednesday, December 5, 2018 1:03:17 AM
To: LIS/LISAv2
Cc: Ju-Hyoung Lee; Mention
Subject: Re: [LIS/LISAv2] 7za.exe can not extract file because the file path is not correct (#492)
@santoshxhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fsantoshx&data=02|01|juhlee%40microsoft.com|c2e20e3ab461448529ee08d65a907f8f|72f988bf86f141af91ab2d7cd011db47|1|0|636795973996479603&sdata=Jv2pbPdGESMY2FU3cMFZcSpxd1NWruzHqHc5MYjlwZ0%3D&reserved=0 as you can see in the logs, 7z is not the issue here, the path is the problem.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FLIS%2FLISAv2%2Fissues%2F492%23issuecomment-444410472&data=02|01|juhlee%40microsoft.com|c2e20e3ab461448529ee08d65a907f8f|72f988bf86f141af91ab2d7cd011db47|1|0|636795973996479603&sdata=I%2FaeWSUgzGeK4FByy0VkSOTU7RkNN8Uvc689asuiErU%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAWAC12BZjjXONFs75Axul8nk1CLS1imYks5u14vVgaJpZM4ZBxlM&data=02|01|juhlee%40microsoft.com|c2e20e3ab461448529ee08d65a907f8f|72f988bf86f141af91ab2d7cd011db47|1|0|636795973996489608&sdata=lrCEzqddABxdxqGNNZfAleZFrqDmdxmCqFe2fpSztsA%3D&reserved=0.

Have not ever had this binary version issue. Can you write down detail of your error if different? It is nice to open an issue if you can not fix it immediately, Santosh

From: Santosh<EMAIL_ADDRESS>Sent: Wednesday, December 5, 2018 1:02 AM
To: LIS/LISAv2
Cc: Ju-Hyoung Lee; Mention
Subject: Re: [LIS/LISAv2] 7za.exe can not extract file because the file path is not correct (#492)
Not sure about this particular issue. But I had too many problems with 7za in the past. Make sure you use the version that didn't have problems before.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FLIS%2FLISAv2%2Fissues%2F492%23issuecomment-444410222&data=02|01|juhlee%40microsoft.com|07506a89272f4727b77008d65a9060a6|72f988bf86f141af91ab2d7cd011db47|1|0|636795973478542746&sdata=hpVe%2BTEPgXyXT2drA4MNmitFax6gMZHhEf5SvuNo318%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAWAC1z5HHbR3jqvWmGIeJSu6Bjh7nv_Pks5u14uhgaJpZM4ZBxlM&data=02|01|juhlee%40microsoft.com|07506a89272f4727b77008d65a9060a6|72f988bf86f141af91ab2d7cd011db47|1|0|636795973478542746&sdata=ejf%2Fc2w43hvjMDhLH%2BUFugZbFb%2BxnF2QL3oJFtD12kY%3D&reserved=0.

Correct

From: Adrian Vladu<EMAIL_ADDRESS>Sent: Wednesday, December 5, 2018 12:56 AM
To: LIS/LISAv2
Cc: Ju-Hyoung Lee; Mention
Subject: Re: [LIS/LISAv2] 7za.exe can not extract file because the file path is not correct (#492)
@juhlee-microsofthttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fjuhlee-microsoft&data=02|01|juhlee%40microsoft.com|07265d8a44784388d2ba08d65a8f8196|72f988bf86f141af91ab2d7cd011db47|1|0|636795969737003514&sdata=EmMqybiB5GYxgZiJ8mdVVgPP1DYpXjrNgQHhXamR94M%3D&reserved=0
I think the problem is with the double paths -> C:\LISAv2\DVAO52284\C:\Windows\TEMP\PERF-DPDK-FWD-PPS-DS15-636795656101414519.zip ?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FLIS%2FLISAv2%2Fissues%2F492%23issuecomment-444408278&data=02|01|juhlee%40microsoft.com|07265d8a44784388d2ba08d65a8f8196|72f988bf86f141af91ab2d7cd011db47|1|0|636795969737013524&sdata=DIRwCxTpB4Qsjhq%2FuGaS2rY5K%2BTCzQGck%2BtRrINpHg4%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAWAC14I-ZqkVwvyw1243YhkLi9H5gKdGks5u14orgaJpZM4ZBxlM&data=02|01|juhlee%40microsoft.com|07265d8a44784388d2ba08d65a8f8196|72f988bf86f141af91ab2d7cd011db47|1|0|636795969737013524&sdata=tNVEohbir5dVsOEr5GcvUe0Lokjlk%2BURrrG4MHYVZhE%3D&reserved=0.

Because your repro is in local system not Jenkins slave. Adrian addresses the root-cause. Also check out my log, I pointed two paths conjunction.

From: LiliDeng<EMAIL_ADDRESS>Sent: Wednesday, December 5, 2018 1:00 AM
To: LIS/LISAv2
Cc: Ju-Hyoung Lee; Mention
Subject: Re: [LIS/LISAv2] 7za.exe can not extract file because the file path is not correct (#492)
Odd, I can't repro it locally.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FLIS%2FLISAv2%2Fissues%2F492%23issuecomment-444409572&data=02|01|juhlee%40microsoft.com|0dda2090e14949f757d308d65a9015d8|72f988bf86f141af91ab2d7cd011db47|1|0|636795972226934385&sdata=0TuVJ0YOkmu0L8rYG2qhLzZ%2BjnQOYwnlbqyZMQ36SsU%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAWAC18rRO3AJAvPsAhVMRWFZDA9FEautks5u14skgaJpZM4ZBxlM&data=02|01|juhlee%40microsoft.com|0dda2090e14949f757d308d65a9015d8|72f988bf86f141af91ab2d7cd011db47|1|0|636795972226944394&sdata=WETZyzFKXvbN0nRRaWmMJ0u6eHcRKYH3kkcsC0KuC1U%3D&reserved=0.


Spring Config Server with SVN | Certifcate and JSON

Hi Team,
Have configured the Spring Config Server in PCF environment.(Have not used the config Server available in Marketplace of PCF but have used the Spring Config Server as it doesn't support SVN)

Am able to retrieve the application specific yml file from config Server but am not able to retrieve JSON file hosted in SVN. How do we invoke JSON(like string literal as defined in JSON) from SVN through ConfigServer?

Can we host certificates in SVN, if so how i can refer that in application specific yml file for defining any certificate path. Earlier when using the filepath in ConfigServer have referred like below. But can i configure if hosted in SVN?
ssl_trusted_certs: C:/JMS_Certs/entrust.ca1.nonprod.root.cert.pem

Probably should file this issue in https://github.com/spring-cloud/spring-cloud-config, not spring-cloud-netflix.


Add lib{gcc,stdcxx}-ng to ignore_run_exports

Both are statically linked to micromamba:
$ ldd /path/to/micromamba
	linux-vdso.so.1 =>  (0x00007ffe7e544000)
	librt.so.1 => /lib64/librt.so.1 (0x00007f532fdcd000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f532fbc9000)
	libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f532f9af000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f532f792000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f532f50e000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f532f17a000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f5330a99000)

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Not sure what's going on with osx-arm64!

@conda-forge-admin, rerender

Hmm... so the conda-build version used by me was old. I wonder if conda-smithy should complain about it!

@conda-forge-admin restart ci

https://github.com/msys2/MSYS2-packages/issues/2171 😢

Don't we need a similar thing for OS X? Happy to merge btw, and thnaks for the contribution!

There is, but it is kinda ugly:
https://github.com/AnacondaRecipes/bazel-feedstock/blob/154e5b02453f9abaea2ac25d32199bc5e1d63bdc/recipe/custom_clang_toolchain/CROSSTOOL.template#L34-L41

ah, I was pretty confident that statically linking is working on OS X, too. I meant to ignore a potential run_exports from libstdcxx on OS X (or whatever the c++ stdlib on OS X is called, would have to look it up).

No need to statically link libc++.dylib. You can interchange system one and conda one as long as you don't do -D_LIBCPP_DISABLE_AVAILABILITY

That's true, but some day (I wish!), one will be using clang on all platforms instead of 3 different compilers for all platforms and would like to have a binary which doesn't link anything except glibc libs :stuck_out_tongue_winking_eye: (on linux)

ah, good to know @isuruf. I was actually thinking of using this flag so that I can use the std::filesystem instead of our current polyfill ...


Fix issue #640 api:cache command not working when only using dingo router

Issue is explained in #640.
If no route file was generated by route:cache command then prepend PHP open tag to route cache file stub.

Many thanks.


ENH: Consider requested output region in FFT convolution

Prior to this change, itk::FFTConvolutionImageFilter and
itk::ConvolutionImageFilter had the major difference where the former
would always run on the largest possible input image region whereas the
latter would run on a padded requested region. As a result spatial
convolution was much more performant when run on a small region of a
large image.
This change revises how itk::FFTConvolutionImageFilter processes input
and output image regions in order to perform convolution and discards
the assumption that the output requested region must always be the
largest possible region. The input image subregion is padded for the
kernel operator and then clipped of remaining image data so that forward
FFT is performed on a region exactly matching that which would be
processed under spatial convolution. The kernel image is likewise padded
to the match the input. The result of FFT multiplication and subsequent
inversion is then cropped to remove artifacts from padding, leaving only
the requested input size.
This approach has the advantage of scaling with the size of the
requested output region. FFT convolution continues to be disadvantaged
in comparison to spatial convolution where an output region is
iteratively expanded or shrunk, as under FFT convolution entirely new
complex images must be generated for any change in the output region.
Adds tests demonstrating functionality and equivalence to spatial
convolution.
This work is motivated by FFT acceleration with VkFFT applied to large image processing. The fundamental approach to subregion processing is demonstrated in the ITKVkFFTBackend FFTConvolutionOverRegionOfInterest example. Speedup is demonstrated below in the context of Vnl (default) FFT and VkFFT (GPU accelerated) backends. Benchmarks were collected via a script based off of the GaussianBlurBenchmark example. FFT performance over subregions (bottom row) is greatly improved, though more optimization is required to outperform the default spatial convolution multithreaded implementation over subregions.
Status quo: Vnl FFT, not responsive to requested region

Updated: Vnl FFT, responsive to requested region

Status quo: Vk FFT, not responsive to requested region

Updated: Vk FFT, responsive to requested region

PR Checklist

[x] No API changes were made (or the changes have been approved)
[x] No major design changes were made (or the changes have been approved)
[x] Added test (or behavior not changed)

Refer to the ITK Software Guide for
further development details if necessary.

Mostly addresses #3368. More profiling work may be necessary to outperform multithreaded spatial convolution over image subregions on CPU. May be able to make up the difference in input image preparation optimizations, see TODO comments inline.

As of writing there is exactly one CDash test failure remaining where a deconvolution test output differs slightly from the original baseline. I am summarizing my findings from tracing through both previous and updated filter behaviors here to 1) provide evidence for changing the baseline image to match updated behavior and 2) highlight what I think is an interesting case study in how small theoretical errors can propagate.
The issue lies in a bug in the previous implementation of FFTConvolutionImageFilter that is fixed in this update. Previously the filter always executed on the largest possible input region padded for 1) the kernel and 2) FFT factoring. The image pad size is calculated at https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Filtering/Convolution/include/itkFFTConvolutionImageFilter.hxx#L390:
typename InputImageType::ConstPointer  inputImage = this->GetInput();
  InputSizeType                          inputSize = inputImage->GetLargestPossibleRegion().GetSize();
  typename KernelImageType::ConstPointer kernelImage = this->GetKernelImage();
  KernelSizeType                         kernelSize = kernelImage->GetLargestPossibleRegion().GetSize();

  InputSizeType padSize;
  for (unsigned int i = 0; i < ImageDimension; ++i)
  {
    padSize[i] = inputSize[i] + kernelSize[i];
    if (m_SizeGreatestPrimeFactor > 1)
    {
      while (Math::GreatestPrimeFactor(padSize[i]) > m_SizeGreatestPrimeFactor)
      {
        padSize[i]++;
      }
    }
  }

The issue lies in this line:

padSize[i] = inputSize[i] + kernelSize[i];

When we perform spatial convolution we need to be able to sample by the kernel radius outside of the bounds of the requested region, so the padded image size is 2 * kernelRadius[i]. However, if kernelSize[i] is odd then kernelSize[i] = 2 * kernelRadius[i] + 1, which means we are initially padding by one extra pixel. In many cases this is a negligible error, however if the incorrect padding size does not meet FFT factoring conditions then significant extra padding can be subsequently added:
while (Math::GreatestPrimeFactor(padSize[i]) > m_SizeGreatestPrimeFactor)
      {
        padSize[i]++;
      }

itkInverseDeconvolutionImageFilterGaussianKernelTest happens to have the correct conditions for this bug to appear. An input of size [250, 250] is padded for a kernel of size [51, 51]. In previous behavior this leads to a padding of [301, 301], which is not factorable by 2, 3, and 5, so it is expanded to an input size of [320, 320] for FFT to be carried out. Meanwhile, updated behavior correctly pads by the kernel radius to [300, 300], which is factorable by 2, 3, 5 and needs no additional padding for FFT. The difference in pipelines cascades from there, with kernels being padded to the respective input sizes of [320, 320] or [300, 300], followed by complex division for deconvolution, inverse FFT, and cropping to the requested output region.
All in all, this was an easy error to make and I thought it was interesting to trace through and see how an extra +1 in the wrong place can cause cascading failure. I will upload a corrected baseline image for this test.

Fixed a build warning and squashed commits.

Squashed changes

\azp run ITK.macOS.Python

/azp run ITK.macOS.Python

Looks like a very nice addition and improvement!
Looking through the test I don't see any tests which run a pipeline. They seem to mostly just call update on each filter.
Please consider adding a test which something like: ImageFileReader->PipelineMonitorImageFilter->FFTConvolutionImageFilter->StreamingImageFilter The PipelineMonitorImageFilter  save the requested regions and other pipeline communications to help verify correct execution of a pipeline.

@blowekamp I've added an additional streaming test. Could you please verify that this covers the cases you had in mind?

Great! Thanks for adding the extra testing.


Package Requested

[ ] I would like someone else to build the manifest.
[X] I would like help so I can submit the manifest.
[X] I have performed a search and couldn't find this package.
[X] I have checked that the installer for this package is not contained in a .zip file
[ ] I think there is a new version available and I have provided the URL.

Please provide the following information
Publisher: XaoS Project
Publisher Url: https://xaos-project.github.io/
Package Name: XaoS
Description: Real-time interactive fractal zoomer
Package Version: 4.2.1
Installer URL: https://github.com/xaos-project/XaoS/releases/download/release-4.2.1/xaos-setup-4.2.1.exe

The latest version of this software (4.2.1) uses Qt Installer Framework version 3.2.2 which requires an answerfile for silent / unattended installation. Afaik winget still doesn't support answer files, so this won't be possible for now.
Alternatively the author could release a new installer based on Qt Installer Framework 4+ which supports easier silent installs with just command-line arguments.


Disable undesired attempts at opening file descriptors

When building for a web target, there is no stderr. However, the abort implementation in the current CXXABI runtime is implemented with writes to stderr.
Since the constructors for default objects call abort, these are rightfully not optimised out from the compiler. However, it is hardly sensible in my opinion to have to include a whole WASI runtime implementation in the browser just to handle more informative aborts by default.
To prevent this, compile the cxxabi runtime with NDEBUG and CXXABI_BAREMETAL flags.
This is not enough though, as the compiler will still try to instantiate __libcpp_verbose_abort from the stdcxx library. To prevent the compiler from instantiating __libcpp_verbose_abort, clean fix for this is to consistently set _LIBCPP_AVAILABILITY_HAS_VERBOSE_ABORT=0 in the __availability header. This requires forking or patching LLVM.

Can you perhaps mention in the title and/or description that this change relates specifically the libc++abi?  (Perhaps prefix the title with [libc++abi])

And just to clarify: this PR does not fully solve https://github.com/WebAssembly/wasi-sdk/issues/401 because of __libcpp_verbose_abort? Maybe we need an upstream way to configure _LIBCPP_AVAILABILITY_HAS_VERBOSE_ABORT=0 at build time or something?

This is the patch that needs to be applied to llvm to be able to run stdlib code bare metal in the browser. This alone is sufficient to fix #401 - at least for C++.
diff --git a/libcxx/include/__availability b/libcxx/include/__availability
index b8b2da9bb122..a1fbf8cfe3f7 100644
--- a/libcxx/include/__availability
+++ b/libcxx/include/__availability
@@ -128,7 +128,7 @@
 // This controls whether the library claims to provide a default verbose
 // termination function, and consequently whether the headers will try
 // to use it when the mechanism isn't overriden at compile-time.
-#  define _LIBCPP_AVAILABILITY_HAS_VERBOSE_ABORT 1
+#  define _LIBCPP_AVAILABILITY_HAS_VERBOSE_ABORT 0
 #  define _LIBCPP_AVAILABILITY_VERBOSE_ABORT

 // This controls the availability of the C++17 std::pmr library,
diff --git a/libcxxabi/src/abort_message.cpp b/libcxxabi/src/abort_message.cpp
index 859a5031b93f..49a9cbb3e71e 100644
--- a/libcxxabi/src/abort_message.cpp
+++ b/libcxxabi/src/abort_message.cpp
@@ -31,7 +31,7 @@ void abort_message(const char* format, ...)
     // Write message to stderr. We do this before formatting into a
     // variable-size buffer so that we still get some information if
     // formatting into the variable-sized buffer fails.
-#if !defined(NDEBUG) || !defined(LIBCXXABI_BAREMETAL)
+#if 0
     {
         fprintf(stderr, "libc++abi: ");
         va_list list;

For me it looks like setting LIBCXXABI_BAREMETAL was enough, so maybe NDEBUG is already set? (I'm not sure why they do !x || !y instead of x && y, it's a bit confusing.)
I noticed from grepping LIBCXXABI_BAREMETAL in llvm that this flag seems to change some other behavior, but it's code I'm not familiar with. It makes sense, as the browser wasm runtime is de-facto a microcontroller, but it should probably be reviewed as I don't know the inner workings of how memory is managed there.
Regarding _LIBCPP_AVAILABILITY_HAS_VERBOSE_ABORT=0 , I realise I haven't been very clear. This is not a compile time flag. This is a define in the __availability header that is included at user compile time as part of libcxx, unlike libcxxabi which is binary linked against (and thus needs to be patched at SDK build time). The header is copied over as part of libcxx when the SDK is installed.
A full solution would need to both compile libcxxabi with LIBCXXABI_BAREMETAL (or suitable alternative), and patch the headers to set _LIBCPP_AVAILABILITY_HAS_VERBOSE_ABORT in case the user is compiling without runtime support.

does this disable the following message?
libc++abi: bad_alloc was thrown in -fno-exceptions mode

while i agree a library should not use stderr in general,
i feel it's a bit user-unfriendly as we usually don't have exceptions.
is there a way for user app to override behavior?

does this disable the following message?
libc++abi: bad_alloc was thrown in -fno-exceptions mode

while i agree a library should not use stderr in general, i feel it's a bit user-unfriendly as we usually don't have exceptions. is there a way for user app to override behavior?

answering myself, it's easy for apps to override "abort_message".
extern "C" void abort_message(const char *fmt, ...)
{
}

isn't it enough for your purpose?

I think I had tried something similar but my signature might not have matched properly. I'd need to test this again, not sure when I'll have time.

Going back to the OP I think I disagree with "When building for a web target, there is no stderr."  Running WASI programs on the web will likely require implementing stderr and there seems to be a reasonable implementation which is to map it to console.error.

Whilst I agree with that, I believe that it should be responsibility of a higher level framework. I find it a bit puzzling that I cannot build a bare metal binary with a barebone SDK without having to run through all these hoops. I know most users will probably want to go with emscripten, but I believe if I don't opt in to any standard I/O, I shouldn't have to override functions from the app in order for my binary not to fail unexpectedly trying to open I/O.

Unless I'm misunderstanding and you're suggesting that somehow you could provide stderr emulation in console natively without the need for external boilerplate from the app

Whilst I agree with that, I believe that it should be responsibility of a higher level framework. I find it a bit puzzling that I cannot build a bare metal binary with a barebone SDK without having to run through all these hoops. I know most users will probably want to go with emscripten, but I believe if I don't opt in to any standard I/O, I shouldn't have to override functions from the app in order for my binary not to fail unexpectedly trying to open I/O.

I agree it should be possible to build WASI programs with no stdio at all, but I also think that most WASI implementations (such as JCO or emscripten on the web) will choose to support them.   Wouldn't debugging be extremely hard without stderr?  How would C's assert even work?

Unless I'm misunderstanding and you're suggesting that somehow you could provide stderr emulation in console natively without the need for external boilerplate from the app

Any time you want to run a WASI program on the web you will need some kind of boilerplate, right?    Likely quite a lot since the web doesn't naively support WASI.   Take a look at something like JCO or emscripten.   Even if you do the absolute minimum I imagine that you would probably want to include stdio.. since it will make debugging so much easier, and without that you can't even run hello_world.c right?

Maybe my use case was really esoteric

the web doesn't naively support WASI.
again, I think this is only partially true isn't it? The web supports WebAssembly, and what I was arguing was that I should be able to compile / load pure WebAssembly code written in C++ without having to hack around llvm and WASI.

I think maybe my use case was a bit esoteric, but what I was doing was using a purely JavaScript program and importing a C++ set of library functions written in C++ and unit-tested in C++, so I could deliver a very lightweight web page that could crunch numbers at high performance for me. I didn't need stdout for that. In general, if I want to use whatever e.g. scientific computation library written in C++, I would expect to be able to strip out the logging and just chuck it in my webpage.
Using emscripten for such a use case felt to me a bit overkill, and in fact with this simple modification I was able to achieve my goal. I felt that more people would benefit from being able to do this easily.

the web doesn't naively support WASI.

again, I think this is only partially true isn't it? The web supports WebAssembly, and what I was arguing was that I should be able to compile / load pure WebAssembly code written in C++ without having to hack around llvm and WASI.
I think maybe my use case was a bit esoteric, but what I was doing was using a purely JavaScript program and importing a C++ set of library functions written in C++ and unit-tested in C++, so I could deliver a very lightweight web page that could crunch numbers at high performance for me. I didn't need stdout for that. In general, if I want to use whatever e.g. scientific computation library written in C++, I would expect to be able to strip out the logging and just chuck it in my webpage.
Using emscripten for such a use case felt to me a bit overkill, and in fact with this simple modification I was able to achieve my goal. I felt that more people would benefit from being able to do this easily.

It sounds like you want something different to wasi-sdk.  Perhaps some kind a bare metal wasm SDK where no WASI imports are used?  In that mode you probably would want to use wasm32-unknown-unknown, rather than wasm32-unknown-wasi.  WASI is literally all about system APIs (aka imports).

I'm sympathetic to @infinitesnow's issue here: in the past I've also wanted to use wasi-sdk to emit very minimal WebAssembly modules and it can be tough and frustrating to figure out what's going wrong. I don't know if turning off C++ abort printing for everyone is the right approach; it seems like the average user probably would want to see those messages, right?
Let's see if we can't get to the bottom of this with some questions to @infinitesnow and either merge a modified version or close this:

why use wasi-sdk here? Is it not better for your use case to use raw clang with a wasm32-unknown-unknown target?
if wasi-sdk is the right choice:

is compiling with -DCMAKE_BUILD_TYPE=RelWithDebInfo not enough to avoid the message printing and thus the unwanted imports, like @sbc100 pointed out?
why are we turning off the filesystem with -DLIBCXX_ENABLE_FILESYSTEM:BOOL=OFF like @yamt pointed out? This seems like something the average user probably wants...
if wasi-sdk persists in adding unwanted imports for C++, why not use or implement those imports with some minimal JS? I'm thinking that if it's just a couple this doesn't seem to bad (in fact, it's probably good to print errors to console.error) and IIRC there might be some minimal JS libraries out there that already do this?


doc build fails if no reST reference to file

The new out-of-tree doc build process copies files to a working folder to process by copying all the reST files in the doc tree (and samples and board folders), and scanning the reST files to find references to other files (e.g., images) that need to be copied too.  This misses files that are referenced in the config.py file (e.g., logo and favicon) but not from any reST file.
Workaround is to add a comment to a reST file that appears like a reference to these image files to fool the extract_content.py process.
The extract_content.py was a workaround for copying /samples and /boards documentation into the /doc tree (and referenced files) but is missing content needed for the doc build when it copies /doc to the out-of-tree build area.

@carlescufi I figured out a workaround, but it was a puzzlement why the images referenced in conf.py (for the logo and favicon images) in my work on switching to use the read-the-doc theme were causing the doc build to fail.  Also, found that the _templates/ folder isn't copied over to the building directory so read-the-docs theme tweaks didn't work either.

@dbkinder ok I understand, I completely missed this. If you can live with this workaround for the time being I should be able to fix it soon, although I'm on parental leave for a month.
Alternatively you can simply add the missing files to be copied to the build folder here:
https://github.com/zephyrproject-rtos/zephyr/blob/master/doc/CMakeLists.txt#L108
Simply add a line for each file you need:
configure_file(${CMAKE_CURRENT_LIST_DIR}/<file>${RST_OUT}/doc/<file> COPYONLY)
Also what do you mean by _templates/ folder? That folder doesn't exist in doc/ ?

_templates folder shows up in #9145 :)    I added a workaround.rst orphan file to reference files the copy process was missing, for now. I can tweak the CMakeLists.txt file if you think that's a better solution.

@dbkinder understood. As I see it there's 2 solutions to fix this issue:

Maintain a list of non-rst files that we need copied into the build folder. This already exists in https://github.com/zephyrproject-rtos/zephyr/blob/master/doc/CMakeLists.txt#L108

Modify extract_contents.py so that it copies more than just .rst files.  It could copy for example .rst, .png, .html, .jpg. This could be a command-line option to the script.

Use extract_contents.py only for samples and boards and use CMake's copy_directory command in script mode to make an identical copy of doc/ into the destination build folder.

What do you think is best for the future?

I'd lean towards option 3.  extract_contents.py was created to copy the documentation found in boards/ and samples/ (and any referenced images or includes) and has served us well.  It would be best to just copy the doc/ folder over to the out-of-tree location (skipping a doc/_build folder if it exists :)

@dbkinder sounds good, I'll try to send a PR

P.S.  It looks like the current CMakeLists.txt is copying the /samples and /boards content twice.  It should only need to copy these files into the copied /doc folder.

P.S. It looks like the current CMakeLists.txt is copying the /samples and /boards content twice. It should only need to copy these files into the copied /doc folder.

No, that's intentional. The issues is that some .rst files refer to code in samples/ or boards/ using relative paths, so we need those right below doc/ in the build folder hierarchy

ah.  ok.