Error when trying to use IR sensors on Manjaro (Arch-based) with HP Spectre

Just wanted to say first thanks for making this utility. My /dev/video0 device is the main camera and the /dev/video2 is the IR sensors. video1 and 3 are inactive even though v4l2-ctl --list-devices --all lists all 4 (0-3) as "HP Wide Vision FHD Camera: HP W (usb-0000:00:14.0-5)." If I test using the camera, my face is outlined in red and I can add my face just fine, however if I use video2 (IR sensors), testing works (I have to get a bit closer to the sensors for it to outline my face but that's okay) but trying to add my face returns this error and my face is not added.

Traceback (most recent call last):
File "/usr/bin/howdy", line 90, in
import cli.add
File "/usr/lib/security/howdy/cli/add.py", line 110, in
enc = face_recognition.face_encodings(frame)
File "/usr/lib/python3.7/site-packages/face_recognition/api.py", line 210, in face_encodings
return [np.array(face_encoder.compute_face_descriptor(face_image, raw_landmark_set, num_jitters)) for raw_landmark_set in raw_landmarks]
File "/usr/lib/python3.7/site-packages/face_recognition/api.py", line 210, in
return [np.array(face_encoder.compute_face_descriptor(face_image, raw_landmark_set, num_jitters)) for raw_landmark_set in raw_landmarks]
TypeError: compute_face_descriptor(): incompatible function arguments. The following argument types are supported:
1. (self: dlib.face_recognition_model_v1, img: numpy.ndarray[(rows,cols,3),uint8], face: dlib.full_object_detection, num_jitters: int=0) -> dlib.vector
2. (self: dlib.face_recognition_model_v1, img: numpy.ndarray[(rows,cols,3),uint8], faces: dlib.full_object_detections, num_jitters: int=0) -> dlib.vectors
3. (self: dlib.face_recognition_model_v1, batch_img: List[numpy.ndarray[(rows,cols,3),uint8]], batch_faces: List[dlib.full_object_detections], num_jitters: int=0) -> dlib.vectorss
Invoked with: <dlib.face_recognition_model_v1 object at 0x7f15f4c09730>, array([[22, 22, 22, ..., 24, 24, 24],
[22, 22, 22, ..., 24, 24, 24],
[21, 21, 21, ..., 24, 24, 24],
...,
[74, 74, 74, ..., 77, 77, 78],
[73, 74, 74, ..., 77, 78, 78],
[72, 71, 75, ..., 77, 77, 78]], dtype=uint8), <dlib.full_object_detection object at 0x7f15f40c6d88>, 1

Any suggestions? Thanks!

That's an error i've never seed before, does it throw it every time you try to add your face? Is your face close enough to the camera?

That's an error i've never seed before, does it throw it every time you try to add your face? Is your face close enough to the camera?

Yes it throws that every time I try to add my face using the IR sensors. As far as I know my face is close enough. When I test using the IR sensors, it definitely recognizes that my face is there and it is circled like how it should be.

I've found this issue from the underlying library, looks like your capturing empty (null) frames. That's weird, because it seems to be working fine with the test command. Did you set a different camera input for the test command? Did you set the frame_width or frame_height config options?

Hey there, sorry for the late response.

Building howdy...
Cloning into 'howdy'...
==> Making package: howdy 2.3.1-1 (Wed 26 Sep 2018 11:42:32 PM CDT)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Downloading v2.3.1.tar.gz...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   122    0   122    0     0     23      0 --:--:--  0:00:05 --:--:--    25
100 19635    0 19635    0     0   1846      0 --:--:--  0:00:10 --:--:--  4829
  -> Downloading pam-python-1.0.6.tar.gz...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   383  100   383    0     0     71      0  0:00:05  0:00:05 --:--:--    84
100 47119  100 47119    0     0   4369      0  0:00:10  0:00:10 --:--:-- 11898
  -> Downloading pam-python-1.0.6-fedora.patch...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1179    0  1179    0     0    219      0 --:--:--  0:00:05 --:--:--   273
  -> Downloading pam-python-1.0.6-gcc8.patch...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   788    0   788    0     0    146      0 --:--:--  0:00:05 --:--:--   167
==> Validating source files with sha256sums...
    v2.3.1.tar.gz ... Passed
    pam-python-1.0.6.tar.gz ... Passed
    pam-python-1.0.6-fedora.patch ... Passed
    pam-python-1.0.6-gcc8.patch ... Passed
==> Extracting sources...
  -> Extracting v2.3.1.tar.gz with bsdtar
  -> Extracting pam-python-1.0.6.tar.gz with bsdtar
==> Starting prepare()...
Cloning into 'dlib_clone'...
patching file src/pam_python.c
Hunk #1 succeeded at 39 (offset 7 lines).
Hunk #2 succeeded at 1526 (offset 29 lines).
patching file src/pam_python.c
Hunk #1 succeeded at 2227 (offset 53 lines).
patching file src/Makefile
Hunk #1 succeeded at 1 with fuzz 1.
==> ERROR: A failure occurred in prepare().
    Aborting...

Any suggestions? I think the error is kind of vague. Thanks again!

Sorry, new to this stuff. I read the readme and there aren't any instructions, so what would be the proper way to install it traditionally? I'm using pamac as my AUR helper.

I could have worded it better. Just install it without using the AUR helper (makepkg -si)

Okay, got it installed! Thanks :) Okay so I tried it again with the default config (except with the device_id tag set to 2 for my IR sensors) and the circle around my face is black as opposed to red when I use just the camera. Trying to add my face results in the same error as above.

Okay so I discovered something today. I opened Cheese, gnomes webcam app, and it started showing an odd image. Turns out that the input that Cheese uses is some "HP Wide Vision HD Camera" which seems to be a combination of my video0 and video2 (webcam and IR) device. But using gstreamer-properties, I can tell that my v4l2 device is just my camera. Hopefully that gives some insight.

I think this error is cause by some IR Cameras return "Grayscale" insted of "RGB" image. Mine use XPS13 9370 and this camera return only grayscale while dlib require RGB image. May be we have to emply some sanity check for input image dimension before feed into dlib?

Sounds good! Did you get the same error as the OP and does that code fix it?

Yes, I got same error

I can confirm the code from @sapjunior works with my XPS13 9370
Thank you

Yup this fixed it for me as well! Closing the issue now!

Sorry, reopening this because the fix still has to be implemented in the master branch.

Recognition chain looks like this: face_detector -> pose_predictor -> face_encoder -> comparision with reference model.
This error occurred because dlib' face_detector can work with grayscale images, but pose_predictor and face_encoder expect only 24bit color.
BTW using grayscale for face_detector speeds up this stage by ~30%, from 65 to 45ms in my case.

@sapjunior, @Droidpro1 can you test this instead?
#after this line
video_capture = cv2.VideoCapture(config.get("video", "device_path"))
# add this one
video_capture.set(cv2.CAP_PROP_CONVERT_RGB, True)

And here is an example of proper frame reading: https://github.com/opencv/opencv/blob/b39cd06249213220e802bb64260727711d9fc98c/samples/python/video_v4l2.py#L44

@sapjunior, @Droidpro1 can you test this instead?
#after this line
video_capture = cv2.VideoCapture(config.get("video", "device_path"))
# add this one
video_capture.set(cv2.CAP_PROP_CONVERT_RGB, True)

And here is an example of proper frame reading: https://github.com/opencv/opencv/blob/b39cd06249213220e802bb64260727711d9fc98c/samples/python/video_v4l2.py#L44

Where do I add this? test.py? I added that after this line
video_capture = cv2.VideoCapture(int(config.get("video", "device_id")))
And I don't think I'm noticing anything different.

@Droidpro1 no, to the add.py or compare.py. test.py isn't affected.

Where do I add this? test.py? I added that after this line
video_capture = cv2.VideoCapture(int(config.get("video", "device_id")))

That's correct.
According to its source, opencv should do this by default, by in your case it doesn't for some reason.


Try pinning scikit-build-core 0.8.2

Attempting to ensure that wheels receive the correct platform tags, i.e. manylinux_2_17 and manylinux_2_28 instead of linux_x86-64 and linux_aarch64 that the 0.2.2 wheels seemed to get.

Wheels built by this PR appear to be named:
pynvjitlink_cu12-0.2.2-cp310-cp310-manylinux_2_17_x86_64.whl
pynvjitlink_cu12-0.2.2-cp310-cp310-manylinux_2_28_aarch64.whl
pynvjitlink_cu12-0.2.2-cp311-cp311-manylinux_2_17_x86_64.whl
pynvjitlink_cu12-0.2.2-cp311-cp311-manylinux_2_28_aarch64.whl
pynvjitlink_cu12-0.2.2-cp39-cp39-manylinux_2_17_x86_64.whl
pynvjitlink_cu12-0.2.2-cp39-cp39-manylinux_2_28_aarch64.whl

Does this mean that using scikit-build-core 0.8.2 resolved the issue? @raydouglass

Does this mean that using scikit-build-core 0.8.2 resolved the issue?

These wheels' platform tags look correct.

Turns out we're not running auditwheel, and the correct fix may be to do that instead.

Closing in favor of #76


Preview does not work

Describe the bug
I just started using this amazing app, but after the code was done and AI said everything is ready for preview, the preview was a blank screen. I tried to ask the AI to solve the issue, however this did not work as well.
Link to the Bolt URL that caused the error
https://bolt.new/~/sb1-tjdyrg
Steps to reproduce

give a prompt for a website creation
watch the preview

Expected behavior
Expected to see the preview
Screen Recording / Screenshot

Platform
Browser name = Safari
Full version = 18.1.1
Major version = 18
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1.1 Safari/605.1.15
performance.memory = undefined
Username = Asadbekabdullaev35
Chat ID = 08f6e1daeefe

Additional context
No response

Can you try again in Chrome? Support for Safari is limited. Thanks.


Change the metadata when sending resurrectioned payloads

Goal

Testing

Release Notes

WHAT:
WHY:

#1525  👈
main

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

Join @bidetofevil and the rest of your teammates on  Graphite

Merge activity

Oct 16, 3:13 PM EDT: A user started a stack merge that includes this pull request via Graphite.


fix(logspout): Truncate lines too big for a single UDP packet

Fixes #2046

IRT "requires-manual-testing", would it be possible to just write an integration test for this? Essentially this is how we tested it before: https://github.com/deis/deis/blob/master/tests/apps_test.go#L124-L125
We could just change 1024 to be MAX_UDP_MSG_BYTES + 1.

@bacongobbler we could, except that doing so won't actually help us assert that long log lines don't crash logspout anymore.
I suppose what we could do is do what you have suggested plus an immediate deis logs.  We can look for the truncated output-- which would be absent if logspout had crashed.

