[THREESCALE-4393] Add support to use Basic Authentication with the forward proxy

What
Fixes https://issues.redhat.com/browse/THREESCALE-4393
This PR support the use of Basic Auth with forward proxy in the following scenarios:

APIcast <> forward HTTP proxy with Basic Auth <> HTTP upstream
APIcast <> forward HTTP proxy with Basic Auth <> HTTPS upstream

Verification steps

Add the following line to examples/forward-proxy/tinyproxy.conf

BasicAuth foo bar

APIcast <> forward HTTP proxy with Basic Auth <> HTTP upstream

Update examples/forward-proxy/apicast-config.json with the following:

{
    "services": [
        {
            "backend_version": "1",
            "proxy": {
                "hosts": ["one"],
                "api_backend": "http://postman-echo.com",
                "backend": {
                    "endpoint": "http://<IP_ADDRESS>:8081",
                    "host": "backend"
                },
                "policy_chain": [
                    {
                        "name": "apicast.policy.apicast"
                    },
                    {
                        "name": "apicast.policy.http_proxy",
                        "configuration": {
                            "http_proxy": "http://foo:bar@proxy:443/"
                        }
                    }
                ],
                "proxy_rules": [
                    {
                        "http_method": "GET",
                        "pattern": "/",
                        "metric_system_name": "hits",
                        "delta": 1,
                        "parameters": [],
                        "querystring_parameters": {}
                    }
                ]
            }
        }
    ]
}

run docker-compose.forward-proxy.yml

make forward-proxy-gateway

Get APIcast IP

❯ docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS         PORTS                NAMES
bab24ff74d69   apicast-test            "container-entrypoin…"   9 seconds ago    Up 9 seconds   8080/tcp, 8090/tcp   apicast_build_0-gateway-run-a32123385dce
dec323e010f9   nginx:1.23.4            "/docker-entrypoint.…"   10 seconds ago   Up 9 seconds   80/tcp, 443/tcp      apicast_build_0-upstream-1
a0b1ffe5b514   apicast_build_0-proxy   "/usr/bin/tinyproxy …"   10 seconds ago   Up 9 seconds   0/tcp                apicast_build_0-proxy-1

❯ APICAST_IP=$(docker inspect apicast_build_0-gateway-run-a32123385dce | yq e -P '.[0].NetworkSettings.Networks.apicast_build_0_default.IPAddress' -)

Send request to APICast

