cleanup: use a blank comment line between shebang and copyright

This fixes all files that start w/ a #!.
Context: https://github.com/googleapis/google-cloud-cpp/pull/7071#discussion_r677835834

This change is

I assume none of these was using a line number to store the "Usage" message?

I looked for those cases and didn't see any in these files.


Added missing zk godep

The zk godep is missing and CI is currently only passing, because Travis runs go get by default, which downloads zk https://travis-ci.org/kelseyhightower/confd/jobs/51791525#L110

LGTM!


Sprinkle Ubuntu install with sudo

Not really a bug / issue as such, but we need to add sudo before tee for Ubuntu installs
echo "deb http://dl.bintray.com/deepstreamio/deb $DISTRO_NAME main" | sudo tee -a /etc/apt/sources.list
See related issue here

Similar problem with apt-key, needs to be
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61

The following works as a copy & paste solution for Ubuntu installs. The source command loads lsb-release and exposes it as environment variables that are used to populate $DISTRIB_CODENAME
source /etc/lsb-release && echo "deb http://dl.bintray.com/deepstreamio/deb $DISTRIB_CODENAME main" | sudo tee -a /etc/apt/sources.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61
sudo apt-get update
sudo apt-get install -y deepstream.io

Sorry I'm confused, is this a documentation issue or a code issue?

My bad, it's not really an issue at all. More of a reminder on how we need to amend the install script we recommend on the website. Will close shortly

cool, just want to see what issues to fix in next rc


Performance Enhancement: use "requestAnimationFrame" instead of "setTimeout"

setTimeout depends on the browser's internal event queue and has terrible performance with respect to animations. If other events get added to the queue then your timeout will have to wait until the other events are handled first.
requestAnimationFrame on the other hand is a lower level hook into the browser render engine and will run your code before the next frame is painted and does NOT depend on the event queue.
Read more about it here:
https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame
@codefrau

Sure. When I wrote that code in 2013, rAF was brand new so I couldn't rely on it.
Send me a PR (but it needs to respect the sleep ms for power efficiency).

I replaced setTimeout with requestAnimationFrame and...performance degraded terribly! setTimeout(..., 0) runs way more frequently than requestAnimationFrame.
It was a fun experiment though...

That is surprising. Thank you for experimenting!


fix: return attribute consistency

The change is in the wrong direction - action is triggered via a 'reset'/'increment' message, and those are its possible semantics, the try_ in function name disclosures that action may fail - but if it didn't fail, the reset or increment happened. Also, to be slightly more consistent with cw-plus contracts, I would change method to action if you do this correction.
Wrapping up:
Better would be method -> action and try_increment -> increment.

Fixing this in #134


WARNING: The conda.install module is deprecated and will be removed in a future release.

Great little utility. I'm using it to solve
https://github.com/conda-forge/conda-forge.github.io/issues/701
However, I see this warning:
WARNING: The conda.install module is deprecated and will be removed in a future release.

thanks for the heads up, I hadn't noticed this warning yet.

should be solved now !

So what will be the alternative?

So what will be the alternative?

in this case, conda.exports provides the same methods I was using before.


Add CLI command to get features

Add a command to the CLI that calls the features/getFeatures endpoint and writes the returned JSON to stdout.
I think maybe the command should be apollo features get so in the future we can have other commands like apollo features count organized under the same "parent" command, but I'm not totally sure on the naming so suggestions are welcome.

Done in #379


Yotifications - settings api

Create a per-user settings api that allows users to enable/disable transports and enable/disable notification types within those transports

