[7.x] Implement anonymous components

This PR introduces class-less components à la Blade X. What it does under the hood is make use of a ClassLessComponent class (wait whut?) to pipe through all the attributes as data to the component. This way you can do this:
welcome.blade.php
<x-avatar size="100" />

components/avatar.blade.php
@php($user = $user ?? Auth::user())
@php($size = $size ?? 50)

<img
    class="inline-block rounded-full"
    src="{{ $user->gravatarUrl($size) }}"
    width="{{ $size }}"
    height="{{ $size }}"
/>

All without a component class. This will be super useful for very simple small components and composition where you don't always need a class for.
Update
Decided to rename ClassLessCompnent to AnonymousComponent.

With class based components you can use colons to indicate directories like:
<x-inputs:text />
Will resolve to App\View\Components\Inputs\Text.php by default. Do these anonymous components allow you to do that so <x-inputs:text /> as an anonymous component would resolve to views/components/inputs/text.blade.php?

With class based components you can use colons to indicate directories like:
<x-inputs:text />
Will resolve to App\View\Components\Inputs\Text.php by default. Do these anonymous components allow you to do that so <x-inputs:text /> as an anonymous component would resolve to views/components/inputs/text.blade.php?

At a quick glance, I'm not sure it will since the AnonymousComponent class is just receiving the FQN of what would be the defined component's class. The view() method on the AnonymousComponent class would need to handle the magic, transform the class name to a valid Blade path, something like below.
function view()
{
    return collect(explode('\\', Str::after($this->view, '\\View\\Components\\')))->map(function ($segment) {
        return Str::kebab($segment);
    })->implode('.');
}

If $this->view has been set to App\\View\\Components\\Test\\Component', the output would be test.component`.

Shouldn't this really live in userland / as a package? Personally I'm not much of a fan of Blade X design paradigm - it's very opinionated and Vue-like.
It's useful to take a step back and remember that PHP itself is a templating language and Blade is a relatively simple abstraction on top of it. Having a new paradigm for creating components in Laravel just further complicates and pushes the hurdles forwards, particularly for Laravel newcomers for relatively little gain imo.

@garygreen, I think it's perfectly okay to have this feature in core. Using the BladeX style / Vue-like tags is not required, as these tags get compiled down to regular Blade directives anyway, you could achieve the same outcome using the Blade directives.
The custom element style tags and class based components are just a nicety that a lot of people, especially those currently using the BladeX package or laravel-view-components packages will like.

This could be useful for some developers but I'm ultimately questioning whether it needs to be in core - why not just composer require the package you need? Although you may find it useful I think it's worth considering the Laravel ecosystem as a whole, particulary for newcomers - with additional ways of doing the same sort of thing (rendering components) with a slightly different syntax just further pushes the learning curve for relatively little gain.

Im not saying it's needed in the core, but it's definitely a nice touch. The same logic, that it's confusing could be applied to other areas of Laravel. If you're using Notification to just send an email, why not use a Mailable? They would both ultimately have the same outcome, both can be queued. Why use middleware to prevent users without particular permissions accessing routes, you could use the authorize() method of a FormRequest class.
The reason I believe in offering multiple approaches is for developers, newcomers or not, to find the way that suits them best, without them having to install third-party packages or resort to custom solutions. If functionality can be provided in core, there's very little time spent getting up and running. You simply put a piece of code in. No need to require a package, publish vendor related resources, modify config files.
Not disagreeing with you, but I'm also not agreeing with you. Somewhere in the middle, if that's allowed 🤦♂

I'm also curious how something like  would work? Since wire:model is not a valid PHP variable name? It seems like you would actually have to put everything in an attribute bag instead of making them variables?

@calebporzio suggested perhaps a @props directive at the top of anon components that specifies which variables should be extracted from the attribute bag and made real variables...

I'm also curious how something like  would work? Since wire:model is not a valid PHP variable name

This is why this PR and Blade X being appealing is so strange to me. That is completely valid in html/js and you could access that attribute via el.getAttribute('wire:model') in PHP it doesn't make sense and your wrapping your component logic into a HTML tag and then destructing it back into PHP - why?
In Vue this is the main way of including components and exposing props - it solves a complicated problem on the frontend, but in PHP that simply isn't a problem and doesn't solve anything. It just creates an unnescary intermediary.
Anyway, that's just my take on it. I'm sure this comment will get deleted. 😋

Actually it is solving a lot of problems - just because you don't see them doesn't mean they don't exist. Comments get deleted if they are off topic.

The alternative way of writing that would be:
@include('map', ['target' => 'map', 'class' => 'mb-4 border-2'])

Within the map component:
<div class="{{ $class }} flex items-center">
  Do something with {{ $target }}
</div>

My point is that with Blade X your using HTML as a "intermediary" to pass information onto a component - this isn't strictly "solving" anything. If anything it introduces complexity into how those components are parsed, resolved, variable naming (as you discovered) etc.
I'm genuinely finding it difficult to see the benefit's of Blade X / Anonymous Components beyond just being opinionated syntax sugar.

@garygreen OK, now take your example and support ANY arbitrary HTML element. How would you go about it?
<x-input name="name" class="mb-4" wire:model.debounce.1000ms="name" required autofocus />

What would that actually render to?

I posted what it would render to?

Ah gotcha. I can see how that is useful, does remind me of Form::input() or some kind of {{ $input->text }} type builder although one benefit of it being it keeps everything in HTML whilst still allowing you to hook into it and alter how it's finally rendered.
Is this capable of handling a body of text?
<x-textarea>blah</x-textarea>

How do you supply dynamic options to it? Looking at the docs of BladeX it looks like it would be:
<x-option :checked="$booking->involvesUser($user)" :text="$user->name">

Also does the blade compiler put the "compiled" version of the code in the view or does it have to create the anonymous class object every time for every component included on the page? If you had thousands of inputs it may cause slower rendering compared to a custom optimized blade directive:
/* May not look as pretty but one benefit of this
/* approach is it keeps in the realm of PHP so
/* gives you a lot of dynamic control */
@x('option', ['checked' => $booking->involvesUser($user), 'text' => $user->name])

Anyway, I'm warming to it. 👍 Especially if it's fast in rendering many micro components.

Is this capable of handling a body of text?

Yeah slots just work as normal.

How do you supply dynamic options to it? Looking at the docs of BladeX it looks like it would be:

You can do that here as well.

Also does the blade compiler put the "compiled" version of the code in the view or does it have to create the anonymous class object every time for every component included on the page? If you had thousands of inputs it may cause slower rendering compared to a custom optimized blade directive:

This isn't a problem because views are compiled and cached.

Yes, it handles slots just like normal components.
Yes, it handles dynamic options exactly like Blade X (same syntax there).
Yes, it creates a class to use a component.

For reference... rendering 1000 components on a screen takes about 50ms on my machine. So, yes it can be "slow". Rendering 1000 @include statements takes about 30ms.
A more "typical" page rendering 100 components takes about 5-6ms to render (vs about 4ms using @include).

$attributes return nothing currently when using anonymous components..

Aright nvm, It used to not working on 7.x-dev but in 7.0.2 is working fine!

If I have a package that has some anonymous components the only way I can make them available is to create a class for them and register them individually. Is there some (undocumented) way of loading from other locations?
Any idea @driesvints @taylorotwell

@devfaysal no: https://laravel.com/docs/7.x/blade#components

@devfaysal no: https://laravel.com/docs/7.x/blade#components

Thanks for quick reply. I created an issue #32154  about it.


Add OpenID configuration in install page

Allows enabling OpenID signin via installation page GUI

This needs be merged before 1.2.0 is out - but there's still a problem with routes depending on the configuration and the configuration being changed by install page but not being re-read upon changing it... So it takes re-starting gitea to be able to register first user via OpenID. I've to figure out how to do the settings update from form submission

I think the fix here is to always define the route but then return a Forbidden status if the service is not enabled

Ready for merge, tested locally.

@cweiske you might be interested in testing this too. It basically adds a way to configure OpenID at installation time (was missing, so it took manual intervention to enable it)

@lafriks 754dd4ea7c9b8c009bf164153dedead98331b636 fixes that,
thanks for spotting it !

@strk CI failed.

Thanks @lafriks, I removed all those spaces and verified
that make check passes locally

@lafriks please see ed9ade1d
To be honest for the settings we might not even check...

On Fri, Aug 11, 2017 at 08:59:31AM -0700, bkcsoft wrote:

EnableOpenIDSignIn             bool
DisableOpenIDRegistration      bool

I'd rather have these both as EnableFoo since it makes more sense when reading

Please take a look at the user GUI first.
There's a "DisableRegistration", so I made this
"DisableOpenIDRegistration" for consistency on that side of things.
The GUI makes the two go togheter (via Javascript).

@bkcsoft do you really want to hold this PR back due to the enable vs. disable wording ?

@bkcsoft I've renamed Disable to Enable, as you requested. And rebased to master.
@lafriks I think I've handled your requests too.

actually, the change was partial, more changes were needed around, so I reverted it.

latest commits fix the handling of checkboxes and turn openid sign-in on by default for new installs

And for @bkcsoft now I've also turned the "OpenID Registration" form into an "enable" rather than "disable". Also added more javascript to check/uncheck dependents...

As for consideration it would probably be better as @bkcsoft recommended to create new handler/filter to check if openid signin/signup is enabled. Something like this:
https://github.com/go-gitea/gitea/blob/master/routers/routes/routes.go#L336

Can we get this merged before 1.2.0 please ? Aesthetic changes can happen in a second step, for now it's important for the functionality to be there.

I'm not against it, @bkcsoft?

@lafriks can you give your LGTM so it's there when needed ? :)

btw, there's something wrong with the LGTM bot, because I read 1 of 2 required approvals granted  in the approvals/lgtm check but the label still reads lgtm/need2

BTW don't write LG-TM in comments for your own PR ;) otherwise I see LG-TM 1 label

Sorry about that, I thought it was fixed (definitely a bug, isn't it ?) - I wasn't seeing the label when I wrote the next comment, btw. Now I see it.

@strk it was fixed I remember.

@lunny so it was not deployed?
Anyway, can you review this PR  or at least mark it as targeted to 1.2?

@strk I don't think it's necessary for add this config to installation on v1.2 since LDAP, OAuth and SMTP didn't add to the page. And I think a middleware to check is better than so many settings check on the route functions.

Ok now that master branch is fixed I've rebased and also committed a change using filters as suggested in previous comment. @bkcsoft can you please review and merge or at least label as targetted at 1.2.0

@strk please fix formatting issues (see Drone)

@lunny I committed the middleware check and dropped the checks in the
route functions. As per installation steps: OpenID is special in that
it is a config file, not database, configuration. That's why LDAP
and OAuth and SMTP do not belong in the installation page, while
OpenID does.

LG-TM

LGTM


Save state

Would be nice to have the ability to leave or refresh the page and save the step of the tutorial you are on. Doesn't have to be like a login, but some session cookie or something would be awesome.

duplicate of https://github.com/evinism/lambda-explorer/issues/23

apparently my search skills are lacking


Enhancement: Port to 1.10

Me again. :) You planning on a 1.10 port as well? Looks like that's where a lot of the community is heading.