I suppose what we could do is do what you have suggested plus an immediate deis logs

Sorry! I assumed that code did so already, so I thought that was implied. I was just doing a flyby review :) Checking for truncated output as well as perhaps a deisctl list to ensure the logger is still up would probably be a safe fix.

@bacongobbler, I updated the test.  See the comment in it to understand the strategy.

close enough. +1

This test seems to timeout now.  Working on fixing that.

fwiw, tests timed out because the fleet unit produced in response to deis apps:run echo <heinously long string> has an ExecStart= that exceeds a limit of 2048 characters.  This lead to parsing errors and the task would run and re-run infinitely while the client hung waiting.
I've countered this with a somewhat more elaborate test strategy which is full documented in the comments accompanying the test code.

@bacongobbler I am rescinding your initial LGTM1 and requesting a re-review because of the revised testing strategy.

@krancour left one question and one nitpick comment. Otherwise LGTM


Update the code crates to rust 2018

Going to need to do this sometime anyway so might as well get it done now

bors r+


Read set and key ranges do not need mutex

Using a mutex seems to be too big of a price for Transaction::get with immutable &self.  We are already using mutable transactions everywhere, so there is no loss of functionality here.
Tested with SurrealDB.

Thanks @gsserge
Is there any way to check how much of a difference it would make? Naturally, it doesn't make sense to have a transaction declared as mut for a get/scan operation. But if there is a significant bump, it would make sense to get rid of it.
I just ran a basic benchmark, the improvements were minor, but again, it simplifies the actual scenario a lot.
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use parking_lot::Mutex;

fn insert_into_array(arr: &mut Vec<i32>, value: i32) {
    arr.push(value);
}

fn insert_into_mutex_array(arr: &Mutex<Vec<i32>>, value: i32) {
    let mut arr = arr.lock();
    arr.push(value);
}

fn benchmark_insert(c: &mut Criterion) {
    let mut group = c.benchmark_group("insert_benchmark");

    group.bench_function("insert_into_array", |b| {
        let mut arr = Vec::new();
        b.iter(|| {
            insert_into_array(black_box(&mut arr), black_box(42));
        });
    });

    group.bench_function("insert_into_mutex_array", |b| {
        let arr = Mutex::new(Vec::new());
        b.iter(|| {
            insert_into_mutex_array(black_box(&arr), black_box(42));
        });
    });

    group.finish();
}

criterion_group!(benches, benchmark_insert);
criterion_main!(benches);

insert_benchmark/insert_into_array
                        time:   [2.5231 ns 2.5610 ns 2.5999 ns]

insert_benchmark/insert_into_mutex_array
                        time:   [5.4577 ns 5.4859 ns 5.5162 ns]

It's not about the perf per se, but more about the fact that with these two mutexes we do this weird interior mutability thing that does not make much sense to me.


fix: bug where the repr for Cred Provider would mutate it

Prior to this commit, the repr function for a credentials
provider was grabbing a reference to the actual member variables
from the object before trying to obfuscate the token for printing.
Thus, any credential provider whose repr was called would
no longer be valid for use with the cache client from that point
forward.
This commit ensures we do a deep copy of the attributes before
we obfuscate them, leaving the original attributes intact.
Also adds test coverage.

This commit ensures we do a deep copy of the attributes before
we obfuscate them,

The change does a shallow copy; this is OK though since we just don't want to change the vars dictionary.


css.TailwinCSS etc.

Clean up the css related template funcs package structure
Add css.TailwindCSS

When I use the toCSS alias instead of css.SASS I get a deprecation warning. I assume (but have not tested) that the same will happen with the postCSS and babel aliases.
Do these need to be mapped to the new namespace?

When I use the toCSS alias instead of css.SASS I get a deprecation warning.

Good catch. I need to move the aliases to the new packages.

Regarding the documentation for https://gohugo.io/functions/css/tailwindcss/, there doesn't seem to be any reason css.TailwindCSS must use v4. I've got an example of replacing all my package.json/npm stuff with tailwindcss 3.4.4's standalone cli working here. I even found a workaround for supplying a custom, extendable tailwind config from a theme!

there doesn't seem to be any reason css.TailwindCSS must use v4.

That is true, but (some of) the options listed are v4 only, and that was the mindset/motivation when adding it.


the loss file has some wrong

the following code has some wrong. 'if bbox_annotation.shape[0] == 0:' if the bbox_annotation.shape[0] is zero.that is no label. so we do not computer. we need continue.
"""
if bbox_annotation.shape[0] == 0:
if torch.cuda.is_available():
alpha_factor = torch.ones(classification.shape).cuda() * alpha
                alpha_factor = 1. - alpha_factor
                focal_weight = classification
                focal_weight = alpha_factor * torch.pow(focal_weight, gamma)

                bce = -(torch.log(1.0 - classification))

                # cls_loss = focal_weight * torch.pow(bce, gamma)
                cls_loss = focal_weight * bce
                classification_losses.append(cls_loss.sum())
                regression_losses.append(torch.tensor(0).float())

            else:
                alpha_factor = torch.ones(classification.shape) * alpha

                alpha_factor = 1. - alpha_factor
                focal_weight = classification
                focal_weight = alpha_factor * torch.pow(focal_weight, gamma)

                bce = -(torch.log(1.0 - classification))

                # cls_loss = focal_weight * torch.pow(bce, gamma)
                cls_loss = focal_weight * bce
                classification_losses.append(cls_loss.sum())
                regression_losses.append(torch.tensor(0).float())

            continue

"""
I think wo shoude write like the following:
"""
class FocalLoss(nn.Module):
def forward(self, classifications, regressions, anchors, annotations):
alpha = 0.25
gamma = 2.0
batch_size = classifications.shape[0]
classification_losses = []
regression_losses = []
    anchor = anchors[0, :, :]

    anchor_widths  = anchor[:, 2] - anchor[:, 0]
    anchor_heights = anchor[:, 3] - anchor[:, 1]
    anchor_ctr_x   = anchor[:, 0] + 0.5 * anchor_widths
    anchor_ctr_y   = anchor[:, 1] + 0.5 * anchor_heights

    for j in range(batch_size):

        classification = classifications[j, :, :]
        regression = regressions[j, :, :]

        bbox_annotation = annotations[j, :, :]
        bbox_annotation = bbox_annotation[bbox_annotation[:, 4] != -1]

        if bbox_annotation.shape[0] == 0:
            regression_losses.append(torch.tensor(0).float().cuda())
            classification_losses.append(torch.tensor(0).float().cuda())

            continue

        classification = torch.clamp(classification, 1e-4, 1.0 - 1e-4)

        IoU = calc_iou(anchors[0, :, :], bbox_annotation[:, :4]) # num_anchors x num_annotations

        IoU_max, IoU_argmax = torch.max(IoU, dim=1) # num_anchors x 1

        #import pdb
        #pdb.set_trace()

        # compute the loss for classification
        targets = torch.ones(classification.shape) * -1
        targets = targets.cuda()

        targets[torch.lt(IoU_max, 0.4), :] = 0 #低于0.4全部标0

        positive_indices = torch.ge(IoU_max, 0.5) #高于0.5标1

        num_positive_anchors = positive_indices.sum()

        assigned_annotations = bbox_annotation[IoU_argmax, :]

        targets[positive_indices, :] = 0
        targets[positive_indices, assigned_annotations[positive_indices, 4].long()] = 1

        alpha_factor = torch.ones(targets.shape).cuda() * alpha

        alpha_factor = torch.where(torch.eq(targets, 1.), alpha_factor, 1. - alpha_factor)
        focal_weight = torch.where(torch.eq(targets, 1.), 1. - classification, classification)
        focal_weight = alpha_factor * torch.pow(focal_weight, gamma)

        bce = -(targets * torch.log(classification) + (1.0 - targets) * torch.log(1.0 - classification))

        # cls_loss = focal_weight * torch.pow(bce, gamma)
        cls_loss = focal_weight * bce

        cls_loss = torch.where(torch.ne(targets, -1.0), cls_loss, torch.zeros(cls_loss.shape).cuda())

        classification_losses.append(cls_loss.sum()/torch.clamp(num_positive_anchors.float(), min=1.0))

        # compute the loss for regression

        if positive_indices.sum() > 0:
            assigned_annotations = assigned_annotations[positive_indices, :]

            anchor_widths_pi = anchor_widths[positive_indices]
            anchor_heights_pi = anchor_heights[positive_indices]
            anchor_ctr_x_pi = anchor_ctr_x[positive_indices]
            anchor_ctr_y_pi = anchor_ctr_y[positive_indices]

            gt_widths  = assigned_annotations[:, 2] - assigned_annotations[:, 0]
            gt_heights = assigned_annotations[:, 3] - assigned_annotations[:, 1]
            gt_ctr_x   = assigned_annotations[:, 0] + 0.5 * gt_widths
            gt_ctr_y   = assigned_annotations[:, 1] + 0.5 * gt_heights

            # clip widths to 1
            gt_widths  = torch.clamp(gt_widths, min=1)
            gt_heights = torch.clamp(gt_heights, min=1)

            targets_dx = (gt_ctr_x - anchor_ctr_x_pi) / anchor_widths_pi
            targets_dy = (gt_ctr_y - anchor_ctr_y_pi) / anchor_heights_pi
            targets_dw = torch.log(gt_widths / anchor_widths_pi)
            targets_dh = torch.log(gt_heights / anchor_heights_pi)

            targets = torch.stack((targets_dx, targets_dy, targets_dw, targets_dh))
            targets = targets.t()

            targets = targets/torch.Tensor([[0.1, 0.1, 0.2, 0.2]]).cuda()

            negative_indices = 1 - positive_indices

            regression_diff = torch.abs(targets - regression[positive_indices, :])

            regression_loss = torch.where(
                torch.le(regression_diff, 1.0 / 9.0),
                0.5 * 9.0 * torch.pow(regression_diff, 2),
                regression_diff - 0.5 / 9.0
            )
            regression_losses.append(regression_loss.mean())
        else:
            regression_losses.append(torch.tensor(0).float().cuda())

    return torch.stack(classification_losses).mean(dim=0, keepdim=True), torch.stack(regression_losses).mean(dim=0, keepdim=True

"""

This is not correct. If there is no annotation, we need to calculate the classification loss, the regression loss will be zero in this case, but NOT the classification loss. You're training then network on a hard negative sample, meaning you want it NOT to detect any object. So all outputs for the classification should be 0 for each object type.