As discussed on slack, this already exists in the form of the enable_transports API call, but that doesn't use "one big object" that represents the whole state (it enables transports passed to it in params).
The plan is to replace it with that one big object consisting of a dictionary mapping transports to notification types handled by that transport like this:
{'email':{'notification_types':['VOTE','TRANSFER',...],
<EMAIL_ADDRESS> 'wwwpoll':{'notification_types':[...],
                     'sub_data':{}}

So for each transport we have a list of notification types that go over that transport and a sub_data field that can contain any valid JSON object (in the email example, it's a string with the email address).
The "wwwpoll" transport is what condenser will use, it is not currently in place yet, but for this transport it is assumed that no special sub_data is needed, so we have a simple empty dictionary.

Oh, and of course the above object will be passed to the API as so:
set_transports(username,transports) to set a new config
get_transports(username) to return the current config

@GarethNelson as an https api user, I'm primarily interested in the shape of that api. when you wrote set_transports(username,transports) to set a new config
did you mean the https jsonrpc request body should look like
{
  "jsonrpc": "2.0",
  "method": "set_transports",
  "params": {
    "email": {
      "notification_types": ["VOTE", "TRANSFER", ...],
      "sub_data"<EMAIL_ADDRESS>    },
    "wwwpoll": {
      "notification_types": [...],
      "sub_data": {}
    }
  },
  "id": "an id unique to the client"}

Everything is JSON-RPC

However, it should look like this:
{
  "jsonrpc": "2.0",
  "method": "set_transports",
  "params": {
   "username":"testuser",
   "transports":{
     "email": {
      "notification_types": ["VOTE", "TRANSFER", ...],
      "sub_data"<EMAIL_ADDRESS>    },
    "wwwpoll": {
      "notification_types": [...],
      "sub_data": {}
    }
   }
  },
  "id": "an id unique to the client"}

This is now in place in latest commit, requires integration testing with condenser UI

@bnchdrff @relativityboy
Once this PR is merged, someone should check it's all working with condenser:
https://github.com/steemit/yo/pull/57
Once it is, this issue can be closed unless the API for settings is missing something.

@relativityboy can you confirm this is working so we can close it


Fixes incorrect translation of IPv6 ::1 as <IP_ADDRESS>

In perusing self-trace data, I noticed a client address of <IP_ADDRESS>. This
fixes that.

cc @llinder this is what I was talking about


Restore drafts by default and add "Save and clear" button

Current drafts behavior
Currently, saved drafts can only be accessed via the Drafts button. This has some down sides:

It take a couple of clicks (or keyboard taps) to navigate back to your draft, which is a common workflow.
Discoverability issue for drafts. We have reports of new users not realizing that drafts exist, and having the unpleasant experience of thinking that their partially composed message is lost.
Draft "leakage", where users start a new message without realizing they have a partially composed one. As a result, the list of drafts ends up having a bunch of useless drafts that make it harder to find the useful one.

Note that other chat products (Slack, Discord) restore drafts to the compose box by default. However, Zulip's current approach has the advantage that it's possible to have multiple saved drafts for a given context, and to send other messages in that context while you have a draft saved.
Note also that while opening a draft and changing the text edits the saved draft, deleting all the text does not delete the saved draft.
New drafts behavior
We should implement the following behavior for drafts.

When a user has an open compose box with at least one draft for the current addressee (either stream/topic or PM), the most recently edited draft for that addressee is auto-restored in the compose box. Drafts are restored only if a full recipient is specified and matches exactly, e.g. stream+topic or PM recipients. Note that, consistent with current behavior, the in-progress draft should be moved if the addressee is changed.
Editing the text in the compose box edits the draft. New behavior: Deleting the text deletes the draft.
There is a new "Save and clear" button (tooltip: "Save as draft and clear compose box"). Perhaps bottom right (near the "Send") button is a good placement.
No change: Navigating away from the draft, including by selecting a different draft, saves it.

Prior discussion & issues
May 2021 on CZO
January 2019 on CZO
Closed in favor of this issue:

#11218
#17396

Open questions:

Should this behavior be controlled by a setting?

@zulipbot claim

@Riken-Shah @timabbott What's the status on this one?

When a user has an open compose box with at least one draft for the current addressee (either stream/topic or PM), the most recently edited draft for that addressed...
Editing the text in the compose box edits the draft. New behavior: Deleting the text deletes the draft

The PR for the first and second features is awaiting a review https://github.com/zulip/zulip/pull/18613.

There is a new "Save and clear" button (tooltip: "Save as draft and clear compose box"). Perhaps bottom right (near the "Send") button is a good placement.

For the third feature, we decided to replace the "Save and Clear" button with the "Rotating Draft Up/Down" behavior (see here).
PR (https://github.com/zulip/zulip/pull/18718) for this is also almost done, but probably waiting for #18757 to merge. (See this).

Great, thanks for the update!
On Tue, Jul 6, 2021 at 10:24 AM Riken Shah @.***> wrote:

When a user has an open compose box with at least one draft for the
current addressee (either stream/topic or PM), the most recently edited
draft for that addressed...
Editing the text in the compose box edits the draft. New behavior:
Deleting the text deletes the draft

The PR for the first and second features is awaiting a review #18613
https://github.com/zulip/zulip/pull/18613.

There is a new "Save and clear" button (tooltip: "Save as draft and
clear compose box"). Perhaps bottom right (near the "Send") button is a
good placement.

For the third feature, we decided to replace the "Save and Clear" button
with the "Rotating Draft Up/Down" behavior (see here
https://chat.zulip.org/#narrow/stream/101-design/topic/save.20and.20clear.20button.20design/near/1200306
).
PR (#18718 https://github.com/zulip/zulip/pull/18718) for this is also
almost done, but probably waiting for #18757
https://github.com/zulip/zulip/issues/18757 to merge. (See this
https://chat.zulip.org/#narrow/stream/101-design/topic/save.20and.20clear.20button.20design/near/1206741
).
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/zulip/zulip/issues/18555#issuecomment-874945610, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAP6IUQD5GHOSNT6VXSSDYDTWM35BANCNFSM45FYU3IA
.

Closing as completed in https://github.com/zulip/zulip/pull/22104.


PLACEHOLDER Generated in Observable Pattern Prevents Creating Stix2 Object

When converting a package with the below observable indicator (some data has been obfuscated...hence xxxx):
<indicator:Observable id="ctap:Observable-5e5adadf-ae00-4e9f-a73d-123c9bf35680">
<cybox:Observable_Composition operator="OR">
<cybox:Observable idref="xxxx:Observable-83aa2840-e0df-4369-b9ad-4ac81b58cb80">
</cybox:Observable>
<cybox:Observable id="xxxx:Observable-82042a5f-6c55-4464-a83c-1cf8d6a058cd">
<cybox:Object id="xxxx:URI-2cb4a358-76cc-4ff3-9282-e58b6ab87569">
<cybox:Properties xsi:type="URIObj:URIObjectType" type="URL">
<URIObj:Value><IP_ADDRESS>/mmtls/00004d8d</URIObj:Value>
</cybox:Properties>
</cybox:Object>
</cybox:Observable>
</cybox:Observable_Composition>
</indicator:Observable>

A "PLACEHOLDER" value is inserted in the pattern for the Observable idref. Resulting in:
 {
            "created": "2018-07-10T22:44:04.768Z",
            "id": "indicator--d465854d-e99e-4685-baa5-03f1d3f30f0b",
            "kill_chain_phases": [
                {
                    "kill_chain_name": "lockheed-martin-cyber-kill-chain",
                    "phase_name": "delivery"
                }
            ],
            "labels": [
                "unknown"
            ],
            "modified": "2018-07-10T22:44:04.768Z",
            "pattern": "[PLACEHOLDER:xxxx:Observable-83aa2840-e0df-4369-b9ad-4ac81b58cb80] OR [url:value = '<IP_ADDRESS>/mmtls/00004d8d']",
            "type": "indicator",
            "valid_from": "2018-07-10T22:44:04.768967Z"
        }

This object can not be used to instantiate a stix2 object because of PLACEHOLDER.

Thanks, @tigerkatz .
This is done because we don't want to silently drop the Observable-83aa2840 part of the composition, which could cause the meaning of the indicator pattern to change. We decided that by default this should create a "loud" error (by creating invalid STIX 2) rather than a warning that may be ignored. I think there are options that would cause the elevator to just drop the entire indicator rather than emitting an invalid one. @rpiazza do you remember how to do this?
Since that Observable is using an idref, is the full (non-ref-ed) Observable available in the same document? The elevator makes some effort to resolve these references, but due to the infinitely-nestable nature of Indicators and Observables, we don't claim to be able to find it 100% of the time.

Hi @tigerkatz,
I'm not sure what @gtback had in mind, but there is no option to "drop" observables with unresolved PLACEHOLDERs. Although as he said, the problem seems to be the unavailability of the ref-ed Observable.  Is that Observable in the same package?  If so, is it possible for you to send that file so we can debug the problem?

@rpiazza, I was thinking there was something in policies that would ensure we didn't emit invalid STIX, but I realize now that's on an entire-file basis, not per-object.

Hi @tigerkatz,
Was the problem that the observable id that was referenced wasn't available?  If not, can you send the full example?

Hi @gtback,
Thank you for reaching out. The problem was that the referenced observable
was not available within the same package, but was in the database. We
implemented a method to "dereference" all idrefs in the package that did
not have the corresponding definitions in the same package, by fetching
them separately from the database, and then doing some xml surgery to put
them back in.  This is done outside of the scope of elevator.
On Fri, Aug 3, 2018 at 3:03 PM, Rich Piazza<EMAIL_ADDRESS>wrote:

Hi @tigerkatz https://github.com/tigerkatz,
Was the problem that the observable id that was referenced wasn't
available? If not, can you send the full example?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/oasis-open/cti-stix-elevator/issues/116#issuecomment-410347353,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AlusGFOzc1qrWlfTXfb7c4zmjglG3d4eks5uNJ5rgaJpZM4VKnc8
.

Sorry, I meant to say Hi @rpiazza. I think the question is still open, as
to wether or not the elevator should create invalid STIX, if there is just
an idref for an observable that refers to a definition outside the package.
On Fri, Aug 3, 2018 at 3:15 PM, Josh Katz<EMAIL_ADDRESS>wrote:

Hi @gtback,
Thank you for reaching out. The problem was that the referenced observable
was not available within the same package, but was in the database. We
implemented a method to "dereference" all idrefs in the package that did
not have the corresponding definitions in the same package, by fetching
them separately from the database, and then doing some xml surgery to put
them back in.  This is done outside of the scope of elevator.
On Fri, Aug 3, 2018 at 3:03 PM, Rich Piazza<EMAIL_ADDRESS>wrote:

Hi @tigerkatz https://github.com/tigerkatz,
Was the problem that the observable id that was referenced wasn't
available? If not, can you send the full example?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/oasis-open/cti-stix-elevator/issues/116#issuecomment-410347353,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AlusGFOzc1qrWlfTXfb7c4zmjglG3d4eks5uNJ5rgaJpZM4VKnc8
.

@tigerkatz,
As I mentioned in #118, you can look into the 'policy' option, which will prevent the generation of invalid STIX by not producing a result if a warning message was generated.
I'm going to close this for now.  Please reopen it if you have more to discuss.


Rewrite shell scripts in Go

I think we could try to rewrite our Bash-based linting scripts in Go.
WDYT?

@stv0g for getting this issue done. is there any thing to be considered?
or just rewrite them in go?

@kehiy nothing to consider! As long as they behave the same we are good to go :)
happy to help with testing/reviews

@Sean-Der okay, so I start work on this issue

I agree with Sean here. Maybe we start with a single script per PR?

@stv0g that's good point
I will rewrite them one by one.

Merged! Thank you @kehiy
Keep up the great work. Would love to see those all merged (and this issue resolved)

@Sean-Der thank you so much.
yeap!
I will fix them one by one...


Encoding issue

Hi everyone, when i send a Study to mercure Ive got this error:
Oct 16 19:00:52 ip-172-1-64-57 receiver.sh[606386]: ERROR: Unable to perform character set conversion!
Oct 16 19:00:52 ip-172-1-64-57 receiver.sh[606386]: ERROR: Incoming charset is ISO 2022 IR 100
any ideas?
Regards.

Duplicate issue:
https://github.com/mercure-imaging/mercure/issues/59

@cadrogui possible resolution posted here


Changing name not working 100%

Add a new device.
Press configure and change name.
Name is changed in "device list", but is still the same (old) in " Integration entries " ?

Yeah, I’ve been aware of some oddities here. I’ve got several integrations with different ways to handle several devices - some use one integration instance per device, some use one integration instance with multiple devices.
I think in your case, one name might be the integration instance name, and one the device name. Or something like that.
I need to look into this, but I think I’m using the device name as a lookup-key for the integration configuration, so it’s easy to make a stupid breaking change that requires re-add of all devices.
It’s high up on the list of priorities…

Okay, so here's the deal:
When adding a device, an instance of the integration is created + a device. They both are named what you call the device. Later changes to the name will only affect the device, and not the integration instance.
I changed this now, so both are updated, and it looks like it now behaves more as expected. I think you still can override the device name after clicking on the device, but that's default HA-behaviour.


Updated recetox tools which require docker containers

Added some configurations for recetox tools which are only running in docker.

@bgruening can this be merged?


[Web]Tooltip widget meets accessibility standard

According to the new internal accessibility rating, the tool tip needs to fulfill two requirements

It needs to be dismissible, developer (or by default) can implement an interaction that allows users to dismiss the tooltip without moving the pointer hover or keyboard focus. It also need to be dismissible through esc key.
toolbar needs to be hoverable itself. Currently, the tooltip will be dismissed right after the pointer exit the target. We need to make it so the tooltip will stay on when pointer exit the target and hover over the actually tooltip box.

It doesn't look like there are action items on the web engine side, so I removed the web label. However, if anything needs to be done in the engine, feel free to add the label back.

although the work will likely need to be done in framework side, but this is an engine only issue because the tooltip works differently between mobile and web. There is no hover in mobile, you can only trigger tooltip by long pressing.


Select with prop multiple=true is buggy when value is Arr

If we pass value as Array of Objects to Select component when multiple=true, it tends to create duplicate entry for same MenuItem in the drop-down.

[x] This is not a v0.x issue.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior 🤔
Suppose if we pass initialise state as -
state= {
    value: [{name: 'Item1'}]
}

And suppose I click on the same item on the drop-down, the item should be unselected and the onChange method should receive an empty array instead.
Current Behavior 😯
I click on the same item on the drop-down, and the onChange method should receive an array of length 2, with the same object repeated twice.
Steps to Reproduce 🕹
I think I found the cause of the bug. Link to the function causing bug
https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Select/SelectInput.js#L125
The handleItemClick function implementation  is as follows -
const handleItemClick = child => event => {
    if (!multiple) {
      update(false, event);
    }

    if (onChange) {
      let newValue;

      if (multiple) {
        newValue = Array.isArray(value) ? [...value] : [];
/*
Here, suppose newValue is [{name: 'Item1'}] and child.props.value is {name: 'Item1'}.
The itemIndex is computed as -1 and it results to insertion of duplicate element, rather than splicing it.
*/

        const itemIndex = value.indexOf(child.props.value);

        if (itemIndex === -1) {
          newValue.push(child.props.value);
        } else {
          newValue.splice(itemIndex, 1);
        }
      } else {
        newValue = child.props.value;
      }

      event.persist();
      event.target = { value: newValue, name };
      onChange(event, child);
    }
  };

Link:

Sandbox link - https://codesandbox.io/s/create-react-app-5grs7
Probable Issue in codebase - https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Select/SelectInput.js#L125

Context 🔦
I was trying to use it for my Project
Your Environment 🌎

Tech
Version

Material-UI
v3.9.2

React
16.5.2

Browser
Chrome Version 75.0.3770.142 (Official Build) (64-bit)

Yeah, Select only supports primitives. I think that's good enough, but let's see what other people think.

@joshwooding But this is what I found from the Select.d.ts file.
value?: Array<string | number | boolean | object> | string | number | boolean | object;

It suggests that value can be an Array of Objects.

@akshatnitd I was just speaking about the code.

This is related to https://github.com/mui-org/material-ui/issues/10845 and a lot of other issues. I'm tempted to close this as a duplicate. You can kind of fix this by using the reference of the object as the default value e.g. https://codesandbox.io/s/create-react-app-vgyz6

I agree, it's by design.

hi team, ive been using mui select options with multiple tags. but intermittently the options are showing up duplicacy even if duplicates doesnt exist actually.. can anyone help me out?


ci: Update supported GHC versions

NOTE: I will prepare the same thing for the xmonad repo, but don't want to create too much noise with PRs.  After this is rubber-stamped I will just push it directly.
Description

Prefer GHC 8.10.7 to 8.10.4, as versions seem to have stabilised now.
Add support for Stackage LTS 19, which ships with GHC 9.0.2.
Since a new version of 9.2 has been released, prefer 9.2.2 over 9.2.1.

Also, explicitly pass -XCPP to hlint; see 1.
Checklist

[x] I've read CONTRIBUTING.md

[x] I've considered how to best test these changes (property, unit,
manually, ...) and concluded: CI passes

[n/a] I updated the CHANGES.md file

I'm a bit confused about why the hlint issue was not a problem before. Can anyone help me understand that? Otherwise this looks all right apart from the one issue in the stack workflow.

I'm a bit confused about why the hlint issue was not a problem before. Can anyone help me understand that?

It seems like the bug only fires when -XHaskell2010 is passed to hlint (see https://github.com/ndmitchell/hlint/pull/1361).  This was not done before, but the haskell-ci version that I built apparently adds it.  I suppose another solution would be to remove XHaskell2010 altogether and let hlint figure out what the default extensions are.

It seems like the bug only fires when -XHaskell2010 is passed to hlint (see ndmitchell/hlint#1361). This was not done before, but the haskell-ci version that I built apparently adds it. I suppose another solution would be to remove XHaskell2010 altogether and let hlint figure out what the default extensions are.

Oh, I see. I was looking at the wrong diff. Will give it some more thought once I get back from pub :-)

@liskin got any insights from the beer? :)

No real insights. I set a reminder for myself to check/drop the hlint patch in 2 months time (kinda hoped the fix would have been released by now) and forcepushed the stack.yaml fixes. Feel free to proceed with other repos, and sorry for the delay.


support only requests which have session ID

This PR changes only to allow requests which have only session ID. After this PR merged to upstream, authservice will reject requests which have only ID token on the request header.
close #189

This adds JWKS verification and removes support for using an ID Token? That seems fine.
I see a RejectOnlyIDToken test was added. Did you check what happens if an invalid ID token and a valid session cookie is provided? You want to make sure double Authorization headers aren't sent upstream. It looks like SetHeader() just does an Add() on the new header, I don't think an existing one will be removed.
I think you may want to delete any existing ID Token header in SetIdTokenHeader(). I'm not sure how envoy normalizes headers, you may be guaranteed that incoming headers are lowercase? (You want to be sure that you remove any uppercase incoming AuThOrIzAtIoN headers too.)

sounds good. I think adding test is reasonable. Merging for now.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: incfly, Shikugawa
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Shikugawa,incfly]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


[5.0] [Type checker] De-prioritize SIMD operators

The new SIMD proposal introduced a number of new operators, the presence of
which causes more "expression too complex" failures. Route around the
problem by de-prioritizing those operators, only considering them if
we can't type check any other way and ended up seeing both SIMD types
and SIMD operators in our first attempt to type check. This should limit the
type checker performance cost of said operators to only those expressions
that need them OR that already failed to type-check.
Fixes rdar://problem/46541800.

@swift-ci please test

@swift-ci please test source compatibility

Build failed
Swift Test Linux Platform
Git Sha - 3c107732a2d19e5a6758b7eb70f1581ebb489f40

Ugh, it's probably the -solver-enable-operator-designated-types version of the test failing, because of course all of that functionality isn't on the 5.0 branch.

@swift-ci please test

@swift-ci please test source compatibility

@swift-ci please test

@swift-ci please test source compatibility

Build failed
Swift Test Linux Platform
Git Sha - 3c107732a2d19e5a6758b7eb70f1581ebb489f40

Build failed
Swift Test OS X Platform
Git Sha - 3c107732a2d19e5a6758b7eb70f1581ebb489f40

Build failed
Swift Test OS X Platform
Git Sha - 3c107732a2d19e5a6758b7eb70f1581ebb489f40


MoveMouseToPositionOnVirtualDesktop from one screen to another is inaccurate

Reproducing this requires one of a number of specific arrangements of screens. Something like the following seems to do the trick:
 _________
|         |
|         |
|         |___________
-----------           |
          |           |
          |           |
          -------------

It may also help for the two monitors to be different resolutions.
What appears to happen is that when moving the cursor from one screen to another, the coordinate scaling from the source screen is used on the target screen, which causes the cursor to miss its target - by a lot or a little depending on the screen arrangement.
A somewhat reliable workaround is to simply call MoveMouseToPositionOnVirtualDesktop twice with the same arguments. The first performs the inaccurate move, but gets the cursor to the target screen - the second invocation does a move within a single screen, which works fine.

Hi @lsim -
I think the issue exists inside of MouseMove.cs
 var NewX = X;
            var NewY = Y;

            if(Offset == MouseOffset.Absolute || Offset == MouseOffset.AbsoluteVirtual) {
                NewX = X * SystemMetrics.Screen.ScaleFactor.Value / SystemMetrics.Screen.Primary.Width.Value;
                NewY = Y * SystemMetrics.Screen.ScaleFactor.Value / SystemMetrics.Screen.Primary.Height.Value;
            }

            yield return new RawInput(new MOUSEINPUT() {
                Point = new POINT() {
                    X = NewX,
                    Y = NewY,
                },
                Flags = Offset.ToMouseFlags(),
            });
        }

I'll have to spend some time thinking about the best way to work around this.  But if you have some ideas, I'd love to hear them!


Strange variation in player's collision box

Noticed strange variation in the player's collision mesh (image below)

The player's box immediately following login (Moradon)
Using the wrap gate to travel to CZ
Using the wrap gate to travel from CZ to Moradon

A vary peculiar issue.

In CZ there's no player collision, that's why the bounding box (sort of) disappears. As for 1 & 3 I'm not sure.

This issue was moved to ApexKO/OpenKO#55


Use a layer for the graticule instead of a control

The graticule functionality has been migrated to use a VectorLayer instead of a control relying on postcompose.
This was mainly done to be compatible with the new composite layer rendering (see #8923).
The Graticule layer derives from VectorLayer and implements a custom loading function that will populate the feature source with lines & labels according to the current extent.
The two examples have been updated to reflect this, and the Graticule control was removed.
Two new features have been added to the graticule along the way:

if an extent is defined for the layer, the graticule will only be rendered inside it
a wrapX option have been added, default is true (as in vector sources)

As such this shoud close https://github.com/openlayers/openlayers/issues/8427 as well.

please add an entry in changelog/upgrade-notes.md

please add an entry in changelog/upgrade-notes.md

Just added a commit with documentation about the change.

Thanks @jahow.


MSI update for v2 Settings

v2 Settings needs to be added to MSI
Setting v1 ... TBD

Closing because this cause it will be tracked here: #2148


Fix/weight scalar

I want to merge this change because...
Right now WeightScalar is only working when the value is passed by variable to mutation.
This PR fixes that and adds support for passing value directly to mutation input (mostly used in playground).
Now accepted values are:
weight: 10.0
weight: 10
weight: "10"
weight: "10.0"
weight: {
    value: 10 // and all combinations from above
    unit: "kg"
}

For both variable and input

fixes #5496
Impact

[ ] New migrations
[ ] New/Updated API fields or mutations
[ ] Deprecated API fields or mutations
[ ] Removed API types, fields, or mutations

Pull Request Checklist

[x] Privileged queries and mutations are guarded by proper permission checks
[x] Database queries are optimized and the number of queries is constant
[x] Database migration files are up to date
[x] The changes are tested
[x] GraphQL schema and type definitions are up to date
[x] Changes are mentioned in the changelog

@koradon CI failed


fix build failure - issue #200

following sub-optimal solution mentioned in following issue in travis ci
issue link

Thanks a ton for your contributions @razi-ed


any plan to add SMA, RSI, ATR indices?

Do you have any plan to add SMI, RSI, ATR indices to the input state?

All these additional indicators are essentially functions of timeseries of Bitcoin prices and that too specifically closing prices. A convolutional network is able to compute these functions and thus providing them explicitly is redundant.
Rather than introducing highest and lowest prices in an interval and the volume of currency traded gives a better view of the changing trends.

However, I have an earlier commit in the master branch which contains calculation of these indicators and passes them as state representation to the Q network.

I disagree. There is a contextual LSTM model which I think would fair better results if the context of price were included in training. https://arxiv.org/pdf/1602.06291.pdf
a successful agent needs to decouple from training data and level up in risk / reward plays.  the agent should generalize on other data. If you take an Elliot wave trader on any stock - they can make/ predict the counts / predict a couple of scenarios  and place the bet accordingly. these bot agents need to grasp these contexts. If RSI is bearish - then in that context - we're anticipating price swings downwards.   If the training is over fit here - sure - then the bot - if given the same prices - it will get the bet right. but it would be better to anticipate if there's a high risk reward scenario to put the farm on bet (like George Soros did by borrowing billions of dollars to bet against the pound) becoming one of the richest men in the world. how did he do this? he took a bet that had very little risk / he only had to pay interest on loan.

related https://github.com/llens/CryptoCurrencyTrader/issues/10

88ef1b9783695a0ce7ba81849b1ab555954ed1a5

we could branch off into competing forks? the idea being the best code wins to get merged into master.
this preprocessing code expands out features to a very wide selection of indicators.
This could be a curse on dimensionality - but we could iron it down
eg. cci is useful indicator for bearish / bullish channels.
cci = CCI(inputs)
if you fast forward to a finish training sample / given any time + price - you going to get a hodgepodge of signals on different time frames. 5 min / 1 hr / 2 hr etc.
we need to incorporate more granularity on risk / reward into strategy.
https://github.com/maxpaulus/alexis_maxime/blob/bc40344627011f191a5f137fb7988c59355b179c/DataProcessing/strategy_with_prediction.py
https://github.com/bfmill253/ForexDL/blob/3fcbd8cc92ff98363c478b5cdae5c0a2959ef3fc/ForexDL/Data.py

def expandData(startTime="0", instrument="EUR_USD", endTime="0"):
    close, high, low, volume, openMid, time = getData(startTime=startTime, instrument=instrument, endTime=endTime)
    inputs = {
    'open': openMid,
    'high': high,
    'low': low,
    'close': close,
    'volume': volume
    }
    #print (type(inputs.get('open')))
    #Overlap Studies
    sma = SMA(inputs)
    bbuper, bbmiddle, bblower = BBANDS(inputs)
    dema = DEMA(inputs)
    ema = EMA(inputs)
    htTrend = HT_TRENDLINE(inputs)
    kama = KAMA(inputs)
    ma = MA(inputs)
    mama, fama = MAMA(inputs)
    midpoint = MIDPOINT(inputs)
    midprice = MIDPRICE(inputs)
    sar = SAR(inputs)
    sarext = SAREXT(inputs)
    t3 = T3(inputs)
    trima = TRIMA(inputs)
    wma = WMA(inputs)

    #Momentum Indicators
    adx = ADX(inputs)
    adxr = ADXR(inputs)
    apo =APO(inputs)
    aroonDown, aroonUp = AROON(inputs)
    aroon = AROONOSC(inputs)
    bop = BOP(inputs)
    cci = CCI(inputs)
    cmo = CMO(inputs)
    dx = DX(inputs)
    macd, macds, macdh = MACD(inputs)
    macdext, macdexts, macdexth = MACDEXT(inputs)
    macdfix, macdfixs, macdfixh = MACDFIX(inputs)
    mfi = MFI(inputs)
    minusdi = MINUS_DI(inputs)
    minusdm = MINUS_DM(inputs)
    mom = MOM(inputs)
    plusdi = PLUS_DI(inputs)
    plusdm = PLUS_DM(inputs)
    ppo = PPO(inputs)
    roc = ROC(inputs)
    rocp = ROCP(inputs)
    rocr = ROCR(inputs)
    rocr100 = ROCR100(inputs)
    rsi = RSI(inputs)
    slowk, slowd = STOCH(inputs)
    fastk, fastd = STOCHF(inputs)
    rsifastk, rsifastd = STOCHRSI(inputs)
    trix = TRIX(inputs)
    ultosc = ULTOSC(inputs)
    willr = WILLR(inputs)

    #volume indicators
    ad = AD(inputs)
    adosc = ADOSC(inputs)
    obv = OBV(inputs)

    #cycle indicators
    ht_dcperiod = HT_DCPERIOD(inputs)
    ht_dcphase = HT_DCPHASE(inputs)
    ht_phasor_inphase, ht_phasor_quadrature = HT_PHASOR(inputs)
    ht_sine, ht_leadsine = HT_SINE(inputs)
    ht_trendmode = HT_TRENDMODE(inputs)

    #price transform
    avgprice = AVGPRICE(inputs)
    medprice = MEDPRICE(inputs)
    typrice = TYPPRICE(inputs)
    wclprice = WCLPRICE(inputs)

    #volatility ind
    atr = ATR(inputs)
    natr = NATR(inputs)
    trange = TRANGE(inputs)

    #pattern rec
    twocrows = CDL2CROWS(inputs)
    threeblackcrows = CDL3BLACKCROWS(inputs)
    threeinside = CDL3INSIDE(inputs)
    threelinestrike = CDL3LINESTRIKE(inputs)
    threeoutside = CDL3OUTSIDE(inputs)
    threestarsinsouth = CDL3STARSINSOUTH(inputs)
    threeWhiteSoldiers = CDL3WHITESOLDIERS(inputs)
    abandonBaby = CDLABANDONEDBABY(inputs)
    advanceBlock = CDLADVANCEBLOCK(inputs)
    beltHold = CDLBELTHOLD(inputs)
    breakAway = CDLBREAKAWAY(inputs)
    closingM = CDLCLOSINGMARUBOZU(inputs)
    consealBabySwall = CDLCONCEALBABYSWALL(inputs)
    counterAttack = CDLCOUNTERATTACK(inputs)
    darkCloudCover = CDLDARKCLOUDCOVER(inputs)
    doji = CDLDOJI(inputs)
    dojiStar = CDLDOJISTAR(inputs)
    dragonFlyDoji = CDLDRAGONFLYDOJI(inputs)
    engulfing = CDLENGULFING(inputs)
    eveningDojiStar = CDLEVENINGDOJISTAR(inputs)
    eveningStar = CDLEVENINGSTAR(inputs)
    gapSideSideWhite = CDLGAPSIDESIDEWHITE(inputs)
    graveStoneDoji = CDLGRAVESTONEDOJI(inputs)
    hammer = CDLHAMMER(inputs)
    hangingMan = CDLHANGINGMAN(inputs)
    harami = CDLHARAMI(inputs)
    haramiCross = CDLHARAMICROSS(inputs)
    highWave = CDLHIGHWAVE(inputs)
    hikkake = CDLHIKKAKE(inputs)
    hikkakeMod = CDLHIKKAKEMOD(inputs)
    homingPigeon = CDLHOMINGPIGEON(inputs)
    identical3Crows = CDLIDENTICAL3CROWS(inputs)
    inNeck = CDLINNECK(inputs)
    invertedHammer = CDLINVERTEDHAMMER(inputs)
    kicking = CDLKICKING(inputs)
    kickingByLength = CDLKICKINGBYLENGTH(inputs)
    ladderBottom = CDLLADDERBOTTOM(inputs)
    longLeggedDoji = CDLLONGLEGGEDDOJI(inputs)
    longLine = CDLLONGLINE(inputs)
    maruBozu = CDLMARUBOZU(inputs)
    matchingLow = CDLMATCHINGLOW(inputs)
    matHold = CDLMATHOLD(inputs)
    morningDojiStar = CDLMORNINGDOJISTAR(inputs)
    morningStar = CDLMORNINGSTAR(inputs)
    onNeck = CDLONNECK(inputs)
    piercing = CDLPIERCING(inputs)
    rickShawman = CDLRICKSHAWMAN(inputs)
    riseFall3Methods = CDLRISEFALL3METHODS(inputs)
    seperatingLines = CDLSEPARATINGLINES(inputs)
    shootingStar = CDLSHOOTINGSTAR(inputs)
    shortline = CDLSHORTLINE(inputs)
    spinningTop = CDLSPINNINGTOP(inputs)
    stalledPattern = CDLSTALLEDPATTERN(inputs)
    stickSandwhich = CDLSTICKSANDWICH(inputs)
    takuri = CDLTAKURI(inputs)
    tasukiGap = CDLTASUKIGAP(inputs)
    thrusting = CDLTHRUSTING(inputs)
    triStar = CDLTRISTAR(inputs)
    unique3River = CDLUNIQUE3RIVER(inputs)
    upsideGap2Crows = CDLUPSIDEGAP2CROWS(inputs)
    xSdieGap3Methods = CDLXSIDEGAP3METHODS(inputs)

    data = np.array([close, high, low, volume, openMid, time, sma, bbuper, bbmiddle, bblower, dema, ema, htTrend, kama, ma, mama, fama, midpoint, midprice, sar, sarext, t3, trima, wma, adx, adxr, ppo, apo, aroonDown, aroonUp, aroon, bop, cci, cmo, dx, macd, macds, macdh, macdext, macdexts, macdexth, macdfix, macdfixs, macdfixh, mfi, minusdi, minusdm, mom, plusdi, plusdm, roc, rocr, rocp, rocr100, rsi, slowk, slowd, fastk, fastd, rsifastk, rsifastd, trix, ultosc, willr, ad, adosc, obv, ht_dcperiod, ht_dcphase, ht_phasor_inphase, ht_phasor_quadrature, ht_sine, ht_leadsine, ht_trendmode, avgprice, medprice, typrice, wclprice, atr, natr, trange, twocrows, threeblackcrows, threeinside, threelinestrike, threeoutside, threestarsinsouth, threeWhiteSoldiers, abandonBaby, advanceBlock, beltHold, breakAway, closingM, consealBabySwall, counterAttack, darkCloudCover, doji, dojiStar, dragonFlyDoji, engulfing, eveningDojiStar, eveningStar, gapSideSideWhite, graveStoneDoji, hammer, hangingMan, harami, haramiCross, highWave, hikkake,  hikkakeMod, homingPigeon, identical3Crows, inNeck, invertedHammer, kicking, kickingByLength, ladderBottom, longLeggedDoji, longLine, maruBozu, matchingLow, matHold, morningDojiStar, morningStar, onNeck, piercing, rickShawman, riseFall3Methods, seperatingLines, shootingStar, shortline, spinningTop, stalledPattern, stickSandwhich, takuri, tasukiGap, thrusting, triStar, unique3River, upsideGap2Crows, xSdieGap3Methods])

    return data

Competing forks seems to nice idea but currently I don't have much ideas remaining to improve the performance of the agent. In that scenario may be collaboration and sharing ideas seems as a better alternative.
Also, these are a hell lot of indicators in the preprocessing code, currently the input is closing, high, low and volume normalised by their values at previous time steps. Maybe 5-6 more features may steal the deal. What say, which of these should be selected?

Seems like a nice idea, need to do a bit more research on this topic. I was also considering using Google Trends per minute statistics as an input to the model as they serve as a proxy to the market sentiments. But currently I am having issue acquiring per minute trends due to rate limits of the API.

from @antkve,
neuralnetcrypto.py is a trading bot for crypto markets (bitcoin, ethereum, etc). It trains on historical price data, learning to notice patterns in the Relative Strength Index and Moving Average indicators. It does pretty well atm but i'll be extending it to analyze more indicators soon:
https://github.com/antkve/neuralnet/blob/master/neuralnetcrypto.py

related - https://github.com/songyunfan/DeepRLTrading/blob/master/prediction-using-RL.pdf

I think if we sunset the buy / sell / hold actions - and simply make the code predict prices - then the scope of the problem will be more fitting. Then we use the trained ai indicator to trade.

the reinforcement paper use these components in vector.

we can use backtrader to test strategies for profitability.
It's very simple.
https://github.com/ianmobbs/Backtrader/blob/2b8b06f56a9530a86e3c08a7fa21495fe7c56643/main.py
from my understanding of the paper - and reading this graph

predictions of 1 day ahead - really sucked
predictions 8 days out - worked well.
predictions of 16 days and beyond sucked.

seems like the more indicators = the better - here author is using 18.
https://launchpad.ai/blog/trading-bitcoin

solved
https://github.com/sahpat229/RL-Trading/blob/460f1d7944f5220b4d0a799546ed74c6765f02ac/DetPolicyGradeNoHistory/baselines/ddpg/datacontainer.py

So I think the state representation should include

rate of change of closing, high and low prices and volume of the past say 180 minutes (history length)
sma(5), sma(20) and sma(60)
rsi
Can you explain more about acceleration in price?

https://launchpad.ai/blog/trading-bitcoin are using 18 indicators but they are not providing history length of historical prices in the state representation, so I guess apart from all the historical prices, it is sufficient to provide certain technical indicators.
Also I am thinking of passing these technical indicators directly to the fully connected layers at the end of the model after the convolutional layer and recurrent layer on the historical prices.

recommend https://github.com/tensorflow/models/pull/1509/files
we can use those indicates directly.

This is the direct link to the file extracting all the features from the historical price dataset as mentioned by @yunhaizhu .
Also we need to first decide upon the time periods for which to calculate the indicators.

to throw a spanner in the works - consider we need an RNN to discriminate how long the time periods to use.

@johndpope this complicates the already difficult task, I guess.

I think the approach is to somehow in prediction to be able to pass in time frame - rather than updating embeddings. trading is all about timing and direction.
At any point in technicals - there will be dozens on conflicting directions.
buy on monthly / sell on daily / buy on 4 minute.
Need to be able to discriminate which time has more weight.

https://www.tradingview.com/symbols/BTCUSD/technicals/

I am currently working in dev branch of this repository where I have integrated samre12/gym-cryptotrading as the environment. I am planning to add the decided technical indicators as a part of state representations first in the environment repository and then train the agent in it.

Working with predefined maximums and minimums raises an issue in the sense that the price of Bitcoin varies in extremes in the time period under consideration. Using fixed values for the entire time frame will render certain values very low in certain cases and very high in certain cases sending the network in shocks.
Take as an example the case of SMA.

Regarding normalisation of the input to the network, I have found this which describes a general method to normalise the input in a reinforcement learning problem using online algorithms to calculate mean and variance.
Here I can also apply same technique as BN to adapt the transform with the learning using gamma and beta (refer here).

I did a lot of validation on technical indicators on a FCN net, and here are the main insights:

Delta is key

Just adding the difference (delta) between the previous n-days close prices is key to increase model accuracy.
Also, change in momentum and change of change (second derivative) is key.

Distance is key

Specifically, the distance between the closing price and key indicators such as

Bollinger bands
MACD
20/60 WMA
20/200 EMA

To some extent, these insights are almost too obvious to be true, but here you codify domain knowledge by making implicit observations explicit. Taking the infamous Bollinger bands as an example, when the closing price approaches the upper-band, usually a trend reversal is due. The distance between close and upper band captures exactly this and allows the net/agent to find a matching rule.

RSI / ADX / CCI / all dojis and you name it. None of them actually improved model performance.

Calculating most commonly used indicators isn't terribly fun, so instead, I pull them together with the data from AlphaVantage and merge them over index. You may wonder what's the point of downloading indicator data, but as AlphaVantage offer tick resolution data for free, loading and caching them speeds things up noticeably.
I have stuffed all the above in a bunch of utils and released them here:
https://github.com/marvin-hansen/StockUtils/blob/master/Main.py
Finally, in terms of RL, it seems that neuro evolution combined with Bayesian optimization seems to work quite well:
https://github.com/huseinzol05/Stock-Prediction-Models/blob/master/free-agent/evolution-strategy-bayesian-agent.ipynb


Google uses textarea instead of input

As reported by a reader of the Academy, the lesson where we scrape Google is broken, because input[title=’Search’] is no longer the way Google's HTML looks like.

Ha, this seems to be already fixed!


Not mapping when change setter method parram

NóI have a entity with attribute/field type String.
And DTO type String.
When I change setter method, this field is null. How to fix it?
@Getter
@Setter
public class Entity {
    private String field;
}

@Getter
@Setter
public class Dto {
    @Setter(AccessLevel.None)
    private String field;

    public void setField(String ...field) {
        this.field = String.join(",", field);
    }

    public void setField(String field) {
        this.field = field
    }
}

ModelMapper mapper = new ModelMapper();
mapper.map(entity, Dto.class); // entity.field = "a,b" => mapper result field is null

Thank you

By default, ModelMapper select a setter if the method matched below conditions.

Has only one parameter
Return type is void or the declaring class

So random method will be selected when there are multiple methods matched.
ModelMapper should have better strategy to select one of the conflict methods.
Before the issue fixed, I suggest you can use explicit mapping.
    DestinationSetter<Dto, String> setter = Dto::setField;
    modelMapper.typeMap(Entity.class, Dto.class).addMapping(Entity::getField, setter);

Thank you


Upgrade gradle to 3.0

Upgrade!
Release notes of gradle 3.0:
https://docs.gradle.org/3.0/release-notes

👍
Let's embulk migrate to gradle 3.0 too.
https://github.com/hiroyuki-sato/embulk/commit/a7687b257e177ffe438eaa8973a26e7a1ab8f728
Note.
Should we update gradlew and gradlew.bat commands too?
(Both files are modified)

I will plan to upgrade gradle v3.2.1 on https://github.com/embulk/embulk/pull/528.


Live-reload broken after latest update

I'm submitting a ...  (check one with "x")
[x] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here, instead see use [gitter](https://gitter.im/mgechev/angular2-seed) or [stackoverflow](https://stackoverflow.com/questions/tagged/angular2)

Current behavior

I have updated my project with latest angular V5, everything seems to be working fine except live reloading. Just curious what could be wrong with my config?
Expected behavior

Live reload should work as expected.
Minimal reproduction of the problem with instructions
Tried to reproduce the issue with a fresh clone, but it was working fine, looks like just issue with my config.

What is the motivation / use case for changing the behavior?

Please tell us about your environment:

Windows 10
Visual studio code
Node v8.9.1
NPM 5.5.1

Angular Seed Version: aaaaf75
2e34161

Node: node --version =

Hi @aamir1995,
If issue can’t be reproduced on clean clone , how we can help you ?
Maybe you can provide your fork with issue ?

Hi @vyakymenko thanks for the quick response, I just upgraded the project after a long time there were lots of conflicts when pulling the code from Angular-seed, So maybe there is something wrong with my config. can you give some hints where I can debug this issue?

Hi @aamir1995 , one of the best solutions is to make a clean clone and copy your app files from old version to the new clone, then resolve dependencies issues if you have some in project.config.ts and migration issues if you use some deprecated stuff.

That's what I was thinking, Will move the app to a new clone. Thanks.

@aamir1995 , I think we can close this issue.

@vyakymenko thanks!


Download converted .splat file as .ply

hello, I have a bunch of .splat files I would like to convert to .ply.
would it be possible to add a button on the webpage where you can download the imported file as a ply ?
alternatively, could you help me find the function that converts .splat files to .ply files ? I wouldn't mind opening a PR with the changes :)
thanks,
elia

It works the other way around -> .ply files get converted to splat files (you can drag and drop .ply files) - there is currently no function that converts splat files back to ply files

@Vertexwahn oh I understand. thanks for the clarification


code 109 The pipe has been ended

Following the test code to read Overlapped data after checking the result of read_overlapped I got a code 109.

    extern crate csv;
    extern crate redis;
    #[macro_use] extern crate log;
    extern crate env_logger;
    extern crate miow;
    #[macro_use] extern crate throw;

    use std::thread;
    use std::sync::atomic::{AtomicBool, Ordering};
    use redis::{Commands, PipelineCommands};
    use std::env;
    use log::{LogRecord, LogLevelFilter};
    use env_logger::LogBuilder;
    use std::fs::{File, OpenOptions};
    use std::sync::mpsc::channel;
    use std::io::{BufReader,BufRead};
    use std::io::Error;

    use miow::pipe::{NamedPipe, NamedPipeBuilder};
    use miow::iocp::CompletionPort;
    use miow::Overlapped;

    extern "C" {
      fn signal(sig: u32, cb: extern fn(u32));
    }

    extern fn interrupt(_:u32) {
	unsafe {
		stop_loop.as_ref().map(|z| z.store(true, Ordering::Relaxed));
	}
    }

    static mut stop_loop : Option<AtomicBool> = None;

    fn handle_pipe(name : &String) -> Result<(), throw::Error<Error>> {
	let mut a = throw!(NamedPipe::new(name));
        debug!("pipe new");
        let name2 = name.clone();
        let t = thread::spawn(move || {
	    let mut f = File::create(name2);
            debug!("pipe created");
        });

        let cp = throw!(CompletionPort::new(1));
        debug!("CompletionPort new");
        cp.add_handle(3, &a);
        a.connect();
        debug!("connect");
        let mut data = Vec::with_capacity(4096);
	let mut over = Overlapped::zero();

        debug!("Overlapped");
        let result = unsafe {
        data.set_len(4096);
        debug!("read_overlapped");
        a.read_overlapped(&mut data, &mut over)
    };

    // check `result` to see if an error happened
    throw!(result);

    // wait for the I/O to complete
    let notification = cp.get(None).unwrap();
    info!("notification");
    unsafe {
        data.set_len(notification.bytes_transferred() as usize); // update how many bytes were read
    }

    let string = String::from_utf8(data).unwrap(); // parse utf-8 to a string

    // work with string
    info!("{:?}", string);

    t.join();
    Ok(())
    }

    fn name(symbol: String, number: String) -> String {
        format!(r"\\.\pipe\{}{}", symbol, number)
    }

    fn main() {

	let param1 = ::std::env::args().nth(1).unwrap();
	let param2 = ::std::env::args().nth(2).unwrap();

        let format = |record: &LogRecord| {
            format!("{} - {}", record.level(), record.args())
        };

        let mut builder = LogBuilder::new();
        builder.format(format).filter(None, LogLevelFilter::Info);

        if env::var("RUST_LOG").is_ok() {
           builder.parse(&env::var("RUST_LOG").unwrap());
        }

        builder.init().unwrap();

        let pipe_name = name(param1, param2);
        info!("Pipename: {:?}", &pipe_name);

        let mut result = Ok(());
        unsafe {
    	    stop_loop = Some(AtomicBool::new(false));
      	    signal(2, interrupt);
    	    result = handle_pipe(&pipe_name);
        }
        match result {
            Err(e) => error!("{:?}", e),
            _ => info!("Normal termination !"),
        }

    }

A repo for this is at https://github.com/mmacedoeu/pipetoredis.rs

The code 109 corresponds to ERROR_BROKEN_PIPE which you may be receiving here because the File (connection to the pipe) could be closed before you actually read from the pipe (so you're reading from a broken pipe). Do you expect this to work, however?

I am trying to make named pipe server based on your test case from pipe.rs:
#[test]
    fn named_read_overlapped() {
        let name = name();
        let a = t!(NamedPipe::new(&name));

        let t = thread::spawn(move || {
            let mut f = t!(File::create(name));
            t!(f.write_all(&[1, 2, 3]));
        });

        let cp = t!(CompletionPort::new(1));
        t!(cp.add_handle(3, &a));
        t!(a.connect());

        let mut b = [0; 10];
        let mut over = Overlapped::zero();
        unsafe {
            t!(a.read_overlapped(&mut b, &mut over));
        }
        let status = t!(cp.get(None));
        assert_eq!(status.bytes_transferred(), 3);
        assert_eq!(status.token(), 3);
        assert_eq!(status.overlapped(), &mut over as *mut _);
        assert_eq!(&b[..3], &[1, 2, 3]);

        t!(t.join());
    }

I dont think I could read from a broken pipe, but your test could ? How can I make a working pipe server with overlapped IO ?

In your code after you connect to the pipe (via File::create) nothing is written, the file is immediately dropped, and I think that's the difference?

Ok, I got It, in your test you are just emulating the pipe client. For me it is a standalone server, after removing the thread to create the File everything works.


Single key also fires adjacent key

I thought everything was OK and assembled the case then found that the M key also fires the N key. The N key on its own only fires itself. All other keys are fine. I'm assuming the means there's a short somewhere; does this information indicate where it's likely to be?
Fortunately, I made the switches swappable, but it means taking the case apart...
To add to your gallery...

As it's my first keyboard, I took the keycaps off an old PU-87 I bought as non-functional on eBay. I chose to print the case in orange to pick up the keycap legend colour,

Fortunately trivial. A poorly trimmed diode leg was pushed against the switch mount when the bottom of the case was put on!

The best kind of issue is the one solved when I discover it ;)
Thanks for the image, looks really good!
P.S. Switching the color of the diode to yellow will probably be cool! (look into qmk keys controlling led, you can control color, brightness and intensity and enable some effects if you like also)


Refactor daemonset check

Before we merge this to master, lets move the paths back to daemonset-check rather than the daemonset-check-refactor directory.

I have the build as of cdffc07 running locally without errors:
time="2020-06-17T23:30:38Z" level=info msg="Found instance namespace: kuberhealthy"
time="2020-06-17T23:30:38Z" level=info msg="Kuberhealthy is located in the kuberhealthy namespace."
time="2020-06-17T23:30:38Z" level=info msg="Setting check time limit to: 10m51.0247799s"
time="2020-06-17T23:30:38Z" level=info msg="Parsed POD_NAMESPACE: kuberhealthy"
time="2020-06-17T23:30:38Z" level=info msg="Performing check in kuberhealthy namespace."
time="2020-06-17T23:30:38Z" level=info msg="Setting DS pause container image to: gcr.io/google-containers/pause:3.1"
time="2020-06-17T23:30:38Z" level=info msg="Setting shutdown grace period to: 1m0s"
time="2020-06-17T23:30:38Z" level=info msg="Setting check daemonset name to: daemonset"
time="2020-06-17T23:30:38Z" level=info msg="Kubernetes client created."
time="2020-06-17T23:30:38Z" level=info msg="Running pre-check cleanup. Deleting any rogue daemonset or daemonset pods before running daemonSet check."
time="2020-06-17T23:30:38Z" level=info msg="Cleaning up daemonsets"
time="2020-06-17T23:30:39Z" level=info msg="Cleaning up daemonset pods"
time="2020-06-17T23:30:39Z" level=info msg="Waiting for all daemonSets or daemonset pods to clean up"
time="2020-06-17T23:30:42Z" level=info msg="All daemonsets cleared"
time="2020-06-17T23:30:42Z" level=info msg="Finished cleanup. No rogue daemonsets or daemonset pods exist"
time="2020-06-17T23:30:42Z" level=info msg="Running daemonset check"
time="2020-06-17T23:30:42Z" level=info msg="Running daemonset deploy..."
time="2020-06-17T23:30:42Z" level=info msg="Deploying daemonset."
time="2020-06-17T23:30:42Z" level=info msg="Found taints to tolerate: []"
time="2020-06-17T23:30:42Z" level=info msg="Generating daemonset kubernetes spec."
time="2020-06-17T23:30:42Z" level=info msg="Deploying daemonset with tolerations:  []"
time="2020-06-17T23:30:42Z" level=info msg="Timeout set: 10m51.0247799s for all daemonset pods to come online"
time="2020-06-17T23:30:43Z" level=info msg="DaemonsetChecker: Daemonset check waiting for 1 pod(s) to come up on nodes [docker-desktop]"
time="2020-06-17T23:30:44Z" level=info msg="DaemonsetChecker: All daemonset pods have been ready for 1 / 5 seconds."
time="2020-06-17T23:30:45Z" level=info msg="DaemonsetChecker: All daemonset pods have been ready for 2 / 5 seconds."
time="2020-06-17T23:30:46Z" level=info msg="DaemonsetChecker: All daemonset pods have been ready for 3 / 5 seconds."
time="2020-06-17T23:30:47Z" level=info msg="DaemonsetChecker: All daemonset pods have been ready for 4 / 5 seconds."
time="2020-06-17T23:30:48Z" level=info msg="DaemonsetChecker: All daemonset pods have been ready for 5 / 5 seconds."
time="2020-06-17T23:30:48Z" level=info msg="DaemonsetChecker: Daemonset daemonset-daemonset-1592436630-1592436638 done deploying pods."
time="2020-06-17T23:30:48Z" level=info msg="Successfully deployed daemonset."
time="2020-06-17T23:30:48Z" level=info msg="Running daemonset removal..."
time="2020-06-17T23:30:48Z" level=info msg="Removing daemonset."
time="2020-06-17T23:30:48Z" level=info msg="DaemonsetChecker deleting daemonset: daemonset-daemonset-1592436630-1592436638"
time="2020-06-17T23:30:48Z" level=info msg="There are 1 daemonset pods to remove"
time="2020-06-17T23:30:48Z" level=info msg="DaemonsetChecker removing daemonset. Proceeding to remove daemonset pods"
time="2020-06-17T23:30:48Z" level=info msg="Successfully requested daemonset removal"
time="2020-06-17T23:30:49Z" level=info msg="Successfully removed daemonset."
time="2020-06-17T23:30:49Z" level=info msg="DaemonsetChecker using LabelSelector: app=daemonset-daemonset-1592436630-1592436638,source=kuberhealthy,khcheck=daemonset to remove ds pods"
time="2020-06-17T23:30:49Z" level=info msg="DaemonsetChecker waiting for 1 pods to delete"
time="2020-06-17T23:30:49Z" level=info msg="DaemonsetChecker is still removing: kuberhealthy daemonset-daemonset-1592436630-1592436638-cs6d7 on node docker-desktop"
time="2020-06-17T23:30:50Z" level=info msg="DaemonsetChecker using LabelSelector: app=daemonset-daemonset-1592436630-1592436638,source=kuberhealthy,khcheck=daemonset to remove ds pods"
time="2020-06-17T23:30:50Z" level=info msg="DaemonsetChecker waiting for 1 pods to delete"
time="2020-06-17T23:30:50Z" level=info msg="DaemonsetChecker is still removing: kuberhealthy daemonset-daemonset-1592436630-1592436638-cs6d7 on node docker-desktop"
time="2020-06-17T23:30:51Z" level=info msg="DaemonsetChecker using LabelSelector: app=daemonset-daemonset-1592436630-1592436638,source=kuberhealthy,khcheck=daemonset to remove ds pods"
time="2020-06-17T23:30:51Z" level=info msg="DaemonsetChecker waiting for 1 pods to delete"
time="2020-06-17T23:30:51Z" level=info msg="DaemonsetChecker is still removing: kuberhealthy daemonset-daemonset-1592436630-1592436638-cs6d7 on node docker-desktop"
time="2020-06-17T23:30:52Z" level=info msg="DaemonsetChecker using LabelSelector: app=daemonset-daemonset-1592436630-1592436638,source=kuberhealthy,khcheck=daemonset to remove ds pods"
time="2020-06-17T23:30:52Z" level=info msg="DaemonsetChecker waiting for 1 pods to delete"
time="2020-06-17T23:30:52Z" level=info msg="DaemonsetChecker is still removing: kuberhealthy daemonset-daemonset-1592436630-1592436638-cs6d7 on node docker-desktop"
time="2020-06-17T23:30:53Z" level=info msg="DaemonsetChecker using LabelSelector: app=daemonset-daemonset-1592436630-1592436638,source=kuberhealthy,khcheck=daemonset to remove ds pods"
time="2020-06-17T23:30:53Z" level=info msg="DaemonsetChecker waiting for 1 pods to delete"
time="2020-06-17T23:30:53Z" level=info msg="DaemonsetChecker is still removing: kuberhealthy daemonset-daemonset-1592436630-1592436638-cs6d7 on node docker-desktop"
time="2020-06-17T23:30:54Z" level=info msg="DaemonsetChecker using LabelSelector: app=daemonset-daemonset-1592436630-1592436638,source=kuberhealthy,khcheck=daemonset to remove ds pods"
time="2020-06-17T23:30:54Z" level=info msg="DaemonsetChecker waiting for 1 pods to delete"
time="2020-06-17T23:30:54Z" level=info msg="DaemonsetChecker is still removing: kuberhealthy daemonset-daemonset-1592436630-1592436638-cs6d7 on node docker-desktop"
time="2020-06-17T23:30:55Z" level=info msg="DaemonsetChecker using LabelSelector: app=daemonset-daemonset-1592436630-1592436638,source=kuberhealthy,khcheck=daemonset to remove ds pods"
time="2020-06-17T23:30:55Z" level=info msg="DaemonsetChecker waiting for 1 pods to delete"
time="2020-06-17T23:30:55Z" level=info msg="DaemonsetChecker is still removing: kuberhealthy daemonset-daemonset-1592436630-1592436638-cs6d7 on node docker-desktop"
time="2020-06-17T23:30:56Z" level=info msg="DaemonsetChecker using LabelSelector: app=daemonset-daemonset-1592436630-1592436638,source=kuberhealthy,khcheck=daemonset to remove ds pods"
time="2020-06-17T23:30:56Z" level=info msg="DaemonsetChecker waiting for 0 pods to delete"
time="2020-06-17T23:30:56Z" level=info msg="DaemonsetChecker has finished removing all daemonset pods"
time="2020-06-17T23:30:56Z" level=info msg="Successfully removed daemonset pods."
time="2020-06-17T23:30:56Z" level=info msg="Done running daemonset check"
time="2020-06-17T23:31:01Z" level=info msg="Running final check cleanup before shutting down"
time="2020-06-17T23:31:01Z" level=info msg="Cleaning up daemonsets"
time="2020-06-17T23:31:01Z" level=info msg="Cleaning up daemonset pods"


Change bounds to work on gassolar, solar, and jho simultaneously

@mjburton11 this also changes the default style to not pulling lower level variables up to self. unless they're used in constraints! Advantages: makes it clearer where variables are coming from. Disadvantages: makes it harder to change where variables come from. It's just a style thing, so feel free to change that part back...

This doesn't work on gplibrary tests, I think because they're a very different bounding environment than the full airplanes are? If you've got the time to get those tests working with the bounds that would be fantastic!


Change exchange call

Closes https://github.com/5afe/safe-support/issues/233
This is caused because our third-party exchange for prices is not accepting the API key as a header anymore, it's required to be in the request as a query param.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 92.41%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
4311

Relevant Lines:
4563

💛  - Coveralls


ensureIndex is not a function

according to the docs, you create indexes against a collection, best practice using the ensureIndex method.
However, in yoru tests there is no ensureIndex (https://github.com/arangodb/arangojs/blob/master/src/test/11-managing-indexes.ts)
Are we forced to use create index?
[according to docs](https://www.arangodb.com/docs/stable/indexing-working-with-indexes.html#creating-an-index
ndexes should be created using the general method ensureIndex. This method obsoletes
the specialized index-specific methods ensureHashIndex, ensureSkiplist,
ensureUniqueConstraint etc.

just a note for anyone else pulling out there dreadlocs,
the http createIndex method behaves similarly to arangosh ensureIndex
https://www.arangodb.com/docs/stable/http/indexes-working-with.html
200: If the index exists, then a HTTP 200 is returned.

The createIndex method will be renamed to ensureIndex in the upcoming major release to address this confusion.

thank you


Fix NullReferenceException when no profiles are provided

Fixes #533

Profiles are not required, they just convey reusable variables. I will add a warning because it's no common though in our usage. Example, if the scenario defines which machines to run on because you don't have multiple environments, you don't need profiles.


MalformedURLException running badgeup init

I am getting the following error after following the documentation:
[02:28:14] [pool-2-thread-2892/ERROR] [Sponge/luckperms]: The Scheduler tried to run the task badgeup-sponge-client-A-4397 owned by Plugin{id=badgeup-sponge-client, name=BadgeUp Sponge Client, version=1.0.5, description=Easily add Achievements and Awards to your Sponge server, url=https://www.badgeup.io/, authors=[Robert Herhold], source=/home/minecraft/multicraft/servers/sf3/./plugins/badgeup-sponge-client-v1.0.5.jar}, but an error occured.
java.lang.RuntimeException: java.net.MalformedURLException: no protocol: 3m2eoddy1d/criteria
	at com.mashape.unirest.http.HttpClientHelper.prepareRequest(HttpClientHelper.java:183) ~[HttpClientHelper.class:?]
	at com.mashape.unirest.http.HttpClientHelper.request(HttpClientHelper.java:131) ~[HttpClientHelper.class:?]
	at com.mashape.unirest.request.BaseRequest.asJson(BaseRequest.java:68) ~[BaseRequest.class:?]
	at io.badgeup.sponge.command.executor.BadgeUpInitCommandExecutor$BadgeUpInitRunnable.meatLoverAchievement(BadgeUpInitCommandExecutor.java:142) ~[BadgeUpInitCommandExecutor$BadgeUpInitRunnable.class:?]
	at io.badgeup.sponge.command.executor.BadgeUpInitCommandExecutor$BadgeUpInitRunnable.run(BadgeUpInitCommandExecutor.java:68) ~[BadgeUpInitCommandExecutor$BadgeUpInitRunnable.class:?]
	at org.spongepowered.api.scheduler.Task$Builder.lambda$execute$0(Task.java:138) ~[Task$Builder.class:1.10.2-2221-5.1.0-BETA-2135]
	at org.spongepowered.common.scheduler.SchedulerBase.lambda$startTask$0(SchedulerBase.java:183) ~[SchedulerBase.class:1.10.2-2221-5.1.0-BETA-2135]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_101]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_101]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_101]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_101]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_101]
Caused by: java.net.MalformedURLException: no protocol: 3m2eoddy1d/criteria
	at java.net.URL.<init>(URL.java:593) ~[?:1.8.0_101]
	at java.net.URL.<init>(URL.java:490) ~[?:1.8.0_101]
	at java.net.URL.<init>(URL.java:439) ~[?:1.8.0_101]
	at com.mashape.unirest.http.HttpClientHelper.prepareRequest(HttpClientHelper.java:171) ~[HttpClientHelper.class:?]
	... 11 more

BadgeUp Log

@Mohron Thank you for reporting this issue! We'll take a look to see what went wrong.

See v1.1.0 for the release fixing this


Feature/use label no label basemaps

Overview
Using a unified basemap (e.g., Positron Light, with geography and labels in the same map) makes it impossible for us to draw thumbnails between the geography and the labels. We'd like to draw thumbnails between geography and labels. This PR separates the basemaps we use so we can do that.
Checklist

~[ ] Styleguide updated, if necessary~
~[ ] Swagger specification updated, if necessary~

Demo

Notes
Currently includes #889. I'm happy either to close that one and include both changes here since they're pretty related or to hold off until #889 is merged.
Testing Instructions

Bring up your front- and backends
Zoom to a densely labeled area. I picked New York City, but it's up to you
Switch light/dark basemaps and watch the label font color change
Mouse over or add some scenes to the map and verify that the labels stay on top of the thumbnails

Closes #823

This looked better in my head. It's a incredibly hard to read/ugly on the dark base map. I would recommend against merging this in for now. I think, we might have to come up with a better solution.

Ok I'll close


[BACKLOG-36342] expand filename textbox for saving file

:white_check_mark: Build finished in 5m 26s
Build command:
mvn clean verify -B -e -Daudit -amd -pl \
plugins/file-open-save-new/core

:exclamation: No tests found!
:information_source:  This is an automatic message


Compatibilities with swift

I working a project with swift language.
After I pod install and try to do with it, i found out some how my tab bar same as before does not have the underline below tab bar.
Why?

Hi @xuanzi23!
Unfortunately BFPaperTabBarController only supports Interface Builder. To get it working programmatically, try this:
https://github.com/Timstarockz/BFPaperTabBarController/tree/master/Classes
Thanks.

In interface builder how I setting for the underline?

I'm not sure why your code above isn't working actually. I will have to try to use this library in Swift to find out.
In the meantime, to answer your question, it is IBInspectable so you can set it in the Attributes Inspector panel:

@bfeher (void)selectTabAtIndex:(NSInteger)index animated:(BOOL)animated this function how to use it?

#pragma mark - Utility Functions
/**
 *  Selects and highlights a tab.
 *
 *  @param index    (NSInteger) The index of the tab you wish to select and highlight.
 *  @param animated (BOOL) A flag to determine if we should animate the change or not.
 */
- (void)selectTabAtIndex:(NSInteger)index animated:(BOOL)animated;

Inside of your BFPaperTabBarController subclass:
[self selectTabAtIndex:2 animated:NO];

Outside of your BFPaperTabBarController subclass:
[bfPaperTBC selectTabAtIndex:2 animated:NO];

If you haven't already, please take a look at the demo project.
$ pod try BFPaperTabBarController

I try to convert to swift. Thanks

I haven't tried it but it may be something along the lines of:
selectTabAtIndex(2, animated:true)

is it compatible with Swift3?

@bfeher If I work with gesture, the underline highlight won't follow to the page.

@bfeher sorry for the late reply
`func handleSwipes(_ sender:UISwipeGestureRecognizer) {
    if let swipeGesture = sender as? UISwipeGestureRecognizer {

        switch swipeGesture.direction {
        case UISwipeGestureRecognizerDirection.right:
            print("Swiped right")
            let selectedIndex: Int = self.tabBarController!.selectedIndex
            self.tabBarController!.selectedIndex = selectedIndex - 1

        case UISwipeGestureRecognizerDirection.left:
            print("Swiped left")
            let selectedIndex: Int = self.tabBarController!.selectedIndex
            self.tabBarController!.selectedIndex = selectedIndex + 1

        default:
            break
        }
    }
}`

I create a gesture for handling the swipe gesture. So the user can change the content by using swipe but somehow the underline highlight not following with the active tab, so i wonder how to do that

Hi @xuanzi23
Have you tried to replace
self.tabBarController!.selectedIndex = selectedIndex - 1
...
self.tabBarController!.selectedIndex = selectedIndex + 1

with
self.tabBarController!.selectTabAtIndex(selectedIndex - 1, animated: true)
...
self.tabBarController!.selectTabAtIndex(selectedIndex + 1, animated: true)

?

@bfeher
It give me error "Value of type 'UITabBarController' has no member 'selectTabAtIndex'"

Sorry you need to typecast self.tabBarController as a BFPaperTabBarController or instead of accessing self.tabBarController directly.

@bfeher I access as
let abc = BFPaperTabBarController() but still cannot.

Sorry I was not being clear. Here is code that I have working for a UIViewController to allow it to swipe left and right between tabs:
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipes(_:)))
        swipeRight.direction = .right
        view .addGestureRecognizer(swipeRight)
        let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipes(_:)))
        swipeLeft.direction = .left
        view .addGestureRecognizer(swipeLeft)
    }

    func handleSwipes(_ sender:UISwipeGestureRecognizer) {

        if let swipeGesture = sender as? UISwipeGestureRecognizer {

            switch swipeGesture.direction {
            case UISwipeGestureRecognizerDirection.right:
                print("Swiped right")
                let selectedIndex: Int = self.tabBarController!.selectedIndex
                print("selected index = \(selectedIndex)")
                if let bfptbc = self.tabBarController! as? BFPaperTabBarController {
                    bfptbc.selectTab(at: max(selectedIndex - 1, 0), animated: true)
                    // max(selectedIndex - 1, 0) keeps our index in range
                }

            case UISwipeGestureRecognizerDirection.left:
                print("Swiped left")
                let selectedIndex: Int = self.tabBarController!.selectedIndex
                print("selected index = \(selectedIndex)")
                if let bfptbc = self.tabBarController! as? BFPaperTabBarController {
                    bfptbc.selectTab(at: min(selectedIndex + 1, (self.tabBarController?.viewControllers?.count)! - 1), animated: true)
                    // min(selectedIndex + 1, (self.tabBarController?.viewControllers?.count)! - 1) keeps our index in range
                }

            default:
                break
            }
        }
    }

}

