Unable to find module json

Description
I'm encountering this error when installing getty json with zon
thread 11249 panic: unable to find module 'json'
/usr/lib/zig/std/debug.zig:374:22: 0x36c1c9 in panicExtra__anon_46291 (build)
    std.builtin.panic(msg, trace, ret_addr);
                     ^
/usr/lib/zig/std/debug.zig:349:15: 0x340d89 in panic__anon_13633 (build)
    panicExtra(null, null, format, args);
              ^
/usr/lib/zig/std/Build.zig:1556:18: 0x2f7ae7 in module (build)
            panic("unable to find module '{s}'", .{name});
                 ^
/home/lucas/Documents/ninja/build.zig:8:55: 0x2f60ca in build (build)
    const json_mod = b.dependency("json", opts).module("json");
                                                      ^
/usr/lib/zig/std/Build.zig:1639:43: 0x2e5180 in runBuild__anon_7138 (build)
        .ErrorUnion => try build_zig.build(b),
                                          ^
/usr/lib/zig/build_runner.zig:297:29: 0x2e0f52 in main (build)
        try builder.runBuild(root);
                            ^
/usr/lib/zig/std/start.zig:574:37: 0x2cc85e in posixCallMainAndExit (build)
            const result = root.main() catch |err| {
                                    ^
/usr/lib/zig/std/start.zig:243:5: 0x2cc341 in _start (build)
    asm volatile (switch (native_arch) {

How to Reproduce the Bug
Add json to zon :
{
  ...
  .dependencies = .{
    .json = .{
      .url = "https://github.com/getty-zig/json/archive/d9819a96d5769dfa497ba27832ecd6fd86645ea9.tar.gz",
      .hash = "1220e73e4fd05a6e5813c61055a6e935d35774b0b9a79f1547012f89546739c49bc8"
    }
  }
}

Add module in build.zig :
const json_mod = b.dependency("json", opts).module("json");
exe.addModule("json", json_mod);

Additional Context
No response

What version of Zig are you using?
I just tried using the same version of getty-json that you showed and it worked for me, though I had to use a different package hash value.

I use zig 0.11.0
Can you provide me the hash you used ?

Hash: 1220e37ec05868531042349ba841ddace6517adb8f2414ea629c3c6e426c0f395b8f
I'm on master, btw. I wonder if something changed in regards to the package manager between 0.11.0 and master? 🤔

I tried with your hash and master and it don't work.
Yes maybe, Zon has some weird behavior sometimes.
I can try to install getty without zig but don't know how to modify my build.zig to make it work.

Can you delete the .hash = "..." line from your build.zig.zon and then run the following in your project directory using Zig master?
$ rm -rf zig-cache
$ zig build --fetch

The 2nd command should give you a hash value that you can update build.zig.zon with. See if the hash value is the same as your original one or mine.

I tried, when the compiler give me a hash and use it I have this error :
hash mismatch: expected: 1220c28503c1a092c028aa45e09e488458f419122934d6c3b9a48b63fe0e131fe1a1, found: 1220e73e4fd05a6e5813c61055a6e935d35774b0b9a79f1547012f89546739c49bc8
            .hash = "1220c28503c1a092c028aa45e09e488458f419122934d6c3b9a48b63fe0e131fe1a1",

(This is where it's weird, because the expected hash is one that I provide and found hash is another hash, seems like a bug, the word found and expected are inverted)
So I tried with the "found" hash and after that I got the same initial error "unable to find module json"
Here is my build.zig : https://zigbin.io/b214c0

I saw the json module being added to mapExe in your build.zig but I didn't see any addModule calls for exe.

Could you try adding it to exe anyways? Maybe there's some package manager weirdness where it needs to be applied to both despite only being required by mapExe.

I've tried all 😥
Tried to add it on exe and got the same problem.
Tried on an empty project with this build : https://zigbin.io/f619a8 and same

Does that build.zig even work? Why is the path main.zig and not src/main.zig? I just did a zig init on a new, empty directory to test this out and everything works fine for me.
build.zig
const std = @import("std");

pub fn build(b: *std.Build) void {
    const target = b.standardTargetOptions(.{});
    const optimize = b.standardOptimizeOption(.{});
    const opts = .{ .target = target, .optimize = optimize };

    const json_mod = b.dependency("json", opts).module("json");

    const exe = b.addExecutable(.{
        .name = "test",
        .root_source_file = .{ .path = "src/main.zig" },
        .target = target,
        .optimize = optimize,
    });
    exe.addModule("json", json_mod);

    const run_step = b.step("run", "Run the app");
    const run_cmd = b.addRunArtifact(exe);
    run_cmd.step.dependOn(b.getInstallStep());
    run_step.dependOn(&run_cmd.step);
}

build.zig.zon
.{
    .name = "test",
    .version = "0.0.0",
    .paths = .{""},
    .dependencies = .{
        .json = .{
            .url = "https://github.com/getty-zig/json/archive/d9819a96d5769dfa497ba27832ecd6fd86645ea9.tar.gz",
            .hash = "1220e37ec05868531042349ba841ddace6517adb8f2414ea629c3c6e426c0f395b8f",
        },
    },
}

src/main.zig
const std = @import("std");
const json = @import("json");

pub fn main() !void {
    const s = try json.toSlice(std.heap.c_allocator, true);

    std.debug.print("{s}\n", .{s});
}

Shell
$ zig build run
true

I didn't know zig init, but tried with and I got the same problem, I created a post on the zig discord and we will see.

Are you using BTRFS? Maybe you are hitting this issue https://github.com/ziglang/zig/issues/17282

I'm having a similar issue, I found the zig discord thread and commented several times there but I'll summarize what I've tried here.
I also was using 0.11.0 originally. I used commit dda4272d6e138a5fc5838490186481320a2a2bfe throughout the following steps.
Here is zig build with no hash on 0.11.0. Throughout the course of my troubleshooting I don't think --fetch is needed and that it will fetch automatically if no hash is found(identical results).
        .json = .{ .url = "https://github.com/getty-zig/json/archive/dda4272d6e138a5fc5838490186481320a2a2bfe.tar.gz" },
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note: expected .hash = "12200df556b3aa78c574f8ce916e7d3085e0c14981103e0b4fc40ccbca58c1a4ffbe",

I run zig build again with the reported hash added on 0.11.0 and get the following hash mismatch error:
/home/allison/.cache/zig/p/12200df556b3aa78c574f8ce916e7d3085e0c14981103e0b4fc40ccbca58c1a4ffbe/build.zig.zon:14:21: error: hash mismatch: expected: 1220300f52d7592914660ee3c8e461dc7c10bd45708eb32deb0e341b47c7921536dc, found: 12201b27a3fa3bc208186ec46b54d57ec119809fd5a0476ddda55d369ab70a2b3fce
            .hash = "1220300f52d7592914660ee3c8e461dc7c10bd45708eb32deb0e341b47c7921536dc",

I deleted local zig-cache, switched to master branch of zig, and restarted the process.
As expected, with a zig build on master we get a hash request:
Fetch Packages [3/2] /blah/build.zig.zon:14:27: error: dependency is missing hash field
        .json = .{ .url = "https://github.com/getty-zig/json/archive/dda4272d6e138a5fc5838490186481320a2a2bfe.tar.gz" },
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note: expected .hash = "12206efb55d5d5eb7698ac1984cdb1aebdfa7bc38771bfad98d4e121fc9c2465cd94",

Added that hash in and reran zig build on master and it works! I now have errors with other packages and master branch though. So I'd prefer to be able to get 0.11.0 working!
While typing this up I got a response on discord that seems relevant/useful:

The issue here is that 0.11.0 and master calculate the hash differently for packages which use the paths field in build.zig.zon to include only certain files in the final package: https://github.com/ziglang/zig/blob/master/doc/build.zig.zon.md#paths
0.11.0 doesn't know about paths, so the hash consists of all files in the fetched package, but master will consider only paths in paths in the hash. Unfortunately, getty-zig/json has transitive dependencies in its own build.zig.zon which use the hash calculated by master, making it incompatible with 0.11.0: https://github.com/getty-zig/json/blob/dda4272d6e138a5fc5838490186481320a2a2bfe/build.zig.zon#L14
If your other packages are incompatible with master, that raises an unfortunate dilemma (getty-zig/json only works with master, other dependencies only work with 0.11.0)

Thanks for looking into it @AdjectiveAllison and posting your findings here so that others can reference it!
The short of it is, projects that want to use the latest version of Getty or Getty JSON will have to upgrade from 0.11.0 to a more recent version of Zig.  Both Getty and Getty JSON are developed using Zig master (see the badges on either project's README) and therefore use features and have fixes for changes that are not available or present in 0.11.0.
Until Zig reaches 1.0, both projects will continue using Zig master for development. I might consider keeping a separate branch though for whenever Zig 0.12.0 comes out that'll remain compatible with that version of Zig. Let me know if you'd be interested in something like that.

[...] I don't think --fetch is needed and that it will fetch automatically if no hash is found(identical results).

Correct, --fetch is not needed. However, I do like including it just so that the build process stops immediately after fetching packages. That way, no unnecessary build stuff will run when we're just looking for the hashes.


mux the trace output (isolate in a separate TUI panel)

The more services we have, the more noise that'll be directly in the shell
We should put a pane at the bottom of the shell (e.g. a poormans tmux),
and pipe the trace output to that

Wanted to pop in to say that I'm using the Unix tail over Fuge tail because it becomes too noisy that its difficult to use the shell.
However, fuge tail is really useful in that I can get a stream of log messages from multiple services that are outputted in the order they are logged. Unix tail, I'm tailing multiple log files, but if I need to narrow down order of events, I have to compare time stamps. Probably a way to do what I want in Unix...
So although Unix tail is what I use to avoid mucking up my Fuge shell, I'd rather use Fuge.

This would be a huge quality of life improvement alright. I would reverse it. I would have a small command pane at the bottom and the rest for a big log space.


Allow using |tojson in double-quoted HTML attributes again

I'm in a project where double-quoted HTML attributes is part of the style guide. We're also using data- attributes to pass data to code and consider it a bad practice to render anything directly within scripts.
Being able to remove |safe within


chore: cache node_modules

Can you explain the rationale behind this change?

This creates a build cache which just caches the node_modules directory and creates new cache snapshots if there are changes. This improves the build times dramatically in many cases.
I can trigger a new build so you can see the difference.


Can't build libpbnjson

CMake Error at CMakeLists.txt:22 (include):
include could not find load file:
webOS/webOS

CMake Error at CMakeLists.txt:23 (webos_modules_init):
Unknown CMake command "webos_modules_init".
-- Configuring incomplete, errors occurred!

Please rebuild using latest version and there are no more queries on this issue, so we are closing it.


gitignore and globsets

Handling gitignore correctly is hard, and has been one of the larger sources of bugs in my own project. I'm currently working on splitting the gitignore logic into its own separate crate, including support for parent directories, global ignores and even .git/info/exclude. It will also be stupidly fast.
In the interim, you might find  the globset crate helpful, which I built explicitly for this purpose. When you get users that work on projects with large .gitignore files, they will thank you for using globset. :-)
Anyway, just thought I'd give you a friendly heads up. If you like, I can ping you again when I get the gitignore logic split out. I'm also reaching out to find out if you have any peculiar use cases that might be worth considering as I go through the process!
In any case, nice project!

First off, thanks for ripgrep; I copied a bunch of CI stuff out of it to get going.
Second, that .gitignore example file is a nightmare. Wow.
Third, I'd love to use your gitignore crate. The only weird use case I have is my implementation pretty much ignores the "only match if directory" rule because I sometimes deal with paths that don't exist by the time I'm checking on their status, but I still need to be able to make a determination on whether I should act on them.
I've done some thinking on this, and I'm OK with shirking this correctness requirement, because I can't come up with a case where a build setup generates a file instead of a directory of the same name and I incorrectly assume the file is excluded. (In other words, it feels more pathological than plausible, especially for a dev-oriented tool; feel free to correct me if you have a counter-example!)
The last time I checked your gitignore.rs module, you could pass in true/false for whether it's a directory, thus rendering the function free of side effects. That's all I'm looking for. I can decide whether to fudge such cases on my end. I just don't want to see the exclusion check fail completely due to the directory check failing.

Sounds great! Indeed, all of the ignore checking would be side effect free because of that second is_dir parameter.
My secondary goal in all of this is to provide a parallel recursive directory iterator that respects ignore patterns, which I hope will also be split out into this new ignore crate. Of course, lower level components will be exposed as well, all the way down to globsets.
FWIW, if I did my job right, it should be relatively easy for you to replace your Vec with a GlobSet and get a nice win. :-)
I'll check back in when I have something more for you to look at. Thanks for responding!
P.S. I got my ci stuff from the rust-everywhere project. I highly recommend checking it out!

This is what I have so far: https://github.com/BurntSushi/ripgrep/tree/master/ignore --- Hopefully docs.rs kicks back into gear soon so it's easier to browse the docs.
The API isn't perfect, and I would have liked to do better. Basically, there's a pretty big gap between "here's this high level recursive directory iterator that does everything for you" and "here are the raw matchers that you'll need to assemble yourself." If you can somehow use the former, than that would be ideal, but you should at least be able to replace your existing code with ignore::gitignore::Gitignore and not regress on anything.

Awesome, I will give this a shot this week.

Bumped into a few things when trying this out:

matched() returned Match::None for a .gitignore file with a single pattern of "target" against the path "target/debug/watchexec". Will it be split out to its own repo soon? A failing testcase:
ignored!(ig31, ROOT, "target", "target/debug/executable");

ripgrep and watchexec could probably share logic to build a Gitignore out of the nearest .gitignore file, along with a core.excludesfile, if any.

matched() returned Match::None for a .gitignore file with a single pattern of "target" against the path "target/debug/watchexec".

The glob target (which is translated to **/target by gitignore rules) doesn't match target/debug/watchexec. It will match target however. I wonder if making this translate to **/target/** will fix things. (Which incidentally will regress performance for recursive iterators.)

Will it be split out to its own repo soon? Only reason I ask is I'm not sure where to file an issue for this.

Dunno. Filing issues against the ripgrep repo seems fine.

ripgrep and watchexec could probably share logic to build a Gitignore out of the nearest .gitignore file, along with a core.excludesfile, if any.

This is what ignore::Walk does.
I'm starting to worry that the ignore crate is very heavily geared towards users that are doing a recursive directory walk, and that supporting other use cases may be quite challenging.

That same case also tripped up the gitignore crate when I tried it.

I'm starting to worry that the ignore crate is very heavily geared towards users that are doing a recursive directory walk, and that supporting other use cases may be quite challenging.

Yeah, I hear you, especially given that these are side projects for both of us.
 Users (such as myself) can write mid-level modules to fill in the gaps and tailor the project to what they need.

FWIW, if making target be **/target/** instead of **/target is all that's needed, then I'd be more than happy to support that as an option on GitignoreBuilder. It's will probably be a source of confusion, but if that's all you need to reuse something from the ignore crate, then it seems worth it.

I'd appreciate that!
The gitignore docs are underspecified. They use the word pattern throughout, but make mention of pathspec in this particular case, and the behavior exhibited by git-check-ignore certainly fits that of pathspec.

Which part of the docs are you referring to? (I see one mention of pathspec in man gitignore but it looks unrelated?)
To be clear, the path you have absolutely should be ignored. If you use ignore::Walk, then it will never descend into the target directory.

The discussion of handling patterns with slashes mentions pathspecs in passing; I interpreted that as saying the similarities in semantics are intentional, and suggesting there might be additional fallout from that, like what we see here.
I see what you mean about use cases diverging.

My WIP: https://github.com/mattgreen/watchexec/blob/1ba685912f3595b4a044beae4912cd5fdd033341/src/ignore.rs#L34-L35
I need to refine when it does that potentially.
I get the following debug output:
glob converted to regex: Glob { glob: "/target//", re: "(?-u)^(?:/?|./)target(?:/|/./)[^/]$", opts: GlobOptions { case_insensitive: false, literal_separator: true }, tokens: Tokens([RecursivePrefix, Literal('t'), Literal('a'), Literal('r'), Literal('g'), Literal('e'), Literal('t'), RecursiveZeroOrMore, ZeroOrMore]) }
I expected to see **/target/** there, but it seems to work okay in practice.

For now I'll continue to maintain a more general ignore implementation that is tailored to my needs. Perhaps in the future we can figure out a perfect zero-cost abstraction that fits everyone's requirements. :)


fixed HSEARCH-1020 by adding to AbstractDocumentBuilder a new list of co...

...llections annotated with @Field (or @Fields( { @Field } )) and by taking this list into account in isCollectionRoleExcluded() in addition to collections annotated with @IndexedEmbedded and @ContainedIn

Hi @gsmet, thank you, I'm having a first look at your patch and it looks like very nice work.
If you haven't already, could you please sign the contributor agreement at https://cla.jboss.org ?
(for the project Hibernate)
Please let me know when you've done it, so I can speed-up things from my side.

Hi Sanne,
On Wed, Dec 28, 2011 at 1:32 PM, Sanne Grinovero
<EMAIL_ADDRESS>wrote:

If you haven't already, could you please sign the contributor agreement at https://cla.jboss.org ?
(for the project Hibernate)
Please let me know when you've done it, so I can speed-up things from my side.

I just did it.
--
Guillaume

Nice work the patch is excellent, and I appreciate the thorough tests.
Many thanks for keeping the patch short and clean as well; the only thing I have reworked is the commit messages, as we have the convention to have the (main) JIRA issue mentioned first.
I've also backported it to 3.4 branch, in case someone will need that.
Thanks!

On Fri, Dec 30, 2011 at 3:27 AM, Sanne Grinovero
<EMAIL_ADDRESS>wrote:

Nice work the patch is excellent, and I appreciate the thorough tests.
Many thanks for keeping the patch short and clean as well; the only thing I have reworked is the commit messages, as we have the convention to have the (main) JIRA issue mentioned first.

Duly noted for the next time.

I've also backported it to 3.4 branch, in case someone will need that.

Thanks. We sure do.


problem with live image display from pycromanager

Hi, I'm trying the plugin for displaying the live image from
https://pycro-manager.readthedocs.io/en/latest/application_notebooks/pycro_manager_imjoy_tutorial.html that uses https://gist.github.com/oeway/f59c1d1c49c94a831e5e21ba4c6111dd
Specifically, I'm trying to run the code below, but it seems that after pushing 'start live' the function get_image() is called only twice (I checked it with a global counter)
Many thanks,
`import time
import numpy as np
from imjoy import api
from pycromanager import Bridge
class MyMicroscope:
async def setup(self):
bridge = Bridge()
self._core = bridge.get_core()
exposure = self._core.get_exposure()
api.showMessage("MMcore loaded, exposure: " + str(exposure))
def snap_image(self):
    if self._core.is_sequence_running():
        self._core.stop_sequence_acquisition()
    self._core.snap_image()
    return self.get_image()

def get_image(self):
    # we can also check remaining with getRemainingImageCount()
    tagged_image = self._core.get_tagged_image()
    image_array = np.reshape(
        tagged_image.pix,
        newshape=[-1, tagged_image.tags["Height"], tagged_image.tags["Width"]],
    )
    image_array = (image_array / image_array.max() * 255).astype("uint8")
    return image_array

def get_device_properties(self):
    core = self._core
    devices = core.get_loaded_devices()
    devices = [devices.get(i) for i in range(devices.size())]
    device_items = []
    for device in devices:
        names = core.get_device_property_names(device)
        props = [names.get(i) for i in range(names.size())]
        property_items = []
        for prop in props:
            value = core.get_property(device, prop)
            is_read_only = core.is_property_read_only(device, prop)
            if core.has_property_limits(device, prop):
                lower = core.get_property_lower_limit(device, prop)
                upper = core.get_property_upper_limit(device, prop)
                allowed = {
                    "type": "range",
                    "min": lower,
                    "max": upper,
                    "readOnly": is_read_only,
                }
            else:
                allowed = core.get_allowed_property_values(device, prop)
                allowed = {
                    "type": "enum",
                    "options": [allowed.get(i) for i in range(allowed.size())],
                    "readOnly": is_read_only,
                }
            property_items.append(
                {"device": device, "name": prop, "value": value, "allowed": allowed}
            )
            # print('===>', device, prop, value, allowed)
        if len(property_items) > 0:
            device_items.append(
                {
                    "name": device,
                    "value": "{} properties".format(len(props)),
                    "items": property_items,
                }
            )
    return device_items

async def run(self, ctx):
    mmcore_api = {
        "_rintf": True,
        "snapImage": self.snap_image,
        "getImage": self.get_image,
        "getDeviceProperties": self.get_device_properties,
        "getCameraDevice": self._core.get_camera_device,
        "setCameraDevice": self._core.set_camera_device,
        "startContinuousSequenceAcquisition": self._core.start_continuous_sequence_acquisition,
        "stopSequenceAcquisition": self._core.stop_sequence_acquisition,
        "setExposure": self._core.set_exposure,
        "getExposure": self._core.get_exposure,
        "setProperty": self._core.set_property,
        "getProperty": self._core.get_property,
    }
    viewer = await api.createWindow(
        src="https://gist.github.com/oeway/f59c1d1c49c94a831e5e21ba4c6111dd",
        data={"mmcore": mmcore_api},
    )

api.export(MyMicroscope())`

Hi, thanks for the info.
Yes, it seems this is the cause of the issue: Exception: java.lang.Exception: Camera image buffer read failed..
And the error is from micro-manager itself, however, I have no idea how to address it.
I did a quick search and found this, maybe you can give it a try: https://github.com/LC-PolScope/LC-PolScope/issues/26#issuecomment-11933124
Otherwise, maybe you can ask in the micro-manager forum?


GitHub (Frontend) Instructor configuration of GitHub fields

Instructor needs a section to define these values:
{
"repo_owner": "Code-Platoon-Curriculum",
"repo_name": "curriculum"
}
Endpoints should already be functional

Merged into #158


docker in docker build fails to mount

We want to use the terraform-aws-lambda inside docker in a Github Actions pipeline.
But this leads to an issue with mounts (check reference below).
What we do is:
Github Actions Pipeline:
runs a step with a docker container from github action. This container image includes all tools we require to run our terraform setup (including docker, aws cli and terragurnt etc).
Inside this docker container terraform starts another docker container to build the lambda function with a custom requirements.txt.
We traced the error down to the docker mount for the temp_dir.
The package.py copys the requirement.txt into a temp_dir https://github.com/terraform-aws-modules/terraform-aws-lambda/blob/47917cec498fb443166dbfb2fa3498de1d5e73ea/package.py#L848-L850
This temp.dir is passed on to the docker mount.
https://github.com/terraform-aws-modules/terraform-aws-lambda/blob/47917cec498fb443166dbfb2fa3498de1d5e73ea/package.py#L880-L885
This works as long as long as the temp_dir matches the host dir. If we are inside a docker container the mount only works, if the path is same on docker host.
To make this work inside a docker container, we need to pass a path to the build_root, which exists on host too. For Example the docker_build_root.
Request:
Is it possible to make the temp_dir path configurable for the docker_run_command?

Settings:
  function_name = "auth-rico-api-2"
  handler       = "app.lambda_handler"
  runtime       = "python3.8"
  source_path = [
    {
      path             = "${get_parent_terragrunt_dir()}/../auth-rico-api/src",
      pip_requirements = "${get_parent_terragrunt_dir()}/../auth-rico-api/requirements.txt",
    }
  ]

  build_in_docker   = true
  docker_image      = "lambci/lambda:build-python3.8"
  docker_build_root = "${get_parent_terragrunt_dir()}/../auth-rico-api/docker"

Github action log snippet
020-07-30T12:57:05.3081733Z module.lambda.data.external.archive_prepare[0]: Refreshing state...
2020-07-30T12:57:05.4096716Z module.lambda.local_file.archive_plan[0]: Refreshing state... [id=2b948c89672589b46203225ec65cb807918153ed]
2020-07-30T12:57:05.4129139Z module.lambda.null_resource.archive[0]: Refreshing state... [id=7793903743368564043]
2020-07-30T12:57:06.2050799Z module.lambda.aws_cloudwatch_log_group.lambda[0]: Refreshing state... [id=/aws/lambda/auth-rico-api-2]
2020-07-30T12:57:06.2153055Z module.lambda.aws_lambda_function.this[0]: Refreshing state... [id=auth-rico-api-2]
2020-07-30T12:57:07.0441977Z module.lambda.aws_lambda_permission.unqualified_alias_triggers["APIGatewayAuth"]: Refreshing state... [id=APIGatewayAuth]
2020-07-30T12:57:09.6552211Z module.lambda.null_resource.archive[0]: Destroying... [id=7793903743368564043]
2020-07-30T12:57:09.6608860Z module.lambda.null_resource.archive[0]: Destruction complete after 0s
2020-07-30T12:57:09.6686465Z module.lambda.null_resource.archive[0]: Creating...
2020-07-30T12:57:09.6717094Z module.lambda.null_resource.archive[0]: Provisioning with 'local-exec'...
2020-07-30T12:57:09.6737176Z module.lambda.null_resource.archive[0] (local-exec): Executing: ["python3" ".terraform/modules/lambda/terraform-aws-lambda-1.17.0/package.py" "build" "--timestamp" "<WARNING: Missing lambda zip artifacts wouldn't be restored>" "builds/111221a0902b17abdaa47a73ee85cdd16429ada24bee754b20af73e6a048d174.plan.json"]
2020-07-30T12:57:09.7742867Z module.lambda.null_resource.archive[0] (local-exec): CMD: python3 .terraform/modules/lambda/terraform-aws-lambda-1.17.0/package.py build --timestamp '<WARNING: Missing lambda zip artifacts wouldn'"'"'t be restored>' builds/111221a0902b17abdaa47a73ee85cdd16429ada24bee754b20af73e6a048d174.plan.json
2020-07-30T12:57:09.7752127Z module.lambda.null_resource.archive[0] (local-exec): zip: creating 'builds/111221a0902b17abdaa47a73ee85cdd16429ada24bee754b20af73e6a048d174.zip' archive
2020-07-30T12:57:09.7759809Z module.lambda.null_resource.archive[0] (local-exec): > docker images '--format={{.ID}}' lambci/lambda:build-python3.8
2020-07-30T12:57:09.8476378Z module.lambda.null_resource.archive[0] (local-exec): > docker build --tag lambci/lambda:build-python3.8 /github/workspace/terraform/../auth-rico-api/docker
2020-07-30T12:57:09.8994543Z module.lambda.null_resource.archive[0] (local-exec): Sending build context to Docker daemon   2.56kB
2020-07-30T12:57:09.9435179Z module.lambda.null_resource.archive[0] (local-exec): Step 1/1 : FROM lambci/lambda:build-python3.8
2020-07-30T12:57:10.0856133Z module.lambda.null_resource.archive[0] (local-exec): build-python3.8: Pulling from lambci/lambda
2020-07-30T12:57:10.0857150Z module.lambda.null_resource.archive[0] (local-exec): b39539fa438b: Pulling fs layer
2020-07-30T12:57:10.0858368Z module.lambda.null_resource.archive[0] (local-exec): 4c58555ee201: Pulling fs layer
2020-07-30T12:57:10.0859211Z module.lambda.null_resource.archive[0] (local-exec): 7dec566ef15c: Pulling fs layer
2020-07-30T12:57:10.0860004Z module.lambda.null_resource.archive[0] (local-exec): c9d5a7059e59: Pulling fs layer
2020-07-30T12:57:10.0860762Z module.lambda.null_resource.archive[0] (local-exec): c9d5a7059e59: Waiting
2020-07-30T12:57:10.7658610Z module.lambda.aws_cloudwatch_log_group.lambda[0]: Modifying... [id=/aws/lambda/auth-rico-api-2]
2020-07-30T12:57:10.9959614Z module.lambda.null_resource.archive[0] (local-exec): b39539fa438b: Verifying Checksum
2020-07-30T12:57:10.9960830Z module.lambda.null_resource.archive[0] (local-exec): b39539fa438b: Download complete
2020-07-30T12:57:10.9962178Z module.lambda.null_resource.archive[0] (local-exec): 7dec566ef15c: Verifying Checksum
2020-07-30T12:57:10.9963154Z module.lambda.null_resource.archive[0] (local-exec): 7dec566ef15c: Download complete
2020-07-30T12:57:11.9905031Z module.lambda.aws_cloudwatch_log_group.lambda[0]: Modifications complete after 1s [id=/aws/lambda/auth-rico-api-2]
2020-07-30T12:57:12.1390788Z module.lambda.null_resource.archive[0] (local-exec): c9d5a7059e59: Verifying Checksum
2020-07-30T12:57:12.1392221Z module.lambda.null_resource.archive[0] (local-exec): c9d5a7059e59: Download complete
2020-07-30T12:57:14.7389790Z module.lambda.null_resource.archive[0] (local-exec): 4c58555ee201: Verifying Checksum
2020-07-30T12:57:14.7390907Z module.lambda.null_resource.archive[0] (local-exec): 4c58555ee201: Download complete
2020-07-30T12:57:17.6174603Z module.lambda.null_resource.archive[0] (local-exec): b39539fa438b: Pull complete
2020-07-30T12:57:19.6703821Z module.lambda.null_resource.archive[0]: Still creating... [10s elapsed]
2020-07-30T12:57:29.6704795Z module.lambda.null_resource.archive[0]: Still creating... [20s elapsed]
2020-07-30T12:57:39.6704736Z module.lambda.null_resource.archive[0]: Still creating... [30s elapsed]
2020-07-30T12:57:41.5042549Z module.lambda.null_resource.archive[0] (local-exec): 4c58555ee201: Pull complete
2020-07-30T12:57:46.1174416Z module.lambda.null_resource.archive[0] (local-exec): 7dec566ef15c: Pull complete
2020-07-30T12:57:49.6705380Z module.lambda.null_resource.archive[0]: Still creating... [40s elapsed]
2020-07-30T12:57:53.7085098Z module.lambda.null_resource.archive[0] (local-exec): c9d5a7059e59: Pull complete
2020-07-30T12:57:53.7122503Z module.lambda.null_resource.archive[0] (local-exec): Digest: sha256:5a4cd0714a51e6d00059458a7f979ec5cbc96dfe1390e8488a1b6328ae3911cd
2020-07-30T12:57:53.7148080Z module.lambda.null_resource.archive[0] (local-exec): Status: Downloaded newer image for lambci/lambda:build-python3.8
2020-07-30T12:57:53.7157454Z module.lambda.null_resource.archive[0] (local-exec):  ---> f1a7423d78df
2020-07-30T12:57:53.7161515Z module.lambda.null_resource.archive[0] (local-exec): Successfully built f1a7423d78df
2020-07-30T12:57:53.7218594Z module.lambda.null_resource.archive[0] (local-exec): Successfully tagged lambci/lambda:build-python3.8
2020-07-30T12:57:53.7220152Z module.lambda.null_resource.archive[0] (local-exec): > docker images '--format={{.ID}}' lambci/lambda:build-python3.8
2020-07-30T12:57:53.7732536Z module.lambda.null_resource.archive[0] (local-exec): DOCKER TAG ID: lambci/lambda:build-python3.8 -> f1a7423d78df
2020-07-30T12:57:53.7734535Z module.lambda.null_resource.archive[0] (local-exec): Installing python requirements: /github/workspace/terraform/../auth-rico-api/requirements.txt
2020-07-30T12:57:53.7736133Z module.lambda.null_resource.archive[0] (local-exec): > mktemp -d terraform-aws-lambda-XXXXXXXX # /tmp/terraform-aws-lambda-rqe8ucr7
2020-07-30T12:57:53.7737502Z module.lambda.null_resource.archive[0] (local-exec): > cd /tmp/terraform-aws-lambda-rqe8ucr7
2020-07-30T12:57:53.7746448Z module.lambda.null_resource.archive[0] (local-exec): > docker run --rm -v /tmp/terraform-aws-lambda-rqe8ucr7:/var/task:z -v /github/home/.ssh/known_hosts:/root/.ssh/known_hosts:z f1a7423d78df /bin/sh -c 'python3.8 -m pip install --no-compile --prefix= --target=. --requirement=requirements.txt && chown -R 0:0 .'
2020-07-30T12:57:59.6708092Z module.lambda.null_resource.archive[0]: Still creating... [50s elapsed]
2020-07-30T12:58:00.9990088Z module.lambda.null_resource.archive[0] (local-exec): ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
2020-07-30T12:58:01.2113586Z module.lambda.null_resource.archive[0] (local-exec): zip: Error during zip archive creation
2020-07-30T12:58:01.2134768Z module.lambda.null_resource.archive[0] (local-exec): Traceback (most recent call last):
2020-07-30T12:58:01.2135948Z module.lambda.null_resource.archive[0] (local-exec):   File ".terraform/modules/lambda/terraform-aws-lambda-1.17.0/package.py", line 1116, in build_command
2020-07-30T12:58:01.2136975Z module.lambda.null_resource.archive[0] (local-exec):     bpm.execute(build_plan, zs, query)
2020-07-30T12:58:01.2138041Z module.lambda.null_resource.archive[0] (local-exec):   File ".terraform/modules/lambda/terraform-aws-lambda-1.17.0/package.py", line 764, in execute
2020-07-30T12:58:01.2139374Z module.lambda.null_resource.archive[0] (local-exec):     with install_pip_requirements(query, pip_requirements) as rd:
2020-07-30T12:58:01.2140439Z module.lambda.null_resource.archive[0] (local-exec):   File "/usr/lib/python3.8/contextlib.py", line 113, in __enter__
2020-07-30T12:58:01.2141383Z module.lambda.null_resource.archive[0] (local-exec):     return next(self.gen)
2020-07-30T12:58:01.2142652Z module.lambda.null_resource.archive[0] (local-exec):   File ".terraform/modules/lambda/terraform-aws-lambda-1.17.0/package.py", line 880, in install_pip_requirements
2020-07-30T12:58:01.2143637Z module.lambda.null_resource.archive[0] (local-exec):     check_call(docker_run_command(
2020-07-30T12:58:01.2168445Z module.lambda.null_resource.archive[0] (local-exec):   File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
2020-07-30T12:58:01.2172876Z module.lambda.null_resource.archive[0] (local-exec):     raise CalledProcessError(retcode, cmd)
2020-07-30T12:58:01.2179540Z module.lambda.null_resource.archive[0] (local-exec): subprocess.CalledProcessError: Command '['docker', 'run', '--rm', '-v', '/tmp/terraform-aws-lambda-rqe8ucr7:/var/task:z', '-v', '/github/home/.ssh/known_hosts:/root/.ssh/known_hosts:z', 'f1a7423d78df', '/bin/sh', '-c', 'python3.8 -m pip install --no-compile --prefix= --target=. --requirement=requirements.txt && chown -R 0:0 .']' returned non-zero exit status 1.

Reference:
https://serverfault.com/questions/819369/mounting-a-volume-with-docker-in-docker

I wrote a hack which works for docker in docker on my machine and in github actions
https://github.com/terraform-aws-modules/terraform-aws-lambda/compare/master...datadrivers:feature/docker-in-docker-build
This may help to find a working solution for all cases

@stevie- thanks for the hack, it'll be useful on writing clear solution. I think there will be an additional environment variable(s) that will help to adapt package.py to run in a CI/CD environments.
Note for myself: https://rammusxu.github.io/toolkit/snippets/github-action/#2020-05-18-github-workflow-env-on-pull-request

I've update the code to solve a bug and reuse temp_dir functionality. Goal is to create the temp_dir in the host path derived from requirements.txt path.

I am facing the same type of issue in the Gitlab pipeline. Is there any update on this?

Same issue here using Gitlab CI, shall have to use the fork/hack.

Resolved issue here without changing the source.
We use terragrunt and save the plan in 1 CI step and apply it in a 2nd step but it kept erroring saying couldn't find the tfplan file. We're now caching the entire .terragrunt folder and pasing it betwee plan+apply steps as this module writes our an additional tfplan file.
      - ${CI_PROJECT_DIR}/**/*.tfplan # Needed for plan files from tf-aws-lambda-module

Resolved issue here without changing the source.
We use terragrunt and save the plan in 1 CI step and apply it in a 2nd step but it kept erroring saying couldn't find the tfplan file. We're now caching the entire .terragrunt folder and pasing it betwee plan+apply steps as this module writes our an additional tfplan file.
      - ${CI_PROJECT_DIR}/**/*.tfplan # Needed for plan files from tf-aws-lambda-module

This is another issue not refering to the original problem in this issue ticket.

You can set a TMP_DIR environment variable to configure this, the underlying python package makes use of this and I was able to resolve Gitlab CI issues in this way.

Thank you @Supercheez for the tip on using TMP_DIR. For anyone else looking here, I found that using a relative path is incompatible with package.py which tries to delete the requirements file after switching directory here.
I also had issue with Terraform behavior when using an absolute path. Probably due to my build environment.
Finally I opted for using TMP_DIR=${env.WORKSPACE} in a Jenkins environment to make it work.


feat(config): add support for custom CA certificate when calling Key Vault

My clients want to use this plugin behind a corporate traffic inspection service, however NodeJS/Electron doesn't seem to respect the OS native truststore.
They get the console error:
Self-signed certificate in chain
This allows them to set a custom CA cert path for handshaking with the Vault endpoint.
See screenshot for config example:

Hi @ttyS0e thank you for you PR and sorry for my very late answer, the reason being loosing interest in Insomnia after they limited the feature set to not paying/not authenticated users.
I will merge you PR and publish a new version to npm.

I looked into https://github.com/glconti/insomnia-plugin-azure-keyvault-secrets/pull/4 after I programmed all this haha!
It is a good idea, and I did wonder if there was some way to for example "prefer" env variable over the Insomnia config.
I just find that the users understand more when you can explicitly set the properties directly in the UI, and that would be clearer, same as you said.


uperf client pods are not being built

uper server pods are up and running. But client pods are failing in the following step:
TASK [uperf : Start Client(s) w/o serviceIP] ***********************************
task path: /opt/ansible/roles/uperf/tasks/start_client.yml:18

{"level":"info","ts":1629894553.3246064,"logger":"logging_event_handler","msg":"[playbook task start]","name":"uperf","namespace":"benchmark-operator","gvk":"ripsaw.cloudbulldozer.io/v1alpha1, Kind=Benchmark","event_type":"playbook_on_task_start","job":"6263450610539110790","EventData.Name":"uperf : Start Client(s) w/o serviceIP"}
--------------------------- Ansible Task StdOut -------------------------------
TASK [Start Client(s) w/o serviceIP] ********************************
fatal: [localhost]: FAILED! => {
"msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'url'\n\nThe error appears to be in '/opt/ansible/roles/uperf/tasks/start_client.yml': line 18, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n  ###  kind\n  - name: Start Client(s) w/o serviceIP\n    ^ here\n"
}

{"level":"error","ts":1629894553.414898,"logger":"logging_event_handler","msg":"","name":"uperf","namespace":"benchmark-operator","gvk":"ripsaw.cloudbulldozer.io/v1alpha1, Kind=Benchmark","event_type":"runner_on_failed","job":"6263450610539110790","EventData.Task":"Start Client(s) w/o serviceIP","EventData.TaskArgs":"","EventData.FailedTaskPath":"/opt/ansible/roles/uperf/tasks/start_client.yml:18","error":"[playbook task failed]","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\t/go/pkg/mod/github.com/go-logr/zapr@v0.2.0/zapr.go:132\ngithub.com/operator-framework/operator-sdk/internal/ansible/events.loggingEventHandler.Handle\n\t/workspace/internal/ansible/events/log_events.go:110"}

@KarthikDev can you attach the complete CR you were using

@HughNhan  I found out that the elasticsearch url in the template does not have default value. i dont have elastric search running, so have disabled it. Now the client pod is created and its been running. Can you help me where i can see the metrics, i could see the control manager logs are rolling for more than 5minutes now. I have mentioned runtime as 2, does that mean it should run for 2mins?
apiVersion: ripsaw.cloudbulldozer.io/v1alpha1
kind: Benchmark
metadata:
name: uperf
namespace: benchmark-operator
spec:
system_metrics:
collection: true
prom_url: https://prometheus-k8s.openshift-monitoring.svc.cluster.local:9091
es_url:
prom_token: PROMETHEUS_TOKEN
metrics_profile: node-metrics.yml
elasticsearch:
url:
index_name: ripsaw-uperf
metadata:
collection: true
cleanup: false
workload:
name: uperf
args:
hostnetwork: false
serviceip: false
pin: false
pin_server: "node-1"
pin_client: "node-0"
multus:
enabled: false
samples: 2
pair: 1
test_types:
- stream
- rr
- bidirec
protos:
- tcp
- udp
sizes:
- 1024
- [1024, 512]
nthrs:
- 1
- 2
runtime: 2
debug: true

Hi @HughNhan Finally the run is complete without errors. However i'm still looking where to find the metrics output. Can you help me with it?


Add live tests exercising lag option

cc: @dmehra

How about a second test where the read uses -lag 0.5s but the points are arriving without delay (current timestamps), just as a sanity check? After waiting 0.5s we should have those points.

Would that exercise anything extra compared to this test?

Why not do the same tests with a few seconds instead of fractions of seconds like I did here:
https://github.com/juttle/juttle-graphite-adapter/blob/master/test/graphite.spec.js#L93
And the only reason to do multi seconds is that you can write points into the near future and see them show up as expected and it also verifies existing lag or waht the real lag value should be for something like influx. I know for graphite that the default lag we have right now "barely" works and you'd have to run with a :5s: to really get live to work for graphite.

Why not do the same tests with a few seconds instead of fractions of seconds like I did here:

I initially tested with whole seconds, then trimmed down the time so that the test doesn't take too long.

and it also verifies existing lag or waht the real lag value should be for something like influx.

Could you please explain? You mean adjusting the lag to DB latency?

@bkutil yes the db latency as elastic and graphite have a few seconds (depending on load and setup) before the thing you just stored is readable. I'm not sure of what that lag is like for influx and could be that the current :1s: lag works fine.

I.e. the value for lag option should serve as a documentation for the 'time to write' for a given database.
It seems that the subsecond lag is fine for influx.

@rlgomes @dmehra bump. If you're OK with the state of this PR, let's merge it.

+1 didn't mean to delay the PR but I do think we need to document or better understand what it means to test live for each of the different adapters.


Folded region audio cue sound too harsh

I've been using audioCues.enabled for the past few weeks, even though I may not be the primary audience for this, and I've really enjoyed the added sounds as it enhances my development workflow.
However, I've found that the folded region audio cue sounds much too harsh compared to errors/breakpoints. To me, it sounds like someone fumbling through papers or writing on something and in the beginning this felt like I was still in a meeting 😄  see sample below (you'll need to turn on the 🔊 sound in the video clip):
https://user-images.githubusercontent.com/35271042/152199028-e22c15f1-b6ea-4417-a3c4-f87e892affea.mp4
Comparing the different sounds, the folded cue stands out by a lot and don't think it is warranted given the importance compared to errors/breakpoints. I think the sound should be more gentle and less harsh as it is less important. As I said, I may not be the primary user for this but just my feedback on the sound.
cc @gino-scarpino

Great feedback and ear @misolori. We were totally exploring a paper sound here, but we need to re-consider. I agree, especially on repetition, it's harsh. Align more with the other sounds. Added to my list.
Thank you!

From: Isidor Nikolic @.>
Sent: Wednesday, February 2, 2022 8:56 AM
To: microsoft/vscode @.>
Cc: Gino Scarpino @.>; Mention @.>
Subject: Re: [microsoft/vscode] Folded region audio cue sound too harsh (Issue #142016)
@misolorihttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmisolori&data=04|01|ginoscarpino%40microsoft.com|ff57ea4aa59e4099c97e08d9e66d074b|72f988bf86f141af91ab2d7cd011db47|1|0|637794178227471799|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=FWJUZBU3RJpj6qW8EQ%2F26IflCjfFfDY0BVe7haU64zA%3D&reserved=0 awesome that you are selfhosting on this 👏
I agree that the folded sound can be irritating to the ear, and that it could be more pleasant.
Let's assign this to February as we plan to polish sounds and @gino-scarpinohttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fgino-scarpino&data=04|01|ginoscarpino%40microsoft.com|ff57ea4aa59e4099c97e08d9e66d074b|72f988bf86f141af91ab2d7cd011db47|1|0|637794178227471799|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=2%2Fb9RcpLea5XIr4M3xgU0gDL63IZTFTd9KEhlA55uWc%3D&reserved=0 can think about this feedback.
—
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fvscode%2Fissues%2F142016%23issuecomment-1028146816&data=04|01|ginoscarpino%40microsoft.com|ff57ea4aa59e4099c97e08d9e66d074b|72f988bf86f141af91ab2d7cd011db47|1|0|637794178227522232|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=bP%2FPQjVxU8YAwJaJhv10EbgY1U1nIUsK6NV1pAsDv1g%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAWWW7HTIWDKYLGKDIG4XETDUZFO5XANCNFSM5NMSSXMA&data=04|01|ginoscarpino%40microsoft.com|ff57ea4aa59e4099c97e08d9e66d074b|72f988bf86f141af91ab2d7cd011db47|1|0|637794178227522232|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=5NqV8JfVPKXyOWtLFR1328W9fybPs01xy%2Fwi0niq6zA%3D&reserved=0.
Triage notifications on the go with GitHub Mobile for iOShttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04|01|ginoscarpino%40microsoft.com|ff57ea4aa59e4099c97e08d9e66d074b|72f988bf86f141af91ab2d7cd011db47|1|0|637794178227522232|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=OSaG79Hj66UPMqrK6SFtTNwuu4CypdIaWv9zJz6wRt4%3D&reserved=0 or Androidhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04|01|ginoscarpino%40microsoft.com|ff57ea4aa59e4099c97e08d9e66d074b|72f988bf86f141af91ab2d7cd011db47|1|0|637794178227522232|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=zSLoNyB65z5CwdHJVGUkvTyerJ2atBi%2FXLC0ceChQtA%3D&reserved=0.
You are receiving this because you were mentioned.Message ID: @.***>

I cant seem to find the settings to choose a particular .wav file for which trigger, let alone the list of triggers...

@boltex not supported yet.

@gino-scarpino provided a new sound and @hediet added it to vscode, thus closing this as fixed

@steverep thank you very much for your feedback, this is extremely valuable to us.
We agree that sound preference is something personal, so we might need to add more customisation for this in the future. You are suggesting customisation of each sound. While that might come in the future we will first introduce a control for the audio cue volume. I will let you know once we have that so you can try it out and let us know if this has helped in this particular case.
Looking forward to more feedback.

Ouch! @steverep is absolutely right here. I came here to file a bug that the folded code sound was not working at all. Turns out, I just had to turn off the speech of my screen reader to hear it.
I would argue that this sound should be more harsh, or at least more prominent than other sounds. This sound is the only reliable way for screen reader users to know that there is some folded code at the cursor. This might not sound like a big deal, until you realize what confusion might be caused by thinking that part of your code is missing, and not just hidden.
Needless to say, I'm pretty disappointed with this change. I realize that most of us are volunteers, but if at all possible, I would encourage the team to find ways to seek feedback from people who are members of the target audience for accessibility features before making changes like this in future. I would very much appreciate having the original behavior reinstated if there is no better solution for this in the short term.
Bug again, like @steverep, I am very grateful for this functionality, and for all the amazing efforts from the team relating to accessibility. In spite of the occasional complaint, such as the above, this application has truly changed my life as a developer. Thank you all!

We agree that sound preference is something personal, so we might need to add more customisation for this in the future. You are suggesting customisation of each sound. While that might come in the future we will first introduce a control for the audio cue volume. I will let you know once we have that so you can try it out and let us know if this has helped in this particular case.

More customization is always welcome, but I think volume is unlikely to make much difference in this case.  As I and @cannona  said, if screen reader users are the target demographic for these cues, then the chosen sounds need to stand out relative to fast speech right before and right after the sound.  This new 1.65 sound would probably have to be near a dangerous volume to do that.

@cannona @steverep great feedback! Thanks a lot.
Let me address your comment regarding encouraging team to find feedback. I think we are actually not so bad at this since a lot of our screen reader users are using VS Code insiders and we get feedback constantly before something gets pushed to stable. Having said that, this one somehow slipped and we plan to fine tune the sound to be something more like the previous one. I have created this issue for this https://github.com/microsoft/vscode/issues/144927
And I suggest that you switch to using VS Code insiders once we push the fix next week so you get unblocked here. Thanks

I think we are actually not so bad at this since a lot of our screen reader users are using VS Code insiders and we get feedback constantly before something gets pushed to stable.

That's totally fair, and my words in this regard were, I think, poorly considered. You folks are far ahead of the vast majority of projects out there, and I should have taken greater care to not suggest otherwise.
Thank you again!

@cannona thank you very much for the feedback and please keep it coming :)

@steverep @cannona we are doing a survey to better understand our users and to design better default sounds. We would like to know if you are using headphones or speakers when working with VS Code?
Also I have opened this issue for discussion on sound customisations (nothing on the plan now, but we might tackle it in the future): https://github.com/microsoft/vscode/issues/145204

@isidorn I WFH, so mostly I'm using speakers. Also, audio folks have a way to measure the relative loudness of a sound. It's known as LUFS. You might look into it, as it may help you to balance things a bit better. As I understand it, it takes into account the average loudness of a sound, unlike most calculations, which look only at the peaks.
Thanks for the info.

@isidorn I use both - speakers in my home office and mostly headphones elsewhere for privacy.
Adding to @cannona's recommendation to look at LUFS,you can easily alter this using Audacity.  Here's the manual page for loudness normalization.
You could also go deeper and read up on psycho-acoustics 📚 🔉 🥼 .


1.18.1 singleplayer: What is "mm"?

Every time I try to start up my minecraft, this pops up.
I've tried looking through the dependency listing and the installation guide, but there's nothing except fabric api and luckperms. Fabric API, I already have installed, luckperms, it said it was optional, so I didn't install it.
Sorry if this is really obvious or a duplicate... I just can't find anything else.

Try this.
https://www.curseforge.com/minecraft/mc-mods/shulkerboxtooltip

Thanks.

This issue will be fixed shortly, likely tomorrow OK Christmas.
Downgrading to 3.9.1 also fixes this issue.
For those who want to go a little deeper down the rabbit hole, you can also fix it by opening the jar file with something like WinRAR, open the fabric.mod.jsonfile with a text editor like Notepad or Notepad++ and remove the line that says "mm": ">=2.3" in the requiressection near the end of the file and also remove the comma on the line above it.


Order comments correctly

The comments are where they are because they apply to the full block, including --enable-pie (which is part of the hardening Debian applies).


:sparkles: feat: add ActinGroup Components

新增 ActionGroup 组件

ci 挂了

ci 挂了

看起来是还没写单测的原因，我看下

Codecov Report
Patch coverage: 98.84% and project coverage change: +0.72% :tada:

Comparison is base (c0b1c5f) 87.16% compared to head (58514a4) 87.88%.
Report is 10 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #57      +/-   ##
==========================================
+ Coverage   87.16%   87.88%   +0.72%
==========================================
  Files         339      334       -5
  Lines       21055    21336     +281
  Branches      970      966       -4
==========================================
+ Hits        18352    18752     +400
+ Misses       2703     2584     -119

Files Changed
Coverage Δ

src/ActionGroup/demos/config.tsx
81.81% <81.81%> (ø)

src/ActionGroup/demos/basic.tsx
100.00% <100.00%> (ø)

src/ActionGroup/demos/custom.tsx
100.00% <100.00%> (ø)

src/ActionGroup/demos/withPanel.tsx
100.00% <100.00%> (ø)

src/ActionGroup/index.tsx
100.00% <100.00%> (ø)

src/ActionGroup/style.ts
100.00% <100.00%> (ø)

src/index.ts
100.00% <100.00%> (ø)

src/theme/themes/darkAlgorithm.ts
47.36% <100.00%> (ø)

src/utils/c2d2c.tsx
96.71% <100.00%> (+1.78%)
:arrow_up:

src/utils/tests/schema.ts
100.00% <100.00%> (ø)

... and 11 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

+1，可以参考 lobeui 加一下展示类型，以及添加一下动效

direction 加一下


Fix Kubernetes pod not running false alarms

Starting in August or September, we started getting alerts in Prometheus for "Kubernetes pod not running" that seem to be for pods that either are running, or have been deleted and replaced. These alerts seem to never clear, making it difficult to tell when there are real issues with kubernetes.
Slack thread about this issue :lock:
Notes

We currently manually clear these alerts by deleting the pods that continuously report this, if the alert doesn't clear itself

kubectl get pods -a | grep Evicted |  awk '{print $1}' | xargs kubectl delete pod

The issue doesn't seem to be with Prometheus

Next steps

Research whether this is a known issue with Kubernetes
Determine a path to fix this issue

When this happens (at least, some of the time) the pod it's complaining about is in evicted status.

So, some of this is caused by evicted pods. Those reports seem to be valid, and the action we should take is delete the evicted pod, and be on alert that this might indicate that we're low on resources.
This can also be caused by pods that prometheus sees as failed but that kubectl get pod no longer displays. This seems to correlate with this error message in kubelet logs:
docker_sandbox.go:263] Couldn't find network status for <namespace>/<podname> through plugin: invalid network status for

I think we need to be in this state again to continue troubleshooting


fixes #136 admins dashboard

@soniyaprasad77 are you going to update the menus?

Yea, I will keep on working even after the merge, like adjusting acc to the needs, what' changes do you want me to incorporate as if now?

@soniyaprasad77 layout looks fine to me, we can fine tune a bit later, right?

Yes, since this is a prototype, we need to continuously update the UI based on various factors, such as feedback from the backend team, and I'm fully committed to adapting and refining it as required.

Please checkout, as I have moved the files.


Add documentation on rational

This adds some reasons why one would use CSET. This is partly to help promote it, but also helps to clarify the aims of the project for the developers.

Your changes look good to me, and definitely read better. I've just fixed a typo and reflowed the text, so it should be good to approve now.

I just need to pin down why the tests are failing. Its a little odd since we didn't actually change any code, and its only failing under python 3.8.

Ah, for some reason the python 3.8 tests are running with iris 3.1 (quite an old version). fortunately this is an easy fix.

I've added some minimum versions to core dependencies to prevent conda deciding to use really old versions sometimes. I should probably have done this a while ago, but it hasn't been a problem until now.


Programmatically opening the datepicker

Is there a way of programmatically opening the datepicker?
I was trying to call the component by adding ref="myComponent" and then calling it from the parent like this.$refs.myComponent.showCalendar() but that doesn't seem to work.

It works in the tests:
https://github.com/charliekassel/vuejs-datepicker/blob/master/test/specs/Datepicker.spec.js#L116-L123

Hey @charliekassel,
I ended up using a different picker for different reasons, but if I do use this one again, I'll be sure to reference this. Thanks!

I can't seem to get this to work either.
Same setup as @zawilliams, any idea what could be the issue?

@charliekassel I can't seem to get this to work either.
@zawilliams what picker did you use?

@charliekassel I can't seem to get this to work either.

I ended up using the date picker from Buefy but modified the UI pretty heavily.

This is an issue tracker guys, not a forum.


Plans

[x] Design
[x] Recalc all routes and vehicles
[x] Auth
[ ] Admin
[ ] Internationalization
[ ] Presentation
[ ] Tests
[ ] Redux & Hooks for CreateOrder

Recalc all routes and vehicles #26

Auth #34

Admin Page #33

Hooks for CreateOrder #41


Proper machine IO

Description
Currently, hoppers will just pull whatever they feel like from the machines, which is not conducive to automation. Also, there is no way to transport essentia automatically. Perhaps implementing API support such as Universal Components would be a good idea as well.

API support is still pending, but the machines now at least have sided inventories. Also, dispensers can now use Alkahest Buckets and Essentia Vessels.


fix confusing example

Ref: https://github.com/ryanmcdermott/clean-code-javascript/pull/151

Awesome, this will help prevent lots of confusion 😄


WIP: promise driver

@klis87 waiting for comments

@strdr4605 Thx! looks very nice!
I am thinking about 2 things now:

do you have any ideas how we could support aborts? like in axios or fetch driver? does your promise library you use has abort support? Because of course axios promise is just example, this driver should be used for APIs libraries, this is your use case right?
how to distinguish between queries and mutations, I guess the only way would be to use meta.asMutation: true and by default promise requests would be queries?

Don't know how to do it here. For example, facades used in our app make requests with Axios but we don't use abort (as I know).
I did not think about this (as I used redux-saga-requests only for GET requests and with my custom reducer). Probably meta.asMutation: true is the only way by now.

@strdr4605 I am worried about 1) because on another branch https://github.com/klis87/redux-saga-requests/blob/removing-sagas/packages/redux-saga-requests-axios/src/axios-driver.js#L12 I solved aborts without sagas just on promises in the link you can see. A special error REQUEST_ABORTED is thrown and it is listened here https://github.com/klis87/redux-saga-requests/blob/removing-sagas/packages/redux-saga-requests/src/middleware/create-send-requests-middleware.js#L127
The issue is that saga version allows to dispatch ABORT actions even for drivers not supporting aborts, but current implementation in version without saga cannot do this.
I would really like to support aborts even for drivers which dont abort requests. Those are faking aborts, but benefit is still there, namely you prevent race condition bugs, even if a request is not cancelled, its response will be ignored when abort action is dispatched instead of success one.
I am starting to believe this cannot really be done with drivers as promises, maybe we should use zen-observable...
I ignored this issue as all drivers supported aborts anyway, but with promise driver i think it won't be possible.
Unless you have any ideas how to achieve that?

