feat(operate): Adds a .operate() and alias .o() operator

Allows you to apply an operator to a given stream, without it needing to be on the Observable prototype. This is mostly useful for library authors where adding operators to Observable.prototype can cause headaches to their users.
It takes the provided operator function and any arbitrary arguments then internally just calls operator.apply(this, args).
This is solves a similar problem as the TC39 proposed bind operator syntax e.g. stream::map(i => i + 1) but that's stage-0 and not supported by TypeScript. Note that this current implementation lacks type safety/suggestions, just like it would if you used map.call(stream, i => i + 1).
There is also an alias of just the letter o, as in .o(map, i => i + 1) so your code can remain fairly terse.
import { of } from 'rxjs/observable/of';
import { filter } from 'rxjs/operator/filter';
import { map } from 'rxjs/operator/map';

of(1, 2, 3)
  .o(filter, i => i > 1)
  .o(map, i => i * 10)
  .subscribe(x => console.log(x));
// 20..30

Without this, you'd need to something like this, which can get rather hairy quick:
let result = of(1, 2, 3);
result = filter.call(result, i => i > 1);
result = map.call(result, i => i * 10);
result.subscribe(x => console.log(x));

The name operate and having an short alias like o hasn't had a ton of thought into it, just what @blesh and I came up with in 5 minutes. While I generally hate aliases, the idea was that searching and discovering o in our documentation is basically fruitless, but having a long name is annoying when using these often in a library. We considered ._(operator) .$(operator) .invoke(operator)
Cc/ @IgorMinar ng2 may like this and it adds nearly trivial overhead since it only has the extra function invocation on stream setup, not next()'s so should be out of the hot path for nearly all cases

Coverage increased (+0.002%) to 97.041% when pulling b19d85d15312731e4a8fde6895f1859ed24d48d2 on jayphelps:operate into 1bee98a8af40e5e650c371a083237c56b5bd0911 on ReactiveX:master.

Coverage increased (+0.002%) to 97.041% when pulling feb379dde439d737237974a8230850c44c2b12c1 on jayphelps:operate into 1bee98a8af40e5e650c371a083237c56b5bd0911 on ReactiveX:master.

How does TypeScript handle this when it comes to operators like window or groupBy? Are types inferred properly?

It seems like the first argument should be Function<Observable<R>> or (...args: any[]) => Observable<R>  and it should return Observable<R>. Then we'll likely need a few signature overloads for it. @david-driscoll? Thoughts?

@blesh not entirely sure of your first question regarding groupBy, but generally best I can tell when using things like ...args Array<any> you lose type info. so certainly using this is not type safe. Nothing we can really do about it AFAIK.

@jayphelps, you should be able to use genetics for this. operate<R,A,B,C>((a:A, b:B, c:C) => Observable<R>, a:A, b:B, c:C): Observable<R>

@blesh I'm still not following. Can you show me what you mean using a more complete example maybe? Add your suggested generics to:
stream.operate(map, i => i + 1)

I just mean for signature overrides. I'll add more when I'm not on my phone.

This is quite intriguing but has one flaw - the types won't flow properly so you will not get operator-specific checking.
I don't know enough about how the operators are internally wired together (I remember something about lift operator being used), but wouldn't it be possible to do something like this:
of(1, 2, 3)
  .o(filter(i => i > 1))
  .o(map(i => i * 10))
  .subscribe(x => console.log(x));

maybe even:
of(1, 2, 3)
  .o(
    filter(i => i > 1),
    map(i => i * 10)
   )
  .subscribe(x => console.log(x));

// cc: @chuckjaz

@Igorbek yep, the lack of type safety is just like map.call(stream, ...args).
of(1, 2, 3)
  .o(filter(i => i > 1))
  .o(map(i => i * 10))
  .subscribe(x => console.log(x));

or similar wouldn't work out-of-box because operators require this context to call this.lift() when you invoke them. We could create lazy wrappers for all of them...but dang that's a bunch of duplicate type signatures and code. At that point, perhaps it just be easier to add the signatures for all our operators?
// .map() signature
o<T>(operator: typeof map, project: (value: T, index: number) => R, thisArg?: any): Observable<T>;
// .filter() signature
o<T>(operator: typeof filter, predicate: (value: T, index: number) => boolean, thisArg?: any): Observable<T>;
// etc
o<T>(operator: Function, ...args: Array<any>): Observable<T> {
  return operator.apply(this, args);
}

I see. This would work as well. If I have custom operators, I should be
able to reopen the type and add an overload. Interesting...
On Thu, Oct 13, 2016 at 9:25 PM Jay Phelps<EMAIL_ADDRESS>wrote:

@Igorbek https://github.com/Igorbek yep, the lack of type safety is
just like map.call(stream, ...args).
of(1, 2, 3)
.o(filter(i => i > 1))
.o(map(i => i * 10))
.subscribe(x => console.log(x));
or similar wouldn't work out-of-box because operators require this
context to call this.lift() when you invoke them. We could create lazy
wrappers for all of them...but dang that's a bunch of duplicate type
signatures and code. At that point, perhaps it just be easier to add the
signatures for all our operators?
// .map() signatureo(operator: typeof map, project: (value: T, index: number) => R, thisArg?: any): Observable;// .filter() signatureo(operator: typeof filter, predicate: (value: T, index: number) => boolean, thisArg?: any): Observable;// etco(operator: Function, ...args: Array): Observable {
return operator.apply(this, args);
}
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ReactiveX/rxjs/pull/2034#issuecomment-253706587, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AANM6LCp4ouZlXnZwZtyuk5lsWPt_vOqks5qzwQ3gaJpZM4KWhzT
.

Why not just stay with let? This looks weird to me and adds yet another way of doing the same thing.

Because let is rather verbose to use in this way IMO and the number one reason is that it is not included on the prototype by default--so you can't add it or you're defeating the point. We could consider making it added always by default though.

Worst case we should be able to augment the operator on Observable<T> inside of each function module.  Which would basically be what the signature interfaces were.  Except we don't have to worry about augmenting the prototype, overloading the method be sufficient.

I remember mentioning something on slack, but it's worth raising perhaps.
If we updated the operators to not use this and the observable was instead the first argument.  Keep in mind this can be something we either do or undo using a pre-build step.  We produce one version, that's used for prototype augmentation, and another version that is exported for the general methods.
The only difference between (as of TypeScript 2.0) is the argument name and the call to this.  This way we avoid the perf cost associated wraping each operator in a method users this as the first argument.
export function map<T, R>(this: Observable<T>, project: (value: T, index: number) => R, thisArg?: any): Observable<R> {
  return this.lift(new MapOperator(project, thisArg));
}

// vs
export function map<T, R>(context: Observable<T>, project: (value: T, index: number) => R, thisArg?: any): Observable<R> {
  return context.lift(new MapOperator(project, thisArg));
}

With this we would see something like...
import { of } from 'rxjs/observable/of';
import { filter } from 'rxjs/operator/filter';
import { map } from 'rxjs/operator/map';

map(
  filter(
    of(1, 2, 3),
    i => i > 1
  ),
  i => i * 10
)
  .subscribe(x => console.log(x));

Now that is clearly a little unwieldy, much like the call syntax.
Then if we have this new o method (or perhaps extend let to also apply arguments), we would get:
of(1, 2, 3)
  .let(filter, i => i > 1) // calls func(this, ...) with the given observable.
  .let(map, i => i * 10)
  .subscribe(x => console.log(x));

Also to @IgorMinar's point we could also introduce a new method on each operator itself (eg o or operate.  We would get something like... (which wouldn't require changing let at all).

of(1, 2, 3)
  .let(filter.o(i => i > 1))
  .let(map.o(i => i * 10))
  .subscribe(x => console.log(x));

The o method would have an interface something like map.o<T, R>(projector: (value: T) => R): (observable: Observable<T>) => Observable<R>.
On the TypeScript side there would have to be some explicit typing, as there would be no context to find T since map.o would be called before it's handed to the Observable.
This also opens the door for something like lodash's flow
var a = _.flow([
  filter.o(i => i > 1),
  map.o(i => i * 10)
]);

// or

var a = _.flow([
  _.partial(filter, _, i => i > 1),
  _.partial(map, _, i => i * 10)
]);

a(of(1, 2, 3))
  .subscribe(x => console.log(x));

source
  .let(s => filter.call(s, x => x > 1))
  .let(s => map.call(s, x => x + 10))

vs
source
  .op(filter, x => x > 1)
  .op(map, x => x + 10)

otherwise someone could do something like
const letWrap = (operatorFn) => (...args) => (source) => operatorFn.apply(source, args);

const _filter = letWrap(filter);
const _map = letWrap(map);

source
  .let(_filter(x => x > 1))
  .let(_map(x => x + 10))

We could even provide the letWrap function as part of the library, since it's so lightweight. The issue then is that let doesn't necessarily exist on Observable, it would need to be added to the prototype before use.

Another possibility:
source.with(filter, map)
  .filter(x => x > 1)
  .map(x => x + 10)

Here is an alternative implementation:  https://github.com/ReactiveX/rxjs/pull/2036
It's based off of my previous comment.

I tried to get the types flowing for each of these proposals. I got the closest with @blesh's proposal but still not great.
The original proposal can be summarized into:
  interface O<T> {
    o(o: (this: O<T>, p: (n: T) => boolean) => O<T>, p: (n: T) => boolean): O<T>;
    o<R>(o: (this: O<T>, p: (n: T) => R) => O<R>, p: (n: T) => R): O<R>;
  }

  function of<T>(...args: T[]): O<T> { return null; }

  function map<T, R>(this: O<T>, p: (v: T) => R): O<R> { return null; }
  function filter<T>(this: O<T>, p: (v: T) => boolean): O<T> { return null; }

  var a = of(1, 2, 3).o(map, n => n.toString())
  var b = of(1, 2, 3).o(filter, n => n > 1);

The type of a gets inferred to be O<{}> as the R type parameter is not constrained by the environment which means it gets {} then it is merged with the R inferred from the n => n.toString() which is string. Both candidate Rs are merged to which yields {}.
The type of b is correct in this example as there T is bound in the call to of().
The @IgorMinar proposal is better for map but worse for filter and can be summarized by:
  interface O<T> {
    o<R>(t: (s: O<T>) => O<R>): O<R>;
  }
  function of<T>(...args: T[]): O<T> { return null; }
  function map<T, R>(p: (n: T) => R): (s: O<T>) => O<R> { return null; }
  function filter<T>(p: (n: T) => boolean): (s: O<T>) => O<T> { return null;}

  var a = of(1, 2, 3).o(filter(n => n > 1));
  var b = of(1, 2, 3).o(map(n => n.toString()));

