Proposal: Converged and improved badge APIs

Summary
Status

Customer / job-to-be-done: App developers need to keep their users informed about number of new items/etc via badges on the taskbar regardless of whether their app is currently openProblem: Win32 apps have a different API for using badges on taskbar, with completely different functionality than UWP apps. Win32 apps can't simply set a number (they have to use custom icons), and UWP apps can only use preset badge/number options (they can't use custom icons).
How does our solution make things easier? All types of apps will benefit from a single, easy-to-use badge API, that supports straightforward numbers and common symbols in addition to custom icons.

❌ Problem validation
❌ Docs
❌ Dev spec
❌ Solution validation
❌ Implementation
❌ Samples

Target customer

Packaging
App types

✅ Packaged apps
✅ Unpackaged apps

✅ WPF
✅ Win32 (C++)
✅ WinForms
✅ Console
✅ UWP
⚠ Cross-plat (Electron, MAUI, React Native, etc)
⚠ PowerShell

While this work should be consumable by cross-platform platforms to improve experiences there, we should have a separate feature specifically for ensuring badges are built in "natively" and developers don't have to do additional custom work to access the Windows native layer.
Customer's job-to-be-done
Developer needs to keep their users informed via badges regardless of whether their app is currently open. They may need advanced functionality like custom icons, or might just need simple functionality like setting a number.
Problems that exist today

Problem
Validated?

TODO: Fill this out
❌ TODO

Summary
Converge badge APIs across Win32 and UWP, and also provide objects for the APIs rather than XML (bring in the Toolkit helpers into Reunion itself).
public class BadgeUpdater
{
  public void Update(byte newValue) {...}
  public void Update(BadgeGlyph newValue) {...}

  //...

  public enum BadgeGlyph
  {
    None,
    Activity,
    Alarm,
    //...
  }

  //...
}

Rationale
Manipulating XML text doesn't seem either compile-time safe nor adequate when programming in a programming language.
XML isn't a programming language, it's a serialization medium, like YAML, JSON or plain text.
Editing plain text in terms of XML doesn't provide compile-time safety nor does it support IntelliSense.
Hence, for API purity I suggest do add these two type-safe overloads to the API, basically implementing the two functions documented in the documentation.
Additional ask for this here: https://github.com/microsoft/microsoft-ui-xaml/issues/1919

🦙 FYI @andrewleader does this fall into your purview as well? Thoughts?

Personally I would like the tile and taskbar badges to be separated APIs. This will help multi-instance or multi-window UWP apps to set/update badges on each instance or window. Right now only the primary instance or window in taskbar shows badges which isn't that user friendly.

@soumyamahunt do your apps have windows that don't appear "glommed" (grouped) together on Taskbar? Most apps always appear glommed together and thus there's only one badge and no point for badges per window...
I'm trying to find out if you're wanting separate badges even when the windows are glommed (like when you hover over and the window previews appear, each one of those has individual separate badges?) or if your app simply avoids glomming the windows and appears as separate instances on taskbar. Any more context/details behind your scenario would be super helpful!

@soumyamahunt do your apps have windows that don't appear "glommed" (grouped) together on Taskbar? Most apps always appear glommed together and thus there's only one badge and no point for badges per window...

The way I think about badges is that it prompts user to do some tasks by opening a specific window/instance of app. Even if app's windows are grouped together if there is only one badge displayed on the left most window, then we are passing the burden to user to find out in which window/instance of the app demands their attention which isn't that convenient to user.

I'm trying to find out if you're wanting separate badges even when the windows are glommed (like when you hover over and the window previews appear, each one of those has individual separate badges?) or if your app simply avoids glomming the windows and appears as separate instances on taskbar. Any more context/details behind your scenario would be super helpful!

I think even if app windows are either gloomed or not, each window should be allowed to show their own badge to notify user that specific window needs their attention not pass the burden to user to find out which window needs their attention. The scenarios I can think of are:

Suppose you are designing a tabbed editor app that user uses to edit files in separate tabs. You might want to give user the flexibility to have multiple windows/instances of your app and have multiple tabs in them. You might want to notify the number of tabs that have unsaved changes separately for each window via taskbar badges so user knows which window they have to click and save there changes then.

Another scenario can be a social media app that lets user to use multiple accounts simultaneously (since most users normally have to social accounts: one for personal use, and one for official/ commercial use to separate their work from personal opinions or life stuff). You might want to each window to have their separate badges to notify users which account needs their attention.

Makes sense, thank you for all those details! That indeed does make sense. We'll discuss this with the taskbar UI team to see if they've heard similar user feedback about this, but I totally agree that the enhanced per-window badges would be useful for those cases!

Something that I'd love to see added to the badge API, would be the ability to flash the taskbar icon for the app as well.
This is a highly requested feature for IM apps and it would be great to have it (Or at least to be able to invoke FlashWindowEx for UWP apps, of course)

Something that I'd love to see added to the badge API, would be the ability to flash the taskbar icon for the app as well.
This is a highly requested feature for IM apps and it would be great to have it (Or at least to be able to invoke FlashWindowEx for UWP apps, of course)

App taskbar button flashing, as implemented now, has for example the following - to me - negative UX:

Another point about taskbar flashing: If you have enabled "automatically hiding the taskbar" in Windows Settings, taskbar flashing will block the taskbar from shrinking back until you've opened the app. In other words, it basically forces you to open the app as soon as possible. Now, in some cases that might be useful but not in others. Take Visual Studio for example. When you start VS by loading a project and then minimize it, VS will flash the taskbar once it's done loading the project and "ready to go":

While that's all fine and good, VS's taskbar icon now blocks my taskbar from automatically hiding again. It will now constantly occupy screen real-estate until I've opened VS - which could be in this moment or 5 minutes later. The user might not always want to jump into VS as soon as it is done loading. However, thanks to preventing the taskbar from hiding now, the user is quite forced to open the VS instance and minimize it again if the user is not ready to use it yet,

This is part of a longer exchange in another Project Reunion thread starting here.
Ideally, the UWP shell notification APIs (Badge APIs, Toast notification APIs,...) will be improved so that developers who currently feel the need to use taskbar app button flashing instead can switch over to those notification shell elements. Taskbar app button flashing (as currently implemented) has the potential to be intrusive and obstructive to a user's current workflow.

Just like to bring this thread back to attention.

Hi @SetTrend, thanks for bringing this back up. This isn't part of our 1.1 plans and we're now tracking feature requests on our productboard portal, here's the feature request for badge APIs, please vote on it so we can easily inform you of updates via email!
Since we're tracking the feature there, I'll close this issue (although feel free to continue discussing).
And for flashing or progress indicators, feel free to submit that idea on productboard too and explain specifically what you'd need! If that becomes a popular request, we'll add that to the portal too so others can easily vote on it!

@andrewleader left this feedback on Twitter here for @aclinick. I think it's important to have an issue open and linked to each product board item to facilitate community discussions and clarification on scope of features for specs and things like this issue does.
Closing it before the feature is done doesn't seem helpful and confusing. It also makes it harder for folks to find when searching issues on GitHub meaning they may file duplicate issues or not find a link to the product board to upvote the feature. (In general, it also means there's votes now in multiple places to coordinate.)

For this feature, we're not at the stage where we're scoping the feature specs yet - we don't know what specifically we'll build, or if there's enough interest to build this yet. When we get closer to specing out the feature we'll re-create a GitHub spec with more details.
By having people vote and explain what they need will allow us to look through what everyone's requirements are when we do get around to actually spec'ing the feature. Having all of that feedback go into productboard is simply easier for us (then regardless of whether a customer emails us feedback or votes through the portal, we can merge all of that feedback into a single place to see and understand what customers need).
One problem that happens here is thumbs up votes here on GitHub are tough to infer any meaning from. We can see that MarcAnt upvoted the proposal, but the proposal does mention custom icons... does MarcAnt need custom icons and that's why they upvoted the proposal? With our portal, we require them to say at least something when voting, which usually results in them giving some explanation of what and why they need.

@andrewleader I guess I see the comments on the issue as the feedback when voting you mention in the product board. I guess the issue I see with the product board is that as a community member I don't see those comments and input other are providing you into what they see in that feature. Also, if there's just a one sentence descriptor of that feature, there's no way for me to ask questions about it or what the feature does or the scope that feature would provide compared to having an open issue or discussion here on GitHub to facilitate that.