@bfeher Thanks a lot!

Thank you for supporting this control :)


Add Pan-Atlantic University

https://pau.edu.ng

https://www.pau.edu.ng/programmes/undergrad/digital-media/ [B.Sc. Information Science and Media Studies (Digital Media)]

email address pattern<EMAIL_ADDRESS>

@digitalcrafted I am sorry for a delay with processing your request.
Pull request merged. Thank you!


Always export only selected columns

I tried to export rows selected by column. And it exports only selected columns even if "selected columns only" unchecked
DBeaver Community Edition	<IP_ADDRESS>809092115

Can't reproduce that. What export format do you use?

I tried DBUnit and SQL

Thanks for the bug report


white image issue

Hello,
I have a problem in using your library if I select a white part of the image, I got the following error:
Uncaught TypeError: Cannot read property '0' of null
at ColorThief.getColor (ui-cropper.js:3595)
at Image.imageDC.onload (ui-cropper.js:2949)
Thanks,

Any update on this, facing the same issue?


About the point cloud data input format of the function "information_detector()" during inference

from mmdet3d. apis import init_ model, inference_ detector

result, _ = inference_ detector(model, point_cloud)

Can the data input of the function "information_detector()" be in other forms besides the point cloud file path? If I want to input the point cloud data directly, is there any other suitable way?