Here the type of a is O<{}> for similar reasons the map example failed above.
The type of b however is right but the type of n is lost and we only get O<string> because toString() is always type string. If the type of the lambda depended on the type of n then we would get this wrong too.
The @blesh proposal is really an extends pattern and can be typed using the & type operator and summarized by:
interface O<T> {
    o<V>(operators: V): O<T> & V;
  }

  function map<T, R>(this: O<T>, p: (v: T) => R): O<R> { return null; }
  function filter<T>(this: O<T>, p: (v: T) => boolean): O<T> { return null; }

  function of<T>(...args: T[]): O<T> { return null; }

  var a = of(1, 2, 3).o({map}).map(n => n.toString());
  var b = of(1, 2, 3).o({filter}).filter(n => n > 1);

In this example, the types of all the variables and parameters are what you would expect them to be. a is of type O<string> and b is of type O<number>. However, the projected operators get lost immediately so you cannot string them together as one of the proposals examples:
var c = of(1, 2, 3).o({filter, map}).filter(n => n > 1).map(n => n.toString())

Here the call to map is flagged as an error as the type of filters result is O<number> not O<number> & {filter: typeof filter, map: typeof map} as you might expect. This makes chaining laborious as the call to o must be repeated at each step.
var c = of(1, 2, 3).of({filter}).filter(n => n > 1).o({map}).map(n => n.toString());

Talking with @blesh, he also brought up a pretty neat pattern, using private Symbols.
The operators you use internally can be added in a single place like:
import { Observable } from 'rxjs/Observable';
import { filter } from 'rxjs/operator/filter';
import { map } from 'rxjs/operator/map';
import { switchMap } from 'rxjs/operator/switchMap';

export const $$filter = Symbol('@@filter');
export const $$map = Symbol('@@map');
export const $$switchMap = Symbol('@@switchMap');

Observable.prototype[$$filter] = filter;
Observable.prototype[$$map] = map;
Observable.prototype[$$switchMap] = switchMap;

Then when you want to use them:
import { $$map, $$filter } from './operators';

of(1, 2, 3)
  [$$filter](i => i > 1)
  [$$map](i => i * 10)
  .subscribe(x => console.log(x));
// 20..30

This also is not typesafe though as described here.

@jayphelps ... I'm rekindling interest in this, actually. It might be useful in falcor-router to prevent leaking internal implementation details.

@jayphelps ... how do you feel about just having one method, but naming it op()? Terse, but still gets the point accross... "operators" is frequently reduced to "ops" in our field.

Also there's this
https://www.youtube.com/watch?v=suafkk2vWNI

Final thought... would it be useful for this method to support partial application of arguments (similar to Function.prototype.bind)?
I'm not sure how that would work in some operators cases... like merge for example... but
source$.op(merge, a$, b$)

Oops accidentally closed.

@blesh I'm down with op()
import { of } from 'rxjs/observable/of';
import { filter } from 'rxjs/operator/filter';
import { map } from 'rxjs/operator/map';

of(1, 2, 3)
  .op(filter, i => i > 1)
  .op(map, i => i * 10)
  .subscribe(x => console.log(x));
// 20..30

Now that's been a little while I'm curious if @IgorMinar and everyone else has different opinions than before, especially related to lack of type safety.

Final thought... would it be useful for this method to support partial application of arguments (similar to Function.prototype.bind)?
I'm not sure how that would work in some operators cases... like merge for example... but
source$.op(merge, a$, b$)

I'm not sure I follow? I believe your example would work as-is with this PR, wouldn't it?

Coverage increased (+0.7%) to 97.699% when pulling feb379dde439d737237974a8230850c44c2b12c1 on jayphelps:operate into 1bee98a8af40e5e650c371a083237c56b5bd0911 on ReactiveX:master.

I'm not sure I follow? I believe your example would work as-is with this PR, wouldn't it? It doesn't partially apply, it really just proxies (or whatever)

I started typing that, then accidentally hit "Close and Comment" when I meant to cancel what I was typing.

I think @david-driscoll's idea for adding some type-safety was pretty decent:

Worst case we should be able to augment the operator on Observable inside of each function module. Which would basically be what the signature interfaces were. Except we don't have to worry about augmenting the prototype, overloading the method be sufficient.

Seems viable. Did we after test this?

Proof of concept using the current playground is available here
Code below
interface Observable<T> {
  op(operator: typeof filter, predicate: (x: T) => boolean): Observable<T>;
}

function filter<T>(o: Observable<T>, predicate: (x: T) => boolean) { }

let o: Observable<string>;
// x is a string here
o.op(filter, x => x === 1);
o.op(filter, x => x === '1');

let o2: Observable<{ a: string; b: number }>;
// x is a string here
o2.op(filter, ({ a, b }) => a === 'hello' && b === 1);

I'm totally for this feature, but just a quick question: does anybody know if fantasy-land already have a name for this? If so, it would seem valuable to align here.

@trxcllnt I'm afraid not, since op would be n-ary where n arguments vary depending on the first argument. No such thing in Fantasy Land. To be honest this op looks like Function.call or Ramda's http://ramdajs.com/docs/#call

@mhegazy ... do you see any compile-time performance problems with @david-driscoll's proposal above? Basically we'd be looking at doing this with 60+ operators, some of which have 6-7 overloads.

don't believe this PR is applicable anymore


Promote topic with schema

What is currently missing?
Promotion of topic with schema is a bit problematic. An user has to promote topic, wait for approval, and then promote schema. It requires multiple  actions between requester and approval.
How could this be improved?
Add possibility to promote topic with schema at once.
Is this a feature you would work on yourself?
no

@maciejmaciejko-gid I understand there are multiple actions in there to promote a schema, but sometimes, to keep the process simple, we had to design it this way.


Script colors

Because... who doesn't like colors?
Of course make this option configurable using script arguments or config.sh

Closed in a8b5aad55de4e2b1146ff8a3638462219a0e9db1 and 7c559556634ade14c905ea6099901024e837a4c1


Liqo Agent (un)installer

Description
This PR adds the possibility in the Liqo installer to also (un)install the Liqo Agent version contained in the latest Liqo release.
For this occasion, both the Agent internal and desktop banner icons have been renewed.
Major Changes
Integration pipeline

update of some workflow commands according to the new github actions syntax

addition of the steps required to build the Agent binary and upload it in the newly created release when a tag is pushed

Installer

addition of the Agent installer that can be triggered by previously setting

INSTALL_AGENT=true

the binary is directly downloaded from the latest Liqo release

the Agent is installed as a desktop application by means of '.desktop' template files.

Icons

the Agent iconset has been updated according to Liqo official logo.

Pull Request Test Coverage Report for Build 276420187

14 of 29 (48.28%)  changed or added relevant lines in 3 files are covered.
146 unchanged lines in 6 files lost coverage.
Overall coverage decreased (-1.1%) to 49.72%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

internal/tray-agent/app-indicator/notify.go
10
13
76.92%

internal/tray-agent/app-indicator/indicator.go
3
15
20.0%

Files with Coverage Reduction
New Missed Lines
%

api/sharing/v1alpha1/advertisementClient.go
2
70.0%

internal/advertisement-operator/remote-watcher.go
9
73.47%

cmd/virtual-kubelet/internal/commands/root/root.go
10
0%

internal/node/podcontroller.go
39
78.59%

internal/node/pod.go
40
64.88%

internal/advertisement-operator/broadcaster.go
46
51.88%

Totals

Change from base Build 276370791:
-1.1%

Covered Lines:
6748

Relevant Lines:
13572

💛  - Coveralls

/rebase

Superseded by #339,#338,#337


Update tracing to work with newer semconv and zipkin

This updates the go.mod file in tracing and source code to work with newer version of zipkin and semconv. Needed for https://github.com/ease-lab/vSwarm/runs/6114640539?check_suite_focus=true

That looks good! Could you please check if you can see the traces properly for one of the workloads? Eg chain serving with docker-compose would be enough

Yea looks good 👍
And good idea from Dmitrii to check the trace output.
You know how to do right?

Python tracing files are broken. Can you check?

That is because the protobuf file path is not correct for integ-tests in go.mod. This is changed in the add-relay branch where for relay we start using vSwarm-proto repo for helloworld instead of the local one.

thanks for the explanation, I see. however, this means that you should have first introduced vSwarm-proto in a separate PR and merged it. Please plan the order of PRs more carefully next time so there are no broken tests


CORD_Process

Hello, I really hope to get the processing code from the original data to type0 format of the cor dataset, Can I?

Hi @Estelle-zy
The type0-data is already close to the original format.
Wonseok


Release the Dec6 libs

Gil created a release branch Dec6
The smoke test passed, let's release the libs Monday Dec 10

Published new version of libs:

storefront 0.1.0-prealpha.9 (latest) (was already published as next)
core 0.1.0-prealpha.4 (latest)

styles were not changed, so I only changed next tag to latest.
removed old next tags
PR to merge release in master: https://github.com/SAP/cloud-commerce-spartacus-storefront/pull/571
Tag for core added: https://github.com/SAP/cloud-commerce-spartacus-storefront/tags
After merging release to master it should be also merged to develop, because of version bump for core library.
After that we should upgrade packages version in our main package.json

Released<EMAIL_ADDRESS>and checked shellapp. Everything seems to be working.
There are still steps that need to be done from comment above;

Merge release branch into master and then develop. (I don't know if we should squash and merge this other option is not available for me).

I updated the dependencies in our root package.json in release branch, so only merge is required.

Release branch merged to both master and develop


Reset colors for git show

Problem: When the user has non default color settings for git show,
the output is full of terminal escaping sequences
Solution: Add --no-color to the git show command

Thanks, merged!

Thank you!


lastRecorded does not work as doc

Hello,
I was not able to make lastRecored worked as the doc suggest it should.
Looking at the code, it only get the first saved url in the session and if it's equal to the current, it return a fallback (not explained in doc) or null.
My understanding was that it will search in the queue for the first different than current url...
(and unpiled all current urls).
Was my understanding correct ?
Thanks for your input,
Denis
    public function lastRecorded(?string $fallback = null): ?string
    {
        $lastUrlFromHistory = collect(session()->get('livewire-urls.history'))->first();

        if ($lastUrlFromHistory === $this->current($fallback)) {
            return $fallback;
        }

        return $lastUrlFromHistory ?? $fallback;
    }

Hey @dgillier, thank you for your message! I'd need to refresh my mind on this, so might be later this week.

Hello @ralphjsmit,
by any chance did you had a look ?
Thanks, Denis

Hey @dgillier, no sorry, not yet. I got caught up and other and have a project deadline next week. If you have time earlier and can provide a PR with test (or only a failing test), then I can review that.

This should be fixed in #11, thanks for the report! Could you verify whether it's working as expected now?

Yeah !
Works great :)
Tks a lot !


Close #268: Backend check / validation

Thanks, it seems to me that .js files had formatting change along with functional changes, those could have been separate commits but no need to split this PR into two.

I will perform "rebase and merge", so these commits will be separate

Thanks, at some point it might make sense to split UI content into several files for maintainability and pack them into one using e.g. webpack https://webpack.js.org. Up to you to decide if it would be worth the effort

I agree, good point, I created task #270


How about change the "SpeedText" Under "unit"?