I see, i am worng.
------------------ 原始邮件 ------------------
发件人:                                                                                "yhenon/pytorch-retinanet"<EMAIL_ADDRESS>发送时间: 2020年11月7日(星期六) 凌晨3:30
收件人<EMAIL_ADDRESS>抄送: "梅 兰 竹 菊"<1148953314<EMAIL_ADDRESS>主题: Re: [yhenon/pytorch-retinanet] the loss file has some wrong (#196)
This is not correct. If there is no annotation, we need to calculate the classification loss, the regression loss will be zero in this case, but NOT the classification loss. You're training then network on a hard negative sample, meaning you want it NOT to detect any object. So all outputs for the classification should be 0 for each object type.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


[BUG] Health bar bug started disappearing

Acknowledgement of preliminary instructions

[X] I have read the preliminary instructions, and I am certain that my problem has not already been addressed.

What problem did you encounter?
It starts to disappear more often than usual

im also having the same problem, and its different from the prescedent issues, where the health bar and the escape menu would disapear

i just played a game lobby that 4 people declared they couldnt see their own hp, it may be a Roblox problem

where the health bar and the escape menu would disapear

Upload your configuration please: https://github.com/pizzaboxer/bloxstrap/wiki/Uploading-your-Bloxstrap-configuration

Confirmed as a Roblox bug. https://devforum.roblox.com/t/the-health-bar-has-stopped-working/3022420


after upload a image by ckeditor, click save button, rails_admin redirect to the user sign in page

I use ckeditor to edit a post, after that, I click the save button , it redirect to the user sign in page , and show a alert that ask to sign in to continue. Have anybody meet this. Anything else is working perfect, but the ckeditor

This is a CKeditor known issue. Be sure to update it to its latest release. If it doesn't solve your problem, fill a ticket there.


[Newbie] - this device is Useless without real functions...

Hi..
How to connect this device with Bluetooth?
All these demos are useless for a newbie in this field.
The only thing that worked for me is playing gif animations.
Now I ask myself the question? is that all?
What should I do now? What do you use this device for?
Now I finally got the music demo version of LVGL to work.
It only worked with the VSCode Platformio, Arduino IDE didn't work for me.
Touch does not work. So I have no idea if playing the music is possible at all.
How to learn that at all...without a functional working example??

T-RGB uses ESP32S3 as the main control. This means that all the routines on github that support ESP32S3 do. It is impossible for me to collect all the examples on the internet. I can provide this board-specific driver such as the screen so that you can use it.

As far as I know, there are two types of touch chips. If you're not sure, you can take turns uncommenting here.
https://github.com/Xinyuan-LilyGO/T-RGB/blob/0fb2bc26e2eeb1a661385384c3e59848f99068f8/example/factory/factory.ino#L16

Hello mmMicky, thank you very much for your answer.
.....>
mmMicky> It is impossible for me to collect all examples on the internet
Yes, I realize that you can't create a working demo script for every device you develop. But if you add a specific resource from another repo for the device, you should assume that it works!

As far as I know there are two types of touch chips. If you're not sure, you can alternate here without commenting.
.....>

oK...I will try it
hmmm If I uncomment // #define TOUCH_MODULE_CST820 I get a compile error....

Could you please add printf to print (X,Y) coordinates here to help me figure out the problem.
https://github.com/Xinyuan-LilyGO/T-RGB/blob/0fb2bc26e2eeb1a661385384c3e59848f99068f8/example/lv_music/lv_music.ino#L139

Could you please add printf to print (X,Y) coordinates here to help me figure out the problem.
https://github.com/Xinyuan-LilyGO/T-RGB/blob/0fb2bc26e2eeb1a661385384c3e59848f99068f8/example/lv_music/lv_music.ino#L139

OK, I added a printf to read out the coordinates....
with;
// to find a fix for touch issu............................
Serial.printf("Touch_Points_num(x,y): %llucoord\n", &x, &y);
if (x > 0 || y > 1) {
Serial.print("x,pos--> ");
Serial.print(x);
Serial.print("\ny,pos--> ");
Serial.println(y);
Serial.println("...");
Serial.printf("XL9535 0x%02x : 0x%02X \r\n", xl, data);
Serial.println("End off touch_readPos < ...");
}//.........................................................
In the Serial Monitor I get the following result:

... Starting touch_readPos
Touch_Points_num(x,y):<PHONE_NUMBER>542958208coord
x,pos--> 12080
y,pos--> 16334
...
XL9535 0x3fce2e84 : 0x3FCE2EE8
End off touch_readPos < ...

I don't know if this information is correct or helpful, or if the "printf" line is correct.

It should only be able to read the range from 0 to 480. Anything larger than this range is incorrect. There may be a communication error.

hmmm...ok
Now i have this Output;
its change on every position i touch the screen....
**middle screen: center touch:**
Touch_Points_num(x,y):<PHONE_NUMBER>082565772coord
x,pos--> 0
y,pos--> 271
...
End off touch_readPos ...<

**relesed touch: middle center:**
>... Starting touch_readPos
Touch_Points_num(x,y):<PHONE_NUMBER>082565772coord
x,pos--> 128
y,pos--> 271

**right side midle screen:**
>... Starting touch_readPos
Touch_Points_num(x,y):<PHONE_NUMBER>082565772coord
x,pos--> 257
y,pos--> 284
...
End off touch_readPos ...<

**Left middle screen**
>... Starting touch_readPos
Touch_Points_num(x,y):<PHONE_NUMBER>082565772coord
x,pos--> 44
y,pos--> 286
...
End off touch_readPos ...<

what now?? what can i do with this data?

This information appears to be correct. You can make GUI on screen. For example, the music example on the routine. The main function of touch is to interact with people.

Yes, this was a small task where I learned something. :)
But still not enough.

"The main function of touch is to interact with people."
Sorry, I don't quite understand what you mean!

The question was:
What should I do with this information now.
How can I solve the touch problem now?
With this printf line I added, the board detects the touch point and position.
The board seems to be a bit slower than before.
Now I can swipe left or right, but I had to keep my finger on the screen for a few seconds to change the desired action.
The same goes for playing and pausing music.
So I added a number of milliseconds of delay(2000); to pause. This was too much and the board stopped responding at all! So I changed this to delay(200);
Is this now the TouchFix??
hmmm...works a bit better now!
OK, next part;
When I want to listen to the sound, i put on my sdcard,.. on my bluetooth speakers/headphones! How should I best proceed? do you have me advice ?

Yes, this was a small task where I learned something. :)
But still not enough.

"The main function of touch is to interact with people."
Sorry, I don't quite understand what you mean!

The question was:
What should I do with this information now.
How can I solve the touch problem now?
With this printf line I added, the board detects the touch point and position.
The board seems to be a bit slower than before.
Now I can swipe left or right, but I had to keep my finger on the screen for a few seconds to change the desired action.
The same goes for playing and pausing music.
So I added a number of milliseconds of delay(2000); to pause. This was too much and the board stopped responding at all! So I changed this to delay(200);
OK, next part;
When I want to listen to the sound, i put on my sdcard,.. on my bluetooth speakers/headphones! How should I best proceed? do you have me advice ?

**Touch Fix!! This now works for me**
changed to this lines of code...

    ft3267_read_pos(&touch_points_num, &p.x, &p.y);
    if (p.x != 0 && p.y != 0) { // this is the fix!!!
      data->point.x = p.x;
      data->point.y = p.y;
    }

Touch works now

I created a library for easier use here https://github.com/fablabnbg/TRGBArduinoSupport


Add Firmware Update to server-demo and leshan-demo

It could be nice to add an easy way to test Firmware Update to leshan-server-demo and leshan-client-demo.
We have a work in progress about that in the fwupdate branch.

@sbernard31 Do you have the latest version of firmware upgrade demo?

The branch pointed above is our most recent work on firmware update demo.

@sbernard31 ok,thanks

What's the latest status of this?
There seems no fwupdate branch anymore. If this demo server supports fwupdate on its UI by default, it would make our lives easier, taking care of only client side running on microcontrollers.
Any info would be really apprecaited!!

There seems no fwupdate branch anymore.

Ups this was a mistake ! Thx to reporting that :pray: ! I will try to re-push this branch. (I let you know when it's done)

What's the latest status of this?

No activity on this work since 2016. AFAIK, there is nothing plan at short term to integrate this in master branch. We're currently focusing on deliver the 1.0.0 and so mainly focus on the library itself.
This feature is part of the demo component and seems less essential. This explain there is less activity on it.
But I could find time to review PR eventually.

@ehirdoy the branch should be back now.

Some clarification about Firmware Update :
Firmware update process rely of generic LWM2M features.
This process is described at<EMAIL_ADDRESS>Firmware Update State Machine.
Leshan (library and demo) supports this generic LWM2M features but does not provide automatic facility to manage this process, so :

library users should code the process by their own.
demo users could try to execute request manually using the UI.
This very old fwupdate branch was a try to provide UI for an automatic process. This branch is based on 0.1.11-M8-SNAPSHOT version of 2016 .. (really really old ...)

It is also strongly recommended to read : this wiki page.
If you read :point_up:, and choose to server the file using coap or http, note Leshan library or server-demo does not provide server to serve that files. So it's up to you to manage this. For coap eventually you could be interested by demo-apps/cf-simplefile-server from Californium project.


lots of debug decorations after making an edit

Steps to Reproduce:

start debugging your code with breakpoints
make an edit to the file file breakpoints
:bug: lots of breakpoint decorations are added everywhere. They seem to be removed on save

Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.
Happy Coding!


Is there any sample code

I want to try to change the component. I want to listen to the listening events of his button clicks, but in fact I haven't found the corresponding API. Do you have sample code

The documentation can be found here: https://supabase.com/docs/guides/auth/auth-helpers/auth-ui
I don't think there is a way to listen to button clicks currently. Can you outline why you want that?


[Docs]: ArangoDB Rehaul

Is there an existing issue for this?

[X] I have searched the existing issues

Documentation Link
https://docs.appsmith.com/reference/datasources/querying-arango-db
Discord/slack/intercom Link
No response
Describe the problem and improvement.
Rehaul of ArangoDB docs page.

duplicate


Arrow of popover is positioned 4px different on Firefox

The arrow of popover (.arrow) is positioned 4px differently on Firefox than on Chrome, Safari, Edge and IE 11.
This was caught when introducing Firefox as a new target to a CI pipeline, which already targeted the other browsers. You could find details and TravisCI reports here: https://github.com/kaliber5/ember-bootstrap/pull/901
I was able to reproduce manually on getbootstrap.com to ensure that this is not an integration issue:

You see Firefox 69.0.1 on the left side and Chromium 77.0.3865.90 on the right side. Both windows are resized so that the popover container (.bd-example-popovers) has a width of 465px. In this case the popover is positioned to fit into the container. The left CSS property on Firefox is 4px less than the one on Chromium.
The CI results mentioned above suggest that the other browsers behave like Chromium in this manual test. So this seems to be a Firefox specific bug.

The different here seems to be the placement and size of the scrollbar not the width of the container.


Media.edit failed with "Unhandled rejection ParseError: Not possible to parse API response"

I am trying to add user tags and add caption for an uploaded image.
The caption is set properly but not the usertags. The error I am getting is: "Unhandled rejection ParseError: Not possible to parse API response"
Here is the code:
_Client.Session.create(device, storage, USER, PASSWORD)
.then(function(session) {
session.getAccount()
.then(function(account) {
var id = account.params.id;
console.log(Id is ${id})
let feed = new Client.Feed.AccountFollowers(session, id)
new Promise((resolve, reject) => {
resolve(feed.get())
})
.then((results) => {
// console.log(results)
return feed.get()
})
.then((results) => {
let position = [0.5001121, 0.50102101];
let obj = { in: []
}
for (var i = 0; i < results.length; i++) {
obj["in"].push({
user_id: results[i].id,
position: position
})
}
let usertags = JSON.stringify(obj);
Client.Upload.photo(session, 'test.jpg')
.then(function(upload) {
// upload instanceof Client.Upload
// nothing more than just keeping upload id
                  console.log(upload.params.uploadId);
                  return Client.Media.configurePhoto(session, upload.params.uploadId, 'test');
               })
               .then(function(medium) {
                  // we configure medium, it is now visible with caption
                  console.log(medium.params.deviceTimestamp)
                  return Client.Media.edit(session, medium.params.id, 'TEST', usertags)
               })
               .then(function(results) {
                  console.log(results)
               })
         })
   })

})_

I also had the same issue and it turned out for 2 different issues:

Position variables must be numbers. I was using body-parser which by default parsed request body params into strings. I solved it by using Number(strVar) to convert it to number
Pass the usertags as JSON object without calling JSON.stringify. The Media methods already process the usertags with JSON.stringify.

This is my working code:
    let userTags;
    if (userTagInfo) {
      let position = [userTagInfo.x, userTagInfo.y];
      userTags = {
        in: [{
          user_id: userTagInfo.userId,
          position: position
        }]
      };
    }
    return instagramPrivateApi.Media.configurePhoto(session, uploadId, caption, null, null, userTags);


Bing Image Search API connections returning 401

Describe the bug
Existing feature for accessing bing image search is broken and returns 401 in scenarios that had previously worked fine.
To Reproduce
Steps to reproduce the behavior:
In Azure

Login to your Azure account
Create a new Azure Bing Search cognitive service resource
Go to keys & endpoints and copy one of the keys into your clipboard

In VoTT

Go to connections, click on + icon to create a new connection
Select Bing Image Search
Paste your API key into the API Key field and also set a query, ex) cat
Save connection
Create a new VoTT project and select the newly created Bing Image search connection
Save the project