Of course,inferecne_detector supports input the point_cloud  data directly (for example: numpy array format), more details can be seen here

Of course, supports input the point_cloud data directly (for example: numpy array format), more details can be seen hereinferecne_detector

Thank you very much for your answer.
I read the point cloud data from rosbag and convert it to numpy format
for topic, msg, t in bag_data:
pointcloud_list = point_cloud2.read_points_list(msg)
pointcloud_np = np.array(list(pointcloud_list))
...
model_result, _ = inference_detector(model, pointcloud_np)
After being sent to the network, the following error occurred:

I checked the 609 lines of the "transforms_3d. Py" file at the error location, and printed and viewed the data contents of "input_dict ['points']" and "rot_mat_t". The data transmitted through the file path and directly are as follows:

It seems that the data type of "input_dict ['points']" is just numpy array, and the way to read the file path is not just this.
I'm not sure if the format of the data I passed in is correct.

I continued to trace the input data format and found the difference between the two, it seems that it should be loaded to get a dict, but I just loaded the numpy array in:

I went on to retrospectively enter the data format, and both looked the same as the definition of dict on lines 106 to 139 in the "inference.py" file:

The "def inference_detector (model, pcd)" of the file "inference.py": the function can see that when the input data is not "str", the data is loaded using "LoadPointsFromDict":
    if not isinstance(pcd, str):
        cfg = cfg.copy()
        # set loading pipeline type
        cfg.data.test.pipeline[0].type = 'LoadPointsFromDict'