As shown in illustration.

Thank you!

Hi @chanben2005
You can change it by:
speedomenter.speedTextListener = { speed -> "My speed is $speed" }

It's so important to know that speedTextListener will be called on each frame on main thread, you must avoid doing heavy work inside it.

Thank you for your guidance. I will try it.


migrate implementations from old repo

#7
More or less just copied any files that wouldn't cause an overwrite, and updated use statements of various modules accordingly.
Made a few tweaks to searching::kth_smallest_heap as it relied on a different version of the Heap struct, and made sorting::quick_sort::partion public as searching::kth_smallest depended on it.
I also took the liberty to rename string_matching into just string like in the old repo, as there are a few algorithms that aren't strictly related to matching.
This is pretty much my first time contributing to anything. I just came across the issue and thought "move some stuff around? I can do that!" (one of these days I might try my luck contributing some actual code).
Please let me know if there's anything I missed or should've done differently.

Hey! Thanks for taking the time to do this! ❤
That's a lot to review hehehe. I wanted to progressively review people's PR to have the time to do it, but I think it's ok this way as well.
I'll take a look in the coming days and will let you know anything that comes up.
Also, I understand I didn't respond in a while, so it is ok if you want to drop this, I can take ownership 👍🏻

That's a lot to review hehehe. I wanted to progressively review people's PR to have the time to do it, but I think it's ok this way as well.

Yeah, it actually occurred to me just after submitting, and for a moment I was like "where do I un-PR", but I figured it'd probably just get ignored if it was an issue.
I'd love to see it through, I'm just a little hung up at the moment.
Perhaps it would be more manageable (for both of us) if I rolled back that monster of a commit, and started incrementally reintroducing each algorithm. That way I'll pay a little more attention to each change, and it'll probably be more pleasant for you to review.
Whatever you prefer honestly. Again, I just came across the project and thought I'd try to help out, so I'd like to do it in a way that actually... you know, helpful.

Perhaps it would be more manageable (for both of us) if I rolled back that monster of a commit, and started incrementally reintroducing each algorithm. That way I'll pay a little more attention to each change, and it'll probably be more pleasant for you to review.

Yes, I think this is a good idea.

Whatever you prefer honestly. Again, I just came across the project and thought I'd try to help out, so I'd like to do it in a way that actually... you know, helpful.

I really appreciate it ❤. You've already been helpful! I'm happy to answer any questions you may have.
I am planning on spending some time in reviews this weekend, so happy to start chipping away at this PR or take a look at a new one.


Update cloudwatch, sdk-core, ses, sns, sqs, ssm to 2.25.6

About this PR
📦 Updates

software.amazon.awssdk:cloudwatch
software.amazon.awssdk:sdk-core
software.amazon.awssdk:ses
software.amazon.awssdk:sns
software.amazon.awssdk:sqs
software.amazon.awssdk:ssm

from 2.25.5 to 2.25.6
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "software.amazon.awssdk" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "software.amazon.awssdk" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #3122.


Day1 ex1 ryoma

Ryoma made codes for day1.

Minor point; looks like hello.py is your only command-line executable script of the set.
make_sentence.py
This script doesn't behave as it should-- right now the program is printing every word one at a time instead of intaking all the words and printing out the sentence at the end, as the directions state.
Also, your break condition could be as simple as:
if s in ['.', '!', '?']:
    break

multiples.py
Good, but could you accomplish this with one less boolean test?
sum_digits.py
Your function should have a doc string.  And in the body of the script, you have a lot of duplicated code.  This is something to try to avoid!  (Why?  If you decide to change something you'd have to remember to change it in both places---easy to forget, and more work.)  You could make this more concise.
Also the script doesn't run correctly because it's not executable and if you call it with python sum_digits.py 4, e.g., it breaks.
wordfreq.py
The directions state to only count words longer that 3 letters.  Also, words should be capitalization-insensitive.  Try to make this script tighter so that it matches my results.


CI fails on Ubuntu runners because all network connections fail

Motivation
Sometimes our Ubuntu CI fails because all network connections fail.
We get logs like this:

INFO {zebrad="fd81e81" net="Main"}:add_initial_peers: zebra_network::peer_set::initialize: finished connecting to initial seed peers handshake_success_total=0 handshake_error_total=11 outbound_connections=0

https://github.com/ZcashFoundation/zebra/runs/5367124304?check_suite_focus=true#step:13:2022
This has been happening for a while, but all of the tests that depend on the network are disabled on Ubuntu.
Scheduling
We can disable the affected tests for now, but it would be good to have test runners with reliable network connections.

I'm marking this task as optional, because skipping the affected tests seems to work for now.

Closing until this is relevant.


Bumping version number, various bugfixes and stability improvements

this looks good... let me give it a test.

@drewkerrigan deploying the framework fails to launch.
Also the version update requires an update to the index file.  I was going to let it go and manage that in the merge however it looks like this version fails.
btw... after  you make an update like this, what I do is go to the scripts folder and run:

./0-validate-version.sh
./1-validate-packages.sh
./2-build-index.sh

which will validate the json files and update the index for you.

Oh ok, will do. Thanks!

@kensipe I ran:
dcos config set package.sources '["file:///Users/dkerrigan/src/mesosphere/universe"]'
dcos package update
dcos package install riak
dcos riak cluster create
dcos riak node add --nodes 2
dcos riak proxy install

I see no issues and the cluster seems to perform well. Do you have more context or error messages from when the framework failed to launch for you?

I should also note that file:///Users/dkerrigan/src/mesosphere/universe is indeed my ack-riak-mesos branch with the bumped version number.

I'll give it another go

tested good.... LGTM... merging!


Added support for High DPI Displays

Added support for High DPI Displays (e.g. Retina displays)
Since some code corrections are being made, there won't be JSLint warnings anymore

Thanks :) But isn't this the main project I do a PR on?

Thank you @sahithyen, I needed this :)

You're welcome :)

Is there any way this can get merged? It seems like it will be conflictless.

It is up to @jnicol.


Unable to load kernel driver service

Brief description of your issue
When enabling the kernel-mode driver Process Hacker informs me that it was unable to load the driver service, as the service in question has apparently been removed and PH is unable to install it, even with cli commands, this also happens with sandboxie, so it's likely that Microsoft changed something regarding drivers in the latest updates of Windows 11.
Steps to reproduce (optional)
Install latest updates from the dev channel on Windows 11.
Enable kernel-mode driver

Expected behavior (optional)
The kernel-mode driver should work as it did on previous versions.
Actual behavior (optional)
As stated, the process is unable to be created and thus this function won't work.
Environment (optional)
Process Hacker nightly, also tested on stable with same results.
Latest Windows 11 build from dev channel (OS. Build 22563.1)

Microsoft changed something regarding drivers in the latest updates of Windows 11

They've banned our digital signature/revoked our certificate in the latest Windows update.

That seems like an awfully targeted attack.
Is there anything that can be done at the moment? Perhaps compiling the code and signing the driver manually?

Microsoft is no stranger to actively trying to thwart this project, so its nothing new for them.

It seems justified from Microsoft's end since they're close to releasing the new Task Manager and most likely want to squash competition.

"New" is a generous way of putting it, it's more like a fresh coat of paint and a new efficiency mode for Task Manager and that's yer lot.

That seems like an awfully targeted attack. Is there anything that can be done at the moment? Perhaps compiling the code and/or signing the driver manually?

That's not how driver signing works unfortunately and a new cert is expensive and will likely just get revoked again

can we manually trust the certificate or install it in the trusted store so that the driver loads. of course, this will be applicable to people with administrative privileges.

@Masamune3210 You can manually sign a driver for use on your own machine, this is what I meant by "signing the driver manually".

You can create your own certificate to sign your driver with during development and testing

The user signing the driver kinda defeats the purpose of the signature, which is to validate that the driver hasn't been tampered with. But I see your point

You can create a certificate to sign a driver for use on your own machine, this is what I meant by "signing the driver manually".

Microsoft is testing updates on the Windows 11 insider branch that currently prevent developers/security researchers from compiling the driver source and debugging it with test signing. If you're trying to compile the source-code and debug the driver with self-signed test certificates then you need to change this string to bypass those checks:
https://github.com/processhacker/processhacker/blob/3e80de2bd64f70b7ec4bde085eea81c3e0f3ff77/KProcessHacker/resource.rc#L23

It's worse that this is parroted by AV companies that mark this as potentially unwanted software which throws up "scary" alerts and might even quarantine it.  Some AV companies even have designations that literally have the program name as the virus type.
I feel like Microsoft/etc can't get past the stigma of the "hacker" name.  I think this is more likely than ProcessHacker competing with a program from their bought-out subsidiary Sysinternals.  They don't make any money from ProcessExplorer existing or being used instead of ProcessHacker.  There's already an entire thread about the program name, so I'll leave that there.
I can't even imagine where to go to shine meaningful light about this unwarranted discrimination.  I feel like it would take some social media giant like LTT/GN/J2C(Youtube channels) to make Microsoft even blink at this issue.  (would EFF care about something like this?)  Then they still wouldn't even care.  We could argue that this is an anti-trust issue, but Microsoft could argue it's several other things.

The error message I get when I try and run with kernel driver includes the line "A certificate was explictly revoked by its issuer"

Yup, the message has since been updated on my end as well.

My ESET lovingly refers to it as an Unsafe Program. It is the lowest class at least.

A certificate was explictly revoked by its issuer

This is a fake error code. The certificate has not been revoked. Microsoft returns that "error" when encountering drivers with this original filename in the version resource:
https://github.com/processhacker/processhacker/blob/3e80de2bd64f70b7ec4bde085eea81c3e0f3ff77/KProcessHacker/resource.rc#L23
The name has since been changed so future versions won't encounter these fake error codes (at least until Microsoft update their illegal blocklist again).

You can create a certificate to sign a driver for use on your own machine, this is what I meant by "signing the driver manually".

https://github.com/processhacker/processhacker/blob/3e80de2bd64f70b7ec4bde085eea81c3e0f3ff77/KProcessHacker/resource.rc#L23

So if we want to use the kernel driver we have to do the above?

The name has since been changed so future versions won't encounter these fake error codes (at least until Microsoft update their illegal blocklist again).

I'm on 3.0.4801 (078a905) and the driver name is still the same and being blocked.  It looks like you addressed this in commit 22e1f53 but the setup is still creating a kprocesshacker.sys for me.

at least until Microsoft update their illegal blocklist again

any idea where this check is? i want to patch this check, load kprocesshacker.sys, then unpatch the check to prevent triggering patchguard

Open regedit
Navigate to HKLM\System\CurrentControlSet\Control\CI\Config\
Create a new DWORD named VulnerableDriverBlocklistEnable and set to 0
Reboot

thank you!

Open regedit
Navigate to HKLM\System\CurrentControlSet\Control\CI\Config\
Create a new DWORD named VulnerableDriverBlocklistEnable and set to 0
Reboot

It seems to work for the first time, but once I reboot, I get this:

@itsmeboy0
No idea. Something is wrong with your machine. Something is probably hooking the kernel and returning invalid error codes.

Really? I tried the stable version, and it works just fine.

@itsmeboy0
Yes. This works for everyone else so it's either your security software or malware.

Fixed: I installed processhacker-nightly from Scoop. I switched to using the installer, and it now works. So maybe it's how Scoop installs processhacker that makes it not work?

the last nightly of Process Hacker seems to be "banned" in 22621.457

@Bunie89
https://github.com/winsiderss/systeminformer/issues/1142#issuecomment-1148635917

Does not work when Core Isolation is enabled.
This is really shitty behaviour on MS side.

This is really shitty behaviour on MS side.

Only the MS has the right to put anal probes into your PC. Welcome to half eaten apple club.

Hi, I found a fix for my system. Because I used NTLITE to create a windows install without windows defender, I'm not able to turn of the memory integrity setting from the GUI. instead I did this to fix the problem:
open regedit: and browse to "Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity "
and changed the DWORD "Enabled" from 1 to 0

Might want to keep a eye on that for a bit. Defender tends to see any system modification done outside of the GUI as tampering and will sneakily revert it seemingly at random times

Is there anything that could be done about this? How could Microsoft get away with this? Microsoft's monopoly must end. Windows is becoming so awful.

It this turning this option off:

the same as the fix:

Open regedit
Navigate to HKLM\System\CurrentControlSet\Control\CI\Config\
Create a new DWORD named VulnerableDriverBlocklistEnable and set to 0
Reboot


Blog2

What kind of change does this PR introduce?

Does this PR introduce a breaking change?

What needs to be documented once your changes are merged?

Merge WIP Draft of blog 2

Merge WIP Draft of blog 2


Homebridge Devices Randomly Reverting to No Response Fixed on Service Restart

Describe Your Problem:
I recently converted to using HB-Service vs running Homebridge in a node window. Everything works, Config-UI-X works, and all devices work properly, but at random intervals it appears that HB-Service just stops working entirely and all my devices go offline. Everything has been uninstalled and reinstalled multiple times. I've tried port forwarding, turning off firewalls, and literally everything else I can think of, but I can't figure out what's causing this. Nothing shows up in the logs that would make me think there's an issue, and Config-UI-X still shows HB-Service is running, but all of my devices go to "Not Responding". I Tried manually starting Homebridge in a cmd window and that seems to fix the issue for a longer period of time, but it still occurs. I can easily get all of the devices to show up again in Homekit by restarting Homebridge-Service, but that only fixes the problem for maybe 5-10 minutes. The logs don't show anything that indicates why the service is crashing or what the actual issue is. I've deleted the entire homekit hub numerous times and set it up with a new Pin and all that, still occurs unless I open the homebridge instance manually in a command window. Any ideas?
Logs:

`[39m
INFO: Fetching SmartThings-v2 Devices. NOTICE: This may take a moment if you have a large number of device data is being loaded!
GOOD: Refreshing All Device Data | Source: (First Launch)
[6/26/2020, 1:39:49 PM] [Ring] didFinishLaunching
Setup Payload:
X-HM://00244FGW14FL1
Enter this code with your HomeKit app on your iOS device to pair with Homebridge:

    ┌────────────┐
    │############ │
    └────────────┘

[6/26/2020, 1:39:49 PM] Homebridge is running on port 51074.
NOTICE: Temperature Unit is Now: (F)
NOTICE: Updating Global Values | HubIP: <IP_ADDRESS> | UseLocal: false
WARN: Devices to Remove: (0) []
INFO: Devices to Update: (8)
GOOD: Devices to Create: (0) []
ALERT: Total Initialization Time: (1 seconds)
NOTICE: Unknown Capabilities: []
INFO: SmartThings DeviceCache Size: (8)
INFO: WebServer Initiated...
INFO: Sending StartDirect Request to SmartThings | SendToLocalHub: (false)
INFO: Direct Connect Active | Listening at <IP_ADDRESS>:8000
INFO: SmartThings-v2 Hub Communication Established
INFO: INFO: Your plugin version is up-to-date
NOTICE: Sending Plugin Status to SmartThings | UpdateAvailable: false | newVersion: 2.3.4
[6/26/2020, 1:39:51 PM] [Ring] Creating location socket.io connection
[6/26/2020, 1:39:51 PM] [Ring] Ring connected to socket.io server
[6/26/2020, 1:39:52 PM] [Ring] Configuring 1 cameras and 25 devices for location "Long Beach" - locationId: 9q5bxc-3af0d-0
[6/26/2020, 1:39:52 PM] [Ring] Hidden accessory 54f7b9d1-e729-4c33-99dc-586d7bf43b6c adapter.zigbee ZigBee onboard adapter
[6/26/2020, 1:39:52 PM] [Ring] Hidden accessory 7db61297-cf55-4043-b0a8-363210fe301e access-code.vault Code Vault
[6/26/2020, 1:39:52 PM] [Ring] Hidden accessory a006494f-992e-4cbf-8814-0331483a6cf7 access-code Security Access Code
[6/26/2020, 1:39:52 PM] [Ring] Hidden accessory 067a9afd-34e7-4d56-a674-42d943fdd636 adapter.zwave Z-Wave Adapter
[6/26/2020, 1:39:52 PM] [Ring] Hidden accessory 3c2b4c66-17aa-49c7-ae3c-726cb2d164eb range-extender.zwave Dining Extender
[6/26/2020, 1:42:56 PM] [Config] Homebridge restart request received
[6/26/2020, 1:42:57 PM] [Config] No restart command defined, killing process...
[6/26/2020, 1:42:57 PM] [HB Supervisor] OS: Windows_NT 10.0.18362 x64
[6/26/2020, 1:42:57 PM] [HB Supervisor] Node.js v12.18.1 C:\Program Files\nodejs\node.exe
[6/26/2020, 1:42:57 PM] [HB Supervisor] Homebridge Path: C:\Users\nmerc\AppData\Roaming\npm\node_modules\homebridge\bin\homebridge
[6/26/2020, 1:42:57 PM] [HB Supervisor] UI Path: C:\Users\nmerc\AppData\Roaming\npm\node_modules\homebridge-config-ui-x\dist\bin\standalone.js
[6/26/2020, 1:42:57 PM] [HB Supervisor] Starting Homebridge with extra flags: -I
[6/26/2020, 1:42:57 PM] [HB Supervisor] Started Homebridge v1.1.1 with PID: 9588
[6/26/2020, 1:42:58 PM] Loaded config.json with 0 accessories and 3 platforms.
[6/26/2020, 1:42:58 PM] ---
[6/26/2020, 1:42:58 PM] Loaded plugin<EMAIL_ADDRESS>[6/26/2020, 1:42:58 PM] Registering platform 'homebridge-config-ui-x.config'
[6/26/2020, 1:42:58 PM] ---
[6/26/2020, 1:42:59 PM] Loaded plugin<EMAIL_ADDRESS>[6/26/2020, 1:42:59 PM] Registering platform 'homebridge-ring.Ring'
[6/26/2020, 1:42:59 PM] ---
[6/26/2020, 1:42:59 PM] [Config] Homebridge Config UI X v4.23.1 is listening on :: port 8581
[6/26/2020, 1:42:59 PM] Loaded plugin<EMAIL_ADDRESS>[6/26/2020, 1:42:59 PM] Registering platform 'homebridge-smartthings-v2.SmartThings-v2'
[6/26/2020, 1:42:59 PM] ---
[6/26/2020, 1:42:59 PM] Loading 3 platforms...
[6/26/2020, 1:42:59 PM] [Config] Initializing config platform...
[6/26/2020, 1:42:59 PM] [Config] Running in Service Mode
[6/26/2020, 1:42:59 PM] [SmartThings-v2] Initializing SmartThings-v2 platform...
 NOTICE: This may take a moment if you have a large number of device data is being loaded!
GOOD: Refreshing All Device Data | Source: (First Launch)
Setup Payload:
X-HM://00244FGW14FL1
Enter this code with your HomeKit app on your iOS device to pair with Homebridge:

    ┌────────────┐
    │ ###### │
    └────────────┘

[6/26/2020, 1:42:59 PM] Homebridge is running on port 51074.
NOTICE: Temperature Unit is Now: (F)
NOTICE: Updating Global Values | HubIP: <IP_ADDRESS> | UseLocal: false
WARN: Devices to Remove: (0) []
INFO: Devices to Update: (8)
GOOD: Devices to Create: (0) []
ALERT: Total Initialization Time: (1 seconds)
NOTICE: Unknown Capabilities: []
INFO: SmartThings DeviceCache Size: (8)
INFO: WebServer Initiated...
INFO: Sending StartDirect Request to SmartThings | SendToLocalHub: (false)
INFO: Direct Connect Active | Listening at <IP_ADDRESS>:8000
INFO: SmartThings-v2 Hub Communication Established
INFO: INFO: Your plugin version is up-to-date
NOTICE: Sending Plugin Status to SmartThings | UpdateAvailable: false | newVersion: 2.3.4
[6/26/2020, 1:43:02 PM] [Ring] Creating location socket.io connection
[6/26/2020, 1:43:02 PM] [Ring] Ring connected to socket.io server
[6/26/2020, 1:43:03 PM] [Ring] Configuring 1 cameras and 25 devices for location "Long Beach" - locationId: 9q5bxc-3af0d-0
[6/26/2020, 1:43:03 PM] [Ring] Hidden accessory 54f7b9d1-e729-4c33-99dc-586d7bf43b6c adapter.zigbee ZigBee onboard adapter
[6/26/2020, 1:43:03 PM] [Ring] Hidden accessory 7db61297-cf55-4043-b0a8-363210fe301e access-code.vault Code Vault
[6/26/2020, 1:43:03 PM] [Ring] Hidden accessory a006494f-992e-4cbf-8814-0331483a6cf7 access-code Security Access Code
[6/26/2020, 1:43:03 PM] [Ring] Hidden accessory 067a9afd-34e7-4d56-a674-42d943fdd636 adapter.zwave Z-Wave Adapter
[6/26/2020, 1:43:03 PM] [Ring] Hidden accessory 3c2b4c66-17aa-49c7-ae3c-726cb2d164eb range-extender.zwave Dining Extender
[6/26/2020, 1:45:53 PM] [Config] Homebridge restart request received
[6/26/2020, 1:45:53 PM] [Config] UI / Bridge settings have not changed; only restarting Homebridge process
[6/26/2020, 1:45:53 PM] [HB Supervisor] Sending SIGTERM to Homebridge
[6/26/2020, 1:45:53 PM] [HB Supervisor] Homebridge Process Ended. Code: null, Signal: SIGTERM
[6/26/2020, 1:45:58 PM] [HB Supervisor] Restarting Homebridge...
[6/26/2020, 1:45:58 PM] [HB Supervisor] Starting Homebridge with extra flags: -I
[6/26/2020, 1:45:58 PM] [HB Supervisor] Started Homebridge v1.1.1 with PID: 6944
[6/26/2020, 1:45:58 PM] Loaded config.json with 0 accessories and 3 platforms.
[6/26/2020, 1:45:58 PM] ---
[6/26/2020, 1:45:58 PM] Loaded plugin<EMAIL_ADDRESS>[6/26/2020, 1:45:58 PM] Registering platform 'homebridge-config-ui-x.config'
[6/26/2020, 1:45:58 PM] ---
[6/26/2020, 1:45:59 PM] Loaded plugin<EMAIL_ADDRESS>[6/26/2020, 1:45:59 PM] Registering platform 'homebridge-ring.Ring'
[6/26/2020, 1:45:59 PM] ---
[6/26/2020, 1:45:59 PM] Loaded plugin<EMAIL_ADDRESS>[6/26/2020, 1:45:59 PM] Registering platform 'homebridge-smartthings-v2.SmartThings-v2'
[6/26/2020, 1:45:59 PM] ---
[6/26/2020, 1:45:59 PM] Loading 3 platforms...
[6/26/2020, 1:45:59 PM] [Config] Initializing config platform...
[6/26/2020, 1:45:59 PM] [Config] Running in Service Mode
[6/26/2020, 1:45:59 PM] [SmartThings-v2] Initializing SmartThings-v2 platform...
INFO: Homebridge Version: 2.6
INFO: SmartThings-v2 Plugin Version: 2.3.4
INFO: Checking Package Version for Updates...
[6/26/2020, 1:45:59 PM] [Ring] Initializing Ring platform...
[6/26/2020, 1:45:59 PM] Failed to find plugin to handle accessory MyQ Garage Door
[6/26/2020, 1:45:59 PM] Removing orphaned accessory MyQ Garage Door
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory fa711300-4664-4601-bd74-dd69477d0bd7 Ring Alarm
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 1dc0a425-46be-4b30-ae3c-08751de12420 Base Station
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory bca20d15-3fa7-4b72-a877-4a9bd91dd511 Dining Window
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 6bf62533-bf39-4047-a41a-7a983e902bcd Front Door
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 1f229a15-a934-410d-8804-ef38b74c3ee9 Office Window
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 99ef0b6d-2eb0-4fd4-94a9-82d685280b05 Foyer Window
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 578eac21-18b1-403c-ada5-27d80dc6b142 Main Keypad
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 2a9165dc-d962-4aa2-95ce-875980986915 Kitchen Motion
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory b7c05dad-6b75-4d3c-8bd4-4bf1b778e89d Kitchen Window Left
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 4d8f1b9b-204c-45db-b0ae-2055db74f93b Kitchen Window Right
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory ced4e774-303c-43d0-957a-c97ca69aaeaf Living Window Left
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory e420446a-6c43-4ea6-bb31-09257d579aa5 Living Window Right
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 5370659f-b217-4fc9-b0f2-b378060480ac Guest Window Front Left
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 0079706a-7ff5-435d-8ffc-415446b4be91 Guest Window Front Right
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 31687c62-983c-44b3-b3ed-ac32062b44c7 Guest Window Side
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 923076e5-79ff-4a9e-99de-24c7dea2f01d Garage Side Door
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 02418fb8-3e89-42e1-8d58-e0dc7fb9f258 Patio Door
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory e8b7ea5d-65ec-4a46-8317-3f2a82e910a9 Side Door
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 670650f1-760e-4d4c-88b6-4d5abfc573dd Front Door
[6/26/2020, 1:45:59 PM] [Ring] Configuring cached accessory 0634c6f7-c03b-4fa1-8e49-304bf7759df5 Home
INFO: Fetching SmartThings-v2 Devices. NOTICE: This may take a moment if you have a large number of device data is being loaded!
GOOD: Refreshing All Device Data | Source: (First Launch)
Setup Payload:
X-HM://00244FGW14FL1
Enter this code with your HomeKit app on your iOS device to pair with Homebridge:

    ┌────────────┐
    │####### │
    └────────────┘

[6/26/2020, 1:45:59 PM] Homebridge is running on port 51074.
[6/26/2020, 1:46:00 PM] [HB Supervisor] Sending SIGKILL to Homebridge
[6/26/2020, 1:46:00 PM] [HB Supervisor] Homebridge Process Ended. Code: null, Signal: SIGKILL
[6/26/2020, 1:46:05 PM] [HB Supervisor] Restarting Homebridge...
[6/26/2020, 1:46:05 PM] [HB Supervisor] Starting Homebridge with extra flags: -I
[6/26/2020, 1:46:05 PM] [HB Supervisor] Started Homebridge v1.1.1 with PID: 10784
[6/26/2020, 1:46:05 PM] Loaded config.json with 0 accessories and 3 platforms.
[6/26/2020, 1:46:05 PM] ---
[6/26/2020, 1:46:05 PM] Loaded plugin<EMAIL_ADDRESS>[6/26/2020, 1:46:05 PM] Registering platform 'homebridge-config-ui-x.config'
[6/26/2020, 1:46:05 PM] ---
[6/26/2020, 1:46:06 PM] Loaded plugin<EMAIL_ADDRESS>[6/26/2020, 1:46:06 PM] Registering platform 'homebridge-ring.Ring'
[6/26/2020, 1:46:06 PM] ---
[6/26/2020, 1:46:06 PM] Loaded plugin<EMAIL_ADDRESS>[6/26/2020, 1:46:06 PM] Registering platform 'homebridge-smartthings-v2.SmartThings-v2'
[6/26/2020, 1:46:06 PM] ---
[6/26/2020, 1:46:06 PM] Loading 3 platforms...
[6/26/2020, 1:46:06 PM] [Config] Initializing config platform...
[6/26/2020, 1:46:06 PM] [Config] Running in Service Mode
[6/26/2020, 1:46:06 PM] [SmartThings-v2] Initializing SmartThings-v2 platform...
INFO: Homebridge Version: 2.6
INFO: SmartThings-v2 Plugin Version: 2.3.4
INFO: Checking Package Version for Updates...
[6/26/2020, 1:46:06 PM] [Ring] Initializing Ring platform...
[6/26/2020, 1:46:07 PM] Failed to find plugin to handle accessory MyQ Garage Door
[6/26/2020, 1:46:07 PM] Removing orphaned accessory MyQ Garage Door
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory fa711300-4664-4601-bd74-dd69477d0bd7 Ring Alarm
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 1dc0a425-46be-4b30-ae3c-08751de12420 Base Station
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory bca20d15-3fa7-4b72-a877-4a9bd91dd511 Dining Window
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 6bf62533-bf39-4047-a41a-7a983e902bcd Front Door
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 1f229a15-a934-410d-8804-ef38b74c3ee9 Office Window
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 99ef0b6d-2eb0-4fd4-94a9-82d685280b05 Foyer Window
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 578eac21-18b1-403c-ada5-27d80dc6b142 Main Keypad
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 2a9165dc-d962-4aa2-95ce-875980986915 Kitchen Motion
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory b7c05dad-6b75-4d3c-8bd4-4bf1b778e89d Kitchen Window Left
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 4d8f1b9b-204c-45db-b0ae-2055db74f93b Kitchen Window Right
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory ced4e774-303c-43d0-957a-c97ca69aaeaf Living Window Left
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory e420446a-6c43-4ea6-bb31-09257d579aa5 Living Window Right
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 5370659f-b217-4fc9-b0f2-b378060480ac Guest Window Front Left
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 0079706a-7ff5-435d-8ffc-415446b4be91 Guest Window Front Right
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 31687c62-983c-44b3-b3ed-ac32062b44c7 Guest Window Side
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 923076e5-79ff-4a9e-99de-24c7dea2f01d Garage Side Door
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 02418fb8-3e89-42e1-8d58-e0dc7fb9f258 Patio Door
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory e8b7ea5d-65ec-4a46-8317-3f2a82e910a9 Side Door
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 670650f1-760e-4d4c-88b6-4d5abfc573dd Front Door
[6/26/2020, 1:46:07 PM] [Ring] Configuring cached accessory 0634c6f7-c03b-4fa1-8e49-304bf7759df5 Home
INFO: Fetching SmartThings-v2 Devices. NOTICE: This may take a moment if you have a large number of device data is being loaded!
GOOD: Refreshing All Device Data | Source: (First Launch)
Setup Payload:
X-HM://00244FGW14FL1
Enter this code with your HomeKit app on your iOS device to pair with Homebridge:

    ┌────────────┐
    │##### │
    └────────────┘

[6/26/2020, 1:46:07 PM] Homebridge is running on port 51074.
NOTICE: Temperature Unit is Now: (F)
NOTICE: Updating Global Values | HubIP: <IP_ADDRESS> | UseLocal: false
WARN: Devices to Remove: (0) []
INFO: Devices to Update: (8)
GOOD: Devices to Create: (0) []
ALERT: Total Initialization Time: (2 seconds)
NOTICE: Unknown Capabilities: []
INFO: SmartThings DeviceCache Size: (8)
INFO: WebServer Initiated...
INFO: Sending StartDirect Request to SmartThings | SendToLocalHub: (false)
INFO: Direct Connect Active | Listening at <IP_ADDRESS>:8000
INFO: SmartThings-v2 Hub Communication Established
INFO: INFO: Your plugin version is up-to-date
NOTICE: Sending Plugin Status to SmartThings | UpdateAvailable: false | newVersion: 2.3.4
[6/26/2020, 1:46:13 PM] [Ring] Creating location socket.io connection
[6/26/2020, 1:46:13 PM] [Ring] Ring connected to socket.io server
[6/26/2020, 1:46:14 PM] [Ring] Configuring 1 cameras and 25 devices for location "Long Beach" - locationId: 9q5bxc-3af0d-0
[6/26/2020, 1:46:14 PM] [Ring] Hidden accessory 54f7b9d1-e729-4c33-99dc-586d7bf43b6c adapter.zigbee ZigBee onboard adapter
[6/26/2020, 1:46:14 PM] [Ring] Hidden accessory 7db61297-cf55-4043-b0a8-363210fe301e access-code.vault Code Vault
[6/26/2020, 1:46:14 PM] [Ring] Hidden accessory a006494f-992e-4cbf-8814-0331483a6cf7 access-code Security Access Code
[6/26/2020, 1:46:14 PM] [Ring] Hidden accessory 067a9afd-34e7-4d56-a674-42d943fdd636 adapter.zwave Z-Wave Adapter
[6/26/2020, 1:46:14 PM] [Ring] Hidden accessory 3c2b4c66-17aa-49c7-ae3c-726cb2d164eb range-extender.zwave Dining Extender
[6/26/2020, 1:52:18 PM] [HB Supervisor] Stopping services...
[6/26/2020, 1:52:18 PM] [HB Supervisor] Homebridge Process Ended. Code: null, Signal: SIGTERM`

