Compute pointcloud from depth_image rather than from depth_frame

Hi,
How do you extract Region Of Interest (ROI) from a depth frame?
My goal is simply to multiply the depth frame for a bi dimensional binary mask (basically a simple matrix with ones in the Region Of Interest and zeros everywhere else) to, in the end, generate a pointcloud only in a certain region of interest.
I can do this simply with basic webcams and OpenCV, but how do you perform the above mentioned simple and important task with RealSense?
Any help will be higly appreciated

The RealSense SDK 2.0 software does have a means of setting a ROI.  In the RealSense Viewer software, it can be done by defining a 'setpoint' value in the Advanced Controls > AE Control section of the Viewer's side-panel options.  Page 2 of Intel's camera tuning guide, in section E, describes this process.
https://www.intel.com/content/dam/support/us/en/documents/emerging-technologies/intel-realsense-technology/BKMs_Tuning_RealSense_D4xx_Cam.pdf
I believe that a way to define a value for this setpoint outside of the RealSense Viewer software is to set it in a camera configuration file called a json, also known as a Visual Preset.
https://github.com/IntelRealSense/librealsense/wiki/D400-Series-Visual-Presets
A json can be loaded into the RealSense Viewer or loaded into your own program via code.
You could define this json file yourself, though an easier way to create a custom preset file is to define the settings in the RealSense Viewer and then export the settings as a json using a save icon on the toolbar at the top of the Viewer's options side-panel.  The setpoint command is listed in the json as aux-param-autoexposure-setpoint
The Visual Presets page has a list of links to json configuration files so that you can see how they are structured.
https://github.com/IntelRealSense/librealsense/wiki/D400-Series-Visual-Presets#preset-table

Could you provide some reference on how to this with the Python or C++ API?
I can not use Software Tools, I have to integrate this in a bigger Python or C++ based pipeline.
Thank you so much in advance.

I just found such a Python reference whilst checking for further reading for you.
https://github.com/IntelRealSense/librealsense/issues/2681#issuecomment-436391721

Thank you a lot for your assitance, but I guess I have not been clear enough with what I'm asking.
RealSense SDK enables me to get the pointcloud of a given depth_frame
depth_frame = frames.get_depth_frame()
points = pc.calculate(depth_frame)

What I am trying to do, is simply get the correspondent depth_image from the depth_frame and multiply it for a binary bi dimensional mask of same size (e.g 640x480, a simple matrix made of ones and zeros) in order to discard the depth information everywhere except where the bi dimensional mask value is 1.
depth_image = depth_image * mask
My only goal now is to understand how to compute the pointcloud not with the original depth_frame, but with the just obtained above mentioned depth_image.
Is this anyhow possible? I am confident of performing such operations with simple webcams and OpenCV but am really strugglying to understand how to actually get this simple task to work with RealSense.
Thanks again in advance, I hope this can be clarified

The scope of your project exceeds my level of RealSense programming knowledge, unfortunately, though one of the Intel team members on this forum should hopefully be able to provide some suggestions for how to approach it.   I wish you the best of luck!

@LossOfHumanIdentity , in Librealsense the frames are intentionally designed to be immutable to allow safe multi-thread sharing and usage, and in general in-place modifications of frame data should be avoided.
The ways to handle this scenario in SDK are:

Implement a custom processing block (e.g stencil mask) that will produce a modified copy of the original frame. This will extend the code base and allow other users to benefit from this as well, but will require code modification on multiple levels, including API changes. This is the way that the  SDK filters - align, colorizer, post-processing and others are implemented. This however requires
Using a Software Device class (example link):

Create and configure Software Device instance
Get a copy the raw depth data from the actual frame
Modify the depth data locally
Feed the software device with the modified data
Pass the "software-generated" depth frame to the SDK's pointcloud processing block

I would recommend that you try the software device method.
Both ways a functionally equivalent, though the latter is much faster to prototype and also does not require SDK changes.

Hi @ev-mp, thank you for your reply, even though I'm not sure I fully understood how to actually use the Software Device you mentioned for this specific scenario.
Anyway, I've been able to perform the above mentioned task in a Python environment by simply getting the depth_image, masking it as desired and then call the native OpenCV cv2.reprojectImageTo3D method like stated in the following:
points = cv2.reprojectImageTo3D(disparity, Q)
I am currently using the following
Q = np.float32([[1, 0, 0, -0.5 * 640],[0, 1, 0, -0.5 * 480],[0, 0, 0, 383],[0, 0, 1, 0]])
But I would like to know if you could please provide an accurate Q matrix for D435i?

Thank you so much in advance, I guess that if you provide me the correct Q matrix I can close this issue and mark it as solved!

The SDK provides methods to gather the required components for the openCv's Q matrix:

Sensor intrinsic data (example)
Inter-sensor extrinsic and baseline data (example)
The distortion coefficients are zeroed as the raw depth is already undistorted and rectified, so it saves you the extra-handling.

The terminology and units are mostly the same so this should be a straight-forward mapping.
Note however, that Realsense depth frame provides Depth (Z) values while the mentioned cv2.reprojectImageTo3D takes Disparity as input. I couldn't find a direct openCv equivalent for the SDK's rs2_deproject_pixel_to_point.
So in order to generate 3D data with openCv you'll have first to transform the Depth data to the Disparity domain.
The SDK provides a method to generate a scaled disparity data required by the post-processing filters (example), so it give you a starting point. #3344, #3740.


Closes: #1

Updated validations.py python script.
Fixed the behavior of validate_user function in validations.py.
Fixes #<issue_number_goes_here>

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

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

I have signed the CLA agreement. Please check it out.


Fix syntax detection

We're using following syntax

But the plugin marks it as a syntax error. Do you think it is possible to fix?
var/docker_lock: $(shell find .docker/ -type f) docker-compose.yaml
	$(MAKE) docker-build
	touch var/docker_lock

The problem there is I believe caused by $

Wow! Works, confirmed. Thanks!


Sync event listener is not allowed to pass data back to app

Stupid Question, Derived from Confusion
While playing with a Service Worker and especially with the sync feature/event, I've noticed, that the event listener for the sync event or, more precisely, the promise in the custom method returnAPromise in the event.waitUntil() line of, say
if (event.tag === 'my-sync-tag') {
    event.waitUntil(returnAPromise());
}

is not allowed to return any data (did not try it with a primitive value though). Those would appear in the callback of the promise in the app, like here:
registration.sync.register('my-sync-tag')
    .then(function(data)
        {
            // do stuff with data, probably displaying them
        });

I've found this hint here:

At the end. you cannot use postmessage to send response directly.Because it's illegal.

Even this hint is not related to the behavior of the sync feature, but to the type of data, which can be sent over some kind of messaging system (two way communication between the app and the SW).
Regarding this: You can create a workaround with a MessageChannel, which is also demonstrated by this example. but an approach like this one, in which the app tries to get the fetched data directly won't ever work as far as I know.
Now, I've looked here and there for a specification of this behavior, but did not find much. Even in this section (5.3: SyncEvent) of the spec nothing indicates, that sharing the data between the app and the SW is not allowed for synchronization tasks (in contrast to intercepting requests with the very same SW for example).
Is there any reason, why this is not specified and not explained anywhere?

@BairDev  I am the one who wrote that answer on stackoverflow. Actually, i just found that problem when i try to just send response through message channel.
But I am kind of understand why the specification that do not write define the behavior you mentioned.

Because sync event just let us know that we are online and can do sth. We can do not only just sending a request. For example, you can send multiple request or put the data in the indexedDB etc.
What's more. Sync event is aim to solve upload problem in lie-fi.And in the same time, most people may close the page of our website. We can't ensure the page can get the response of sync event.

So after all,  I suggest you to consider backgroundSync as a message of online in backstage.Though in specification, i define itself as method to synchronize data, but what i think is, synchronize data is not equal to send a request.

@toxic-johann Thanks for your response. You are right, I just realized, that I was not aware of the acutal meaning of **background** sync. There is no data sharing between app and SW involved. When I wrote that issue I just wondered, why the two promises are not chained at all: the one in the custom function, which is called in event.waitUntil(), and the one from registration.snyc.register('my-tag'). It would be interesting to know a bit more about the technical background here.

@BairDev hmmm……That's a good question.
I just write the promise in sendMeesageToSw for the page to communicate with worker.So that i can wait until i get the response.
The event.waitUntil() is used to extend the life time of event, in order to make the worker not to be terminated.


How can I properly change the input image size on CondLane?

Currently I'm detecting lanes using tools/detect.py.
For Condlane inference, I changed this
batch_size=1 # from 8 (for condlane inference)

And tried these configs for FHD input image
img_height = 1080 # from 320
img_width = 1920 # from 800

ori_img_h = 1080 # from 590
ori_img_w = 1920 # from 1640

crop_bbox = [0,540,1920,1080] # from [0, 270, 1640, 590]

Changing img_scale = (800,320) results
The size of tensor a must match the size of tensor b at non-singleton dimension 3

How can I properly change the input image size (ex. FHD) on CondLane config file?

Keep this setting is
img_height = 320
img_width = 800

and img_scale = (img_width, img_height)
We will update this in config later.

Actually, it detects no lanes with that configuration.
Though, I tried this
img_height = 1080
img_width = 800
ori_img_h = 1080
ori_img_w = 1920
img_scale = (800, 320)
crop_bbox = [0, 540, 1920, 1080]

and the result image is

which is on the wrong position.
Thanks for the support

Have you tried this?
img_height = 320
img_width = 800
ori_img_h = 1080
ori_img_w = 1920
img_scale = (800, 320)
crop_bbox = [0, 540, 1920, 1080]

Have you tried this?
img_height = 320
img_width = 800
ori_img_h = 1080
ori_img_w = 1920
img_scale = (800, 320)
crop_bbox = [0, 540, 1920, 1080]

Yes I did, only to see nothing detected at all.

img_scale should be img_scale = (img_width, img_height), what about this:
img_height = 1080
img_width = 800
ori_img_h = 1080
ori_img_w = 1920
img_scale = (img_width, img_height)
crop_bbox = [0, 540, 1920, 1080]

Have you tried more images?

img_scale should be img_scale = (img_width, img_height), what about this:
img_height = 1080
img_width = 800
ori_img_h = 1080
ori_img_w = 1920
img_scale = (img_width, img_height)
crop_bbox = [0, 540, 1920, 1080]

Have you tried more images?