Then go to the file "loading.py" and see:
@PIPELINES.register_module()
class LoadPointsFromDict(LoadPointsFromFile):
    """Load Points From Dict."""

    def __call__(self, results):
        assert 'points' in results
        return results

So actually it still goes into the "class LoadPointsFromFile(object):"?
But when I added a print to "class LoadPointsFromFile(object):", I found that the program execution did not enter the class.

I solved it.
I used the code below to actively process the input point cloud numpy array format data before sending it into the network, which passed and got the same result as the file path of the loaded .bin.
# numpy array to LiDARPoints
points_class = get_points_type(coord_type)
pointcloud_np = points_class(pointcloud_np, points_dim=pointcloud_np.shape[-1], attribute_dims=None)

Although I achieved the result I wanted, I am still not sure if there is a problem with the numpy array format I entered, or if there is a bug in the interface code of mmdetection3d.

hi, The function "get_points_type" is undefined, how can i find this function, what "coord_type" means.

I solved it. I used the code below to actively process the input point cloud numpy array format data before sending it into the network, which passed and got the same result as the file path of the loaded .bin.
# numpy array to LiDARPoints
points_class = get_points_type(coord_type)
pointcloud_np = points_class(pointcloud_np, points_dim=pointcloud_np.shape[-1], attribute_dims=None)