Expected behavior
You are redirected to the main editing page and you see a list of images from bing image search in the side pane.
Actual
You receive an error message Request Failed with status code 401 and no images are loaded into the side pane.
Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

OS: all of them
Browser: all of them
Version current: 2.2.0

Additional context
It may be working with bing image search resources created older than a certain date??

@tessmichi - Update description with more info.

same problem for me


GPMDP not loading past "Loading Music Library.."

OS:
Windows 10 1903 - OS build 18362.476
GPMDP Version:
V4.6.1
Issue Descriptions:
I was changing some settings within GPMDP itself, GPMDP crashed and now it won't load at home or on my work computer, (I think I need to do some kind of profile reset to revert the changes i made) - does anyone know if/how I might be able to do this?
the application just gets stuck at "Loading Music Library..."
gpmdp.log has this in after each time i attempt to load GPMDP:
{"level":"info","message":"Application started.","timestamp":"2019-11-25T14:33:47.043Z"}
{"level":"error","message":"Failed to load bonjour with error: {}","timestamp":"2019-11-25T14:33:50.423Z"}
Steps to Reproduce:
change a lot of settings in GPMDP

Duplicate of #3660


Relighting: How to test on my own human images?

Hi, Since I want to relight the human image for a given HDRI map, can I test it on my own image data and how? Thanks

Our model needs training with "one-light-a-time (OLAT)" data. After training the model, you may relight the person with an HDRI map by linearly combining the relit "basis images."

Will the OLAT dataset, or a demo for human images be available soon?

Hi, Since I want to relight the human image for a given HDRI map, can I test it on my own image data and how? Thanks

Hello, have you achieved this? I also want to achieve heavy lighting for portraits. Can you give some suggestions?

Our model needs training with "one-light-a-time (OLAT)" data. After training the model, you may relight the person with an HDRI map by linearly combining the relit "basis images."

Hello, I am a beginner in neural rendering, I hope you can give me some code examples, about light and shadow re-illumination，like this example

Our model needs training with "one-light-a-time (OLAT)" data. After training the model, you may relight the person with an HDRI map by linearly combining the relit "basis images."

Hello, I am a beginner in neural rendering, I hope you can give me some code examples, about light and shadow re-illumination，like this example

Have you achieved this?


Adding changelog for v0.8.0-rc1

What type of PR is this?
/kind documentation
What this PR does / why we need it:
This introduces a changelog for v0.8.0-rc1.
Does this PR introduce a user-facing change?:
NONE

/cc @bowei @howardjohn @keithmattix @kflynn @shaneutt @youngnick
/hold

/lgtm

/hold cancel

/lgtm


Suggestions for limt() and offset() improvements to SelectDSL

Version: 1.5.2
Question
There are paging or non-paging query scenarios.
In API design, offset[Long] and limit[Long] are generally used.
When a non-paginated scenario is required, the arguments offset=null and limit=null are passed in.
However, the current arguments to limit() and offset() are long, which requires a non-null check on RequestBean's limit and offset, which is not elegant enough.
    public LimitFinisher limit(long limit) {
        this.limit = limit;
        return new LimitFinisher();
    }

    public OffsetFirstFinisher offset(long offset) {
        this.offset = offset;
        return new OffsetFirstFinisher();
    }

Suggestion
The arguments to limit() and offset() are changed to Long, which is not change the current code logic.

ps: same to other xxxDSL

Looking forward to your reply~!
    public LimitFinisher limit(Long limit) {
        this.limit = limit;
        return new LimitFinisher();
    }

    public OffsetFirstFinisher offset(Long offset) {
        this.offset = offset;
        return new OffsetFirstFinisher();
    }

Well it's not as simple as that. If you passed a null to one of those methods, it would render something like limit(#{parameters.p1}) where the value of p1 is null. That seems like a poor outcome.
So what would you have the library do if you passed a null into one of these methods? I assume you would like the library to drop those phrases out of the rendered SQL. In that case, then I think it would be more in keeping with the rest of the library to make methods like limitIfPresent and offsetIfPresent.

Thank you for your reply.
In existing code, SelectDSL & PagingModel member variables limit and offset are now of type Long.
PagingModel already handles cases when limit or offset is null,  so no other changes should be required ?
public class PagingModel {

    private final Long limit;
    private final Long offset;
    private final Long fetchFirstRows;

    private PagingModel(Builder builder) {
        super();
        limit = builder.limit;
        offset = builder.offset;
        fetchFirstRows = builder.fetchFirstRows;
    }

    public Optional<Long> limit() {
        return Optional.ofNullable(limit);
    }

    public Optional<Long> offset() {
        return Optional.ofNullable(offset);
    }

    public Optional<Long> fetchFirstRows() {
        return Optional.ofNullable(fetchFirstRows);
    }

    public static class Builder {
        private Long limit;
        private Long offset;
        private Long fetchFirstRows;

        public Builder withLimit(Long limit) {
            this.limit = limit;
            return this;
        }

        public Builder withOffset(Long offset) {
            this.offset = offset;
            return this;
        }

        public Builder withFetchFirstRows(Long fetchFirstRows) {
            this.fetchFirstRows = fetchFirstRows;
            return this;
        }

        public Optional<PagingModel> build() {
            if (limit == null && offset == null && fetchFirstRows == null) {
                return Optional.empty();
            }

            return Optional.of(new PagingModel(this));
        }
    }
}

Of course I think your idea is better:  limitIfPresent and offsetIfPresent

Add a code snippet that illustrates my question:

requires a non-null check on limit,  which is not elegant enough.

    private final CorpMapper mapper;

    public List<Corp> select(CorpQuery query) {

       if (query.getPageSize != null && queryPageSize > 0) {
            return mapper.select(c -> c.where(area, SqlBuilder.isEqualTo(query.getArea()))
                    .limit(query.getPageSize())
                    .offset(query.getOffset())
            );

       } else {
            return mapper.select(c -> c.where(area, SqlBuilder.isEqualTo(query.getArea())));
       }

    }

  @Data
  public class CorpQuery {
      private String area;
      private Long offset;
      private Long pageSize;
  }

Yeah I get it - but if I change every method to Long it breaks dozens of tests and makes it impossible to use int literals - which is a hassle. So I will probably keep the long methods and add whenPresent methods for your use case. Then it will be consistent with other whenPresent methods in the library.

Thanks and looking forward to new version~!

I've added this to the backlog for V2 (#827)

I've added this to the backlog for V2 (#827)

We have a lot of projects based on Java8, and that this issue has not changed much, can it be fixed in 1.5.x?
need us to submit a PR?

We're not doing any more Java 8 releases. The entire MyBatis ecosystem system is moving to Java 17. The code has already been updated such that it won't compile in Java 8 anymore.

OK，We will consider upgrading Java21.
What is the release time of v2?


Dialog + Select Menu dont go work together

Hello, first thing awesome stuff you've done here. I really loved it :).
I'm building a dialog for a user who can create a project from there. All go well for all the stuff until I had Select Menu of Combobox. The menu go bellow the dialog, like behind.
Here in this picture I just click the arrow button and nothing show, cause this is behind. This is the Combobox

Here with the SelectMenu, we can see the menu right below

For the code this is just a copy paste from our docs. Nothing change in the ui, just a plain Dialog with the Component in.
Let me know if you need something more for help with this issue :)

Hi @EQuimper! Thanks for your kind words and for testing out Evergreen for your project. I just saw this ticket yesterday night, I will try to be more responsive next time!
The Problem Explained
The problem you are experiencing is that the Popover the Combobox is using is rendered inside a Portal. It is rendering correctly, however the z-index of the Popover is lower than that of the Dialog. Really this should work out of the box and I need to figure out a solution for this.
When I was writing this answer I actually thought it is possible to pass  a zIndex prop to the Autocomplete component — which would mean you could pass it to autocompleteProps on the Combobox component. However it seems that is not the case and I have to put in a actual fix for this. I will try to tackle this today :)

See #187.

Thank you @jeroenransijn

@EQuimper I am trying to get this PR in today / this week. Just waiting on my buddy to review it :)

@EQuimper quick update, we might roll this up in v4 with a bunch of other upgrades!