Yes I tried more images. (Since I tried using a video with a little bit of modifications)
Changing img_scale = (img_width, img_height) leads to this Error
Traceback (most recent call last):
  File "tools/detect.py", line 86, in <module>
    process(args)
  File "tools/detect.py", line 75, in process
    detect.run(p)
  File "tools/detect.py", line 50, in run
    data['lanes'] = self.inference(data)[0]
  File "tools/detect.py", line 37, in inference
    data = self.net(data)
  File "/home/pc-6/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/pc-6/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/parallel/data_parallel.py", line 166, in forward
    return self.module(*inputs[0], **kwargs[0])
  File "/home/pc-6/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/pc-6/repos/lanedet/lanedet/models/nets/detector.py", line 26, in forward
    fea[-1] = self.aggregator(fea[-1])
  File "/home/pc-6/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/pc-6/repos/lanedet/lanedet/models/aggregators/transformer.py", line 152, in forward
    src = layer(src, pos.to(src.device))
  File "/home/pc-6/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/pc-6/repos/lanedet/lanedet/models/aggregators/transformer.py", line 106, in forward
    x += pos
RuntimeError: The size of tensor a (34) must match the size of tensor b (10) at non-singleton dimension 2

pos_shape should also be changed, it's (batch_size, img_height/32, img_width/32).
aggregator = dict(
    type='TransConvEncoderModule',
    in_dim=2048,
    attn_in_dims=[2048, 256],
    attn_out_dims=[256, 256],
    strides=[1, 1],
    ratios=[4, 4],
    pos_shape=(batch_size, 34, 25),
)

pos_shape should also be changed, it's (batch_size, img_height/32, img_width/32).
aggregator = dict(
    type='TransConvEncoderModule',
    in_dim=2048,
    attn_in_dims=[2048, 256],
    attn_out_dims=[256, 256],
    strides=[1, 1],
    ratios=[4, 4],
    pos_shape=(batch_size, 34, 25),
)

changing only pos_shape results this error
  File "torch/nn/modules/module.py", line 1102, in _call_impl
    return forward_call(*input, **kwargs)
  File "torch/nn/parallel/data_parallel.py", line 166, in forward
    return self.module(*inputs[0], **kwargs[0])
  File "torch/nn/modules/module.py", line 1102, in _call_impl
    return forward_call(*input, **kwargs)
  File "lanedet/lanedet/models/nets/detector.py", line 35, in forward
    output = self.heads(fea)
  File "torch/nn/modules/module.py", line 1102, in _call_impl
    return forward_call(*input, **kwargs)
  File "lanedet/lanedet/models/heads/condlane.py", line 1013, in forward
    return self.forward_test(x_list, )
  File "lanedet/lanedet/models/heads/condlane.py", line 984, in forward_test
    masks = self.mask_head(mask_branch, mask_params, num_ins, idx)
  File "torch/nn/modules/module.py", line 1102, in _call_impl
    return forward_call(*input, **kwargs)
  File "lanedet/lanedet/models/heads/condlane.py", line 534, in forward
    x = torch.cat([locations, x], dim=1)
RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 80 but got size 270 for tensor number 1 in the list.

Thought maybe mask_size and heads.location_configs should be changed from 270 to 80 which leads to no error but also detecting no lanes

Yes, the mask_size should also be consistent. I also try it, the difference is:
sample_y = range(590, 270, -8)

