Initialization order for singletons

Inside my InstallBindings() method, I have the following two lines:
Container.Bind<PreviewManager>().AsSingle().NonLazy();
Container.Bind<ObjectManager>().AsSingle().NonLazy();

Both classes have no dependencies on each other and both are singleton managers that are initialized before the main game starts (they subscribe to certain game events during [Inject] Initialize()). Is there any way I can ensure that PreviewManager has it's Initialize() method called before ObjectManager? I can't do it using BindExecutionOrder since that won't allow for binding AsSingle().
My current workaround is to declare a dependency on PreviewManagerin ObjectManager so that the dependency graph knows to initialize it before ObjectManager, but that surely can't be the way to go here. Maybe I'm missing something entirely here, but I can't seem to wrap my head around it.

Why can't you use BindExecutionOrder?
Why not instead of this:
public class Foo
{
    [Inject]
    public void Initialize()
    {
        Log.Trace("Foo.Initialize");
    }
}

public class Bar
{
    [Inject]
    public void Initialize()
    {
        Log.Trace("Bar.Initialize");
    }
}

public class TestInstaller : MonoInstaller<TestInstaller>
{
    public override void InstallBindings()
    {
        Container.Bind<Bar>().AsSingle().NonLazy();
        Container.Bind<Foo>().AsSingle().NonLazy();
    }
}

You do this?
public class Foo : IInitializable
{
    public void Initialize()
    {
        Log.Trace("Foo.Initialize");
    }
}

public class Bar : IInitializable
{
    public void Initialize()
    {
        Log.Trace("Bar.Initialize");
    }
}

public class TestInstaller : MonoInstaller<TestInstaller>
{
    public override void InstallBindings()
    {
        Container.BindInterfacesAndSelfTo<Bar>().AsSingle();
        Container.BindInterfacesAndSelfTo<Foo>().AsSingle();

        Container.BindExecutionOrder<Bar>(1);
        Container.BindExecutionOrder<Foo>(2);
    }
}

I find that using IInitializable like this is easier than putting initialization logic inside an [Inject] method, since as you have discovered, the order that objects are created via the dependency graph can be hard to predict sometimes.  I prefer using [Inject] methods strictly for injection rather than initialization


crash

Describe the bug
crash
To Reproduce
Steps to reproduce the behavior:

load in
crash

Expected behavior
no crash
Screenshots
If applicable, add screenshots to help explain your problem.
Setup (please complete the following information):

MacOS: 12.4
Minecraft Version: 1.19.2 Quilt
Version: 1.2.3

Additional context
https://mclo.gs/6maLTUD

Never mind forgot a mod


As a Engineer, I would like to download a given OpenAPI specifications from different locations (local, s3, git and etc), so I can consume swagger.yaml files from anywhere

Right now stride supports only Open API specification that is located on the local file system. Let's be more flexible by adding support of different sources.

Accepted!


Remove the synchronized flag of fillInStackTrace method to improve performance while throwing exception.

Motivation:
The method body of fillInStackTrace method of TimeoutException class in FixedChannelPool.java is so simple (just return this) that there is no need to be marked as synchronized.
Modification:
Remove the synchronized flag of fillInStackTrace method.
Result:
It can improve performance slightly while throwing a TimeoutException.

@netty-bot test this please

@seedeed thanks a lot


Changing language makes each cms component re-loaded

After changing language, instead of reloading all cms components, the cms page should be reloaded.

QA step:
In homepage, change language, make sure there is no cms component loaded in "network".

fix not yet seen on dev-com17 (June 17 @ 2:15 pm EST)

Saw significant reduction in dev-com2.
ccv2: 58/96
dev-com2 6/51


feat: added the UI for Home Page.

[x] Added the Home page UI.
[x] Enable searching from Home Page.
[x] Improved UI of Navbar Search.
[x] Hide navbar search when the current route is Home Page.

@minhqdao https://registry-frontend.vercel.app/

The enter key now works on the homepage, but once you searched sth and the search bar moves to the top, the enter key stops working.

When I search for asdf, then go the homepage again via the fpm icon and search for fpm, then the old results are shown just quickly. It's not super important but I think the state should be resetted before the navigation (actually it should be coupled with the loading indicator screen).

Thanks for the suggestions , @minhqdao I have fixed them in my fork , will be fixed in upcoming PR.

Thanks @arteevraina , just a few suggestions above rest Looks good to me.

When I search for asdf, then go the homepage again via the fpm icon and search for fpm, then the old results are shown just quickly. It's not super important but I think the state should be resetted before the navigation (actually it should be coupled with the display of the loading indicator screen).

Thanks for mentioning this @minhqdao . It has been already fixed by @henilp105 in this https://github.com/fortran-lang/registry/pull/22/commits/8b167ada37b2d0d79a093eb99e86b5f4f6725adf. Unfortunately, this commit is not in my branch because it was created before this commit was merged. So, I can confirm this issue has already been fixed in main branch,

The enter key now works on the homepage, but once you searched sth and the search bar moves to the top, the enter key stops working.

Thanks for mentioning this @minhqdao . It has been already fixed by @henilp105 in this https://github.com/fortran-lang/registry/pull/22/commits/8b167ada37b2d0d79a093eb99e86b5f4f6725adf. Unfortunately, this commit is not in my branch because it was created before this commit was merged. So, I can confirm this issue has already been fixed in main branch,

When I start a search from the homepage, there is a loading indicator. But once the search bar moves to the top and I search for packages again, there is none. Seems like some business logic isn't reused here. 🤔

This has been fixed in this commit https://github.com/fortran-lang/registry/pull/23/commits/6cc5275f2af8edf613ea7b5215b3f86756bc5f64.


Fix Docker Mac builds

These changes will allow Airnode to build on both Mac OS arm64 and a Raspberry Pi.
It is possible to build both amd64 and arm64 images on one arm64 or amd64 machine using Docker BuildKit/buildx (uses qemu underneath for emulation).
It will also push the images to Docker Hub as part of this process.
I've added these buildx commands to the package.json file but it's possible that they don't belong there and instead belong in Confluence. These commands will be useful for future releases. They're here for comment, I'm happy to remove them.
I have tested the deployer on an M1 Mac.
AN-426

Ryan M indicated that he'd be interested in testing on an M1, so I'll ask him if he can help test this.

The latest changes build on my Mac M1, a Raspberry Pi (64 bit) and my x86_64 machine.
Ryan M has confirmed he'll try testing it on his Mac M1 this week.

It would be nice to rename the terraform URL variable, but otherwise the chagnes LGTM...

I will modify it, no problem.

Be sure to ask Ryan to test this before merging, since I cannot verify this.

He has said he will verify it tomorrow - it'll be educational :)


Docs for util methods are missing the first parameter in method signature

Issue Description
In the documentation, the method signatures for praw.models.util.stream_generator and praw.models.util.permissions_string are missing their first parameters (permissions and function, respectively). All parameters appear in the parameter descriptions just below, however.
I'm guessing this is an issue with automethod.
System Information
N/A

Great find! Do you have any suggestion on how to fix it?


Add changeset detection to CI

We do this in CI, at least to avoid running tests etc. for documentation changes. Some small wins here.
Example from Ruff: https://github.com/astral-sh/ruff/blob/573facd2bad5d43abed7c9da903f9cf243d29d58/.github/workflows/ci.yaml#L22

I did this in #4438


Tabs with input type content and other tabs that also have content

I need to create the following screen below and before I leave writing code I would like an idea / suggestion, how I could do that.
I have a main TAB, called ( Informações ),
inside this tab, I have input type fields and I have other Tabs and in these other tabs, plus other fields, as the image shows
If you can help me and share a stackblitz, how would you do that, I would be grateful :)

You may register a custom field type for that, there are some examples that you may check:

https://github.com/ngx-formly/ngx-formly/pull/1294/files
https://github.com/franzeal/ngx-formly-tabs

@aitboudad
I don't know if you can help me, but I would be very grateful if I could. We could use it as an example for those who come looking for something similar to what I'm developing in the future.
I'm trying to create a specific type to handle what I need, following the library as a base (https://github.com/franzeal/ngx-formly-tabs).
There's the stackblitz here: https://stackblitz.com/edit/mat-tabs-vimbo-form
However I cannot function 100%, the first TAB does not appear, the others do and I would like some ideas to make it less verbose, cleaner.
the folder responsible for the customizable type is mat-tabs


Decode fail

Hello,
I have a VVC file，which can be decoded successfully by VTM, but it fails when use the vvdec application to decode it.The error message is as follows:
vvdecapp [error]: decoding failed: (possibly recoverable) exception (decoder requires restart) detail: Exception occured:
ERROR: In function "void __cdecl vvdec::Slice::constructSingleRefPicList(const class std::list<struct vvdec::Picture *,class std::allocator<struct vvdec::Picture *> > &,enum vvdec::RefPicList)" in D:\inter_algorithm\vvdec\source\Lib\CommonLib\Slice.cpp:504: reference picture as wrong POC
ERROR CONDITION: pcRefPic->getPOC() != refPOC
Please give me your email，I can send the vvc file to you. Thanks！

Thanks for the report.
Could you send the file or a link to the file to<EMAIL_ADDRESS>Please let me know after you did, so I can investigate if it doesnt come through. Unknown binary files sometimes cause problems with the filters.

Thanks for you response! I just sent the bitstream file  which decoded fail by using vvdec to you email.

Got it. Will investigate. Thank you.

Can reproduce. Looks like long term reference picture handling problem in VVdeC. We'll try and fix soon.

Okay, thank you！


Plagiarism check: Fix new plagiarism notification email

Checklist
General

[ ] This is a small issue that I tested locally and was confirmed by another developer on a test server.
[x] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
[x] I chose a title conforming to the naming conventions for pull requests.

Client

[x] I added multiple screenshots/screencasts of my UI changes.
[x] I translated all newly inserted strings into English and German.

Motivation and Context

Closes 6170.
Description

Modify the title and body of the notification email of a new plagiarism case according to 6170.
Steps for Testing

The database change is not yet approved. Please DO NOT deploy this PR to the Test Server
For a detailed example of testing, please see this screencast:
https://user-images.githubusercontent.com/10885503/215799866-38e41d39-ca06-41e3-8a60-b3b58cc404ca.mov
Prerequisites:

Test Server 0
1 Course (e.g. General Testing Course)
1 Instructor (registered to the course)
3 Students (2 test accounts and 1 account with your email) (registered to the course)

Log in to Artemis as an Instructor
Navigate to the Course Management
Navigate to Exercises
Click Import Programming Exercise
Search Test 6174
Click Import of exercise Test 6174
Insert Title and Short Name
Set the release date to current time
Ensure that Allow Online Editor is checked
Click Import
Log in to Artemis as the first student
Select the Course
Click Start exercise of the newly created programming exercise
Click Open code editor, then click Open graded code editor
Click BubbleSort.java
Insert any code inside the performSort method
Click Submit
Log out and log in as the second student
Select the Course
Click Start exercise of the newly created programming exercise
Click Open code editor, then click Open graded code editor
Click BubbleSort.java
Insert bubble sort code inside the performSort method
Click Submit
Log out and log in as the user with your email
Select the Course
Click Start exercise of the newly created programming exercise
Click Open code editor, then click Open graded code editor
Click BubbleSort.java
Insert bubble sort code inside the performSort method
Click Submit
Log in to Artemis as an Instructor
Navigate the programming exercise that you created
Click Check Plagiarism
Click Detect plagiarism
Click the result, then click Confirm
Click the course name of the breadcrumb navigation
Click Plagiarism Cases
Scroll to the programming exercise that you created
Click the case of the account with your email
Click Notify student
Click Preview tab
Ensure that the content looks good in preview mode.
Click Save
Check your email and verify that the content is still the same as in step 43
Log in as the student
Navigate to the plagiarism case
Verify there is a red button with the text "Reply to accusation" and also a text that states the deadline to reply
Verify that the student can reply to the case