Although I achieved the result I wanted, I am still not sure if there is a problem with the numpy array format I entered, or if there is a bug in the interface code of mmdetection3d.

hi, "get_points_type" and "coord_type" are undefine, how can i import this two memebers.

And then I check the loading.py,
def __call__(self, results):
        """Call function to normalize color of points.

        Args:
            results (dict): Result dict containing point clouds data.

        Returns:
            dict: The result dict containing the normalized points.
                Updated key and value are described below.

                - points (:obj:`BasePoints`): Points after color normalization.
        """
        points = results['points']
        assert points.attribute_dims is not None and \
            'color' in points.attribute_dims.keys(), \
            'Expect points have color attribute'
        if self.color_mean is not None:
            points.color = points.color - \
                points.color.new_tensor(self.color_mean)
        points.color = points.color / 255.0
        results['points'] = points
        return results

it means that My pointcloud data should have color attribute?

Do you know what the problem is, please? I'm having a similar problem to yours.


#72: Added Options.map to support property arguments -> Options[Map[String, String]]

Created a Options.map function that returns an Options[Map[String, String]] instance to parse property args.
Created a suite test ("property arguments") in Options spec for this feature.
I think that this is the simplest solution to support property arguments as Map[String, String] values.
I have doubts about:

Create a separate class to support this feature (Options.Map) but I'm confused with the current Options.Map final case class (that I think is used now to support map function in Options trait)
Think about the need to create both key and value typed property args (Map[A, B] instead of Map[String, String])