Hm... Have you tried running the latest 1.9 version on 1.10? I'm wondering if it'll work without changes.

I haven't but I will soon.

Ender Compass <IP_ADDRESS> is compatible with 1.10, but I'm keeping this open since I technically haven't updated to 1.10.


I get lots of tasks "stuck" in "running" state without providing the minTime

My code is highly async and I schedule from many places to a single limiter.
some of the jobs I schedule get "stuck" with "running" status and never get executed.
the bottleneck configuration is empty and docs say only something about the minTime that can get to the running state.

Hi, thanks for opening this issue. Can you please show how your limiter is created? And please show an example of how you schedule a job.
Thank you!

  this.limiter = new BottleNeck({});
On another class with a reference to the limiter I do:
        return this.limiter.schedule(async () => {
            console.log(1);
          });

the console log is never reached
if I print the counts I see something like:
limiter: {"RECEIVED":0,"QUEUED":0,"RUNNING":0,"EXECUTING":0}
limiter: {"RECEIVED":0,"QUEUED":0,"RUNNING":1,"EXECUTING":0}
limiter: {"RECEIVED":0,"QUEUED":0,"RUNNING":2,"EXECUTING":0}
limiter: {"RECEIVED":0,"QUEUED":0,"RUNNING":3,"EXECUTING":0}
limiter: {"RECEIVED":0,"QUEUED":0,"RUNNING":4,"EXECUTING":0}
limiter: {"RECEIVED":0,"QUEUED":0,"RUNNING":5,"EXECUTING":0}
limiter: {"RECEIVED":0,"QUEUED":0,"RUNNING":6,"EXECUTING":0}
limiter: {"RECEIVED":0,"QUEUED":0,"RUNNING":7,"EXECUTING":0}

Hmm interesting... the default behavior should be to essentially be a passthrough. I'll take a closer look as soon as possible.

essentially I'd like to know what are the cases my job goes into "running" state given my configuration

I finally had time to look into this. I can't seem to reproduce your issue. Here's what I'm doing:
const Bottleneck = require('bottleneck')
const limiter = new Bottleneck({})

const wait = (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms))

async function main() {
  limiter.schedule(async () => console.log(1))
  limiter.schedule(async () => console.log(2))
  limiter.schedule(async () => console.log(3))
  limiter.schedule(async () => console.log(4))
  limiter.schedule(async () => console.log(5))

  console.log(limiter.counts())
  await wait(100)
  console.log(limiter.counts())
}

main()
.catch(e => {
  console.log('UNCAUGHT EXCEPTION', e)
  process.exit(1)
})

And it prints the correct result:
{ RECEIVED: 5, QUEUED: 0, RUNNING: 0, EXECUTING: 0 }
1
2
3
4
5
{ RECEIVED: 0, QUEUED: 0, RUNNING: 0, EXECUTING: 0 }

If I set the limiter options to { trackDoneStatus: true } then I see:
{ RECEIVED: 5, QUEUED: 0, RUNNING: 0, EXECUTING: 0, DONE: 0 }
1
2
3
4
5
{ RECEIVED: 0, QUEUED: 0, RUNNING: 0, EXECUTING: 0, DONE: 5 }

Is it possible you're using submit() and not calling the callback?
The only way you can have multiple jobs in the RUNNING state for a long period of time is if you set a very high minTime without setting a maxConcurrent value. The docs actively recommend against skipping maxConcurrent, but even with just minTime your jobs will eventually reach EXECUTING.

Is it possible that you're using updateSettings()?

I also couldn't reproduce it on a small scale project.
about your questions, I use only schedule
however I'm having many instances of the module around 20, all with the
same configuration, without the minTime. also I've never called
updateSettings
On Sun, Aug 18, 2019 at 6:20 PM Simon Grondin<EMAIL_ADDRESS>wrote:

I finally had time to look into this. I can't seem to reproduce your
issue. Here's what I'm doing:
const Bottleneck = require('bottleneck')const limiter = new Bottleneck({})
const wait = (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms))
async function main() {
limiter.schedule(async () => console.log(1))
limiter.schedule(async () => console.log(2))
limiter.schedule(async () => console.log(3))
limiter.schedule(async () => console.log(4))
limiter.schedule(async () => console.log(5))
console.log(limiter.counts())
await wait(100)
console.log(limiter.counts())
}
main()
.catch(e => {
console.log('UNCAUGHT EXCEPTION', e)
process.exit(1)
})
And it prints the correct result:
{ RECEIVED: 5, QUEUED: 0, RUNNING: 0, EXECUTING: 0 }12345
{ RECEIVED: 0, QUEUED: 0, RUNNING: 0, EXECUTING: 0 }
If I set the limiter options to { trackDoneStatus: true } then I see:
{ RECEIVED: 5, QUEUED: 0, RUNNING: 0, EXECUTING: 0, DONE: 0 }12345
{ RECEIVED: 0, QUEUED: 0, RUNNING: 0, EXECUTING: 0, DONE: 5 }
Is it possible you're using submit() and not calling the callback?
The only way you can have multiple jobs in the RUNNING state for a long
period of time is if you set a very high minTime without setting a
maxConcurrent value. The docs actively recommend against skipping
maxConcurrent, but even with just minTime your jobs will eventually reach
EXECUTING.

Is it possible that you're using updateSettings()?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SGrondin/bottleneck/issues/134?email_source=notifications&email_token=AECGOAT6AXRKVNZIMN4ZNE3QFFSE3A5CNFSM4ILTUDZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4RCEOQ#issuecomment-522330682,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AECGOAVCEPUWHK5T4NSLVALQFFSE3ANCNFSM4ILTUDZA
.

also replacing the new Bottleneck({}) with { schedule: fn => fn() } made it
work. meaning nothing else is being called
On Sun, Aug 18, 2019 at 6:33 PM Guy Ephraim<EMAIL_ADDRESS>wrote:

I also couldn't reproduce it on a small scale project.
about your questions, I use only schedule
however I'm having many instances of the module around 20, all with the
same configuration, without the minTime. also I've never called
updateSettings
On Sun, Aug 18, 2019 at 6:20 PM Simon Grondin<EMAIL_ADDRESS>wrote:

I finally had time to look into this. I can't seem to reproduce your
issue. Here's what I'm doing:
const Bottleneck = require('bottleneck')const limiter = new Bottleneck({})
const wait = (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms))
async function main() {
limiter.schedule(async () => console.log(1))
limiter.schedule(async () => console.log(2))
limiter.schedule(async () => console.log(3))
limiter.schedule(async () => console.log(4))
limiter.schedule(async () => console.log(5))
console.log(limiter.counts())
await wait(100)
console.log(limiter.counts())
}
main()
.catch(e => {
console.log('UNCAUGHT EXCEPTION', e)
process.exit(1)
})
And it prints the correct result:
{ RECEIVED: 5, QUEUED: 0, RUNNING: 0, EXECUTING: 0 }12345
{ RECEIVED: 0, QUEUED: 0, RUNNING: 0, EXECUTING: 0 }
If I set the limiter options to { trackDoneStatus: true } then I see:
{ RECEIVED: 5, QUEUED: 0, RUNNING: 0, EXECUTING: 0, DONE: 0 }12345
{ RECEIVED: 0, QUEUED: 0, RUNNING: 0, EXECUTING: 0, DONE: 5 }
Is it possible you're using submit() and not calling the callback?
The only way you can have multiple jobs in the RUNNING state for a long
period of time is if you set a very high minTime without setting a
maxConcurrent value. The docs actively recommend against skipping
maxConcurrent, but even with just minTime your jobs will eventually
reach EXECUTING.

Is it possible that you're using updateSettings()?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SGrondin/bottleneck/issues/134?email_source=notifications&email_token=AECGOAT6AXRKVNZIMN4ZNE3QFFSE3A5CNFSM4ILTUDZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4RCEOQ#issuecomment-522330682,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AECGOAVCEPUWHK5T4NSLVALQFFSE3ANCNFSM4ILTUDZA
.

Thanks, this helps. I have a few more questions to understand what's happening:

How many jobs are you adding to the limiter shortly after it starts?
How high did you see the RUNNING number go?
Could you try adding a maxConcurrent and see if that works?
What is your use case for using a limiter without any settings?

I've been trying a lot of different cases to try to reproduce this issue for the last hour, without luck. When I make 10,000 pile up in RECEIVED, then let them go, I never see more than 1 in RUNNING. Same when I make them all pile up in QUEUED before allowing them through.
Are you running this on the browser or in Node? Are you using Clustering?

I would normally edit my comment to add something, but you're using email. I forgot to ask: Can you try adding a listener for the 'error' event?
Thanks!

I've been working on reducing the scenario to the smallest I could, which
still reproduce the issue.
so, I managed to reproduce it using only one bottleneck, so it is probably
not related to load.
now for your questions,

the issue starts on the first job I add to the limiter - none of them are
executing, all are stuck in "running" state
My test went up to 58 jobs, so the the number was 58
my first test was with maxConcurrent, it didn't work so I've removed it,
if I re-add it it has no effect
I'm running inside with node 10.15 and no clustering
I did add a listener on both failed and error but nothing called there

I really appreciate your help here.
Thanks.
On Sun, Aug 18, 2019 at 8:49 PM Simon Grondin<EMAIL_ADDRESS>wrote:

I would normally edit my comment to add something, but you're using email.
I forgot to ask: Can you try adding a listener for the 'error' event?
Thanks!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SGrondin/bottleneck/issues/134?email_source=notifications&email_token=AECGOAUVKBGIC6VTZQ4BJPLQFGDRBA5CNFSM4ILTUDZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4REY4A#issuecomment-522341488,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AECGOASY4OWXXWTASBNU7ZLQFGDRBANCNFSM4ILTUDZA
.

Woah I'm totally stumped!! 😵
I'll try again to reproduce it but I'm totally at a loss. This is crazy. Any scenario I can run would be amazing, even if it's not trivial.
Could you try adding an event listener for the 'debug', give an ID to one job and see what debug messages you get for that job ID?

before each schedule I've added a print of counts() and made the id of the
jobs running number. here is a snippet of the logs
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":4,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 5
bottleneck Drained 5
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":5,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 6
bottleneck Drained 6
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":6,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 7
bottleneck Drained 7
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":7,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 8
bottleneck Drained 8
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":8,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 9
bottleneck Drained 9
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":9,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 10
bottleneck Drained 10
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
On Mon, Aug 19, 2019 at 5:08 PM Simon Grondin<EMAIL_ADDRESS>wrote:

Woah I'm totally stumped!! 😵
I'll try again to reproduce it but I'm totally at a loss. This is crazy.
Any scenario I can run would be amazing, even if it's not trivial.
Could you try adding an event listener for the 'debug', give an ID to
one job and see what debug messages you get for that job ID?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SGrondin/bottleneck/issues/134?email_source=notifications&email_token=AECGOASQTPJ3FHUY76ST26LQFKSMJA5CNFSM4ILTUDZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4TB2YA#issuecomment-522591584,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AECGOATUMQOWWGW7NPF63MDQFKSMJANCNFSM4ILTUDZA
.

added a print for all params:
§bottleNeck.counts() : {"RECEIVED":1,"QUEUED":0,"RUNNING":3,"EXECUTING":0}
bottleneck 0=Event triggered: received, 1=[args=[], priority=5, weight=1,
expiration=null, id=5]
bottleneck 0=Event triggered: queued, 1=[args=[], priority=5, weight=1,
expiration=null, id=4, reachedHWM=false, blocked=false]
bottleneck 0=Draining 4, args=[], priority=5, weight=1, expiration=null,
id=4
bottleneck 0=Drained 4, success=true, args=[], priority=5, weight=1,
expiration=null, id=4
bottleneck 0=Event triggered: scheduled, 1=[args=[], priority=5, weight=1,
expiration=null, id=4]
bottleneck 0=Event triggered: queued, 1=[args=[], priority=5, weight=1,
expiration=null, id=5, reachedHWM=false, blocked=false]
bottleneck 0=Draining 5, args=[], priority=5, weight=1, expiration=null,
id=5
bottleneck 0=Drained 5, success=true, args=[], priority=5, weight=1,
expiration=null, id=5
bottleneck 0=Event triggered: empty, 1=[]
bottleneck 0=Event triggered: scheduled, 1=[args=[], priority=5, weight=1,
expiration=null, id=5]
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":5,"EXECUTING":0}
bottleneck 0=Event triggered: received, 1=[args=[], priority=5, weight=1,
expiration=null, id=6]
bottleneck 0=Event triggered: queued, 1=[args=[], priority=5, weight=1,
expiration=null, id=6, reachedHWM=false, blocked=false]
bottleneck 0=Draining 6, args=[], priority=5, weight=1, expiration=null,
id=6
bottleneck 0=Drained 6, success=true, args=[], priority=5, weight=1,
expiration=null, id=6
bottleneck 0=Event triggered: empty, 1=[]
bottleneck 0=Event triggered: scheduled, 1=[args=[], priority=5, weight=1,
expiration=null, id=6]
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":6,"EXECUTING":0}
bottleneck 0=Event triggered: received, 1=[args=[], priority=5, weight=1,
expiration=null, id=7]
bottleneck 0=Event triggered: queued, 1=[args=[], priority=5, weight=1,
expiration=null, id=7, reachedHWM=false, blocked=false]
bottleneck 0=Draining 7, args=[], priority=5, weight=1, expiration=null,
id=7
bottleneck 0=Drained 7, success=true, args=[], priority=5, weight=1,
expiration=null, id=7
bottleneck 0=Event triggered: empty, 1=[]
bottleneck 0=Event triggered: scheduled, 1=[args=[], priority=5, weight=1,
expiration=null, id=7]
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":7,"EXECUTING":0}
bottleneck 0=Event triggered: received, 1=[args=[], priority=5, weight=1,
expiration=null, id=8]
bottleneck 0=Event triggered: queued, 1=[args=[], priority=5, weight=1,
expiration=null, id=8, reachedHWM=false, blocked=false]
bottleneck 0=Draining 8, args=[], priority=5, weight=1, expiration=null,
id=8
bottleneck 0=Drained 8, success=true, args=[], priority=5, weight=1,
expiration=null, id=8
bottleneck 0=Event triggered: empty, 1=[]
bottleneck 0=Event triggered: scheduled, 1=[args=[], priority=5, weight=1,
expiration=null, id=8]
On Tue, Aug 20, 2019 at 12:51 PM Guy Ephraim<EMAIL_ADDRESS>wrote:

before each schedule I've added a print of counts() and made the id of the
jobs running number. here is a snippet of the logs
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":4,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 5
bottleneck Drained 5
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":5,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 6
bottleneck Drained 6
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":6,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 7
bottleneck Drained 7
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":7,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 8
bottleneck Drained 8
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":8,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 9
bottleneck Drained 9
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":9,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 10
bottleneck Drained 10
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
On Mon, Aug 19, 2019 at 5:08 PM Simon Grondin<EMAIL_ADDRESS>wrote:

Woah I'm totally stumped!! 😵
I'll try again to reproduce it but I'm totally at a loss. This is crazy.
Any scenario I can run would be amazing, even if it's not trivial.
Could you try adding an event listener for the 'debug', give an ID to
one job and see what debug messages you get for that job ID?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SGrondin/bottleneck/issues/134?email_source=notifications&email_token=AECGOASQTPJ3FHUY76ST26LQFKSMJA5CNFSM4ILTUDZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4TB2YA#issuecomment-522591584,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AECGOATUMQOWWGW7NPF63MDQFKSMJANCNFSM4ILTUDZA
.

any news on the issue?
On Tue, Aug 20, 2019 at 12:58 PM Guy Ephraim<EMAIL_ADDRESS>wrote:

added a print for all params:
§bottleNeck.counts() : {"RECEIVED":1,"QUEUED":0,"RUNNING":3,"EXECUTING":0}
bottleneck 0=Event triggered: received, 1=[args=[], priority=5, weight=1,
expiration=null, id=5]
bottleneck 0=Event triggered: queued, 1=[args=[], priority=5, weight=1,
expiration=null, id=4, reachedHWM=false, blocked=false]
bottleneck 0=Draining 4, args=[], priority=5, weight=1, expiration=null,
id=4
bottleneck 0=Drained 4, success=true, args=[], priority=5, weight=1,
expiration=null, id=4
bottleneck 0=Event triggered: scheduled, 1=[args=[], priority=5, weight=1,
expiration=null, id=4]
bottleneck 0=Event triggered: queued, 1=[args=[], priority=5, weight=1,
expiration=null, id=5, reachedHWM=false, blocked=false]
bottleneck 0=Draining 5, args=[], priority=5, weight=1, expiration=null,
id=5
bottleneck 0=Drained 5, success=true, args=[], priority=5, weight=1,
expiration=null, id=5
bottleneck 0=Event triggered: empty, 1=[]
bottleneck 0=Event triggered: scheduled, 1=[args=[], priority=5, weight=1,
expiration=null, id=5]
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":5,"EXECUTING":0}
bottleneck 0=Event triggered: received, 1=[args=[], priority=5, weight=1,
expiration=null, id=6]
bottleneck 0=Event triggered: queued, 1=[args=[], priority=5, weight=1,
expiration=null, id=6, reachedHWM=false, blocked=false]
bottleneck 0=Draining 6, args=[], priority=5, weight=1, expiration=null,
id=6
bottleneck 0=Drained 6, success=true, args=[], priority=5, weight=1,
expiration=null, id=6
bottleneck 0=Event triggered: empty, 1=[]
bottleneck 0=Event triggered: scheduled, 1=[args=[], priority=5, weight=1,
expiration=null, id=6]
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":6,"EXECUTING":0}
bottleneck 0=Event triggered: received, 1=[args=[], priority=5, weight=1,
expiration=null, id=7]
bottleneck 0=Event triggered: queued, 1=[args=[], priority=5, weight=1,
expiration=null, id=7, reachedHWM=false, blocked=false]
bottleneck 0=Draining 7, args=[], priority=5, weight=1, expiration=null,
id=7
bottleneck 0=Drained 7, success=true, args=[], priority=5, weight=1,
expiration=null, id=7
bottleneck 0=Event triggered: empty, 1=[]
bottleneck 0=Event triggered: scheduled, 1=[args=[], priority=5, weight=1,
expiration=null, id=7]
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":7,"EXECUTING":0}
bottleneck 0=Event triggered: received, 1=[args=[], priority=5, weight=1,
expiration=null, id=8]
bottleneck 0=Event triggered: queued, 1=[args=[], priority=5, weight=1,
expiration=null, id=8, reachedHWM=false, blocked=false]
bottleneck 0=Draining 8, args=[], priority=5, weight=1, expiration=null,
id=8
bottleneck 0=Drained 8, success=true, args=[], priority=5, weight=1,
expiration=null, id=8
bottleneck 0=Event triggered: empty, 1=[]
bottleneck 0=Event triggered: scheduled, 1=[args=[], priority=5, weight=1,
expiration=null, id=8]
On Tue, Aug 20, 2019 at 12:51 PM Guy Ephraim<EMAIL_ADDRESS>wrote:

before each schedule I've added a print of counts() and made the id of
the jobs running number. here is a snippet of the logs
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":4,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 5
bottleneck Drained 5
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":5,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 6
bottleneck Drained 6
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":6,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 7
bottleneck Drained 7
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":7,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 8
bottleneck Drained 8
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":8,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 9
bottleneck Drained 9
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
bottleNeck.counts() : {"RECEIVED":0,"QUEUED":0,"RUNNING":9,"EXECUTING":0}
bottleneck Event triggered: received
bottleneck Event triggered: queued
bottleneck Draining 10
bottleneck Drained 10
bottleneck Event triggered: empty
bottleneck Event triggered: scheduled
On Mon, Aug 19, 2019 at 5:08 PM Simon Grondin<EMAIL_ADDRESS>wrote:

Woah I'm totally stumped!! 😵
I'll try again to reproduce it but I'm totally at a loss. This is crazy.
Any scenario I can run would be amazing, even if it's not trivial.
Could you try adding an event listener for the 'debug', give an ID to
one job and see what debug messages you get for that job ID?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SGrondin/bottleneck/issues/134?email_source=notifications&email_token=AECGOASQTPJ3FHUY76ST26LQFKSMJA5CNFSM4ILTUDZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4TB2YA#issuecomment-522591584,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AECGOATUMQOWWGW7NPF63MDQFKSMJANCNFSM4ILTUDZA
.

I just came back from vacation and I still cannot reproduce it. Did you try adding a listener for the 'error' event?

yes, nothing there
On Mon, Sep 9, 2019 at 2:11 PM Simon Grondin<EMAIL_ADDRESS>wrote:

I just came back from vacation and I still cannot reproduce it. Did you
try adding a listener for the 'error' event?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SGrondin/bottleneck/issues/134?email_source=notifications&email_token=AECGOAWXVJC56NAWLP67X43QIYVPHA5CNFSM4ILTUDZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6HFKDI#issuecomment-529421581,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AECGOAW43P2DVAVUVWH6TZTQIYVPHANCNFSM4ILTUDZA
.