-batch_size = 8
+batch_size = 1
 aggregator = dict(
     type='TransConvEncoderModule',
     in_dim=2048,
@@ -21,7 +21,7 @@ aggregator = dict(
     attn_out_dims=[256, 256],
     strides=[1, 1],
     ratios=[4, 4],
-    pos_shape=(batch_size, 10, 25),
+    pos_shape=(batch_size, 34, 25),
 )

 neck=dict(
@@ -79,7 +79,7 @@ img_norm = dict(
     std=[50.5, 53.8, 54.3]
 )

-img_height = 320
+img_height = 1080
 img_width = 800
 cut_height = 0
 ori_img_h = 590
@@ -91,9 +91,9 @@ num_lane_classes = 1
 line_width = 3
 radius = 6
 nms_thr = 4
-img_scale = (800, 320)
+img_scale = (800, 1080)
 crop_bbox = [0, 270, 1640, 590]
-mask_size = (1, 80, 200)
+mask_size = (1, 270, 200)

The sample_y should also be changed. Maybe range(1080, 540, -8) ? It will be used in visualization.
Actually, this model is trained in CULane, so it might be ok without detected lanes for new images. The best way is to train the model with your own dataset.  If not, you might try to lower the  hm_thr (https://github.com/Turoad/lanedet/blob/main/lanedet/models/heads/condlane.py#L709) to keep higher recall.

Changing sample_y worked. Thanks a lot.

I wonder that how to compute right mask_size and sample_y?

I recently changed img_scale but got the error
RuntimeError: The size of tensor a (20) must match the size of tensor b (25) at non-singleton dimension 3

@parkjbdev Could you please share the pre-trained model file for Condlane ?

I haven't trained it on my own.
Try this
https://github.com/Turoad/lanedet/releases/tag/1.0

@parkjbdev Thanks so much

@parkjbdev I have tried with model condlane_r101_culane.pth with config file  resnet101_culane.py as below command
(lanedet) ajay:~/lanedet$ python tools/detect0.py configs/condlane/resnet101_culane.py --img /home/ajay/lanedet/data/CULane/video_example/05081544_0305/   --load_from /home/ajay/lanedet/models/condalane/condlane_r101_culane.pth --savedir ./vis
But I am getting an error message like this!
  0%|                                                                                | 0/7 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "tools/detect0.py", line 86, in <module>(lanedet) ajay@dgist:~/lanedet$ python tools/detect0.py configs/condlane/resnet101_culane.py --img /home/ajay/lanedet/data/CULane/video_example/05081544_0305/   --load_from /home/ajay/lanedet/models/condalane/condlane_r101_culane.pth --savedir ./vis
  0%|                                                                                | 0/7 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "tools/detect0.py", line 86, in <module>
    process(args)
  File "tools/detect0.py", line 75, in process
    detect.run(p)
  File "tools/detect0.py", line 50, in run
    data['lanes'] = self.inference(data)[0]
  File "tools/detect0.py", line 37, in inference
    data = self.net(data)
  File "/home/ajay/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ajay/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/parallel/data_parallel.py", line 165, in forward
    return self.module(*inputs[0], **kwargs[0])
  File "/home/ajay/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ajay/lanedet/lanedet/models/nets/detector.py", line 26, in forward
    fea[-1] = self.aggregator(fea[-1])
  File "/home/ajay/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ajay/lanedet/lanedet/models/aggregators/transformer.py", line 152, in forward
    src = layer(src, pos.to(src.device))
  File "/home/ajay/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ajay/lanedet/lanedet/models/aggregators/transformer.py", line 106, in forward
    x += pos
RuntimeError: output with shape [1, 256, 10, 25] doesn't match the broadcast shape [8, 256, 10, 25]

    process(args)
  File "tools/detect0.py", line 75, in process
    detect.run(p)
  File "tools/detect0.py", line 50, in run
    data['lanes'] = self.inference(data)[0]
  File "tools/detect0.py", line 37, in inference
    data = self.net(data)
  File "/home/ajay/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ajay/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/parallel/data_parallel.py", line 165, in forward
    return self.module(*inputs[0], **kwargs[0])
  File "/home/ajay/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ajay/lanedet/lanedet/models/nets/detector.py", line 26, in forward
    fea[-1] = self.aggregator(fea[-1])
  File "/home/ajay/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ajay/lanedet/lanedet/models/aggregators/transformer.py", line 152, in forward
    src = layer(src, pos.to(src.device))
  File "/home/ajay/miniconda3/envs/lanedet/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ajay/lanedet/lanedet/models/aggregators/transformer.py", line 106, in forward
    x += pos
RuntimeError: output with shape [1, 256, 10, 25] doesn't match the broadcast shape [8, 256, 10, 25]

Also in the link  source code doesn't contains any config file for condlane ! How did you run example for condlane ?

Refer this issue #22
You should modify the config file for condlane.
The config file is at configs/condlane/resnet101_culane.py and try changing batch_size=8 to batch_size=1.
Good luck!

@parkjbdev Thanks for your response and it works now. But would you please help me tuning parameters for custom dataset !
Currently, my image is (width =1920, height=1208).
Referencing above discussions i have modified config file like below :

sample_y = range(1208, 604, -8)

batch_size = 1
aggregator = dict(
    type='TransConvEncoderModule',
    in_dim=2048,
    attn_in_dims=[2048, 256],
    attn_out_dims=[256, 256],
    strides=[1, 1],
    ratios=[4, 4],
    pos_shape=(batch_size, 34, 25),
)

img_height = 1208
img_width = 800
cut_height = 0
ori_img_h = 1208
ori_img_w = 1920

mask_down_scale = 4
hm_down_scale = 16
num_lane_classes = 1
line_width = 3
radius = 6
nms_thr = 4
img_scale = (800, 1208)
crop_bbox = [0, 604, 1920, 1208]
mask_size = (1, 80, 200)

But getting errors like this
RuntimeError: The size of tensor a (38) must match the size of tensor b (34) at non-singleton dimension 2
Would you please suggest to me if I missing any params here!! Greatly appreciate your response.
Regards,
Ajay

Sorry for the late response. I had to turn on the computer in my college.
This is my config file and the result
net = dict(
    type='Detector',
)

backbone = dict(
    type='ResNetWrapper',
    resnet='resnet101',
    pretrained=True,
    replace_stride_with_dilation=[False, False, False],
    out_conv=False,
    in_channels=[64, 128, 256, 512]
)

ori_img_h = 1080
ori_img_w = 1920
bbox_h_start = 540
crop_bbox = [0, bbox_h_start, ori_img_w, ori_img_h]
sample_y = range(ori_img_h, bbox_h_start, -8)

batch_size = 1

aggregator = dict(
    type='TransConvEncoderModule',
    in_dim=2048,
    attn_in_dims=[2048, 256],
    attn_out_dims=[256, 256],
    strides=[1, 1],
    ratios=[4, 4],
    pos_shape=(batch_size, 10, 25),
)

neck=dict(
    type='FPN',
    in_channels=[256, 512, 1024, 256],
    out_channels=64,
    num_outs=4,
    #trans_idx=-1,
)

loss_weights=dict(
        hm_weight=1,
        kps_weight=0.4,
        row_weight=1.,
        range_weight=1.,
    )

num_lane_classes=1
heads=dict(
    type='CondLaneHead',
    heads=dict(hm=num_lane_classes),
    in_channels=(64, ),
    num_classes=num_lane_classes,
    head_channels=64,
    head_layers=1,
    disable_coords=False,
    branch_in_channels=64,
    branch_channels=64,
    branch_out_channels=64,
    reg_branch_channels=64,
    branch_num_conv=1,
    hm_idx=2,
    mask_idx=0,
    compute_locations_pre=True,
    location_configs=dict(size=(batch_size, 1, 80, 200), device='cuda:0')
)

optimizer = dict(type='AdamW', lr=3e-4, betas=(0.9, 0.999), eps=1e-8)

epochs = 16
total_iter = (88880 // batch_size) * epochs
import math
scheduler = dict(
    type = 'MultiStepLR',
    milestones=[8, 14],
    gamma=0.1
)

seg_loss_weight = 1.0
eval_ep = 1
save_ep = 1

img_norm = dict(
    mean=[75.3, 76.6, 77.6],
    std=[50.5, 53.8, 54.3]
)

img_height = 320
img_width = 800
cut_height = 0

mask_down_scale = 4
hm_down_scale = 16
num_lane_classes = 1
line_width = 3
radius = 6
nms_thr = 4
img_scale = (800, 320)
mask_size = (1, 80, 200)

train_process = [
    dict(type='Alaug',
    transforms=[dict(type='Compose', params=dict(bboxes=False, keypoints=True, masks=False)),
    dict(
        type='Crop',
        x_min=crop_bbox[0],
        x_max=crop_bbox[2],
        y_min=crop_bbox[1],
        y_max=crop_bbox[3],
        p=1),
    dict(type='Resize', height=img_scale[1], width=img_scale[0], p=1),
    dict(
        type='OneOf',
        transforms=[
            dict(
                type='RGBShift',
                r_shift_limit=10,
                g_shift_limit=10,
                b_shift_limit=10,
                p=1.0),
            dict(
                type='HueSaturationValue',
                hue_shift_limit=(-10, 10),
                sat_shift_limit=(-15, 15),
                val_shift_limit=(-10, 10),
                p=1.0),
        ],
        p=0.7),
    dict(type='JpegCompression', quality_lower=85, quality_upper=95, p=0.2),
    dict(
        type='OneOf',
        transforms=[
            dict(type='Blur', blur_limit=3, p=1.0),
            dict(type='MedianBlur', blur_limit=3, p=1.0)
        ],
        p=0.2),
    dict(type='RandomBrightness', limit=0.2, p=0.6),
    dict(
        type='ShiftScaleRotate',
        shift_limit=0.1,
        scale_limit=(-0.2, 0.2),
        rotate_limit=10,
        border_mode=0,
        p=0.6),
    dict(
        type='RandomResizedCrop',
        height=img_scale[1],
        width=img_scale[0],
        scale=(0.8, 1.2),
        ratio=(1.7, 2.7),
        p=0.6),
    dict(type='Resize', height=img_scale[1], width=img_scale[0], p=1),]

    ),
    dict(type='CollectLane',
        down_scale=mask_down_scale,
        hm_down_scale=hm_down_scale,
        max_mask_sample=5,
        line_width=line_width,
        radius=radius,
        keys=['img', 'gt_hm'],
        meta_keys=[
            'gt_masks', 'mask_shape', 'hm_shape',
            'down_scale', 'hm_down_scale', 'gt_points'
        ]
    ),
    #dict(type='Resize', size=(img_width, img_height)),
    dict(type='Normalize', img_norm=img_norm),
    dict(type='ToTensor', keys=['img', 'gt_hm'], collect_keys=['img_metas']),
]

val_process = [
    dict(type='Alaug',
        transforms=[dict(type='Compose', params=dict(bboxes=False, keypoints=True, masks=False)),
            dict(type='Crop',
            x_min=crop_bbox[0],
            x_max=crop_bbox[2],
            y_min=crop_bbox[1],
            y_max=crop_bbox[3],
            p=1),
        dict(type='Resize', height=img_scale[1], width=img_scale[0], p=1)]
    ),
    #dict(type='Resize', size=(img_width, img_height)),
    dict(type='Normalize', img_norm=img_norm),
    dict(type='ToTensor', keys=['img']),
]

dataset_path = './data/CULane'
dataset = dict(
    train=dict(
        type='CULane',
        data_root=dataset_path,
        split='train',
        processes=train_process,
    ),
    val=dict(
        type='CULane',
        data_root=dataset_path,
        split='test',
        processes=val_process,
    ),
    test=dict(
        type='CULane',
        data_root=dataset_path,
        split='test',
        processes=val_process,
    )
)

workers = 12
log_interval = 1000
lr_update_by_epoch=True

Hope it works

@parkjbdev Thank you so much for your response, I have resized my images to (1640, 590) it works well without any issues.
Anyhow I will try once with your config file keeping the original image.
Thanks for your kind response, I appreciate it.


Pre-trained Inception model for FID computation

I believe that the FID score reported in the paper is computed using an Inception model that is pre-trained on QuickDraw3.8M dataset. Could you please share the pre-trained model used for the FID calculation?

Thanks for your interests in our paper. We have updated the pretrained inception model in the shared model.zip file. Please find it at https://drive.google.com/drive/u/4/folders/14ZywlSE-khagmSz23KKFbLCQLoMOxPzl.


fix: default plugin options breaks build

fixes https://github.com/gatsbyjs/gatsby-source-wordpress-experimental/issues/1

@moonmeister Turns out you were absolutely right about optional chaining here :) This step is before default plugin options are merged in as we're currently validating plugin options before merging them here. I fixed it and added an integration test to catch this in the future. Thanks again!


Clear tile cache and bypass browser cache for timeline layer

This change is

Reviewed 1 of 2 files at r1.
Review status: 1 of 2 files reviewed at latest revision, all discussions resolved.

Comments from Reviewable

Reviewed 1 of 2 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Distributed Shampoo

Hey, great work with lingua ! I was wondering if you'd consider adding support for the distributed shampoo optimizer.

Only real thing that would need changing is allowing different optimisers for different weights (emb, lm head, and 1D weights with adam then rest with adam or shampoo,...). Done here for reference https://github.com/KellerJordan/modded-nanogpt

You can also use this repo from facebook: https://github.com/facebookresearch/optimizers
from distributed_shampoo.distributed_shampoo import DistributedShampoo
from distributed_shampoo.shampoo_types import AdamGraftingConfig

model = ...  # Instantiate model

optim = DistributedShampoo(
    model.parameters(),
    lr=1e-3,
    betas=(0.9, 0.999),
    epsilon=1e-8,
    grafting_config=AdamGraftingConfig(
        beta2=0.999,
        epsilon=1e-8,
    ),
)```

Thank you @sksq96 for a solution.


Support String or Number Unmarshalling in Int64 fields

This is for the SDK right?

@ire-and-curses no, this is a tracker for https://github.com/stellar/go/pull/1909#pullrequestreview-315809606

@ire-and-curses here's the PR for the js-sdk https://github.com/stellar/js-stellar-sdk/pull/457

This was finished.


[Keyboard Navigation-Footer-Hide the simulator]Visual focus indicator is not visible on all buttons on footer controls.

User Experience:
Users who depends on Keyboard will feel difficulty to access any controls if Focus indicator is not visible on that.
Test Environment:
OS: RS2 Version 1703(OS Build 15063.483)
Platform: Edge.
Repro Steps
1-Navigate to https://makecode.microbit.org/acc
2-Navigate to the Micro bit section element and select Code control given on it.
3-Navigate to the footer section and select 'Hide the simulator' control and select it.
4-Verify Visual focus indicator is visible or not on all footer controls on page.
Actual Result:
Visual focus indicator is not visible on following footer controls on page.
1.Hide the simulator
2.Download
3.Save
4.Undo/Redo
5.Zoom in/Zoom out
Expected Result:
Visual focus indicator should be visible on following footer controls on page.
1.Hide the simulator
2.Download
3.Save
4.Undo/Redo
5.Zoom in/Zoom out
MAS Reference:
https://microsoft.sharepoint.com/teams/msenable/_layouts/15/WopiFrame.aspx?sourcedoc={3b98b04f-4fab-4d3e-81af-a0906a34849c}
Suggested fix:
1.Using user interface components that are highlighted by the user agent when they receive focus
2.Using CSS to change the presentation of a user interface component when it receives focus
3.Using the default focus indicator for the platform so that high visibility default focus indicators will carry over
4.Using an author-supplied, highly visible focus indicator
5.Using script to change the background color or border of the element with focus
#div a:hover, #div a:active, #div a:focus {
background-color: #DCFFFF;
color:#66;
}
To provide an outline around the element we can use the below
a { outline: none; }
Refer attachment file for more details:
MAS2.4.7_footer_visual focus indicator is not visible on footer controls.zip

@microsoftsam , according to the video in attachment of the issue, there is not outline on the buttons that have the focus. Does the color change is not enough? I'm not sure if it is very relevant.

Verified on URL: https://makecode.microbit.org/acc and issue is fixed now. Hence closing the bug


[CONTRIBUTING] Document --verbose and --reload CLI flags

Original Discussion: https://github.com/pikapkg/snowpack/discussions/958#discussioncomment-72335

When testing with my local snowpack repository, I could sometimes reproduce the problem and sometimes I couldn't. Turned out that the problem didn't occur if a previous run created a cache in node_modules/.cache/snowpack/dev.
To address this friction, I would recommend we document the --verbose and --reload flags in CONTRIBUTING.md

I've been wondering about Run local snowpack in another project. I always run my local snowpack binary using the full path, npm link is causing too many problems in my experience. I wonder if we should recommend it at all? What is the benefit of npm link over using the full path?

I actually always use a full path and never touch npm link (I don't trust it :). It's really nice to have that guarentee that you're using what you expect:
../../snowpack/pkg/dist-node/index.bin.js --reload --verbose

Yes, agree. I've been bitten by npm link a bazillion times. As we don't need it, shall we remove from CONTRIBUTING.md?

+1, works for me!


Py312

#38 added py311 support. Can you also update setup.py? (as https://github.com/pfnet/pysen/pull/38/files#diff-60f61ab7a8d1910d86d9fda2261620314edcae5894d5aaa236b821c7256badd7 )


[fix][CI] Check Pulsar SQL / Trino license files

Fixes #16783
Motivation
The new "Pulsar CI" workflow doesn't currently check Pulsar SQL (Trino) license files.
The existing "build-and-license-check" builds only the core-modules profile because of performance reasons.
Modifications
Add license check to the step that builds the full apachepulsar/pulsar-test-latest-version:latest docker image.

@tisonkun Please review

I don't know if you did it on purpose but running this check also in the Build and License check step is a good thing because it can avoid unnecessary steps to be executed in case of failure

It's intentionally not handled in "Build and License check". if it would be done there, we'd have to compile the whole distribution and that would mess up the whole "Build and License check" step.

@lhotari any progress here?

No responses. Try to supersede in #18171.


Blue backgrounds show up on elements in the splash screen and home page

I am seeing blue backgrounds show up on the splash screen like this:
They also show up on some elements on the home screen, but activating Alternate Homepage Titles fixes that.
Thanks to some help in the discord, we determined that appending '.bg-info{background-color: transparent !important;}' >> Plex.css seemed to fix the issue on both splash and homepage

Just pushed a fix. Sorry was on vacation for a while.


Add copyright / license statements to the source files

Would you be willing to add copyright / license statements to the source files? It would make it easier for packages reviewing the license status of the package and make it easier to make the package available in Debian.
It could look something like the comment below:
/*
 * Copyright (c) 2012-2016 Austin T Clements
 * All rights reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

This would allow the tools used in Debian to check copyright status to work well with the code.  The copyright year should be adjusted to reflect the modifications done to individual files.

I've requested a Debian package in http://bugs.debian.org/834123 .

I'm happy to make the tools happy, but is this really necessary given the top-level LICENSE file? Is there at least something shorter I could add to the source files rather than duplicating the full license text all over the place?

[Austin Clements]

I'm happy to make the tools happy, but is this really necessary given
the top-level LICENSE file?

It make the tools in Debian happier at least.  And in some jurisdictions
it help legally too.

Is there at least something shorter I could add to the source files
rather than duplicating the full license text all over the place?

My goal with the suggested header is to make sure the automated tools
recognize the licenses.  I'm not sure how short it can be, but I believe
the one I sent will work.  See
<URL: http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html >
for some ideas what I am talking about.
--
Happy hacking
Petter Reinholdtsen

I looked through the DFSG and talked to some Debian maintainers I know and none of them thought it was necessary to duplicate the license in each source file. Unfortunately, I couldn't find any documentation at all on the expectations of these automated tools you mentioned.
How about if I add something like the following to each source file:
// Copyright (c) 2013 Austin T. Clements. All rights reserved.
// Use of this source code is governed by an MIT license
// that can be found in the LICENSE file.

[Austin Clements]

I looked through the DFSG and talked to some Debian maintainers I know
and none of them thought it was necessary to duplicate the license in
each source file. Unfortunately, I couldn't find any documentation at
all on the expectations of these automated tools you mentioned.

I do not know their expectations either, I have just some experience on
what is working. :)
Note, I talk about what make life as a debian package maintainer easier,
not what is 'necessary' for some legal or prcedural definition of
'necessary'.  It would make license review easier and increase the
chance of getting the package accepted into the archive without imposing
extra work on the ftpmasters and the package maintainer.

How about if I add something like the following to each source file:
// Copyright (c) 2013 Austin T. Clements. All rights reserved.
// Use of this source code is governed by an MIT license
// that can be found in the LICENSE file.

I believe the tools are looking for fragments of license text, and doubt
it will make the tools recognize the license.
--
Happy hacking
Petter Reinholdtsen

@petterreinholdtsen, I added the smaller copyright header I proposed. Please try that with the FTP masters. If they reject it, let me know and we can do something more onerous.

[Austin Clements]

@petterreinholdtsen, I added the smaller copyright header I
proposed. Please try that with the FTP masters. If they reject it, let
me know and we can do something more onerous.

The header is not recognized by 'debmake -cc' at least, which outputs
this by the latest version of the code from git:
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: package
Source: url://example.com
Files:     dwarf/abbrev.cc
dwarf/attrs.cc
dwarf/cursor.cc
dwarf/data.hh
dwarf/die.cc
dwarf/die_str_map.cc
dwarf/dwarf++.hh
dwarf/dwarf.cc
dwarf/elf.cc
dwarf/expr.cc
dwarf/internal.hh
dwarf/line.cc
dwarf/rangelist.cc
dwarf/small_vector.hh
dwarf/value.cc
elf/common.hh
elf/data.hh
elf/elf++.hh
elf/elf.cc
elf/enum-print.py
elf/mmap_loader.cc
elf/to_hex.hh
Copyright: 2013 Austin T. Clements.
License:   UNKNOWN
Use of this source code is governed by an MIT license
that can be found in the LICENSE file.
Files:     .dir-locals.el
Makefile
README.md
dwarf/.gitignore
dwarf/Doxyfile
dwarf/Makefile
elf/.gitignore
elf/Makefile
examples/.gitignore
examples/Makefile
examples/dump-lines.cc
examples/dump-sections.cc
examples/dump-segments.cc
examples/dump-syms.cc
examples/dump-tree.cc
examples/find-pc.cc
Copyright: NO_COPYRIGHT_NOR_LICENSE
License:   NO_COPYRIGHT_NOR_LICENSE
When using the header I proposed in elf/common.hh, the copyright is
correctly classified and I end up with this output:
Files:     elf/common.hh
Copyright: 2013 Austin T. Clements.
License:   Expat
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
.
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
You would make my life as Debian packager a lot easier if you include
the license in each file, as it allow automated tools like debmake to
track copyright status for each file automatically, and I get a way to
automaticlly discover changes.
--
Happy hacking
Petter Reinholdtsen


[#151572743] Reverting development to 5842037db22a37c1ab35efd8ffb2fc5…

Removing all stuff added.
@cchung89 @kkaminski

👌

🍭


[BUG] You can enter an issued_at date without a time.  Hijinks ensue.

Summary
It is possible to enter an issued_at date without  a time.  If you do, the date is not properly saved.
Why investigate?
Possible reduction of support issues.
Details
See discussion in https://github.com/rubyforgood/human-essentials/pull/3530
Enter a new (or edit a) distribution.  Change the date to a different day,  but blank out the time.  Save.
It saves as today.   Weird.
This is not incredibly high priority, as we've made it so the user has to go out of their way to enter an issued_at date without a time.
Criteria for completion
[] Figure out how we could fix this
[] Either put in a PR to fix it, comment the heck out of it on this issue and raise it to the senior folks attention, or come to the Sunday meeting to discuss.

Hi @cielf , Can I take up this one if available ?

Go for it!

Hi @dorner ,
We can solve this in three ways.

Prevent users from manually typing in the datetime field and ensure they only use a date-time picker.
Enable browser validations only for this form .  Browser prevents from form submission and automatically displays an error message indicating which field needs to be corrected.
When user clicks Save , before proceeding with the submission , validate the date time and display a custom error message in a popup if validation fails

Which one do you prefer is the best ? I prefer option 1 due to simplicity .

@dorner / @cielf , Can you check my above comment ? thanks

Hey @MohanThanigaivelan -- I definitely want @dorner's take on this.
If we were to go with #1,  we'd want to have the same restriction in some other places, for consistency's sake.   There might be  accessibility issues with not allowing the text input, though.   (need to check if our  current datepicker meets the appropriate standards)
The other two may  introduce an inconsistent look and feel, which can be confusing to users.

Yeah, I wouldn't want to choose #1 - locking things down unless you have JS working is kind of a last resort.
If we can detect the bad date/time on the controller side, I'd rather validate it there and punt them back with an error. We should be able to do this in a reusable way so all date-time fields can make use of that logic.


Add envtest suite for Seed

How to categorize this PR?

/area quality
/kind enhancement
What this PR does / why we need it:
Add an envtest setup for the Seed cluster, similar to the existing Garden cluster envtest suite.
Adds CRD's typically deployed during the SeedBootstrap

Gardener Extension CRDs (Worker, Infrastructure, ...)
Istio CRDs
VPA CRDs
HVPA CRD

Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Includes copied of the HVPA & VPA CRDs in the resources sub-directory as they contain helm-specific templating instructions in the chart folder.
Alternatively, these resources could also be rendered to a temp directory and then applied.
I wanted to use this functionality with PR #3893 to test the federated seed controller.
Release note:

Hm, why do we need this dedicated testenv for the seed? It's not quite similar to the garden - here, we need to run the gardener-apiserver in order to be able to create Gardener-managed resources.
For your use-case the standard testenv provided by ctrl-runtime can be used, or? It seems that you only want some helper functions that properly prepare the environment by installing the CRDs, etc.?

Alternatively, these resources could also be rendered to a temp directory and then applied.

+1, let's try to not duplicate them if not really necessary. Also, you shouldn't need to render them to a temporary directory - couldn't you directly apply them?

Hm, why do we need this dedicated testenv for the seed?

For reuse in tests that need a Seed cluster e.g for the federated seed controllers.

For your use-case the standard testenv provided by ctrl-runtime can be used, or? It seems that you only want some helper functions that properly prepare the environment by installing the CRDs, etc.?

Yes, it is only a wrapper around ctrl-runtime envtest with installed CRDs.

It seems that you only want some helper functions that properly prepare the environment by installing the CRDs, etc.?

Is this not a valid reason?

OK, I was just wondering about the general approach to wrap the envtest entirely. Maybe it's simpler/good enough/less code to just define some helper functions in the pkg/utils/test package? I don't have a strong opinion, just wanted to chat about it, cc @timebertt who is much more into this.

/assign
Will take a look

/close as reviewers determined that it should instead by just a helper function


add LayoutType attribute in additional field parameter

Add support for Integer, Decimal and Boolean layout render fields.

Thanks for proposing this, I didn't realize that GELF had actual parameter types beyond string values.
A few observations before I consider this ready to merge:

The .DotSettings.user file from resharper doesn't seem useful
You corrected a lot of spacing (including tabs I shouldn't have introduced), which is good but I'd prefer to see any cosmetic changes in non-related lines done in a separate commit, to make it easier to know what each commit is about
Same remark about the change to a newer version of NLog; I also noticed you changed the existing assembly reference to a fully qualified one, not sure about the implications of that. That should be in its own, third commit at least.

For example, GrayLog can not build statistics on a string value only numerical. This is the main argument. Numbers and strings are different for GELF. And GrayLog understand the parameters of different types in different ways.

*.user files is specific for users and not for repository (i add in .gitignore)
correct spaces — it is a habit :)
the upgrade is not required, I agree. In any case, this pullrequest for your fork, the main project is abandoned.

I think you could develop this project further.

I agree that it's a good feature, thank you for your input about the Gelf format. But you should clean up your commits: review manually every line that you commited an remove the uneeded changes such as the .user file and the library upgrade. Adding it to .gitignore isn't sufficient, you should ensure you're not submitting it to source control. And please split your submission in several commits, at least code changes in one, and cosmetic-only lines in another (Git lets you pick specific lines in a file to add to a commit).
I'll accept your pull request once it's revised (or you can make another, as you prefer).
Thanks!

OK, I'll do.


Failed prop type: Invalid prop style.display supplied to Motion.

Failed prop type: Invalid prop style.display supplied to Motion.
When using:
            <ScrollArea
              style={{height: '100vh'}}
              verticalScrollbarStyle={{display: 'none'}}> ...

Same as issue #59

How to fix this?
Failed prop type: Invalid prop 'style.background' supplied to 'Motion'.
My code:
verticalScrollbarStyle={{ 'background': '#1d1f2d' }}

@sizeight Any fix in sight?

@sizeight did a PR. I left 2 small comments and after fixing that I'll merge it. It should fix this issue ;)

Great @souhe 👍

@souhe Thank You

Thanks to @sizeight it should be fixed since version v0.5.1 :)


Editor sidebar resizes when switching between Inspector and Node tabs

Godot version:
3.1 official, 150% scaling
OS/device including version:
Windows 10 64 bit
Issue description:
When toggling between the Inspector and Node tabs the entire right sidebar (in the default layout) will expand (when switching to Inspector) or shrink (when switching to Node) a little. Minor but a bit annoying.

Duplicate of #25317.


Verbose Logging Control

Problem: This action emits a large amount of logging by default. When used in a composite action with other steps, this action will eclipse the logs of other steps.
Example:

Solution: I created a PR to add Verbose Logging control via an optional "verbose-logging" input:
https://github.com/jdcargile/ms-teams-notification/pull/34
I have not tested these changes.

Looks like verbose-logging parameter is not working.
I see in workflow log that verbose-logging: false (I didn't specified it explicitly in action parameters) but additional log data is also in the log.
I also tried to set it to false in action parameters, but it doesn't work either.
Probably, this condition is not correct:
https://github.com/jdcargile/ms-teams-notification/blob/28e5ca976c053d54e2b852f3f38da312f35a24fc/src/main.ts#L28
As I see current code differs from #34 PR changes, but this issue is still opened


Download old version in developer.salesforce.com/media/salesforce-cli/sfdx-linux-amd64.tar.xz

Summary
When you access https://developer.salesforce.com/media/salesforce-cli/sfdx-linux-amd64.tar.xz normally you would download the latest stable. But as of today, it's an old version: sfdx-cli-v7.82.0-3d0c527ac6-linux-x64
Steps To Reproduce:

Download https://developer.salesforce.com/media/salesforce-cli/sfdx-linux-amd64.tar.xz
Unpack
See old version  sfdx-cli-v7.82.0-3d0c527ac6-linux-x64

Expected result
Download the latest stable version.
Actual result
Downloaded an old version: sfdx-cli-v7.82.0-3d0c527ac6-linux-x64

@thvd  -- that's no longer the URL to download the tarball. The URLs for the tarballs are documented over here:
https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_setup_install_cli.htm#sfdx_setup_install_cli_linux

I am going to go ahead and close this one, feel free to reopen if needed @thvd. Thanks @daveespo for helping out :)

@daveespo @iowillhoit  I see, but till yesterday this did just work fine, so something looks like changed?
I have no problem with the switch, in fact i already migrated to the other. But it might be confusing to have it retrieve an ancient version?

Hey @thvd afaik, that url always pointed to v7.82, what I saw from other customers using it is that they were getting sfdx autoupdated so most of the time they didn't noticed the old version.
Google keeps showing docs like this when looking for install instructions: https://developer.salesforce.com/docs/atlas.en-us.222.0.sfdx_setup.meta/sfdx_setup/sfdx_setup_install_cli.htm
so a few people does use that URL, we can't update those docs but we might plan to actually remove that old tarball in the future.
Sorry for the confusion, we noticed it a few months ago but there's nothing we can do other than redirect people to the latest docs: https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_setup_install_cli.htm#sfdx_setup_install_cli_linux
Hope that answers your question.


Pick and place data is broken when uploading to JLCPCB

When creating an SMD service order with JLCPCB, the placement data is not interpreted well by JLCPCB and all the parts are placed outside the board.
To preproduce:
Create a JLCPCB SMD service order with the files in the attached production.zip which were generated by Kicad 6.0.7 and this plugin. When you get to the 2D/3D board view, all the components are placed away from the board as shown here https://i.imgur.com/CCbHAmx.png
production.zip
Sanity check:
Do the same with the files in the attached easy_eda_fab.zip. These files were exported from an easy eda design and do work.
easy_eda_fab.zip
I believe that this is a recent change in JLCPCB and not specific to this plugin, but posting here such that it can be adapted to generate files compatibles with JLCPCB.

I have the same issue. It seems JLC PCB does not accept negative Y coordinates. They are treated like positive ones and thus the entire placement is mirrored to the top.

You can work around this by moving the entire PCB up, so it sits in top of the frame. Then all coordinates are positve and the parts are placed correctly.

Moving the PCB up above the page frame fixed it. Thanks @harbaum.  BTW, Kicad and the position file have the Y axis in the opposite direction with minus at the top on Kicad and at the bottom in the position file.
@bennymeg, I suggest that the plugin will address this JLCPCB's issue, e.g. by displaying a warning if negative coordinates exist or even by adjusting the coordinates of in the production files.

I just found that I can disable the red frame so brining the lower left corner of the board to 0,0 workaround the problem, provide 0,0 based coordinate system and looks great.

@zapta I'm not sure this should be addressed.
I have ordered some PCB's couple of days ago, while the parts position looked fine in the components page it appeared outside the PCB it the orders details page.
All the PCBs came fine, so I think this is a bug in their GUI (or they can fix it manually quickly while the edit the production files in house).

@bennymeg, yes, it's a JLCPCB bug and a recent regression as this used to work a few weeks ago.  I hope they will fix it soon.
With this bug, the normal Kicad/JLCPCB workflow which this plugin targets is broken which will probably puzzle many users of this plugin. You could add a warning if negative numbers show up with a link to this issue and the workaround. Closing this issue as is is also fine.
BTW, this plugin is a great time saver for me as I upload to JLCPCB the same design many times until all my Kicad footprints have the 'correct' offset and rotation. I run it using the icon that showed up in the PCB layout editor and having the file explorer opening automatically is a nice touch. I wish it would also upload the files automatically as EasyEda does but I don't know if it's possible without backend integration.

I cannot add this feature as JLC them self and the KiCad developers forbid me to integrate this directly to their site (probably because they want people to use EasyEda instead). There is a branch with some integration code, but it needed to be finished and it would not be able to be published to the KiCad addon library.
Anyways, the PnP file is still valid (I have tested it last week). I will keep this issue open in the meantime so people could find it easily until the bug will be fixed.

Sounds good. Thanks @bennymeg.

I informed JLCPCB about the regression. Let's see what happens.

I have just encountered the same issue.
The simplest way to workaround the issue is to move Drill/Place file origin (Place menu) to the left bottom corner of the PCB and make sure to select "Use drill/place file origin" when plotting/exporting data.

Thanks for the workaround. Looks simple indeed.
It's strange that Kicad and the CPL file use opposite directions of Y
coordinates. Personally I prefer Y+ to be up.
On Sun, Sep 18, 2022 at 6:48 AM Marek Piechut @.***>
wrote:

I have just encountered the same issue.
The simplest way to workaround the issue is to move Drill/Place file
origin (Place menu) to the left bottom corner of the PCB and make sure
to select "Use drill/place file origin" when plotting/exporting data.
—
Reply to this email directly, view it on GitHub
https://github.com/bennymeg/JLC-Plugin-for-KiCad/issues/14#issuecomment-1250312823,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAQVMQKZRPWBF57G7PTRPLTV64MUBANCNFSM6AAAAAAQJ5QGOM
.
You are receiving this because you were mentioned.Message ID:
@.***>

It is legacy related to the canvas behaviour of library of WxWidgets that Pcbnew use.

From my experience, setting Kicad footprints to have 0,0 where the JLC red
cross is results in proper x,y positioning in JLCPCB.
With these JLC x,y offset fields, modifying the kicad footprints will be
unnecessary.
On Thu, Oct 20, 2022 at 7:27 PM Hildo Guillardi Júnior <
@.***> wrote:

It is legacy related to the canvas behaviour of library of WxWidgets that
Pcbnew use.
—
Reply to this email directly, view it on GitHub
https://github.com/bennymeg/JLC-Plugin-for-KiCad/issues/14#issuecomment-1286376040,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAQVMQOMGAY7I5NPSK7DCWDWEH5R5ANCNFSM6AAAAAAQJ5QGOM
.
You are receiving this because you were mentioned.Message ID:
@.***>

I have used a old plugin for while and produced some boards. I just make Y axis equal -Y: line 128 of https://github.com/hildogjr/kicad_jlcpcba/blob/master/jlcpcba_main.py

I'm not sure if this is the same error, but it just hangs on the Processing files... page forever for me:

I have read something about changing the rotation of the files to fix it, but I have no clue which files would need rotation or anything as nothing ever shows up.

I'm not sure if this is the same error, but it just hangs on the Processing files... page forever for me:
I have read something about changing the rotation of the files to fix it, but I have no clue which files would need rotation or anything as nothing ever shows up.

No, just try again

Ah right, this is a "normal" part of uploading things this way? (My first time ordering a pre-populated board)

Ah right, this is a "normal" part of uploading things this way? (My first time ordering a pre-populated board)

Sometimes it just doesn't load. If it happens everytime, who knows, maybe another JLC bug.
Btw, I tried placing grid origin somewhere on the left edge of a board to get preview in JLC cart zoom in correctly.
And I think the original issue is not present anymore.

That's good to know, thanks for the response.

Since it's the first time you are ordering pre-populated boards, the basic
parts are your friends ;-)  For cost considerations, try to minimize the
number of unique non basic part types. Also, if you order 5 PCBs, you can
still ask them to populate only 2, or 3, or 4.
Also, this plugin allows to add offset and rotation attributes to
footprints such that when you upload to JLCPCB you will not need to make
each time manual adjustments.
My 2c. Good luck.
On Fri, Mar 1, 2024 at 12:42 PM Rodrigo Constanzo @.***>
wrote:

Ah right, this is a "normal" part of uploading things this way? (My first
time ordering a pre-populated board)
—
Reply to this email directly, view it on GitHub
https://github.com/bennymeg/JLC-Plugin-for-KiCad/issues/14#issuecomment-1973887095,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAQVMQMJKTY5EJP7NWBS4HDYWDR4JAVCNFSM6AAAAAAQJ5QGOOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNZTHA4DOMBZGU
.
You are receiving this because you were mentioned.Message ID:
@.***>

In the end I managed to load it. Thankfully it's a bunch of standard 0805 parts (that I will have populated) so things showed up correctly enough. I was just worried something broke in the process of trying to load things.

I have some SMD soldering to look forward to for the other side when it arrives, but one problem at a time!

And I think the original issue is not present anymore.

Please close this issue if it was fixed by JLC.

People report here that the bug is gone so closing.


Rotate quaternion by 90 degrees to point 0 to East to conforms to REP-105

In order to conforms with ROS conventions relating to frames orientation, an IMU orientation message must be in ENU frame. That means yaw must point 0 when facing East.
https://www.ros.org/reps/rep-0105.html

Thanks for this. We encountered the same issue and this resolved it. I hope this gets merged in soon!

We have reworked the driver to better support ENU and this has been fixed.
The develop branch should include all these fixes.


Scrolling behavior

Thank you very much for doing this.
I'm using this on top of a tableview that scrolls. The menu button also scrolls with the tableview. Is there a way that the button could be fixed and static in the bottom?
Thank you in advance.

Hi, @gluecode
Sorry for late..
I think you need to use AutoLayout. I don't know about your stiation.
If you need any help, please tell me the details.


Start leveraging Java 8 language and library features

In response to #27, we're moving forward in a Java >= 1.8 mode. This is a first cut at removing some of the cruft that was required to continue supporting Java 6.

Coverage decreased (-0.6%) to 99.422% when pulling 4cd6433ae12b69d406641fd9ce4241d629710c25 on leverage-java8 into b971e03654387ea46053ce15a5302eaf7bef9164 on master.

Coverage remained the same at 100.0% when pulling 65954ba3b3c69863bd413c1d727c18d38b973860 on leverage-java8 into b971e03654387ea46053ce15a5302eaf7bef9164 on master.


ci: add dependency review

Let's see if the new OSSF scorecards will (correctly) detect issues introduced by this PR.


uh yes

I don't think it's much use to compare the performance with a discontinued implementation that is incomplete on many levels. So I'd suggest to remove the entire section.
And maybe add a performance comparison with other markdown libraries. I'm not aware of any other Crystal implementations, but maybe some library could be used for that.


Separate localization component to allow programming in foreign language

I have a need to use a simple, easy to follow programming language to evaluate the ability of children in foreign countries before they have learned English to a good enough degree to program in.
I think coffee-script fits the bill, as most of what is written can be read almost like normal sentences in English. All the variable names can be written in a foreign language, and the symbols are universal, so allowing the reserved words and built in functions to be translated is the last hurdle.
I had a look at the source code, and could not find one location to edit all the command names to a new language. If the command names could be abstracted, then it would allow for translation into many languages.
Although I recognize that English language is pretty much a must for any programmer, due to most resources and forums being in English, it would be nice to have the possibility to translate to another language - and especially for my particular need.
It would also be good to be able to selectively translate additional javascript function names, by defining a list perhaps in JSON.
Thoughts on the usefulness of this task, and how to go about it welcome.

Interesting project.
I think you would have to do this on your own by forking CoffeeScript and editing the files. The place to start would be lexer.coffee. You could try a general localization approach --- I am not part of the CoffeeScript development team --- but I doubt the fork would be accepted back into master CoffeeScript because the complexity of the additional layer does not benefit the vast majority of more-or-less English speaking CoffeeScript users.
Full localization is a large task, it can include right-to-left reading/printing, numbers not in the usual notation, different date systems, words not delimited by spaces and much more.
It would be simpler to directly translate the terms in the compiler files and run it through Jison, that is if you only need to do it once for one language. That would still mean that error messages, for example, would be presented in English. Not ideal.
The advantage with CoffeeScript/JavaScript is that you can have it running inside a browser, that should make it easy to set up an environment based on equipment such as the SMILE Plug --- a battery backed single board computer with node.js and Arch Linux being developed by Marvell and Stanford. It acts as a WIFI access point for a class room. Assuming that the students have some kind of WIFI enabled mobile devices at hand (cheap android tablets/phones or ipad/ipod/iphones) with a web browser. That kind of setup would work in a rural/village environment without reliable power or internet access.
If you can assume a more traditional setup of PC's, then you could consider BYOB. It is a visual language built on Scratch/Squeak/Smalltalk and extends it with prototypal inheritance and higher order functions. See the manual for example the crossproduct using map on page 19. Scratch and BYOB have already been localized to a number of different languages so I think your task would be much easier there.
You could also consider the Scheme programming language. It is a simple language built with only a few primitives so translating those should not be too hard. Its syntax is (of course (not what most people) expect) and it might be too theoretical Computer Science, then again if the purpose is to test the students mental abilities then it might be ok. You can find an implementation in CoffeeScript in scheme-on-coffee. It is the meta circular evaluator from SICP. I have recently integrated it into my interactive literate documentation spin-off, polyglot grimoire. And it runs the introductory examples in my work-in-progress interactive version of SICP, except it is for now missing and, or and not special forms.
So those were 3-4 ideas for how you can progress. I can't say what will work the best for you, but think you should first have look at Scratch or BYOB. I wish you good luck.

You can find a decent description of CoffeeScript syntax here:
https://github.com/austinbv/pygments/commit/32df56cd5412cd483371f39c0562160696d19fa5
I think coffeescript would be a pretty tough language to localize.
It's a pretty feature-rich language, despite the crisp, refreshing look of the code that you can produce in it.
The internals are a bit complex, and if a line mapping patch ever gets accepted, they're only gotta more complicated.
I'd suggest attacking the problem from a different angle.  Either a) find a language that's more suited to your task or b) figure out a simpler way to deal with the English hurdle.
My two cents on evaluating programming ability is that natural language acquisition skills are actually a decent indicator of programming aptitude (but obviously not the only factor).  So it might actually be an interesting experiment to see how quickly foreign students can internalize simple English words like "for", "of", "in", "while", "if", "class", "this", "break", "continue", etc.  Easy for me to say as a native English speaker, of course.  Children are pretty much sponges when it comes to vocabulary; it's abstract thinking that's more challenging to them.
One great thing about coffeescript is that most fundamental feature of the language, functions, are defined symbolically, so no English bias there.  (<- and <=)


feat: add some horizontal lines to trigger a new release

This PR is solely for triggering a new release to ensure that the credentials work now

Summary by CodeRabbit

New Features

Introduced a new section in the Getting Started guide for the AdGem Unity Package.
Added step-by-step instructions for setting up the AdGem SDK with Unity.

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


Troubleshooting Debugging Issue After .NET Framework Upgrade: Breakpoints Not Triggering in CMS

🚀 Hey everyone, seeking some advice on upgrading my old webforms website named CMS, which currently runs on .NET Framework 4.8.
I've embarked on the journey to migrate it to a newer .NET version, opting for a side-by-side incremental project upgrade approach. As part of this transition, CMS is now linked to CMSCore via a Yarp proxy.
Everything seems to be functioning smoothly; I can execute CMSCore through a razor page, and navigating to an aspx page from CMS works flawlessly.
However, I've encountered an issue while attempting to debug code within CMS, in any .aspx.cs file. Despite setting breakpoints, they fail to trigger, displaying the message:
"The breakpoint will not currently be hit. No symbols have been loaded for this document."
Before upgrading to CMSCore, debugging within CMS was functioning well.
Any insights on how to resolve this would be greatly appreciated! Thanks in advance. 🙏

I don't believe this issue is related to YARP. It might be worth asking in the https://github.com/dotnet/upgrade-assistant repo.
As a quick guess, if you're starting multiple projects in VS, make sure that their configuration is set to "Debug" and "Start".


"exerise" should be "exercise"

In "Activities" under "Cause and effect"
page link - https://guide.inclusivedesign.ca/activities/CauseAndEffect.html

Can I help in this issue is no one is working?

Hi @creatorpiyush , a PR has already been submitted for this.

can i work on it?


How to configure Controls

This addon is awesome and works well for the description and args table in the storybook docs. However, the "Controls" panel in the storybook canvas does not work. Is there any configuration I am missing?
I have the following config in preview.js:
if (docJson) setStencilDocJson(docJson);

export const parameters = {
  controls: { hideNoControlsWarning: true },
  docs: {
    extractArgTypes,
    extractComponentDescription,
  },
};

I found the following workaround. If I use extractArgTypes directly in the story Meta tag, it works (my-button.stories.mdx):
import { extractArgTypes } from '@pxtrn/storybook-addon-docs-stencil';

<Meta
  title="Components/Button"
  component="my-button"
  argTypes={extractArgTypes('my-button')}
/>

Is there a way how to configure this globally?

Am experiencing the exact same problem after updating to Storybook 6.4.x, was working fine in 6.3.x but now I have to do this for every story.  Not really a huge problem but would be nice to just set it once in preview.js and be done with it.

Sorry for the late reply. This still works for me with storybook 6.4:
import { ArgsTable, Meta } from '@storybook/addon-docs';

<Meta
  title="My component"
  component="my-component"
/>

<ArgsTable of="my-component" />

Could you create a storybook reproduction repository by running npx sb@next repro, publish it in a public github repo and post the link to it here?
You might also try if the bug is fixed with version 6.4.0 of this module.

You are right, I was using a different syntax:
import { ArgsTable, Meta } from '@storybook/addon-docs';

<Meta
  title="My component"
  component="my-component"
/>

<ArgsTable story="My component" />

Can confirm that it works by using of instead of story for ArgsTable

Ah, actually, the props are shown correctly but don't activate addon-docs for me in Docs view, works in Canvas, though...

@laddi-netapp  Could you provide a repo where i can reproduce the issue? Just create one with npx sb@next repro and push to github please.

See this comment: #11


Update dependency: deps/kevm_release

Strange, AssertTest.checkFail_assert_false() keeps failing on the output check, but running it locally doesn't produce any diff on my machine. Will re-run once again.


getOAuth2Response question

Hi there,
I am trying to upgrade the httpyac package in a project and the method getOAuth2Response has been moved to the plugins but I am not sure how to go about calling it now.
We were importing the variables package and doing
const response = await varaibles.replacer.getOAuth2Response('implicit', 'oauth2', { variables });
but I can't figure out how to do that now that it is in the plugins folder and the plugins folder isn't exported.
Could we just do this:

or is there a better way I am not seeing?
Thanks in advance.

All methods inside plugins are not really public for me. Since I want to eventually support browsers in the future, they must not become public either, since NodeJS logic is included there. I will instead add the method as a separate helper method $getOAuth2Response in the javascript execution.


feat : getLCs test created : closes #9

Do I understand correctly that only the expected scenario needs to be tested?
Or does there also need to be test implementation for 'incorrect' conditions.
eg. This function takes two strings and finds he longest common subsequence.
It has an if statement to test if one of the strings is empty, and will then return null.
Should I write a test that checks the if statement, by passing in one string + one empty string?..

Hello, if I understood correctly what you are saying, then yes, you should test with empty strings to check whether the function correctly returns null.

thanks for the detailed feedback.

but it's missing documentation (comments) and assertions in regards to the requirements for entering the branches that the tests cover.

by comments you just mean like this (from your test file isac):
    /**
     * Test if the method works with input arrays consisting only of one row.
     */
    @Test
    public void BinarySearch2dArrayTestOneRow() {
    // ... //
   }

I will also implement some more tests for this method (inputting empty strings) etc. And see how many I can get done just in this method (hopefully 4).

done. I'm not sure if I've constructed the assert comments correctly.
Should it be written more in terms of 'asserting' that the input arguments are as expected?
As it is, I've written the comments to assert that the correct value is returned based on differing states of input arguments.


The reason the old system used xml

XML provided a method of filtering what went into the .im file.  Anything the importer didn't understand was ignored.  The problem with creating an .im file directly is you may cause problems in the game with a corrupt .im file.
The original system created a .im file directly.  It was later amended to add in the XML step to provide a degree of isolation.

This is correct - unfortunately the old XML exporter was very slow. (and extremely prone to crashing)
Although that method may have worked for small meshes back in 2008, models these days have many more triangles. Writing out the positions, normals, texcoords, tangents, skinning, and other data for each vertex in the mesh as text-based XML, just for a separate program to instantly read that data back to generate an indexed mesh is frankly pointless (and probably introduces more stability issues than this exporter ever did).
TrainzMeshImporter was designed for simplicity and ease of use so people wouldn't accidentally introduce any issues by making their own poorly written exporters. Custom importers were unsupported by Auran (and are still unsupported by N3V), but quite frankly TrainzMeshImporter is unsupported by them too (seeing as it hasn't had an update in over a decade). It's worth noting that there's probably a large difference here between unsupported; as in "we aren't responsible for fixing your exporter if something breaks" - and directly opposed; "we recommend not writing to our format". As far as I'm aware, their position is the former. Several DEM software for Trainz do a similar thing (there's no such thing as TrainzMapImporter).
I have done extensive research on .im, and given that we know the purpose and function of every byte in the file it makes much more sense to write out an .im directly. I have verified that in many cases this exporter will output data identical to TrainzMeshImporter, and if not it's because it's using much more recent (official) chunk versions (used by the 3DSMax exporters) that support more features.
It's also worth noting that all of the official, built-in Blender exporters work like this too. IIRC i'm pretty sure Blender's FBX exporter (the one Blender content creators use to make Trainzmesh files today!) uses reverse engineered info about .fbx as well, and writes to the format just like we do, rather than using Autodesk's official FBX SDK.
Feature-wise, my exporter gives us the ability to use many more features than TrainzMeshImporter ever did (as evidenced by the number of export parameters), and is designed with general JET usage in mind rather that just Trainz. It's unlikely that anyone will ever make another game using JET, but if they did we're (to my knowledge) perfectly conformant with the spec 🙂


Add Visual Studio specific RC1 binaries.

This is needed for Visual Studio RC1 backwards compatibility.

/cc @Eilon @muratg @davidfowl

/cc @pranavkm

:up: :date:


Add a index page for tags

In my website, I have setup tags for each page (using R package blogdown). All tag links work fine, except a missing index pages of all tags. It will be really useful to add an index file for tags.

Hi.   You can resolve this issue by applying the changes from commit c7746c8  in my fork.  I also made it such that tags and other taxonomies can be listed and browsed, see /themes/<THEME>/layouts/_default/terms.html
It's just a few lines of code.

I forgot to mention this also addresses another issue (I sort of assumed you discovered the same thing): sections with tags applied to them via _index.md do not get listed properly  (it just shows the non-section pages with those tags applied).
If all you want is an index of all tags the terms.html part should do the trick.  This can also just be dropped in your layout/default folder per the taxonomy documentation


Helper script updates

Description
Various minor updates to the shell scripts in /scripts and accompanying documentation, including coping with build locations used by recent versions of spack.
Resolves #243
Resolves #261
Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change)
[x] Requires documentation updates

Testing
No new tests
Test Configuration:
OS: Ubuntu 22.04
Compiler: GCC 11.4.0 / OneAPI v2024.1.0
SYCL implementation: Hipsycl v0.9.4 / DPC++ v2024.1.0
MPI details: MPICH v4.0.2
Hardware: CPU (Intel Alder Lake)
Checklist:
~- [ ] I have added tests that prove my fix is effective or that my feature works~

[x] New and existing unit tests pass locally with my changes
~- [ ] Any new dependencies are automatically built for users via cmake~
[x] I have used understandable variable names
~- [ ] I have run clang-format against my *.hpp and *.cpp changes~
~- [ ] I have run cmake-format against my changes to CMakeLists.txt~
~- [ ] I have run black against changes to *.py~
[x] I have made corresponding changes to the documentation
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings

What version of spack are you using and where does it put the builds?  For me spack builds somewhere in /tmp (apparently it's faster) but installs in ~/spack/opt/spack.  The activate script then produces symlinks to the tmp builds rather than the install locations.

I'm on spack 0.22.
Agree that linking to /tmp isn't ideal, but that was the intended behaviour - it's what spack itself does in the root of the spack env (with less useful names). I reboot my machine so rarely that it wouldn't be a problem for me, but I concede that won't be true for everyone.
Depends what we think these links are for.
I only really use them to look at cmake log files, so the install directory wouldn't be much use to me (although admittedly some of the more useful logs are generated one level above the build stage dirs).
I do agree that run_eg.sh should use the installed executables though.
So maybe we link the install dirs instead and I just use the spack-generated links to see the build logs. I'd be happier if I could find a config option to make it name those links differently...

Happy to keep links to build directories as they are in activate.  For run_eg.sh we can get the install location with something like spack location -i --first neso.  Not sure how to query the most recently built version in spack though.

Yeah, I'm not thrilled about how it now builds stuff in tmp. Unfortunately there does not seem to be anyway to reconfigure this behaviour. (I think it's only faster on clusters with network file systems, too.  Pretty sure it won't make a difference when we're building on our own machines). It means that when you reboot it might have to completely rebuild nektar++, NESO, etc. Something I've discovered which can at least help to minimize this is using ccache. Perhaps we should configure this in our environment file.
In terms of the run_eg.sh script, probably the easiest thing is to use the executables in the view directories.

Forgot about the views... thanks, I'll use those in the script then.
For the build locations, on a per-user basis I assume we can just change the value(s) for build_stage in config.yaml?

For the build locations, on a per-user basis I assume we can just change the value(s) for build_stage in config.yaml?

I think the problem with that is it will keep all of your spack builds there (e.g., cmake, openblas, fftw, hdf5, etc.) and never delete them. We only want to keep the "develop" spack builds.

I think the problem with that is it will keep all of your spack builds there (e.g., cmake, openblas, fftw, hdf5, etc.) and never delete them. We only want to keep the "develop" spack builds.

Yeah that's not ideal either, is it... maybe mitigating a bit with ccache is the way to go for now then.

run_eg now looks for the most recently modified solver exec in views by default; this is ready for review again.

I have a long standing bug with the views related to hdf5 which I'm not sure how to fix, namely:
==> Error: The environment view in /home/jedge/NESO/views/gcc-hipsycl could not be created, because the following two specs project to the same prefix:
    hdf5<EMAIL_ADDRESS>api=default build_system=cmake build_type=Release generator=make arch=linux-ubuntu24.04-skylake, and
    hdf5<EMAIL_ADDRESS>api=default build_system=cmake build_type=Release generator=make arch=linux-ubuntu24.04-skylake.
    To resolve this issue:
        a. use `concretization:unify:true` to ensure there is only one package per spec in the environment, or
        b. disable views with `view:false`, or
        c. create custom view projections.

I have a long standing bug with the views related to hdf5 which I'm not sure how to fix, namely:
==> Error: The environment view in /home/jedge/NESO/views/gcc-hipsycl could not be created, because the following two specs project to the same prefix:
    hdf5<EMAIL_ADDRESS>api=default build_system=cmake build_type=Release generator=make arch=linux-ubuntu24.04-skylake, and
    hdf5<EMAIL_ADDRESS>api=default build_system=cmake build_type=Release generator=make arch=linux-ubuntu24.04-skylake.
    To resolve this issue:
        a. use `concretization:unify:true` to ensure there is only one package per spec in the environment, or
        b. disable views with `view:false`, or
        c. create custom view projections.

I am also seeing this, only after I moved to a new machine and started using spack v0.23 - could this be a spack 0.23 issue?

According to the spack documentation, it should be possible to simplify the views and avoid these sorts of headaches using something like
  view:
    gcc-hipsycl:
      root: views/gcc-hipsycl
      select: ["neso%gcc"]
      link_type: symlink
      link: all
    oneapi-dpcpp:
      root: views/oneapi-dpcpp
      select: ["neso%oneapi"]
      link_type: symlink
      link: all

This should put a particular build of NESO and all of its run and link-dependencies in the view, and would be more reliable that using select: ["%gcc"]. However, when I tried it the only thing put in the view was NESO itself.

Issue was that those two hdf5 packages (and some others) used different MPI distributions but this didn't get projected to disambiguate them in the view


Purge sessions from Datastore

What is the context of this PR?
This PR adds the yaml needed to purge eq-sessions from datastore.
How to review
Make sure you have a GCP deployment with sessions in (if you haven't you will need to create one and launch a survey, you will also need to remove --set=00:00:00 from the script, as it is designed to purge before 12am on the day its run). Once run check to see a job is created in Dataflow and then the current sessions are removed
Note:
The Dataflow API will probably not be enabled in your GCP environment, to enable you will need to run your infrastructure again with it pointed at the branch enable-dataflow-service or turn it on manually

I may be doing something wrong here, but running the following command did not delete any eq-session data for me:
HTTPS_PROXY=localhost:8118 PROJECT_ID=james-test-292314 DATAFLOW_TEMPLATE_VERSION=2020-11-30-00_RC00 EXPIRATION_TIME_OFFSET=3600 fly -t census-prod execute --config ci/purge_expired_sessions_from_datastore.yaml

I may be doing something wrong here, but running the following command did not delete any eq-session data for me:
HTTPS_PROXY=localhost:8118 PROJECT_ID=james-test-292314 DATAFLOW_TEMPLATE_VERSION=2020-11-30-00_RC00 EXPIRATION_TIME_OFFSET=3600 fly -t census-prod execute --config ci/purge_expired_sessions_from_datastore.yaml

I may be doing something wrong here, but running the command did not delete any eq-session data for me

My fault - had old sessions that aren't indexed. Retested and worked fine 👍🏻

I may be doing something wrong here, but running the command did not delete any eq-session data for me

My fault - had old sessions that aren't indexed. Retested and worked fine 👍🏻


runtime: omit the release number in RPM Requires:

For RPM packages (but not for DEBs), OBS does not use the release number
provided in the spec file, hence, when specifying a
Requires: package = version-release dependency, it's not possible to know
in advance the correct release number until that reuired package
is built.
Note that omitting the release number works for RPM packages but not for DEB.
This fixes/complements e6dac82
Fixes: #563
Signed-off-by: Marco Vedovati<EMAIL_ADDRESS>

/test

flakey test for ubuntu-18-4: /cc @GabyCT @chavafg
ok 1 Replication controller
1..1
not ok 1 Verify nginx connectivity between pods
# (in test file nginx.bats, line 29)
#   `kubectl wait --for=condition=Available deployment/${deployment}' failed
# Image is up to date for docker.io/library/busybox@sha256:6dce4a9c1635c4c9b6a2b645e6613fa0238182fe13929808ee2258370d0f3497
# Image is up to date for docker.io/library/nginx@sha256:706446e9c6667c0880d5da3f39c09a6c7d2114f5a5d6b74a2fafd24ae30d2078
# INFO: k8s configured to use runtimeclass
# deployment.apps/nginx-deployment created
# error: timed out waiting for the condition on deployments/nginx-deployment
# deployment.extensions "nginx-deployment" deleted
# Error from server (NotFound): services "nginx-deployment" not found
# error: resource name may not be empty
Makefile:107: recipe for target 'kubernetes' failed
make: *** [kubernetes] Error 1
Failed at 40: sudo -E PATH="$PATH" bash -c "make test"
Build step 'Execute shell' marked build as failure
Performing Post build task...
Match found for :.* : True
Logical operation result is TRUE
Running script  : #!/bin/bash

Restarting (note: this PR doesn't make any runtime code changes...)

@egernst let me take a look :)

Build  with this branch:  https://build.opensuse.org/package/rdiff/home:katacontainers:releases:x86_64:alpha/runtime?linkrev=base&rev=22
Test:
http://jenkins.katacontainers.io/blue/organizations/jenkins/package-release-testing/detail/package-release-testing/64/pipeline/9


Form-level validation isn't working with immutable

The Problem
Form-level validation isn't working correctly when using components from react-redux-form/immutable. No model's keys/values are passed to a validator function.
Steps to Reproduce
Import components from react-redux-form/immutable
pass following validators object to Form:
const passwordsMatch = (vals) => {
	return vals.password === vals.passwordConfirm;
};

const formValidators = {
 '': { passwordsMatch }
};

Expected Behavior
vals argument contains object with model keys and values.
Actual Behavior
passwordMatch function gets called with undefined vals.

Can you make an example using the CodePen template? (see the readme) 🙏 thanks!

@davidkpiano I wanted to, but I couldn't find immutable version of react-redux-form on CDN. Do you know by change how can I use immutable react-redux-form there?

You can also use www.esnextb.in or www.codesandbox.io with import { ... } from 'react-redux-form/immutable' to recreate an example.

@davidkpiano thanks for recommended sandboxes! While I was creating an example I figured out what my problem was - I hadn't been passing the second parameter to 'combineForms' with the name of parent reducer, so react-redux-form apparently didn't know where to get my state. Interestingly enough, everything else was working fine.
I've also struggled with many other issues in react-redux-form which of a similar kind, especially with immutable version. It would've been nice to add more exception or warnings to give an idea of a wrong configuration or missing parameters/props.
For example, I also spent quite a few time to debug why server-side validation isn't working until I realized that I need to specify empty messages prop on Error component. Another example is when there's a field validator without message, it just does show up and no warning is displayed.

@yborunov Can you make a list of these in a separate issue? I will start adding more helpful warnings in development builds.
Thank you!


convert bridge-base to Maven

Convert bridge-base from Gradle to Maven. Hook up Findbugs and Jacoco coverage to fail the build if there are problems. Updated depdendencies for some low-hanging fruit (AWS, Joda, etc).
Testing done:

mvn verify (compile, unit tests, findbugs, jacoco coverage), verified in build logs that everything works as expected
mvn deploy - SNAPSHOT to the S3 repo to verify publish works

This is great. Thanks for doing this!


Double jar icu4j

Is your Frank! up to date?
8.2.0-20240614.042327
Current Behavior
When starting with Frank!Runner it says:
The following double jars are found: icu4j
In folder C:\ ... \frank-runner\examples\Frank2Example4/../Frank2Example4/src/main/webapp/WEB-INF/lib
Expected Behavior
No warning
Environment Information
FF! 8.2.0-20240614.042327: Frank2Example4
Running on xxx using Apache Tomcat/10.1.24
Java Version: OpenJDK Runtime Environment (21.0.2+13-LTS)
Heap size: 137.6 MiB, total JVM memory: 174.0 MiB
Free memory: 36.4 MiB, max memory: 1.0 GiB
Free disk space: 26.5 GiB, total disk space: 474.9 GiB
Up since: 2024-06-15 11:05:15 (2m)
Steps To Reproduce
Strart Frank2Example1 or 4 with Frank!Runner
Configuration
No response
Input
No response
What database are you using?
No response
What browsers are you seeing the problem on?
No response
Relevant Log Output
No response
Anything else?
No response

Input from meeting: it also happens when starting with Docker.

If I take a look at the list of dependencies, I see two icu4j dependencies:

First one is in the 'core' project: +- com.ibm.icu:icu4j:jar:74.2
Second one is a transitive dependency from graal js / graalvm in the 'ladybug' module:

[INFO] |  +- org.graalvm.polyglot:js-community:pom:24.0.1:runtime
[INFO] |  |  +- org.graalvm.js:js-language:jar:24.0.1:runtime
[INFO] |  |  |  +- org.graalvm.regex:regex:jar:24.0.1:runtime
[INFO] |  |  |  +- org.graalvm.truffle:truffle-api:jar:24.0.1:runtime
[INFO] |  |  |  \- org.graalvm.shadowed:icu4j:jar:24.0.1:runtime

Some more info:

Ok, Frank!Runner will ignore them: https://github.com/wearefrank/frank-runner/commit/c1622e9e54b2bcdfe7ead027f4d3cd623f64d464


ci: run twine check on dist directory

and fix a newline at end of list.

looks like it worked and 3.11.0 is now on pypi! https://pypi.org/project/luma.oled/


msmtp: Use XDG config directory

msmtp supports XDG base directories spec since some time ago, so change configuration file location to use xdg.configFile.

The referenced PR showes 8 months ago,  did that release make it to 18.09?

@kalbasit Yeah 18.09 has version 1.6.8, which includes support for ~/.config. Turns out this is because I backported it just for this purpose but then forgot to actually update the msmtp module in Home Manager 🙂

Rebased to master in a3462daeb10ba908396aaa3aee521042a239d7ca. Thanks!


Scrolling page with keyboard

Issue Type: Feature Request
I recently bought a laptop and I've found that the settings page doesn't scroll down with arrow keys or page up/down. This is very frustrating as I don't have a mouse or a tracking pad scroll, so I have to manually drag up and down the page. It would be very nice if you could fix this somehow. I couldn't find any setting or keyboard biding that fix this.
Thanks in advance.
VS Code version: Code 1.47.2 (17299e413d5590b14ab0340ea477cdd86ff13daf, 2020-07-15T18:22:06.216Z)
OS version: Windows_NT x64 10.0.18363

/duplicate of #66237


Unable to use Warp+

After following the instructions and even doing a reinstall https://www.cloudflare.com/cdn-cgi/trace is still saying warp=on instead of warp=plus. As far as I can see from the data.json it should be enabled and cf-warp says that I have warp+ quota.
If I'm missing something or have done something wrong any help would be appreciated.

It isn't guaranteened to be able to use it. Maybe Cloudflare had terminated this.

I've been able to obtain warp+ usage thanks to this repo. Trick is though, I link the same account key to both profiles I made using this repo and the other repo above. Use the wireguard profile from the latter on devices, and use the former to continue to obtain more quota (unless you paid for unlimited then just use the WireGuard profile of the repo above and link the key).


need refresh on iOS or double click on rotate button

scale value was sometimes Nan cause img was not loaded so width and height can be undefined 😢


evenstore proposal round 2

This is a continuation of #6
Closes #12
After the first round of discussion, there are multiple changes:

.Add was changed to .Create
IDs of instances are typed with EntityID
the ID attribute in schemas is enforced when registering the schema in the model
when .Create is called, the Model automatically generates a new EntityID for the instance, to make instance creation more friendly to the client.
.Read and .Update tnx of the model were renamed to .ReadTxn and .WriteTxn for clarity (semantics are the same)
introduced the concept of EventCreator which is the component that generates events for Dispatcher, and also has the knowledge to make the Reduce work. (some more comments about this later)
quite a big refactor in general, more confident now that is easier to understand/read the code

I'll add below some further comments on the code to help to understand and maybe ask for some opinions.

Thanks, @sanderpick @carsonfarmer  for the reviews.
I summarized some changes to do now (in the next PR that will arrive soon) in #14. Other more complex or unknowns are in #15 and #16.


Improve future compatibility

replace deprecated include w/ include_tasks
remove duplicate gitea_lfs_content_path

FYI @schnell18 there is a fork of this ansible role at github.com/roles-ansible/ansible_role_gitea

FYI @schnell18 there is a fork of this ansible role at github.com/roles-ansible/ansible_role_gitea

Thanks. Looks like the one I forked is inactive.


Django Extensions Change

Namespace Change .db added , leaving note or Ill do it soon.
Change:
from django_extensions.models import TimeStampedModel, TitleSlugDescriptionModel

To:
from django_extensions.db.models import TimeStampedModel, TitleSlugDescriptionModel

That is not used in this starter template. The only model is the auth user. It must be something you're using in your own project.


🚀 Feature: Build Docker images for servers and services

🔖 Feature description
Build Docker images for each server and service we have for TFB
🎤 Context
We need to use these images for our new infrastructure/backend/platform with Kubernetes.
✌ Possible Implementation
Steps:

[x] Make Minecraft servers build and publish images
[ ] Make Robobird image
[ ] Backstage image
[x] Website image
[ ] Artifactory image?
[ ] Dynamic pipeline for TFB Network

👀 Have you spent some time to check if this feature request has been raised before?

[X] I checked and didn't find any similar issue

Are you willing to submit PR?
Yes I am willing to submit a PR!

Artifactory is a premade image from Nexus and therefor there is no need to build it ourself