The prompt on the portal asks users to explain "Why do you need this?", if they're unclear about what's in scope of the feature, they can explain "I need to do X, Y, and Z", and when we're building the feature we're able to evaluate everything that everyone needs. When our portal descriptions are vague and open ended, we try to include a call to action specifying "Tell us exactly what you need" to reinforce that they should tell us what they need. Additionally, another thing I hope our team does is once we do start spec'ing a feature, reach out to everyone that asked for the feature (which is a simple one-step action to notify everyone) and ask them to look over the spec and provide feedback.
We understand that this is a change and different, however the Adaptive Cards team has found great success with using the productboard portal, and we've already had over 380 votes come in through our portal in this short timespan (Adaptive Cards also saw a drastic increase in feedback when they started using their portal). We haven't seen anywhere near that engagement with just GitHub itself, and each of those votes typically has a short explanation of how they'd use the feature or what they need or why they need it, which we rarely get with GitHub. That explanation, along with having to rank features as "Critical" or "Important" or "Nice to have" drastically helps us prioritize and figure out what we should build and why.
Also, if users do ask clarifying questions when voting on the portal, we can respond directly to them. If we identify there's something ambiguous we should clarify in the description, we can then update the description.
Having an open GitHub issue when we're still just in the feedback and interest gathering stage of a feature would just add yet another place for feedback and votes to go to, which wouldn't be easily consolidated and therefore potentially ignored (we can manually sideload in the feedback from GitHub, but it's extra work for us, and then if they also vote on the portal their vote would potentially be double-counted depending on their GitHub username vs their email address).

One problem that happens here is thumbs up votes here on GitHub are tough to infer any meaning from.

From my own experience I can confirm this is an issue indeed.

Thanks for the explanation @andrewleader, it's great to see your team getting more engagement and feedback there.
I think my main concern is the lack of transparency and connection to the community as none of the comments or new suggestions are exposed for others to chime-in on or be aware of.
Also, if you have developers already here on GitHub which are engaged; how do they know finding this closed issue to go vote for the feature on the product board?


"Crypto as trait" experiments

In this PR I'm experimenting with making the edhoc-crypto module not re-export items from different crates (whose interface is implicitly defined by the shared pub items), but define a type (ideally as impl Trait, but until TAIT is stable, as public reexports) that is accessed through a defined trait interface.
Apart from cleaner separation of responsibilities, the longer goal here is to remove the need for one central and depending-on-everyone-depending-on-cfg edhoc-crypto crate, and to replace it with generics on the public structs and functions. While that could be used to run different back-ends in parallel (not sure why one would want that), its main goal is to sever the dependency from the library to the back-ends, making the library both easier to maintain and easier to upload to crates.io (#98). It'd then be up to the application to select its back-end, and propagate that through any intermediate crates that build on edhoc (which now don't have to pass on features any more, but can pass on types, which is also easier to maintain).
The first commit (after the ones from #102 that restore CI) only does this for hacspec -- this was tested locally, and I'm relying on CI to tell me where else changes are needed (while I'm still getting my bearings around the library).

This is currently running into a situation where get_random_byte is U8 in hacspec cases and u8 in others. While this could be resolved with associated types and whatnot, I guess this best waits for @geonnave's hacspec simplifications.

Hacspec simplifications merged on main!

Rebased onto main, and is also much simpler now. Some back-ends still need to be updated, but that's mainly a formality. So far I don't expect any trouble with hacspec; the real test will come when edhoc.rs functions will suddenly start being edhoc_exporter<C: Crypto>(...), or (maybe more ergonomically) the state will take a Crypto generic argument.

From CI not complaining about me having slumped around cc2538, I take it that platform is already on its way out? (Ignoring it for here unless it makes CI fail or I hear otherwise from you).

From CI not complaining about me having slumped around cc2538, I take it that platform is already on its way out? (Ignoring it for here unless it makes CI fail or I hear otherwise from you).

Yeah, you can safely ignore cc2538 for now.

The latest changeset also contains first steps toward being generic over the crypto backend.
This is incredibly verbose because it is all standalone functions and not impls on a struct (where more typing would be grouped into one line). May make sense to pursue this if typestating goes ahead inside edhoc.rs.
In parallel, it'd be worth considering whether to pass it as a type or a (usually ZST) instance of a type -- adding an argument for the Crypto backend would also help with the verbosity. I'd like that because it'd mean that, say, on platforms like PSA that AIU need some initialization, you can't pass an instance into EDHOC without having initialized it first. (But that's probably best explored when the code is in a more impl-block style).

This is looking great, and the CI passes!
Also I tested with hax in this branch and... there is no evident error being caused by the trait stuff, but there is a new error[HAX0008] ... unkonwn reason. @W95Psp if you could to take a quick look, I leave all the hax errors below.
error[HAX0008]: (reject_RawOrMutPointer) ExplicitRejection { reason: "unknown reason" }

error[HAX0010]: (RefMut) At this position, Hax was expecting an expression of the shape `&mut _`. Hax forbids `f(x)` (where `f` expects a mutable reference as input) when `x` is not a place expression[1] or when it is a dereference expres
sion.

                [1]: https://doc.rust-lang.org/reference/expressions.html#place-expressions-and-value-expressions
   --> lib/src/edhoc.rs:849:17
    |
849 | /                 g_x.copy_from_slice(
850 | |                     &rcvd_message_1.content[3 + raw_suites_len..3 + raw_suites_len + P256_ELEM_LEN],
851 | |                 );
    | |_________________^

error[HAX0001]: (CfIntoMonads) something is not implemented yet.This is discussed in issue https://github.com/hacspec/hacspec-v2/issues/96.
                Please upvote or comment this issue if you see this error message.
                TODO: Monad for loop-related control flow
   --> lib/src/lib.rs:332:5
    |
332 | /     while conn_id < -24 || conn_id > 23 {
333 | |         conn_id = Crypto::get_random_byte() as i8;
334 | |     }
    | |_____^

error[HAX0001]: (FunctionalizeLoops) something is not implemented yet.
                Only for loop are being functionalized for now
   --> lib/src/lib.rs:332:5
    |
332 | /     while conn_id < -24 || conn_id > 23 {
333 | |         conn_id = Crypto::get_random_byte() as i8;
334 | |     }
    | |_____^

I'm curious: What is hax's entry point? If it previously tried to prove any properties of a sequence of r_parse_message_1 & co, those symbols are now gone (replaced with more generic symbols, and not monomorphized inside edhoc.rs). I've looked at the CI scripts (BTW, building that Dockerfile once and reusing it should speed this up a lot), but I'd guess that the actual verification happens from the fstar artifact, and is not done as part of CI.

The CI just translates the Rust code into fstar. So yes, the actual verification happens once the fstar artifact is generated, and is, for now, a manual process.

Note that a big no-no in hacspec is any usage of mutable references.

Here's a relevant question then: How about
fn f<T: SomeTrait>(&mut T, ...)
when we (only for hacspec) limit this to T = &SomeType? Is that, from hacspec's point of view, mutable or not?
Background: If we make the "crypto engine" an instance, that'd be a ZST that's creatable out of thin air for any software implementation, and thus is Clone, Copy, Send, Sync and what-so-not), but a HW crypto engine would either be busy-polling for the engine to be free, or use some OS's synchronization primitives (bye bye portability), or would be instanciated into a single ZST (or maybe pointer sized type to carry its hardware base addess), and by means of being an exclusive reference (pedants don't call &mut a mutable reference, but an exclusive one) ensures serialization of all operations on it.

CC @W95Psp to clarify

To clarify about mutable references: they are forbidden everywhere but on function inputs.
Basically, we forbid:

aliasing (i.e. let y: &mut T = x;),
&mut T in return position.
On function inputs, mutable references actually implement state-passing: fn f(x: &mut T) -> U is understood by Hax (new name of hacspec) as fn f(x: T) -> (U, T).

So @chrysn, defining such a fn f<T: SomeTrait>(&mut T, ...) is completely fine! And indeed, as you state it @chrysn , &mut is great for imposing a linear discipline on resources, not only for mutation :+1:

Thanks, that's good news. So we can have a Crypto usable through &mut, passed it that way into the low-level functions, and high-level structs can own a Crypto -- for the time being (with an option to have a storage form that outlives its Crypto to be added if ever a Crypto is not Clone and 'static).

To keep things managable I've marked this as ready-for-review -- I think that this is now standalone enough for review at the lower layers.
Next steps would be pulling an implementation of Crypto into the high-level state. This has ergonomics downsides -- constructing a new EDHOC state now requires passing in the chosen crypto, and, IMO worse, helper functions such as generate_connection_identifier_cbor need it passed in as well. It's tempting to provide helpers that just resort to providing constructors with the default crypto, but then, we have the (optional but crates.io doesn't care) dependency back to all the implementations once more. A bit worse (aka "I don't know what's the best solution yet"), the tricks around #114 for temporarily taking out an owned State from a &mut State won't work unless the Crypto is Clone (which I'd generally hope to avoid requiring, plus we don't "really" need it there).
Proposed way forward: Please give me a rough round of feedback on this one -- not for merging but just for the direction. If that's OK, I'd tackle pulling it through the rest (lib, c_wrappers, examples) so we can decide whether we're happy with the resulting API. In that stage, the current edhoc_crypto module would only be depended on by examples and test code. If we then move those tests out of the edhoc-rs crate, or by that time have one published crypto implementation instead on which the tests could depend directly, that'd make #98 (publication of edhoc-rs at crates.io) possible.

Thanks for the update @chrysn, I am still reviewing, but one advantage that I see is that with this new approach, we should be able to implement stateful initialization of crypto backends (#94) by adding the needed state fields to pub struct Crypto.

This has been replaced by https://github.com/openwsn-berkeley/edhoc-rs/pull/127 whcih is now merged.


Integrate rollouts

Problem:
I am using ArgoCD rollouts for auto rollback when the analysis fails. The rollouts are executed for each new replicaset. Therefore, we are having a lot of rollouts as a new replicaset is created when a deployment is restarted by the rabbit-stalker operator.
Solution:
I want to include rollouts in rabbit-stalker to be able to reset rollouts instead of deployment.
@achetronic  @sebastocorp

Hey @craftcodedev thanks for rising this issue!
This use case is interesting. As far as I know, to reset a Rollout you need to change the spec.restartedAt field
https://argo-rollouts.readthedocs.io/en/stable/features/restart/#scheduled-restarts
Is this a solution for your use case? Could you open a PR for that?

Hey @achetronic thanks for your answer.
Sure I will, could you give me permissions?
I was taking a look at the code and I think the SetWorkloadRestartAnnotation should be modified adding the rollout kind (ResourceKindRollout) and the proper annotation (.spec.restartAt). Could you give me an example to add in the pr how should be the condition modifying the annotation?
Something like:
if kind == ResourceKindRollout {

}

Hey, about permissions for making contributions the process starts forking the repository, creating the changes in another branch, and then opening a PR to this project, then it will be accepted by @sebastocorp or me
About the code, you are dealing with Rollout, which is a custom resource. This process is usually a bit different than the process needed for core resources (Daemonset, Deployment, etc)
When storing a Custom Resource into a variable after retrieval from API server, you need to store it into a unstructured.Unstructured{} type and not into a core type
Remember that Go is a strong typed language, and Kubernetes core resources are well known, so  you can craft a Struct for a core resource, which has some adventages
Different resources than core ones are treated as unstructured as, from Golang point of view, you don't know how to do the Struct previously, and this forces to store it into a map[string]interface{}, which are harder to deal. But kubebuilder give us a better approach with the unstructured.Unstructured{} type, adding some useful methods over the map I mentioned
This being said, you are right. Only needed some small pieces of code for the changes, but you have to take care with the difference between core resources and custom ones 😊

@craftcodedev Hello there, are you still interested on this? if not, this issue will be closed as stale

Hello @craftcodedev thanks for your contribution!
I will review it deeper during next days 😊
By the moment I have reviewed it on bird view, and I have detected some little incosistencies with our code quality that will have to be fixed.
I will suggest some little changes on the PR. Keep in touch!

As promised, some suggestions in the kitchen :)
https://github.com/prosimcorp/rabbit-stalker/pull/5#issuecomment-2032566254

Hey @blasshak sorry for the long wait. We have heard you so we are merging some changes to make this work better. The changes are already in master branch
Thanks to these changes, you should be able to create a function that return a patch and it's type. Basically this is all you need now to extend our operator :)
basically, you only need to create a function like this one, but specialized on Argo Rollouts patch:
https://github.com/prosimcorp/rabbit-stalker/blob/main/controllers/workloadaction_sync.go#L309C1-L321C2
Moreover, you need to register your function here:
https://github.com/prosimcorp/rabbit-stalker/blob/main/controllers/workloadaction_sync.go#L344-L348
And add your constant for Argo Rollout here:
https://github.com/prosimcorp/rabbit-stalker/blob/main/controllers/workloadaction_sync.go#L57-L59
Something like ResourceKindArgoRollout = "Rollout" will be enough