any news?
On Mon, Sep 9, 2019 at 3:08 PM Guy Ephraim<EMAIL_ADDRESS>wrote:

yes, nothing there
On Mon, Sep 9, 2019 at 2:11 PM Simon Grondin<EMAIL_ADDRESS>wrote:

I just came back from vacation and I still cannot reproduce it. Did you
try adding a listener for the 'error' event?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SGrondin/bottleneck/issues/134?email_source=notifications&email_token=AECGOAWXVJC56NAWLP67X43QIYVPHA5CNFSM4ILTUDZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6HFKDI#issuecomment-529421581,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AECGOAW43P2DVAVUVWH6TZTQIYVPHANCNFSM4ILTUDZA
.

Sorry, I haven't had time/energy to work on this 😞
If you could post an example I can run I'm sure I'll be able to fix it in no time. I'm just not able to reproduce it and nothing in the code should even make it possible at all.

I found the issue!!!
I'm using a module called 'mockdate'. I use this module in my tests to test how data is effected over time. this module breaks the functionality of bottleneck
bottleneck is very sensitive to date changes
here is a test example:
const mockdate = require('mockdate');
const Bottleneck = require('bottleneck');
test('test bottleneck without mock date', (done)=>{
  const limiter  = new Bottleneck();

  limiter.schedule(async ()=>{ done(); })

});

test('test bottleneck with mock date', (done)=>{
  const limiter  = new Bottleneck();

  const yesterday = new Date();
  yesterday.setDate(yesterday.getDate()-1);
  yesterday.setHours(0,0,0,0);
  mockdate.set(yesterday);

  limiter.schedule(async ()=>{ done(); })
});

WOOHOO! I'm relieved you found out what it was.

bottleneck is very sensitive to date changes

Oh yeah, it relies on time only moving forward. In your tests I suggest you do the time changes before creating a limiter.

I added a note to the docs about using tools that change time. I don't see a way and I don't think Bottleneck should be able to deal with these time jump events.

thanks


[Doc] The contributing page URL in CONTRIBUTING.md is not correct

What issue do you find in Pulsar docs?
The contributing page URL(https://pulsar.apache.org/en/contributing) in CONTRIBUTING.md is not correct, as shown below:

after some researching, I think the right URL might be https://pulsar.apache.org/contributing.
What is your suggestion?
change the contributing page URL to https://pulsar.apache.org/contributing
Do you have any references?
https://github.com/apache/pulsar/blob/master/CONTRIBUTING.md
https://pulsar.apache.org/en/contributing
https://pulsar.apache.org/contributing
Would you like to fix this issue?
sure
Note

[X] I have researched my question.

Fixed by https://github.com/apache/pulsar/pull/15595


Adds a command line option to to allow failures based on CVSS level

This is also up for consideration on the main project: https://github.com/jeremylong/DependencyCheck/pull/619


Create spanish.json

Added support for spanish language

Oh, nice :)
Looks good, I'll merge it and add it to the next build.
Thanks for taking the time to add this.

Sorry for the delay, this looks great, it will be in the next release.
Again, thank you for taking the time to add this.


Declare views in .moor files

This is not planned for 2.0, but it would be nice to eventually support CREATE VIEW and CREATE INDEX statements in moor files.
We should probably generate a dataclass for each CREATE VIEW statement. Just as we do with tables, queries with the same columns should then return that data class instead of introducing another one.
CREATE INDEX statements should be executes as the database gets created. I'm not entirely sure how we would integrate them with the migrations api. Maybe we could have something like
myIndex: CREATE INDEX ...;

and then
onUpgrade: (m, from, to) async {
 // ...
 await m.createIndex(myIndex);
}

In the next moor version it will be possible to declare indices in moor files. You just write them down like create table statements:
CREATE UNIQUE INDEX user_name_idx ON users (name);

They will be created in onCreate. If you need to create them in an upgrade, you can use Migrator.createIndex(userNameIdx) in onUpgrade.
Support for views requires some more work.

Can I not create a "pseudo view". Declare a table with the same structure as what my view will output. Then use a custom query to return the correct values? It means some unused generated code and an empty table in sqlite.

You could do that, but it wouldn't really behave like a view. You would still have to embed the full view query into each query that uses it, right? I don't see the advantage of creating a table for this purpose.

It is just there to hook the dao up to. I'm under the impression that a dao need to hook up to a table? This is just a temporary suggestion until the library includes it. In my use case I have big queries with a lot of joins etc. Using views would be a good approach to many of them.

Hey @simolus3. I kind of need views, so I want to go ahead and implement it, just wanted to check with you beforehand.

If you want to contribute to moor then that's much appreciated, thanks! The SQL parser is already capable of parsing CREATE VIEW definitions, the hard parts will probably be code generation and resolving view columns in the generator. Let me know if you have any questions on that.


updating train to teach events name

Trello card
https://trello.com/c/rrrhDECs/3584-change-references-from-train-to-teach-events-to-get-into-teaching-events
Context
Train to Teach events are being renamed Get Into Teaching events so we need to tweak the copy on the website where they are mentioned.
Changes proposed in this pull request
Guidance to review

Closing as I've pulled this into my main PR now


Need to draw a custom axis on the line chart

We are using this package for drawing a line chart in our mobile application. But we need to draw a custom axis on the line chart to indicate some bands of the data. For example:

I don't see any option to create custom xAxis here. Is it available? Or Do you have any plan to incorporate? If it is not in the plan, I can modify the code to add that.

Hello, you can add decorators to your graph.
The decorator should render a SVG Line. But you have to compute on your own the position.
/**
     * Render the target line if exists.
     *
     * @return {JSX.Element}
     */
    const renderDecorator = (): JSX.Element => {
        return <Svg>
            {targetLine && <>
                <Line x1={targetLine} y1={10} x2={targetLine} y2={280} stroke={"blue"} strokeWidth={1}/>
            </>}
        </Svg>;
    };

    return (
        <LineChart fromZero={false}
                   decorator={renderDecorator}
                   withInnerLines={false}
                   width={width}
                   height={300}
        />
    );

Hello, you can add decorators to your graph. The decorator should render a SVG Line. But you have to compute on your own the position.
/**
     * Render the target line if exists.
     *
     * @return {JSX.Element}
     */
    const renderDecorator = (): JSX.Element => {
        return <Svg>
            {targetLine && <>
                <Line x1={targetLine} y1={10} x2={targetLine} y2={280} stroke={"blue"} strokeWidth={1}/>
            </>}
        </Svg>;
    };

    return (
        <LineChart fromZero={false}
                   decorator={renderDecorator}
                   withInnerLines={false}
                   width={width}
                   height={300}
        />
    );

Hello,
Can you give an example for compute position ?

It depend from what you to compute the position.
In my case I has to draw a line between two given points.
You can access a point position into the renderDotContent function :
`renderDotContent={(value) => {
if (targetPriceRangeIndex) {
if (value.index === 0 && !previous) {
setPrevious(value.x);
}
                       if (value.index === relevantData.length - 1 && !next) {
                           setNext(value.x);
                       }
                   }

                   return <View key={value.index.toString()}/>;
               }}`

I wanna do stock price chart and I need draw horizontal lines for some price levels.

It depend from what you want to compute the position. In my case I has to draw a line between two given points.
You can access a point position into the renderDotContent function :
<LineChart fromZero={false}
                   withDots
                   renderDotContent={(value) => {
                          //Here you can get position of each rendered dot, (value.index for dot index, value.x for dot x position)
                         //So you can compute your custom line position from any dot position.
                   }}
                   decorator={renderDecorator}
                   withInnerLines={false}
                   width={width}
                   height={300}
        />

I wanna do stock price chart and I need draw horizontal lines for some price levels.

So with the render dot content function, you can have your lowest and highest point from the dataset.
You can now compute the position of your custom horizontal line.


incompatible with OnePlus 3T?

This app is incompatible with all of your devices.

Very popular phone, relatively new running Android 8.0.0, how the hell is it incompatible?


Martyr Paladin qualifies for Bardic Performance feats but not Limitless Bardic Performance

It says it's missing the Bardic Performance feature. See: https://i.imgur.com/68lroUE.png
Additionally, if I use Toybox to forcibly give the mythic perk to the paladin, I still have a limited number of performances. See:
https://i.imgur.com/f5ctidV.png (note: 'Acquired ability')
https://i.imgur.com/m69tNwa.png (down from 31)

Martyr has a unique resource id. They don't stack with other bardic songs. I added them to the pool.


Remove Sinon redundant code

We should use only the code we need from Sinon mocking lib and get rid of all the redundant code

@vlio20 is a traitor and therefore we will ignore him

:)


LED strip still shows active

Hey,
I have a problem: When the Strip light is not connected with the hue ( the hue app shows everything correct) then you still see inside of HomeKit that the light is connected and turned on!
Is it possible to fix this?
regards

Screenshot 2020-09-26 at 11.16.54.zip

the hue app shows everything correct

The screenshot also shows the light as on in The Hue app.

Is it possible to fix this?

There’s nothing to fix in Homebridge Hue.  The lightstrip is unreachable by the Hue bridge, either because it’s powered down (fix: don’t do that) or because you have connectivity issues in your Zigbee network (fix: add more Zigbee routers, move the lightstrip closer, change Zigbee channel, move away from Wifi, bluetooth, microwave oven, etc).
HomeKit doesn’t provide a settable connected state.  Homebridge Hue sets Status Fault when the bridge reports the light as unreachable, but Apple’s Home app doesn’t show that (fix: use another HomeKit app).

This is not the point!
The light is working well!
This was intentional but after disconnecting the ZigBee device from the Power it still shows that this device is turned on!
HomeKit support this feature on some devices when there unplugged it shows: this device is unreachable!

This was intentional but after disconnecting the ZigBee device from the Power it still shows that this device is turned on!

That’s because the Hue bridge still reports it as on.  I wouldn’t recommend it, but you can set wallswitch in config.json to force Homebridge Hue to report the light as off when the bridge marks it as unreachable.

HomeKit support this feature on some devices when there unplugged it shows: this device is unreachable!

Not quite.  There’s two issues with this:

HomeKit can show devices as Not Responding, but only when they don’t respond to their state being read.  Unfortunately, that state cannot be pushed; it can only be set and cleared when the HomeKit app is refreshing the state.  Hence, I decided to go for Status Fault instead.
The Hue bridge doesn’t report whether a light has been powered down, only whether it’s still responding to requests.  Depending on the number of devices in your Zigbee network, it might take up to a minute after powering down a light, before the Hue bridge marks it as unreachable.  And powered devices could be marked unreachable due to a hiccup in the Zigbee network.