Thank you for the update:)

@EQuimper Hi, I have a question about your project. In your Screenshots, i could see a gray sidebar and a header with the title "My Projects " and the button  "Create New Project ".

How did you build this in React? Are there any finished components from the evergreen framework? (So far I have not been able to find)
Which icons did you use?
Could you possibly show me some code of it? (I also wanted to develop an React-WebApp according to this scheme (Sidebar and Header)

Thanks for your answer.

Closing this since the issue has been resolved!


[CT-2421] [Epic] Multi-project collaboration - Milestone 2

Discussions:

https://github.com/dbt-labs/dbt-core/discussions/6725
https://github.com/dbt-labs/dbt-core/discussions/6736

Docs epic:

https://github.com/dbt-labs/docs.getdbt.com/issues/3362

## Cross-project refs
- [ ] https://github.com/dbt-labs/dbt-core/issues/7227
- [ ] https://github.com/dbt-labs/dbt-core/issues/7468
- [ ] https://github.com/dbt-labs/dbt-core/issues/7469
- [ ] https://github.com/dbt-labs/dbt-core/issues/7736
- [ ] https://github.com/dbt-labs/dbt-core/issues/7497
- [ ] https://github.com/dbt-labs/dbt-core/issues/7685
- [ ] https://github.com/dbt-labs/dbt-core/issues/7713
- [ ] https://github.com/dbt-labs/dbt-core/issues/7563
- [ ] https://github.com/dbt-labs/dbt-core/issues/7496
- [ ] https://github.com/dbt-labs/dbt-core/issues/7506
- [ ] https://github.com/dbt-labs/dbt-core/issues/7591
- [ ] https://github.com/dbt-labs/dbt-core/issues/7695
- [ ] https://github.com/dbt-labs/dbt-core/issues/7711
- [ ] https://github.com/dbt-labs/dbt-core/issues/7745
- [ ] https://github.com/dbt-labs/dbt-core/issues/7752
- [ ] https://github.com/dbt-labs/dbt-core/issues/7782
- [ ] https://github.com/dbt-labs/dbt-core/issues/7890
- [ ] https://github.com/dbt-labs/dbt-core/issues/7905
- [ ] https://github.com/dbt-labs/dbt-core/issues/7954

## Package namespacing
- [ ] https://github.com/dbt-labs/dbt-core/issues/7446
- [ ] https://github.com/dbt-labs/dbt-core/issues/6705
- [ ] https://github.com/dbt-labs/dbt-core/issues/7444

## Model versioning & deprecation
* [ ] https://github.com/dbt-labs/dbt-core/issues/7433
* [ ] https://github.com/dbt-labs/dbt-core/issues/7443
* [ ] https://github.com/dbt-labs/dbt-core/issues/7487
* [ ] https://github.com/dbt-labs/dbt-core/issues/7639
* [ ] https://github.com/dbt-labs/dbt-core/issues/7704

## Model contracts: bugs, UX feedback, extensions
* [ ] https://github.com/dbt-labs/dbt-core/issues/7065
* [ ] https://github.com/dbt-labs/dbt-core/issues/7335
* [ ] https://github.com/dbt-labs/dbt-core/issues/7416
* [ ] https://github.com/dbt-labs/dbt-core/issues/7417
* [ ] https://github.com/dbt-labs/dbt-core/issues/7480
* [ ] https://github.com/dbt-labs/dbt-core/issues/7370
* [ ] https://github.com/dbt-labs/dbt-bigquery/issues/673
* [ ] https://github.com/dbt-labs/dbt-core/issues/7714

## Model access: UX feedback
- [ ] https://github.com/dbt-labs/dbt-core/issues/7226

## Tech debt
- [ ] https://github.com/dbt-labs/dbt-core/issues/7430
- [ ] https://github.com/dbt-labs/dbt-core/issues/7631

### 1.6 rc bugs & regressions
* [ ] https://github.com/dbt-labs/dbt-bigquery/issues/782

Opened a new epic for the next multi-project milestone) for any issues punted to future releases.


Add an announcement mechanism

It would be great to have a way to notify users/groups for some announces.
Announces could:

be persistent or not
be notified by email or not
have a scope target

global
list of group
list of individuals

...

For persistent announces, we could imagine to provide some panels in different places showing the announces relatively to the place we are on the site: main page, project page.
One of the first usage would be to announce: shutdown, upgrade, restart in advance to gitbucket users.
Such a mechanism could also serve as a basis for a kind of messaging system between individuals/groups.
PS: of course we can split this issue in several smaller ones in order to deliver something step by step.
This could be implemented as a plugin also, but I am not sure we have ways today to add content from a plugin into existing gitbucket pages.

GitBucket has a simple notification panel at the top of right sidebar. Yes, I guess the more rich notification system you mentioned should be provided as plugin because notification requirement depends on usecase. We will provide more practical document about plugin development.

GitBucket has a simple notification panel at the top of right sidebar
Other than the flash notification?
I updated on 3.4 and didn't saw any new panel for notification.

If the plugin mechanism allows enough extensibility (meaning enrichment of existing pages) then it will be a perfect candidate to develop this functionality as a plugin.
Meanwhile for my own needs I'll probably create a small page to be able to email all users when a shutdown/upgrade/restart is planned.

For those interested and waiting for something better, I have created in my branch add-email-announces a "mailing" facility so that you can inform all your active users about a next shutdown/upgrade

Enter a subject, a text description and an email announce will be sent to all active users of the system. Emails are sent via usage of BCC email field.

Rebased on #4a35b65c2c

Cool.

If the plugin mechanism allows enough extensibility (meaning enrichment of existing pages) then it will be a perfect candidate to develop this functionality as a plugin.

I expect it's possible to implement as a plug-in. However we might have to add some new extension point to make this plug-in. For example, now we can add an item to existing menu by JavaScript as GreaseMonkey script. I think it's better that we can add an item via plug-in API.

@takezoe I saw how you integrated gist plugin and how GreaseMonkey works. But relying on such augmented browsing capabilities introduce an invisible API dependency between the application and the plugin which relies in fact in the naming/construction of the html page and CSS selectors to plug the functionality into the application.
If it is clear that introducing such mechanisms means also stability in the page design, then let's jump into it. If tomorrow you want to do #851, it will probably mean reconstruct the page layout and then break plugins.
I am not against that way and the weak dependencies it implies ; I just wanted to clarify that point.
Having that in mind, I'll give the plugin mechanism a try for this announcement extension.

Following your advices, I have created McFoggy/gitbucket-announce-plugin.
It was quite easy to turn the feature into a plugin ; but it requires #861 to be integrated first.

I am closing the issue.
People interested into the feature can now use McFoggy/gitbucket-announce-plugin.

@McFoggy Great plugin! I made a plugin list in README.md and added your plugin: https://github.com/takezoe/gitbucket/blob/master/README.md#plug-ins

@takezoe thanks


Minecraft: Spigot pegs CPU

It turns out that spigot will peg the CPU when stdin is disconnected.
See https://www.spigotmc.org/threads/high-cpu-usage-solved.87634/page-2
Turns you you need a --noconsole option.

Thanks for researching that.

So far, local testing seems to confirm the same fixed behavior as the discussion thread:

When running without --noconsole, the CPU usage seems to be equivalent for me. @jbeda , can you double check that you ran your container with the -it options, such as:
docker run -it -d --name spigot -e EULA=TRUE -e TYPE=SPIGOT mc

BTW, a workaround for #81 is to docker attach and enter the stop command:
$ docker attach spigot                                                                                [20:23:28]
stop
[01:23:48 INFO]: Stopping the server
[01:23:48 INFO]: Stopping server
[01:23:48 INFO]: Saving players
[01:23:48 INFO]: Saving worlds
[01:23:48 INFO]: Saving chunks for level 'world'/Overworld
[01:23:49 INFO]: Saving chunks for level 'world_nether'/Nether
[01:23:49 INFO]: Saving chunks for level 'world_the_end'/The End

For now I enhanced the container entry point to pass through any extra args to the server invocation, such as
docker run -it -d --name spigot -e EULA=TRUE -e TYPE=SPIGOT itzg/minecraft-server nogui --noconsole

Thanks! I'll check it out tomorrow and test.
On Sat, May 28, 2016 at 7:11 PM Geoff Bourne<EMAIL_ADDRESS>wrote:

For now I enhanced the container entry point to pass through any extra
args to the server invocation, such as
docker run -it -d --name spigot -e EULA=TRUE -e TYPE=SPIGOT itzg/minecraft-server nogui --noconsole
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/itzg/dockerfiles/issues/80#issuecomment-222338704,
or mute the thread
https://github.com/notifications/unsubscribe/AACRvjc9OnYLYOxZdF_f_ahIgEn2DSQxks5qGPXMgaJpZM4IpL4g
.

I ran into this problem with Spigot as well. To fix on my server I added --noconsole too /data/bootstrap.txt. I also had to modify the start-minecraft script to pass the parameter to java: https://github.com/itzg/dockerfiles/issues/82.

Oops, might have closed too soon.
The challenge with applying --noconsole by default is that it'll defeat the ability to later docker attach when using -it on container creation.
@jbeda @jasmith86 , do you think it would be sufficient to document the new ability to pass command line args, like --noconsole, but leave the default as-is?

I think that having a warning (perhaps a big echo block) that you should
probably pass --noconsole when using spigot but that docker attach then
doesn't work would be good.  I'm betting other folks are pegging CPUs and
don't have the time/google-fu to figure out what is going on.
On Sat, Jun 4, 2016 at 10:49 AM Geoff Bourne<EMAIL_ADDRESS>wrote:

Oops, might have closed too soon.
The challenge with applying --noconsole by default is that it'll defeat
the ability to later docker attach when using -it on container creation.
@jbeda https://github.com/jbeda @jasmith86
https://github.com/jasmith86 , do you think it would be sufficient to
document the new ability to pass command line args, like --noconsole, but
leave the default as-is?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/itzg/dockerfiles/issues/80#issuecomment-223768855,
or mute the thread
https://github.com/notifications/unsubscribe/AACRvl_fThj-bGvosnTMlmeKhgEFETZ9ks5qIbqkgaJpZM4IpL4g
.

Could --noconsole be migrated to trigger off an environmental variable, maybe? I'm running mine container on a Synology NAS, and its GUI doesn't expose the ability to add extra arguments. I could run the container by hand but then I'd lose some of the nice management features.
Would something like this work?
diff --git a/minecraft-server/Dockerfile b/minecraft-server/Dockerfile
index 41d2306..fe28bd3 100644
--- a/minecraft-server/Dockerfile
+++ b/minecraft-server/Dockerfile
@@ -40,4 +40,4 @@ ENV UID=1000 GID=1000 \
     MOTD="A Minecraft Server Powered by Docker" \
     JVM_OPTS="-Xmx1024M -Xms1024M" \
     TYPE=VANILLA VERSION=LATEST FORGEVERSION=RECOMMENDED LEVEL=world PVP=true DIFFICULTY=easy \