Review Progress

Code Review

[ ] Review 1
[ ] Review 2

Manual Tests

[ ] Test 1
[ ] Test 2

Test Coverage

Class/File
Branch
Line

programming-exercise.component.ts
88.59%
98.9%

Screenshots

Codecov Report

Merging #6174 (bb50a77) into develop (628a395) will increase coverage by 3.88%.
The diff coverage is 100.00%.

:exclamation: Current head bb50a77 differs from pull request most recent head d4445dc. Consider uploading reports for the commit d4445dc to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@              Coverage Diff              @@
##             develop    #6174      +/-   ##
=============================================
+ Coverage      76.32%   80.21%   +3.88%
- Complexity         0    12827   +12827
=============================================
  Files           1223     2273    +1050
  Lines          46377    88012   +41635
  Branches        8638    13033    +4395
=============================================
+ Hits           35399    70599   +35200
- Misses          5684     9694    +4010
- Partials        5294     7719    +2425

Impacted Files
Coverage Δ

...a/de/tum/in/www1/artemis/domain/metis/Posting.java
88.88% <ø> (ø)

...lagiarism-case-instructor-detail-view.component.ts
85.39% <100.00%> (+1.05%)
:arrow_up:

...w/plagiarism-case-student-detail-view.component.ts
91.66% <100.00%> (+0.75%)
:arrow_up:

src/main/webapp/app/shared/metis/metis.util.ts
80.85% <100.00%> (+0.41%)
:arrow_up:

...ain/webapp/app/shared/metis/post/post.component.ts
85.18% <100.00%> (+1.18%)
:arrow_up:

.../app/shared/metis/posting-create-edit.directive.ts
84.00% <100.00%> (ø)

...osting-footer/post-footer/post-footer.component.ts
88.88% <100.00%> (+0.31%)
:arrow_up:

...idebar/conversation-selection-sidebar.component.ts
87.34% <0.00%> (-0.64%)
:arrow_down:

...rvice/compass/umlmodel/petrinet/PetriNetPlace.java
95.83% <0.00%> (ø)

...rs/bitbucket/dto/BitbucketBranchProtectionDTO.java
100.00% <0.00%> (ø)

... and 1048 more

Flag
Coverage Δ

client
76.33% <100.00%> (+<0.01%)
:arrow_up:

server
84.54% <ø> (?)

Continue to review full report at Codecov.

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

I suggest just changing the link and not the body, as new errors appeared:

The text is now too long for a post (max. 1000 chars) when exercise/course have a long title
The greeting is missing in the post (Artemis notification)
The consequence is not always a 'U' but could just be a warning
Instead of Nextcloud, maybe this 'official' link? https://portal.mytum.de/archiv/kompendium_rechtsangelegenheiten/apso/Lesb-F-APSO-vom-18-03-2011-mit-3-AeS-vom-27-04-18-ohne-Markierungen.pdf/view

Hi @ge65cer, I've adjusted the PR according to your suggestions. Thanks!

The text is now 5000 chars max
There is now greeting in the post
Changed the notification content
Changed the link.


Payment proof screen updates

New screens are here https://app.zeplin.io/project/5c73dc8aa74b4b4085a86a91/dashboard?seid=5ca1ac27163c972ad46ebf27
Small changes have been done to match new app design

Design:
https://app.zeplin.io/project/5c73dc8aa74b4b4085a86a91?seid=5ca1ac27163c972ad46ebf27

Actual:

If the sender and the recipient have names, you need to display them

checked


Add cosmicqbit.dev

Website (if applicable): https://cosmicqbit.dev
This PR is:

[x] Adding a new domain
[ ] Updating existing domain
[ ] Changing domain name
[ ] Removing existing domain from list
[ ] Website code changes (darktheme.club site)
[ ] Other not listed

[x] The domain is in the correct alphabetical order
[x] The following information is filled identical to the data file

I confirm that I have read the FAQ page, particularly the red section about inappropriate content, and I attest that this site is appropriate based on those criteria.

[x] Check to confirm

- domain: cosmicqbit.dev
  url: https://cosmicqbit.dev
  method: mediaquery
  last_checked: 2023-04-12

Thanks for adding your site! Subscribed to your feed as well. 💪


control KiVar from command line

Is it possible to control KiVar from command line? I am using KiBot to generate gerber data and position files. If I could call kivar from command line and tell it somehow, which variant I need to set, I can automatically create position files for all assembly variants by running single script which would do following:

call kibot to generate gerbers
call kivar to set variant 1
call kibot to generate position files for variant 1
call kivar to set variant 2
call kibot to generate position files for variant
...

Well, I didn't make a note about this in the source code, did I? So I guess you've read my mind this time. :smile:
Yes, it was clear to me that users will ask for a CLI soon. As I'm a fan of automation, too, I think this should be done.
It'll be a bit of code rework and separation, but technically it should be no problem.
Until I find the time to work on this, let's use this ticket for feature discussion.
Some call examples which will explain the kind of features I have currently in my mind:
kivar_cli --list example.kicad_pcb

Lists components (only those with rules assigned) along with their value and attributes for each choice (already "flattened", i.e. without default choices, but dedicated values/attr for each possible choice as they would really be assigned).

kivar_cli --state example.kicad_pcb

Presents a list of aspects along with each currently matching choice (or "unset").
If --all is added, inactive choices are also listed, so that the user can see what else is possible for each aspect. The currently selected choice could be marked with a *.

kivar_cli --set ASPECT1=FOO --set ASPECT2=BAR example.kicad_pcb

Assigns choices to aspects (can be only a subset of possible aspects). Details about call syntax TBD (multiple --set options or only one with a list of assignments ...).

... and so on.
Comments and ideas are welcome.

I agree, --list, --state and --set will be the most useful commands. Maybe it will be good to add another command:

kivar_cli --check example.kicad_pcb - simply return error, if KiVar is unable to resolve actual choices for all aspects (= any  is found). If option --verbose is added, KiVar will also print a list of components, which are causing the inconsistency

Maybe it will be better to use syntax similar to git command (git log --oneline --graph origin/master - command subcommand --arguments target). Commands could look like this:

kivar list example.kicad_pcb
kivar state --all example.kicad_pcb
kivar check --verbose example.kicad_pcb

Having possibility to use kivar from commandline could also solve the problem with modifying text variables from kivar in order to  get some text string and use it for name of output file produced by KiBot. Output of kivar state could processed by custom script and saved in enviroment variable, which could be then used by KiBot for output files naming.

I like your suggestions.
A check command sounds useful, and using a mandatory command argument instead of options makes perfect sense. :+1:
Also, the commands that perform any changes to the board shall have a --dry-run option.

nice, I will try it as soon as I have a little time for it.
First real application for this could be semi-automatic test of KiVar itself. There would be one set of kicad PCBs which will be passed as argument to kivar. After kivar processes the board, it will be compared (e.g. using git diff) to the result board, where correct state was set and checked before. I will try to prepare these test/correct board pairs and some test script. If this works, next step could be fully automated test using CI/CD pipline.

The list command is now working as described above.
Using the CLI for testing is a good idea. For this purpose, I have just added a --query <ASPECT> option to the state command, so that you wouldn't need git diff to check the matching choice for an aspect. In query mode, only the unformatted name of the matching choice is printed (empty line and exit code 0 if no match found, exit code != 0 if aspect name was not found).


CHAOS-3328 Update connect-chaos-infrastructures.md

Specify Helm chart support for chaos infra installations

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://65c9edd1e29cb7c69986ad65--harness-developer.netlify.app

https://github.com/harness/developer-hub/pull/5739 Created a new PR since revamp changed the structure of the docs


Testing unicast discovery fails when using non-management interface by the node and to configure DNS server IP

Hi,
I'm running nmos-cpp-node on Windows server with Mellanox ConnectX (non-management) interface by defining ConnectX IP as the "host_address" in the node config.json file.
And running AMWA NMOS testing tool on another Linux server using unicast mode to run IS-04-01 tests.
When configuring DNS server IP for the node on Windows management interface, IS-04-01 tests pass. Noting again that ConnectX interface is used as the "host_address" in the node config.json file.
But when configuring DNS server IP on ConnectX interface the node can't find the registry and the tests fail "Node did not attempt to register with the advertised registry".
Noting that Windows/Linux management IPs and ConnectX IPs are on different subnets, and AMWA tool on Linux was updated to use ConnectX IP by updating TestHelper.py:get_default_ip() to return ConnectX IP instead of the management one.
My questions are:
Is there something I'm doing wrong? Is it correct behavior to configure DNS IP on the management interface while testing the ConnectX one?
Does nmos-cpp uses some default configuration which works with management IP? If so, how can I make it use ConnectX IP instead? so we configure DNS server IP on the ConnectX interface.
And Last, AFAYN, is updating TestHelper.py:get_default_ip() to return ConnectX IP is a correct way to make the tool run on? or is there another way to do so?
Sorry for the many questions & Thanks in advance.

Mohammad,
This does not sound related to the nmos-cpp software stack nor the nmos-testing tool. nmos-cpp and the testing tool simply utilise the underlying DNS client of your host OS. To me it appears that you have the DNS configuration wrongly configured on your Windows platform. The fact that it operates correctly on one interface and fails on another leads me to this conclusion.
Specifically for Windows... The DNS Client service queries the DNS servers in the following order:

The DNS Client service sends the name query to the first DNS server on the preferred adapter’s list of DNS servers and waits one second for a response.
If the DNS Client service does not receive a response from the first DNS server within one second, it sends the name query to the first DNS servers on all adapters that are still under consideration and waits two seconds for a response.
If the DNS Client service does not receive a response from any DNS server within two seconds, the DNS Client service sends the query to all DNS servers on all adapters that are still under consideration and waits another two seconds for a response.
If the DNS Client service still does not receive a response from any DNS server, it sends the name query to all DNS servers on all adapters that are still under consideration and waits four seconds for a response.
If it the DNS Client service does not receive a response from any DNS server, the DNS client sends the query to all DNS servers on all adapters that are still under consideration and waits eight seconds for a response.

The preferred adapter in step 1 being the adapter that's listed first in the binding order.
The last point I think is key to your issue here... You don't say what version of Windows you are running - there are different processes to define the binding order in Win 10, Win Server and other Window versions.

Mohammad,
This does not sound related to the nmos-cpp software stack nor the nmos-testing tool. nmos-cpp and the testing tool simply utilise the underlying DNS client of your host OS. To me it appears that you have the DNS configuration wrongly configured on your Windows platform. The fact that it operates correctly on one interface and fails on another leads me to this conclusion.
Specifically for Windows... The DNS Client service queries the DNS servers in the following order:

The DNS Client service sends the name query to the first DNS server on the preferred adapter’s list of DNS servers and waits one second for a response.
If the DNS Client service does not receive a response from the first DNS server within one second, it sends the name query to the first DNS servers on all adapters that are still under consideration and waits two seconds for a response.
If the DNS Client service does not receive a response from any DNS server within two seconds, the DNS Client service sends the query to all DNS servers on all adapters that are still under consideration and waits another two seconds for a response.
If the DNS Client service still does not receive a response from any DNS server, it sends the name query to all DNS servers on all adapters that are still under consideration and waits four seconds for a response.
If it the DNS Client service does not receive a response from any DNS server, the DNS client sends the query to all DNS servers on all adapters that are still under consideration and waits eight seconds for a response.

The preferred adapter in step 1 being the adapter that's listed first in the binding order.
The last point I think is key to your issue here... You don't say what version of Windows you are running - there are different processes to define the binding order in Win 10, Win Server and other Window versions.

Richard contacted offline with me. And its seems to be DNS resolution issue. I'll close this as its not nmos-cpp/nmos-testing SW issue. Thanks.

Richard contacted offline with me. And its seems to be DNS resolution issue. I'll close this as its not nmos-cpp/nmos-testing SW issue. Thanks.


Add file vFile#basename

I've propose to add vFile#fileBasename method to make getting of basename a little bit easier.
It would be useful in gulp-remark.
The vFile#fileBasename just return file.filename and file.extention, and works the same as Unix  basename command.

Thanks @denysdovhan! Awesome work!

Give me a minute for fixing.
BTW, in case with gulp-remark, I've found the way to get basename using Vinyl.basename property. So we don't need this method there. At the same time, you could merge it, maybe it will be useful in future.

Yes, I missed this method a few times, but was always to lazy, instead opting for var base = file.filename || file.extension ? file.filename + (file.extension ? '.' + file.extension : '') : ''; :wink:

Done!

Awesome, I’m merging/rebasing. I’ll make a few minor changes, but keep your name intact.
Thanks @denysdovhan, awesome code!

There is a problem with codestyle. Should I fix or you gonna do it?

I am

OK, thank you!
Are you gonna release it and update remark? I want to use it in gulp-remark.

There’s no need to update remark (semver), just npm update to get the new version.

Awesome! :+1:

Don't forget to publish it, because I'm waiting ;)

done