I fixed some merge conflicts and merged as part of #102  :D Thanks for the awesome work @jgoday

Just trying to get the ducks in a row for today's Hackathon :)


Which is indirect spoke vnet?

https://docs.microsoft.com/en-us/azure/virtual-wan/virtual-wan-route-table-portal
In this page,  'indirect spoke VNet' is confusing me.
It seems that these sentense is inconsistent
-> we refer to the NVA VNet as an 'indirect spoke VNet'
-> Indirect spoke VNet address spaces: (VNet1 and VNet2)
In this exmaplle of this page, my understanding is 3 Vnet(Vnet1, Vnet2 and NVA Vnet) is 'indirect spoke VNet'
Is this true?

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

ID: ff59f117-79c3-f134-f6ff-9c3745a7cd52
Version Independent ID: 6e1bf338-5501-b1d7-6b2d-3dc98dc25a60
Content: Virtual WAN: Create virtual hub route table to NVA: Azure portal
Content Source: articles/virtual-wan/virtual-wan-route-table-portal.md
Service: virtual-wan
GitHub Login: @cherylmc
Microsoft Alias: cherylmc

@kariyukisusumu , We are looking into this query and will update you as soon as possible.

@SubhashVasarapu-MSFT , Thank you for your comment. I'm waiting for your update.