❯ curl -v -H "Host: one" http://${APICAST_IP}:8080/get?user_key=foo
*   Trying <IP_ADDRESS>...
* TCP_NODELAY set
* Connected to localhost (<IP_ADDRESS>) port 8080 (#0)
> GET /get?user_key= HTTP/1.1
> Host: one
> User-Agent: curl/7.61.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: openresty
< Date: Thu, 31 Aug 2023 06:12:41 GMT
< Content-Type: application/json; charset=utf-8
< Content-Length: 370
< Connection: keep-alive
< Via: 1.1 tinyproxy (tinyproxy/1.11.1)
< ETag: W/"172-1BPDY6s8yDG5TJHwqYbKsiphJMI"
< set-cookie: sails.sid=s%3AnwD0yJG_9FLjXIev7zU9n_6U3CFFN5KD.QOtPZ4Jy84tU46c8%2FiYS%2FCsaolhffNCqFLeGPbcH%2FcM; Path=/; HttpOnly
<
{
  "args": {
    "user_key": ""
  },
  "headers": {
    "x-forwarded-proto": "http",
    "x-forwarded-port": "80",
    "host": "postman-echo.com",
    "x-amzn-trace-id": "Root=1-64f02f59-455a8e1e1cf53ad137ba4e7a",
    "via": "1.1 tinyproxy (tinyproxy/1.11.1)",
    "user-agent": "curl/7.61.1",
    "accept": "*/*"
  },
  "url": "http://postman-echo.com/get?user_key="
* Connection #0 to host localhost left intact

We can see that the the request is going through the proxy
APIcast <> forward HTTP proxy with Basic Auth <> HTTPS upstream

Update examples/forward-proxy/apicast-config.json with the following:

{
    "services": [
        {
            "backend_version": "1",
            "proxy": {
                "hosts": ["one"],
                "api_backend": "https://postman-echo.com",
                "backend": {
                    "endpoint": "http://<IP_ADDRESS>:8081",
                    "host": "backend"
                },
                "policy_chain": [
                    {
                        "name": "apicast.policy.apicast"
                    },
                    {
                        "name": "apicast.policy.http_proxy",
                        "configuration": {
                            "https_proxy": "http://foo:bar@proxy:443/"
                        }
                    }
                ],
                "proxy_rules": [
                    {
                        "http_method": "GET",
                        "pattern": "/",
                        "metric_system_name": "hits",
                        "delta": 1,
                        "parameters": [],
                        "querystring_parameters": {}
                    }
                ]
            }
        }
    ]
}

run docker-compose.forward-proxy.yml

make forward-proxy-gateway

Get APIcast IP

❯ docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS         PORTS                NAMES
f0b18fa16dda   apicast-test            "container-entrypoin…"   9 seconds ago    Up 9 seconds   8080/tcp, 8090/tcp   apicast_build_0-gateway-run-a32123385dce
7b3107db8aa4   nginx:1.23.4            "/docker-entrypoint.…"   10 seconds ago   Up 9 seconds   80/tcp, 443/tcp      apicast_build_0-upstream-1
f0b18fa16dda   apicast_build_0-proxy   "/usr/bin/tinyproxy …"   10 seconds ago   Up 9 seconds   0/tcp                apicast_build_0-proxy-1

❯ APICAST_IP=$(docker inspect apicast_build_0-gateway-run-a32123385dce | yq e -P '.[0].NetworkSettings.Networks.apicast_build_0_default.IPAddress' -)

Send request to APICast

❯ curl -v -H "Host: one" http://${APICAST_IP}:8080/get?user_key=foo
*   Trying <IP_ADDRESS>...
* TCP_NODELAY set
* Connected to localhost (<IP_ADDRESS>) port 8080 (#0)
> GET /get?user_key= HTTP/1.1
> Host: one
> User-Agent: curl/7.61.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: openresty
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< set-cookie: sails.sid=s%3ALAz2UZyLXVxBZ8VY2XjC90y0N54Mk_JV.xJ0meVF%2F1%2FEP1m7BY0SZ9jNQ%2FLaIl3jaoHHsxH%2FPIhQ; Path=/; HttpOnly
< Date: Thu, 31 Aug 2023 06:11:54 GMT
< ETag: W/"146-Gpco5rr4Zu8qMK21l8EJcRbPeqI"
<
{
  "args": {
    "user_key": ""
  },
  "headers": {
    "x-forwarded-proto": "https",
    "x-forwarded-port": "443",
    "host": "postman-echo.com",
    "x-amzn-trace-id": "Root=1-64f02f2a-2403dd5e6c8931eb1878f63e",
    "user-agent": "curl/7.61.1",
    "accept": "*/*"
  },
  "url": "https://postman-echo.com/get?user_key="
* Connection #0 to host localhost left intact

We can see that the the request is going through the proxy

HAve you considered tests with HTTP(S)_PROXY env var?

Added tests for HTTP(S)_PROXY env var.
To discuss:
For HTTP connections sent through the proxy, the set Proxy-Authorization in the request itself. However when sent over HTTPS, the Proxy-Authorization header must be sent in the CONNECT request as the proxy has no visibility into further tunneled requests.
The camel proxy policy is interesting here as we sent over HTTPS but skip CONNECT, so I wonder what is the correct approach here

Set Proxy-Authorization header in the original request
Don't set the header and update the documentation saying that camel proxy policy is incompatible with proxy authentication

Changes looks good to me.
I cannot approve because there are git conflicts and some integration tests are failing

Ack, let me rebase and review the test log. It seems like a bunch of unrelated tests also failed

Conflict resolved but I'm still not sure why the tests are failing, it seems very random to me

Conflict resolved but I'm still not sure why the tests are failing, it seems very random to me

Yeah, there are few flaky tests we should be fixing sooner or later.
After few tries, no more than 5, they should all pass


Improve @FieldNameConstants functionality

@FieldNameConstants is realy great, but it generates names like this:
private Date date; becames public static final String DATE = "date";,
which causes generated names to mix with other static fields.
Moreover it is not alway clear if "DATE" is field name, or some date for example.
My suggestion is to prepend FIELD_ prefix to all generated names, so: private String date; will become public static final String FIELD_DATE = "date";
That way generated names are nicely groupped and we immediatelly know what it represent.

IMO adding this:
    public String prefix() default "";
    public String suffix() default "";

Into the annotation and then handling that stuff will do. Perhaps the default for prefix could be "FIELD_".

Yup. Added in commit b8e85f5dc7044e9a4bd43c41786bdda2a38f50ac and will be in 1.18.0 to be released soon. It's a bit more involved; you can config prefix and suffix via both the annotation itself and lombok.config


Doesn't work in IE11

It looks like MutationObserver isn't firing in IE11.  Paste this into the console:
ES6Promise.Promise.resolve("hello").then(function(v){console.log(v);});

This won't fire.  If I then paste this:
setTimeout(function(){},1);

Then both the setTimeout event AND the .then() callback function get called.  This must be some kind of IE bug?  I couldn't find anyone reporting it though so I must be mistaken?

Also worth noting: $$asap$$flush WILL get called immediately if I set a breakpoint in es6-promise on the line that changes node.data.  If I disable the breakpoint, $$asap$$flush doesn't get called.  Bizarre, right?

Woah. Maybe a mutation observer related quirk? This seems gnarly. I'll take a look in the AM

Any update on this?

Sorry this slipped my queue I'll take a look today

I am unfortunately unable to reproduce this issue. :(
On IE11 all but 1 test is passing, and that test failure appears totally unrelated.

So, this is interesting. When stepping through the code, everything works as expected :S

Also, if you merely "click" anywhere in the page, the queue flushes..

MessageChannel appears to work correctly...

I suspect the resolution is to:

switch to MessageChannel
report the bug upstream.

Any update on the issue? You're saying it's related to the console... do you mean simply having the console/dev tools opened, or using the console javascript object (console.log()) ?
I'm facing a similar issue with the promise not resolving correctly on IE11 and I'm wondering if this is the problem.

This is only the result of triggering a change from the console. So when a dev attempts to debug a promise via the developer console. They must tap the web view to flush the changes. This is clearly and ie11 bug. Although to save the sanity of dev, we may want to migrate to message channel for async.
If the change did not originate from the console, I have very high confidence that it is not a bug with this library. As its extensive test suite runs without issue on ie11.
To summarize, this does not affect normal app usage. Only some circumstances in the ie11 dev console do issues arise.

So we have a choice to make, we can revert to use the wrong async in IE11, or deal with it. Both options really do suck..
cc @jdalton I tried to report this but with IE11, but the login sequence kept erroring with me. Do you have any thoughts or suggestions here?
cc @domenic Also curious if you have some advice. Let me know if i should provide more context.

I would say deal with it; devs should be deving for Edge hopefully. Maybe add a loud warning.

Maybe add a loud warning.

sniff the version and console.log something ?

Yeah or just in the readme. But that is probably better.

Either solution would probably fit everyone's needs. IE11 will be forgotten soon enough with Edge being pushed out so much.

I can likely also give a function to force the lib to some other async. Something the dev can run right after seeing the message so debugging isn't horrible

fwiw I can't repro the issue on Win 10 IE 11 using http://static.iamstef.net/es6-promise/ or ES6Promise.Promise.resolve("hello").then(function(v){console.log(v);});.

Yall running updated OS's and what not?

Confirmed it worked on my Win 10 vm and https://remote.modern.ie/ too.

Works as in cannot repro bug.

Works as in cannot repro bug.

If this is accurate, then awesome. Maybe some patch addressed this.
I am going to close the issue, as @jdalton someone who works on IE/chakra is unable to reproduce. I would say the problem is fixed.
If someone can demonstrate another scenario that fails we will gladly reopen.
@jdalton / @domenic thanks for your help


add medical_program schema, migration and search

Changes Unknown when pulling 588033a475b4f5c6ce1b7b480b9a1dcdd0fb7be1 on medical_program into ** on master**.


Updated dependencies and rewrote mockito tests to pass in local

Thanks for sharing, great project for new rust learners to go through. Are there any plans to rewrite it using the latest clap crate?

Not actively, I'm afraid. To be honest, this project hasn't gotten the attention it should deserve.

That's unfortunate, I learned a lot from this project. Will you mind if I give it a try then?  Not sure if I will be able to do it successfully, as I am pretty new to rust.

Hah, I was super new to Rust too when I made this. It honestly hasn't changed much. Other than satisfying clippy here and there, I seriously haven't done much with this codebase. The speeds of the places I live at can no longer be accurately measured with this.

Is it possible to improve the codebase to handle higher bandwidth?

This was a translation of speedtest-cli back then. I think there are go ones using the socket test stuff. I don't know if speedtest-cli has improved or anything else.


Please support cssLiterals options

The VSCode extension is removing all my @css {} blocks.

Thanks for your interested in Stylus Supremacy.
Normally, it should support all the features listed in the official Stylus website. Hence, the lack of CSS literal support could be a bug.
Please bear with me while I'm investigating.

@khuongduybui would you kindly share the @css {} block that went missing when format using Stylus Supremacy?

Ah... you are using @css {} as top-level block.
I'm using them inside other blocks, even inside values, such as
body[theme=dark]
  textarea:focus
    border-color @css { ${$design.primaryLight} }

When I call "format document" my @css is removed from the border-color line.
If I rewrite this as
@css {
  body [theme=dark] textarea:focus {
    border-color: ${ $design.primaryLight }
  }
}

then call "format document", it works as expected.

This means a bug! Please spare me some time to fix this.

This has been fixed in version 2.2.2 for NPM and VSCode.
If you are using Atom, please wait a few days as I does not own the package.
Let me know if you have any further issues.


chore(documentation): update blockquote stories

Preview environments are getting posted here, as soon as they are ready!


Implement MVP for  FOM Reporting Requirement

Describe the task

Use Opensearch to implement FOM MVP Reporting Requirement
Run SQL queries for specific FOM MVP reporting requirement
(see details https://apps.nrs.gov.bc.ca/int/confluence/display/FOM/Citizen+Engagement+Metrics)
Document reporting procedures (to make it repeatable by other team members)
Test Procedures to be done by other team members

Acceptance Criteria

[ ] Dashboard should be reviewed with Julius
[ ] Update confluence page if necessary
[ ]

Additional context

Add any other context about the task here.
Or here

Include Jackson Porreca in the meeting with Julius on the FOM Reporting Requirement

See #330 for task list

For log rotation, specifically for "Pino", these two choices seem popular:

logrotate.
This one is a utility tool and recommended by Pino log rotation section in the doc.
Not part of the npm package install, but through downloading and configuration file setup. Some ubuntu images seem to have that (not too sure). So the setup probably is through docker.
Pino documentation mentions some complication related to log truncate, may need to be aware.

rotating-file-stream.
It is an npm package to install. So maybe preferred over convenience as can be just done in the same api backend code.
However, can't find example for this one with Nestjs-Pino, the logger currently FOM backend api is using. Not sure how easy can be integrated, as for now, Nestjs-Pino seems to be quite confusing to setup right.

Sounds good, I will try "logrotate" setup. The pino doc link mentions the truncate issue here: https://getpino.io/#/docs/help?id=rotate.

As I figured, this won't be a significant issue particularly if we have log rotation trigger late at night.

I looked into tee and it might not work with logrotate, in which case what would work is to tail the output file.
e.g. something roughly like this:
entrypoint: tail -f app.log; node main.js > logrotate

Hi @basilv ,
As you might already feel that, nestjs-pino is a bit confusing on how to set it right and working. Although initially we worked out pino configuration to output log to both "stdout" and "file" but I was having trouble using similar configuration with the help of "ECS" package (@elastic/ecs-pino-format) to output ECS format to both stdout and file.
I finally got ECS to work with "nestjs-pino" logger and output to stdout and a file. For it to work, two things changed:

The previous with "pino-pretty" seems useless now with ECS format. I tried and I decided we don't need it, since we only use it for the console stdout output. So I decide that no need to use it.
To make nestjs-pino work with ECS format package, I will need to use second approach "destination stream" instead, not the one we use previously with pino "transport-target". I couldn't make it work with "transport" way. I feel this is good to go.
Pushed the change to your opensearch branch already. You can exam the latest output to see if that reduce the overhead of configuring fluentBit (FunBucks).
@basilv @MCatherine1994

Hi @basilv
For using "logrotate", I spent more than a day last week (although more than half day was trying to figure out running Dockerfile(s) db/api individually and locally so I don't need to deploy logrotate setting on Openshift), getting some progress but not good enough yet to start logrotate manually. To really work out 'logrotate' it seem there are quite some pieces need to be involved:

FOM "deployment image" - I understand best is to use multi-stages for Docker build, but the second stage has been a constant trouble for setting up things for running in the container. Spent quite some time figuring out what to COPY after "logrotate" is installed in first stage (and not confident if everything needed are copied). Lack of some linux tool for debugging or even just 'text' editing to quickly write up some temporary configuration to test it out. I couldn't use "sudo" as well; maybe i shouldn't try this sudo command in container.
User/Group permission within container - I faced some file or folder (specific to logrotate) permission issues when trying on terminal to execute simple logrotate command. But if I run Dockerfile locally to start container with root user, I can execute the same command. After some experiments, I feel if we like to run logrotate within its default configuration and folder (custom app configuration can be dropped into default folder and run with default or override default logrotate configuration settings), we might need to run that as a root user. Otherwise, it can also have custom configuration sits in our application folder, but this will have more to be setup plus something else than just logrotate to make log rotation working.
Requires "cron" setup?: Seems 'logrotate' also needs "cron" to be setup. If we can use default (which might also need to run/edit as root user/group), we probably wont need to set up this as logrotate does provide "daily" cron configuration in separate configuration file. I am not sure how the cron is run in Linux system and for our very limited "deployment image" I am not even sure if cron is even running at all.

I did try build/run Dockerfile locally to produce api containers and 'exec -it" to the container to execute logrotate command for FOM logrotate setting as "root". The command I tried can be executed, then I experimented from api to create more log lines, wait for sometime but I don't see log being rotated. So then I tried executing logrotate command again and it created a rotated file. That's why I feel either I didn't configure it right or it needs "cron" to assist logrotate to create rotation, anyway, more are involved in setting up "logrotate" correctly.
Due to so much trouble on setting the "logrotate" set up. I went ahead to create another branch to try out using npm package for rotation (not logrotate from Linux tool set). It is much simpler and I was able to rotate the FOM log with ECS format locally and on Openshift. I have this working branch here: "feat/331-pino-ecs--rotate-stream". If this is acceptable for MVP, then we have the log with ECS format that can be rotated and we can move on for really focusing on OpenSearch configuration. We can then cut a ticket to really improve log rotation using "logrotate" if it is preferred.
@MCatherine1994 @gormless87

Hi @basilv :
Added couple of current logged strings with ECS format (current default options implementation) for you below.
Application log:
{"log.level":"info","@timestamp":"2023-07-05T19:33:39.921Z","process":{"pid":12935},"host":{"hostname":"CA-L58347M3"},"ecs":{"version":"1.6.0"},"message":"Done postStartup."}
	{
	  "log.level": "info",
	  "@timestamp": "2023-07-05T19:33:39.921Z",
	  "process": {
		"pid": 12935
	  },
	  "host": {
		"hostname": "CA-L58347M3"
	  },
	  "ecs": {
		"version": "1.6.0"
	  },
	  "message": "Done postStartup."
	}

	{"log.level":"info","@timestamp":"2023-07-05T19:33:39.647Z","process":{"pid":12935},"host":{"hostname":"CA-L58347M3"},"context":"ProjectService","ecs":{"version":"1.6.0"},"message":"findPublicSummaries - Querying database with criteria '{\"includeWorkflowStateCodes\":[\"COMMENT_OPEN\",\"COMMENT_CLOSED\",\"FINALIZED\"],\"includeForestClientNumbers\":[]}'"}

	{
	  "log.level": "info",
	  "@timestamp": "2023-07-05T19:33:39.647Z",
	  "process": {
		"pid": 12935
	  },
	  "host": {
		"hostname": "CA-L58347M3"
	  },
	  "context": "ProjectService",
	  "ecs": {
		"version": "1.6.0"
	  },
	  "message": "findPublicSummaries - Querying database with criteria '{\"includeWorkflowStateCodes\":[\"COMMENT_OPEN\",\"COMMENT_CLOSED\",\"FINALIZED\"],\"includeForestClientNumbers\":[]}'"
	}

HTTP Request log:

Request for: http.response.statusCode=200

	{"log.level":"info","@timestamp":"2023-07-05T19:34:46.264Z","process":{"pid":12935},"host":{"hostname":"CA-L58347M3"},"http.request":{"id":1,"method":"GET","url":"/api/project/publicSummary?includeCommentOpen=true&includePostCommentOpen=false","query":{"includeCommentOpen":"true","includePostCommentOpen":"false"},"params":{"0":"project/publicSummary"},"headers":{"host":"localhost:3333","connection":"keep-alive","sec-ch-ua":"\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\"","accept":"application/json","sec-ch-ua-mobile":"?0","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36","sec-ch-ua-platform":"\"Windows\"","sec-fetch-site":"same-origin","sec-fetch-mode":"cors","sec-fetch-dest":"empty","accept-encoding":"gzip, deflate, br","accept-language":"en-US,en;q=0.9"},"remoteAddress":"::1","remotePort":56440},"http.response":{"statusCode":200,"headers":{"access-control-allow-origin":"*","content-security-policy":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests","cross-origin-embedder-policy":"require-corp","cross-origin-opener-policy":"same-origin","cross-origin-resource-policy":"same-origin","referrer-policy":"no-referrer","strict-transport-security":"max-age=15552000; includeSubDomains","x-content-type-options":"nosniff","x-dns-prefetch-control":"off","x-download-options":"noopen","x-frame-options":"SAMEORIGIN","x-permitted-cross-domain-policies":"none","x-xss-protection":"0","cache-control":"no-store, max-age=0","pragma":"no-cache","content-type":"application/json; charset=utf-8","content-length":"17010","etag":"W/\"4272-HWUm3QHM9GwqiPp5v8WYhSU8TrM\""}},"event.duration":4,"ecs":{"version":"1.6.0"},"message":"request completed"}

	{
	  "log.level": "info",
	  "@timestamp": "2023-07-05T19:34:46.264Z",
	  "process": {
		"pid": 12935
	  },
	  "host": {
		"hostname": "CA-L58347M3"
	  },
	  "http.request": {
		"id": 1,
		"method": "GET",
		"url": "/api/project/publicSummary?includeCommentOpen=true&includePostCommentOpen=false",
		"query": {
		  "includeCommentOpen": "true",
		  "includePostCommentOpen": "false"
		},
		"params": {
		  "0": "project/publicSummary"
		},
		"headers": {
		  "host": "localhost:3333",
		  "connection": "keep-alive",
		  "sec-ch-ua": "\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\"",
		  "accept": "application/json",
		  "sec-ch-ua-mobile": "?0",
		  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36",
		  "sec-ch-ua-platform": "\"Windows\"",
		  "sec-fetch-site": "same-origin",
		  "sec-fetch-mode": "cors",
		  "sec-fetch-dest": "empty",
		  "accept-encoding": "gzip, deflate, br",
		  "accept-language": "en-US,en;q=0.9"
		},
		"remoteAddress": "::1",
		"remotePort": 56440
	  },
	  "http.response": {
		"statusCode": 200,
		"headers": {
		  "access-control-allow-origin": "*",
		  "content-security-policy": "default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests",
		  "cross-origin-embedder-policy": "require-corp",
		  "cross-origin-opener-policy": "same-origin",
		  "cross-origin-resource-policy": "same-origin",
		  "referrer-policy": "no-referrer",
		  "strict-transport-security": "max-age=15552000; includeSubDomains",
		  "x-content-type-options": "nosniff",
		  "x-dns-prefetch-control": "off",
		  "x-download-options": "noopen",
		  "x-frame-options": "SAMEORIGIN",
		  "x-permitted-cross-domain-policies": "none",
		  "x-xss-protection": "0",
		  "cache-control": "no-store, max-age=0",
		  "pragma": "no-cache",
		  "content-type": "application/json; charset=utf-8",
		  "content-length": "17010",
		  "etag": "W/\"4272-HWUm3QHM9GwqiPp5v8WYhSU8TrM\""
		}
	  },
	  "event.duration": 4,
	  "ecs": {
		"version": "1.6.0"
	  },
	  "message": "request completed"
	}

Request for: http.response.statusCode=400

	{"log.level":"info","@timestamp":"2023-07-05T19:35:38.757Z","process":{"pid":12935},"host":{"hostname":"CA-L58347M3"},"http.request":{"id":2,"method":"GET","url":"/api/project/publicSummary?includeCommentOpen=false&includePostCommentOpen=false","query":{"includeCommentOpen":"false","includePostCommentOpen":"false"},"params":{"0":"project/publicSummary"},"headers":{"host":"localhost:3333","connection":"keep-alive","sec-ch-ua":"\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\"","accept":"application/json","sec-ch-ua-mobile":"?0","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36","sec-ch-ua-platform":"\"Windows\"","sec-fetch-site":"same-origin","sec-fetch-mode":"cors","sec-fetch-dest":"empty","accept-encoding":"gzip, deflate, br","accept-language":"en-US,en;q=0.9"},"remoteAddress":"::1","remotePort":56442},"http.response":{"statusCode":400,"headers":{"access-control-allow-origin":"*","content-security-policy":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests","cross-origin-embedder-policy":"require-corp","cross-origin-opener-policy":"same-origin","cross-origin-resource-policy":"same-origin","referrer-policy":"no-referrer","strict-transport-security":"max-age=15552000; includeSubDomains","x-content-type-options":"nosniff","x-dns-prefetch-control":"off","x-download-options":"noopen","x-frame-options":"SAMEORIGIN","x-permitted-cross-domain-policies":"none","x-xss-protection":"0","cache-control":"no-store, max-age=0","pragma":"no-cache","content-type":"application/json; charset=utf-8","content-length":"117","etag":"W/\"75-cKeXtR2e1Kl5Li3pKZ/DhlG4Z3w\""}},"event.duration":3,"ecs":{"version":"1.6.0"},"message":"request completed"}
	{
	  "log.level": "info",
	  "@timestamp": "2023-07-05T19:35:38.757Z",
	  "process": {
		"pid": 12935
	  },
	  "host": {
		"hostname": "CA-L58347M3"
	  },
	  "http.request": {
		"id": 2,
		"method": "GET",
		"url": "/api/project/publicSummary?includeCommentOpen=false&includePostCommentOpen=false",
		"query": {
		  "includeCommentOpen": "false",
		  "includePostCommentOpen": "false"
		},
		"params": {
		  "0": "project/publicSummary"
		},
		"headers": {
		  "host": "localhost:3333",
		  "connection": "keep-alive",
		  "sec-ch-ua": "\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\"",
		  "accept": "application/json",
		  "sec-ch-ua-mobile": "?0",
		  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36",
		  "sec-ch-ua-platform": "\"Windows\"",
		  "sec-fetch-site": "same-origin",
		  "sec-fetch-mode": "cors",
		  "sec-fetch-dest": "empty",
		  "accept-encoding": "gzip, deflate, br",
		  "accept-language": "en-US,en;q=0.9"
		},
		"remoteAddress": "::1",
		"remotePort": 56442
	  },
	  "http.response": {
		"statusCode": 400,
		"headers": {
		  "access-control-allow-origin": "*",
		  "content-security-policy": "default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests",
		  "cross-origin-embedder-policy": "require-corp",
		  "cross-origin-opener-policy": "same-origin",
		  "cross-origin-resource-policy": "same-origin",
		  "referrer-policy": "no-referrer",
		  "strict-transport-security": "max-age=15552000; includeSubDomains",
		  "x-content-type-options": "nosniff",
		  "x-dns-prefetch-control": "off",
		  "x-download-options": "noopen",
		  "x-frame-options": "SAMEORIGIN",
		  "x-permitted-cross-domain-policies": "none",
		  "x-xss-protection": "0",
		  "cache-control": "no-store, max-age=0",
		  "pragma": "no-cache",
		  "content-type": "application/json; charset=utf-8",
		  "content-length": "117",
		  "etag": "W/\"75-cKeXtR2e1Kl5Li3pKZ/DhlG4Z3w\""
		}
	  },
	  "event.duration": 3,
	  "ecs": {
		"version": "1.6.0"
	  },
	  "message": "request completed"
	}

Just programming note:
NestJs-Pino original log for http produces "req/res" for http request/response.
Looking at the produced log again from using "@elastic/ecs-pino-format" with a flag "{convertReqRes: true }", it does produce needed format for http ONLY on "res" like this: "http":{"response":{"status_code":200,"headers":" . However when trying to figure out why the flag "{convertReqRes: true }" does not work for "req" (very strange), finally came across the note that states with using "pino-http" (which is the case for FOM using NestJs-pino). Ref: https://www.elastic.co/guide/en/ecs-logging/nodejs/current/pino.html (see @ bottom).
So it it one step closer but not sure how to solve the "req" part. (Other logger like Winston seems no such limitation stated), but probably the "req" issue could be solved in some other way.

Continue above programming note:
Spent a day, finally can get very close to ecs format but with redundant child-json-object within the log line. Lots of experimenting, but this is probably the best we can have, due to "pino-http" has limitation with "@elastic/ecs-pino-format" flag "{convertReqRes: true }".
Discover a trick with using pino option: "customSuccessObject(req, res, val)". With this to get the req/res then return them from the function itself without modifying it will make "request" object shows up in ecs "http" .object.
This is the working configuration:
  const logParams: Params = {
    pinoHttp: [{
        // Note: following combination of options are probably the best I can find to
        // produce closet ecs format log with 'pino-http'.
        // pino-http with this flag: {convertReqRes: true } has limitation for 'req'
        // see https://www.elastic.co/guide/en/ecs-logging/nodejs/current/pino.html
        // However, after many experiments, found with "customSuccessObject", 'req' will re-inserted
        // into ecs http object but still leaving original 'req' and can't be removed.
      ...ecsFormat({convertReqRes: true }), // default ecs options
      level: getLogLevel(),
      customSuccessObject(req, res, val) {
        const { responseTime } = val
        const event = {duration: responseTime} // customize 'responseTime' as ecs event.duration object.
        return { req, res, event }
      },
    },
    pino.multistream(streams)] // multistream so can have stdout & file
  }

This is the produced log:
{"log.level":"info","@timestamp":"2023-07-13T06:23:11.212Z","process":{"pid":2795},"host":{"hostname":"CA-L58347M3"},"req":{"id":1,"method":"GET","url":"/api/awsCognitoConfig","query":{},"params":{"0":"awsCognitoConfig"},"headers":{"host":"localhost:3333","connection":"keep-alive","sec-ch-ua":"\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\"","accept":"application/json","sec-ch-ua-mobile":"?0","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36","sec-ch-ua-platform":"\"Windows\"","sec-fetch-site":"same-origin","sec-fetch-mode":"cors","sec-fetch-dest":"empty","accept-encoding":"gzip, deflate, br","accept-language":"en-US,en;q=0.9"},"remoteAddress":"::1","remotePort":49502},"event":{"duration":1,"id":1},"ecs":{"version":"1.6.0"},"http":{"version":"1.1","request":{"method":"GET","headers":{"host":"localhost:3333","connection":"keep-alive","sec-ch-ua":"\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\"","accept":"application/json","sec-ch-ua-mobile":"?0","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36","sec-ch-ua-platform":"\"Windows\"","sec-fetch-site":"same-origin","sec-fetch-mode":"cors","sec-fetch-dest":"empty","accept-encoding":"gzip, deflate, br","accept-language":"en-US,en;q=0.9"}},"response":{"status_code":200,"headers":{"access-control-allow-origin":"*","content-security-policy":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests","cross-origin-embedder-policy":"require-corp","cross-origin-opener-policy":"same-origin","cross-origin-resource-policy":"same-origin","referrer-policy":"no-referrer","strict-transport-security":"max-age=15552000; includeSubDomains","x-content-type-options":"nosniff","x-dns-prefetch-control":"off","x-download-options":"noopen","x-frame-options":"SAMEORIGIN","x-permitted-cross-domain-policies":"none","x-xss-protection":"0","cache-control":"no-store, max-age=0","pragma":"no-cache","content-type":"application/json; charset=utf-8","content-length":"536","etag":"W/\"218-fYg4GM9htH267kF+zyKIFNn3+gc\""},"body":{"bytes":536}}},"url":{"full":"http://localhost:3333/api/awsCognitoConfig","path":"/api/awsCognitoConfig","domain":"localhost"},"client":{"address":"::1","ip":"::1","port":49502},"user_agent":{"original":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"},"message":"request completed"}

Developer's note: Matthew's reply for the log we sent:

Some comments to keep you busy:

{
  "log.level": "info",
  "@timestamp": "2023-07-14T19:53:39.210Z",
  // Process fields are not enabled for most indices. Needed?
  "process": {
    "pid": 29534
  },
  "host": {
    "hostname": "CA-L58347M3"
  },
  // Fields should be in http.request.* or url.*
  "req": {
    // Unique?
    "id": 3,
    "method": "GET",
    // url.original (recommend adding domain)
    "url": "/api/project/publicSummary?includeCommentOpen=false&includePostCommentOpen=false",
    // This (and other things) can be parsed out from url.original by the lambda (urlExplode)
    "query": {
      "includeCommentOpen": "false",
      "includePostCommentOpen": "false"
    },
    "params": {
      "0": "project/publicSummary"
    },
    // Generally, we don't store headers
    // Many of these go other locations
    "headers": {
      "host": "localhost:3333",
      "connection": "keep-alive",
      "sec-ch-ua": "\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\"",
      "accept": "application/json",
      "sec-ch-ua-mobile": "?0",
      "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36",
      "sec-ch-ua-platform": "\"Windows\"",
      "sec-fetch-site": "same-origin",
      "sec-fetch-mode": "cors",
      "sec-fetch-dest": "empty",
      "accept-encoding": "gzip, deflate, br",
      "accept-language": "en-US,en;q=0.9"
    },
    "remoteAddress": "::1",
    "remotePort": 40960
  },
  "event": {
    "duration": 1,
    // Unique?
    "id": 3
  },
  "ecs": {
    // More like "8.8.0"
    "version": "1.6.0"
  },
  "http": {
    "version": "1.1",
    "request": {
      "method": "GET",
    // Generally, we don't store headers
    // Many of these go other locations
      "headers": {
        "host": "localhost:3333",
        "connection": "keep-alive",
        "sec-ch-ua": "\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\"",
        "accept": "application/json",
        "sec-ch-ua-mobile": "?0",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-site": "same-origin",
        "sec-fetch-mode": "cors",
        "sec-fetch-dest": "empty",
        "accept-encoding": "gzip, deflate, br",
        "accept-language": "en-US,en;q=0.9"
      }
    },
    "response": {
      "status_code": 400,
      // Generally, we don't store headers
      // Many of these go other locations
      "headers": {
        "access-control-allow-origin": "*",
        "content-security-policy": "default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests",
        "cross-origin-embedder-policy": "require-corp",
        "cross-origin-opener-policy": "same-origin",
        "cross-origin-resource-policy": "same-origin",
        "referrer-policy": "no-referrer",
        "strict-transport-security": "max-age=15552000; includeSubDomains",
        "x-content-type-options": "nosniff",
        "x-dns-prefetch-control": "off",
        "x-download-options": "noopen",
        "x-frame-options": "SAMEORIGIN",
        "x-permitted-cross-domain-policies": "none",
        "x-xss-protection": "0",
        "cache-control": "no-store, max-age=0",
        "pragma": "no-cache",
        "content-type": "application/json; charset=utf-8",
        "content-length": "117",
        "etag": "W/\"75-cKeXtR2e1Kl5Li3pKZ/DhlG4Z3w\""
      },
      // Just bytes
      "body": {
        "bytes": 117
      }
    }
  },
  "url": {
    // Recommned: original and the parser to explode
    "full": "http://localhost:3333/api/project/publicSummary?includeCommentOpen=false&includePostCommentOpen=false",
    "path": "/api/project/publicSummary",
    "query": "includeCommentOpen=false&includePostCommentOpen=false",
    "domain": "localhost"
  },
  "client": {
    "address": "::1",
    "ip": "::1",
    "port": 40960
  },
  "user_agent": {
    "original": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"
  },
  "message": "request completed"
}

Just leave a trace for branches information (if we need them in future):

feat/331-pino-ecs--rotate-stream
contains:
* still use "nestjs-pino" for logging
* log to a file stream (and console output) using pino.multistream.
* basic log rotation
* output initial (maybe old version) ECS format log with "ecs-pino-format"

feat/331-pino-ecs--rotate-stream-custom-ecs-exp
contains:
* same as feat/331-pino-ecs--rotate-stream branch but
* with custom code to overcome/tweek limitation of internal pinoHttp that could not
output proper ECS format for "req" => "http.request" (but still not fully)


Switch player between server

Hey!
I found a small bug:

Looking to the files there should be the name of the server instead of %2.
The toolbar.js contains:
i18n("Move '%1' from '%2' to this server?", player.name, player.server),
And on the browserconsole is a value for player.server.
Thats why I expect the error in i18n.js:
function i18n(str, val, val2) {
    if (undefined==translation || !(str in translation) || translation[str]==="") {
        return undefined==val ? str : undefined==val2 ? str.replace("%1", val) : str.replace("%1", val).replace("%2", val2);
    }
    return undefined==val ? translation[str] : translation[str].replace("%1", val);
}

I'm not sure, but the second return-statement is missing the replacement of the second value and like this it should work well:
function i18n(str, val, val2) {
    if (undefined==translation || !(str in translation) || translation[str]==="") {
        return undefined==val ? str : undefined==val2 ? str.replace("%1", val) : str.replace("%1", val).replace("%2", val2);
    }
    return undefined==val ? translation[str] : undefined==val2 ? str.replace("%1", val) : str.replace("%1", val).replace("%2", val2);
}

I don't know how I can test this, so maybe my idea is wrong.
And for the future, how can I test it? Just start a webserver serving the whole repo?
Thank you very much for your incredible work!!

Thanks for the analysis, spot on. Fixed now.
To test, I just install the dev version of Material. I have it sym-linked into the top-level Plugins folder.

Amazing!
Okay, that works! Thank you!


BIG-4047 - Use less re

Initially the intent of this ticket was to replace the use of urllib with a preference for url-py, but it turns out:

there were much more dominant factors (re use)
url-py currently lacks python 3 support, which reppy currently maintains

I did try benchmarking the use of url-py, and depending on how we feel (or its future python 3 support), we could merge that later:

Revision
Functionality
Average
Rate / s
Speedup

9d63a15e
-
3.54e-05
28248.05
1

1e92f23a
remove hot-path re
1.22e-05
81477.49
2.88

1a9eb085
drop urlparse
1.03e-05
96156.62
3.4

@matt-peters -- I imagine you might be interested in this
@lindseyreno @arora-richa @b4hand

:shipit:


Geowave vagrant

I will merge once travis finishes.  It kind of sucks that the diff for the parent pom shows the files as being completely different...  I added one plugin and ran the formatter.  I'm not complaining about the additional lines of code though...


Allow for the use of ECMAScript 6 classes

Right now this fails with org.auraframework.util.json.JsonStreamReader$JsonStreamParseException: Reserved word used as a literal [2, 15]: 'class': Source
class may be a reserved word but it is valid to declare them in the helper and developers should not be blocked from doing so.

Supporting ES6 and ES7 would be awesome. If we can stretch further and add support for Typescript, that would be a great way to develop components.

@datasert see #49


must add a section to your top level README.md file, that contains information about the used base image

section added https://github.com/eclipse-tractusx/portal-frontend-registration/pull/19


Improve scroll perf of DotListView

Noticed the reloadData was eating a ton of perf. Also added a border so labels similar to background color are noticeable.

@rnystrom This may not be necessary, but removing this prevents recalculating the number of dots that fit on the current orientation on orientation change.
Sent with GitHawk

Oh interesting. We could follow up with checking if the collection view frame is changing, then reload. @joerocca wanna PR that?
Sent with GitHawk

@rnystrom Yes!
Sent with GitHawk


update the LOS data taken from Baumgardt website

Brings the data taken from the Baumgardt-website table of velocity dispersions up to date, mostly affecting the LOS profiles by adding a few extra profiles for some specific clusters.
PMs are not changed much as the major update was to include the HACKS survey, which was added manually a little while ago.

While all 40 clusters have been "touched" here, the reality is that the majority are unchanged, but updates to the data gathering script required all to be regenerated.


Budget Application

We now ask you to hand in the official budget application. You can download the form . For further details please consult the Budget Owner’s Guide.
Please hand in your budget application not later than 5 February 2021.
If your budget application is formally in order and the Board agrees with the goals and milestones outlined, then the stated amount will be confirmed. Budgets can only be used after their confirmation by the Board and when you as the budget owner have signed a budget agreement.

done


[coro] add condition variable

Why

What is changing
add condition variable
note: the TEST_F(ConditionVariableTest, testMultiWait) can not passed on asan check. need fix it before merge

This contains spin lock. It looks redundant.

This contains spin lock. It looks redundant.

already rebased


feat(context): expose context to main method

To allow for selection of context-specific implementations at runtime
Also added /info.json endpoint to report basic runtime info, such as the currently serving platform.
Should pave the way for implementing #230
Related Issues
Fixes: #232
Please ensure your pull request adheres to the following guidelines:

[X] make sure to link the related issues in this description
[X] when merging / squashing, make sure the fixed issue references are visible in the commits, for easy compilation of release notes

:tada: This PR is included in version 2.3.0 :tada:
The release is available on:

v2.3.0
v2.3.0
GitHub release

Your semantic-release bot :package::rocket:


Question: what changed to cause webVitals to be undefined when loading  https://unpkg.com/web-vitals as previously documented?

Hello - I provide a service and encouraged several users to consume the Web Vitals library as documented. I've been receiving complaints of an error that users are seeing who have loaded the Web Vitals library.
webVitals is undefined

I've pinpointed a common denominator that those who have this issue are using the previous example from the docs:
<!-- Without the `?module` param, the UMD version is loaded and sets the `webVitals` global -->
<script defer src="https://unpkg.com/web-vitals"></script>
<script>
  addEventListener('DOMContentLoaded', function() {
    webVitals.getCLS(console.log);
    webVitals.getFID(console.log);
    webVitals.getLCP(console.log);
  });
</script>

Which has been replaced with this:
<script>
  (function() {
    var script = document.createElement('script');
    script.src = 'https://unpkg.com/web-vitals/dist/web-vitals.iife.js';
    script.onload = function() {
      webVitals.getCLS(console.log);
      webVitals.getFID(console.log);
      webVitals.getLCP(console.log);
    }
    document.head.appendChild(script);
  }())
</script>

I did reproduce the error and replacing it with the new snippet fixes the issue.
It seems that this change occurred in 9f9a2cc29. From my perspective this is a breaking change. Am I mistaken? What changed in https://unpkg.com/web-vitals in which the library doesn't support the original example? I'd love to have this data to pass along to my users and so I can apologize that their implementation unexpectedly stopped working and explain why.
I'm probably missing something... some announcement, etc. Or at least was there a PR that explained this change?
Any info that I can pass along would be appreciated.

Hey @adamhenson, sorry this is affecting you. Unfortunately I don't think I have a lot of good options to help you, but I'll explain what happened and hopefully we can talk through the best solution.
In v3 I updated the package to declare type: module to support Node 16+, which means that any file in the repo that is not a module needs to have a .cjs extension (for CommonJS).
The change was essentially this:
-"main": "dist/web-vitals.umd.js",
+"main": "dist/web-vitals.umd.cjs",

This shouldn't have affected anyone who was loading the library via the URLhttps://unpkg.com/web-vitals; however, I discovered recently (from an internal issue filed), that the unpkg.com CDN does not set the proper MIME type for .cjs files, which prevents the browser from executing these scripts, and so that's why your users as seeing this error.

I've reached out to unpkg.com and they seem willing to fix, but I don't think a fix has been rolled out just yet.
Unfortunately I cannot release a version without the .cjs URL or that would cause errors for people consuming the library in Node.js 14 (which is still in LTS).
So I think your best option is to update your service to use the IIFE version as currently documented (which contains a .js extension). Alternatively you could use the module version, which honestly I'd recommend anyway since all browser that support these metrics also support module scripts.
Hopefully unpkg.com will update soon and this will no longer be an issue, but if you need an immediate fix, I'd recommend updating.

From my perspective this is a breaking change. Am I mistaken?

Unfortunately, if you depend on an unversioned URL like https://unpkg.com/web-vitals then you're opening yourself up to breaking changes. I've tried to keep all breaking changes to a minimum (and make most things backwards compatible), but we have to be able to make some breaking changes from time to time, and we communicate those changes via the major version bump.
Admittedly, the documentation does explicitly reference these unversioned URLs, so it's understandable why someone would make that mistake. (I'll take the blame for that.)
I think it probably makes sense to update the CDN examples to use a URL like:
https://unpkg.com/web-vitals@^3.0.0?module
What do you think? I know that doesn't prevent your current situation, but do you think that would have helped if I had done that in the past?

Hi @philipwalton - thanks so much for the clarification!
I'll just relay the message to use the new example and justify it with the unpkg.com issue and the fact that we're referencing the unversioned URL. I didn't feel 100% confident in referencing it that way, but I didn't really know what versioning patterns would make sense. The documentation has changed a lot from where it was when I was referencing it, so I think it's fine now - there is a note about using a pinned version I believe. I'll just make a note in the example that I have to reference the GitHub project and choose a version that makes the most sense to you.
Thanks again for the quick, in-depth answer. That's all I was really asking for - hence closing this. And thanks for all your work on this project. Interesting how widely adopted / marketed it has become.

And just to be clear...

What do you think? I know that doesn't prevent your current situation, but do you think that would have helped if I had done that in the past?

I think it's much clearer now, and the documentation probably doesn't need to be changed. It could be helpful to show example URL patterns for those that aren't super familiar with unpkg.com (like me :embarrassed:)

Thanks. Just in case it's useful I added these changes to the README to clarify: https://github.com/GoogleChrome/web-vitals/commit/5d7a0feae5100ef5e5f79741537817e233bf7f2f

Thanks so much @philipwalton

FYI: I just discovered there's an unpkg field that I can explicitly set in package.json, so this should fix the issue for anyone else: https://github.com/GoogleChrome/web-vitals/pull/261

Excellent, thanks @philipwalton.


Prevent AutoLayout from causing an invalidation loop on WinUI

Fixes https://github.com/unoplatform/uno.toolkit.ui/issues/1131
Bugfix
What is the current behavior?
In some situations, it was possible to crash the UI in WinUI, launching an invalidation loop.
What is the new behavior?
Now works properly on both WinUI and Uno. Child elements are not remeasured during arrange phase, we're just using their desired size to layout them.
PR Checklist
Please check if your PR fulfills the following requirements:

[X] Tested code with current supported SDKs
[ ] Tested the changes where applicable:

[ ] UWP
[X] WinUI
[ ] iOS
[ ] Android
[ ] WASM
[ ] MacOS
[X] Skia

[ ] Updated the documentation as needed:

[ ] General Doc Update
[ ] Controls Doc Update
[ ] Extensions Doc Update
[ ] controls-styles.md
[ ] lightweight-styling.md (LightWeight Styling Resource Keys)

[X] Runtime Tests and/or UI Tests for the changes have been added (for bug fixes / features) (if applicable)
[X] Contains NO breaking changes
[X] Associated with an issue (GitHub or internal)
[X] Commits must be following the Conventional Commits specification.

@Mergifyio backport release/stable/6.0


Prevent people from adding an Additive several times

(Also: There's Gorgonzola, and Gorgone Hugo)

You seem to really don't like gorgonzola! :p

La dose fait le poison - Paracelse :-)


Keep the same behavior with UI, fix #2226

Coverage remained the same at 56.678% when pulling 9d3cb5d4b6380f4b562e1e76d9b28ba14e935aa3 on ywk253100:170606_user_api into 39b4055d4794bdcacd451c947b85b9285f9e2a1b on vmware:master.


⚠ PrivateHD has degraded performance

In 8c17b25, PrivateHD ($PHD) experienced degraded performance:

HTTP code: 200
Response time: 1480 ms

Resolved: PrivateHD performance has improved in de007e0.


rspec-rails is no longer in sync with other gems version

So we do not want to generate doc for the same version for rspec-rails
at the same time as the other rspec gems with yard documentation
Related:

https://github.com/rspec/rspec-rails/pull/2298

Little bump on this one too. ❤

Oh no good idea. I will make a PR.


Huh?

UX 101 - put a button in both commonly used places so there isn't as much friction.

Ah.


Error creating the dataset

Hi, I'm trying to follow the steps in the README to create the dataset. The first two steps seemed to work ok, but then I hit this error in combine_and_split. Can you tell me how to fix this?
350000 cc articles done, 2677/10200 clusters done
360000 cc articles done, 2706/10200 clusters done
Traceback (most recent call last):
File "combine_and_split.py", line 127, in
main(parser.parse_args())
File "combine_and_split.py", line 109, in main
clusters, args.cc_articles, id_to_cluster_idx, tmp_clusters_path
File "combine_and_split.py", line 38, in add_cc_articles_to_clusters
c.setdefault('cc_articles_filled', [])
AttributeError: 'NoneType' object has no attribute 'setdefault'

Will look into this ASAP!

Not 100% sure still why your error was caused, probably due to an article from Common Crawl stored multiple times. I could reproduce it by inserting duplicate articles. I made some changes in combine_and_split.py that should prevent that bug in such a case. Also found another bug in combine_and_split.py (only if --max-cluster-size was used before). Let me know if that fixes it for you.

I get this error on the first step
Traceback (most recent call last):
  File "extract_wcep_articles.py", line 142, in <module>
    main(parser.parse_args())
  File "extract_wcep_articles.py", line 118, in main
    write_jsonl(articles, outpath, mode='a')
NameError: name 'write_jsonl' is not defined

I get this error on the first step
Traceback (most recent call last):
File "extract_wcep_articles.py", line 142, in
main(parser.parse_args())
File "extract_wcep_articles.py", line 118, in main
write_jsonl(articles, outpath, mode='a')
NameError: name 'write_jsonl' is not defined

Is fixed now.


Add verse of the day support

When clicking the browser action button (extension button in toolbar area), the verse of the day from biblegateway.com should come up.

Work on this topic has been added on the `verseOfTheDay branch, help is still wanted and it's still a good first issue.

Done!


[Vulkan] Adding tags to shader modules via VK_EXT_debug_utils

Description
As of RenderDoc 1.15, it can show disassembled source code of Vulkan shader modules. It is useful to tag a shader module with the original shader source code and other textual information provided by the app.
App usage example
const VkDebugUtilsObjectTagInfoEXT ti = {
  .sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
  .objectType = VK_OBJECT_TYPE_SHADER_MODULE,
  .objectHandle = shaderModule,
  .tagName = 0,							// a tag ID understandable by RenderDoc
  .tagSize = shaderSourceCodeLength,
  .pTag = shaderSourceCodeString
};
vkSetDebugUtilsObjectTagEXT(device_, &ti);

Environment

RenderDoc version: 1.15
Operating System: Windows
Graphics API: Vulkan

The source can already be passed in as part of the SPIR-V module itself, along with other debug information like variable names etc. I do not want to add an alternate way of specifying this that only covers part of the problem and requires specifying how e.g multiple files will be passed etc.


Genuary: random Discord URL search params

What happened?
Every day the Genuary workflow is being triggered for detecting differences in the URLs fetched from Discord. This seems to have to do with these URLs apparently adorning this random search params.
Perhaps by stripping the randomizing search params, the URLs will still function as intended.

Where this incident begun: https://github.com/EthanThatOneKid/acmcsuf.com/pull/915


[2.x] Added unsetCache function with unit test

Duplicate of #38 with unit test for the unsetCache function. Original function was created by @antonkomarev from the unity of @cybercog.

With tests it looks better :+1:


Specified argument was out of the range of valid values. Parameter name: count

I write a site with asp.net core 2.0, sometimes following error raise(rarely).

An unhandled exception has occurred: Specified argument was out of the range of valid values. Parameter name: count

StackTrace:

System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: count at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.PipeCompletion.ThrowFailed() at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.GetResult(ReadResult& result) at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.IReadableBufferAwaiter.GetResult() at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.ReadableBufferAwaitable.GetResult() at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.d__24.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame1.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown --- at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame1.d__2.MoveNext()

I`m not sure, but this error probably after I migrate to asp.net core 2.0.

/cc @pakrym

@davidfowl the actual location is, exception was rethrown by pipe. Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame1.d__2.MoveNext()

I'm wrong, current version of pipe does not have ExceptionDispatchInfo.Throw so I couldn't say where exception came from, just that it was rethrown by pipe.

@MohammadAkbari Were you able to find out what the issue was?

I'm seeing this exception from time to time too and I can't consistently replicate it. Mine seems to happen when accessing the httpContext.Request.Form

I've just hit this in an automated regression test that passed at least the last few dozen times. It's the latest .NET Core 2.0 runtime on Windows.
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: count
   at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.PipeCompletion.ThrowFailed()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.GetResult(ReadResult& result)
   at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.IReadableBufferAwaiter.GetResult()
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.<ReadAsync>d__22.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.FrameRequestStream.<ReadAsyncInternal>d__21.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.FrameRequestStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at System.IO.StreamReader.ReadBuffer()
   at System.IO.StreamReader.ReadLine()

The test setup is a bit shaky, and I don't think I'll be any help with reproducing it, but throwing a quick note up here anyway :-)

I tracked my problem down to a couple of query string parameters that I was encrypting. I was encoding the values but my guess is that there were some characters that caused the problem. I was never able to capture the state completely and have sense changed my implementation.

Thanks folks. @nblumhardt if you have any traction with the reproduction of the issue, please let us know. Thanks!

Hello,
This issue happens on kestrel (doesn't have on httpsys) and it seems I can reproduce it:
assume ajax request to server to /a/b returns:
{"1":"Trace","2":"Debug","3":"Information","4":"Warning","5":"Error","6":"Critical","7":"None","8":"Security","9":"Management","10":"UnExpected"}
then replay this request 8-10 times fast in a row and at least 1-2 times returns this error

also it seems to occur in different states of kestrel execution and be triggered different stacktraces.
Here is first one:
warn: Microsoft.AspNetCore.Server.Kestrel[0]       Connection processing ended abnormally. System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: count    at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.PipeCompletion.ThrowFailed()    at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.GetResult(ReadResult& result)    at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.IReadableBufferAwaiter.GetResult()    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.<ConsumeAsync>d__24.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame1.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame1.<ProcessRequestsAsync>d__2.MoveNext()
here is second one:
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.       Parameter name: count          at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.PipeCompletion.ThrowFailed()          at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.GetResult(ReadResult& result)          at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.IReadableBufferAwaiter.GetResult()          at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.<ReadAsync>d__22.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.FrameRequestStream.<ReadAsyncInternal>d__21.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at System.IO.StreamReader.<ReadBufferAsync>d__97.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at System.IO.StreamReader.<ReadAsyncInternal>d__64.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.WebUtilities.FormReader.<BufferAsync>d__41.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.WebUtilities.FormReader.<ReadNextPairAsyncImpl>d__34.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.WebUtilities.FormReader.<ReadFormAsync>d__43.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.Http.Features.FormFeature.<InnerReadFormAsync>d__18.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgeryTokenStore.<GetRequestTokensAsync>d__3.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery.<ValidateRequestAsync>d__9.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.ValidateAntiforgeryTokenAuthorizationFilter.<OnAuthorizationAsync>d__3.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeFilterPipelineAsync>d__17.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeAsync>d__15.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.Builder.RouterMiddleware.<Invoke>d__4.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.<Invoke>d__3.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)          at Microsoft.AspNetCore.ResponseCaching.ResponseCachingMiddleware.<Invoke>d__9.MoveNext()       --- End of stack trace from previous location where exception was thrown ---          at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()          at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)...

Want to go on record saying I was also seeing this intermittent issue and we too were using Request.Form


VS2017 Update 5 causing ResXResourceManager window to not load

After recently updating to the latest VS 2017 update, ResX Manager has stopped loading in the resources from the files in my projects.
Some files are loaded and appear in the left-hand sidebar but when clicking on them to view the resources, the keys are shown in a column but has an un-headered column next to it with nothing in.

Maybe you are using lazy solution loading? RXRM can only show items of loaded projects.

@jamesmcroft any more details on this?

@tom-englert apologies for not getting back in touch sooner.
The project is not lazy loaded. I haven't checked for output error messages but can do that.
I'm currently away from my office PC but will be returning on the 2nd January so can confirm then.


Intel D455 undetected by Jetson Xavier NX

Required Info

Camera Model
D400

Firmware Version
<IP_ADDRESS>

Operating System & Version
Linux (Ubuntu 18.04)

Kernel Version (Linux Only)
Jetpack 4.4 (L4T 32.4.3)

Platform
NVIDIA Jetson Xavier NX

SDK Version
2.45.0

Language
-

Segment
Robot

After following the guide on installation for Jetson for patching the kernel and building with:
cmake ../ \
    -DBUILD_EXAMPLES=on \
    -DBUILD_GRAPHICAL_EXAMPLES=on \
    -DBUILD_PYTHON_BINDINGS=on \
    -DBUILD_WITH_CUDA=true \
    -DCMAKE_BUILD_TYPE=release \
    -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc \
    -DFORCE_RSUSB_BACKEND=off \
    -DOpenGL_GL_PREFERENCE=GLVND

when I plug my D455, neither realsense-viewer nor rs-enumerate-devices are able to detect the camera.
On the same setup, my T265 is detected.
Also, D455 is detected on PC with the same version of librealsense, so it seems to be a problem specific to Jetson.

Hi @RicLincio  The build flags -DBUILD_EXAMPLES and -DBUILD_GRAPHICAL_EXAMPLES determine whether the SDK's examples and tools (including realsense-viewer) and the support for them are built or not when librealsense is installed.  If the flags are set to false then the SDK's examples and tools are not included in the build.
If you were building for a 'headless' configuration (a computer without a display screen) then you could set -DBUILD_EXAMPLES to true to include support for text based non-graphical examples and tools such as rs-enumerate-devices, and set -DBUILD_GRAPHICAL_EXAMPLES to false so that examples and tools that use graphics (such as the Viewer) are not built.  Otherwise, if you want the Viewer to be included in the build then set DBUILD_GRAPHICAL_EXAMPLES to true.

Hello @MartyG-RealSense, you're right.
Unfortunately I made I mistake in reporting the cmake configuration. The actual command I used is
cmake ../ \
    -DBUILD_EXAMPLES=on \
    -DBUILD_GRAPHICAL_EXAMPLES=on \
    -DBUILD_PYTHON_BINDINGS=on \
    -DBUILD_WITH_CUDA=true \
    -DCMAKE_BUILD_TYPE=release \
    -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc \
    -DFORCE_RSUSB_BACKEND=off \
    -DOpenGL_GL_PREFERENCE=GLVND

otherwise, as you said yourself, I wouldn't be able to open realsense-viewer or rs-enumerate-devices, which I can do: without those, I wouldn't have been able to report the real problem, i.e. the undetected D455.

As you are building with CMake, it may be worth looking at the Jetson installation guide in the link below that installs librealsense from source code along with the Python wrapper and targets Python 3.6.
https://github.com/IntelRealSense/librealsense/issues/6964#issuecomment-707501049
This guide has worked consistently for Jetson users, including Xavier NX, and once solved a case (in the link below) where D455 was not being detected.
https://github.com/IntelRealSense/librealsense/issues/7766#issuecomment-726882630

As you are building with CMake, it may be worth looking at the Jetson installation guide in the link below that installs librealsense from source code along with the Python wrapper and targets Python 3.6 (if you are not using Python 3.6, edit the '3'6' number in the procedure to the Python version number that you are using).
#6964 (comment)

I followed this guide already, without success. The main point here is just updating cmake. I tried with version 3.13.0 as indicated at point one, but nothing changed.

This guide has worked consistently for Jetson users, including Xavier NX, and once solved a case (in the link below) where D455 was not being detected.
#7766

The detection problem seems to be solved with the same guide above, so this is not an additional way of solving the issue.

Hi @RicLincio  Can you confirm whether your D455 detection problem was solved using https://github.com/IntelRealSense/librealsense/issues/7766 please?

Hi @RicLincio Can you confirm whether your D455 detection problem was solved using #7766 please?

No, my problem has not been solved with this guide. In fact that is not even a guide, just a bunch of tips, none of which seem to apply to my case. My compilation seems to be successful since the executables are working with T265, but the problem with D455 is still there.

Do you have the D455 and T265 plugged into the Jetson at the same time?  If so, can the D455 be detected if you unplug the T265 and boot the Jetson only with the D455?

Do you have the D455 and T265 plugged into the Jetson at the same time? If so, can the D455 be detected if you unplug the T265 and boot the Jetson only with the D455?

No, I tried with both and with each singularly, the result is always the same: T265 detected, D455 not.

Is it able to detect D455 if you follow the official Jetson guide exactly (for example, not changing the CMake process from the one described in the guide).
sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev -y
./scripts/setup_udev_rules.sh
mkdir build && cd build
cmake .. -DBUILD_EXAMPLES=true -DCMAKE_BUILD_TYPE=release -DFORCE_RSUSB_BACKEND=false -DBUILD_WITH_CUDA=true && make -j$(($(nproc)-1)) && sudo make install

Although the above process does not install Python support, at this point the most important goal is to achieve detection of the D455 at all.
You could also test installing with Debian packages using the information for doing so in the guide instead of building with CMake if you have not tried doing so already.

Hi @RicLincio  Do you require further assistance with this case, please?  Thanks!

Is it able to detect D455 if you follow the official Jetson guide exactly (for example, not changing the CMake process from the one described in the guide).
sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev -y
./scripts/setup_udev_rules.sh
mkdir build && cd build
cmake .. -DBUILD_EXAMPLES=true -DCMAKE_BUILD_TYPE=release -DFORCE_RSUSB_BACKEND=false -DBUILD_WITH_CUDA=true && make -j$(($(nproc)-1)) && sudo make install

Although the above process does not install Python support, at this point the most important goal is to achieve detection of the D455 at all.
You could also test installing with Debian packages using the information for doing so in the guide instead of building with CMake if you have not tried doing so already.

Yes, please, but let me try this out first.

Okay, no problem @RicLincio if you require more time for further testing.  Thanks for the update!

Is it able to detect D455 if you follow the official Jetson guide exactly (for example, not changing the CMake process from the one described in the guide).
sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev -y
./scripts/setup_udev_rules.sh
mkdir build && cd build
cmake .. -DBUILD_EXAMPLES=true -DCMAKE_BUILD_TYPE=release -DFORCE_RSUSB_BACKEND=false -DBUILD_WITH_CUDA=true && make -j$(($(nproc)-1)) && sudo make install

Although the above process does not install Python support, at this point the most important goal is to achieve detection of the D455 at all.

This strategy with standard installation is not working. The same conditions are met: T265 is detected, D455 is not, regardless of having only one or both plugged.
When launching realsense-viewer, I collect these messages on the terminal, after connecting the D455:
user@xavier:~$ realsense-viewer
 21/07 10:24:46,471 WARNING [547792506656] (ds5-factory.cpp:1127) DS5 group_devices is empty.
 21/07 10:25:25,518 ERROR [547792506656] (types.h:315) get_dev_capabilities: Cannot open '/dev/video1 Last Error: Device or resource busy
 21/07 10:25:25,519 ERROR [547792506656] (types.h:315) get_dev_capabilities: Cannot open '/dev/video2 Last Error: Device or resource busy
 21/07 10:25:25,520 ERROR [547792506656] (types.h:315) get_dev_capabilities: Cannot open '/dev/video0 Last Error: Device or resource busy
 21/07 10:25:25,531 WARNING [547792506656] (ds5-factory.cpp:1127) DS5 group_devices is empty.
 21/07 10:25:30,547 WARNING [547792506656] (ds5-factory.cpp:1127) DS5 group_devices is empty.

You could also test installing with Debian packages using the information for doing so in the guide instead of building with CMake if you have not tried doing so already.

This doesn't solve the problem. The same behaviour as above is observed.

Do the results on Jetson change if you downgrade to firmware <IP_ADDRESS> on the D455, which is one version older than the currently newest one and is also the recommended firmware for SDK 2.45.0?
https://dev.intelrealsense.com/docs/firmware-releases#section-d400-series-firmware-downloads

Same problem here with official librealsense version 2.47 and D455 on Jetson Xavier NX

@RicLincio @RicLincio  Does the USB insertion sound effect in Ubuntu ever trigger if you unplug the camera, wait a couple of seconds and then re-insert the connector, repeating this up to 10 times?

Do the results on Jetson change if you downgrade to firmware <IP_ADDRESS> on the D455, which is one version older than the currently newest one that you have installed in the camera and is also the recommended firmware for SDK 2.45.0?
https://dev.intelrealsense.com/docs/firmware-releases#section-d400-series-firmware-downloads

No, results are the same.

@RicLincio @RicLincio Does the USB insertion sound effect in Ubuntu ever trigger if you unplug the camera, wait a couple of seconds and then re-insert the connector, repeating this up to 10 times?

No idea, I don't have an audio device available. I think it is more relevant checking the system messages with dmesg
[   46.720629] usb 2-3.3: new SuperSpeed USB device number 4 using tegra-xusb
[   46.742114] usb 2-3.3: New USB device found, idVendor=8086, idProduct=0b5c
[   46.742136] usb 2-3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   46.742144] usb 2-3.3: Product: Intel(R) RealSense(TM) Depth Camera 455
[   46.742156] usb 2-3.3: Manufacturer: Intel(R) RealSense(TM) Depth Camera 455
[   46.742214] usb 2-3.3: SerialNumber:<PHONE_NUMBER>66
[   46.749737] uvcvideo: Found UVC 1.50 device Intel(R) RealSense(TM) Depth Camera 455  (8086:0b5c)
[   46.758960] uvcvideo: Unable to create debugfs 2-4 directory.
[   46.759209] uvcvideo 2-3.3:1.0: Entity type for entity Intel(R) RealSense(TM) Depth Ca was not initialized!
[   46.759434] uvcvideo 2-3.3:1.0: Entity type for entity Processing 2 was not initialized!
[   46.759580] uvcvideo 2-3.3:1.0: Entity type for entity Camera 1 was not initialized!
[   46.760040] input: Intel(R) RealSense(TM) Depth Ca as /devices/3610000.xhci/usb2/2-3/2-3.3/2-3.3:1.0/input/input6
[   46.761577] uvcvideo: Found UVC 1.50 device Intel(R) RealSense(TM) Depth Camera 455  (8086:0b5c)
[   46.765715] uvcvideo: Unable to create debugfs 2-4 directory.
[   46.765941] uvcvideo 2-3.3:1.3: Entity type for entity Processing 7 was not initialized!
[   46.766150] uvcvideo 2-3.3:1.3: Entity type for entity Extension 8 was not initialized!
[   46.766304] uvcvideo 2-3.3:1.3: Entity type for entity Camera 6 was not initialized!
[   54.216338] usb 2-3.3: usb_suspend_both: status 0
[   54.272289] usb 2-3: usb_suspend_both: status 0
[   54.272535] usb usb2: usb_suspend_both: status 0

Another RealSense user who had a non-detecting camera on Ubuntu (an L515, not a D455) reported today that their problem was solved if they disabled USB auto-suspend.
https://github.com/IntelRealSense/librealsense/issues/9455#issuecomment-884781316

Another RealSense user who had a non-detecting camera on Ubuntu (an L515, not a D455) reported today that their problem was solved if they disabled USB auto-suspend.
#9455 (comment)

The command sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/&usbcore.autosuspend=-1 /' /etc/default/grub fails because there's no file /etc/default/grub. Any tip on how to avoid this?

I will tag the author of the advice into this discussion.
Hi @Consultaing  Thanks very much again for your advice about disabling auto-suspend.  Could you kindly provide @RicLincio above with advice on how they might avoid an error regard /etc/default/grub being absent when trying to recreate the advice, please?  Thanks!

The Jetson platform uses a Linux distribution for ARM architecture. The ARM architecture has no BIOS and therefore does not use GRUB. What it usually uses are some configuration .conf files in the boot folder. In these files you have to check if the automatic suspension flag exists. (This depends on the capabilities of the hardware and if the distribution contains the option)

I faced the same problem that realsense-viewer and python were not detecting the Intel RealSense D455 on my Jetson Nano 4GB running Jetpack 4.5 and Ubuntu 18.04. I finally managed to fix the problem an here how i got it working:

Either clone or get the latest source code release zip/tar of the librealsense
If you got the zip/tar extract it, the name of the folder will be something like librealsens-v{version_number}
change into the directory
Install all the required dependencies: sudo ./scripts/installDependencies.sh
Next create a build directory and change into it:
mkdir build
cd build
The next step is to prepare some environment variables guiding to the cuda directory. Note: change cuda-10.2 according your installation
export CUDACXX=/usr/local/cuda-10.2/bin/nvcc export PATH=$PATH:/usr/local/cuda/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
No it is time to call cmake
cmake ../ -DFORCE_RSUSB_BACKEND=ON -DBUILD_PYTHON_BINDINGS:bool=true -DPYTHON_EXECUTABLE=/usr/bin/python3.6 -DCMAKE_BUILD_TYPE=release -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=true -DBUILD_WITH_CUDA:bool=true
Next is a very time consuming step, the actual compiling. I set it to use two cores.
make -j2
After this finished it is time to copy all the files to its destinations which is done by
sudo make install
Then apply the kernel patch. Therefore go up one level
cd ..
and call the script
./scripts/patch-realsense-ubuntu-L4T.sh
It turned out that there are some copy commands missing in the "make install" which cause Python to allow import pyrealsense2 as rs but when calling a method getting an not implemented error.  In the directory
librealsense-{version}/build/wrappers/python
(replace {version} with the version number if from zip/tar extracted) are some .so files an links which need to be moved to the
/usr/local/lib
copy the files "pybackend2.cpython-36m-aarch64-linux-gnu.so.{versionnumber}" and "pyrealsense2.cpython-36m-aarch64-linux-gnu.so.{versionnumber}". Inside the /usr/local/lib now create the links.
sudo ln -s pyrealsense2.cpython-36m-aarch64-linux-gnu.so.2.47.0 pyrealsense2.cpython-36m-aarch64-linux-gnu.so.2.47 sudo ln -s pyrealsense2.cpython-36m-aarch64-linux-gnu.so.2.47 pyrealsense2.cpython-36m-aarch64-linux-gnu.so sudo ln -s pybackend2.cpython-36m-aarch64-linux-gnu.so.2.47.0 pybackend2.cpython-36m-aarch64-linux-gnu.so.2 sudo ln -s pybackend2.cpython-36m-aarch64-linux-gnu.so.2 pybackend2.cpython-36m-aarch64-linux-gnu.so
Note: change the version number according to your version
Now some paths need to be added which I did by adding following lines to the .bashrc
export PATH=$PATH:~/.local/bin export PYTHONPATH=$PYTHONPATH:/usr/local/lib export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.6/pyrealsense2
After adding do a
source .bashrc
The last step was to add udev rules to give access to the camera
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules && udevadm trigger

If you now run "rs-enumerate-devices" the camera should be listed. Running realsens-viewer should open the application and the camera should be detected.
To check if the python library is working I run the python-tutorial-1-depth.py in the folder wrappers/python/examples.
Hope this helps!

Thanks so much @dgr1992 for sharing your guide with the RealSense community  :)

@dgr1992 I think why you can find device in Jetson is because you are using RSUSB. And patching kernel (run patch-realsense-ubuntu-L4T.sh) is not necessary in your case.
If you want to use V4L (-DFORCE_RSUSB_BACKEND=false) as @RicLincio tried, you have to patch the kernel. Otherwise, camera device cannot be found in Jetson.

@dgr1992 I think why you can find device in Jetson is because you are using RSUSB. And patching kernel (run patch-realsense-ubuntu-L4T.sh) is not necessary in your case.
If you want to use V4L (-DFORCE_RSUSB_BACKEND=false) as @RicLincio tried, you have to patch the kernel. Otherwise, camera device cannot be found in Jetson.

I didn't know that, thanks for letting me know!

I can confirm that this issue with D455 on Jetson Xavier NX still has not a solution for me.
Moreover I have same problem with D435i and D515, while T265 is recognized.
rs-enumerate-devices says "No device detected"
Tried also with multiple cables and usb ports.
dmesg output with D435i:
[  422.755463] usb 2-3.4: new SuperSpeed USB device number 8 using tegra-xusb
[  422.776137] usb 2-3.4: New USB device found, idVendor=8086, idProduct=0b3a
[  422.776148] usb 2-3.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  422.776155] usb 2-3.4: Product: Intel(R) RealSense(TM) Depth Camera 435i
[  422.776161] usb 2-3.4: Manufacturer: Intel(R) RealSense(TM) Depth Camera 435i
[  422.776167] usb 2-3.4: SerialNumber:<PHONE_NUMBER>76
[  422.780370] uvcvideo: Found UVC 1.50 device Intel(R) RealSense(TM) Depth Camera 435i (8086:0b3a)
[  422.789735] uvcvideo: Unable to create debugfs 2-8 directory.
[  422.789934] uvcvideo 2-3.4:1.0: Entity type for entity Intel(R) RealSense(TM) Depth Ca was not initialized!
[  422.790144] uvcvideo 2-3.4:1.0: Entity type for entity Processing 2 was not initialized!
[  422.790285] uvcvideo 2-3.4:1.0: Entity type for entity Camera 1 was not initialized!
[  422.790686] input: Intel(R) RealSense(TM) Depth Ca as /devices/3610000.xhci/usb2/2-3/2-3.4/2-3.4:1.0/input/input9
[  422.792879] uvcvideo: Found UVC 1.50 device Intel(R) RealSense(TM) Depth Camera 435i (8086:0b3a)
[  422.797437] uvcvideo: Unable to create debugfs 2-8 directory.
[  422.797686] uvcvideo 2-3.4:1.3: Entity type for entity Processing 7 was not initialized!
[  422.797868] uvcvideo 2-3.4:1.3: Entity type for entity Extension 8 was not initialized!
[  422.798009] uvcvideo 2-3.4:1.3: Entity type for entity Camera 6 was not initialized!
[  430.578983] usb 2-3.4: usb_suspend_both: status 0
[  430.634971] usb 2-3: usb_suspend_both: status 0
[  430.635172] usb usb2: usb_suspend_both: status 0

dmesg output with D515:
[  596.460955] usb 2-3.2: new SuperSpeed USB device number 10 using tegra-xusb
[  596.481732] usb 2-3.2: New USB device found, idVendor=8086, idProduct=0b64
[  596.481743] usb 2-3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  596.481750] usb 2-3.2: Product: Intel(R) RealSense(TM) 515
[  596.481755] usb 2-3.2: Manufacturer: Intel(R) RealSense(TM) Camera
[  596.481760] usb 2-3.2: SerialNumber: 00000000F0265395
[  596.486765] uvcvideo: Found UVC 1.50 device Intel(R) RealSense(TM) 515 (8086:0b64)
[  596.496639] uvcvideo: Unable to create debugfs 2-10 directory.
[  596.501603] uvcvideo: Unable to create debugfs 2-10 directory.
[  596.501773] uvcvideo 2-3.2:1.0: Entity type for entity Extension 3 was not initialized!
[  596.501959] uvcvideo 2-3.2:1.0: Entity type for entity Processing 2 was not initialized!
[  596.502105] uvcvideo 2-3.2:1.0: Entity type for entity Camera 1 was not initialized!
[  596.502734] input: Intel(R) RealSense(TM) 515 as /devices/3610000.xhci/usb2/2-3/2-3.2/2-3.2:1.0/input/input11
[  596.505214] uvcvideo: Found UVC 1.50 device Intel(R) RealSense(TM) 515 (8086:0b64)
[  596.509970] uvcvideo: Unable to create debugfs 2-10 directory.
[  596.510147] uvcvideo 2-3.2:1.4: Entity type for entity Processing 10 was not initialized!
[  596.510445] uvcvideo 2-3.2:1.4: Entity type for entity Extension 11 was not initialized!
[  596.510638] uvcvideo 2-3.2:1.4: Entity type for entity Camera 9 was not initialized!
[  603.632667] usb 2-3.2: usb_suspend_both: status 0
[  603.688651] usb 2-3: usb_suspend_both: status 0
[  603.688880] usb usb2: usb_suspend_both: status 0

Hi @RicLincio  Do you require further assistance with this case, please?  Thanks!

Hello, yes, but I won’t be able to work on it for 2 weeks. I kindly ask you to leave the issue open in the meantime.

That is no problem at all to leave the case open for that further time period.  Thanks for the update!

Case closed due to no further comments received.


Generate pages/providers in a subfolder via command line

Ionic version:  (check one with "x")
[ ] 1.x
[x ] 2.x
[ ] 3.x
I'm submitting a ...  (check one with "x")
[ ] bug report
[ x] feature request
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:
When I generate a provider/page via the console I can't create one in a subfolder.
Expected behavior:
If I type something like "ionic g provider db/test" I want that a subfolder with name "db" will be generated if it doesn't exist and the provider is generated in this folder.
Ionic info: (run ionic info from a terminal/cmd prompt and paste output below):
Your system information:

Cordova CLI: 6.5.0
Ionic Framework Version: 3.0.1
Ionic CLI Version: 2.2.3
Ionic App Lib Version: 2.2.1
Ionic App Scripts Version: 1.3.0
ios-deploy version: 1.9.1
ios-sim version: 5.0.13
OS: macOS Sierra
Node Version: v7.9.0
Xcode version: Xcode 8.3.1 Build version 8E1000a

Hey,
thank you for opening an Issue here.
Your issue relates to the Ionic CLI and not to Ionic-Angular. Please close your issue and create a new one here:  https://github.com/driftyco/ionic-cli/issues

This issue was moved to driftyco/ionic-cli#2213


add ws2812 led strip

Add ws2812 led strip for esp32

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

ws2812 driver is already supported for a single LED. It just needs to be extended for multiple LEDs. Ideally this should just require changes in the led_driver file. It should not require addition of another device and another example.

Драйверът ws2812 вече се поддържа за един светодиод. Просто трябва да се разшири за множество светодиоди. В идеалния случай това трябва просто да изисква промени във файла led_driver. Не трябва да изисква добавяне на друго устройство и друг пример.

I agree but when using esp32 and not esp32c then it loads gpio driver and not ws8212

@Kristian8606 thank you for putting up a PR, Can you please update the description with what are you trying to suggest so that it would help review this PR.
Also, I see a lot of .DS_Store files can you please remove such unnecessary files.

I also implement similar code.  The ESP library should handle strings and not just one LED.

I will close this PR and open a new one


insert_while_running should accept scheduler.

Most of the logic that a Behaviour Tree does should fall under a fixed time step.
Allow defining the scheduler for inserting/removing components for tasks.

BehaviorTreePlugin::in_schedule is not enough?

It is. My bad.


Left rotate array by D places #1144

Description 📜
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
Fixes # 1144

Type of change 📝
Added Solution, Algorithm

[ ] Au#dio (Should be in mp3 format Includes speech clarity, Concise ,Low distortion)
[ ] Vi#deo (Animations, screen-recordings, presentations and regular explanatory films are all possibilties etc)
[x] Doc#umentation (Content Creation in the form of codes or tutorials)
[ ] Other (If you choose other, Please mention changes below)

Domain of Contribution 📊

[ ] Android Dev #(Flutter)
[ ] Android Dev #(Java)
[ ] Android Dev #(Kotlin)
[ ] Backend Dev #(Java)
[ ] Backend Dev #(.NET)
[ ] Backend Dev #(PHP)
[ ] Backend Dev #(Python)
[ ] C/#CPP
[x] Competitive Programming
[ ] Cyber #Security
[ ] DS#A
[ ] Data#base
[ ] Datascience with #Python
[ ] Datascience with #R
[ ] Frontend Dev #HTML/CSS/JS
[ ] Frontend Dev #React/Angular/Vue
[ ] Go#lang
[ ] Interview #Prep
[ ] Java_#Domain
[ ] Java#Script
[ ] ME#RN
[ ] Machine #Learning
[ ] Open #Source
[ ] Python_#Domain
[ ] Ru#st
[ ] Statis#tics
[ ] UI/#UX

Checklist ✅

[x] I follow Contributing Guidelines & Code of conduct of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I'm a GWOC'21 contributor

Screenshots / Gif (Optional) 📸

Hey @praveenscience @sumitaccess007 @salil-naik @prathimacode-hub CHECK MY PR PLEASE


Create Cloud Operations Team README.md

[x] :sparkles: enable GitHub pages following template https://github.com/ministryofjustice/cloud-operations
[x] Setup Notifications to Slack
[x] Migrate content from https://github.com/ministryofjustice/technical-services and create PR

Content migrated


Subarray with 0 sum- Complexity O(n)

congratulations on your hactoberfest contribution. if you like this repo then give it a star. Happy hacking..


multi-lambdas and el

This came up when experimenting with changing path to pathd. The following code type-checks:
def pathsimple : {
  (A : type) → A → A → type
} = {
  λ A x y => path {λ _ => A} x y
}

def refl : {
  (A : type) → (x : A) → pathsimple A x x
} = {
  λ A x => λ i => x
}

However, if I try to write λ A x i => x in refl instead, I get: Head connective mismatch, expected pi but got el! {pathsimple A x x}.

Ah, it looks like someone needs to whnf the goal somewhere.


⚠ API - Lens has degraded performance

In b1cbccb, API - Lens ($LENS_API_URL) experienced degraded performance:

HTTP code: 502
Response time: 333 ms

Resolved: API - Lens performance has improved in c1945e5 after 9 minutes.


Are you looking for maintainers?

Hi there! 👋
I'm considering using your library in order to fix the following issue, but I see that it lacks some updates specially in its dependencies. Can I help you anyhow?

https://github.com/vscode-shellcheck/vscode-shellcheck/issues/713

Sure you can always make a pr


stop working on attemp N°40

it works perfectly with a twitter test account. But in a real account it freezes and stops working in attempt 40.
example:
Trying pass (36/14344619): 54321
Trying pass (37/14344619): 1234
Trying pass (38/14344619): blabla
Trying pass (39/14344619): blablabla
Trying pass (40/14344619):

This programs is not working , you can use only your own stuff.

in fact, it's working fine with the first 40 attemps. Maybe it's some twitter block or something.

Try put in 40 lines of your text document your twitter password , a u’ll see that its not working , i saying this because for me its not working , soo maybe its only for me , so try it