By looking at this example: https://medium.com/@bramus/cancel-a-javascript-promise-with-abortcontroller-3540cbbda0a9
I added abort support for any promise and successfully tested it (_ABORT action is dispatched)

very interesting!
I was going to suggest sth different, namely:
export const promiseDriver = () => requestConfig => {
  let aborted = false;

  const responsePromise = requestConfig.promise
    .then(response => {
      if (aborted) {
        throw 'REQUEST_ABORTED';
      }

      return { data: response };
    })
    .catch(error => {
      if (aborted) {
        throw 'REQUEST_ABORTED';
      }

      throw error;
    });

  responsePromise.cancel = () => {
    aborted = true;
  };

  return responsePromise;
};

I guess this should work too. I will need to think about it and test both solutions. But on the 1st glance your solution is much better because in your case promise will be rejected with REQUEST_ABORTED when responsePromise.cancel is called immediately, while in my case it will just wait for normal promise resolve/reject and throw this error when aborted flag is true. Because of this I like your solution much more.
I would like to finish removing sagas first before merging this, is that ok?
With newest version you can easily use your promise driver by passing isRequestAction to handleRequests so that request.promise will be treated as request action like you did in this PR


ingress controller not redirecting to other namespace

I configured the ingress controller in the custom namespace and everything working except when it starts it is searching by default in default namespace
- --default-backend-service=$(POD_NAMESPACE)/wallet-api
this is in my yaml file and ingress controller is in the same namespace as service.
2017-08-07T18:03:55.648062185Z I0807 18:03:55.647655       6 launch.go:124] validated lykke-api/wallet-api as the default backend
this is the log on start but after it it still goes to default namespace
2017-08-07T18:04:09.313400592Z W0807 18:04:09.310337       6 controller.go:886] service default/wallet-api does not have any active endpoints
2017-08-07T18:04:09.313406492Z I0807 18:04:09.311433       6 controller.go:428] backend reload required
2017-08-07T18:04:09.838912633Z I0807 18:04:09.838688       6 controller.go:438] ingress backend successfully reloaded...
2017-08-07T18:04:12.365433661Z W0807 18:04:12.365172       6 controller.go:886] service default/wallet-api does not have any active endpoints
2017-08-07T18:04:15.694589965Z W0807 18:04:15.694323       6 controller.go:886] service default/wallet-api does not have any active endpoints