With these changes from your side, if you find the time to open the PR, we can test and release a new version if tests pass, and everything will be fixed now 😄

Closing this issue due to lack of author interest
We will implement this feature in the next release

Implemented on v1.3.0
https://github.com/prosimcorp/rabbit-stalker/releases/tag/v1.3.0


Go cwd

There's two fixes in here:

use go test instead of go build for the main syntax check. go build only actually works on a main package, so if you're working on a library package it's not very useful. go test with -c will only compile the tests without running them. Even if there's no tests it will still make sure the package compiles. Otherwise it's virtually identical to go build.

use mapexpr to fix the output paths from things erroring. Since cwd puts the command inside an inner-path, it will break the output paths on its own.

Fixed the name

Thanks!


docs: add srml readme, clarify comment in staking

We might as well move the relevant part of the high-level Substrate Runtime docs to the SRML readme. cc @shawntabrizi
Also, I noticed that the srml/staking/lib.rs requires a SessionInterface because it claims that Staking sets the ValidatorId of the session::Trait. Staking seems to set the ValidatorIdOf for session::Trait in node/runtime;ValidatorId = AccountId in node/runtime. I changed a comment in staking to reflect this, but, if there is something I'm missing here, this change can easily be reverted.

@shawntabrizi is the content ok?


Show current position as starting position inn Windows Terminal Settings Launch Parameters Launch Position

As the title describes, when the Launch Position is first shown, give the current position greyed out as the x and y position.
When the Let Windows Decide is unchecked, un-grey out the x and y position and with each change of the x and y position, move the current window to match the new position.  If I move the window on the screen manually, automatically update the x and y positions.

Additionally, if I uncheck 'Let Windows Decide', automatically turn off the 'Center on launch' selection.

Thanks for filing! We're going to merge this with #14156 to make it a part of improving this part of the settings UI as a whole.
/dup #14156


Improve embedded coding examples

Follow-up for #245:

[x] Create a custom markdown tag (eg [codesandbox:foo/bar](baz)) that generates our CodeSandbox links with default "Try it on CodeSandbox" text. (#251)
[ ] Import more of Dan's Codepen examples to the new examples folder.
[ ] Use the new gatsby-remark-code-repls plugin to create CodeSandbox links for the new examples.
[ ] Generated HTML could also include a link to view the file directly in GitHub. (Some people have expressed concerns that Codepen's interface is not great for screen readers, eg #38); cc @jenshedqvist and @StommePoes.

I'm not sure that adding direct links to view example source files in GitHub is worth doing. (I'm not sure it will actually address the accessibility concern.) So I'm going to hold off on doing this unless someone who knows more about this than I do confirms it as a worthwhile course of action.

I'm going to combine the 2 Gatsby plug-ins I created recently (gatsby-remark-babel-repl-link and gatsby-remark-codepen-examples) into a single plug-in (gatsby-remark-code-repls) that can be shared upstream with Gatsby. This way others can use it too. I've talked with Kyle about this and he thinks it will be useful to others as well. Once it's been merged, I'll update this repo to use the new shared plug-in rather than the 2 local ones.

Hi @bvaughn , did the PR from @danielsbird fully resolve this issue? If it did, I think this can be closed. If not, could you let me know what needs to be done to finish this issue? Thank you.


can't access SnackProgressBar.TYPE_HORIZONTAL

as the title says
After updating to v6.0, I can't set
SnackProgressBarManager.LENGTH_INDEFINITE
and
SnackProgressBar.TYPE_HORIZONTAL
Also, there's a lot of compile-time errors. IMHO, v6.0 isn't stable

Yes, you are right. It is working fine on my local library i.e. if you clone this repo and run DemoActivity. But when compiler by Jitpack, things just gone haywire, maybe due to the new R8 shrinker. Please don't use v6.0 for now.
Will be good if anyone can help to check my grade files to use the correct settings.

Yes, you are right. It is working fine on my local library i.e. if you clone this repo and run DemoActivity. But when compiler by Jitpack, things just gone haywire, maybe due to the new R8 shrinker. Please don't use v6.0 for now.
Will be good if anyone can help to check my grade files to use the correct settings.

I guess you could use something like
ignore class in the proguard file to avoid class the members being shrinked by PeoGuard/R8.

If you look at the top of the class, I've added @Keep annotations there, which previous gradle was working fine. I can roll back to the older grade version, but I'd like to get this solved properly if possible with R8.

@bartekpacia, fixed in v6.1. Please give it a try and hope you enjoy the new features. :-)

@tingyik90 Thank you for fast reaction, preventing memory leaks by using Arch Components is always a big +
I think it still requires adding the keep rules, because disabling shrinking is a temporary solution

@Keep annotations is applied to all classes, but I'm not sure whether it works. Hope that you can let me know after you try it in your app (both debug and release variant), then I can close this. Thanks!

@tingyik90 According to my (little) knowledge in the 'shrinking field', you need to add @Keep not only to classes, but also to methods (not sure about class fields)

I have limited knowledge about Proguard as well. It is always very confusing to me, so I just leave it default. But as I know @Keep annotation at class level keep the whole class as it is. See quote below from here.

Alternatively, you can add the @Keep annotation to the code you want to keep. Adding @Keep on a class keeps the entire class as-is. Adding it on a method or field will keep the method/field (and its name) as well as the class name intact.

SnackProgressBarManager.LENGTH_INDEFINITE and SnackProgressBar.TYPE_HORIZONTAL are in a companion object, it might matter because companions are references in Java like this
SnackProgressBar.Companion.TYPE_HORIZONTAL

Ah... you are right. I'll add a @Keep annotation in the next release for companion object. For now, if there is no issue, I'll keep it as it is due to time constraint. I'm already squeezing out all my time. Haha.

Take your time, you've already done a piece of awesome work and v6.1 works well


[SPARK-34716][SQL] Support ANSI SQL intervals by the aggregate function sum

What changes were proposed in this pull request?
Extend the Sum expression to  to support DayTimeIntervalType and YearMonthIntervalType added by #31614.
Note: the expressions can throw the overflow exception independently from the SQL config spark.sql.ansi.enabled. In this way, the modified expressions always behave in the ANSI mode for the intervals.
Why are the changes needed?
Extend org.apache.spark.sql.catalyst.expressions.aggregate.Sum to support DayTimeIntervalType and YearMonthIntervalType.
Does this PR introduce any user-facing change?
'No'.
Should not since new types have not been released yet.
How was this patch tested?
Jenkins test

Test build #137131 has started for PR 32107 at commit d1373fb.

Test build #137131 has finished for PR 32107 at commit d1373fb.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

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

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41709/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41709/

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

Test build #137173 has started for PR 32107 at commit 7897af4.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41751/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41751/

cc @MaxGekk

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

Test build #137173 has finished for PR 32107 at commit 7897af4.

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

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

@beliefer Could you add more tests, please. For example, look at the tests which the PR #27619 removed:

checks in ExpressionTypeCheckingSuite
test("calendar interval agg support hash aggregate")

In fact, sum uses sort aggregate.

Test build #137270 has started for PR 32107 at commit a5bf107.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41849/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41849/

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

Test build #137280 has started for PR 32107 at commit 9b8c461.

Test build #137280 has finished for PR 32107 at commit 9b8c461.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

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

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41858/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41858/

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

Test build #137270 has finished for PR 32107 at commit a5bf107.

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

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

Test build #137290 has started for PR 32107 at commit a4d1214.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41870/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41870/

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

Test build #137290 has finished for PR 32107 at commit a4d1214.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

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

Test build #137347 has started for PR 32107 at commit 18c17ff.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41926/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41926/

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

Test build #137347 has finished for PR 32107 at commit 18c17ff.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

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

Test build #137390 has started for PR 32107 at commit 01effb8.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41967/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41967/

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

Just curious. Does other DBMSes support aggregation on such interval types?

@HyukjinKwon Should this be rebased/merged on the master?

oh yeah to retrigger the test.

Test build #137390 has finished for PR 32107 at commit 01effb8.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

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

Because https://github.com/apache/spark/pull/32212/ merged
Retest this please

Retest this please

Test build #137529 has started for PR 32107 at commit 01effb8.

@beliefer Could you rebase/merge on master. This will trigger GitHub actions. FYI, jenkins job doesn't run all checks.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42103/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42103/

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

Test build #137530 has started for PR 32107 at commit d022492.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42104/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42104/

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

Test build #137529 has finished for PR 32107 at commit 01effb8.

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

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