-    LEVEL_TYPE=DEFAULT GENERATOR_SETTINGS= WORLD= MODPACK= ONLINE_MODE=TRUE
+    LEVEL_TYPE=DEFAULT GENERATOR_SETTINGS= WORLD= MODPACK= ONLINE_MODE=TRUE CONSOLE=true
diff --git a/minecraft-server/start-minecraft.sh b/minecraft-server/start-minecraft.sh
index afd0d0f..8a97584 100755
--- a/minecraft-server/start-minecraft.sh
+++ b/minecraft-server/start-minecraft.sh
@@ -441,10 +441,16 @@ if [ "$TYPE" = "SPIGOT" ]; then
   fi
 fi

+if [[ $CONSOLE = false ]]; then
+  EXTRA_ARGS=--noconsole
+else
+  EXTRA_ARGS=""
+fi
+
 # If we have a bootstrap.txt file... feed that in to the server stdin
 if [ -f /data/bootstrap.txt ];
 then
-    exec java $JVM_OPTS -jar $SERVER "$@" < /data/bootstrap.txt
+    exec java $JVM_OPTS -jar $SERVER "$@" $EXTRA_ARGS < /data/bootstrap.txt
 else
     exec java $JVM_OPTS -jar $SERVER "$@"
 fi

Excellent idea @kstrauser. Go ahead and create a pull request with your changes and I'll merge that ASAP.

It's in #106. CI seems to be having issues (or at least I can't identify anything in the failures that looks related to anything but Docker building slowly).

The image sha256:cf6731ecaf28994d6ccce839be205a3ab14cb65485d8307d492efe671b939ba9 is now pushed to Hub with #106 's change.
@kstrauser , when you get a chance can you touch up the README.md via a PR to cover the new environmental option?