how can i tell ingress controller that service is not in default namespace?
tried changing it to my namespace
- --default-backend-service=custom-namespace/wallet-api
tried changing nginx.conf with custom using configmap, but it still loads its configuration

@Anmorata i has check ingress code.service default/wallet-api does not have any active endpoints just appear by two cases:
1、this service really set your --default-backend-service flag.
2、this service set in your ingress resource.

Closing. Please update to the latest version.


Move Container Apps into Terraform

Resolves https://app.clickup.com/t/384h6ca
Not ready for testing until 3.43.0 of the terraform azure provider is released

Just confirmed this works by doing a fresh deploy to dev4 and successfully running the pipeline! Ready for review!


Very small example added for st_geometrytype

When working with ST_GeometryType I was confused on what types the enum returned as well as proper usage of it
I won't be offended if you feel this is unnecessary as its a very small nit-picky change but just thought it would be helpful to add an example. Thanks for your hardwork!

Hi! Thanks a lot for this PR and the help on improving the docs.
This should probably also be documented, but the source-of-truth for the function reference is in the c++ files themselves, the markdown is automatically generated by executing the generate_function_reference.py script in the root of the directory.
To add an example for e.g. ST_GeometryType you'd have to add it to the DOC_EXAMPLE string in src/spatial/core/functions/scalar/st_geometrytype.cpp:90. Then recompile and execute the generate_funciton_reference.py script.
If this seems like a lot of effort feel free to leave this PR open as is and I will try to pick it up and incorporate the changes next time im working on spatial!
We're planning to rework this in the future so that all functions are declared separately with their names/parameters/types/overloads/descriptions/examples in e.g. json files from which we can generate both the markdown docs and scaffold the c++ stubs from.