[Build] Kustomize Error: "cannot use api.Schema.SchemaProps.Properties (type spec.SchemaProperties) as type myProperties in argument to looksLikeAk8sType"

Current Behavior
Unable to build Meshery Server.
Screenshots/Logs
cd cmd; go clean; rm meshery; go mod tidy; \
	go build -ldflags="-w -s -X main.version=v0.5.68 -X main.commitsha=f53a27131c69a16751c377fc0fb31f589677c162 -X main.releasechannel="edge"" -tags draft -a -o meshery; \
	PROVIDER_BASE_URLS="http://mesherylocal.layer5.io:9876" \
	PORT=9081 \
	DEBUG=true \
	ADAPTER_URLS="mesherylocal.layer5.io:10000 mesherylocal.layer5.io:10001 mesherylocal.layer5.io:10002 mesherylocal.layer5.io:10003 mesherylocal.layer5.io:10004 mesherylocal.layer5.io:10005 mesherylocal.layer5.io:10006 mesherylocal.layer5.io:10007 mesherylocal.layer5.io:10008 mesherylocal.layer5.io:10009 meshery-nginx-sm:10010" \
	./meshery; \
	cd ..
rm: meshery: No such file or directory
# sigs.k8s.io/kustomize/api/internal/accumulator
../../go/pkg/mod/sigs.k8s.io/kustomize/api@v0.8.5/internal/accumulator/loadconfigfromcrds.go:68:47: cannot use api.Schema.SchemaProps.Properties (type spec.SchemaProperties) as type myProperties in argument to looksLikeAk8sType
/bin/sh: ./meshery: No such file or directory

Environment

Host OS: Mac
Go Version: 1.16.4

Contributor Guides and Resources

🛠 Meshery Build & Release Strategy
📚 Instructions for contributing to documentation

Meshery documentation site and source

🎨 Wireframes and designs for Meshery UI in Figma
🙋🏾🙋🏼 Questions: Layer5 Discussion Forum and Layer5 Community Slack

@Chadha93 corroborates this issue. @mgfeller, I wonder if you've seen this as well.

This is showing up in builds now. Example - https://github.com/meshery/meshery/runs/4087144445?check_suite_focus=true#step:4:77

@meshery/maintainers this is an urgent item.


Jump further than 1 character on failed matches

Currently, when an expression fails to match it goes back to the offset that we started at and starts the next round of matching at the very next character. This is inefficient since if we are looking for 'abc' and failed on 'def' then we can skip all of those characters.
I was imagining something like Rabin-Karp or Knuth-Morris-Pratt string search algorithms

The algorithm I was thinking of was Knuth Morris Pratt. It definitely can be extended to work with our use case. I think some of the other optimizations I have planned will assist with this.
https://en.wikipedia.org/wiki/Knuth–Morris–Pratt_algorithm


Change ambiguous PUT description in api-rest.md