Hi All,
I have pulled the MC docker container last week (thanks btw) but I am still seeing this issues on my server.  Java pegged at 100% its been running long enough to have settled down and it's only been me connecting to the server.
My docker-compose file sets CONSOLE: "false" after looking at the patch merged from above, (it's not in the docs) and the logs when the server starts say that there will be no console so setting the environment var seems to be doing what it should.
I don't suppose anyone has any ideas?
Thanks in advance!
Details:
Ubuntu 18.04 Server
Docker Container:
version: '3.7'

services:
        mc:
                image: itzg/minecraft-server
                environment:
                        EULA: "true"
                        TYPE: PAPER
                        VERSION: 1.14.2
                        COMMAND: --noconsole
                        CONSOLE: "false"
                ports:
                        - 25565:25565
                volumes:
                        - ./mc-data:/data

Docker ps:
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                PORTS                                              NAMES
3eb2c55f1389        itzg/minecraft-server   "/start"                 4 days ago          Up 4 days (healthy)   <IP_ADDRESS>:25565->25565/tcp, 25575/tcp                minecraft_mc_1_f3decfa148ef

Start of log:
Checking type information.
server.properties already created, skipping
Checking for JSON files.
Copying any mods over...
Copying any Bukkit plugins over...
Setting initial memory to 1G and max to 1G
Starting the Minecraft server...
[00:17:01 INFO]: Starting minecraft server version 1.14.2
[00:17:01 INFO]: Loading properties
[00:17:02 INFO]: This server is running Paper version git-Paper-86 (MC: 1.14.2) (Implementing API version 1.14.2-R0.1-SNAPSHOT)
[00:17:02 INFO]: Console input is disabled due to --noconsole command argument
[00:17:02 INFO]: Server Ping Player Sample Count: 12
[00:17:02 INFO]: Using 4 threads for Netty based IO
[00:17:02 INFO]: Debug logging is disabled

top:
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 3076 a3dbox    20   0 2777432 1.264g  15420 S 100.0 21.7   6953:09 java

ps 3076:
  PID TTY      STAT   TIME COMMAND
 3076 ?        Sl   6954:19 java -XX:+UseG1GC -Xms1G -Xmx1G -jar paper_server.jar --noconsole

The newer Spigot versions might have fixed the original issue; however, I also made sure document the CONSOLE=FALSE option that will pass --noconsole:
https://github.com/itzg/docker-minecraft-server#using-noconsole-option

For me it is still pegging one core to 100% even with the --noconsole argument.
I tried your example:
docker run -d -v /path/on/host:/data \
    -e TYPE=SPIGOT -e VERSION=1.8 \
    -p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server --noconsole

As well as my usual way via portainer:
---
version: "2"
services:
  mc2:
    image: itzg/minecraft-server
    container_name: mc2
    environment:
      - EULA=TRUE
      - TYPE=SPIGOT
      - MEMORY=4G
      - CONSOLE=FALSE
      - GUI=FALSE
    volumes:
      - /PathToData:/data
    ports:
      - 25565:25565
      - 25575:25575
    restart: unless-stopped
  mc2_backup:
    image: itzg/mc-backup
    container_name: mc2_backup
    environment:
      - BACKUP_INTERVAL=24h
      - INITIAL_DELAY=30s
      - RCON_HOST=HostIp
      - RCON_PORT=25575
      - RCON_PASSWORD=RconPassword
      - BACKUP_METHOD=tar
      - LINK_LATEST=false
      - PRUNE_BACKUPS_DAYS=7
    volumes:
      - /PathToData:/data:ro
      - /PathToBackups:/backups
    restart: unless-stopped
    depends_on:
      - mc2

But both will peg one core fully even without any plugins or players connected:
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
30646 chrisme+  20   0 2782952   1.2g  13880 S 106.2   9.2  12:14.56 java

Log:
[10:43:34] [Server thread/INFO]: Starting minecraft server version 1.15.2
[10:43:34] [Server thread/INFO]: Loading properties
[10:43:35] [Server thread/INFO]: This server is running CraftBukkit version git-Spigot-800b93f-8160e29 (MC: 1.15.2) (Implementing API version 1.15.2-R0.1-SNAPSHOT)
[10:43:35] [Server thread/INFO]: Console input is disabled due to --noconsole command argument
[10:43:35] [Server thread/INFO]: Server Ping Player Sample Count: 12
[10:43:35] [Server thread/INFO]: Using 4 threads for Netty based IO
[10:43:35] [Server thread/INFO]: Debug logging is disabled
[10:43:35] [Server thread/INFO]: Default game type: SURVIVAL
[10:43:35] [Server thread/INFO]: Generating keypair
[10:43:36] [Server thread/INFO]: Starting Minecraft server on *:25565
[10:43:36] [Server thread/INFO]: Using epoll channel type
[10:43:36] [Server thread/INFO]: Preparing level "world"
[10:43:36] [Server thread/INFO]: Reloading ResourceManager: Default, bukkit
[10:43:37] [Server thread/INFO]: Loaded 6 recipes
[10:43:37] [Server thread/INFO]: -------- World Settings For [world] --------
[10:43:37] [Server thread/INFO]: View Distance: 10
[10:43:37] [Server thread/INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
[10:43:37] [Server thread/INFO]: Mob Spawn Range: 6
[10:43:37] [Server thread/INFO]: Cactus Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Cane Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Melon Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Mushroom Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Pumpkin Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Sapling Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Beetroot Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Carrot Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Potato Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Wheat Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: NetherWart Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Vine Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Cocoa Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Bamboo Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: SweetBerry Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Kelp Growth Modifier: 100%
[10:43:37] [Server thread/INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true
[10:43:37] [Server thread/INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
[10:43:37] [Server thread/INFO]: Custom Map Seeds:  Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313Ocean: 14357621 Shipwreck: 165745295 Slime: 987234911
[10:43:37] [Server thread/INFO]: Max TNT Explosions: 100
[10:43:37] [Server thread/INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[10:43:37] [Server thread/INFO]: Item Merge Radius: 2.5
[10:43:37] [Server thread/INFO]: Item Despawn Rate: 6000
[10:43:37] [Server thread/INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200
[10:43:37] [Server thread/INFO]: Nerfing mobs spawned from spawners: false
[10:43:37] [Server thread/INFO]: Zombie Aggressive Towards Villager: true
[10:43:37] [Server thread/INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[10:43:37] [Server thread/INFO]: Experience Merge Radius: 3.0
[10:43:46] [Server thread/INFO]: -------- World Settings For [world_nether] --------
[10:43:46] [Server thread/INFO]: View Distance: 10
[10:43:46] [Server thread/INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
[10:43:46] [Server thread/INFO]: Mob Spawn Range: 6
[10:43:46] [Server thread/INFO]: Cactus Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Cane Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Melon Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Mushroom Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Pumpkin Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Sapling Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Beetroot Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Carrot Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Potato Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Wheat Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: NetherWart Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Vine Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Cocoa Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Bamboo Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: SweetBerry Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Kelp Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true
[10:43:46] [Server thread/INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
[10:43:46] [Server thread/INFO]: Custom Map Seeds:  Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313Ocean: 14357621 Shipwreck: 165745295 Slime: 987234911
[10:43:46] [Server thread/INFO]: Max TNT Explosions: 100
[10:43:46] [Server thread/INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[10:43:46] [Server thread/INFO]: Item Merge Radius: 2.5
[10:43:46] [Server thread/INFO]: Item Despawn Rate: 6000
[10:43:46] [Server thread/INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200
[10:43:46] [Server thread/INFO]: Nerfing mobs spawned from spawners: false
[10:43:46] [Server thread/INFO]: Zombie Aggressive Towards Villager: true
[10:43:46] [Server thread/INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[10:43:46] [Server thread/INFO]: Experience Merge Radius: 3.0
[10:43:46] [Server thread/INFO]: -------- World Settings For [world_the_end] --------
[10:43:46] [Server thread/INFO]: View Distance: 10
[10:43:46] [Server thread/INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
[10:43:46] [Server thread/INFO]: Mob Spawn Range: 6
[10:43:46] [Server thread/INFO]: Cactus Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Cane Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Melon Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Mushroom Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Pumpkin Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Sapling Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Beetroot Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Carrot Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Potato Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Wheat Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: NetherWart Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Vine Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Cocoa Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Bamboo Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: SweetBerry Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Kelp Growth Modifier: 100%
[10:43:46] [Server thread/INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true
[10:43:46] [Server thread/INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
[10:43:46] [Server thread/INFO]: Custom Map Seeds:  Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313Ocean: 14357621 Shipwreck: 165745295 Slime: 987234911
[10:43:46] [Server thread/INFO]: Max TNT Explosions: 100
[10:43:46] [Server thread/INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[10:43:46] [Server thread/INFO]: Item Merge Radius: 2.5
[10:43:46] [Server thread/INFO]: Item Despawn Rate: 6000
[10:43:46] [Server thread/INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200
[10:43:46] [Server thread/INFO]: Nerfing mobs spawned from spawners: false
[10:43:46] [Server thread/INFO]: Zombie Aggressive Towards Villager: true
[10:43:46] [Server thread/INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[10:43:46] [Server thread/INFO]: Experience Merge Radius: 3.0
[10:43:46] [Server thread/INFO]: Preparing start region for dimension 'world'/minecraft:overworld
[10:43:47] [Server thread/INFO]: Preparing spawn area: 0%
[10:43:47] [Server thread/INFO]: Preparing spawn area: 0%
[10:43:47] [Server thread/INFO]: Preparing spawn area: 0%
[10:43:47] [Server thread/INFO]: Preparing spawn area: 0%
[10:43:49] [Server-Worker-3/INFO]: Preparing spawn area: 83%
[10:43:49] [Server-Worker-3/INFO]: Preparing spawn area: 83%
[10:43:49] [Server-Worker-3/INFO]: Preparing spawn area: 83%
[10:43:49] [Server-Worker-3/INFO]: Preparing spawn area: 83%
[10:43:50] [Server-Worker-2/INFO]: Preparing spawn area: 83%
[10:43:50] [Server-Worker-2/INFO]: Preparing spawn area: 83%
[10:43:51] [Server-Worker-2/INFO]: Preparing spawn area: 83%
[10:43:51] [Server thread/INFO]: Preparing spawn area: 84%
[10:43:52] [Server-Worker-1/INFO]: Preparing spawn area: 86%
[10:43:52] [Server thread/INFO]: Preparing spawn area: 93%
[10:43:53] [Server-Worker-2/INFO]: Preparing spawn area: 96%
[10:43:53] [Server thread/INFO]: Time elapsed: 7378 ms
[10:43:53] [Server thread/INFO]: Preparing start region for dimension 'world_nether'/minecraft:the_nether
[10:43:54] [Server thread/INFO]: Preparing spawn area: 0%
[10:43:54] [Server thread/INFO]: Preparing spawn area: 0%
[10:43:54] [Server-Worker-2/INFO]: Preparing spawn area: 83%
[10:43:55] [Server-Worker-1/INFO]: Preparing spawn area: 83%
[10:43:55] [Server-Worker-1/INFO]: Preparing spawn area: 88%
[10:43:55] [Server thread/INFO]: Time elapsed: 2140 ms
[10:43:55] [Server thread/INFO]: Preparing start region for dimension 'world_the_end'/minecraft:the_end
[10:43:56] [Server thread/INFO]: Preparing spawn area: 0%
[10:43:56] [Server-Worker-1/INFO]: Preparing spawn area: 83%
[10:43:56] [Server thread/INFO]: Time elapsed: 922 ms
[10:43:56] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[10:43:56] [Server thread/INFO]: Done (20.394s)! For help, type "help"
[10:43:56] [Server thread/INFO]: Starting remote control listener
[10:43:56] [RCON Listener #1/INFO]: RCON running on <IP_ADDRESS>:25575
[10:43:59] [RCON Listener #1/INFO]: Rcon connection from: /<IP_ADDRESS>
[10:43:59] [RCON Listener #1/INFO]: Rcon connection from: /<IP_ADDRESS>
[10:43:59] [Server thread/INFO]: [Rcon: Automatic saving is now disabled]
[10:43:59] [RCON Listener #1/INFO]: Rcon connection from: /<IP_ADDRESS>
[10:43:59] [Server thread/INFO]: [Rcon: Saved the game]
[10:44:00] [RCON Listener #1/INFO]: Rcon connection from: /<IP_ADDRESS>
[10:44:00] [Server thread/INFO]: [Rcon: Automatic saving is now enabled]


cglm: install correct include/lib dir in pkg-config

Description of changes
Currently the cglm package has the following pkgconfig:
$ nix build nixpkgs#cglm && cat result/lib/pkgconfig/cglm.pc
prefix=/nix/store/3b25lbw0vnglfar91mich3mliqchxmiy-cglm-0.8.5
exec_prefix=/nix/store/3b25lbw0vnglfar91mich3mliqchxmiy-cglm-0.8.5
libdir=${prefix}//nix/store/3b25lbw0vnglfar91mich3mliqchxmiy-cglm-0.8.5/lib
includedir=${prefix}//nix/store/3b25lbw0vnglfar91mich3mliqchxmiy-cglm-0.8.5/include

Name: cglm
Description: OpenGL Mathematics (glm) for C
URL: https://github.com/recp/cglm
Version: 0.8.5
Cflags: -I${includedir}
Libs: -L${libdir} -lcglm

The includedir and libdir resolve into /nix/store/3b25lbw0vnglfar91mich3mliqchxmiy-cglm-0.8.5//nix/store/3b25lbw0vnglfar91mich3mliqchxmiy-cglm-0.8.5/{include,lib}. This is incorrect.
I attempted to fix this by setting CMAKE_INSTALL_INCLUDEDIR and CMAKE_INSTALL_LIBDIR.
After the change it results in correct pkgconfig:
$ nix build .#cglm && cat result/lib/pkgconfig/cglm.pc
prefix=/nix/store/g29bhhjrnb2mwm6l4n38f1k8aspcsr47-cglm-0.8.5
exec_prefix=/nix/store/g29bhhjrnb2mwm6l4n38f1k8aspcsr47-cglm-0.8.5
libdir=${prefix}/lib
includedir=${prefix}/include

Name: cglm
Description: OpenGL Mathematics (glm) for C
URL: https://github.com/recp/cglm
Version: 0.8.5
Cflags: -I${includedir}
Libs: -L${libdir} -lcglm

The only package that depends on cglm seems to be taisei. I was able to successfully build taisei with these changes.
The reason to do this change is to be able to build wxrc, which currently fails.
Things done

Built on platform(s)

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

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

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

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

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

[x] Fits CONTRIBUTING.md.

I think the expression will need some cleanup after this PR collided with 3bf5a3cecf.  (Currently not in master branch yet, just in staging-next.)

I think the expression will need some cleanup after this PR collided with 3bf5a3c. (Currently not in master branch yet, just in staging-next.)

Ah, so more people ran into this problem :sweat_smile:
The fix in https://github.com/NixOS/nixpkgs/commit/3bf5a3cecfe22d1a26662edad3e235a7cb2550e2 seems to be functionally equal to this PR. Which patch should be accepted?
I'm fine with creating a revert for my PR, but the other patch should then still be applied to master as well?

The clash has only reached staging-next for now (and it will remain so for at least a few more days), so at this point it's best resolved on that branch.


Angle does not remember values

Angle does not remember values.

Add Angle. Set any value for High and Low.
Remove Angle.
Add Angle again - and values are reset to 0.

This was added purposefully as a solution to a visual bug in the preview particle. I have added a work around. It will be in the next version. Thanks.


Workflow introspection

I was wondering if this lib exposes any clean way to introspect workflow steps and workflow states.

Introspect workflow steps: Because I would like to create a graph of my workflow that will be displayed on our admin.

Introspect workflow states: Im seeking a way to list workflow instances and their states, because I would like to show which step a given instance of a workflow is on.

Thanks

Hi!
To help those asking for the same question, here is an example of a simple logProgress function.
import { configureWorkflow, IWorkflowHost, WorkflowConfig, IWorkflowRegistry, TYPES, IPersistenceProvider, WorkflowStatus } from 'workflow-es';
// ...

export class HostModule {
    private workflowConfig: WorkflowConfig;

    constructor() {
        this.workflowConfig = configureWorkflow();
        this.workflowConfig.registerWorkflow(MyWorkflow1);
        this.workflowConfig.registerWorkflow(MyWorkflow2);
    }

    async logProgress(workflowId: string) {
        const container = await this.workflowConfig.getContainer();
        const persistence = container.get<IPersistenceProvider>(TYPES.IPersistenceProvider);
        const registry = container.get<IWorkflowRegistry>(TYPES.IWorkflowRegistry);

        const wf = await persistence.getWorkflowInstance(workflowId);
        const wfDefinition = await registry.getDefinition(wf.workflowDefinitionId, wf.version);
        console.log("\n\n\n------- wf introspection", `status=${this.getWorkflowStatusKey(wf.status)}`);
        console.log(wfDefinition.steps.map(step => `step(${step.id}): ${step.body.name}`));
        console.log(`execution pointers steps (${wf.executionPointers.length}) :`);
        console.log(wf.executionPointers.map((p, i) => `pointer n°${i} => step(${p.stepId})${p.active ? ' **active**' : ''}`));
    }

    private getWorkflowStatusKey(value: number): string {
        const statuses: { [key: string]: number } = {...WorkflowStatus};
        for (let key in statuses) {
            if (statuses[key] === value) {
                return key
            }
        }

        return "unknown";
    }
}

This will log something like this :
// HostModule.logProgress
------- wf introspection status=Runnable
[
  'step(0): ConfigurationTask',
  'step(1): Foreach',
  'step(2): AllocateResourcesTask',
  'step(3): Foreach',
  'step(4): SetupVaultsTask',
  'step(5): Foreach',
  'step(6): ServiceCheckTask',
  'step(7): ServiceDeployTask',
  'step(8): ServiceRestartTask',
  'step(9): NginxReloadTask',
  'step(10): Foreach',
  'step(11): ServiceCleanupTask'
]
execution pointers steps (16) :
[
  'pointer n°0 => step(0)',
  'pointer n°1 => step(1)',
  'pointer n°2 => step(2)',
  'pointer n°3 => step(2)',
  'pointer n°4 => step(2)',
  'pointer n°5 => step(3)',
  'pointer n°6 => step(4)',
  'pointer n°7 => step(4)',
  'pointer n°8 => step(4)',
  'pointer n°9 => step(5) **active**',
  'pointer n°10 => step(6)',
  'pointer n°11 => step(6)',
  'pointer n°12 => step(6)',
  'pointer n°13 => step(7) **active**',
  'pointer n°14 => step(7) **active**',
  'pointer n°15 => step(7) **active**'
]

The purpose of this is to give an idea of what to expect before diving into code. I hope someone would find it useful :D


marketing pages form embeds

@jalagari @ravise5 can you guys fix the rest of the forms embeds in the marketing section; the template marketing-location-page was meant to be a template; now it seems like you guys have figured out a way to embed the content without using that template, which has a significant LHS impact. Can you also change the rest of the marketing pages to do the same?

@MarquiseRosier We have manually embedded these forms in lots of pages over the past few weeks, this would mean we have to redo all that. There are other pages also that use the marketing-location template other than /marketing pages.
cc: @jalagari

I was checking the page-speed of https://main--stericycle-shared--aemsites.aem.page/en-us/marketing/locations/paper-shredding-columbus it doesn't seemed to be affected.
https://pagespeed.web.dev/analysis/https-main--stericycle-shared--aemsites-aem-page-en-us-marketing-locations-paper-shredding-columbus/c1fyohlvo1?form_factor=mobile
Can you share a URL where this issue is reproducible?

@jalagari @ravise5 okay that makes sense! I will say though; the styling on the two-columns forms in these two places are wrong.

@colinvlasak pointed this out here. #504

@jalagari @ravise5 a better example is the first image should match the margin of the header. There should be alignment.

The second image should be aligned with the element above it.

@MarquiseRosier The fixed width for two column layout was for the scenario: https://github.com/aemsites/stericycle-shared/issues/504
Your change for this page is correct, let me create a style separate class for this

@ravise5 I wish haha because it's caused the following issue
https://main-change--shredit--stericycle.aem.page/en-us/secure-shredding-services/one-off-shredding-service

@MarquiseRosier is looks like the margin is still off on these pages where the forms are.
Example: https://main--shredit--stericycle.aem.live/en-us/marketing/bulk-paper-shredding?18
In the top portion it doesn't go out to where the button ends in the header.

In the bottom portion it goes beyond the button. Should be constrained to align with it.

@ravise5 top form is still not inline with the margin

Can invalidate cache and try once??

@ravise5 cleared cache and opened in private browser but still seeing the margin issue on the top form on https://main--shredit--stericycle.aem.live/en-us/marketing/bulk-paper-shredding

@colinvlasak Can you review this url: https://margins--shredit--stericycle.aem.live/en-us/marketing/bulk-paper-shredding

@ravise5 that version looks good


Error when catching Custodian error handler results

Environment

quacc version: 0.3.5
Python version: 3.10.x
Operating system: Linux
Workflow engine (if applicable): N/A

What is the issue?
When Custodian goes through its error-handling routine, the error code from VASP is not being suppressed, such that the results are not returned. Not sure why yet...
How can we reproduce the issue?
import parsl
from parsl.config import Config
from parsl.executors import HighThroughputExecutor
from parsl.launchers import SimpleLauncher
from parsl.providers import SlurmProvider

account = "matgen"
max_slurm_jobs = 1
n_calcs_per_job = 1
n_nodes_per_calc = 1
n_cores_per_node = 128

config = Config(
    strategy="htex_auto_scale",
    executors=[
        HighThroughputExecutor(
            label="quacc_parsl",
            max_workers=n_calcs_per_job,
            cores_per_worker=1e-6,
            provider=SlurmProvider(
                account=account,
                scheduler_options="#SBATCH -q debug -C cpu",
                worker_init=f"source ~/.bashrc && conda activate quacc && module load vasp/6.4.1-cpu && export QUACC_VASP_PARALLEL_CMD='srun -N {n_nodes_per_calc} --ntasks-per-node={n_cores_per_node} --cpu_bind=cores'",
                walltime="00:10:00",
                nodes_per_block=n_nodes_per_calc * n_calcs_per_job,
                init_blocks=0,
                min_blocks=0,
                max_blocks=max_slurm_jobs,
                launcher=SimpleLauncher(),
                cmd_timeout=120,
            ),
        )
    ],
)

parsl.load(config)

from ase.build import bulk
from quacc.recipes.vasp.core import relax_job, static_job

def workflow(atoms):
    relax_output = relax_job(atoms, calc_swaps={"kpts": [3, 3, 3]})
    return static_job(relax_output, calc_swaps={"kpts": [3, 3, 3]})

future2 = workflow(bulk("Cu"))
print(future2.result())

False alarm. This is a Custodian thing.


There is no --local file location for a git repo

Executing the command with the --local option throws an error "unknown option 'local'"

Got same error.
git version <IP_ADDRESS>
When proposed changes will be applied?
Proposed solution works for me perfectly.

The same error occurs when there are tags in the svn repo.
Furthermore, I also got an error because no global user.name and user.email were set:
git config --get user.name
git config --get user.email

(lines 214 and 215, in fix_tags) fail because there is no output.

New repos don't have a user.name set. So I am getting:
command failed:
2>&1 git config --local --get user.name

I get the following error:
command failed:
2>&1 git config --local --get user.name
Setting a local username and email for the repository seems to workaround the issue.

git : <IP_ADDRESS>
global username and email are set

Fix: #49

Sorry all, but I just deleted a bunch of comments on this issue that really are more appropriate for the one fixed by #49.  They just both happen to use some variant of "git config --local", but they're not the same issue.

@patrickmatsumura
It looks like the "--local" option was introduced in a git version more recent than the one you're using.  I don't know when it was added, but it's a safer option than using global, so I'd prefer to use it if we can.  That means I won't merge your pull request as is, but I'm happy to accept something that tries "--local" first and if it fails, fall back to the global setting.
To make things simpler, run_command now takes an optional arg to not raise an error if the command fails.  So you could run that, then check the output to see if it's empty, before executing the global command.

--local is an extremely recent feature, and I had to upgrade to the newest 1.7 git to make it work on one server. It was far easier to just edit the svn2git code and remove --local for the two other servers I've needed it.


Should we move hie-plugin-api to its own repo?

hie-plugin-api provides a number of things, the most fundamental being an API that plugins can code against.  This is used by HaRe. But HaRe is also used as a plugin in hie.
Since none of these is currently in hackage, we end up with the absurd situation where haskell-ide-engine has HaRe as a submodule, which in turn has haskell-ide-engine as a submodule, and on it goes.
Git knows how to do the right thing, but this is awkward and confusing.
A possible solution is to move hie-plugin-api to its own repo, which in the current development model would result in it being a submodule of haskell-ide-engine, and also of HaRe, but then without cycles.
Comments? Other solutions?

There is a big amount of friction in having things setup as separate repos. A small change such as adding a new Config value can end up in a long change of small steps that can slow down development.
I don't have a lot of experience with this but, can we maybe source the parts of Hare that depend on the haskell-ide-plugin inside this repo and separate them entirely from HaRe?


Data in the tooltip is not aligned properly

Textbook_distribution
-Data in the tooltip is not aligned properly

working as expected


Updating Dockerfile (trying to make it work)

Use the jar directly instead of unzipping it.
We can use a feature of Docker to download files via ADD
(no need for curl inside the container)

The unzipping is something that was needed to solve a performance problem iirc. lemme find it cc @dsyer

here's the thing about unzipping https://github.com/openzipkin/zipkin-java/pull/37

This definitely helps!

reverted this as I was wrong. the winning change was this one https://github.com/openzipkin/zipkin-java/pull/147


More generic feature1

Created a generic method with arguments.
It could be useful to make reproduction of issues easier in the future.

Thanks for contributing!
It looks good to me. But could you remove the dwonloaded files in cache/, staticAnalyzer/cache, crawlPackage/cache, and crawlPackage/database   folders? Also please remove settings.toml.
Thanks~


Scalable HTTP API for Function triggering

Goal is to serve content to end user using Functions.
http_user_agent -> my_api_gateway -> scalable_pulsar_http_api -> pulsar_function

like aws is doing with their combo apigateway+lambda where their ApiGateway can return content to user (json/html..) while also calling a Lambda function
The goal here is scalability to handle many user requests coming from the my_api_gateway
related to #4201

any news on this missing part?
[X] Pulsar Kinesis + SQS
[X] Bookkeeper DynamoDB
[ ] Pulsar API Gateway AWS APi Gateway

Closed as stale. Please open a new issue if it's still relevant to the maintained versions.


Improve relationships between window-size and screen size

When I start Sq3, the vertical extent of the app window exceeds that of my available screen. I am not sure whether this is an issue with the existence of the Windows Taskbar, or what, but it would be nice if the splash screen scaled itself to ~90% of the available vertical of the screen (whilst retaining its current aspect ratio).
I have no problem with the prospect of using the Maximise button to fit the window to my real screen area, but in order to do that, I need to be able to see that button and interact with it, and at the moment, that is tricky! I can't do it at all on the splash screen; I have to wait until I get to 1-2 screens subsequent (in File, I think), when 1 pixel of the title bar becomes available, then position my mouse right at the very top of the screen, and drag down. Then I can get access.
The other part of it is having the individual windows be cognisant of the limitations placed upon them by the window generated via Maximise. The RM Wtd Av window is a good example - the plot area is too big for the biggest window my Win10 screen permits, so I can't see or interact with anything below the label for the x-axis of that plot (I remember there used to be radio-buttons down there). And as far as I can tell, there's nothing I can do about that.
I'd like to see scroll bars on any window with non-scaled content that extends beyond the display area.

OK Jim @bowring , I have investigated my poxy little laptop screen, and apparently it is "1920 x 1080 (recommended)" BUT Win10 display-scaling is set to "150% (recommended)". My guess is the combination of these two parameters is giving me "true" screen real-estate of 1280 x 720, which would no doubt be the source of this issue.
So I tried reducing the display-scaling to 125%, and that does indeed give me full access to the real estate of the Squid3 windows (hurrah!). But it does also make some of the text teeny-tiny. With respect to the RM Wtd Av screen, teeny-tiny text includes the RM spot-ages and errors, and also the 'Flavor' and 'Correction' radio-button options at the foot of the screen. I am going to attach a screenshot of the Maximised window, captured at display 125%, to give you an idea of how it looks:

Now, it's possible that some the disproportionality is just because I haven't yet restarted my system, and it could be that things will look better after restart (I am about to do that). Just thought I'd document this as it stands first.

OK, so restarting my laptopafter setting display scaling = 125% did result in better scaling of the "scalable" text in the Sq3 windows (things like 'Flavour' and 'Correction' options are much better-sized). So that's fine.
A residual issue is that the fixed-width font you use for "full double-precision" numbers everywhere (represented in the above screenshot by the RM spot-ages and errors, and in the Expression Manager Peek window etc.) does not scale, and is therefore pretty teeny-tiny. The reasons for this are easy to understand, especially when you are portraying the full 15 significant figures, but it does leave us GA users with cheap Win10 laptops in a slightly awkward position!
It's your call, because it is workable with display scaling 125% (I am just trying to get used to it now!). It would be more comfortable at 150%, but that would entail you resizing the vertical extent of Sq3's screens from 800 to 720 (although I suspect you could leave the width unchanged at 1200 if you wished, because I don't think there are too many 4:3 screens still in use these days!).
That's where I am at the moment; I imagine things will be much better in Win10 when I can hook up to the external monitor at work, but that won't be until Friday for me. I'll try and have a look at the Interpretations stuff before then.


Test app upgrade from 2.0.69 to 2.0.70

Gift cross compatibility - sending from new to old and old to new

Verified this issue on dev app v2.0.70(440)