Homebridge Config:
`{
    "bridge": {
        "name": "Homebridge 4211",
        "username": "###########",
        "port": 51074,
        "pin": "#############"
    },
    "accessories": [],
    "platforms": [
        {
            "name": "Config",
            "port": 8581,
            "auth": "form",
            "theme": "dark-mode",
            "tempUnits": "f",
            "lang": "auto",
            "platform": "config"
        },
        {
            "name": "SmartThings-v2",
            "app_url": "https://graph-na04-useast2.api.smartthings.com:443/api/smartapps/installations/",
            "app_id": "######################",
            "access_token": "##########",
            "direct_ip": "<IP_ADDRESS>",
            "direct_port": 8000,
            "temperature_unit": "F",
            "validateTokenId": false,
            "logConfig": {
                "debug": false,
                "showChanges": true,
                "hideTimestamp": true,
                "hideNamePrefix": true,
                "file": {
                    "enabled": true,
                    "level": "good"
                }
            },
            "platform": "SmartThings-v2"
        },
        {
            "refreshToken": "##################",
            "platform": "Ring"
        }
    ]
}
`

Screenshots:

Environment:

Node.js Version: <v12.18.1>
NPM Version: <v6.14.5>
Homebridge Version: <1.1.1>
Homebridge Config UI X Version: v4.23.1
Operating System: Windows 10 Pro
Process Supervisor: hb-service

Windows just seems to have issues sometimes. Maybe using Hyper-V would stabilise your system?
https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Windows-10-Using-Hyper-V
https://github.com/homebridge/homebridge/wiki/Backup-and-Restore


[BEAM-646] Remove PipelineRunner#apply

All existing Pipeline Runners that use the Java SDK modify Pipeline
graphs with the Pipeline Surgery APIs. Apply is now superflous.
Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[ ] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[ ] Make sure tests pass via mvn clean verify. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
[ ] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[ ] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

Changes Unknown when pulling 7cbe5e9789fefe3bf659ff14ffec1027e64f2f36 on tgroh:remove_runner_apply into ** on apache:master**.

Coverage decreased (-0.01%) to 69.136% when pulling 7cbe5e9789fefe3bf659ff14ffec1027e64f2f36 on tgroh:remove_runner_apply into c8dfb851cdcb24a9afb01416598d2881e449f079 on apache:master.

R: @kennknowles
CC: @amitsela @tweise @aljoscha

Coverage decreased (-0.006%) to 69.114% when pulling 2aae99bc7169ca70ff9182fe04a4b1e7060256fc on tgroh:remove_runner_apply into 3f4e008bf5231771094878d92256b674730630dd on apache:master.

Coverage increased (+0.8%) to 69.883% when pulling 50a97f1fbcee7e4dbc17127fc7be6abd7606dc23 on tgroh:remove_runner_apply into 3f4e008bf5231771094878d92256b674730630dd on apache:master.

LGTM! (remember to squash)

LGTM


[SPARK-9623] [ML] Provide conditional variance for RandomForestRegressor