From my point of view, the word standard could be interpreted as "usual/common" but also as "specification-standard" (see #198 ). Therefore I'd propose to change it to the word "common".

I can't see what the change in the second part of the diff... Is there any?

No, I don't know why it highlights this passage as different. I've only changed the one word in the PUT section while editing. And I've copied the two versions to diffchecker.com and it said that they are identical.

Sounds like linefeeds. dos2unix maybe set things straight if that be the case.


Add "Draft" state to blog post

Similar to https://github.com/ymita/Lifelog/issues/20, add the "Draft" state to post.

Added by this commit https://github.com/ymita/Lifelog/commit/fcd300d5327054efb07a9417fc8a52a16fb0d605.


Pilot - Automatic Team Selection

I m using pilot via fastfile:
  desc "Build and upload a new build to Apple TestFlight"
  lane :betaTest do
      testflight
  end

But It's asked me to choose the team every time

Multiple teams found, please enter the number of the team you want to use:

"Team 1" (000000)
"Team 2" (111111)

I tried to use testfligh like bellow, but it gives me an error:
testflight(
          username<EMAIL_ADDRESS>          team_id: "XXXXXX"
      )

Error:
[20:16:59]: Variable Dump:
[20:16:59]: {:DEFAULT_PLATFORM=>:ios, :PLATFORM_NAME=>:ios, :LANE_NAME=>"ios betaTest"}
[20:16:59]: getaddrinfo: nodename nor servname provided, or not known

+------+-------------------------------------+-------------+
|                     fastlane summary                     |
+------+-------------------------------------+-------------+
| Step | Action                              | Time (in s) |
+------+-------------------------------------+-------------+
| 1    | Verifying required fastlane version | 0           |
| 2    | default_platform                    | 0           |
| 3    | testflight                          | 15          |
+------+-------------------------------------+-------------+

[20:16:59]: fastlane finished with errors
Successfully submitted a crash report. If this is a problem with one of the tools specifically,
please submit an issue on GitHub and attach the following number to it: '4431202597d937abb0026b96ff88698d'
The crash report has been stored locally '/tmp/sentry_4431202597d937abb0026b96ff88698d.json'
/Users/raed.rbenv/versions/2.2.3/lib/ruby/2.2.0/net/http.rb:879:in `initialize': [!] getaddrinfo: nodename nor servname provided, or not known (Faraday::ConnectionFailed)

Is there a way to automate the selection of the team id?
Thanks in advance.

[20:16:59]: getaddrinfo: nodename nor servname provided, or not known

That means you're having troubles reaching the server, probably related to your internet connection


Peripheral disconnection

Hey there,
Is there any way with the current version to know if a peripheral is disconnected?
If not are you planning to have an Observable that emits when the peripheral is disconnected in the near future?

Hi,
Basically you could check it through state property on Peripheral. If you want to observe on it - in current version there's no way to do it.
If you'll receive disconnection while doing any action like discovering services, characteristics, etc. Observable.error(BluetoothError.PeripheralDisconnected) will be emitted, so you could watch on this particular error.
Besides that - i think that we could implement this, because it suits very well in our set of monitor methods.
So the answer is: yes, we could implement it in near future, but first we have to think a bit on API.
I think that the most convenient  would be to have method monitorConnectionState that will observe on didConnect and didDisconnect and emit enums with values Connected and Disconnected.
Out of curiosity: in which case do you need this method? Maybe context will help us to design better interfaces. :-)
Thanks,

I cannot think any better than having a monitorConnectionState on the peripheral as you suggested.
Cause it can be important to know which peripheral is disconnected and act according to that if multiple devices are connected.
But in this case I think it's needed to share the given peripheral for multiple observable sequences.
This fits to my regular use case cause I subscribe for multiple services/characteristics at the same time.
So I would say, let's do that 👍

Ok, we thought about it internally, and we have a better way to do this. We'll use Variable to monitor state changes of Peripheral. This will emit CBPeripheralState, so you'll have access to more detailed data about state. To give consistent API, we will mark current monitoring methods on BluetoothManager state as deprecated, and implement new APIs there too.
I think that it'll not be implemented today, rather tomorrow, because it requires some thought to do it properly & not break the API.
Thanks for feedback, really appreciate it. :-)

Hi,
We have code ready to merge, but still need to make some readme changes.
I'll try to push it tomorrow to the branch master and make a release.

Should be fixed by #22 .
Take a look at it and let us know what you think.

Wow! Awesome and quick work again. Thank you 👍

Hi, is it working for you? We've discovered some issues, and we don't know if it happens to every device, or just a few.
If it's not - don't worry - we'll deploy next version with quick fix.

Hi. Yes it's working for me. I use the rx_state only for peripheral and I haven't touched my old code with monitorState() for the central.

Thanks for answer, we'll dig into it.


structuredClone api will produce an error if argument is  reactive object

Vue version
all
Link to minimal reproduction
https://play.vuejs.org/#eNqtUstO3DAU/ZVbbzIjpY4GdtOA1FKktou2ait1gZGIkjvB4NiWHyEoyr9z42EGECNW7OzzsM99jOyztbyPyNas9LWTNoDHEO2p0LKzxgUYwWFVB9ljTqcNTLBxpoOMTJnQQtdG+wCdb+Fk5hfZN1TKwH/jVPMhW+4EUm/M6lEyCg0QZIdr+FoF5NrcLZb5DFbOVfdruFjlMM6ONSQt6GoWZ8Mw0J8A03Qp9PTi7aP09jboO39gFHJl2sVVg2jnSq9y8MHFOkSHzZkyGheE8r5SEZfLT0IXxWtfasABZ8KfeeGw9eiAdeScJ25KzrLYTpBmR5eAnVVUPN0AyuvV6TimKU1TWdAtoVLbGKD/2JkG1YlgxAtGVFns3SxnwVOkjWz5jTeaFiV1TLDadFYqdL9skBRZsF0viatoBe5+JIwyY2p98lxjfXsAv/HDjAn226FH16Ngey5UrsWwpc///sSBznuSkkdF6jfIP0jtjHPGrexL1A3FfqZLab+ndZe6/efPh4Da74qag6adSHrBaPHP3ij9Ke4xP04+2iQ2PQBkQyWE
Steps to reproduce

open the link https://play.vuejs.org/#eNqtUstO3DAU/ZVbbzIjpY4GdtOA1FKktou2ait1gZGIkjvB4NiWHyEoyr9z42EGECNW7OzzsM99jOyztbyPyNas9LWTNoDHEO2p0LKzxgUYwWFVB9ljTqcNTLBxpoOMTJnQQtdG+wCdb+Fk5hfZN1TKwH/jVPMhW+4EUm/M6lEyCg0QZIdr+FoF5NrcLZb5DFbOVfdruFjlMM6ONSQt6GoWZ8Mw0J8A03Qp9PTi7aP09jboO39gFHJl2sVVg2jnSq9y8MHFOkSHzZkyGheE8r5SEZfLT0IXxWtfasABZ8KfeeGw9eiAdeScJ25KzrLYTpBmR5eAnVVUPN0AyuvV6TimKU1TWdAtoVLbGKD/2JkG1YlgxAtGVFns3SxnwVOkjWz5jTeaFiV1TLDadFYqdL9skBRZsF0viatoBe5+JIwyY2p98lxjfXsAv/HDjAn226FH16Ngey5UrsWwpc///sSBznuSkkdF6jfIP0jtjHPGrexL1A3FfqZLab+ndZe6/efPh4Da74qag6adSHrBaPHP3ij9Ke4xP04+2iQ2PQBkQyWE
check the console of devtool

What is expected?
support data structure like Object in reactive variable.
What is actually happening?
Only basic data structure like string, number in reactive variable is supported by structuredClone api.
Here are the example codes with errors:
const info1 = ref({
  time: Date.now(),
  array: [1, {info: {
   name: 'xxx'
  }}]
})
const info2 = reactive({
  time: Date.now(),
  array: [1, {info: {
   name: 'xxx'
  }}]
})

console.log(`deep info1`, structuredClone(info1.value));
 console.log(`deep info2`, structuredClone(info2));

System Info
No response
Any additional comments?
No response

structuredClone does not support Proxy. see https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#supported_types
use structuredClone(toRaw(xxx)) instead.

structuredClone does not support Proxy. see https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#supported_types
use structuredClone(toRaw(xxx)) instead.

Closing as there's nothing to do on our side, really. Edison's recommendation is simple enough. We could ammend the docs though, the docs team over in vuejs/docs would certainly apprechiate this input.


Implement certificate project restrictions

Closes https://github.com/lxc/lxd/issues/7898

Quite a few pieces missing still:

POST support
Update of lxc config trust add to support the new feature
Adding lxc config trust show to match edit which was already added
Filling in the credentials cache with project permissions
Update of the daemon RBAC checks to apply operator type permissions to restricted project users
Add some tests

Testsuite passed

Pushed some updates, now the only things left are:

Update of the daemon RBAC checks to apply operator type permissions to restricted project users
Add some tests

Testsuite passed

Testsuite passed

Testsuite passed


SWDL patching issues

Hi,
Few months ago I tried to go from 02xx to 04xx on my unit.
Patched SWDL with toolbox, prepared custom metainfo2.txt, started full SWDL.
Sadly the update was not successful (Error: device; Error code: 0; Detail: 0, Device: cpu::cpuimage%2; Additional info: Checksum Error), and I was stuck at red screen.
Recovered it back to 02xx firmware that I started with, and was wondering what went wrong ever since.

eMMC was and still is OK (is recovered the device successfully and it's working without issues).
SD card was OK (I've used the same SD card to recover the unit).
metainfo2.txt was OK (asked few people around to prepare it for me and it was identical as mine)
04xx firmware was OK (downloaded again from two other independent sources, generated checksums, and compared).

So my reasoning goes to the way SWDL was patched by the toolbox.
Here are my findings:

Stock file SHA-256 checksum: 2a4f1ef60576173ccd8f55f636e6a89442edcb2083a197ad663ac8c6831dea57
Toolbox patch SHA-256 checksum: 03ca2e3817d1c0e3ea20159f13906a425ad48a57420ba4b74f9dcef7a235a27d
SWDLPatcher.exe SHA-256 checksum: e9b79d413df42b86b48083fb71b832049bd3c83f31784c922f96e51875457f05

Since patches are not the same, I compared changes and it looks like Toolbox is changing 4 bytes (no surprise, it's on the MIB2 display when it happens), where SWDLPatcher.exe is changing only 2 bytes.
Those 2 bytes are at the same offsets in both methods, but when patching are set to different values.
I have none experience with reverse engineering, so I can not say if this is a mistake or is it just different approach. I'm just trying to figure out why my update went wrong.
Main unit details: MST2_EU_VW_ZR_P0254T, VW MIB2 Discover Media.
Attaching screenshots of both modified files compared to the stock one.

Forget about buggy SWDLPatcher after using it you will not be able to install POI updates.
Your issue is not connected to the patch of SWDL as if it would be then you would not be even able to start the update procedure.
As after finishing the update you had Device: cpu::cpuimage%2; Additional info: Checksum Error I can assume that either you incorrectly prepared metainfo2 for the update to 04xx or there was an error either SD card or in eMMC (bad cluster).

In respect to your points:

Red screen comes from emergency which accepts only metainfo2.txt with legit signature.
see p.1
This points to the fact that metainfo2.txt of 4xx was not prepared correct
No comment on this one - this is expected behaviour


Add internal router and trainer

This PR allows our training docker containers to get a shared access signature url from the main server to download a fine-tuned model's training data from Azure.
Changes

Add BaseModel enum, ~utils/baseModel.ts
Add codegen:internalClient pnpm command
Add api/internal/v1 router with getTrainingInfo route
Add docker client with basic test
Add generateBlobDownloadUrl function

Update the names to use the word "Docker" in fewer places. Not sure why, but I was really focused on running this job in a docker container when I devised the folder structure and variable names!


Clean coverage after tests applying

Description of changes made
After applying tests to the project the coverage have to be removed.
Other notes
Closes #347

[x] I have checked that I am merging into correct branch

Why do we need to clean coverage and remove all tests after application? What if the user wants to apply a set of tests and then work on other tests, and then apply them again?

FYI: My approval is for the existing changes, in case they are suitable for cleaning the coverage.

Why do we need to clean coverage and remove all tests after application? What if the user wants to apply a set of tests and then work on other tests and then apply them again?

For your use case showing coverage seems to be useful, but there are a couple of ideological problems:

All the coverage is cleared when we run a new attempt of generation(previous tests are not showing after applying them to the test suite)
After applying tests, links from covered lines to the test that covers it become incorrect. So the coverage is not shown in the correct way
For such a development process, it will also be logical to have all the coverage shown, but we are not collecting such information from already existing tests.

All this led me to the conclusion that we have to either clear coverage and make it just a useful visualization of currently generated tests(as it is now) or refactor how we treat coverage, in general, to make it useful for understanding the not-covered part of the project.
I am voting for the first option, at least for now. @Vladislav0Art @pderakhshanfar @arksap2002 your opinion on it?

My problem is about removing test cases.
If you,
1- After test generation click on Apply to test suite
2- click on cancel after path selector pop up.
3- all tests are gone (and not only coverage info)

My problem is about removing test cases.
Oh, I didn't notice such behaviour, it obviously has to be fixed

My problem is about removing test cases. If you, 1- After test generation click on Apply to test suite 2- click on cancel after path selector pop up. 3- all tests are gone (and not only coverage info)

This issue fixed here: https://github.com/JetBrains-Research/TestSpark/pull/333
I am workign on it

@pderakhshanfar ixed, could you, please, check it again


The address / location is not found.

Description
At some phones, they are not able to select a location. Also the address is not found.
See screenshots, the same address works on different phones.
Info Required

Which version of the library do you actually use?
3.1.0

Do you have the localization permission granted?
yes

Are you sending parameters to the activity through the bundle?
yes, it works on most of the phones

Could you describe what are the actions do you make to raise that error?
It doesn't work on a zte axon 7 with android 7.1.

Screenshots

Shouldn't it be possible to select a location even when no address is found?
Within my app, im actually only needing the lat/long

@galadril please could you check if that device has the latest version of play services is installed?
About what you ask, sure! We can implement a fallback that shows the lat/long info without the address. 😉
Thanks for your report.

We can implement a fallback that shows the lat/long info without the address. 😉

Thanks 👍

I've an issue that some users can't setup geofences because the location picker can't see their address.
It's a huge feature in my app, so quite important.
Any change on the defaulting on lat/long fallback?

?

Hi @galadril !
I'm sorry I had no time to make it. I'll try to do it as soon as I can. Sorry for the inconvenience.

👍

Im really sorry, but I think I need to move away from this location picker. I get lots of complains that they can't select a location on my application (permissions exception and this location not found issue, so they can't select a location without an address)
At this moment Geofences are a core feature on my app and this is not working.

@galadril sorry to hear that. I understand that is important for your business but you have to understand that I maintain this library on my spare time. So, it's difficult to do it because I have a lot of duties outside my regular work (mainly kids).
I'll try to have it this week, but I cannot assure that will be finished.
Sorry for the inconvenience.

Yeah no hard feelings, I know what it is. Domoticz is also spare time project, but that grow larger with daily 10.000+ users. I also can't agree with every issue request that people shoot at me :)

Added option to show coordinates when no address is found #87

Did you had a chance to look at my pull request?

Can you please check and adjust my pull request to you likings/needs?

@ferranpons can you make a new release with the changes included??
Then I think we can close this issue request

@galadril during today you will have a new version. 😉

@galadril new version 3.3.0 available for right now! Enjoy!


Compare with datashape

Can tsalib be compared with datashape? This is assuming there is a basis for comparison.

Thanks for the reference to datashape. Added to References.
tsalib focuses only homogeneous tensors and how to specify their shapes inline with other code.


Where can I download MEin3D dataset mentioned in the paper?

You can make a request here
https://xip.uclb.com/i/healthcare_tools/LSFM.html

Hello @nequalstim, this site is still online? It seems to be offline. Where can I obtain the data?

I also couldn't access the website for application. How should I get MeIn3D dataset and LSFM model?

i couldn't access the site too. Is it even possible to obtain access or approval to the LSFM model anymore?

need this dataset, too.


Serverside template testing

Changes

Exposes a route /dev/render-template where an AJAX call can retrieve a given template rendered against data in the POST.
Provides a helper function for interfacing with this in a f/e test

Note

This branch is pretty untidy as there are commits from other things in here.

Would be good if somebody could look at this to see if it's feasible. It all works fine locally but depends on the app being running to be able to hit the /dev/render-template route.
Also, I added some CORS stuff just to get it to work but have no idea what the security implications are.

Can you rebase, and I'll take a look?


Fix public-body phases to be alpha

This wasn't detected by the tests, which turn out only to check
that the fields are in the same phase as the register, but not
that the register phases are correct.  Or something like that.

@nacnudus Which tests should be checking this?

In the registry-data repo
On 15 Nov 2017 12:42, "Arnau Siches"<EMAIL_ADDRESS>wrote:

@nacnudus https://github.com/nacnudus Which tests should be checking
this?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/openregister/registry-data/pull/159#issuecomment-344581025,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADW_-JosTQ1YY2t5X7ZGersi2JrRtJnHks5s2txDgaJpZM4Qez4L
.

The tests were built on the assumption that a register register and field register operated across phases. I believe the rules are that a register cannot use a field that is in a lower phase than it.
The tests assume that register register do not have to be related to a particular phase. This is what our implementation assumes and I think this will change soon to accommodate links across phases. I therefore think it's ok that tests don't check this.


[1.10.2 - 1.2.25] External Storage slows down interaction with crafting grid

Sky Factory 3 with RS updated to 1.2.25 in a single player game; 6GB of RAM reserved for Minecraft
I'm using an external storage interface (whitelisted to 3 items) connected to a drawer controller from Storage Drawers which again is connected to one compacting drawer and two 1x1 drawers, all locked to specific items.
Pulling out items (which are NOT those stored externally) via crafting grid and manually putting items in it is very slow, also crafting items multiple times (clicking quickly on the output slot will halt every seven items or so for a moment). Inserting items via JEI (+) can be very slow for the first time (repeating the same recipe is faster, probably because of some caching going on). This all happens even if the external storage is configured to insert only - in which case it would never have to check the storage drawers for items when pulling items. In fact external storage which is configured insert only ONLY has to be checked when inserting items into the grid which are whitelisted in the external storage. Clearly this optimization doesn't take place.

https://refinedstorage.raoulvdberge.com/wiki/profiling

Missing profiling report.


Adding support for custom C# http functions to be called by Gibraltar

Please take a look at test scenarios to see how this works.
The target for this PR is only to support C# functions.
A new property called 'isProxy' 'is added to Http and HttpTrigger bindings.
There will be two types of Http triggers that are called by Gibraltar aka Azure Functions Proxies:

Function gets an HttpRequestMessage and returns an HttpRequestMessage.
Function gets an HttpResponseMessage and returns an HttpResponseMessage.

This feature is targeted to be used by Advanced users who need more functionality than Gibraltar's declarative language and want to combine the power of Gibraltar with Azure functions! :-)

Hi @safihamid, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

@fabiocav @mathewc This has now node.js support and more tests. could you please review it again. thanks.

Closing this as per our discussions. We'll be migrating this code into its own binding.


fix: Don't send invalid message as normal message from MQTT

fixes #153
Signed-off-by: Leonard Goodell<EMAIL_ADDRESS>

If your build fails due to your commit message not passing the build checks, please review the guidelines here: https://github.com/edgexfoundry/go-mod-messaging/blob/main/.github/Contributing.md
PR Checklist
Please check if your PR fulfills the following requirements:

[x] I am not introducing a breaking change (if you are, flag in conventional commit message with BREAKING CHANGE: describing the break)
[x] I am not introducing a new dependency (add notes below if you are)
[ ] I have added unit tests for the new feature or bug fix (if not, why?) *N/A
[x] I have fully tested (add details below) this the new feature or bug fix (if not, why?)
[ ] I have opened a PR for the related docs change (if not, why?) N/A

Testing Instructions
uncovered and tested as part of App SDK InvalidMessagesReceived metric implementation and testing.
New Dependency Instructions (If applicable)

Codecov Report

Merging #154 (7364efb) into main (e3708ca) will increase coverage by 0.03%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #154      +/-   ##
==========================================
+ Coverage   82.09%   82.12%   +0.03%
==========================================
  Files          14       14
  Lines         553      554       +1
==========================================
+ Hits          454      455       +1
  Misses         77       77
  Partials       22       22

Impacted Files
Coverage Δ

internal/pkg/mqtt/client.go
92.30% <100.00%> (+0.05%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e3708ca...7364efb. Read the comment docs.


I want to improve UI of this app

@Kritika30032002  want to improve the UI of this todo App ..
Please assign me .

Please assign me .

Hello @taqui-786 . Can you please assign this issue to me.
I'll improve UI and make it best.

This is already assigned to someone.
You can Get assigned another issue or create the one for yourself.

oh that great. Thanks for helping @Kritika30032002 .

mam,
may i work with this issue,
can you assign to me

@prafull904434  This is already assigned to someone.
You can Get assigned another issue or create the one for yourself.


Document configuration of service mesh for use with Iter8

Service mesh is not yet part of ODH. The Iter8 traffic scenarios depend on the service mesh. Until service mesh is part o ODH, we will need to document how to install/configure it.

Done in iter8/README.md here: https://github.com/opendatahub-io-contrib/odh-contrib-manifests/pull/5


Node V14.2 - New Accounts in wallet set representative to themselves upon opening, instead of using the wallet representative

Description of bug:
I've noticed for quite awhile now, that new accounts in a wallet set the representative to themselves instead of to the wallet representative.
This is in a wallet with over 4,000 accounts, and I never used to have the issue so I'm not sure if it's possibly related to the large number of accounts this wallet has - or if it's just something that happened in a newer node version.
E.g - I RPC account_create, and get an address like xrb_1hmefcfq35td5f6rkh15hbpr4bkkhyyhmfhm7511jaka811bfp17xhkboyxo . When the account is opened by receiving a transaction, the representative is set to itself. Example: xrb_1hmefcfq35td5f6rkh15hbpr4bkkhyyhmfhm7511jaka811bfp17xhkboyxo is represented by xrb_1hmefcfq35td5f6rkh15hbpr4bkkhyyhmfhm7511jaka811bfp17xhkboyxo after the account is opened.
I have used the CLI --wallet_representative_set and the RPC wallet_representative_set. Neither of which change the behavior described above.
Steps to reproduce the issue:

Create a wallet via --wallet_create
Change rep via --wallet_representative_set
Create thousands of accounts
Open accounts via RPC receive, or by the automatic node pocketing mechanism.

Describe the results you received:
Accounts upon opening represent themselves.
After a period of time, my node becomes unresponsive until I set the representatives using account_representative_set. Likely due to my node having hundreds of representatives voting.
Describe the results you expected:
Accounts upon opening are represented by the wallet representative
Additional information you deem important (e.g. issue happens only occasionally):
Issue happens consistently and is repeatable.
Environment:

Ubuntu 18.04
Node 14.2 (tested on both docker node and node built from source)

Not sure if it's a bug or a feature, but this one is closely related:
Since state blocks contain the representative in every single block, it should probably always use the one that was set in wallet_representative_set, not only upon opening the account.

Cannot reproduce such issue. Some 3rd party wallets set representative for account itself, but official node / QT wallet not doing so.
Provided account (xrb_1hmefcfq35td5f6rkh15hbpr4bkkhyyhmfhm7511jaka811bfp17xhkboyxo) contains one of the default representatives in open block
https://nanocrawler.cc/explorer/block/1D2CE62FE2B4F02F43F1A1C6071DCCD8AF803F3573124F5F9C57CD38D47FD2A9
Representative was changed 3 times for xrb_1i9ugg14c5sph67z4st9xk8xatz59xntofqpbagaihctg6ngog1f45mwoa54:
https://nanocrawler.cc/explorer/block/4EA2702DE65D17489734FA25C99C407D0B2F12C2AA87913A9E72DE3F95D61A34
https://nanocrawler.cc/explorer/block/F3A7FD676EADD223E7306D1DAFCA01CB797BCBD745958FD0D76BED7BC92B9173
https://nanocrawler.cc/explorer/block/28B1FBDAE4A126953CB4B7FAA5C28852AA9F5A99A816CAEF9334A08DF5547272
Then for xrb_1x7biz69cem95oo7gxkrw6kzhfywq4x5dupw4z1bdzkb74dk9kpxwzjbdhhs:
https://nanocrawler.cc/explorer/block/BCC5852B8E643FA892B13FF3164D5B225B6C62E869EE5D72A72715A193E5F421
Then for xrb_3arg3asgtigae3xckabaaewkx3bzsh7nwz7jkmjos79ihyaxwphhm6qgjps4:
https://nanocrawler.cc/explorer/block/398A2B3BF998E3263D85A6CF27D220D2E76228D2BCE438963EB2BDDB717A8FC1
Then for xrb_1i9ugg14c5sph67z4st9xk8xatz59xntofqpbagaihctg6ngog1f45mwoa54 (again):
https://nanocrawler.cc/explorer/block/883A88F542E8FD4CE9C4690B32CE313D5334FC2163B94BDD3576D23290D8657F
Then for xrb_3arg3asgtigae3xckabaaewkx3bzsh7nwz7jkmjos79ihyaxwphhm6qgjps4 (again):
https://nanocrawler.cc/explorer/block/ECCAE3C2E2E04FA5CB7E99E4281C0D8DF4067E58F75AEB46B3C3E519305B656E
Then 2 times for xrb_1i9ugg14c5sph67z4st9xk8xatz59xntofqpbagaihctg6ngog1f45mwoa54 (again):
https://nanocrawler.cc/explorer/block/79444DB5CC6AF2946FC8ECDF1DFAEB06EB37A711D7960F4B85766BF76C007FA2
https://nanocrawler.cc/explorer/block/ED9C30F2E763B56E5EC7AAD4D0BE1DB64D6DDCA89BF2973EB9BD392D40E84482
Then for xrb_3o7uzba8b9e1wqu5ziwpruteyrs3scyqr761x7ke6w1xctohxfh5du75qgaj:
https://nanocrawler.cc/explorer/block/E54993207225725C2A2AD7C132CCB38431F0D834CEF6568B80D7E6971229F509
So, representative never was xrb_1hmefcfq35td5f6rkh15hbpr4bkkhyyhmfhm7511jaka811bfp17xhkboyxo for provided account. It's likely related to explorers representation issues

@renesq this is expected behavior. Changing representative for all accounts in wallet may require a lot of time. Changing each receive transaction to wallet default representative will not allow you to balance delegated wallet weight between multiple representatives. Options are possible, but I don't think it worth efforts


Organize methods in Viewport and explicitly name 3D methods with 3D

This is a subset of #50147, split into its own PR for easy reviewing.
This PR does two things:

Organize methods in Viewport so that all 3D methods are next to each other. This makes it easy to disable them with #50147.

Explicitly name 3D methods with a 3D suffix.

Thanks!


[improvement ]Add HTML report default export path for model.

Could it be considered to add report export path into model properties or add smth like "Project settings" to support per model export path setting ?
It's annoying to select a folder everytime I create an html report on windows system from My computer to C:\data\Projects........ and so on)

All save/open dialogs are system dialogs and should therefore use the last location when opening a new dialaog. Is it not remembering the last location?

Nope. Every time it starts from "my computer".

OK, on Mac it remembers the last location, nit on Windows.
I've changed it so that Directory Dialogs remember the last folder location.

Mhm, would you please test it on linux as well (have no such a thing right
at hand)?
Also there is a case with windows/linux network share (attached/unattached)
will it try to open location prior trying to open it (might be usefull to
make OS request authentication credentials)?
вт, 12 мар. 2019 г. в 15:15, Phil Beauvoir<EMAIL_ADDRESS>
OK, on Mac it remembers the last location, nit on Windows.
I've changed it so that Directory Dialogs remember the last folder
location.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/archimatetool/archi/issues/451#issuecomment-471975867,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AlIkQ5XCPilPYGKDTWkOiYiqGbRL4MJJks5vV5pQgaJpZM4bqdME
.

Mhm, would you please test it on linux as well

Tested for that too. I think it's only Mac that remembers the last folder.

Also there is a case with windows/linux network share (attached/unattached) will it try to open location prior trying to open it

It checks to see if the folder exists. If not, check if parent folder exists until an existing folder is found. If not, then default. Same for shared folder.

might be usefull to make OS request authentication credentials

Not possible. It's just a standard Directory dialog.

I've changed it so that Directory Dialogs remember the last folder location in 4.4


Update Documentation for v1.4

Update Photo of RaspiBlitz in README after the v1.4 release - when tryed new LCDHat+Fan option.

Basic Documentation is ready for v1.4. Closing issue.


Error generating Email entity, cannot find FileType data type

I was just generated the Email entity and there's a column named descriptionblobid of type FileType here's what I get in VsCode:
  // Description File Id FileType File that contains description content.
  descriptionblobid?: FileType | null;

where FileType is unknown, I'm not using that field right now and I can think of a workaround for it that is just creating a utility file with
type FileSystem = string;

OR
  descriptionblobid?: string | null;

and then fix every time we regenerate the file. Any advise is greatly appreciated, thanks

Hi @lalberto8085 - yes you are right - this is an issue with version 1 of dataverse-ify (https://github.com/scottdurow/dataverse-gen/issues/12) - It is fixed in version 2 which is beta right now!
https://github.com/scottdurow/dataverse-ify/blob/v2/UPGRADING.md
You can upgrade to version 2 by using npm install dataverse-ify@2 with npx dataverse-gen@2
But your workarounds are both good in the mean-time!

Thank you very much, I will give it a try asap


[AAP-11474] Use singluar form for event_source/event_filter

https://issues.redhat.com/browse/AAP-11474
Move

plugins/event_filters => plugins/event_filter
plugins/event_sources => plugins/event_source

Needs PR https://github.com/ansible/ansible-rulebook/pull/485 to be merged first

The worksflows use the published package of ansible-rulebook, so in order for them to pass we need to publish a new release of ansible-rulebook.


Use go1.21, clean up ci and drop go1.19

remove pull_request-target and make registry job only postsubmit
update config for dependabot
drop go1.19, use go1.21 as default for ci and release
add golangci-lint job
use go1.21 as base image
update go module to require minimum go1.20

Codecov Report
Patch and project coverage have no change.

Comparison is base (daab1ac) 49.20% compared to head (dfee452) 49.20%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1137   +/-   ##
=======================================
  Coverage   49.20%   49.20%
=======================================
  Files          44       44
  Lines        3652     3652
=======================================
  Hits         1797     1797
  Misses       1623     1623
  Partials      232      232

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


Move TextBox border & insets into env

Adds support for Insets values in Env.
Moves TextBox border and text insets constants into Env under theme::TEXTBOX_INSETS and  theme::TEXTBOX_BORDER_WIDTH.
Adjusts the stateful scroll offset computation to account for the insets and to match native input widgets as close as possible.

Related thing: what do you think about adding another, TEXTBOX_INSETS-like, offset to TextBox, that narrows the editor area and allows building things like textboxes with icons?


Support Electron Debugger API

I was looking into using https://github.com/N0taN3rd/node-warc that already has support for this but instead of attaching it to a running chrome I would like to use the internal Electron chromium Debugger API.
A very quick look imply that this API should work with it as a new implementation, am I right?
So it seems this is a feature request, one I might even be tempted to contribute if I am understanding it properly, so any pointers/quickstarters into it are welcomed.

@cyrus-and hi, it's possible to use without setting the port?. I have an use case where I attach the debugger to a specified webContents then want to use this library. it's this possible? thx.

@btzsoft how can you attach the debugger to anything without an underlying port? (I'm not an Electron user myself.) Feel free to open a new issue or reach me out via email.

@cyrus-and soory, i mean without --inspect=9222

@btzsoft yeah, I mean you said that you "attach the debugger to a specified webContents", how can you do that without specifying/using a port? It would be a matter of finding out which port is used by your debugger and use it with chrome-remote-interface. I'm sorry I cannot help you further without a detailed standalone example.


[FIX] Android Player Error code -38

Summary
This fixes a compatibility issue on Android Player which, in some android models (i.e. HUAWEI), generates a -38,0.
The root cause is that setSpeed suppose the player to start playing if paused (as per android doc https://developer.android.com/reference/android/media/MediaPlayer#setPlaybackParams(android.media.PlaybackParams) ), but if player doesn't start, calling pause when non playing on HUAWEI devices generates an error, which then cause player to be destroyed.
this fixes: #182 #197 and maybe other issues opened for the same problem.
the idea is to postpone the setSpeed call on the play() method.
in case player doesn't start, we explicitly call start().

Thank you for your contribution!

It seems like this patch was merged into master but wasn't published to npm. Could I urge the maintainers to do a npm publish for v2.0.4? At the moment I'm having to patch this package manually after installing it.
Reproduction:

npm i<EMAIL_ADDRESS>cat<EMAIL_ADDRESS>
Expected:

We don't see the code if (needToPauseAfterSet) { player.pause(); } in the cat's output

Actual:

We see the code if (needToPauseAfterSet) { player.pause(); } in the cat's output

Hi @staltz , @sbeca is not that responsive :-)

@staltz I tried to apply the fix manually by patching the library, without luck still getting the 38 error. How did you end up progressing? Did you ditch this lib?
iOS playback is working fine.
Anyone any suggestions? Any other libraries out there that are more reliable?

@staltz I tried to apply the fix manually by patching the library, without luck still getting the 38 error. How did you end up progressing? Did you ditch this lib?
iOS playback is working fine.
Anyone any suggestions? Any other libraries out there that are more reliable?

@mikevercoelen I'm rolling like this: https://github.com/staltz/manyverse/blob/abe222feb594d344be119809beeb86e446eaf05e/package.json#L56

@mikevercoelen I'm rolling like this: https://github.com/staltz/manyverse/blob/abe222feb594d344be119809beeb86e446eaf05e/package.json#L56

@staltz thanks for sharing, I'm still getting the error:
{"err": {"extra": 0, "what": -38}, "message": "Android MediaPlayer error"}
Any help would be highly appreciated :)

@staltz thanks for sharing, I'm still getting the error:
{"err": {"extra": 0, "what": -38}, "message": "Android MediaPlayer error"}
Any help would be highly appreciated :)

@mikevercoelen that's strange. Can you double check that AudioPlayerModule.java under your node_modules  is actually the same of the one contained in this PR? if yes, make sure you are rebuilding. If it still happen, well, maybe it's another issue :-)

@mikevercoelen that's strange. Can you double check that AudioPlayerModule.java under your node_modules  is actually the same of the one contained in this PR? if yes, make sure you are rebuilding. If it still happen, well, maybe it's another issue :-)

            if (needToPauseAfterSet) {
                player.pause();
            }

The root cause is that called player.pause() before the player prepared (prepare is async).
i think you may want to change like this
needToPauseAfterSet = wasAlreadyPlaying && speedValue == 0.0f;


fixed duplicate chat messages and chatbar not reseting

fixes #29

@skks1212 I've fixed the streaming animation as well as the chat duplication. Can you please check?


ROS2 migration of robot_ws and enhancement of simulation_ws

Description of changes:

robot_ws is now migrated to ROS2
Running the simulation of the simulation_ws no longer requires manually setting the GAZEBO_MODEL_PATH environment variable

These changes have been tested locally.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@mm318 Can you test it in RM please?

@mm318 Can you test it in RM please?

Yep, will need to debug issues.

Merging this in now, as problems specific to RoboMaker will be resolved in future pull requests.


Selecting node input ports is difficult due to limited-to-none mouse movement feedback

This is very hard to show well on a video, nonetheless I try to demonstrate it:
https://github.com/enso-org/enso/assets/1436948/f52adecb-abbc-4bde-bc5d-e61e565c6ac8
The issue is that once an input port is 'focused' my whole mouse cursor essentially 'merges' with the input port and there is no distinction anymore. At this point - when I move my mouse around slightly - I get no immediate feedback on these movements at all. I only get feedback when I move far enough to select a different input port (then the selection jumps to that port).
First of all, it is hard to be precise. I do not know how much I need to move my mouse to switch to the next port, because I don't see its actual position. It is easy to move the mouse too much and it just feels a bit random which port will be selected. It seems the only good way is to move the mouse completely outside the node (e.g. upwards) so that the cursor becomes visible again and then I can try to more easily 'aim' at where I want to connect.
Moreover, it creates an unpleasant experience - because I do not know how much I need to move the mouse to move to next port and not overshoot completely outside of the node, I try to be very precise - I start moving my mouse much slower, which makes my hand more tense overall. The movement feels sluggish - because there's no feedback to it until it actually switches. But any faster movements are very easy to overshoot and exit the node completely or select another input port than the one that I was aiming at.
Is it possible to decouple the input port selection and the mouse cursor? I understand that this looks nice and I don't think we need to get rid of the nice effect, but it would be great if we still had some small indicator that shows our mouse movements in-between switching selected input ports - that makes it much easier to be precise in these movements. The current behaviour is essentially hiding the mouse cursor and make the user work half-blinded to its movements.

On a side note, I'm not sure if this deserves a separate issue but I'm also always confused that the cursor is a big circle. In most cases the cursor is an arrow indicating the 'exact point of interaction' at the end of the arrow. A circular shape is all good too - but it is much harder to locate the center of that circle precisely - and in practice one can see that the center of the circle is the 'exact point of interaction' - its not the whole area of the circle, but the point at its center. So this is a 'point of interest' but it is not marked in any way - forcing the user to try to locate the center of the circle which is not easy to do precisely. Would it be possible to have some kind of dot at the center that would show us where exactly the interaction happens?

@sylwiabr and I was discussing this issue this morning.
We also discussed the pointer on Monday and will pick that one up on Wojciech return.

No longer relevant in new GUI, where we use system pointer.


Why does Scorex use custom serialization and de-serialization?

While working on #221 I noticed that most of the uses of Array happen inside Scorex's custom (de)serializers. Moreover, most of the (de)serializers are very similar to each other. That's a lot of boilerplate and code duplication.
Why does Scorex have custom (de)serializers?  Why don't we use a standard (de)serialization or (de)serilization library? (cf. https://gist.github.com/ramn/5566596, http://lampwww.epfl.ch/~hmiller/pickling/, https://scalapb.github.io/generated-code.html, https://medium.com/@dkomanov/scala-serialization-419d175c888a)

I agree on the value of using standard library for serialization. Pickling did not become popular, despite the strong initial push it got. Chill/kyro might be of interest https://github.com/twitter/chill


TypeError: 'method' object is not iterable

I am getting this error when trying to run the unit tests.
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-b3bd86b0b5de> in <module>()
      1 # Fit embedding model to graph
      2 g2v = Node2Vec()
----> 3 g2v.fit(G)

/home/dionysis/Documents/git_repos/graph2vec/graph2vec/graph.py in fit(self, nxGraph, verbose)
    356             Whether to print output while working
    357         """
--> 358         node_names = list(nxGraph.nodes)
    359         if type(node_names[0]) not in [int, str, np.int32, np.int64]:
    360             raise ValueError("Graph node names must be int or str!")

TypeError: 'method' object is not iterable

Do you think this line:
https://github.com/VHRanger/graph2vec/blob/8474f7ccf5d9b34d82fbf5ac16f04bcc37143cd6/graph2vec/graph.py#L358
Should change to this:
 node_names = list(nxGraph.nodes())

Because networkx graphs are actually iterables of their nodes, you could also do this to avoid any possible discrepancies between networkx 1.X and 2.X:
node_names = list(nxGraph)

@dvarelas
Sorry, I didn't get notifications for issues.
What is your networkx version?

Fixed as per @cthoyt resolved
Sorry for lateness, I forgot to watch this repo when I made it