Test build #137530 has finished for PR 32107 at commit d022492.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
public class VectorizedBLAS extends F2jBLAS
class PandasOnSparkFrameMethods(object):
class PandasOnSparkSeriesMethods(object):
class PandasOnSparkPlotAccessor(PandasObject):
class PandasOnSparkBarPlot(PandasBarPlot, TopNPlotBase):
class PandasOnSparkBoxPlot(PandasBoxPlot, BoxPlotBase):
class PandasOnSparkHistPlot(PandasHistPlot, HistogramPlotBase):
class PandasOnSparkPiePlot(PandasPiePlot, TopNPlotBase):
class PandasOnSparkAreaPlot(PandasAreaPlot, SampledPlotBase):
class PandasOnSparkLinePlot(PandasLinePlot, SampledPlotBase):
class PandasOnSparkBarhPlot(PandasBarhPlot, TopNPlotBase):
class PandasOnSparkScatterPlot(PandasScatterPlot, TopNPlotBase):
class PandasOnSparkKdePlot(PandasKdePlot, KdePlotBase):
class PandasOnSparkUsageLogger(object):
case class KnownFloatingPointNormalized(child: Expression) extends TaggingExpression
case class Acos(child: Expression) extends UnaryMathExpression(math.acos, \"ACOS\")
case class Asin(child: Expression) extends UnaryMathExpression(math.asin, \"ASIN\")
case class Atan(child: Expression) extends UnaryMathExpression(math.atan, \"ATAN\")
case class Cbrt(child: Expression) extends UnaryMathExpression(math.cbrt, \"CBRT\")
case class Cos(child: Expression) extends UnaryMathExpression(math.cos, \"COS\")
case class Cosh(child: Expression) extends UnaryMathExpression(math.cosh, \"COSH\")
case class Log10(child: Expression) extends UnaryLogExpression(StrictMath.log10, \"LOG10\")
case class Signum(child: Expression) extends UnaryMathExpression(math.signum, \"SIGNUM\")
case class Sin(child: Expression) extends UnaryMathExpression(math.sin, \"SIN\")
case class Sinh(child: Expression) extends UnaryMathExpression(math.sinh, \"SINH\")
case class Sqrt(child: Expression) extends UnaryMathExpression(math.sqrt, \"SQRT\")
case class Tan(child: Expression) extends UnaryMathExpression(math.tan, \"TAN\")
case class Tanh(child: Expression) extends UnaryMathExpression(math.tanh, \"TANH\")
trait AnalysisOnlyCommand extends Command
case class DeleteAction(condition: Option[Expression]) extends MergeAction
case class RefreshTable(child: LogicalPlan) extends UnaryCommand
case class CommentOnNamespace(child: LogicalPlan, comment: String) extends UnaryCommand
case class CommentOnTable(child: LogicalPlan, comment: String) extends UnaryCommand
case class RefreshFunction(child: LogicalPlan) extends UnaryCommand
case class DescribeFunction(child: LogicalPlan, isExtended: Boolean) extends UnaryCommand
case class RecoverPartitions(child: LogicalPlan) extends UnaryCommand
case class RuleId(id: Int)
abstract class TreeNode[BaseType <: TreeNode[BaseType]] extends Product with TreePatternBits
trait TreePatternBits
 implicit class MetadataColumnHelper(attr: Attribute)
case class SetCommand(kv: Option[(String, Option[String])])
case class ResetCommand(config: Option[String]) extends LeafRunnableCommand with IgnoreCachedData
case class AddJarCommand(path: String) extends LeafRunnableCommand
case class AddFileCommand(path: String) extends LeafRunnableCommand
case class AddArchiveCommand(path: String) extends LeafRunnableCommand
case class ListFilesCommand(files: Seq[String] = Seq.empty[String]) extends LeafRunnableCommand
case class ListJarsCommand(jars: Seq[String] = Seq.empty[String]) extends LeafRunnableCommand
case class ListArchivesCommand(archives: Seq[String] = Seq.empty[String])
abstract class DescribeCommandBase extends LeafRunnableCommand
case class WriteToDataSourceV2(
case class LocalLimitExec(limit: Int, child: SparkPlan) extends BaseLimitExec
case class WriteToMicroBatchDataSource(

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

+1, LGTM. Merging to master.
Thank you, @beliefer .

@MaxGekk Thanks for your review. @HyukjinKwon Thanks for your help too.


[question] auto install lsp servers

Basically its a question - can i use nvim-lspconfig in the same matter i used coc-nvim
let g:coc_global_extensions = ['coc-json', 'coc-git', 'coc-tsserver']

which means that on start these will be installed, so i should not call manually LspInstall {servername} for each server

Not at the moment. And possible never since there's talk about removing the installation capabilities completely, see https://github.com/neovim/nvim-lspconfig/issues/334.

thanks @lithammer , i will subscribe there, and hope that something instead would be introduced as an entrypoint for installing lsp servers


How can i validate child components in parent?

Versions

vee-validate: 2.2.11
nuxtjs: 2.8.1

Describe the bug
How can i validate child components in parent?
Demo link
I created a working example on Codesandbox. How can i improve my project code?
I am a newcomer of vee-validate and nuxtjs. I would be happy about any code changes and tips.
Thanks

You are using a mix of everything, you are probably confused by the docs. The v-validate directive cannot be used at the same time with ValidationProvider you only need to use 1 of them.
if you use the v-validate directive then you need to use errors.* to display errors.
if you are using the provider you use the slot props to display those errors with v-slot
I suggest you use the ValidationProvider and check out the examples here


restored gameInfo(moves, longest word, highest scoring word)

Closing in favor of https://github.com/PolymerLabs/arcs/pull/1627


Specific format of annotation

Could you please tell me the format of annotation?  I generated my own dataset and I want to train it. I know exactly where my objects are in the image. In that case, I don't want to manually generate annotation. I can write some code to do it for me if I know the format of annotation for YOLO v3. Thank you

.txt-file for each .jpg-image-file - in the same directory and with the same name, but with .txt-extension, and put to file: object number and object coordinates on this image, for each object in new line: <object-class> <x> <y> <width> <height>
Where:

<object-class> - integer number of object from 0 to (classes-1)
<x> <y> <width> <height> - float values relative to width and height of image, it can be equal from (0.0 to 1.0]
for example: <x> = <absolute_x> / <image_width> or <height> = <absolute_height> / <image_height>
atention: <x> <y> - are center of rectangle (are not top-left corner)

For example for img1.jpg you will be created img1.txt containing:
1 0.716797 0.395833 0.216406 0.147222
0 0.687109 0.379167 0.255469 0.158333
1 0.420312 0.395833 0.140625 0.166667

https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects

Create file obj.names in the directory build\darknet\x64\data\, with objects names - each in new line

Create file obj.data in the directory build\darknet\x64\data\, containing (where classes = number of objects):

classes= 2
train  = data/train.txt
valid  = data/test.txt
names = data/obj.names
backup = backup/

Put image-files (.jpg) of your objects in the directory build\darknet\x64\data\obj\

You should label each object on images from your dataset. Use this visual GUI-software for marking bounded boxes of objects and generating annotation files for Yolo v2 & v3: https://github.com/AlexeyAB/Yolo_mark

It will create .txt-file for each .jpg-image-file - in the same directory and with the same name, but with .txt-extension, and put to file: object number and object coordinates on this image, for each object in new line: <object-class> <x> <y> <width> <height>
Where:

<object-class> - integer number of object from 0 to (classes-1)
<x> <y> <width> <height> - float values relative to width and height of image, it can be equal from (0.0 to 1.0]
for example: <x> = <absolute_x> / <image_width> or <height> = <absolute_height> / <image_height>
atention: <x> <y> - are center of rectangle (are not top-left corner)

For example for img1.jpg you will be created img1.txt containing:
1 0.716797 0.395833 0.216406 0.147222
0 0.687109 0.379167 0.255469 0.158333
1 0.420312 0.395833 0.140625 0.166667

Create file train.txt in directory build\darknet\x64\data\, with filenames of your images, each filename in new line, with path relative to darknet.exe, for example containing:

data/obj/img1.jpg
data/obj/img2.jpg
data/obj/img3.jpg

Thank you @AlexeyAB .  This is very helpful.

Hi @AlexeyAB ,
I generated annotations by a script. But when I try to test my model. I cannot see a bounded box on my test data. Is it because I didn't use the tool to generate bounded box for my training data?

I only have one class and I trained for 4000 iterations. I used the command line to test.

darknet.exe detector test data/obj.data yolo-obj.cfg yolo-obj_4000.weights -thresh 0.25 E:\darknet\build\darknet\x64\data\obj_test\11.jpg -ext_output

I only got "E:\darknet\build\darknet\x64\data\obj\11.jpg: Predicted in 0.060051 seconds." without any bounded boxes and coordinates of objects.
Thank you in advance.

Alright, I think the problem is the model is not predicting. That's weird. I trained for 4000 iterations and got 0.7 loss.

@ycui123

What mAP can you get? https://github.com/AlexeyAB/darknet#when-should-i-stop-training

Try to open your dataset in the Yolo_mark, and show screenshot.

Thank you for your reply. I think I found the bug. I labelled my object wrong somehow which leads to useless traning.

But does Yolo_mark resize the image before it does the mark?

hello, i have annotation with three valuers (example 156 111 111) and i i don't understand how to convert annotation with three valuers  to yolo format

@koutini  i have the same problem

@koutini please help me to resolve it

@sarratouil thank you for the support

@AlexeyAB  @ycui123  @ido-ran @RRMoelker  how  can i convert to format yolo this format of annotations
please help me

@koutini @sarratouil Hi,

What dataset do you use?

What do these 3 values mean? Where is: class_id, x, y, width and height?

@AlexeyAB i use this dataset to train to detect iris
i download this dataset from   " https://web.inf.ufpr.br/vri/databases/iris-location-annotations/ "
it is annoted dataset but i hav'nt any idea about this 3 values

@AlexeyAB please help me to resolve it

@AlexeyAB thank you so much for your answer ,
we use iris data set annotation  for that we can get always square to detect the position  iris in an image  , actually i don't understand what represents  each number  in this annotation

@AlexeyAB may be 1st ,2nd values are the coordinates of the centre of square
and 3rd is (width and heigher)

@sarratouil  I told you

@AlexeyAB  also may be 1st ,2nd values are  coordinates  of the first point when the writer click in the image and 3rd is width and height

@koutini @sarratouil
I just don't see the link to IRIS images.

Every .txt file has the following contents: image irisX irisY irisR

So you should write your code on Bash/Python/C... for converting
from irisX irisY irisR
to 0 irisX/image_width irisY/image_height irisR/image_width irisR/image_height
Just for example, you can look at this script - how to read CSV files on bash: https://github.com/AlexeyAB/darknet/blob/master/scripts/windows/otb_get_labels.sh

@AlexeyAB  Thank you very much
I need to help me to write a python code to convert a full number of files annotations to this format because I have no idea to programming and i havn't a time
thank you for your comprehensive.

@AlexeyAB
Thank you very much
I write a code with python  and it work very good .

@AlexeyAB  you have any idea how i can convert anymy yolo-tiny-obj that i trained it   to TensorFlow  to use on Android platforms

@sarratouil

Try to use this repository: https://github.com/thtrieu/darkflow there is about converting Yolo to TensorFlow: https://github.com/thtrieu/darkflow/issues/527

Or just use OpenCV for android https://opencv.org/releases.html and use your yolo-tiny-obj.cfg / yolo-tiny-obj.weights by using these examples:

C++ https://github.com/opencv/opencv/blob/master/samples/dnn/object_detection.cpp#L192-L221
Python https://github.com/opencv/opencv/blob/master/samples/dnn/object_detection.py#L129-L150

Also you can look at these repos:

https://github.com/digitalbrain79/darknet-nnpack
https://github.com/shizukachan/darknet-nnpack

dear @AlexeyAB hello ,
after the train  with darknet and yolo  the detection box it not exact  my question  is :  anchors can be the raison of this problem  ?

@koutini Hi,
What do you mean?
Can you show screenshot of example?

my objective is detect iris image in am image but i don't get the exact result after the train  anchors can be the raison of this problem ?

@koutini

Do you use yolov2.cfg?

I think anchors are not the main problem. Although you can try to set the square anchors and train the model again - just set anchors anchors = 0.738,0.738,   2.422,2.422, ... and train again

Better to use yolov3.cfg

Hi @AlexeyAB ,
I'm using nuscenes dataset : https://www.nuscenes.org/
https://github.com/nutonomy/nuscenes-devkit
I wonder how I can convert it to fit yolo  .txt format in one try (don't want to do it for each image by hand as there is many image.
Thanks in advance for your reply

i use tiny-yolo.cfg  i will try to fix it  thank you so much !

how  can i decrease the number of layers to 9  when i use yolov3.cfg ?

i want yolo to just list possible objects in in an image ... how to do that in traditional yolo implementation ?

@AliYar-Khan What do you mean by *just list possible objects in an image *?

I am having this problem as well using Google colab:
Loading weights from darknet19_448.conv.23...
seen 32
Done!
Learning Rate: 0.001, Momentum: 0.9, Decay: 0.0005
Resizing
608 x 608
Wrong annotation: x = 0, y = 0, < 0 or > 1
Wrong annotation: x = 0, y = 0, < 0 or > 1
Then memory dump

I only have one class and I trained for 4000 iterations. I used the command line to test.
* darknet.exe detector test data/obj.data yolo-obj.cfg yolo-obj_4000.weights -thresh 0.25 E:\darknet\build\darknet\x64\data\obj_test\11.jpg -ext_output

I only got "E:\darknet\build\darknet\x64\data\obj\11.jpg: Predicted in 0.060051 seconds." without any bounded boxes and coordinates of objects.
Thank you .

How do we run this command on any image who's path is not located in darknet folder?

.txt-file for each .jpg-image-file - in the same directory and with the same name, but with .txt-extension, and put to file: object number and object coordinates on this image, for each object in new line: <object-class> <x> <y> <width> <height>
Where:
* `<object-class>` - integer number of object from **`0` to `(classes-1)`**

* `<x> <y> <width> <height>` - float values relative to width and height of image, it can be equal from (0.0 to 1.0]

* for example: `<x> = <absolute_x> / <image_width>` or `<height> = <absolute_height> / <image_height>`

* atention: `<x> <y>` - are center of rectangle (are not top-left corner)

For example for img1.jpg you will be created img1.txt containing:
1 0.716797 0.395833 0.216406 0.147222
0 0.687109 0.379167 0.255469 0.158333
1 0.420312 0.395833 0.140625 0.166667

https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects

Create file obj.names in the directory build\darknet\x64\data\, with objects names - each in new line
Create file obj.data in the directory build\darknet\x64\data\, containing (where classes = number of objects):

classes= 2
train  = data/train.txt
valid  = data/test.txt
names = data/obj.names
backup = backup/

Put image-files (.jpg) of your objects in the directory build\darknet\x64\data\obj\
You should label each object on images from your dataset. Use this visual GUI-software for marking bounded boxes of objects and generating annotation files for Yolo v2 & v3: https://github.com/AlexeyAB/Yolo_mark

It will create .txt-file for each .jpg-image-file - in the same directory and with the same name, but with .txt-extension, and put to file: object number and object coordinates on this image, for each object in new line: <object-class> <x> <y> <width> <height>
Where:

<object-class> - integer number of object from 0 to (classes-1)
<x> <y> <width> <height> - float values relative to width and height of image, it can be equal from (0.0 to 1.0]
for example: <x> = <absolute_x> / <image_width> or <height> = <absolute_height> / <image_height>
atention: <x> <y> - are center of rectangle (are not top-left corner)

For example for img1.jpg you will be created img1.txt containing:
1 0.716797 0.395833 0.216406 0.147222
0 0.687109 0.379167 0.255469 0.158333
1 0.420312 0.395833 0.140625 0.166667

Create file train.txt in directory build\darknet\x64\data\, with filenames of your images, each filename in new line, with path relative to darknet.exe, for example containing:

data/obj/img1.jpg
data/obj/img2.jpg
data/obj/img3.jpg

Thank you for this.  Doesn't YOLOv2 need to know the appropriate grid cell number?
The final label will be something like 7x7x125, where only the correct grid cell number
will be labeled correctly. How does this annotation convert into appropriate label?

If you need to format open image to Yolo v3 with parent class of subclass dataset, you can have a look
https://github.com/mk-hasan/OpenImage-Data-convert-YOLOV3

Hi, @AlexeyAB  !
I have some questions about anotation.

Is th format of txt annotation file, -      - fixed?
How does it affect adaptability for some datasets.

How about another form I wanna use? e.g.

Am I able to assign a annotation form?
And I use YOLOv3 on Ubuntu 16.04 LTS.
Thank you.

Hi, @AlexeyAB !
I have some questions about anotation.
Is th format of txt annotation file, <class> <x> <y> <width> <height> fixed?
How does it affect adaptability for some datasets.
How about another form I wanna use? e.g.
Am I able to assign a annotation form?
And I use YOLOv3 on Ubuntu 16.04 LTS.
Thank you.

i think it must be the same as Yolo only accept this format.
You can not use another form, why dont you just transform your format to yolo format?
Can you explain more what did you want to say?

Everyone: It's very easy to see what format Yolo uses. Just look here for the Yolo_mark math that calculates the .txt file data:
https://github.com/AlexeyAB/Yolo_mark/blob/3e2f234bbea9dbdfba700e7ae82102c5d104d867/main.cpp#L527-L543

how can I change the annotation format from
1 0.55625 0.4375 0.1975 0.4
    ...
w, h -width, height of anchor boxes
every annotation is in different note file here
to :
path/to/img1.jpg 50,100,150,200,0 30,50,200,120,3
path/to/img2.jpg 120,300,250,600,2
...
 ,,,,...
here all of the annotations should be in one note file
?

how can I change the annotation format from
1 0.55625 0.4375 0.1975 0.4
class w1 h1 w2 h2 ...
w, h -width, height of anchor boxes
every annotation is in different note file here
to :
path/to/img1.jpg 50,100,150,200,0 30,50,200,120,3
path/to/img2.jpg 120,300,250,600,2
path to photos w1,h1,w2,h2...,class
here all of the annotations should be in one note file
?

Hey, might be a silly question but where do I put all the bounding boxes txt files? We mentioned the location of images but we did not mention the location of annotations to darknet did we? thanks

@wasp-codes
In the same directory where are images.

Hi, I follow this tutorial but it gives me IoU value of (-) negative or sometimes nan.

@jheanelestrada the nan notation is given when there is no object in that specific region or Intersection over union. I am not sure about the -ve value but i know IoU must be as high as possible its nothing but the accuracy of prediction done or the object detect in that particular region.

Hi, plz can tell me how to read image and annotation file.txt and drawing a bounding box for this: 540 179 80 243 1 0 0 0 0 1 0 for example, any file has row according to a number of objects in the image.

@jheanelestrada Hi, plz can tell me how to read image and annotation file.txt and drawing a bounding box for this: 540 179 80 243 1 0 0 0 0 1 0 for example, any file has rows according to a number of objects in the image.

Hey, might be a silly question but where do I put all the bounding boxes txt files? We mentioned the location of images but we did not mention the location of annotations to darknet did we? thanks

in the same folder as the .jpgs

HELLO, if you interest in this area i can send you sample from the annotation file.txt  and  image to show how can i read the images and draw the bounding box for object in the img.
thanks in advance majeedi
بتاريخ الثلاثاء، 19 أيار 2020 08:35:39 م غرينتش+8، Cindy Weng<EMAIL_ADDRESS>كتب:
Hey, might be a silly question but where do I put all the bounding boxes txt files? We mentioned the location of images but we did not mention the location of annotations to darknet did we? thanks
in the same folder as the .jpgs
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hello,
I am trying to automate my annotations. I trained a model which can detect the object, so once an object is detected I am saving its x,y,w,h i.e(left_x:   43   top_y:  102   width:  498   height:  291).
But if I try to open this in Yolo_mark or labelImg I am not able to view it.
From this thread I understood I need to scale in between 0-1, but when I divide it with width or height its not near equal.
The below I got from LabelImg tool in Yolo format.
0.450000 0.515625 0.825000 0.610417
Please help how to get a relation between the detected box values and what yolo uses for training.

Hello, Thank you for the instructions. May I confirm?  I am putting my custom data into darknet/build/darknet/x64/data/
Then, instructions say "To train on Linux use command: ./darknet detector train data/obj.data yolo-obj.cfg yolov4.conv.137" Are we running from ./darknet or from ~/darknet/build/darknet or from ~/darknet_custom/build/darknet/64 please ?

Hello,
I am trying to automate my annotations. I trained a model which can detect the object, so once an object is detected I am saving its x,y,w,h i.e(left_x: 43 top_y: 102 width: 498 height: 291).
But if I try to open this in Yolo_mark or labelImg I am not able to view it.
From this thread I understood I need to scale in between 0-1, but when I divide it with width or height its not near equal.
The below I got from LabelImg tool in Yolo format.
0.450000 0.515625 0.825000 0.610417
Please help how to get a relation between the detected box values and what yolo uses for training.

Are you able to get the formula? I am also having the same issue.
{'class_id': 0, 'width': 20, 'top': 387, 'height': 74, 'left': 789}, {'class_id': 1, 'width': 25, 'top': 348, 'height': 31, 'left': 805}, {'class_id': 2, 'width': 19, 'top': 447, 'height': 26, 'left': 826}, {'class_id': 4, 'width': 47, 'top': 545, 'height': 33, 'left': 727}, {'class_id': 3, 'width': 32, 'top': 364, 'height': 144, 'left': 896}, {'class_id': 5, 'width': 89, 'top': 246, 'height': 97, 'left': 825}, {'class_id': 7, 'width': 254, 'top': 224, 'height': 388, 'left': 725}

@AlexeyAB
Thank you very much
I write a code with python and it work very good .

@sarratouil Could you please share your code?

Hey, I would like to know how to calculate   .
This is how my data looks like.

With this i could easily find the widht and height but really stuck at finding the x,y that is need to convert to yolo format .
Help is appreciated :)

Hey, I would like to know how to calculate .
This is how my data looks like.

With this i could easily find the widht and height but really stuck at finding the x,y that is need to convert to yolo format .
Help is appreciated :)

Hi, You already have the bounding box information. That should be fine. Now you need to feed the data to yolo and check the code how it takes the data. Maybe I am not sure about your question, otherwise, I could help. Thank you.

Hello,
I am trying to automate my annotations. I trained a model which can detect the object, so once an object is detected I am saving its x,y,w,h i.e(left_x: 43 top_y: 102 width: 498 height: 291).
But if I try to open this in Yolo_mark or labelImg I am not able to view it.
From this thread I understood I need to scale in between 0-1, but when I divide it with width or height its not near equal.
The below I got from LabelImg tool in Yolo format.
0.450000 0.515625 0.825000 0.610417
Please help how to get a relation between the detected box values and what yolo uses for training.

Are you able to get the formula? I am also having the same issue.
{'class_id': 0, 'width': 20, 'top': 387, 'height': 74, 'left': 789}, {'class_id': 1, 'width': 25, 'top': 348, 'height': 31, 'left': 805}, {'class_id': 2, 'width': 19, 'top': 447, 'height': 26, 'left': 826}, {'class_id': 4, 'width': 47, 'top': 545, 'height': 33, 'left': 727}, {'class_id': 3, 'width': 32, 'top': 364, 'height': 144, 'left': 896}, {'class_id': 5, 'width': 89, 'top': 246, 'height': 97, 'left': 825}, {'class_id': 7, 'width': 254, 'top': 224, 'height': 388, 'left': 725}
'image_size': [{'width': 1040, 'depth': 3, 'height': 780}]}

i am also facing the same issue

@mk-hasan Yolo takes in this format
My .csv file has these information expect  . Yolo takes in center of x  and center of y. My data has x_min ,x_max and y_min and y_max. Now how do i calculate the   ?

Hello,
I am trying to automate my annotations. I trained a model which can detect the object, so once an object is detected I am saving its x,y,w,h i.e(left_x: 43 top_y: 102 width: 498 height: 291).
But if I try to open this in Yolo_mark or labelImg I am not able to view it.
From this thread I understood I need to scale in between 0-1, but when I divide it with width or height its not near equal.
The below I got from LabelImg tool in Yolo format.
0.450000 0.515625 0.825000 0.610417
Please help how to get a relation between the detected box values and what yolo uses for training.
I am also facing the same can  you help me

Hi!
Could you tell how axes on image are oriented?
Do they oriented like in 2d-array (origin in left-top corner, X goes down, Y goes right)?

.txt-file for each .jpg-image-file - in the same directory and with the same name, but with .txt-extension, and put to file: object number and object coordinates on this image, for each object in new line:
Where:
 - integer number of object from 0 to (classes-1)
    - float values relative to width and height of image, it can be equal from (0.0 to 1.0]
for example:  = <absolute_x> / <image_width> or  = <absolute_height> / <image_height>
for example:
 = <absolute_x> / <image_width> or = image_height-1  / <image_height>
atention:   - are center of rectangle (are not top-left corner)
For example for img1.jpg you will be created img1.txt containing:

@AlexeyAB If I am training an object detection classifier for dogs and cats and I have a third class named neither (when neither a dog nor cat is present in the image) how would I format the neither class in darknet. Can I just provide the class number without the x, y, width, height? Thanks.

This old thread seems to come up a lot.  I've added an entry to the FAQ with an example showing exactly how the numbers all fit together.  See this:  https://www.ccoderun.ca/programming/darknet_faq/#darknet_annotations

This old thread seems to come up a lot.  I've added an entry to the FAQ with an example showing exactly how the numbers all fit together.  See this:  https://www.ccoderun.ca/programming/darknet_faq/#darknet_annotations

Is it a problem if somehow some values, after calculate to yolo format, is look like this:
0 0.67890625 1.287037037037037 0.05364583333333333 0.2555555555555556
the y axis is above 1. Is that alright?

If you're asking, I'm guessing you already know it is a problem.  The values are normalized 0...1 so it is impossible to get a value > 1.  And since that is the middle coordinate and not an edge of the rectangle, it should be impossible to get exactly 1.0 as well.
I'm not certain what that would do to Darknet during training, but it cannot be good.  I wouldn't be surprised if it causes Darknet to crash as it attempts to create a RoI from the image outside of the image boundary.

Hello,
I am trying to automate my annotations. I trained a model which can detect the object, so once an object is detected I am saving its x,y,w,h i.e(left_x: 43 top_y: 102 width: 498 height: 291).
But if I try to open this in Yolo_mark or labelImg I am not able to view it.
From this thread I understood I need to scale in between 0-1, but when I divide it with width or height its not near equal.
The below I got from LabelImg tool in Yolo format.
0.450000 0.515625 0.825000 0.610417
Please help how to get a relation between the detected box values and what yolo uses for training.

Are you able to get the formula? I am also having the same issue.
{'class_id': 0, 'width': 20, 'top': 387, 'height': 74, 'left': 789}, {'class_id': 1, 'width': 25, 'top': 348, 'height': 31, 'left': 805}, {'class_id': 2, 'width': 19, 'top': 447, 'height': 26, 'left': 826}, {'class_id': 4, 'width': 47, 'top': 545, 'height': 33, 'left': 727}, {'class_id': 3, 'width': 32, 'top': 364, 'height': 144, 'left': 896}, {'class_id': 5, 'width': 89, 'top': 246, 'height': 97, 'left': 825}, {'class_id': 7, 'width': 254, 'top': 224, 'height': 388, 'left': 725}
'image_size': [{'width': 1040, 'depth': 3, 'height': 780}]}

You have to follow a formula
x = (x1+x1+w1)/2
y = (y1+y1+h1)/2
with open('Annotations.txt', 'a') as file:
file.write(f'{classid} {y/512} {x/512} {(w1+20)/512} {(h1+20)/512}') # where 512 is the image width and height

yes. i have tried this. and this is working fine.
save detected coordinates like. if your image size is 512x470 or else.
just save the detected coordinates like example blow.
x,y,w,h = detected_coordinates # its corrdinates of a bounding box of an object of image
ymid, xmid, height, width = (((1+y1)/2)/y1, ((1+x1)/2)/x1, (y1-1)/y1, (x1-1)/x1)
print('{:0.6f} {:1.6f} {:2.6f} {:3.6f}'.format(xmid, ymid, width, height))

Does it mean that x_ mid  = (left_x + width + left_x)/2 and y_mid = (top_y + height + top_y)/2 .
And bottom_y = top_y + height and right_x = left_x + width . ?
Please help  ?

@Riankk123
Format is already stated here: https://github.com/AlexeyAB/Yolo_mark/issues/60#issuecomment-401854885


MAPDL server connection terminated

🤓 Before submitting the issue

[X] I have visited the Troubleshooting section.
[X] I have searched among the existing issues.
[X] I am using a Python virtual environment.
[X] I am using the latest version of PyMAPDL and its dependencies (fully updated virtual environment). You can update them using pip install --upgrade --upgrade-strategy eager ansys-mapdl-core in your activated virtual environment.

🔍 Description of the bug
Hello everybody,
When i run my script i have this error:
"MAPDL server connection terminated"
In attached the DB file (just change ".txt" to ".db")
modell.txt
Thanks in advance for your help!
🕵 Steps To Reproduce
from ansys.mapdl.core import launch_mapdl
mapdl = launch_mapdl()
cdb_path = "C:/Users/PC Prêt LAMIH/Desktop/DOCTORAT/parametric_model_interface_python/modell"
mapdl.input(cdb_path,'DB')
mapdl.prep7(mute=True)
mapdl.eplot()
mapdl.allsel()
mapdl.run("/SOLU")
mapdl.antype("STATIC")  # Perform static solve
mapdl.outres("ALL", "ALL")  # Write all element and nodal solution results for each substep
mapdl.nropt("UNSYM")  # Specify unsymmetric Newton-Raphson option to solve the problem
mapdl.rescontrol("DEFINE", "ALL", 1)  # Control restart files
mapdl.nlgeom("ON")  # Activate large deflection
mapdl.autots("ON")  # Auto time stepping turned on
mapdl.time(1.0)  # End time = 1.0 sec
mapdl.nsel("S", "TYPE", "", "CL_Lame")  # Select element type 124
mapdl.d('all','all',0)
mapdl.d('all','uy',-0.100e-3)
mapdl.solve()  # Solve with prestress loading
mapdl.finish()

💻 Which Operating System are you using?
None
🐍 Which Python version are you using?
3.10
📝 PyMAPDL Report
Show the Report!

# PASTE HERE THE OUTPUT OF `python -c "from ansys.mapdl import core as pymapdl; print(pymapdl.Report())"` here

📝 Installed packages
Show the installed packages!

# PASTE HERE THE OUTPUT OF `python -m pip freeze` here

📝 Logger output file
Show the logger output file.

# PASTE HERE THE CONTENT OF THE LOGGER OUTPUT FILE.

Hi @sdurain
There are quite a few things wrong here:
1 May not be an issue: "PC Prêt"  I'm not sure since I don't use that specific language pack but the ê may be causing a problem for MAPDL to read the path.
2 There are no material model(s) defined in the CDB nor the PyMAPDL script.
3 Not really a problem but how/why is the cdb in unblocked format?!?  Where did the file come from?
4 Missed the C in CDB here:
mapdl.input(cdb_path,'DB')

5 A subset of nodes was selected here but then the solve issued.  So not all nodes that define the elements are selected and sent to the solver:
mapdl.nsel("S", "TYPE", "", "CL_Lame")
mapdl.d('all','all',0)
mapdl.d('all','uy',-0.100e-3)
mapdl.solve()

Add an all select:
mapdl.nsel("S", "TYPE", "", "CL_Lame")  # Select element type 124
mapdl.d('all','all',0)
mapdl.d('all','uy',-0.100e-3)
mapdl.allsel()
mapdl.solve()

Mike

@sdurain, any luck with @mikerife suggestions??

Closing because stale.
Feel free to reopen if you provide some info.


add new version for kubeflow operator

Signed-off-by: Adrian Zhuang<EMAIL_ADDRESS>Thanks submitting your Operator. Please check below list before you create your Pull Request.

Flat operator directory structure is obsolete from 23-rd of October 2019, only nested directory structure will be accepted.

Updates to existing Operators

[x] Is your new CSV pointing to the previous version with the replaces property?
[x] Is your new CSV referenced in the appropriate channel defined in the package.yaml ?
[x] Have you tested an update to your Operator when deployed via OLM?
[x] Is your submission signed?

Your submission should not

[x] Modify more than one operator
[x] Modify an Operator you don't own
[x] Rename an operator - please remove and add with a different name instead
[x] Submit operators to both upstream-community-operators and community-operators at once
[x] Modify any files outside the above mentioned folders
[x] Contain more than one commit. Please squash your commits.

Operator Description must contain (in order)

[x] Description about the managed Application and where to find more information
[x] Features and capabilities of your Operator and how to use it
[x] Any manual steps about potential pre-requisites for using your Operator

Operator Metadata should contain

[x] Human readable name and 1-liner description about your Operator
[x] Valid category name1
[x] One of the pre-defined capability levels2
[x] Links to the maintainer, source code and documentation
[x] Example templates for all Custom Resource Definitions intended to be used
[x] A quadratic logo

Remember that you can preview your CSV here.
--
1 If you feel your Operator does not fit any of the pre-defined categories, file a PR against this repo and explain your need
2 For more information see here

During the scorecard test a CR instance of kfdefs.kfdef.apps.kubeflow.org named "kubeflow" is encountered. Maybe it's created by your Operator or as part of another CR tested previously. scorecard uses the examples your provided in the CSV in metadata.annotations.alm-examples to test your Operator - you could simply change the CR name there to something else than "kubeflow".

Looking closer at the scorecard error output you see
failed to create cr resource: object is being deleted: kfdefs.kfdef.apps.kubeflow.org \"kfdef-kubeflow\" already exists
Is that CR maybe slow to delete due to a finalizer?

Thanks @dmesser . The kfdef CR is the owner of other kubeflow resources deployed and the blockOwnerDeletion is set as true. So from the understanding of k8s garbage collection, this CR may be the last to be deleted when the operator is destroyed.
So why the scorecard test does not wait a bit before the next test? Or does it expect that every time a new CR name should be used?

activating new tests

@adrian555 You are right and we've filed an issue in scorecard: https://github.com/operator-framework/operator-sdk/issues/2719
Meanwhile: can you test locally without that particular CR in metadata.annotations.alm-examples?

In increased the timeout to 5 minutes. New error message may sheds some more light:
time="2020-03-26T12:33:32Z" level=warning msg="time=\"2020-03-26T12:33:32Z\" level=info msg=\"a cleanup function failed with error: cleanup function failed: error encountered during deletion of resource type KfDef with namespace/name (kubeflow-gqoek/kfdef-kubeflow): etcdserver: request timed out\\n\"\ntime=\"2020-03-26T12:33:32Z\" level=error msg=\"Failed to cleanup resources: (a cleanup function failed; see stdout for more details)\"\n"
2966E0326 12:33:32.143312     671 memcache.go:199] couldn't get resource list for custom.metrics.k8s.io/v1beta1: the server is currently unable to handle the request
2967E0326 12:33:32.144332     671 memcache.go:111] couldn't get resource list for custom.metrics.k8s.io/v1beta1: the server is currently unable to handle the request

So when trying to delete the CR it seems like the cluster became unresponsive. Does this happen locally as well?

Thanks @dmesser. Interesting, so it is trying to deletenamespace/name (kubeflow-gqoek/kfdef-kubeflow). Were expecting to see the kubeflow namespace instead. But let me try to run the scorecard locally and come back with more update.

@adrian555 we've skipped the scorecard tests for now. Your Operator shouldn't require a certain namespace per best-practices: https://github.com/operator-framework/community-operators/blob/master/docs/best-practices.md#development

Thanks @dmesser. Right, from my test it does not need to tight with a certain namespace either. So from that aspect, we should be fine.


Issue when executing AzureBatchWebJob

Hi,
I had followed the step-by-step instructions in the Manual Deployment Guide was able to successful execute all the steps until this execution failed in this job. Here is the snapshot of the error from the log window. Not sure what is the problem? Would be helpful to resolve the issue so that the solution implementation can be complete
[04/28/2020 03:33:27 > 74a006: SYS INFO] Status changed to Starting
[04/28/2020 03:33:27 > 74a006: SYS INFO] WebJob singleton setting is True
[04/28/2020 03:33:27 > 74a006: SYS INFO] WebJob singleton lock is acquired
[04/28/2020 03:33:28 > 74a006: SYS INFO] Run script 'webjob_trigger.py' with script host - 'PythonScriptHost'
[04/28/2020 03:33:28 > 74a006: SYS INFO] Status changed to Running
[04/28/2020 03:33:32 > 74a006: SYS INFO] Detected WebJob file/s were updated, refreshing WebJob
[04/28/2020 03:33:32 > 74a006: SYS INFO] Status changed to Stopping
[04/28/2020 03:33:38 > 74a006: ERR ] Thread was being aborted.
[04/28/2020 03:33:38 > 74a006: SYS INFO] WebJob process was aborted
[04/28/2020 03:33:38 > 74a006: SYS INFO] Status changed to Stopped
[04/28/2020 03:33:38 > 74a006: SYS INFO] WebJob singleton lock is released
[04/28/2020 03:33:38 > 74a006: SYS INFO] Status changed to Starting
[04/28/2020 03:33:38 > 74a006: SYS INFO] WebJob singleton lock is acquired
[04/28/2020 03:33:38 > 74a006: SYS INFO] Run script 'webjob_trigger.py' with script host - 'PythonScriptHost'
[04/28/2020 03:33:38 > 74a006: SYS INFO] Status changed to Running
[04/28/2020 03:33:47 > 74a006: INFO] Program start: 2020-04-28 03:33:46
[04/28/2020 03:33:47 > 74a006: INFO] ()
[04/28/2020 03:33:47 > 74a006: INFO] checking input queue
[04/28/2020 03:33:47 > 74a006: ERR ] No handlers could be found for logger "msrest.pipeline.requests"
[04/28/2020 03:33:47 > 74a006: INFO] preparing for input storage...
[04/28/2020 03:33:47 > 74a006: INFO] creating batch client...
[04/28/2020 03:33:47 > 74a006: INFO] assembling job scripts...
[04/28/2020 03:33:47 > 74a006: ERR ] Traceback (most recent call last):
[04/28/2020 03:33:47 > 74a006: INFO] creating pool...
[04/28/2020 03:33:47 > 74a006: ERR ]   File "webjob_trigger.py", line 281, in
[04/28/2020 03:33:47 > 74a006: INFO] Creating pool [derciqspool1588044826]...
[04/28/2020 03:33:47 > 74a006: ERR ]   File "webjob_trigger.py", line 92, in create_pool
[04/28/2020 03:33:47 > 74a006: ERR ]     batch_service_client, publisher, offer, sku)
[04/28/2020 03:33:47 > 74a006: ERR ]   File "D:\local\Temp\jobs\continuous\AzureBatchWebJob\njopod3n.vhp\common\helpers.py", line 89, in select_latest_verified_vm_image_with_node_agent_sku
[04/28/2020 03:33:47 > 74a006: ERR ]     sku_to_use, image_ref_to_use = skus_to_use[0]
[04/28/2020 03:33:47 > 74a006: ERR ] IndexError: list index out of range
[04/28/2020 03:33:47 > 74a006: SYS ERR ] Job failed due to exit code 1
[04/28/2020 03:33:47 > 74a006: SYS INFO] Process went down, waiting for 60 seconds

I see your PR #4 and I've just been made maintainer. I will check when I have time and then hopefully merge.


Add optional delay to removeOnComplete

This is in response to #963.

The CI failures don't appear to be due to my changes. Looks like the 0.10 and 0.12 builds are failing due to pug including some ES6 features. The other failure is happening in plenty of other builds.

This was closed in favor of https://github.com/Automattic/kue/pull/1154


[Feature]: design about us page

Feature Title
Design about us page
Description
The new page should be under nextjs standard of pages
The color schema can be taken from navbar and homepage banner
This page should have below points considered

What is tailwind bootstrap
Where you find us
Why we doing this project

Motivation
About us page will give bigger picture of the project
Issue Type
Frontend
Screenshot of the feature if done ?
No response
Are you taking this fetaure implementaion
No

Hey @jsvigneshkanna , I am interested to work on this issue. I have prior experience with tailwind CSS. So could you pls assign this to me?

Hi @shrutilenka ,
Assing this issue to you name, please go through the website and repo docs to know more about this project
Also check other tailwind components issues

thanks @jsvigneshkanna

Hi @shrutilenka
Any updates, please let me know if any help needed

Hi @shrutilenka Any updates, please let me know if any help needed

Sorry sir due to some personal problems i am unable to contribute to this issue anymore.


Setting up virtual environment and makefile.

Plis Merge. -^-

First of all we will need a meaningful name for the PR like what does this aim to achieve.

@abinashmeher999 This also has files related to another issue. Shall I clean them?

@ayuhsya Yes please move them to another branch using which you can send a different PR.


Name of the mapping template jar file

Currently, the mapping-template JAR file follows the 'mapping-template-x.y.z' naming convention. This means that whenever a new version of the mapping-template is released, existing scripts integrating it require modification, even if there are no functional changes. Similarly, building the mapping-template via a Dockerfile (#9) presents challenges, as the resulting JAR file must be referenced by its version, necessitating Dockerfile updates for each release.
To simplify, I propose renaming it to 'mapping-template.jar' or 'mapt.jar' to ease command line usage. The version of the mapping-template.jar file should instead be exposed by a --version flag. @marioscrock, what do you think?

I agree with adding a --version flag, but I think it is preferable to force the user to rename the JAR instead of making it versionless (see also link).
Regarding the Dockerfile, we can use a "wildcard" when referencing the JAR (e.g., see link).


fix: 🔄 PropertyKey => KeyofBase

The bug that we found in ts-essentials – https://github.com/krzkaczor/ts-essentials/issues/278#issuecomment-998235314
The explanation in the release – https://devblogs.microsoft.com/typescript/announcing-typescript-2-9-2/#support-for-symbols-and-numeric-literals-in-keyof-and-mapped-object-types
The change is connected with https://github.com/nanostores/nanostores/pull/53

That's the way how to tolerate keyofStringsOnly option in TypeScript

Do we need to release it or the problem is theoretical?

The problem is only in the project that uses keyofStringsOnly
If you didn't see the report yet, it means that noone used it yet


TypeError: Cannot read property 'utils' of undefined

Branch: tests
Encountered when running against tests against dist/bundle.js
This also appears in the wallet-generator frontend.
I think this has something to do with the BIP32 library, or how this specific part is bundled.
TypeError: Cannot read property 'utils' of undefined

      14015 |
      14016 |
    > 14017 | var utils$1 = elliptic_1.utils;
            |                          ^
      14018 | var getNAF = utils$1.getNAF;
      14019 | var getJSF = utils$1.getJSF;
      14020 | var assert$2 = utils$1.assert;

      at Object.utils (dist/index.js:14017:26)
      at Object.<anonymous> (tests/test.js:1:1)

@joemfb do you have time to take a look at this? Seems to be the final issue blocking this lib from being bundled.

I'm happy to, but I'm not clear on the bundling requirements for this lib. Won't any downstream applications have to include their own bundling regardless of what's done here?

keygen-js should just be an common js module. The bundling step completes, but using the lib returns this error.

@joemfb you seriously rock dude. Thanks for the help! Closing.

Was this resolved?  I'm running into the same issue when using this package with rollup.

@seansean11 IIRC you can try the rollup-plugin-node-resolve plugin and specify the following in your rollup.config.js or similar:
plugins: [
  ..,
  resolve({
    browser: true,
  }),
  ..
]


code coverage plugin is needed?

Yes definitely.
This was next on my list after checkstyle.

PMD + Findbugs a minimum.

@temyers have u evaluated any tool ?

I'll merge something shortly

Added cobertura unit test coverage report.
Run using:
mvn site


[5.4] Named resource route parameters

Laravel Version: 5.4.24
PHP Version: 7.1.5
Database Driver & Version: MySQL 14.14

Description:
The route parameter name is singular when defining resources. However you have to use the plural name when renaming.
https://laravel.com/docs/5.4/controllers#resource-controllers
Steps To Reproduce:
Route::resource('users', 'UserController', ['parameters' => [
    'user' => 'admin_user',
]]);

$ php artisan route:list

+--------+-----------+-------------------+---------------+---------------------------------------------+------------+
| Domain | Method    | URI               | Name          | Action                                      | Middleware |
+--------+-----------+-------------------+---------------+---------------------------------------------+------------+
|        | GET|HEAD  | users             | users.index   | App\Http\Controllers\UserController@index   | web        |
|        | POST      | users             | users.store   | App\Http\Controllers\UserController@store   | web        |
|        | GET|HEAD  | users/create      | users.create  | App\Http\Controllers\UserController@create  | web        |
|        | GET|HEAD  | users/{user}      | users.show    | App\Http\Controllers\UserController@show    | web        |
|        | PUT|PATCH | users/{user}      | users.update  | App\Http\Controllers\UserController@update  | web        |
|        | DELETE    | users/{user}      | users.destroy | App\Http\Controllers\UserController@destroy | web        |
|        | GET|HEAD  | users/{user}/edit | users.edit    | App\Http\Controllers\UserController@edit    | web        |
+--------+-----------+-------------------+---------------+---------------------------------------------+------------+

whats the issue?

It should generate resource routes like this
+--------+-----------+-------------------------+---------------+---------------------------------------------+------------+
| Domain | Method    | URI                     | Name          | Action                                      | Middleware |
+--------+-----------+-------------------------+---------------+---------------------------------------------+------------+
|        | GET|HEAD  | users                   | users.index   | App\Http\Controllers\UserController@index   | web        |
|        | POST      | users                   | users.store   | App\Http\Controllers\UserController@store   | web        |
|        | GET|HEAD  | users/create            | users.create  | App\Http\Controllers\UserController@create  | web        |
|        | GET|HEAD  | users/{admin_user}      | users.show    | App\Http\Controllers\UserController@show    | web        |
|        | PUT|PATCH | users/{admin_user}      | users.update  | App\Http\Controllers\UserController@update  | web        |
|        | DELETE    | users/{admin_user}      | users.destroy | App\Http\Controllers\UserController@destroy | web        |
|        | GET|HEAD  | users/{admin_user}/edit | users.edit    | App\Http\Controllers\UserController@edit    | web        |
+--------+-----------+-------------------------+---------------+---------------------------------------------+------------+

I've always thought of it as referring to the resource that the parameter represents. Here, you're working with 'users', so instead of renaming the 'user' parameter to 'users', you're specifying that the parameter for 'users' should be 'admin_user'. So this makes sense:
Route::resource('users', 'UserController', ['parameters' => [
    'users' => 'admin_user',
]]);

And works as you would expect.

According to the docs,

You can easily override this on a per resource basis by passing parameters in the options array. The parameters array should be an associative array of resource names and parameter names.

so, as I assumed, you pass the resource name, in your case 'users' and then the parameter name 'admin_user'.
The example in the docs shows 'user' => 'admin_user', because it is using 'user' as the resource name instead of 'users'.

I've always thought of it as referring to the resource that the parameter represents.

Makes sense when you put it like that.
The issue here was that I spent a good 30 minutes figuring this out. Even this issue was originally about the parameter naming is not working at all.
The naming convention here or the documentation is too misleading - just my opinion.

https://stackoverflow.com/questions/45578137/laravel-resource-controllers-routes-and-models

Ran into this, too.  I'm chiming in here because 1) it's strange that the {id} parameter naming convention was ignored and 2) the docs compound this by referring to an also unconventionally singular route name ('/user').  If you're an experienced developer and found yourself at this issue after scratching your head for 30 minutes, don't feel bad.

I ended up here because I ran into the same problem.
In my opinion, the naming convention for the example route in the docs is indeed misleading.
Please consider making the functionality a little clearer with an updated example like:
Route::resource('users', 'AdminUserController', ['parameters' => [
    'users' => 'admin_user'
]]);

@martbock omg agreed...just spent like 30mins not seeing that -_-..


Improve Footer Layout

The footer looks disorganized and lacks proper spacing and alignment on smaller screens. I can redesign the footer to be responsive, properly aligned, and spaced for all screen sizes.
Please assign this issue to me under gssoc'24 EXTENDED with label gssoc'24 and hacktoberfest.

Plan:
Redesign the footer layout for better organization, including clearly defined sections for links, contact information, and social media icons.
Ensure that the footer is visually appealing by using appropriate colors, typography, and spacing that align with the overall website design.
Optimize the footer for responsiveness, ensuring it displays correctly on mobile, tablet, and desktop devices.
Add any necessary links or information to ensure users have easy access to important content.
Please assign this issue to me under gssoc'24 EXTENDED with label gssoc'24 and hacktoberfest.

please assign me with the task @subhadipbhowmik

Please merge my pr


Fix: AttributeError in determine_clipboard()

Fix: AttributeError in determine_clipboard() when 'XDG_CURRENT_DESKTOP' is None.
Change conditional check for os.getenv('XDG_CURRENT_DESKTOP').lower() to avoid AttributeError when os.getenv() returns a default value of None. Only proceed with checking for 'gnome' and 'kde' in XDG_CURRENT_DESKTOP environment variable, if the value returned by os.getenv() is not None.
Note: Tested only on an environment with no value set for 'XDG_CURRENT_DESKTOP'. See the following output:
>>> pyperclipfix.determine_clipboard()
(<function init_xsel_clipboard.<locals>.copy_xsel at 0x7f6ded5c8220>, <function init_xsel_clipboard.<locals>.paste_xsel at 0x7f6ded57bec0>)

Ref: Python Docs - os.getenv

Thanks!


Support session lookup for basicAuth credentials

Currently this only appears to use fixed string values.

Hi Luke,
I think your idea and solution are good, but it lacks the interpolation stuff for users to be able to write "${key}"
As I didn't work on this part lately and couldn't see what @slandelle has done, I'll pass on this one ;-)
Anyway, thanks :-)

Hi there,
That's a good idea. Just one thing, I've created a type for (Session => String) named EvaluatableString, I'll change it after merging.
Thanks!
@BluePyth converting a parameter such as "${key}" into an EvaluatableString is automatically done by an implicit. ;)

Thanks guys!


typo,  should be   password_file

https://github.com/HDFGroup/hsds/blob/268bd655768fe6755ea2bc1a9a7bcb5145defbfb/hsds/app.py#L32

Users get error and confused by the typo


Review for night at museum

Comment below with Name first and feedback after 👍

Aaryav: I like how the rpg game was clearly displayed, the home page could have been a little neater giving everything a simpler look, overall good lessons and good games. The background of the game could have matched the characters more.

Akhil - Great RPG game, loved the features and all of the notebooks linked in your homepage, awesome overall UI!

Alex: Game is simple but shows all te stuff that has been done so far in class, overall meets the standards perfectly!

Very  nice game, could use some more interactive features. Notebooks look awesome! - Veera Kalakota

great game. notebooks are great-evan pederson

Yusuf Khan - I like how you explained the functionality of the code, the uses, as well as what you want to do in the future. I like how you demonstrated your knowledge by linking the notebook and then explaining the code without looking the notebook much. The changes on the background demonstrate advanced knowledge of the concept, as well as proper implementation of the hacks.

william windle- fix the ratio for your games background and res


test coverage needed for github.com/sustainable-computing-io/kepler/pkg/bpfassets/attacher

addressed in https://github.com/sustainable-computing-io/kepler/pull/441/


Cannot connect (library/sections is 401)

Hi there!  Looks like a great project you have here!—although I fail completely to start it :-)
After configuration, I obtain the following error:
Plex Media CLIent v0.1
Connecting to Plex Server...
[!!!] Network error on API request https://url:port/library/sections:
starttls: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:unable to get local issuer certificate

I can certainly access the server with Chrome, and the SSL cert is valid and signed by Let's Encrypt. However, library/sections just give a 401 Unauthorized in Chrome, so that may be the problem.  Should I allow some kind of additional access somewhere?
PS: I had to manually install lua-socket; missing dependency?

Haha, let's see. From what I can tell, the error comes from the client being unable to verify the certificate with the issuing authority which, as far as I can tell, should be handled automatically by lua-http (or rather luaossl). But I'm looking into this.
Meanwhile, maybe you're serving Plex under a reverse proxy? If you do, could you post your config?
In any case, you're likely getting 401 on the browser because you need to either set an X-Plex-Token: ... header or request library/section?X-Plex-Token=... if the request's source IP hasn't been authorized in Plex under Settings>Server>Network>List of IP addresses and networks that are allowed without auth (show advanced).
Could you try that? You should find a working token in $HOME/.config/pmcli_config.
And thanks for the luasocket spot, that's been fixed :)

Thanks for the swift response.  I'm not using a reverse proxy.  Using the token as you described does work indeed, I do get the XML tree of directories.  Do let me know if I can provide more details!

Would you mind reporting the output of echo | openssl s_client -connect address:port? Without prefixing the address with https://.

Tell you what, cause I'm a bit confused.  My server is cadilhac.name with the default port.  What I don't get is that openssl reports that the SSL certificate is Plex's, and that makes, say, wget fail.  But Chrome reports that it's my custom certificate, as I've configured in Plex.  Not sure what protocols are at play here.

For the moment, as a dreadful hotfix I've made it so you can add verify_server_certificates = false in pmcli_config to completely skip any certificate validation. You'll forego identity verification, but you'll still have encryption.
For something cleaner, I'm still not sure and will need to investigate more. It looks like Plex serves different certificates for different occasions.
Curl sees a post-processed version of the custom PKCS12 certificate built concatenating Plex's own certificate and chain of trust to it: you can see this if you run curl --trace - https://cadilhac.name:32400 --output /dev/null . wget and lua-ossl seem to see this one too and they all consequently throw a fit.
In browser, as you say, you get your own and it's fine (and reasonable).
Openssl s_client sees only the Plex certificate, which is also fine (but unreasonable).

Frankly, I did not even know this was possible.  Is Plex to be blamed here?

Mind trying again? I think that it's working now that you've renewed your certificate.


URL

How to get Authentication URL, Claim URL, Base URL, Redirect URL

@Vishnu2201 Hi, these configuration can be set in the Configuration.plist file  inside the ESPRainMaker iOS project. To set your own AWS configuration please have a look to this reply here. Let me know if you are looking for any additional information.