What changes were proposed in this pull request?
It is useful to get the variance of predictions from the RandomForestRegressor to plot confidence intervals on the predictions. I verified the formula from page 17 of this paper (http://arxiv.org/pdf/1211.0906v2.pdf)
The returned dataframe now has a column variance that can be set by setVarianceCol that calculates the variance.
The variance is calculated by summing up the mean of the variance of each decision tree + mean of the prediction^2 of each tree - square(mean of the prediction of each tree)
This pull request is highly inspired from https://github.com/apache/spark/pull/8866/files
How was this patch tested?
I added a couple of tests to the RandomForestRegression test suite.

Test build #60435 has started for PR 13650 at commit 75254c9.

Test build #60436 has started for PR 13650 at commit 0e4e82f.

cc: @yanboliang @MLnick

Test build #60435 has finished for PR 13650 at commit 75254c9.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/60435/
Test PASSed.

Test build #60436 has finished for PR 13650 at commit 0e4e82f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/60436/
Test PASSed.

@MechCoder I made a pass. The biggest concern is making sure the tests will fail if we implement different impurities in the future.

Test build #61478 has started for PR 13650 at commit a48f198.

Test build #61480 has started for PR 13650 at commit 0048cc8.

Test build #61478 has finished for PR 13650 at commit a48f198.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/61478/
Test PASSed.

Test build #61480 has finished for PR 13650 at commit 0048cc8.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/61480/
Test PASSed.

@MechCoder Sorry for late response. I will make a pass soon.

@MechCoder It seems there is a typo in the PR's description:
The variance is calculated by summing up the mean of the variance of each decision tree + mean of the prediction^2 of each tree + square(mean of the prediction of each tree)

It should be:
The variance is calculated by summing up the mean of the variance of each decision tree + mean of the prediction^2 of each tree - square(mean of the prediction of each tree)

This PR looks good overall, I left some inline comments. Thanks for working on this. @MechCoder

Test build #64093 has started for PR 13650 at commit 505e3c2.

Test build #64093 has finished for PR 13650 at commit 505e3c2.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/64093/
Test PASSed.

@yanboliang Sorry for the wrong delay! Hope you are still here.

The term variance in predictions is ambiguous and a bit misleading. Let us say that we have the original data generating distribution, the variance in prediction for a decision tree describes how much the prediction changes from one decision tree to another fit on the subsample of the data. As we know, this "variance in predictions" is high for a decision tree and reduces to zero for a random forest, (assuming there a huge number of trees and the trees are uncorrelated). I have updated the PR title to reflect this.

No, the paper as such is not widely cited. Also what @sethah describes is correct. This approach is picking a random tree with equal probability, and use the expected variance as got by that. However, the conditional distribution of Y|X is NOT the mean of the conditional distribution of Y|X of each tree. That is P(Y | X) != (P(Y_1 | x) + P(Y_2 | x) + .. P(Y_n | x)) / n. It is only that the expectation of Y|x is given by the mean of the expectation of the individual trees. The correct way of deriving the conditional CDF of Y | x is given in the well-cited paper (http://www.jmlr.org/papers/volume7/meinshausen06a/meinshausen06a.pdf) .

However, the formula derived in the paper is the same as got by the weighted variance with weights given to the target variable in the training data as defined in formula 5 of http://www.jmlr.org/papers/volume7/meinshausen06a/meinshausen06a.pdf . I have verified it on synthetic data in a notebook over here (https://github.com/MechCoder/Notebooks/blob/master/Conditional_variances.ipynb) .

I have spent more time then I would have initially expected on this Pull Request and I'm willing to do anything more that is required to merge.

Test build #109037 has started for PR 13650 at commit 505e3c2.

Test build #109037 has finished for PR 13650 at commit 505e3c2.

This patch fails R style tests.
This patch does not merge cleanly.
This patch adds no public classes.

Build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/109037/
Test FAILed.

Build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/15818/
Test PASSed.


[#IP-86] tslint to eslint migration

List of Changes

Deleted tslint.json file
Removed tslint packages from package.json
Created .eslintignore ignore file
Created .eslintrc.js configuration
Added some lint exclusions to .eslintrc.js to avoid a deep refactoring of working code
Changed tslint's "rule disabling" comments with eslint closest ones.

Motivation and Context
We want to migrate to eslint because tslint is deprecated.
How Has This Been Tested?
It has been tested by performing:

yarn install
yarn lint
yarn build

Note: yarn test did not passed and was not working neither before this changes.
Types of changes

[x] Chore (nothing changes by a user perspective)
[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

@balanza i fixed yarn.lock and merged your commit


How can an LXC container boot in QEMU instead of already present distros

Currently, LXC container takes one of the linux distro (such as ubuntu, CentOs etc.) and starts with it. But as we have a linux kernel available which is compiled with riscv64-unknown-linux-gnu-gcc, which can be booted on QEMU, we need our LXC container to start with QEMU instead of already present distros.

This issue is not followed anymore and I think this is a practical option. I am closing this for now.


[Voyager + Koin] Screen back (pop) navigation causes screen composable to recreate view model

Background
I'm seeing an issue with pressing back on all my voyager screens which have transitions. I have a SlideTransition for my navigator, so the composable Content  function is called several times both on pushing and popping of screens.
Issue
I've noticed that during the last stage of the transition, I get a new instance of the view model because Voyager clears out the lifecycle store in onDispose. This causes my view model to trigger a network load call to fetch data on a back press transition.
Here's how my code is set up:
    @Composable
    override fun Content() {
        val navigator = LocalNavigator.currentOrThrow
        val workplaceScope = KoinJavaComponent.getKoin().getScope(WORKPLACE_SCOPE)

        val viewModel = koinViewModel<AdAccountsScreenViewModel>(scope = workplaceScope, parameters = {parametersOf(preloadedAdAccounts)})
        Log.i("TestLog", "VM initialized: $viewModel")

        AdAccountsScreen(viewModel) {adAccount ->
...
        }
    }

I see this log statements when I press back from this child screen to the parent screen:
// called when the voyager screen is instantiated
11-22 12:51:58.184 13604 13604 I TestLog: AdAccountsScreen initialized

11-22 12:51:58.206 13604 13604 I TestLog: VM initialized: AdAccountsScreenViewModel@2fa44c8
11-22 12:51:58.235 13604 13604 I TestLog: VM initialized: AdAccountsScreenViewModel@2fa44c8
11-22 12:51:58.702 13604 13604 I TestLog: VM initialized: AdAccountsScreenViewModel@2fa44c8
11-22 12:51:58.717 13604 13604 I TestLog: VM initialized: AdAccountsScreenViewModel@2fa44c8

// Back press happens
11-22 12:52:03.125 13604 13604 I TestLog: VM initialized: AdAccountsScreenViewModel@2fa44c8
11-22 12:52:03.171 13604 13604 I TestLog: VM initialized: AdAccountsScreenViewModel@ed851ef

Upon investigation, I see that the local view model store owner actually has the view model reference that Koin returns but upon back press, Voyager navigator clears out the store in its dispose, which causes Koin to return a new view model instance. This causes the side effect of my view model to trigger a data load
How to handle this? I can put a short circuit by checking the navigator's lastItem and returning from the composable if the screen's don't match but that is not scalable as it would cause each screen to have this hack. It also doesn't animate properly when back is pressed with this workaround
To me this is a bug in Voyager, as it should call dispose only when transition ends.

Still reproduce

I assume you use Transitions API, there is a known bug that cause this. https://github.com/adrielcafe/voyager/issues/106
In the latest 1.1.0-beta02 we have introduce a new experimental API that make the ScreenTransition handle disposing, this should be fixed by providing disposeScreenAfterTransitionEnd = true.
Checkout the docs for more details.
https://voyager.adriel.cafe/transitions-api/


implement probabilistic forecast using GEFS

[x] Closes #54 .
[x] I am familiar with the contributing guidelines.
[x] Tests added.
[x] Updates entries to docs/source/api.rst for API changes.
[x] Adds descriptions to appropriate "what's new" file in docs/source/whatsnew for all changes. Includes link to the GitHub Issue with :issue:`num` or this Pull Request with :pull:`num`. Includes contributor name and/or GitHub username (link with :ghuser:`user`).
[x] New code is fully documented. Includes numpydoc compliant docstrings, examples, and comments where necessary.
[x] Maintainer: Appropriate GitHub Labels and Milestone are assigned to the Pull Request and linked Issue.

To do:

[x] decide format of returned weather_fx_ens
[x] implement main.run_probabilistic_nwp, including functionality to convert deterministic ensemble into probabilistic forecast
[x] figure out copy pasta in run_probabilistic_nwp

@alorenzo175 ready for initial review. I’ve plotted the outputs and they seem reasonable.
I’m not sure that the new run_probabilistic_nwp function is needed. The only difference now is how it handles ac power. That could be fixed by modifying our pvpower functions to create dni_extra with same shape as input irradiance. are there other reasons to want a separate run function?

Obviously the copy pasta would need to be reduced if we keep the second function.

There's an issue with start times between the init time and the first forecast time (3h later) that I'd like to address as part of #186 once this is merged. Otherwise I think it's good.


WITX definition for the request API

Currently there is no WITX support in this repository - the API is defined and implemented directly for Wasmtime, but if we wanted to support multiple runtimes (and even to keep the two crates in sync), it would be very helpful to have WITX definitions.

Don't rush too much on that one, as WITX is still a moving target, and changes completely break code generators.

This was implemented in #52, thanks a lot, @jedisct1!


Custom TensorFlow URL are invalid

The following URLs are invalid now:
https://storage.googleapis.com/tf-pips/tf-c++17-support/tf_nightly-1.14.0-cp37-cp37m-linux_x86_64.whl
https://storage.googleapis.com/tf-pips/tf-c++17-support/tf_nightly-1.14.0-cp37-cp37m-macosx_10_7_x86_64.whl
Run:
wget https://storage.googleapis.com/tf-pips/tf-c++17-support/tf_nightly-1.14.0-cp37-cp37m-linux_x86_64.whl

Got:
--2020-11-29 22:39:23--  https://storage.googleapis.com/tf-pips/tf-c++17-support/tf_nightly-1.14.0-cp37-cp37m-linux_x86_64.whl
Resolving storage.googleapis.com (storage.googleapis.com)... <IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>, ...
Connecting to storage.googleapis.com (storage.googleapis.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2020-11-29 22:39:23 ERROR 404: Not Found.

Having the same error. @AfterDreaming did you resolve it?

Having the same error. @AfterDreaming did you resolve it?

I built the the TF instead. You can get the built file here: https://drive.google.com/file/d/11P5njzpiNJSOkLgARogGVk56Fz7z3DDo/view?usp=sharing

I built the the TF instead. You can get the built file here: https://drive.google.com/file/d/11P5njzpiNJSOkLgARogGVk56Fz7z3DDo/view?usp=sharing

Any fix for this issue, I am looking for a Macosx version of the tf-c++17-support whl


Truncated final protein chains

Hi team, thank you for your impressive work.
Unfortunately, I encountered a problem when generating homooligomeric complexes. The monomer length is 641 amino acids, but when I add more of the same chains, the final structure has only 219 amino acids per chain, and there are UNK residues after each chain (One UNK after each 219AA chain). This behavior is observed in di-, tri-, and tetramer complexes when viewed in PyMOL.
I'm using version 0.3.0, with an input .yaml file containing a list of chains [A, B, C, D] in the same protein entity and a 1xV100 GPU, if that matters.

Hi, could you share your input YAML?

Sorry for disturbing, actually my mistake


Add Yarn support

Story: https://www.pivotaltracker.com/story/show/149935576

@pivotal-vlad-vassilovski Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.

@pivotal-vlad-vassilovski Thank you for signing the Contributor License Agreement!


Project punchlist

[x] New homepage with buttons leading to dashboard and map
[x] Metrics on contribute page and project card

[ ] add google street view api
[ ] enlarge on project card, show google street view enlarged (and then scroll through gallery- 2nd priority)
[ ] need a drop down main menu to return to home on submission page
[ ] legend is too tall, runs into project panel
[ ] visualize map layers, make the toggleable:
(1) always on, other GSI projects
(2) Environmental Need Index
(3) Amenities Need Index
[ ] Have a legend for all map layers


Comment redundant role in bootstrap stage, align IAM.md files, improve IAM tool

This fixes #838 by commenting out the redundant role in stage 0.
It also adds support for duplicate folder names to the IAM dump tool, and updates IAM files for stages 0 and 1.

LGTM. Would it make sense to update FAST's IAM.md files from an on-merge hook?

it would, but we would need a terraform state...


support redis sentinel

Please follow the commit message contribute guide https://github.com/eggjs/egg/blob/master/CONTRIBUTING.md#commit-message-format

It will be good if you can add some document in both the README.md and README.zh_CN.md.

Blocked by https://github.com/eggjs/egg-redis/pull/19


User shell configuration

A couple of simple functions to guess user's shell and configuration file and, therefore, instruct her a little better on where to place variables and exports.
Should help fixing issue #115
Please note that I added the csh as possible running shell, but we should maybe advice users' to not run such shell combined with rakudobrew or rewrite the shell function to launch the executable in way csh can understand.

This PR was merged here.
@fluca1978: Thanks for the work you put into this. Again, sorry for not communicating earlier...


ECIES encryption algorithm parameters

Hello,
I have to use ECIES encyrption scheme to implement this communications scheme, but for me is hard to understand which parameters I must use in ECIESCtxBuilder class to create ECIESEncryptionCtx and ECIESDecryptionCtx classes.
Can you help me?

You will have to implement some additional features that we do not provide in this library to implement this scheme:

We do not currently implement AES-CCM (see https://github.com/bmwcarit/MoCOCrW/blob/openssl1.1/src/mococrw/symmetric_crypto.h#L34-L39)
You need to implement the mococrw::KeyDerivationFunction (see src/mococrw/kdf.h) interface for SHA256(S || counter)
You need to implement SymmetricCipherI (see https://github.com/bmwcarit/MoCOCrW/blob/openssl1.1/src/mococrw/symmetric_crypto.h#L96) for E(m, k) = m ⊕ k.

Once you have those, you should be able to implement this algorithm using our abstraction by using
ECIESCtxBuilder()
  .setKDF(your_sha256_kdf)
  .setSymmetricCipherFactoryFunction([](const std::vector<uint8_t> &key) -> std::unique_ptr<XORCipher> {
    return XORCipherBuilder.setKey(key).buildEncryptor(); // or buildDecryptor(), but that'll be the same for XOR anyway
  })


feat: change rpc starter to 5.4.3

update rpc starter to 5.4.3

Pull Request Test Coverage Report for Build 302

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 68.079%

Totals

Change from base Build 300:
0.0%

Covered Lines:
2041

Relevant Lines:
2998

💛  - Coveralls


Sct 666

New TSV conversion function and downloader as well as tests

@sean-mccorkle You probably would be interested in reviewing


ci: Fix btfgen

btfhub removed their binary from the repo in https://github.com/aquasecurity/btfhub/pull/96. Switch to download the binary from the bpftool repo instead.
Ref https://github.com/inspektor-gadget/inspektor-gadget/pull/1896

Thanks for the review. CI passed before I removed the last commit, so I'll merge now without waiting again for the CI.


Issue tracker is duplicated

This repository is secondary to code.google.com/p/biogo.
Please log issues at that tracker: http://code.google.com/p/biogo/issues/list

Considering Google code is shutting down, is this the primary repository (and issue tracker) for biogo now?

biogo is moving, yes. There was a post to biogo-users explaining the move (note that there is a year for this to happen - though the move is almost complete).
The new location is github.com/biogo.
I have not migrated all the repos (leaving some that are deprecated), a couple more may come across.


Fix missing nesting in moveit bindings call

Proposed changes

Fix traceback occuring during sim tests

What does this do or what's the difference?

Otherwise the head behavior died if this part of the code was reached.

This could have been one of the reasons our software stack died


[Help] How to configure proxy in windows

Hi, sorry about that. MQTT X does not support the proxy, which we plan to implement in a future release.


Feature/swig enums handling

Added output, input, and typechek typemaps for all enums in dbTypes.h (placed in dbenums.i), now you can deal with all enums as strings as input or return value.
Did some cleanup for regression tests and TCL scripts
Integrated Colin's latest tests (with few modifications).
Added new test for creating some DB objects in TCL (net, swire, and row).
Supported feeding a TCL script as an argument for the DB TCL application.
This should address #16, #17, and #18

Added.

In the tests/data directory, create a directory to hold Nangate library files + licenses (from alpha-relase). It shouldn't be tightly named after gcd. Rename the folder gcd_nangate.. to only gcd.

Added.


Connection with  "PDO::FETCH_ASSOC" option.

Sorry, for my english.
Hi.
I want "array", instead of "object" in all queries.
My config:
$config = array(
        'driver'   => 'mysql',
        'host'     => $db_conf['host'],
        'database' => $db_conf['dbname'],
        'username' => $db_conf['user'],
        'password' => $db_conf['pass'],
        'charset'  => 'cp1251',
        'options'=>[\PDO::ATTR_DEFAULT_FETCH_MODE=>\PDO::FETCH_ASSOC]
or

        'options'=>[PDO::FETCH_ASSOC=>true]
    );

And this case don't work, but if I using "setFetchMode" it's working.
Everytime write "setFetchMode" I dont want. Please, help.

Hi,
I have no idea what you want.
Can you make yourself clear with an example?

I want know, how i can get result of quries in array, without use "setFetchMode" everytime.

Ok you want an array instead of a stdObject
You can use events to make that possible. You register on each select query after select that the fetchmode will be translated to an array.
In your event you are using this:
$array = json_decode(json_encode($object), True);

@eL-Prova @DaaGER I know this an old issue, however the same request surfaced again at #185. I believe that you were misunderstood at the time @DaaGER .

Fixed by 220b920904b9f60a7d61eba9554d936f4fda7977


Nested struct is not nil even though the object is empty

Hi.
I'm having a Player struct that has different related tables mapped to structs and nested within (Player may have multiple Deaths, and an optional Guild). I have noticed that the Guild relation is returning a pointer to an empty struct (*Guild{}) instead of a nil pointer. I believe that because of that, when marshaling it into JSON, the Guild still remains in the response, as an empty object {}.
I would expect that it is completely omitted.
Definition of types:
type Player struct {
	ID                          int        `json:"id"`
	Name                        string     `json:"name"`
	FormerNames                 *string    `json:"former_names"`
	FormerWorld                 *string    `json:"-"`
	GuildPlayers                *int       `json:"-"`
	GuildID                     *int       `json:"-"`
	Sex                         *string    `json:"sex"`
	Vocation                    *string    `json:"vocation"`
	Level                       int        `json:"level"`
	World                       *string    `json:"world"`
	CreatedAt                   time.Time  `json:"created_at"`
	UpdatedAt                   time.Time  `json:"updated_at"`
	CharacterExtractorUpdatedAt *time.Time `json:"character_extractor_updated_at"`

	Guild              *Guild               `json:"guild,omitempty"`
	Deaths             []*Death             `json:"deaths,omitempty"`
	ExperienceRecords  []*ExperienceRecord  `json:"experience_records,omitempty"`
	PlayerDailyProfits []*PlayerDailyProfit `json:"player_daily_profits,omitempty"`
	Transfers          []*Transfer          `json:"transfers,omitempty"`
}

type Guild struct {
	ID        *int       `json:"id,omitempty"`
	Name      *string    `json:"name,omitempty"`
	World     *string    `json:"world,omitempty"`
	CreatedAt *time.Time `json:"created_at,omitempty"`
	UpdatedAt *time.Time `json:"updated_at,omitempty"`
}

type Death struct {
	ID           int       `json:"id"`
	PlayerID     int       `json:"player_id"`
	DeathMessage string    `json:"death_message"`
	DiedAt       time.Time `json:"died_at"`
	CreatedAt    time.Time `json:"created_at"`
	UpdatedAt    time.Time `json:"updated_at"`

	PlayerName string `json:"name,omitempty"`
	Level      int    `json:"level,omitempty"`
}

type ExperienceRecord struct {
	ID        int       `json:"-"`
	PlayerID  int       `json:"-"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
	Absolute  int       `json:"absolute"`
	Relative  int       `json:"relative"`
}

type PlayerDailyProfit struct {
	ID        int       `json:"-"`
	PlayerID  int       `json:"-"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
	Profit    int       `json:"profit"`
}

type Transfer struct {
	ID        int       `json:"id"`
	PlayerID  int       `json:"player_id"`
	From      string    `json:"from"`
	To        string    `json:"to"`
	CreatedAt time.Time `json:"created_at"`
}

The SQL query:
select
	p.*,
	guild.id as "guild.id",
	guild.name as "guild.name",
	guild.world as "guild.world"
from
	players p
left join guilds guild on
	p.guild_players = guild.id
where
	p.name = $1

The result is something along these lines:

id
name
former_names
sex
vocation
level
world
former_world
created_at
updated_at
guild_players
character_extractor_updated_at
guild.id
guild.name
guild.world

425637
Thisisaname

male
Elite Knight
304
WorldName

2021-07-06 14:59:48.421 +0200
2022-09-30 20:08:48.100 +0200

2022-09-30 20:08:48.100 +0200
[NULL]
[NULL]
[NULL]

How is this all called?

func (q *Query) QueryRow(ctx context.Context, db *pgxpool.Pool, target any) error {
	return pgxscan.Get(ctx, db, target, q.SQL, q.Parameters...)
}

Before passing the object to pgxscan.Get

After being processed by pgxscan. Notice how Guild is no longer nil, but now instead is a *Guild, however all its attributes are nil pointers.

Hi @Marahin! Thank you for opening this issue.
The behavior you observe is expected. Scany initializes all nested structs to be able to save results from the database, even NULLs. I would suggest thinking about nested structs, not as objects (because scany isn't an ORM), but rather as a subset of columns you want to reuse between the queries.
Another popular database scanning library sqlx does it the same way as scany.
If you need your structs to act as objects — with proper M2M and O2M relations and nils— you can always transform structs you use with scany to those objects in your application code.
I hope that helps. Let me know if you have any questions.

Thank you for time spent responding to this issue @georgysavva.
Indeed, my expectations were exactly how you described them, but I am happy to hear that this behavior is expected. I understand the rationale behind it, it makes sense.


Update azure pipelines

Update the pipeline to:

use the latest version of Terraform
review existing pipeline steps and upgrade where applicable

The last step of terraform apply did not run because of an incorrect condition. Update the condition, reopening the issue.


LXATTRB error when moving distribution to a new directory

Using LxRunOffline-v3.5.0-msvc to move a WSL distribition to an external drive that uses exFAT I get the following error:
LxRunOffline.exe m -n Debian -d debian
[ERROR] Couldn't set the extended attribute "LXATTRB" of the file or directory "\\?\D:\WSL\debian\rootfs\".
Reason: The specified request is not a valid operation for the target device.

Is this a known issue?

Unfortunately, exFAT is not supported by WSL, which depends on NTFS extended attributes.

I see. Thank you for the quick reply


Add IJM demo content to the unstable environment

A continuation of https://github.com/libero/libero/issues/170 except only concerning IJM content.
Task
Ensure the following articles can be successfully consumed by the jats-ingester and sent to the scholarly-articles service:

[ ] greek characters, maths in tables: https://demo--ijm.elifesciences.org/articles/00035
[ ] greek characters, and <sup>: https://demo--ijm.elifesciences.org/articles/00173
[ ] <sub>, maths: https://demo--ijm.elifesciences.org/articles/00190

ijm-00173-vor-r2.zip
@GiancarloFusiello Here is the zip for the second article (00173). It's fine if we just get this on in for the 10th of July

@gmaciocci
Links to these IJM articles:

https://demo--ijm.elifesciences.org/articles/00169

https://unstable.libero.pub/articles/00169

https://demo--ijm.elifesciences.org/articles/00086

https://unstable.libero.pub/articles/00086

https://demo--ijm.elifesciences.org/articles/00040

https://unstable.libero.pub/articles/00040

Content has been added to the unstable environment. Will suggest a new task be created for a final list of content to be added to the demo environment. The task of adding content has now been handed over to the publishing team. Closing.


Added Rotation to Marker

Now marker have support of rotation
Equivalent to maplibre rotation
This closes #116

Thanks! Can you please make the same change in DefaultMarker.svelte as well?

@dimfeld Added Rotation to default marker as well sorry for delay due to festive season 😄

No problem, I was also plenty busy with Christmas stuff over the weekend. Published as version 0.7.5. Thanks!


Inside impls, complete unimplemented functions

See https://github.com/rust-analyzer/rust-analyzer/issues/1022#issuecomment-475916555
The idea is that for
trait T {
   fn foo();
}

impl T for () {
   |
}

We should get completions for foo.  Specifically, the completion should trigger on fn keyword and on bare identifier (so that users who know about this feature can just type the identifier)
The code, responsible for completions, lives here:
https://github.com/rust-analyzer/rust-analyzer/blob/958df1276e3d97b189dcd9de974564011c70ef62/crates/ra_ide_api/src/completion.rs
To implement this feature, one has to add more info to CompletionContext and to create a separate completion module. Take a look at complete_fn_param which does somewhat similar magical completions.
This should also work for types and consts

Also, the completion should complete to the whole fn (/type/const) declaration, e.g. fn foo() {|} :) I assume that's implied, but wanted to make sure ;)

I'll be working on this. Found the IMPL_BLOCK on ctx.leaf.ancestors(), so I know where to start :)

So the PR from detrumi has apparently been closed due to inactivity, does this mean that this issue is open to work on again?

Yes, go for it!
On Thursday, 22 August 2019, Henrik Böving<EMAIL_ADDRESS>wrote:

So the PR from detrumi has apparently been closed due to inactivity, does
this mean that this issue is open to work on again?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/rust-analyzer/rust-analyzer/issues/1046?email_source=notifications&email_token=AANB3M5WHJUYMWB6C3NVKHLQF26JVA5CNFSM4HAZ7ON2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD45VOCA#issuecomment-523982600,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AANB3M3X3GPU5WVXPO7BNJTQF26JVANCNFSM4HAZ7ONQ
.

So having looked a bit into the code and the docs for this project, should I just take over the exact code from the original PR and continue working from there or should I write my own PR from the base up?

@matklad (or whomever), is there any recommendations in regards to the completion of an associated constant?
I basically want the magic completion to write the following:
trait SomeTrait {
    const SOMETHING: u8;
}

impl SomeTrait for () {
    // text in between `[` and `]` is a magic completion:
    [const SOMETHING: u8 = ]
}

I'm mostly having trouble getting the type information in order to formulate the completion. It feels maybe a little dirty, but I could walk the syntax tree and copy everything up until the ; (or = in cases where a default value is supplied)?

@kdelorey take a look how https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_assists/src/handlers/add_missing_impl_members.rs is implemented, I think that that intention and asssist might actually want to share code for "which functions/types/constatns are yet to be implemetned?"

asssist might actually want to share code for "which functions/types/constatns are yet to be implemetned?"

I've also thought this, but wasn't sure where to put it. I could just export it from the ra_assists crate as ra_ide depends on it, I guess?

Right. Alternatively, we’ve introduced untils.rs module inside assists for
this stuff.
On Sunday, 9 February 2020, Kevin DeLorey<EMAIL_ADDRESS>wrote:

asssist might actually want to share code for "which
functions/types/constatns are yet to be implemetned?"
I've also thought this, but wasn't sure where to put it. I could just
export it from the ra_assists crate as ra_ide depends on it, I guess?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rust-analyzer/rust-analyzer/issues/1046?email_source=notifications&email_token=AANB3M5B63ZRAPNTIK5BK6LRCAPE7A5CNFSM4HAZ7ON2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELGPSQQ#issuecomment-583858498,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AANB3MZADTUP5LQAZEDWHHTRCAPE7ANCNFSM4HAZ7ONQ
.

@matklad so based on what use said, I did this. It's a little bit different than the implementation of the assist's (add_missing_impl_memebers) missing members to resolve a bug I discovered. The bug is that that member names are currently evaluated together across the different allowed associated items, but the compiler technically allows different associated items to have the same name, regardless of it being idiomatic.
The following is allowed:
trait SomeTrait {
   type whatever;

   fn whatever();
}

I haven't updated the assist to use this method yet, but I wanted to run the location of the method and making the utils pub by you.
Thanks!

Yup, looks reasonable to me!
On Sunday, 9 February 2020, Kevin DeLorey<EMAIL_ADDRESS>wrote:

@matklad https://github.com/matklad so based on what use said, I did
this
https://github.com/kdelorey/rust-analyzer/commit/d85abd77b98ff5925621c18f2ffe121640d17c80.
It's a little bit different than the implementation of the assist's (
add_missing_impl_memebers) missing members to resolve a bug I discovered.
The bug is that that member names are currently evaluated together across
the different allowed associated items, but the compiler technically allows
different associated items to have the same name, regardless of it being
idiomatic.
The following is allowed:
trait SomeTrait {
type whatever;
fn whatever();
}
I haven't updated the assist to use this method yet, but I wanted to run
the location of the method and making the utils pub by you.
Thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rust-analyzer/rust-analyzer/issues/1046?email_source=notifications&email_token=AANB3M3VIWXE5K4LVJ3MZ2LRCBEU7A5CNFSM4HAZ7ON2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELGUM3Q#issuecomment-583878254,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AANB3M4DDVHO7FXUQQND5ELRCBEU7ANCNFSM4HAZ7ONQ
.

So I think it's basically all implemented. Just needs some cleanup before a PR.

I couldn't figure out how to change the cursor on a completion, but it would be nice if the function completion placed the cursor inbetween the curly braces of a fn.