[Fix #11591] Fix a false positive for Lint/ToEnumArguments

Fixes #11591.
THis PR fixes a false positive for Lint/ToEnumArguments when enumerator is not created for __callee__ and __callee__ methods.

Before submitting the PR make sure the following are checked:

[x] The PR relates to only one subject with a clear title and description in grammatically correct, complete sentences.
[x] Wrote good commit messages.
[x] Commit message starts with [Fix #issue-number] (if the related issue exists).
[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[x] Added tests.
[x] Ran bundle exec rake default. It executes all tests and runs RuboCop on its own code.
[x] Added an entry (file) to the changelog folder named {change_type}_{change_description}.md if the new code introduces user-observable changes. See changelog entry format for details.

Seems to me the examples here should be improved a bit as well. On an unrelated note - we might mention the missing arguments in the cop message, which currently is a bit vague.


Chapter 3 p31. ERROR! this task 'firewalld' has extra params, ....

when i write the cli :
<ansible db -b -m firewalld -a "zone = database state = present permanent= yes">
Result:
<ERROR! this task 'firewalld' has extra params, which is only allowed in the following modules: ansible.legacy.import_role, include_tasks, shell, set_fact, ansible.builtin.include_vars, ansible.builtin.set_fact, ansible.legacy.include_role, add_host, include_vars, ansible.builtin.include_tasks, ansible.legacy.raw, ansible.legacy.include, ansible.builtin.import_tasks, ansible.builtin.script, ansible.builtin.win_shell, ansible.builtin.include, ansible.builtin.meta, ansible.legacy.script, ansible.legacy.include_vars, command, ansible.legacy.group_by, ansible.legacy.add_host, ansible.legacy.win_command, raw, ansible.builtin.import_role, include, ansible.builtin.win_command, ansible.legacy.import_tasks, include_role, ansible.builtin.shell, ansible.legacy.set_fact, ansible.builtin.include_role, ansible.builtin.add_host, ansible.legacy.shell, ansible.legacy.win_shell, ansible.builtin.group_by, script, win_shell, win_command, ansible.legacy.command, meta, ansible.legacy.meta, ansible.builtin.raw, ansible.builtin.command, import_tasks, ansible.windows.win_shell, ansible.legacy.include_tasks, group_by, ansible.windows.win_command, import_role>
pls help me!

Remove your spaces before and after "="
For example:
$ ansible db -b -m firewalld -a "zone=database state=present permanent=yes"

@nstallons is correct—you need to use no spaces around the = when using ad hoc commands with inline parameters, exactly following the book's formatting.


Add a periodSeconds and a failureThreshold to the startup probe

How to categorize this PR?
/area usability
What this PR does / why we need it:
This PR adds a failureThreshold and periodSeconds to the startup probe, which resolves the issue of the remote-local-setup deployment constantly entering a CrashLoopBackOff state due to insufficient time for all commands to complete. To improve stability, the pod will now wait until it is fully ready before starting up."
Which issue(s) this PR fixes:
Special notes for your reviewer:
Release note:
Add `failureThreshold` and `periodSeconds` to the startup probe to prevent the pod to constantly crash before getting ready

/kind enhancement

/milestone v1.66

/override pull-gardener-e2e-kind


records. Add consistency check over default values defined in RecordConfig.cc

Feedback was requested by email, I'll add the details here anyway:
The goal:
Add records consistency check  for default values on startup(core records and plugin records(TSMgmt*Create)
The outcome
A
If consistency check fails, the record will not be registered, I think this is the main discussion point, so leaving this as draft till we decide what would be the outcome(if any).
Details:
Working around some record consistency check issues this week I found that we do not perform this check against the default values specified during registration (4th parameter) of a record(either core or throughout the TS API).
What’s the consistency check?
This is supposed to be used to validate the value you set on a record, so if the check(regex) does not match the value then you get an error and the value is not set. This is quite clear when you try to set a new record value using traffic_ctl:
$ traffic_ctl config set proxy.config.accept_threads 99999999
Server Error found:
[9] Error during execution
- [2000] Validity check failed. [2004]

This PR  adds a record consistency check on startup for default records values defined in (RecordsConfig.cc and by the  TSMgmt*Create API) to avoid possible bugs.
As I said this is already done for values we read from the records.yaml and values set through traffic_ctl but not for the default value specified in the record registration code(RecordsConfig.cc and TS API)
This may break some instances with plugins which registers new records with wrong value/regex in it.
Is important to note that currently if you register a new record and configure the check to be performed but you do not specify a regex, then ATS will fail(fatal). I think something similar could be done.
Plan B:
If this is not accepted then I can add a new autest which parses the RecordsConfig.cc and generates a records.yaml file which then gets injected into ATS which OFC will error out if the consistency check fails, so at least we will be covered by a single test, existing behavior will not change.
In any case something should be done.
Probably we do not need  this in 10.

AuTest errors are related this the error added in this PR. This will go away once some of my  other PR's land on master.
traffic_server ERROR: XXXXXX: Consistency check for the default value=-1 failed. pattern=^-?[0-9]+$. Record will not be registered

[approve ci autest]

[approve ci autest]


Performance issue

I've tried to make a comparison to my Clusters-algorithm, but Your BTreeSet needed about 30 seconds for 10.000 items. There were about 35.000 allocations for only 10.000 items!

Did you try release build?

I'll add a documentation for these sanity checks and turn off them for debug build.
These will be used for internal testing only.

https://github.com/frozenca/BTree/commit/a9edf86cc0d58ec186d9c8d1cec0a3f30254d51b
https://github.com/frozenca/BTree/commit/adf3c3309f45a65010d767df674c232c12f5c00a
Turn off sanity checking for the entire tree. (But there are still a lot of assert in debug builds, so don't expect performance in debug build)
Please let me know if you still find issues in release build

It's a lot better now, but You should have a look at Clusters!

What are your compiler version and optimization flags?
Generally it doesn't make sense to check performance without turning on maximum optimization level.

Inserting 100,000 std::int64_t in gives the following result in my machine:
frozenca::DiskBTreeSet test
Time to insert 100000 elements:
Average : 18.5565ms,
Stdev   : 2.23727ms,
95%     : 22.9577ms,
99%     : 24.5757ms,
99.9%   : 24.5757ms,

std::set test
Time to insert 100000 elements:
Average : 25.1034ms,
Stdev   : 4.52327ms,
95%     : 36.5832ms,
99%     : 42.0014ms,
99.9%   : 42.0014ms,

Try a larger fanout, the default fanout (t = 2) is not very performant, for example:

// fanout 16
frozenca::BTreeSet<int, 16> btree;

I have Visual Studio standard settings. If i try to set the fanout i get a compiler-error:
static_assert failed: 'Fanout customization for leaves is not allowed for disk B-trees'
But i don't have a disk B-tree?!

Ugh, there was a mistake in adding that check. I will upload the fix soon.
But again, measuring performance is pointless without turning on compiler optimizations to the maximum.
For MSVC it is /Ox. You can google it how to do it

https://github.com/frozenca/BTree/commit/93cf63c4cabf29ea096b2ada1ed42ec706cafbf1
Disabled fanout customization for leaf nodes, now you can customize fanouts for non-disk B-Tree

I have set optimization to /Ox and insert 1'000'000 items now. Your B-tree seems to be a bit faster, but Clusters are much smaller.

I did some testing with another btree-implementation, Your's seems to be better!
Maybe if You optimize Clusters, You get an even better result. I'm a hobby-programmer only.

I've been free to take-over some of Your ideas:

I didn't know std::forward
The template argument to prevent double string creation
C++ for-each compatibility
Iterator-traits

I had an issue with my uninitialized array, but i fixed it. I'm adding 1'000'000 strings now:

I think Clusters is the better choice, but thank You very much for Your publication!
Maybe You like to do a C++20-implementation of Clusters, too?
Best regards,
Sven Bieg

Maybe You like to do a C++20-implementation of Clusters, too?
No

For benchmark, I can't understand German. Is your implementation better for what? Memory footprint? Or runtime?

Yes, i've made a release-build with full optimization and Your B-Tree-implementation is very good!
My code is following:
int count=1'000'000;
CHAR str[16];
frozenca::BTreeMap<std::string, int, 16> fmap;
Clusters::map<std::string, int, uint32_t, 16> cmap;
for(int i=count-1; i>-1; i--)
	{
	sprintf_s(str, 16, "%i", i);
	fmap[str]=i;
	}
for(int i=count-1; i>-1; i--)
	{
	sprintf_s(str, 16, "%i", i);
	cmap.set(str, i);
	}

The benchmark shows that Clusters are almost as fast as B-Tree and are only about half the size.
Lookup also takes less time with B-Tree, i can't imagine why.
I'm actually working on my web-server for Windows, Linux and ESP32.
The smaller memory-footprint is important on this small SoC, and custom allocators won't help there.
I already have my own memory-manager esp32-heap based on Clusters.
You could do the implementation in a few days, i don't know what You are using Your B-Tree for.
Maybe You do a comparison by Yourself and change Your mind? I don't think maximum speed is that important.
I'm going to change the last benchmark to english, i didn't mind that.

The factor that is important for someone is not equally important to everyone else, memory footprint is not my first optimization target (but of course it will be better to use smaller footprint)

Using fanout 16 is very inefficient for B-Trees (I use 64 or 128)

operator[] is suboptimal, can you try emplace(str, i)

operator[] is not subobtimal, same result:

A fanout of 128 doesn't seem to be a good idea:

For memory footprint, could you remove this part and try again?
https://github.com/frozenca/BTree/blob/main/fc_btree.h#L199
(Not removing the entire line, I mean just to comment out keys_.reserve(disk_max_nkeys); )

For non-pod types (like std::string, etc), I see there is a lot of room for improvement. I'm planning to change implementation to use std::deque soon

I'm sorry i don't understand much of Your C++-standard terms, but i've made Your test. I've commented out reservation and set the fanout back to 16.
Node() { /*keys_.reserve(disk_max_nkeys);*/ }

Here are the results, but now Clusters are smaller and faster:
fanout 16:

fanout 64:

I'm using handles like Windows-Runtime, having a reference-count on each object.

std::string was not my main concern so far, so it is currently under development.
The current implementation is suboptimal, so there will be improvements in the near future

Sorry, __builtin_ffs not found.

There is another issue with int64_t:
fc_btree.h(916,24): error C2672: 'operator __surrogate_func': no matching overloaded function found

Okay, B-Trees are much faster on integers without even using SIMD. I'm adding 10'000'000 integers now:

(fansize 64)

B-Tree's true power comes from locality of keys, so only keys with trivial types (e.g. int, float, enum, pointers and their arrays, and classes consisting only of them or their arrays) can benefit B-Tree's true power.
For types like std::string, it is still usable, but probably will not the best choice

I think You only make a benefit of custom allocators, but i can see You are a professional.
If You would port my algorithm to Your STL-library, i'm sure You would get better results.
Please feel free to have Your own implementation under Apache and Boost-licence!
I'm glad i could help You.
Best regards,
Sven Bieg

custom allocators are only used for Disk B-Trees, regular ones use standard allocators (std::allocator<Node>)

This standard-allocators are custom allocators.

I just uploaded a commit to enable SIMD for MSVC, you can give it a try (by setting FC_USE_SIMD to 1)
In my machine it gave speedup about 20%

Getting worse on my system:
B-Tree: 2.3s / Clusters: 4.35s
The benchmark above looks better for B-Tree.

What was your test code?

Oops, i changed the fanout to 16.
frozenca::BTreeMap<int, int, 16> fmap;
Clusters::map<int, int, uint32_t, 16> cmap;
for(int i=count-1; i>-1; i--)
	{
	fmap.emplace(i, i);
	}
for(int i=count-1; i>-1; i--)
	{
	cmap.set(i, i);
	}

Could you try larger fanouts? 64, 128, etc
Using SIMD is like doing process in 16 (or 8) units, so for fanout 16 it will not make a big difference

I tried 64 but i had the same result like in the benchmark above.
Like i said, i'm making use of this 4$ internet-capable chips from Espressif. I was driving a thermal solar power plant with it. Memory is limited to half a megabyte, having tens if not hundreds of Clusters. You wouldn't do it for me, think of Your smartphone!

I'm planning to implement two variants of B-Tree in the near future:

B-(B-minus) trees, specially designed for memory-scarce environments. (maybe you will be happy with this)
I am referring to these literature (they are good read, you may have a look)
https://en.algorithmica.org/hpc/data-structures/s-tree/
https://en.algorithmica.org/hpc/data-structures/b-tree/
This variant will not have pointers and other order statistics, so memory footprint will be much smaller,
and I except speedup will be about 30-50%: (but only trivially copyable keys can be used)

Lock-free B-trees, specially designed for very large scale database,
with highly concurrent access from multiple threads.
For machines with 16 CPU threads, I'm expecting speedup will be about x15

My B-Tree is general-purpose, it is not specialized for certain use case target.
so it will be a good baseline and compromise between them

I'm happy with [Clusters]!(http://github.com/svenbieg/clusters)

I think 2.) won't work. You can not have two threads in Your tree, because You don't know if one of it needs root-access.

there are a lot of smart people in the world and there are also actual papers and references:
http://www.cs.technion.ac.il/~erez/Papers/lfbtree-full.pdf
https://runshenzhu.github.io/618-final/
http://www.cs.umanitoba.ca/~hacamero/Research/BtreeTechrpt2011.pdf

Those people are crazy! The question is if this is necessary.
If i was You, i'd rename my classes with small letters and implement multi-thread-capable classes with capital letters.
My web-server creates one task for each request, i need a locking-mechanism for that.

i'd rename my classes with small letters and implement thread-safe classes with capital letters, maybe in .hpp-files
No
I have this classes for Clusters in my private code-space already, simply locking and forwarding to my public classes.
lock-free B-trees seem to use a mechanism similar to internal load balancer and worker pool, I think I can isolate that mechanism using if constexpr

I'm sorry i don't understand. At stage 4 You still have to change the root. Changing without locking?

I'm not your teacher, I can't answer everything.
 I'm just a hobby-programmer, i do my own thing.
Thank You very much for the links, maybe i find something interesting for Cluster.
I wish You success!

What about a new PalmTree class for big-data?

No.
In general, you don't suggest to change other people's code style unless they asked you a review.
Rewriting other's implementation is pointless.

Sorry, i'm not going to disturb You anymore.
This were just two tipps.


Question about achievement dates

Sometimes i wish to remove achievements in certain games, in a way that it looks as a fresh start. So, I use SAM to lock all the achievements that I had. After that, I play the game to start gaining achievements from scratch, but there is a problem, or maybe not, let me explain.
After unlocking the achievements by playing the game, some of them show the previous date when I unlocked them, before using SAM to clean them, and this pisses me a little, but the majority of the achievements show the new date.
Do you have any idea what can be causing this? To be clear, what I want is seeing all of them with the new date.
Thanks.

Are you sure all the achievements are getting relocked before you start playing? Some achievements can be a bit weird with trying to lock them after you already earned them.
Also where are you looking to check the time stamps?


vcpkg build/install should prevent machine from sleeping

Please add SetThreadExecutionState() (https://msdn.microsoft.com/en-us/library/windows/desktop/aa373208(v=vs.85).aspx )
to prevent the machine from entering sleep state during long builds and installs while the user is AFK.

This issue hasn’t been updated in a year; if it is still an issue, please reopen.


decorator function video

Uploaded decorator function video

Congratulations for contributing to open source. We are grateful. Thank you.

Thanks @NtemKenyor
It is my pleasure too


ARROW-8899 [R] Add R metadata like pandas metadata for round-trip fidelity

library(arrow, warn.conflicts = FALSE)

tab <- Table$create(
  a = structure(1:4, foo = "bar"),
  b = haven::labelled(1:4, label = "description")
)
tab$metadata$r
#> [1] "A\n3\n262144\n197888\n5\nUTF-8\n19\n2\n254\n531\n2\n1026\n1\n262153\n3\nfoo\n16\n1\n262153\n3\nbar\n254\n1026\n1\n262153\n5\nlabel\n16\n1\n262153\n11\ndescription\n1026\n1\n262153\n5\nclass\n16\n3\n262153\n14\nhaven_labelled\n262153\n10\nvctrs_vctr\n262153\n7\ninteger\n254\n1026\n1\n262153\n5\nnames\n16\n2\n262153\n1\na\n262153\n1\nb\n254\n"
arrow:::.arrow_unserialize(tab$metadata$r)
#> [[1]]
#> NULL
#>
#> [[2]]
#> [[2]]$a
#> [[2]]$a$foo
#> [1] "bar"
#>
#>
#> [[2]]$b
#> [[2]]$b$label
#> [1] "description"
#>
#> [[2]]$b$class
#> [1] "haven_labelled" "vctrs_vctr"     "integer"

df <- as.data.frame(tab)
df$a
#> [1] 1 2 3 4
#> attr(,"foo")
#> [1] "bar"
df$b
#> <labelled<integer>[4]>: description
#> [1] 1 2 3 4

Created on 2020-06-23 by the reprex package (v<IP_ADDRESS>01)
metadata$r$ gets a serialized string of a list with 2 things:

attributes of the data frame itself
named list of attributes of each column (possibly NULL)

Added support for record batches.
Toying with the idea of a print method for the metadata, to make it less opaque:
library(arrow)
#>
#> Attaching package: 'arrow'
#> The following object is masked from 'package:utils':
#>
#>     timestamp

Table$create(a = structure(1:2, foo = "bar"))$metadata
#> $r
#> [1] "A\n3\n262144\n197888\n5\nUTF-8\n531\n2\n254\n531\n1\n531\n1\n16\n1\n262153\n3\nbar\n1026\n1\n262153\n5\nnames\n16\n1\n262153\n3\nfoo\n254\n1026\n511\n16\n1\n262153\n1\na\n254\n1026\n511\n16\n2\n262153\n4\ndata\n262153\n7\ncolumns\n254\n"
#> List of 2
#>  $ data   : NULL
#>  $ columns:List of 1
#>   ..$ a:List of 1
#>   .. ..$ foo: chr "bar"
#>
#> attr(,"class")
#> [1] "arrow:::metadata"
record_batch(a = structure(1:2, foo = "bar"))$metadata
#> $r
#> [1] "A\n3\n262144\n197888\n5\nUTF-8\n531\n2\n254\n531\n1\n531\n1\n16\n1\n262153\n3\nbar\n1026\n1\n262153\n5\nnames\n16\n1\n262153\n3\nfoo\n254\n1026\n511\n16\n1\n262153\n1\na\n254\n1026\n511\n16\n2\n262153\n4\ndata\n262153\n7\ncolumns\n254\n"
#> List of 2
#>  $ data   : NULL
#>  $ columns:List of 1
#>   ..$ a:List of 1
#>   .. ..$ foo: chr "bar"
#>
#> attr(,"class")
#> [1] "arrow:::metadata"

Created on 2020-06-24 by the reprex package (v<IP_ADDRESS>01)

@romainfrancois regarding tests, I think a fixture something like
df <- tibble::tibble(
  a = structure("one", class = "special_string"),
  b = 2,
  c = tibble::tibble(
    c1 = structure("inner", extra_attr = "something"),
    c2 = 4
  )
)

could be sufficient.
expect_identical(as.data.frame(Table$create(df)), df)
expect_identical(as.data.frame(record_batch(df)), df)

and then also confirm that it's identical round-tripping to Feather and Parquet.

I'm taking this over. Outstanding TODOs:

[x] Add tests
[x] Support record batches
[ ] Support nested types (requires adapting the data structure and adding recursion)
[ ] Test the print method
[ ] Test/handle bad data in metadata$r; allow users to edit it manually?

Ok, this isn't necessarily pretty but I think it's done, or done enough for here. I'll add some more tests, probably some docs for the format, and poke around a bit more while doing the tickets for haven::labelled and POSIXlt types. @romainfrancois if you can glance at the changes I made and confirm that I haven't butchered things too badly, that would be great, thanks.


Make dart_coveralls strong-mode clean.

Added an analysis_options.yaml file, enabled strong_mode
and then burned through the issues from the analyzer.

I have my editor currently set up to automatically apply dart-fmt on save.  If that's a problem I can revert those parts of the changes.
FYI @kevmoo (who I think has contributed here before).

@eseidel mixing format fixes w/ other things? In separate commits? 😱

I don't have commit privs, plz squash and merge at your convenience. :D
Thanks!


Fix unmet dependency in RN v0.64.0

Fixes #107

please update this and should go live today as unable to start project

As it was looking for 1 review/approval so I reviewed the change and approved it....lets see where it goes from here now! :)

All, if you are stuck you can move project to 16.13.1 if it is less work for you.

@react-native-masked-view/masked-view is updated


Actionsheet overlay triggers WSTagsField animation and renders tags in gray

Which version of the WSTagsField are you using?
4.0.0
On which platform does the issue happen?
iOS 12
Are you using Carthage?
Carthage, latest
Are you using Cocoapods?
No
Which version of Xcode are you using?
Xcode latest
What did you do?
See title
Add a short snippet of code to show the problem

Have a tag field with multiple tags
Trigger an action sheet overlay

What did you expect to happen?
Tags field should not do an animation and tags should not change color
What happened instead?
See title, and capture:

@wousser Thank you for opening an issue. Could you share an example project please?

It is reproducible in the example.
In the extension of the "ViewController" you can add this
        tagsField.onValidateTag = { (_, tags) in
            if !tags.isEmpty {
                let alert = UIAlertController(title: "Test", message: "AlertController overlay renders tags in gray", preferredStyle: .alert)
                alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
                self.present(alert, animated: true, completion: nil)
            }
            return true
        }

From the prints in the debug area you can see that the 'Unselect' is called on each WSTagView after the alert is dismissed.
Unselect <WSTagsField.WSTagView: 0x7ff005f06a80; frame = (0 0.25; 49 24.5); clipsToBounds = YES; tintColor = <UIDynamicSystemColor: 0x600001c768a0; name = systemBlueColor>; gestureRecognizers = <NSArray: 0x6000012e3510>; animations = { backgroundColor=<CABasicAnimation: 0x600001cd5020>; }; layer = <CALayer: 0x600001cc9e00>>
Unselect <WSTagsField.WSTagView: 0x7ff005f2b7a0; frame = (59 0.25; 51.5 24.5); clipsToBounds = YES; tintColor = <UIDynamicSystemColor: 0x600001c768a0; name = systemBlueColor>; gestureRecognizers = <NSArray: 0x6000012ce880>; animations = { backgroundColor=<CABasicAnimation: 0x600001cd53c0>; }; layer = <CALayer: 0x600001c3d5a0>>
Unselect <WSTagsField.WSTagView: 0x7ff005e383f0; frame = (120.5 0.25; 51.5 24.5); clipsToBounds = YES; tintColor = <UIDynamicSystemColor: 0x600001c768a0; name = systemBlueColor>; gestureRecognizers = <NSArray: 0x6000012e56b0>; animations = { backgroundColor=<CABasicAnimation: 0x600001cd2080>; }; layer = <CALayer: 0x600001c23bc0>>


Request: Add generation time stats to dream_log

The log right now is useful for recovering filenames and prompts, but some other stats, mainly generation time, would be useful for optimizing # of steps/time cost/computer cost in relation to desired image output quality.

Sure.  Please aggregate your ideas and we’ll get them done all at once.


[FLINK-10936][kubernetes] Implement Kubernetes command line tools to support session cluster.

What is the purpose of the change
Implement Kubernetes command line tools to support session cluster. The FlinkKubernetesCustomCli will be added to customCommandLines of CliFrotend. The cli will support the following options.
This PR is based on #9957 #9965 #9973 #9984 #9985 #9986.
  Options for kubernetes-cluster mode:
     -d,--detached                              If present, runs the job in
                                                detached mode
     -kD <property=value>                       use value for given property
     -kh,--kuberneteshelp                       Help for Kubernetes session CLI.
     -ki,--kubernetesimage <image-name>         Image to use for Flink
                                                containers.
     -kid,--kubernetesclusterId <arg>           The cluster id that will be used
                                                for flink cluster. If it's not
                                                set, the client will generate a
                                                random UUID name.
     -kjm,--kubernetesjobManagerMemory <arg>    Memory for JobManager Container
                                                with optional unit (default: MB)
     -ks,--kubernetesslots <arg>                Number of slots per TaskManager
     -ktm,--kubernetestaskManagerMemory <arg>   Memory per TaskManager Container
                                                with optional unit (default: MB)

Brief change log

Add FlinkKubernetesCustomCli
Update CliFrontend to support kubernetes

Verifying this change

This PR is covered by unit test

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicable)

@TisonKun Could you please take a look?

Prerequisite merged. Please rebase and squash the commits.

@TisonKun @zhuzhurk  Thanks a lot for your review. I have rebased the master branch.

@TisonKun Travis has passed.
https://travis-ci.org/wangyang0918/flink/builds/622252039


Review of the tutorial

I quickly went through the tutorial, seems really neat!
Cool to see this working in so few keystrokes.
Added a few notes throughout to things that concerned me.
Also when I queried the dataset state originally I got:
[
    {
        "dataset_id": "6b71ef86-0bd7-4404-b051-53380656e6f2",
        "maximum_size":<PHONE_NUMBER>0,
        "path": "/flocker/6b71ef86-0bd7-4404-b051-53380656e6f2",
        "primary": "9574ae5b-da9f-43f8-b3ae-d7ba9d104138"
    },
    {
        "dataset_id": "6b71ef86-0bd7-4404-b051-53380656e6f2",
        "maximum_size":<PHONE_NUMBER>0
    }
]

Might be a driver bug or a flocker bug... but didn't seem to affect the functionality of the cluster. (there was only 1 real dataset, and the phantom second dataset disappeared after moving it to the new node).

Thanks @sarum90.
The phantom dataset actually is the same dataset UUID and size as the one that's mounted. Which tells me there is probably only one volume. Maybe this could be a bug in flocker, idk how the driver how make that happen.

LGTM


data class *ViewState over sealed class for *ViewState

Is there any concern why using data class RecipeViewState instead of using sealed class RecipeViewState?
Equivalent to your existing code using sealed class
sealed class RecipeViewState : ViewState {
 object Loading : RecipeViewState()
 object Refreshing : RecipeViewState()
 data class LoadedRecipes(val recipes: List<RecipeModel>) : RecipeViewState()
 data class LikedRecipe(val recipe: RecipeModel) : RecipeViewState() // adding a new state for liked item
 data class Error(val error: String?, val errorEvent: ViewEvent<String>?, val isEmpty: Boolean) // Unavailable, No data or empty etc
}

// in Fragment
// instead of:
    override fun render(state: RecipeViewState) {
        when {
            state.isDataUnavailable -> binding.renderEmptyState(state)
            state.isDataAvailableError -> binding.renderDataAvailableErrorState(state)
            state.isNoDataError -> binding.renderNoDataErrorState(state)
            state.isLoading -> binding.renderLoadingState()
            state.isRefreshing -> binding.renderRefreshState()
            else -> binding.renderSuccessState(state)
        }
    }

// modifed to:

    override fun render(state: RecipeViewState) {
        when (state) {
            is Error -> {
                if (state.error != null) binding.renderNoDataErrorState(state)
                if (state.errorEvent != null) binding.renderDataAvailableErrorState(state)
                if (state.isEmpty) binding.renderEmptyState(state)
            }
            Loading -> binding.renderLoadingState()
            Refreshing -> binding.renderRefreshState()
            is LikedRecipe -> binding.renderLikedState(state)
            is LoadedRecipes -> binding.renderSuccessState(state)
            // no else branch
        }
    }

Pros:

No need manually override every property/member of RecipeViewState using .copy with a new state
No else branch in override fun render
No need configuring a lot of function/method to determine state inside RecipeViewState, e.g for current approach: val *state: RecipeViewState get() = /* this.copy(isLoading = false, etc) */

@Ezike

Is there any concern why using data class RecipeViewState instead of using sealed class RecipeViewState?
Equivalent to your existing code using sealed class
sealed class RecipeViewState : ViewState {
 object Loading : RecipeViewState()
 object Refreshing : RecipeViewState()
 data class LoadedRecipes(val recipes: List<RecipeModel>) : RecipeViewState()
 data class LikedRecipe(val recipe: RecipeModel) : RecipeViewState() // adding a new state for liked item
 data class Error(val error: String?, val errorEvent: ViewEvent<String>?, val isEmpty: Boolean) // Unavailable, No data or empty etc
}

// in Fragment
// instead of:
    override fun render(state: RecipeViewState) {
        when {
            state.isDataUnavailable -> binding.renderEmptyState(state)
            state.isDataAvailableError -> binding.renderDataAvailableErrorState(state)
            state.isNoDataError -> binding.renderNoDataErrorState(state)
            state.isLoading -> binding.renderLoadingState()
            state.isRefreshing -> binding.renderRefreshState()
            else -> binding.renderSuccessState(state)
        }
    }

// modifed to:

    override fun render(state: RecipeViewState) {
        when (state) {
            is Error -> {
                if (state.error != null) binding.renderNoDataErrorState(state)
                if (state.errorEvent != null) binding.renderDataAvailableErrorState(state)
                if (state.isEmpty) binding.renderEmptyState(state)
            }
            Loading -> binding.renderLoadingState()
            Refreshing -> binding.renderRefreshState()
            is LikedRecipe -> binding.renderLikedState(state)
            is LoadedRecipes -> binding.renderSuccessState(state)
            // no else branch
        }
    }

Pros:

No need resetting RecipeViewState using .copy for every `RecipeViewState)
No else branch in override fun render

@Ezike

I'm not even sure why I used a data class anymore, but I remember I needed the list of recipes in a lot of the view states, so I thought I'd just use one class instead of many classes that take the recipe list as a parameter..
Also using copy isn't resetting the viewstate, it's making a new viewstate just like yours does.
They're all good approaches. I also wouldn't use one Error state for empty, unavailable, and unavailable if I'm using a sealed class. Then you'd need to keep passing default values for those arguments.

Also using copy isn't resetting the viewstate, it's making a new viewstate just like yours does.

Thanks for clarifying! *I've corrected my description

I'm not even sure why I used a data class anymore, but I remember I needed the list of recipes in a lot of the view states, so I thought I'd just use one class instead of many classes that take the recipe list as a parameter..

I see, it's a matter of preference, then~

Nice conversation you've got going here, there are situations where you'd want to use copy, for example when you want to reuse data from a previous state.
A concrete example of this is if you had a paged list of recipes and you wanted to append a new batch of recipes to the existing data in the list. So you'd essentially have to append the new data to the existing list, then make a new copy of the viewstate while replacing the old list with your new updated list like this:
var currentRecipeList = state.recipeList currentRecipeList.toMutableList().append(newRecipeList()) newState = state.copy(recipeList = newRecipeList)
That's a reason why I frequently use data classes instead of sealed classes to model State. Haven't yet found a cleaner approach. I'd gladly take suggestions however.

Nice conversation you've got going here, there are situations where you'd want to use copy, for example when you want to reuse data from a previous state.
A concrete example of this is if you had a paged list of recipes and you wanted to append a new batch of recipes to the existing data in the list. So you'd essentially have to append the new data to the existing list, then make a new copy of the viewstate while replacing the old list with your new updated list like this:
var currentRecipeList = state.recipeList currentRecipeList.toMutableList().append(newRecipeList()) newState = state.copy(recipeList = newRecipeList)
That's a reason why I frequently use data classes instead of sealed classes to model State. Haven't yet found a cleaner approach. I'd gladly take suggestions however.
Sorry guys, I don't know how to make a new line appear within code snippets.

Definitely, that makes sense. With sealed classes, you'd need to do a type check to achieve a similar behavior since not all the sub classes have the list as a property. You'd need to check if the previous state was a success state before gaining access to the old list..
Data classes are better for such cases


Updates broken for user: "unexpected error"

Describe the bug

go to the updates
click on “Create an Update”
taken to the updates page in a broken state, screenshot below.
Looks like a library for doing Markdown Editing is broken

Screenshots

Additional context
https://opencollective.freshdesk.com/a/tickets/388

@alanna With the steps provided, I can't reproduce this issue.
It's missing the collective, the environment (browser, os). The screenshot is unreadable. There is no more additional context in the linked support ticket.

Just ask the user for the info you need. It's inefficient for you to
explain to partially explain to me and then I partially explain to them and
we'll play telephone.
On Thu, May 23, 2019, 18:32 François Hodierne<EMAIL_ADDRESS>wrote:

@alanna https://github.com/alanna With the steps provided, I can't
reproduce this issue.
It's missing the collective, the environment (browser, os). The screenshot
is unreadable. There is no more additional context in the linked support
ticket.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/opencollective/opencollective/issues/2059?email_source=notifications&email_token=ABJ6P7WV4ZPLCAQFRSZCO4LPWY26LA5CNFSM4HOZICZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWBGTDQ#issuecomment-495085966,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABJ6P7TVMLYPNH3IZEHJZHTPWY26LANCNFSM4HOZICZA
.

@alanna Ok, then closing this issue as invalid and handling that on support side.


Handling of objective function evaluation in Regularized Evolution script

Hi,
This is wrt fcnet_tabular_benchmarks.
The Regularized Evolution script evaluates accuracy by subtracting the objective_function() evaluation from 1.
However, for certain benchmarks the MSE returned is greater than 1, which can make the accuracy negative. Is this evaluation correct?
Accuracies are computed here and here.
One way to verify this may be so:

b = FCNetSliceLocalizationBenchmark(data_dir)
cs = b.get_configuration_space()
for i in range(1000):
     config = cs.sample_configuration()
     value, _ = b.objective_function(config)
     if value > 1:
         print(config)
         break
for i in range(6):
    value, _ = b.objective_function(config)
    print(1 - value)

Good catch. It should be probably just -y instead of 1-y since RE is maximizing, even better would be to change it completely such that it minimizes the objective function. However, I don't think that changes anything on the results. Could you send a PR to fix that?


Added a register

a registration form with input fields for username, password, and confirmation, along with corresponding state variables to manage their values. The component uses the useNavigate hook from react-router-dom to handle navigation.
The registerUser function is triggered when the registration form is submitted. It sends a POST request to a server endpoint for user registration using Axios


Update AzureMobileServicesClient.d.ts

missing invokeApi method.
Login method is incorrect. token argument should be wrapped in an object

close the PR because this is too old.


Fix for applying 'mode' option using 'chmod' command.

Add chmod command with -R option, when set mode option in yaml.

THX


main: set SilenceErrors to avoid doule error printing

We handle the errors ourselfs in bootc-image-builder but there was a setting missing which lead to double prints:
$ go build && sudo ./bootc-image-builder manifest quay.io/fedora/fedora-bootc:40
Error: cannot generate manifest: cannot get rootfs type for container: container does not include a default root filesystem type
2024/06/24 10:26:42 error: cannot generate manifest: cannot get rootfs type for container: container does not include a default root filesystem type

This commit fixes this and adds a test:
$ go build && sudo ./bootc-image-builder manifest quay.io/fedora/fedora-bootc:40
2024/06/24 10:43:38 error: cannot generate manifest: cannot get rootfs type for container: container does not include a default root filesystem type

There's a typo in the commit message.  Mind fixing it? :)


Update examples

Many breaking changes happened, and most examples might be broken. They should be updated

Documentation should also be updated accordingly and new relevant examples added


[NVIDIA SMI] Load NVIDIA Driver

There seems to be version where we need to start and load nvdia module and some which does self load.
root@xxxxxxx:~/driver_384_36# ./load_driver.sh -m
Using 'file' from '/usr/bin/file'
Using 'setpci' from '/usr/bin/setpci'
Using 'patch' from '/usr/bin/patch'
Using 'lspci' from '/usr/bin/lspci'
Using 'make' from '/usr/bin/make'
Using 'gcc' from '/usr/bin/gcc'
Using 'numactl' from '/usr/bin/numactl'
~/driver_384_36 ~/driver_384_36
/root/driver_384_36

==> Unloading NVIDIA drivers
rmmod: ERROR: Module nvidia_uvm is not currently loaded
rmmod: ERROR: Module nvidia is not currently loaded
rmmod: ERROR: Module mods is not currently loaded

==> Found existing NVIDIA drivers built for 4.11.0-041100rc4-generic

==> WARNING: hot_reset.sh not supported (MUST reboot to re-load driver)

==> Loading NVIDIA drivers
+ '[' 1 -eq 1 ']'
++ uname -r
+ insmod nvidia-4.11.0-041100rc4-generic.ko 'NVreg_RegistryDwords=RMNvLinkSpeedControl=0x3;NvLinkSelectAtomicsConfig=0x1;' NVreg_RmMsg=nvlink
++ uname -r
+ insmod nvidia-uvm-4.11.0-041100rc4-generic.ko uvm8_ats_mode=1 uvm_enable_builtin_tests=1
+ set +x

==> Dumping nvidia kernel module addresses
nvidia_uvm 893456 0 - Live 0xc008000071aa0000 (POE)
nvidia 16158400 1 nvidia_uvm, Live 0xc0080000707c0000 (POE)

==> Reporting NVIDIA GPUs

Running: lspci -v -d 10de:
0004:04:00.0 3D controller: NVIDIA Corporation Device 1dbd (rev a1)
        Subsystem: NVIDIA Corporation Device 1213
        Flags: bus master, fast devsel, latency 0, IRQ 74
        Memory at 600c201000000 (32-bit, non-prefetchable) [size=16M]
        Memory at<PHONE_NUMBER>000 (64-bit, prefetchable) [size=16G]
        Memory at<PHONE_NUMBER>000 (64-bit, prefetchable) [size=32M]
        Capabilities: [60] Power Management version 3
        Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [78] Express Endpoint, MSI 00
        Capabilities: [100] Virtual Channel
        Capabilities: [250] Latency Tolerance Reporting
        Capabilities: [258] L1 PM Substates
        Capabilities: [128] Power Budgeting <?>
        Capabilities: [420] Advanced Error Reporting
        Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
        Capabilities: [900] #19
        Capabilities: [ac0] #23
        Kernel driver in use: nvidia
        Kernel modules: nvidiafb, nouveau

==> Starting NVIDIA driver in persistance mode
Using 'nvidia-smi' from '/usr/bin/nvidia-smi'

Running: nvidia-smi -pm 1
Enabled persistence mode for GPU 0004:04:00.0.
All done.

==> Printing system component versions
    VBIOS Version                   : <IP_ADDRESS>.03
[<PHONE_NUMBER>36,5] SkiBoot skiboot-5.6.0-64-g700b8962e5fe-p0ca83c4 starting...

==> Running sanity tests

Running: CUDA_IGNORE_GET_CLOCK_FAILURE=1 CUDA_DISABLE_UNIFIED_MEMORY=1 ./acos
^^^^ elapsed = 0.00009799 sec  Gfuncs/sec=5.10256e-05
#### args: x= 6.572780853e-15 (27eccf34)
@@@@ total errors: 0
#### args: x= 3.113568292e-10 (2fab2b94)
@@@@ total errors: 0
#### args: x=-1.104757952e-10 (aef2f058)
@@@@ total errors: 0
#### args: x=-5.300865087e-05 (b85e559b)
@@@@ total errors: 0
#### args: x=-3.444705236e-38 (813b8c2f)
@@@@ total errors: 0
^^^^ ulperr: [0]=4  [1]=1  [2]=0  [3]=0
&&&& acos test PASSED

Running: CUDA_IGNORE_GET_CLOCK_FAILURE=1 ./acos
^^^^ elapsed = 0.00010490 sec  Gfuncs/sec=4.76625e-05
#### args: x= 6.572780853e-15 (27eccf34)
@@@@ total errors: 0
#### args: x= 3.113568292e-10 (2fab2b94)
@@@@ total errors: 0
#### args: x=-1.104757952e-10 (aef2f058)
@@@@ total errors: 0
#### args: x=-5.300865087e-05 (b85e559b)
@@@@ total errors: 0
#### args: x=-3.444705236e-38 (813b8c2f)
@@@@ total errors: 0
^^^^ ulperr: [0]=4  [1]=1  [2]=0  [3]=0
&&&& acos test PASSED

Running: CUDA_IGNORE_GET_CLOCK_FAILURE=1 ./cuda_legacy_sanity --verbose
pid: 1864; repro cmd: cuda_legacy_sanity --verbose --seed<PHONE_NUMBER>
Running on GPU { GV100GL-A  db9d8129-9923-b706-e508-e9ffcf0965f4 CUDA ID  0 }
Initial data (first line), then final data (second line): (host_initial_ptr: 0x1a7f2670)
    pppppppppp
    qqqqqqqqqq
&&&& cuda_legacy_sanity test PASSED

Running: ./topologyQuery
GPU0 <-> CPU:
  * Link type: Nvlink 2
  * Bandwidth: 75000 mbps
  * Atomic Supported: yes
&&&& topologyQuery test PASSED

Running: ./cuP2P 0 1
There are 1 devices.
Testing between device 0 and 0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0
Loopback is not supported for device 0.
&&&& cuP2P test WAIVED

Running: ./cuP2P 0 2
There are 1 devices.
Testing between device 0 and 0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0
Loopback is not supported for device 0.
&&&& cuP2P test WAIVED

Running: ./cuP2P 1 2
There are 1 devices.
Testing between device 0 and 0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0
Loopback is not supported for device 0.
&&&& cuP2P test WAIVED

Running: ./cuP2P 3 4
There are 1 devices.
Testing between device 0 and 0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0
Loopback is not supported for device 0.
&&&& cuP2P test WAIVED

Running: ./cuP2P 3 5
There are 1 devices.
Testing between device 0 and 0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0
Loopback is not supported for device 0.
&&&& cuP2P test WAIVED

Running: ./cuP2P 4 5
There are 1 devices.
Testing between device 0 and 0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0

Device 0: "Graphics Device"
  CUDA Capability Major revision number:         7
  CUDA Capability Minor revision number:         0
Loopback is not supported for device 0.
&&&& cuP2P test WAIVED
~/driver_384_36
root@xxxxx:~/driver_384_36# nvidia-smi
Thu Jun 22 12:34:49 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.36                 Driver Version: 384.36                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Graphics Device     On   | 0004:04:00.0     Off |                    0 |
| N/A   21C    P0    36W / 300W |      0MiB / 16152MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

@gkeishin can we pass this to Steven Sombar.?

Yeah.. this is just a placeholder opened so that they can start writing code for it.

Largely manual to update the combo for GPU NVIDIA driver + RHEL + CUDA.


Fix tolerated http errors to work with sdk >= 0.3.14

The upgrade to singer-sdk >= 0.3.14 breaks the way this tap works with tolerated_http_errors. The logic for this should be modified to allow using the latest sdk.

Fixed in #39 where I upgraded the sdk


PowerToys Run support for other partitions

Summary of the new feature/enhancement
I can only search for files or applications under C disk now，if I want to search a file in the other partition I can't use the PowerToys Run to search,so I hope the PowerToys Run can support for other partitions to search .
Proposed technical implementation details (optional)

hi @ShiZiLaiXi , we're working on this here:  #4438


Update MySensors.MySGW return for state map

init returned port for the state, but in the terminate
it is attempting to use state.port if it existed.
Instead of changing terminate to just look for the port as
the state, this updates the setup of the state to not just
be the port, as it allows it to be more extensible in the
future.

Need to do some further testing on this, as I only have my MacBook on me at this point, and it won't build mysensors when doing a mix compile as it fails due to linux/sockios.h not being present.
drivers/Linux/EthernetClient.cpp:26:10: fatal error: 'linux/sockios.h' file not found
#include <linux/sockios.h>
         ^~~~~~~~~~~~~~~~~
1 error generated.

Good catch on this. This project will not compile on OSX as far as i know. This project mostly wraps the MySensors upstream code, and is made to work on linux via its spidev api. I built this specifically for Nerves with RPI devices, and it handles all the cross compilation and what not. It would probably be nice to document that in the readme or a compiler error.


Suggestion/Question: Forwarding multiple ports?

Hey! Last update seems to have been a while ago so I don't know if you're still developing this, but I was trying to use this for my 1.20.1 SMP to play with my friends and I have Bluemap and Simple Voice Chat.
I noticed that it says Forwarded Port: 25565 in the console, which is a problem because Bluemap and SVC are on seperate ports from 25565 (Simple Voice Chat is on port 24454, Bluemap is on port 8100)
Is there a way to forward multiple ports? Would that even be possible, and if so, would the server owner need a custom domain?

Coming in the next version :)


TextField has no onKeyPress

Would really like to use the enter key in text fields, but the bindings offer no onKeyPress prop.

@fhammerschmidt The onKeyPress prop is not supported directly by MaterialUI as it seems (it doesn't even get passed on!)
You can do this though:
MaterialUi.(
  <div>
    <input onKeyPress={e => Js.log(e)} />
    <TextField
      fullWidth=true
      inputProps={
        "onKeyPress": (e: ReactEvent.Keyboard.t) => Js.log(e),
      }
    />
  </div>
)


Update theme

There is a tiny issue (https://github.com/scientific-python/scientific-python-hugo-theme/issues/130) that I noticed and I have a fix for it (https://github.com/scientific-python/scientific-python-hugo-theme/pull/131).

Ark indeed, I really did not see it! I went to all pages and missed that 😅


riot-desktop: use own yarn2nix

Motivation for this change
Use our own copy of yarn2nix as that package is being removed (#58424).
github ref: closes #58593
CC: @worldofpeace
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

I don't think vendoring moretea/yarn2nix this is the right approach.
Can't you just use https://github.com/Profpatsch/yarn2nix and the required dependencies in a nix expression?
I guess @Profpatsch will gladly help in case you encounter issues with using that :-)

@flokli wrote:

I don't think vendoring moretea/yarn2nix this is the right approach.
Can't you just use https://github.com/Profpatsch/yarn2nix and the required dependencies in a nix expression?
I guess @Profpatsch will gladly help in case you encounter issues with using that :-)

Wouldn't it be the same?
From https://github.com/Profpatsch/yarn2nix#using-the-generated-nix-files-to-build-a-project:
  nixLib = pkgs.callPackage /path/to/yarn2nix/nix-lib {
    # WARNING (TODO): for now you need to use this checked out yarn2nix
    # because the upstream package (in haskellPackages) might have
    # broken dependencies (yarn-lock and yarn2nix are not in stackage)

Thanks @pacien for following up so quickly.

Wouldn't it be the same?
From https://github.com/Profpatsch/yarn2nix#using-the-generated-nix-files-to-build-a-project:

Yeah that sounds identical to what's done here. Though I'm not familiar with these tools, so my opinion won't be influential.

Yeah, it’s essentially the same. If yarn2nix already works for you, vendoring might be the best solution for now. If you want to try packaging it with Profpatsch/yarn2nix,

@Profpatsch wrote:

[…] I could think about upstreaming my library to nixpkgs & make it beta. Next problem: I use hnix which is regularly broken sadly :(

If that's not possible, I think it would be very nice to have at least a common yarn2nix/nix-lib somewhere in nixpkgs. This would help a lot on its own.

yarn2nix/nix-lib somewhere in nixpkgs

At least for my implementation, the library is bound to the version of the tool (because changes normally propagate though to the library). Bear in mind that nomeata/yarn2nix and Profpatsch/yarn2nix only share their name, but are not compatible in any way.

So I'm not seeing anything raised that @pacien can make an action on, so I'm partial to this being merged.
If I don't get a counterargument in a couple of days I will merge this.


Firebase 6.7.0 crash hard_assert_apple.mm line 34

Xcode version: 10.3.
Firebase SDK version: 6.7.0
Firebase Component: Firestore, Messaging
Component version:
Core-6.2.1
Firestore-1.4.4

I've updated to firebase 6.7.0 from 6.6.0 due another crash, which was fixed in #3623  .
But in 6.7.0 there is a new crash from fabric reporting:
Fatal Exception: NSInternalInconsistencyException
FIRESTORE INTERNAL ASSERTION FAILED: Expected to be called by the executor associated with this queue (expected executor: 'com.google.firebase.firestore', actual executor: 'com.apple.main-thread') (expected executor_->IsCurrentExecutor())

@Banck Thanks for the report. This looks like a duplicate of #3661 that was fixed in a Firestore patch update yesterday. Please run pod update to get the FirebaseFirestore 1.4.5 pod.


Keep showing properties with no key frames

I would like to keep showing properties with no key frames, so the user can add key frames to the property which does not have key frames at the beginning. This change is already in my branch, but I opened this issue to hear the opinion, because this change would affect the existing project using this library.
https://github.com/thorikawa/TweenTime/commit/baea2b27b9874bd000e7e354a6b9484dc6fa59b4
@idflood Any opinion?

Could we make this optional like:
var editor = new TweenTime.Editor(tweenTime, {showEmptyProperties: true});

What do you think?

That sounds good to me. I will make PR for it.


Run MIRNet and get Segment Fault on Raspberry Pi Model 3B

Run MIRNet and get Segment Fault on Raspberry Pi Model 3B.
The tflite model I used is from dynamic_shape and named mirnet_dr.tflite.
Following is the error info from my binary built from our repo:
#0  0x003648dc in ruy::TrMul(ruy::Ctx*, ruy::TrMulParams*) ()
#1  0x0035fd84 in ruy::MulFrontEndFromTrMulParams(ruy::Ctx*, ruy::TrMulParams*) ()
#2  0x00095c84 in void ruy::MulFrontEnd<(ruy::Path)17, signed char, signed char, int, int>(ruy::Mat<signed char> const&, ruy::Mat<signed char> const&, ruy::MulParams<int, int> const&, ruy::Ctx*, ruy::Mat<int>*) ()
#3  0x00091918 in void ruy::Mul<(ruy::Path)17, signed char, signed char, int, int>(ruy::Matrix<signed char> const&, ruy::Matrix<signed char> const&, ruy::MulParams<int, int> const&, ruy::Context*, ruy::Matrix<int>*) ()
#4  0x0033ba00 in tflite::tensor_utils::NeonCpuBackendGemm(signed char const*, int const*, signed char const*, int, int, int, int, int*, tflite::CpuBackendContext*) ()
#5  0x0033ba88 in tflite::tensor_utils::NeonMatrixBatchVectorMultiplyAccumulate(signed char const*, int, int, signed char const*, float const*, int, int*, float*, tflite::CpuBackendContext*) ()
#6  0x000f0c74 in tflite::optimized_ops::HybridConv(tflite::ConvParams const&, float*, tflite::RuntimeShape const&, signed char const*, tflite::RuntimeShape const&, signed char const*, tflite::RuntimeShape const&, float const*, tflite::RuntimeShape const&, int*, tflite::RuntimeShape const&, float*, tflite::RuntimeShape const&, signed char*, tflite::CpuBackendContext*) ()
#7  0x001088c4 in TfLiteStatus tflite::ops::builtin::conv::EvalHybrid<(tflite::ops::builtin::conv::KernelType)2>(TfLiteContext*, TfLiteNode*, TfLiteConvParams*, tflite::ops::builtin::conv::OpData*, TfLiteTensor const*, TfLiteTensor const*, TfLiteTensor const*, TfLiteTensor*, TfLiteTensor*, TfLiteTensor*) ()
#8  0x000fe188 in TfLiteStatus tflite::ops::builtin::conv::EvalImpl<(tflite::ops::builtin::conv::KernelType)2, (TfLiteType)1>(TfLiteContext*, TfLiteNode*) ()
#9  0x000f68dc in TfLiteStatus tflite::ops::builtin::conv::Eval<(tflite::ops::builtin::conv::KernelType)2>(TfLiteContext*, TfLiteNode*) ()
#10 0x00391c6c in tflite::Subgraph::OpInvoke(TfLiteRegistration const&, TfLiteNode*) ()
#11 0x0038e940 in tflite::Subgraph::Invoke() ()
#12 0x0039e354 in tflite::Interpreter::Invoke() ()
#13 0x0001ff24 in mirnet::MIRNet::RunInference(cv::Mat const&, cv::Mat&) ()
#14 0x00020188 in mirnet::MIRNet::EnhanceImage(cv::Mat const&, cv::Mat&) ()
#15 0x0001c5d0 in main ()

BTW, it also was crash with minimal.cc examples from tflite repo, please take a check.
Thanks.

@multiverse-tf @wangtz @renjie-liu, Hi all, anyone can give me a hand on it?

The version of our repo got crash is commit 08cb572f383044dbf96e1cdd657b5c1229a67e34.

@SunAriesCN
Please share a simple stand alone code for us to replicate the issue reported, or share a colab gist.

@Saduf2019
Hi, Saduf
You can just go to our repo I mentioned, that is with link, and run the build_hello_world.sh.
You will get a binary on bazel-out/armhf-fastbuild/bin/examples/hello_world directory named hello_world.
And you just place it on a RPI platform, and run it with the following instructions:
$ ./hello_wolrd mirnet_dr.tflite

Then you may get a segment fault, and when you use gdb on RPI to check it, the above logs will come out.
The mirnet_dr.tflite is in the zip here, it's easy to download and find.
Thanks for your reply.

@Saduf2019
Hi, Saduf
You can just go to our repo I mentioned, that is with link, and run the build_hello_world.sh.
You will get a binary on bazel-out/armhf-fastbuild/bin/examples/hello_world directory named hello_world.
And you just place it on a RPI platform, and run it with the following instructions:
$ ./hello_wolrd mirnet_dr.tflite

Then you may get a segment fault, and when you use gdb on RPI to check it, the above logs will come out.
The mirnet_dr.tflite is in the zip here, it's easy to download and find.
Thanks for your reply.

BTW, the hello_wolrd we build with, are just the same codes from minimal.cc in TFLite. I think it's a little bit easy for one to reproduce this crash.

@Saduf2019
Hi, Saduf
You can just go to our repo I mentioned, that is with link, and run the build_hello_world.sh.
You will get a binary on bazel-out/armhf-fastbuild/bin/examples/hello_world directory named hello_world.
And you just place it on a RPI platform, and run it with the following instructions:
$ ./hello_wolrd mirnet_dr.tflite

Then you may get a segment fault, and when you use gdb on RPI to check it, the above logs will come out.
The mirnet_dr.tflite is in the zip here, it's easy to download and find.
Thanks for your reply.

BTW, the hello_wolrd we build with, are just the same codes from minimal.cc in TFLite. I think it's a little bit easy for one to reproduce this crash.

And I'm really sorry about our English README_EN.md is not obvious enough that may confused you, here is our README_EN.md in English version.

@SunAriesCN
Please update the tf version used.

Run MIRNet and get Segment Fault on Raspberry Pi Model 3B.
The tflite model I used is from dynamic_shape and named mirnet_dr.tflite.
Following is the error info from my binary built from our repo:
#0  0x003648dc in ruy::TrMul(ruy::Ctx*, ruy::TrMulParams*) ()
#1  0x0035fd84 in ruy::MulFrontEndFromTrMulParams(ruy::Ctx*, ruy::TrMulParams*) ()
#2  0x00095c84 in void ruy::MulFrontEnd<(ruy::Path)17, signed char, signed char, int, int>(ruy::Mat<signed char> const&, ruy::Mat<signed char> const&, ruy::MulParams<int, int> const&, ruy::Ctx*, ruy::Mat<int>*) ()
#3  0x00091918 in void ruy::Mul<(ruy::Path)17, signed char, signed char, int, int>(ruy::Matrix<signed char> const&, ruy::Matrix<signed char> const&, ruy::MulParams<int, int> const&, ruy::Context*, ruy::Matrix<int>*) ()
#4  0x0033ba00 in tflite::tensor_utils::NeonCpuBackendGemm(signed char const*, int const*, signed char const*, int, int, int, int, int*, tflite::CpuBackendContext*) ()
#5  0x0033ba88 in tflite::tensor_utils::NeonMatrixBatchVectorMultiplyAccumulate(signed char const*, int, int, signed char const*, float const*, int, int*, float*, tflite::CpuBackendContext*) ()
#6  0x000f0c74 in tflite::optimized_ops::HybridConv(tflite::ConvParams const&, float*, tflite::RuntimeShape const&, signed char const*, tflite::RuntimeShape const&, signed char const*, tflite::RuntimeShape const&, float const*, tflite::RuntimeShape const&, int*, tflite::RuntimeShape const&, float*, tflite::RuntimeShape const&, signed char*, tflite::CpuBackendContext*) ()
#7  0x001088c4 in TfLiteStatus tflite::ops::builtin::conv::EvalHybrid<(tflite::ops::builtin::conv::KernelType)2>(TfLiteContext*, TfLiteNode*, TfLiteConvParams*, tflite::ops::builtin::conv::OpData*, TfLiteTensor const*, TfLiteTensor const*, TfLiteTensor const*, TfLiteTensor*, TfLiteTensor*, TfLiteTensor*) ()
#8  0x000fe188 in TfLiteStatus tflite::ops::builtin::conv::EvalImpl<(tflite::ops::builtin::conv::KernelType)2, (TfLiteType)1>(TfLiteContext*, TfLiteNode*) ()
#9  0x000f68dc in TfLiteStatus tflite::ops::builtin::conv::Eval<(tflite::ops::builtin::conv::KernelType)2>(TfLiteContext*, TfLiteNode*) ()
#10 0x00391c6c in tflite::Subgraph::OpInvoke(TfLiteRegistration const&, TfLiteNode*) ()
#11 0x0038e940 in tflite::Subgraph::Invoke() ()
#12 0x0039e354 in tflite::Interpreter::Invoke() ()
#13 0x0001ff24 in mirnet::MIRNet::RunInference(cv::Mat const&, cv::Mat&) ()
#14 0x00020188 in mirnet::MIRNet::EnhanceImage(cv::Mat const&, cv::Mat&) ()
#15 0x0001c5d0 in main ()

BTW, it also was crash with minimal.cc examples from tflite repo, please take a check.
Thanks.

Sorry for the late reply. I also had a segfault issue recently with a very similar stack trace. And it turned out to be caused by an int overflow when handling very large tensors in the RUY library. A fix is WIP. After it's pushed, pls patch it and see if this happened again or not.

Hi all, any good news for it?

The fix I mentioned earlier was pushed 3 days ago in the RUY repo (https://github.com/google/ruy/commit/54774a7a2cf85963777289193629d4bd42de4a59). Could you try to patch it and see whether it fixes the crash or not? Thx!

Well cool, I think TensorFlow(tensorflow/tensorflow@f779f42) could be easier for me to check, isn't it?

The fix I mentioned earlier was pushed 3 days ago in the RUY repo (google/ruy@54774a7). Could you try to patch it and see whether it fixes the crash or not? Thx!

Well cool, I think TensorFlow(tensorflow/tensorflow@f779f42) could be easier for me to check, isn't it?

Indeed!

The fix I mentioned earlier was pushed 3 days ago in the RUY repo (google/ruy@54774a7). Could you try to patch it and see whether it fixes the crash or not? Thx!

Btw, as the model has dynamic shape, what's the proper input layer shape to be specified when running the inference? I am just wondering if the fix could be verified by the benchmark model tool which supports specifying input layer name and its shape.

Well cool, I think TensorFlow(tensorflow/tensorflow@f779f42) could be easier for me to check, isn't it?

Indeed!

The fix I mentioned earlier was pushed 3 days ago in the RUY repo (google/ruy@54774a7). Could you try to patch it and see whether it fixes the crash or not? Thx!

Emmmm....I think this fix can be checked by the hello world example, because I have ever got the similar crash with that tool.

Btw, as the model has dynamic shape, what's the proper input layer shape to be specified when running the inference? I am just wondering if the fix could be verified by the benchmark model tool which supports specifying input layer name and its shape.

Well cool, I think TensorFlow(tensorflow/tensorflow@f779f42) could be easier for me to check, isn't it?

Indeed!

The fix I mentioned earlier was pushed 3 days ago in the RUY repo (google/ruy@54774a7). Could you try to patch it and see whether it fixes the crash or not? Thx!

Emmmm....I think this fix can be checked by the hello world example, because I have ever got the similar crash with that tool.

I just checked the mirnet_dr.tflite model with the minimal binary w/ the patch. The binary still crashed with segfault. But the stack trace is quite different as shown below:
#0  tflite::tensor_utils::NeonSymmetricQuantizeFloats (values=0x0, size=0, quantized_values=0x0, min=0x7fffffffd458, max=0x7fffffffd454, scaling_factor=0x0)
at tensorflow/lite/kernels/internal/optimized/neon_tensor_utils.cc:2293
#1  0x00005555559324f6 in tflite::ops::builtin::conv::EvalHybrid<(tflite::ops::builtin::conv::KernelType)2> (context=0x57a83fc887c8, node=0x57a83fcdcce0,
params=0x57a83fc014c0, data=0x57a83fd0e9c0, input=0x57a83fd3d680, filter=0x57a83fd27e30, bias=0x57a83fd359d0, im2col=0x0, accum_scratch=0x57a83fd6f020,
output=0x57a83fd3d6f0) at tensorflow/lite/kernels/conv.cc:949
#2  0x00005555559315ae in tflite::ops::builtin::conv::EvalImpl<(tflite::ops::builtin::conv::KernelType)2, (TfLiteType)1> (context=0x57a83fc887c8, node=0x57a83fcdcce0)
at tensorflow/lite/kernels/conv.cc:1027
#3  0x00005555558b01f9 in tflite::ops::builtin::conv::Eval<(tflite::ops::builtin::conv::KernelType)2> (context=0x57a83fc887c8, node=0x57a83fcdcce0)
at tensorflow/lite/kernels/conv.cc:1064
#4  0x0000555555bfc4ed in tflite::Subgraph::OpInvoke (this=0x57a83fc887a0, op_reg=..., node=0x57a83fcdcce0) at /tensorflow/lite/core/subgraph.h:427
#5  0x0000555555bf98a3 in tflite::Subgraph::Invoke (this=0x57a83fc887a0) at tensorflow/lite/core/subgraph.cc:1070
#6  0x0000555555c062d9 in tflite::Interpreter::Invoke (this=0x57a83fc86380) at tensorflow/lite/interpreter.cc:284
#7  0x00005555557f2b21 in main (argc=2, argv=0x7fffffffd9b8) at tensorflow/lite/examples/minimal/minimal.cc:70
I guess we probably need to specify proper input shape to make the model inference run, and this is why I suggested using the benchmark model earlier.

Btw, as the model has dynamic shape, what's the proper input layer shape to be specified when running the inference? I am just wondering if the fix could be verified by the benchmark model tool which supports specifying input layer name and its shape.

Well cool, I think TensorFlow(tensorflow/tensorflow@f779f42) could be easier for me to check, isn't it?

Indeed!

The fix I mentioned earlier was pushed 3 days ago in the RUY repo (google/ruy@54774a7). Could you try to patch it and see whether it fixes the crash or not? Thx!

( T ^ T )  Ohhhh God, BIT ME.....It's a BAD NEWS....however, it's really thankful for your new reply, I think we can reopen this issue again.

Emmmm....I think this fix can be checked by the hello world example, because I have ever got the similar crash with that tool.

I just checked the mirnet_dr.tflite model with the minimal binary w/ the patch. The binary still crashed with segfault. But the stack trace is quite different as shown below:
#0 tflite::tensor_utils::NeonSymmetricQuantizeFloats (values=0x0, size=0, quantized_values=0x0, min=0x7fffffffd458, max=0x7fffffffd454, scaling_factor=0x0)
at tensorflow/lite/kernels/internal/optimized/neon_tensor_utils.cc:2293
#1 0x00005555559324f6 in tflite::ops::builtin::conv::EvalHybrid<(tflite::ops::builtin::conv::KernelType)2> (context=0x57a83fc887c8, node=0x57a83fcdcce0,
params=0x57a83fc014c0, data=0x57a83fd0e9c0, input=0x57a83fd3d680, filter=0x57a83fd27e30, bias=0x57a83fd359d0, im2col=0x0, accum_scratch=0x57a83fd6f020,
output=0x57a83fd3d6f0) at tensorflow/lite/kernels/conv.cc:949
#2 0x00005555559315ae in tflite::ops::builtin::conv::EvalImpl<(tflite::ops::builtin::conv::KernelType)2, (TfLiteType)1> (context=0x57a83fc887c8, node=0x57a83fcdcce0)
at tensorflow/lite/kernels/conv.cc:1027
#3 0x00005555558b01f9 in tflite::ops::builtin::conv::Eval<(tflite::ops::builtin::conv::KernelType)2> (context=0x57a83fc887c8, node=0x57a83fcdcce0)
at tensorflow/lite/kernels/conv.cc:1064
#4 0x0000555555bfc4ed in tflite::Subgraph::OpInvoke (this=0x57a83fc887a0, op_reg=..., node=0x57a83fcdcce0) at /tensorflow/lite/core/subgraph.h:427
#5 0x0000555555bf98a3 in tflite::Subgraph::Invoke (this=0x57a83fc887a0) at tensorflow/lite/core/subgraph.cc:1070
#6 0x0000555555c062d9 in tflite::Interpreter::Invoke (this=0x57a83fc86380) at tensorflow/lite/interpreter.cc:284
#7 0x00005555557f2b21 in main (argc=2, argv=0x7fffffffd9b8) at tensorflow/lite/examples/minimal/minimal.cc:70
I guess we probably need to specify proper input shape to make the model inference run, and this is why I suggested using the benchmark model earlier.

Btw, as the model has dynamic shape, what's the proper input layer shape to be specified when running the inference? I am just wondering if the fix could be verified by the benchmark model tool which supports specifying input layer name and its shape.

Well cool, I think TensorFlow(tensorflow/tensorflow@f779f42) could be easier for me to check, isn't it?

Indeed!

The fix I mentioned earlier was pushed 3 days ago in the RUY repo (google/ruy@54774a7). Could you try to patch it and see whether it fixes the crash or not? Thx!