No prob I'll look into this when I get chance 👍

I updated the function doc but I need to troubleshoot my windows subsystem for linux setup so I can generate the build folder

Okay whew, so I was able to setup my linux env with cmake, gcc, openssl, and ninja. I then was able to successfully do make debug (which took quite a while the first time which I think is expected since I was building everything) and then run generate_function_reference.py
The one odd thing is there a few function doc changes that I didn't add so I'm wondering if my fork wasn't up to date when I built or something? Let me know if I'm missing something @Maxxen


Bent pipes deal 8 thrown damage

About the PR
Bent pipes now deal 8 thrown damage, they previously did 3.
Why / Balance
I had it set to 3 when I originally gave pipes damage because thrown damage was doubled, but now that the bug is fixed the damage should be increased. I felt 6 was a bit low though considering flatcaps exist so I wanted to buff it a bit as well.
Media

Requirements

[X] I have read and I am following the Pull Request Guidelines. I understand that not doing so may get my pr closed at maintainer’s discretion
[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog
:cl:

tweak: Bent pipes now deal 8 thrown damage instead of 3.

Would be fun - if thrown and not colliding with anything during its orbit, it returns to your hand.


Cannot read some data in json file

I am a newbie. I am doing an Android web application, the code for parsing the json file is as follows
{
"name":"HelloWorld",
"description":"Simple web example application to demonstrate",
"package":"com.example.helloworld",
"version":"0.1.0",
"start_url":"index.html",
"icons":[
{
"src":"res/img/appicon.png"
}
],
"developer":{
"name":"Example Developer",
"url":"http://www.example.com/",
<EMAIL_ADDRESS>}
}
and my cpp code is as follows
std::string showJson(std::string cni, std::string cnj){
using json = nlohmann::json;
std::ifstream fin("/data/data/iecas.jsonshow.commanager/lib/manifest.json");
if(!fin) return "fin==null";
json j;
fin >> j;
fin.close();
if(cni == "name"&&cnj==" ") return j["name"];
if(cni == "description"&&cnj==" ") return j["description"];
if(cni == "package"&&cnj==" ") return j["package"];
if(cni == "version"&&cnj==" ") return j["version"];
if(cni == "start_url"&&cnj==" ") return j["start_url"];
if(cni == "developer"&&cnj=="name") return j["developer"]["name"];
if(cni == "developer"&&cnj=="url") return j["developer"]["url"];
if(cni == "developer"&&cnj=="email") return j["developer"]["email"];
if(cni == "developer"&&cnj==" ") return j["developer"];
if(cni == "icons"&&cnj==" ") return j["icons"];
}
I want to know how to read the string of "icons". When i use j["icons"] or j["developer"], my web app has crashed. j["developer"]["name"]  and j["name"] are no problem.

The icons and developer entries aren't strings.  The first is an array, and the second is an object.  You can't convert them to a string like that.  If you really do want the full JSON content of that entry as a string, you can use j["icons"].dump(), which will give you a string like this:
[{ "src": "res/img/appicon.png" }]

在icons和developer项不是字符串。第一个是数组，第二个是对象。您不能将它们转换为这样的字符串。如果您确实希望该条目的完整JSON内容作为字符串，则可以使用j["icons"].dump()，它将为您提供如下字符串：
[{ "src": "res/img/appicon.png" }]

Thanks


New AMM with Custom Weights

As per #41. Basically, instead of cloning Balancer V2 Lite, we opted to upgrade the previous version with custom weights using the FixedPoint library borrowed from the Aptos Framework. This approach minimizes development time.

Closing and switching to use the Balancer V2 Lite formula, as it provides the most practical solution for calculations. Additionally, we are developing a Math library on top of Aptos library, alllowing exponentiation of fixed-point numbers against fixed-point numbers.


301 Redirect on HTML page is ignored

Library Affected:
workbox-sw, workbox-webpack-plugin
Browser & Platform:
all browsers
Issue or Feature Request Description:
If a site is hosted on one server and then moved to another, with a 301 permanent redirect on the original, I expect that entering the old URL would cause the browser to redirect to the new URL, where the site will be served.
However, the site continues to display at the old URL. Everything works, using the last version that was deployed on the original URL. It appears the old service worker script continues to run, though it will no longer run a new service worker script because it's considered unsafe on a redirect to a different host.
Example Link
I have an example. The old url is https://morph.datavized.com and the new one is https://app.morph.graphics - though you won't see the bad behavior unless you loaded the former before the redirect was set up. If you load it the first time, before the service worker has been installed, the redirect will work.
All the code is here:
https://github.com/datavized/morph/
Thanks

That sounds close enough to https://github.com/GoogleChrome/workbox/issues/1677 that I'm going to assume there's the same root cause; closing in favor of that one.


refactor(e2e): rename integration-sandbox to e2e

Normally i would advocate to avoid abbreviations, but e2e is such a common alias for "end-to-end-tests" that I think it's fine here. (Googling for e2e shows better results that googling for end to end)

One small thing: can we rename the test package within this dir to something more meaningful? Like playwrite-tests or mode-tests or whatever the intention is.

How about sync-test? The intention for this is to make sure syncing data from chain to client works on via all available methods

How about sync-test? The intention for this is to make sure syncing data from chain to client works on via all available methods

works for me!


Old tailwind version makes peer dependency issues with recent versions of TypeScript

Component or Package Name: @jsx-email/tailwind
Component or Package Version: 3.0.0

Expected Behavior / Situation
low pri, but i'd expect no peer dep issues with<EMAIL_ADDRESS>Actual Behavior / Situation
on pnpm install
 WARN  Issues with peer dependencies found
libs/email-templates
└─┬ @jsx-email/tailwind 3.0.0
  ├─┬ @twind/core 1.1.3
  │ └── ✕ unmet peer<EMAIL_ADDRESS>found 5.2.2
  ├─┬ @twind/preset-autoprefix 1.0.7
  │ └── ✕ unmet peer<EMAIL_ADDRESS>found 5.2.2
  └─┬ @twind/preset-tailwind 1.1.4
    └── ✕ unmet peer<EMAIL_ADDRESS>found 5.2.2

Modification Proposal
bump twind version to get rid of these issues

nevermind, this is an upstream issue.
https://github.com/tw-in-js/twind/blob/66731393f0a26e940a7136a7b0347bc846ed62d6/packages/core/package.json#L49


Integrate TTN Keys

Thanks for your work and great development, I am new to the LoRa universe and have been studying the technology and possibilities for some time. I am currently working with a Heltec ESP32 LoRa v3 board. Here I am trying to integrate the keys into the code and not have to enter them via the console, my approach looked like this:
#include <Preferences.h>
...
Preferences preferences;
// Definition of the constants for LoRaWAN authentication
const char *devEui = "12345678";
const char *appEui = "12345678";
const char *appKey = "1234567812345678";
LoRaWANNode* node;

code:
void setup() {
  Serial.begin(115200);
  heltec_setup();
  preferences.begin("LoRaWAN", false);
  if (!preferences.isKey("initialized")) {
    preferences.putString("DevEUI", devEui);
    preferences.putString("AppEUI", appEui);
    preferences.putString("AppKey", appKey);
    preferences.putBool("initialized", true);
  }

I work with the library: <heltec_unofficial.h>
Can you give me a tip on how I can implement this?

Thanks...

No need to write anything to flash yourself, you can simply provide the provisioning parameters as arguments to persist.provision. You'd just need to provide them as numbers (for the EUIs) and pointers to uint8_t arrays (for the keys).
/**
 * @brief persist.provision can also take the provisioning data as arguments
 *        and store it in flash.
 *
 * @param band The LoRaWAN band as text, so "EU868", not &EU868.
 * @param subBand The sub-band within the LoRaWAN band to use, zero if none.
 * @param joinEUI The JoinEUI (Join Identifier) for the node.
 * @param devEUI The DevEUI (Device Identifier) for the node.
 * @param appKey The application key for the node.
 * @param nwkKey The network key for the node.
 * @return `false` if band does not specify a valid band, true otherwise.
 */
bool provision(
  const char* band,
  const uint8_t subBand,
  const uint64_t joinEUI,
  const uint64_t devEUI,
  const uint8_t* appKey,
  const uint8_t* nwkKey
);

unrelated: It doesn't matter, but there is no need to include RadioLib.h (it is included from heltec_unofficial.h), and you don't need Preferences.h unless you use it for something else yourself.

Thank you for your advice and your quick reply. Unfortunately, that doesn't tell me anything? What is the best way to proceed? I like to understand and learn here 🙏

Sure. Happy to help. This is the modified example to use statically compiled provisioning data. You have to get your own endpoint parameters, I deleted this endpoint after testing.
(While it can do so just fine, the true power of this library is of course not to use statically compiled values, but to use values entered by the user at runtime, either serially, from a web interface you make, or somewhere else.)
// Pause between sends in seconds, so this is every 15 minutes. (Delay will be
// longer if regulatory or TTN Fair Use Policy requires it.)
#define MINIMUM_DELAY 900

#include <heltec_unofficial.h>
#include <LoRaWAN_ESP32.h>

LoRaWANNode* node;

RTC_DATA_ATTR uint8_t count = 0;

const char* band       = "EU868";
const uint8_t subband  = 0;
const uint64_t joinEUI = 0x0000000000000000;
const uint64_t devEUI  = 0x70B3D57ED00670C8;
const uint8_t appKey[] = { 0x4A, 0x2F, 0x86, 0x95, 0x40, 0x25, 0x7C, 0x96, 0xDE, 0xCE, 0x3E, 0x15, 0xBA, 0x4A, 0xF9, 0xD2 };
const uint8_t nwkKey[] = { 0xF4, 0xA8, 0x58, 0xAD, 0x9B, 0x80, 0xA6, 0x97, 0x15, 0x51, 0x75, 0x06, 0x4F, 0xD1, 0x9E, 0xA5 };

void setup() {
  heltec_setup();

  // Obtain directly after deep sleep
  // May or may not reflect room temperature, sort of.
  float temp = heltec_temperature();
  Serial.printf("Temperature: %.2f °C\n", temp);

  // Put the provisioning data in flash. Can do this every time: flash values
  // are only ever written if they differ from what's already there.
  persist.provision(band, subband, joinEUI, devEUI, appKey, nwkKey);

  // initialize radio
  Serial.println("Radio init");
  int16_t state = radio.begin();
  if (state != RADIOLIB_ERR_NONE) {
    Serial.println("Radio did not initialize. We'll try again later.");
    goToSleep();  // Does not return, program starts over after sleep
  }

  node = persist.manage(&radio);

  if (!node->isJoined()) {
    Serial.println("Could not join network. We'll try again later.");
    goToSleep();  // Does not return, program starts over after sleep
  }

  // If we're still here, it means we joined, and we can send something

  // Manages uplink intervals to the TTN Fair Use Policy
  node->setDutyCycle(true, 1250);

  uint8_t uplinkData[2];
  uplinkData[0] = count++;
  uplinkData[1] = temp + 100;

  uint8_t downlinkData[256];
  size_t lenDown = sizeof(downlinkData);

  state = node->sendReceive(uplinkData, sizeof(uplinkData), 1, downlinkData, &lenDown);

  if(state == RADIOLIB_ERR_NONE || state == RADIOLIB_ERR_RX_TIMEOUT) {
    Serial.println("Message sent");
  } else {
    Serial.printf("sendReceive returned error %d, we'll try again later.\n", state);
  }

  goToSleep();    // Does not return, program starts over after sleep

}

void loop() {
  // This is never called. There is no repetition: we always go back to
  // deep sleep one way or the other at the end of setup()
}

void goToSleep() {
  Serial.println("Going to deep sleep now");
  // allows recall of the session after deepsleep
  persist.saveSession(node);
  // Calculate minimum duty cycle delay (per FUP & law!)
  uint32_t interval = node->timeUntilUplink();
  // And then pick it or our MINIMUM_DELAY, whichever is greater
  uint32_t delayMs = max(interval, (uint32_t)MINIMUM_DELAY * 1000);
  Serial.printf("Next TX in %i s\n", delayMs/1000);
  delay(100);  // So message prints
  // And off to bed we go
  heltec_deep_sleep(delayMs / 1000);
}


coneccion de una segunda pantalla pormedio de USB

[x] I have checked that a similar feature request does not already exist.

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

busco conectar una segunda pantalla al mismo ordenador pero me aparece un herror debido a que ya se a iniciado scrcpy con un primer dispositivo
ya probe coneccion inalambrica con los comandos de (adb) pero va con mucho retraso

In English, please!
https://github.com/Genymobile/scrcpy/blob/master/FAQ.md#several-devices-connected

identifying devices connected by (adb) wireless, such as (usb)
Yes, the screen of the two devices can be projected, but the wirelessly connected device has a lot of delay.
Is there the possibility of connecting the devices via USB, perhaps identifying each device connected by the aforementioned means?

but the wirelessly connected device has a lot of delay

If there is delay, then there is a network performance issue (either on the device, on your router or your computer). You can reduce the bit rate to minimize problems:
# reduce the bit rate
scrcpy -b2M
# also change the codec and reduce the resolution
scrcpy --video-codec=h265 --m1280 -b2M

Is there the possibility of connecting the devices via USB, perhaps identifying each device connected by the aforementioned means?

Hmmm, yes. Plug several devices to USB ports, and select the device as documented :thinking:
https://github.com/Genymobile/scrcpy/blob/master/doc/connection.md

# connect to the first device:
scrcpy -s 1f89c973
# connect to the second device:
scrcpy -s LMK410MRFIMFPJORF6

(the serial of the second device is unexpected, what is the result of adb devices and adb devices -l?)

I don't know exactly what you are asking me for, so if it's not wrong, I'll send you what is executed in (CMD)
C:\Users\YAMID\Desktop\new version\scrcpy-win64-v2.3.1>scrcpy -s LMK410MRFIMFPJORF6
scrcpy 2.3.1 https://github.com/Genymobile/scrcpy
INFO: ADB device found:
INFO: (usb) 1f89c973 device M2101K6G
INFO: --> (usb) LMK410MRFIMFPJORF6 device LM_K410
C:\Users\YAMID\Desktop\new version\scrcpy-win64-v2.3.1\s... file pushed, 0 skipped. 43.5 MB/s (66007 bytes in 0.001s)
[server] INFO: Device: [LGE] lge LM-K410 (Android 11)
INFO: Renderer: direct3d
INFO: Texture: 720x1600
I already managed to connect the two devices, thank you very much for your great help


Catalog item count

The FedEO Clearinghouse STAC implementation does a nice summarizing of how many items are in each catalog. It's quite useful to be able to navigate around. See https://stacindex.org/catalogs/fedeo-clearinghouse#/5nc6NjkK1CgBqG8HCgekPHXMn?t=catalogs
But the way they do it is just adding the count to the title, so it shows up in STAC Browser. It'd be better to support it as a first class object that clients can use directly.
A few different approaches were discussed on gitter -  putting it in the stats object, making it a new optional field, and reusing the 'context' extension from the stac api.

It seems we are mixing things up here. Are you referring to the numbers in brackets? Then these need to be part of the links, not part of the catalog/collection. If you want them in catalog/collection, I think a more general version of the context extension would make sense, which the context extension in the API would then base on.

Oh right, to display at the level above it needs to be in the links. I was thinking it'd be better to have an actual field, like STAC Browser would display 'number of items' on a catalog it viewing. So I guess we could/should have both,  so if you are looking at a catalog it tells you the number of items it has, not just in the sub-catalogs below.
I think it'd be an optional field, so static catalogs don't have to update it. But I think it belongs in core because it's not part of the /search/ endpoint. The core can be implemented statically or dynamically, but catalogs that are hosted on S3 but see lots of updates of all their catalogs may choose not to implement it. But some static catalogs don't have updates, and. some might only update of their catalogs.

But I think it belongs in core

But starts in an extension, right?

But I think it belongs in core

But starts in an extension, right?

Maybe consider supporting an optional attribute similar to thr:count as part of the links ?  (See https://datatracker.ietf.org/doc/rfc4685/).

Closing due to inactivity.


[FEATURE] Customize or disable the default viewer

Describe the feature
Customize or disable the default viewer.
Additional details
Custom viewers could be integrated with custom frontends.

Closing in favour of #128


[v2.7] Add Configuration Hooks for ProvV2

Issue: https://github.com/rancher/rancher/issues/38790
Problem
When provisioning nodes using the RHEL operating system the node will fail to fully provision due to two NetworkManager services interfering with the CNI's configuration. This results in the node indefinitely staying in the Waiting for probes stage (or some other similar failure condition). This issue was fixed for RKE1 clusters via change in rancher-machine (see https://github.com/rancher/rancher/issues/36526). However, this solution is not applicable for ProvV2 as all configuration is done via cloud-init.
Solution
Allow the user to specify predefined configuration hooks within the yaml of a machine pool. These hooks denote particular commands that will be added to the install script passed to the downstream node. Currently, cloud-init is used to install the rancher system-agent for ProvV2. This PR adds additional commands after the installation of the agent is complete.
The contents of each hook are defined within Rancher source code, ensuring that arbitrary commands cannot be injected within the cloud-init script. The included hook performs the same configuration step that is performed when provisioning RKE1 clusters using RHEL, which allows the default RHEL AMI to be used without any prior configuration. More hooks can be added as needed, so other pre-configuration issues with particular OS's can be automatically resolved.
When building the install script, Rancher does not know what particular OS is being used, so these hooks must be manually configured. This differs from the behavior of RKE1 provisioning, however from what I am able to tell it cannot be avoided.
To use these new hooks the user must modify the YAML of a particular machine pool to denote which hooks should be applied to the install script. For example, the following YAML will disable the nm-cloud-setup.service and nm-cloud-setup.timer using systemctl.
machinePools:
    - controlPlaneRole: true
      etcdRole: true
      hooks:
      - disable-network-manager
      machineConfigRef:
        kind: <CONFIG_TYPE>
        name: <CONFIG_NAME>
      name: <POOL_NAME>
      quantity: 1
      unhealthyNodeTimeout: 0s
      workerRole: true

Specifying this hook will add the following logic to the install script, after the system-agent is installed.
sudo systemctl list-units --all | grep -Fq nm-cloud-setup.timer; if [ $? -eq 0 ]; then sudo systemctl disable nm-cloud-setup.timer; fi
sudo systemctl list-units --all | grep -Fq nm-cloud-setup.service; if [ $? -eq 0 ]; then sudo systemctl disable nm-cloud-setup.service; fi

Machines must be reprovisioned/recreated if this hook is added to the YAML after a machine has already been created in an infrastructure provider.
Testing

Begin to create an RKE2 cluster within the Rancher UI
Create three machine pools

Two of the pools will use a RHEL AMI. One pool should have the etcd and control-plane roles and the other should just have the worker role.
One of the pools will use the default Ubuntu AMI. This pool should just have the worker role.

After creating the three pools, click on the Edit as YAML button in the lower right hand corner
Add the disable-network-manager hook to the first pool configured with a RHEL AMI, do not define any hooks for the other two pools
Create the cluster after modifying the YAML
Observe that the RHEL pool with the hook defined provisions and becomes available, and that the RHEL pool which does not have the hook defined does not come up or become available. Ensure that the Ubuntu pool comes up and becomes without the need to specify any hooks.

Engineering Testing
Manual Testing
I've done the above testing and have used the new hook to provision a new RHEL 8.6 cluster. I observed it come up and become useable. Machine pools within the same cluster which did not have this hook specified did not come up successfully, as expected. Machine pools which used OS's which did not need any pre-configuration were provisioned and became available as expected.
QA Testing Considerations
This fix should address many RHEL versions which do not provision successfully by default, so testing should not be limited to just RHEL 8.6.
Regressions Considerations
None that I can think of.

@Oats87 @HarrisonWAffel We could also add the hooks as a proper field on the bootstrap object: https://github.com/rancher/rancher/blob/77f87c498b1517dcca5ae7fcf707dc8ebe7a95db/pkg/apis/rke.cattle.io/v1/bootstrap.go#L17-L19
Here is an example of how upstream does this:
https://github.com/kubernetes-sigs/cluster-api/blob/c1730d3cb9344bff059d92cc9a18b6b2a6faab04/bootstrap/kubeadm/api/v1alpha4/kubeadmconfig_types.go#L63
https://github.com/kubernetes-sigs/cluster-api/blob/6a4e90cad62de2f4ec0f48ed92f94d348ed41035/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go#L486

@Oats87 @HarrisonWAffel We could also add the hooks as a proper field on the bootstrap object:
https://github.com/rancher/rancher/blob/77f87c498b1517dcca5ae7fcf707dc8ebe7a95db/pkg/apis/rke.cattle.io/v1/bootstrap.go#L17-L19
Here is an example of how upstream does this:
https://github.com/kubernetes-sigs/cluster-api/blob/c1730d3cb9344bff059d92cc9a18b6b2a6faab04/bootstrap/kubeadm/api/v1alpha4/kubeadmconfig_types.go#L63
https://github.com/kubernetes-sigs/cluster-api/blob/6a4e90cad62de2f4ec0f48ed92f94d348ed41035/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go#L486

Yeah, this is definitely something we could do. I dislike how it's specifically "preKubeadm" i.e. specifically kubeadm, but that doesn't necessarily mean the idea itself isn't bad.
On a semi-related note, @HarrisonWAffel did we have design discussion where we formally decided on using "hooks"? I think "hook" might be too generic of a field for what these specifically are. they really are "preHook"s.

@HarrisonWAffel @jakefhyde @snasovich before we merge this PR, we should discuss this in an afterparty item (or more realistically, in a design discussion). @jakefhyde brings up some good points about the implementation of this in our codebase vs. how upstream "would" do it.


OPTIONAL PULL REQUEST

Hi,
I have changed this module a little to be more useful for our purposes by:

review per block type
remove moving between areas (that could be done in a separate module)

Feel free to ignore.

Thanks, there's a lot of separate changes here.
I like the idea about filtering by block type to filter only on specific block types, that's something that could be done via searchable fields via the Type field, though ?
The move element functionality is important and would stay in this module, as it's an administration area for elements.
I tried adding it to the actual element but Elemental did not like that at all for inline elements.
Will review the changes and mark anything else up that I see.


WIP: [19] Assert signature file name syntax

This is a first draft of a possible solution for issue #19.
What I am stuck with is how I can access the IT maven project instance from within the postbuild.groovy script? I need that to solve the following issues:

SHOULD NOT hard code the version number in the script, as it would imply to change all scripts again and again for each new version of the project.
SHOULD NOT hard code the expected file name as a literal, as it would imply to change the script again if more signature files are added to the existing IT test case.

Closes #19

@slawekjaranowski I think my personal experience with Maven Invoker Plugin is not good enough to solve the two open questions on my own. Do you have an idea for me?

ITs project version is hardcoded in invoker.properties and it is independent of real project version
we can have hardcode file names - I prefer more unit test then ITs running by maven-invoker, so I expect that we will not do many changes in it

I'm driving nuts. Even if I put an additional -Drevision=1.1.1 in the invoker.mavenOpts line, still System.properties.'revision' always returns null (while it works with any other environment variable). Do you have a clue what my fault is?

settings from invoker.properties are used for maven execution not for before/after script.
If you need new values in before/after script you should use scriptVariables configuration for maven-invoker plugin
https://maven.apache.org/plugins/maven-invoker-plugin/examples/post-build-script.html

That does not solve the problem: The version number is then just moved from the script file to another file, but in any way it would be duplicated. So to sum up: Shall we simply hard-code the version number in the groovy script?

yes we can hardcode version in groovy. We have only 4 ITs tests so  will not huge work to change it if we need.

Ok, in that case I am done with this draft and would kindly ask to review this PR. :-)

After merging last two PR I will release new version.
If you wish please add yourself to developer list in pom.xml

After merging last two PR I will release new version.
If you wish please add yourself to developer list in pom.xml

Please Review #24 - Thank you for inviting me into this project! It is fun working with you! :-)


Client can subscribe multiple times to same topic-data

Current broker implementation doesn't check if a client has already subscribed to topic-data, allowing multiple subscriptions to same topic-data from same client. This interaction isn't defined in the coap pubsub draft.

I think this could still be done on a simple level from the broker side that there are no duplicate subscribers, but since it is the client's duty not to register twice to the same resource the client gets no notification about this


⚠ Processors has degraded performance

In a580b1f, Processors ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 167 ms

Resolved: Processors performance has improved in dd3e164.


demo-sample for dropwizard

Hi Team,
I have been exploring for the best tool in terms of ease of writing tests for micro-services and found  karate to be a potential fit. As a part of Proof of Concept, I experimented with it by reading the docs and sample programs.
As most of our services are written using dropwizard, It took me some time to map the analogies between spring and dropwizard and overall understanding as well.
I wrote a minor module to test the same with dropwizard and i was able to run a test successfully. I believe it would save decent on-boarding time for new members who are more familiar with  dropwizard. Instead of writing code in a blog i thought the code base which is the source of truth would be the right place to do so. Let me know your comments.
P.S: Please bear with me in case of any mistakes, as this is my first issue in open source :)

apologies if this sounds rude, but your question is not clear. whether it is dropwizard or .NET - karate should just operate at the HTTP layer. maybe you have some utilities to start the dropwizard server similar to the karate-demo example, but you haven't provided any code yet. can re-open this if you provide more clarity.

No it doesn't sound rude :). I understand the confusion. Am not sure whether to provide code first itself or later once issue is approved.
Yes, It is pretty much similar to karate-demo example.
and here is the PR: https://github.com/intuit/karate/pull/507

@PavanKumarReddy ah, sorry I didn't get you at first.
actually I'm not keen on adding another framework as part of the karate-demo, it is already bloated much. I chose Spring-Boot just because I had to chose something and it was a reasonable choice. the total build time is already more than 1 minute which is too long IMHO
in fact I'm thinking of moving all the demos to karate-netty so as not to "favor" any particular framework.
I suggest you create your own github project example and perhaps blog about it. I'll be happy to add a link to the Karate documentation, when you provide a link (or PR)

Sure. Thanks. Will update after i write a small blog on this.


stratified_transformer.py, stratified calss , forward function inputs ?

forward function for class Stratified takes these variables as input:
features, xyz, offset and batch
could you please explain what are these inputs refer to ? I wanna apply this architecture to a different computer vision task with different dataset, I know what are the features and xyz but what is offset?
thank you so much in advance..

features:  thergb color concatenated with xyz of all points. [N, 6]
xyz: the position of all points. [N, 3]
offset: each element indicates the location of a scene in the batch. [b]
batch: the index in the batch for each point. [N]

@X-Lai , Thanks for your explanation.
If the features do not contain xyz and they only have rgb color, is this OK?
Or it is better to concatenate rgb to xyz coordinates and make the input format of features become [N, 6] rather than [N, 3].

Sorry but these two variables are still unclear for me
offset: each element indicates the location of a scene in the batch. [b] batch: the index in the batch for each point. [N]
could you explain them again please
thank you..

are they a tensors? how about their shapes ? I got an error
clone() can't be used with integer or list