@kariyukisusumu , Appreciate your patience. Yes, there are three VNETs in this scenario where NVA VNET is treated as indirect spoke VNET as it sits between the HUB and actual VNETs. Here we can see the direct VNET connections were in blue arrows and indirect were indicated with black arrows. In the starting statement we did only stated that NVA VNET as an indirect VNET spoke but from working perspective, both VNET1 and VNET2 were peered to hub indirectly through NVA VNET spoke. Moreover from the readers perspective it looks little challenging so editing the document accordingly.

@SubhashVasarapu-MSFT Thank you for your comments. I understand your comments. I'm waiting for the update of this documents. Thanks.


Upgrade Zod to fix npm audit vulnerability

Blocked on this PR to be merged and released: https://github.com/colinhacks/zod/pull/2824

Fixed in Zod 3.22.3

Done in master

Released in 3.22.0


MWPW-140836: fix/standartise ietf language tags

Reason for this update:
Broken pricing in multiple geos.
Commerce is using the 'ietf' value to extract language and country to fetch Prices. In some of ietf values in Milo the country is missing, this PR is fixing that.

update locale ietf language tags, adding/correcting a regional subtag (2 digits country code)
format: xx-YY, where xx is language and YY is country
Umbrella geo's like MENA, SEA, CIS, AFRICA etc do not need the ietf to have a country since there is a separate mapping for them, see details
country code can also be more than 2 digits, e.g. 'fil-PH'

This PR also removes unexisting 'ar_es' geo and remaps 'ar' back to Argentina (currently is mapped to Arabic language though the Sharepoint folder contains content for Argentina).
Related Ticket: MWPW-140836
This effort is a follow up of @hparra work, see Wiki
According to the wiki, multiple features can be affected by this change so I am going to request code owners to verify this change.
Proposed changes

geo
ietf

ae_en
'en-AE'

ar
'es-AR'

cr
'es-CR'

ec
'es-EC'

eg_ar
'ar-EG'

eg_en
'en-EG'

gr_el
'el-GR'

gt
'es-GT'

id_en
'en-ID'

id_id
'id-ID'

ie
'en-IE'

il_he
'he-IL'

in_hi
'hi-IN'

in
'en-IN'

kw_ar
'ar-KW'

kw_en
'en-KW'

my_en
'en-MY'

my_ms
'ms-MY'

ng
'en-NG'

nz
'en-NZ'

ph_en
'en-PH'

pr
'es-PR'

qa_ar
'ar-QA'

qa_en
'en-QA'

sa_ar
'ar-SA'

sa_en
'en-SA'

th_en
'en-TH'

th_th
'th-TH'

vn_en
'en-VN'

vn_vi
'vi-VN'

za
'en-ZA'

All proposed values are taken from the current Production CC Dexter:
Prod Example for ae_en
Test URLs:

Before: https://main--milo--adobecom.hlx.page/africa/drafts/mariia/commerce?martech=off
After: https://ietf-fix--milo--adobecom.hlx.page/africa/drafts/mariia/commerce?martech=off

@3ch023 - given all changes need to go live at the same time to avoid errors, I would rather merge this into a feature branch first. After everyone is done with the changes we can contribute back to main.

given all changes need to go live at the same time to avoid errors, I would rather merge this into a feature branch first.

hi @narcis-radu, not sure i got it, some feature branch in milo repo you mean?
how will it be used?
and what changes do you mean need to go live at the same time?
from my understanding, this PR affects only Milo, no consumer will be impacted by it, because they have their own scripts.js override.
Consumers can do their changes at any time later.

Discussion: https://github.com/orgs/adobecom/discussions/1722a
@3ch023 Do you still need this PR for Solution 2 you outlined in discussion?


Full report by user show nothing if no data was revialed, instead should show "no data" message

Fixed in https://github.com/maddevsio/comedian/commit/11c7788ffdc2a34580d7cf11014491604a31ea88


Feature Request : Subscribe notifications

The Issue
please add the notification feature in LBRY app. so publishers can see who subscribes to his channel. I only have 1 subscriber lupo TV but when I open LBRY APP there is no such notification. here is a screenshot of Lupo Tv that has subscribed my channel.
System Configuration

LBRY Daemon version: 0.18.0
LBRY App version: 0.19.2
LBRY Installation ID: 4HrrogG8zemVjZ4bbuggKehjmeZF6eUuX5pVqQijahpAVFpNrt2iuscGmGMfvwXu6j
Operating system: Windows (Windows-10-10.0.15063)

Screenshots

i referenced this issues #695


Augur Status Section

Shows blocking syncing information. colorized based on how many blocks behind.
Button bar to set the time of stats shown.

done closing


Const objects as arguments to glz::read_json

Bug Description
In a scenario where the const modifier is unintentionally forgotten from our object (should not be there but can be forgotten), it becomes difficult to discern whether glz::read_json has failed or succeeded during parsing into a const object. The function doesn't provide error reports for const objects; instead, it skips writing data into that object and does not provide any way for the user to notice this issue immediately. Here is a simple case to describe the issue.
How To Reproduce
#include <glaze/json.hpp> // glz::read_json, glz::format_error, glz::meta

#include <print>       // std::println
#include <string>      // std::string
#include <string_view> // std::string_view
#include <vector>      // std::vector

struct person
{
    std::string last_name;
    std::string first_name;
    std::uint32_t age;
    std::vector<std::string> hobbies;
};

template <>
struct glz::meta<person>
{
    static constexpr auto value = object(
        "last_name",  [](auto&& self) -> auto& { return self.last_name; },
        "first_name", [](auto&& self) -> auto& { return self.first_name; },
        "age", 	      [](auto&& self) -> auto& { return self.age; },
        "hobbies",    [](auto&& self) -> auto& { return self.hobbies; }
    );
};

auto main() -> int
{
    const std::string_view json_data = R"({
        "last_name": "Doe",
        "first_name": "John",
        "age": 42,
        "hobbies": [
            "football",
            "basketball",
            "tennis"
        ]
    })";

    const person p{}; // Notice the const here !
    const auto person_parse_error = glz::read_json(p, json_data);

    // p is still empty, but person_parse_error is false ?
    if (person_parse_error) // Looking at the implementation of read_json, it looks like const values are skipped.
    {
        std::string error_buffer{};
        std::println("error: {}", glz::format_error(person_parse_error, error_buffer));

        return EXIT_FAILURE;
    }

    std::println("person2: {} {} is {} years old, his hobbies are {}, {} and {}",
        p.first_name, p.last_name,  p.age,
        p.hobbies[0], p.hobbies[1], p.hobbies[2] // p.hobbies is empty, so this is UB
    );

    return EXIT_SUCCESS;
}

Expected behavior
When using glz::read_json, I was expecting either:

A compilation error when attempting to populate a const object.
An error indicating that parsing into a const object is not allowed.

Configuration

OS: Windows 11
Compiler: MSVC 19.37.32822

Question
Given that it appears that glz::read_json checks for const objects (unless my understanding of this code below is incorrect), was there a specific reason for not returning a glz::parse_error in this scenario?
template <auto Opts, class T, is_context Ctx, class It0, class It1>
GLZ_ALWAYS_INLINE static void op(T&& value, Ctx&& ctx, It0&& it, It1&& end) noexcept
{
   if constexpr (std::is_const_v<std::remove_reference_t<T>>) {
      // do not read anything into the const value
      skip_value<Opts>(std::forward<Ctx>(ctx), std::forward<It0>(it), std::forward<It1>(end));
   }
   else {
      from_json<std::remove_cvref_t<T>>::template op<Opts>(std::forward<T>(value), std::forward<Ctx>(ctx),
                                                           std::forward<It0>(it), std::forward<It1>(end));
   }
}

@HoussamCzn, the reason this isn't a parse error is that often we want reading and writing JSON to round trip, and sometimes C++ classes have elements like static constexpr uint64_t id = 555;. We want to be able to write out these constants and allow compile time logic with constexpr, but obviously if we get a message containing the item it can't be changed, but it often doesn't mean there is an error.
Nevertheless, I do think it makes sense to add a compile time option that would return errors if an attempt is made to read into a constant value. This could also be employed on a variable by variable basis using glaze's wrapper approach. So, I'll keep this issue alive and add this feature in the future.
Thanks for bringing this up!

I merged in #417, which allows you to specify a compile time option to error if an attempt is made to read into a const value.
Here's a basic unit test:
const std::string hello = "world";
std::string s = R"(explode)";
constexpr glz::opts opts{.error_on_const_read = true};
expect(glz::read<opts>(hello, s) == glz::error_code::attempt_const_read);


[RFE] Add the new 'assume-root' feature

AWS introduced a feature to assume-root of child accounts mainly in order to "fix" bad Deny All S3/SQS policies
It would be good to have this feature implemented in aws-nuke
If "AccessDenied" while listing/deleting SQS/S3,

assume root with related "task-policy-arn",
remove or set a default policy
retry cleanup

Pre-requisites:

Need to have "IAM - Root access management" Enabled
IAM entity who cleans up, should have "sts:AssumeRoot" on "arn:aws:iam::*:root"

Interesting idea. Not sure about the feasibility the way the authentication is currently written. I'd need to implement a way to track task to a particular resource, and a specific error detection w/ secondary auth, but auth happens higher in the stack and we are lower down when the error occurs.
I'm willing to look into this further, but likely won't be for a while.