Make FlowCal More CLI Friendly.

My situation:
This really depends on how each lab organizes their files and use their computers. But I like to do everything command-line, and my lab puts FCS files from one set of experiments inside the same folder and always has flowcal.xlsx as the input file name.
Each time FlowCal is run, I had to use the dialogue that pops out to select the input file, or type in python -m FlowCal.excel_ui -Hpv -i flowcal.xlsx.
Thing I want to change:

Make the Run Flowcal shell script pass on arguments with $* to Python, so that i can say Run\ Flowcal\ (OSX) -i flowcal.xlsx
Add extra script, perhaps named run_flowcal, to quickly run flowcal over flowcal.xlsx in the current directory
Remove spaces from the names of the Run Flowcal scripts.
Add some of the scripts to .local/bin when installing on linux.

(I'll be submitting a pull request soon. Meanwhile, I would like to know what you think about these changes, especially whether you would object against renaming/adding scripts and adding things to your path when installing flowcal)

Hello,
Thanks for using FlowCal! We hope it's being useful in your research.
Before I reply to your suggestions point by point, I want to point out the following. We tried to make FlowCal easy to use for as many people as possible, including people who are not familiar with coding or terminal usage. This means that any change that we intend to introduce has to be evaluated in the context of how it is going to affect all of these users. So while I think in general your ideas are good, most of them seem to be specific to your use case, and thus incorporation into FlowCal becomes tricky. In the cases when I think your suggestions have the potential to be incorporated, note that we would require you to provide proof that 1) the old behavior is maintained, and 2) that the new features work as expected.
Now to your suggestions:

Make the Run Flowcal shell script pass on arguments with $* to Python, so that i can say Run\ Flowcal\ (OSX) -i flowcal.xlsx

The Run FlowCal scripts were not made to be run from the terminal, but just as a convenience for Windows and OSX users to run FlowCal by double clicking. So I would not be completely in favor of a change like this. But if we were to accept it, you would have to show us that the current behavior is preserved. Furthermore, we would like to be consistent and do something similar for the windows version, Run FlowCal (Windows).bat. Again, the current behavior should be preserved when calling these without arguments or by double clicking, in all three operating systems. The burden to prove that the scripts perform as expected will be on you before we review a potential pull request.

Add extra script, perhaps named run_flowcal, to quickly run flowcal over flowcal.xlsx in the current directory

Again, we need to consider how this will affect other users. You are proposing that a script should default to the Excel file flowcal.xlsx, but other users could have files named differently. Other users in our lab use names such as experiment.xlsx (the example files use this name as well) or experiment_[current_date].xlsx or others. Therefore, we don't think it's appropriate to sanction a specific input name.

Remove spaces from the names of the Run Flowcal scripts.

Again, these files were made with GUI-oriented users in mind, and these users are more comfortable with spaces rather than underscores or other unusual space characters that we programmers like to use. So we would not remove spaces from these files.

Add some of the scripts to .local/bin when installing on linux.

You mean when running python setup.py install? In order for us to accept something like this, you would have to show us that 1) setuptools (the python library that we use for installation) approves of a python package directly modifying the file system (i.e. it is not considered bad practice, which is actually what I would expect), 2) that introducing this change will not affect installing the package on OSX or Windows (in fact, I'm not sure if I would want the PATH to be modified in these systems as well), 3) that the behavior is consistent when installing using pip, and 4) that no issues arise when using virtual environments with virtualenv and pip.
An simpler alternative that would address all of your suggestions and that is easier to implement would be the following: include something like an add_to_path.sh script that would write a script to .local/bin, which would in turn call FlowCal. This add_to_path.sh would have to be run manually after installing FlowCal by any of the sanctioned methods, so it becomes optional and does not interfere with installation in any other OS.
And just to reiterate: we think your ideas are good and make a lot of sense for your use case. However we need to consider how these will affect other users before we think about incorporating them into FlowCal.

Hi Sebastian,
Flowcal has indeed been helpful to my research. Thank you very much for
developing and maintaining this awesome piece of software.
I have read your comments, and I think your concerns make sense. I've
revised my proposal, and I'd like your input on the following points:

passing on cmdline arguments: I definitely expect this to be a
non-breaking change. How do I prove this to you? Would you like screenshots
that it indeed works? On Mac, or would Linux do?

Autorun on flowcal.xlsx: Now that I thought about it, I actually agree
with you on this. Not everyone names their files the way we do. This change
will be dropped.

Terminal-friendly renaming: Instead of renaming existing scripts, what
about adding new scripts with terminal-safe names?

scripts in path for lazy terminal people: I just looked it up, and
setuptools seems to be able to add scripts to a directory belonging to
Python, and the path is added to the $PATH environmental variable on most
computers when Python. Will you be okay with it if I added the scripts in
the official, pythonic way?

Thank you,
Cedar
On Fri, Sep 22, 2017, 5:29 PM Sebastian M. Castillo Hair <
<EMAIL_ADDRESS>wrote:

Hello,
Thanks for using FlowCal! We hope it's being useful in your research.
Before I reply to your suggestions point by point, I want to point out the
following. We tried to make FlowCal easy to use for as many people as
possible, including people who are not familiar with coding or terminal
usage. This means that any change that we intend to introduce has to be
evaluated in the context of how it is going to affect all of these users.
So while I think in general your ideas are good, most of them seem to be
specific to your use case, and thus incorporation into FlowCal becomes
tricky. In the cases when I think your suggestions have the potential to be
incorporated, note that we would require you to provide proof that 1) the
old behavior is maintained, and 2) that the new features work as expected.
Now to your suggestions:

Make the Run Flowcal shell script pass on arguments with $* to
Python, so that i can say Run\ Flowcal\ (OSX) -i flowcal.xlsx

The Run FlowCal scripts were not made to be run from the terminal, but
just as a convenience for Windows and OSX users to run FlowCal by double
clicking. So I would not be completely in favor of a change like this. But
if we were to accept it, you would have to show us that the current
behavior is preserved. Furthermore, we would like to be consistent and do
something similar for the windows version, Run FlowCal (Windows).bat.
Again, the current behavior should be preserved when calling these without
arguments or by double clicking, in all three operating systems. The burden
to prove that the scripts perform as expected will be on you before we
review a potential pull request.

Add extra script, perhaps named run_flowcal, to quickly run flowcal
over flowcal.xlsx in the current directory

Again, we need to consider how this will affect other users. You are
proposing that a script should default to the Excel file flowcal.xlsx,
but other users could have files named differently. Other users in our lab
use names such as experiment.xlsx (the example files use this name as
well) or experiment_[current_date].xlsx or others. Therefore, we don't
think it's appropriate to sanction a specific input name.

Remove spaces from the names of the Run Flowcal scripts.

Again, these files were made with GUI-oriented users in mind, and these
users are more comfortable with spaces rather than underscores or other
unusual space characters that we programmers like to use. So we would not
remove spaces from these files.

Add some of the scripts to .local/bin when installing on linux.

You mean when running python setup.py install? In order for us to accept
something like this, you would have to show us that 1) setuptools (the
python library that we use for installation) approves of a python package
directly modifying the file system (i.e. it is not considered bad practice,
which is actually what I would expect), 2) that introducing this change
will not affect installing the package on OSX or Windows (in fact, I'm not
sure if I would want the PATH to be modified in these systems as well), 3)
that the behavior is consistent when installing using pip, and 4) that no
issues arise when using virtual environments with virtualenv and pip.
An simpler alternative that would address all of your suggestions and that
is easier to implement would be the following: include something like an
add_to_path.sh script that would write a script to .local/bin, which
would in turn call FlowCal. This add_to_path.sh would have to be run
manually after installing FlowCal by any of the sanctioned methods, so it
becomes optional and does not interfere with installation in any other OS.
And just to reiterate: we think your ideas are good and make a lot of
sense for your use case. However we need to consider how these will affect
other users before we think about incorporating them into FlowCal.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/taborlab/FlowCal/issues/273#issuecomment-331565028,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJ4gSOqz5MVJETNZpRRWDnjU8bAVdKzGks5slCaxgaJpZM4PgNW4
.

Hey Cedar,
I think the solution that we're converging to is to add a new script that would replace the rather verbose python -m FlowCal.excel_ui with a single word, say, FlowCal, and make this available somehow from everywhere in the terminal during installation. So to call FlowCal against a file experiment.xlsx you would do something like the following:
FlowCal -vp -i experiment.xlsx

This will allow us to add a new file with a defined function, instead of modifying the previous scripts so they have multiple functions, which I think is easier to maintain. Details like the name and default flags can be discussed later.
If you agree with this idea, we will need to talk about the installation mechanism. Can you provide more details on how setuptools handles adding scripts to the path? A link and a short summary would be appreciated.
Thanks.

Yep. That sounds awesome
Installation mechanism docs:
http://python-packaging.readthedocs.io/en/latest/command-line-scripts.html
Thanks!
Cedar
Ps: It would be nice if you could make -H -p -v the default behavior.
Because that's what we do all the time. But I dunno if other people need
all this.
On Tue, Sep 26, 2017, 4:16 PM Sebastian M. Castillo Hair <
<EMAIL_ADDRESS>wrote:

Hey Cedar,
I think the solution that we're converging to is to add a new script that
would replace the rather verbose python -m FlowCal.excel_ui with a single
word, say, FlowCal, and make this available somehow from everywhere in
the terminal during installation. So to call FlowCal against a file
experiment.xlsx you would do something like the following:
FlowCal -vp -i experiment.xlsx
This will allow us to add a new file with a defined function, instead of
modifying the previous scripts so they have multiple functions, which I
think is easier to maintain. Details like the name and default flags can be
discussed later.
If you agree with this idea, we will need to talk about the installation
mechanism. Can you provide more details on how setuptools handles adding
scripts to the path? A link and a short summary would be appreciated.
Thanks.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/taborlab/FlowCal/issues/273#issuecomment-332322125,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJ4gSPa0QbgPugurnvb67ZyWduDeIxcaks5smVupgaJpZM4PgNW4
.

Hey Cedar,
Sorry for the long delay. Lab work has been tough these days.
It seems from the link that you sent us that the second method would be very easy to implement. In particular, adding the following line to setuptools.py:
setup(
    ...
    entry_points = {
        'console_scripts': ['FlowCal=FlowCal.excel_ui:main'],
    }
    ...
)

might achieve what we want without having to write any scripts at all. I haven't tried it yet, so I don't know for sure.
About the default flags, I think it would be really confusing to have the default be inconsistent or different from python -m FlowCal.excel_ui. So changing the default flags should be global, and if you're really interested you should open a new issue. For this issue, though, let's assume that the command line script will have the same defaults as python -m FlowCal.excel_ui.
Let me know if you want to try what I mentioned above, test it, and submit a pull request. The change is so simple that I might do it myself later this week.

I'm on it. Just one thing: to be consistent with how most OS name their
commands, I propose that we set the entry point name to all lower case.
Although Windows and OSX are not case-sensitive, as a linux user I would
appreciate having the flowcal command instead of the FlowCal command.
On Tue, Oct 3, 2017 at 4:42 PM Sebastian M. Castillo Hair <
<EMAIL_ADDRESS>wrote:

Hey Cedar,
Sorry for the long delay. Lab work has been tough these days.
It seems from the link that you sent us that the second method would be
very easy to implement. In particular, adding the following line to
setuptools.py:
setup(
...
entry_points = {
'console_scripts': ['FlowCal=FlowCal.excel_ui:main'],
}
...
)
might achieve what we want without having to write any scripts at all. I
haven't tried it yet, so I don't know for sure.
About the default flags, I think it would be really confusing to have the
default be inconsistent or different from python -m FlowCal.excel_ui. So
changing the default flags should be global, and if you're really
interested you should open a new issue. For this issue, though, let's
assume that the command line script will have the same defaults as python
-m FlowCal.excel_ui.
Let me know if you want to try what I mentioned above, test it, and submit
a pull request. The change is so simple that I might do it myself later
this week.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/taborlab/FlowCal/issues/273#issuecomment-333972088,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJ4gSC-W5awLTO-ED6mg5OCEUykWtHiAks5sopxDgaJpZM4PgNW4
.

also, I understand your concerns for consistency, and I agree that it's
less of a pain to type in -Hpvi every time than to deal with inconsistent
parameter specification. I think you're right.
On Wed, Oct 4, 2017 at 2:23 PM Xida Ren<EMAIL_ADDRESS>wrote:

I'm on it. Just one thing: to be consistent with how most OS name their
commands, I propose that we set the entry point name to all lower case.
Although Windows and OSX are not case-sensitive, as a linux user I would
appreciate having the flowcal command instead of the FlowCal command.
On Tue, Oct 3, 2017 at 4:42 PM Sebastian M. Castillo Hair <
<EMAIL_ADDRESS>wrote:

Hey Cedar,
Sorry for the long delay. Lab work has been tough these days.
It seems from the link that you sent us that the second method would be
very easy to implement. In particular, adding the following line to
setuptools.py:
setup(
...
entry_points = {
'console_scripts': ['FlowCal=FlowCal.excel_ui:main'],
}
...
)
might achieve what we want without having to write any scripts at all. I
haven't tried it yet, so I don't know for sure.
About the default flags, I think it would be really confusing to have the
default be inconsistent or different from python -m FlowCal.excel_ui. So
changing the default flags should be global, and if you're really
interested you should open a new issue. For this issue, though, let's
assume that the command line script will have the same defaults as python
-m FlowCal.excel_ui.
Let me know if you want to try what I mentioned above, test it, and
submit a pull request. The change is so simple that I might do it myself
later this week.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/taborlab/FlowCal/issues/273#issuecomment-333972088,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJ4gSC-W5awLTO-ED6mg5OCEUykWtHiAks5sopxDgaJpZM4PgNW4
.

I'm ok with all lowercase.

Done. See pull request.
On Wed, Oct 4, 2017 at 2:32 PM Sebastian M. Castillo Hair <
<EMAIL_ADDRESS>wrote:

I'm ok with all lowercase.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/taborlab/FlowCal/issues/273#issuecomment-334248939,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJ4gSAMOXFmJ4OiakmnuP5GhGk4nchQNks5so89GgaJpZM4PgNW4
.

Pull Request = #274.


test: Replace deprecated method with non-deprecated one

Since we have several deprecated method in the ITPubSubTest,
I think we can begin to migrate it to non-deprecated method one.
Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

[x] Make sure to open an issue as a bug/issue before writing your code!  That way we can discuss the change, evaluate designs, and agree on the general idea
[x] Ensure the tests and linter pass
[x] Code coverage does not decrease (if any source code was changed)
[x] Appropriate docs were updated (if necessary)

Fixes #278 ☕

HI @hannahrogers-google I already amend review suggestions on the latest commit.

@hannahrogers-google I fixed the method by adding the bindings:
policy.toBuilder().addBindings(binding).build()

Thanks @irvifa, the PR looks good to me. A couple of tests seem to be stuck in the 'Expected — Waiting for status to be reported' state. Can you try pushing a fresh commit to hopefully resolve this issue?

@hannahrogers-google yep, I tried to push it again, hopefully it won't got stuck this time.

@hannahrogers-google yep, I tried to push it again, hopefully it won't got stuck this time. However it will need another kokoro test again.

thanks, looks like they are all running this time :) I will merge when the tests complete


Add history stack to store

Hi,
We are using connected-react-router in our app and found ourselves in need of an actual history stack saved in the store that would (beside other potential usages) allow us to pass a flag to the history push / replace method in order to skip back a specific number of screens (i.e. we have a "project create" flow that includes 4 different steps; after we finish the last step we do not want the user to reach back to it when clicking on the browser "back" button, he has to start over from step 1).
This could have been implemented locally, by using session storage or something similar and checking the flag when reaching back the last step of the flow, but we wanted a generic way of doing this, as simple as possible, therefore all we need to do right now is to use history.push('url', { skipBack: 4 }) when redirecting away from the last step and the middleware will handle everything when the user tries to go back.
I am wondering if it would be of interest to somehow merge this functionality into this repo so that users can opt-in. I have found a similar package that also uses connected-react-router but it felt a bit too lightweight. For instance, it does not tell us if the last action was 'BACK' or 'FORWARD', it also does not have the skip back/forward functionality implemented and it breaks on page refresh (we are saving the router state in session storage on app unload in order to be able to get it back in case of page reload / manual url change).
I can give you more details if this feels of interest to you, please reach back. I could also make a separate package for this, but felt like I should talk to you first. Also, I'm not sure if I posted this in the right place but I didn't know how to contact you.
Have a nice day!

@aandronache https://github.com/salvoravida/redux-first-history#options


executes index creation in a separate command in case of IsConcurrent=true

According to Postgres documentation it's not allowed to create indexes concurrently inside a transaction block which may be any other expression. Basically now we faced with an issue when we don't have any chance to create an index concurrently. This PR attempts to solve this. Beside unit tests I tested out this solution with our current delta.

Regular index builds permit other regular index builds on the same table to occur simultaneously, but only one concurrent index build can occur on a table at a time. In either case, schema modification of the table is not allowed while the index is being built. Another difference is that a regular CREATE INDEX command can be performed within a transaction block, but CREATE INDEX CONCURRENTLY cannot.

@danilfilatoff I have enable to run the CI now. Quick question, with regards to the fix which you done, by adding a comment in between the index statements, it does not throw an error?

@danilfilatoff a unit test write_unique_and_concurrent_index_with_distinct_nulls is failing, please take a look?

@mysticmind thanks for the response. Regarding comments, I don't see a reason why adding comments may throw an error. The comments are added between statements and statements are executed separately, so no, I haven't faced with this issue.
Regarding the unit test, before the last changes in master it was easy to run all tests without errors, now in the master I can't manage to pass all unit tests. Probably I just need to configure a run somehow. There is always about 20 tests failing. That's why I missed that case(write_unique_and_concurrent_index_with_distinct_nulls). Anyway it's fixed now.

thanks for the response. Regarding comments, I don't see a reason why adding comments may throw an error. The comments are added between statements and statements are executed separately, so no, I haven't faced with this issue.

@danilfilatoff My comment was rather a question/clarification in terms of fix what you did to wrap a comment block.

I'll check failed tests.

Can someone run CI again please? If my last commit can't fix the failed tests then I'll need a hand.

Can someone run CI again please? If my last commit can't fix the failed tests then I'll need a hand.

Initiated CI run.

Fanny thing I can't reproduce it locally.

@danilfilatoff I will take a look and keep you posted.

@danilfilatoff I have ran few tests and confirming that the failed tests are not due your PR changes. I am trying to fix the failing tests, will keep you posted in a little while.

@mysticmind, @danilfilatoff From what I see; tests are green on the master branch. They're failing on the branch here, even with retries.

@danilfilatoff after I brought back the original integration context state, flaky tests started to work fine; I also turned on a few more tests. Yet, either I'm missing something, or the provided fix seems not to be working; see failing test:
[xUnit.net 00:00:02.33]     Weasel.Postgresql.Tests.Tables.detecting_table_deltas.detect_different_index_with_concurrent_creation [FAIL]
[xUnit.net 00:00:02.33]       System.Exception : DDL Execution Failure.
[xUnit.net 00:00:02.33]       DROP TABLE IF EXISTS deltas.people CASCADE;
[xUnit.net 00:00:02.33]       CREATE TABLE deltas.people (
[xUnit.net 00:00:02.33]           id                         integer                        NOT NULL,
[xUnit.net 00:00:02.33]           first_name                 varchar                        NULL,
[xUnit.net 00:00:02.33]           last_name                  varchar                        NULL,
[xUnit.net 00:00:02.33]           user_name                  varchar                        NULL,
[xUnit.net 00:00:02.33]           created_datetime           timestamp without time zone    NULL,
[xUnit.net 00:00:02.33]           created_datetime_offset    timestamp with time zone       NULL,
[xUnit.net 00:00:02.33]           data                       jsonb                          NULL,
[xUnit.net 00:00:02.33]       CONSTRAINT pkey_people_id PRIMARY KEY (id)
[xUnit.net 00:00:02.33]       );
[xUnit.net 00:00:02.33]
[xUnit.net 00:00:02.33]       --WEASEL_INDEX_CREATION_BEGIN
[xUnit.net 00:00:02.33]       CREATE UNIQUE INDEX CONCURRENTLY idx_people_user_name ON deltas.people USING btree (user_name);
[xUnit.net 00:00:02.33]       --WEASEL_INDEX_CREATION_END
[xUnit.net 00:00:02.33]
[xUnit.net 00:00:02.33]       ---- Npgsql.PostgresException : 25001: CREATE INDEX CONCURRENTLY cannot be executed within a pipeline
[xUnit.net 00:00:02.33]       Stack Trace:
[xUnit.net 00:00:02.33]         /home/runner/work/weasel/weasel/src/Weasel.Postgresql.Tests/IntegrationContext.cs(50,0): at Weasel.Postgresql.Tests.IntegrationContext.CreateSchemaObjectInDatabase(ISchemaObject schemaObject)
[xUnit.net 00:00:02.33]         /home/runner/work/weasel/weasel/src/Weasel.Postgresql.Tests/Tables/detecting_table_deltas.cs(227,0): at Weasel.Postgresql.Tests.Tables.detecting_table_deltas.detect_different_index(Boolean withDistinctNulls, Boolean isConcurrent)
[xUnit.net 00:00:02.33]         --- End of stack trace from previous location ---
[xUnit.net 00:00:02.33]         ----- Inner Stack Trace -----
[xUnit.net 00:00:02.33]            at Npgsql.Internal.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|233_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
[xUnit.net 00:00:02.33]            at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
[xUnit.net 00:00:02.33]            at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
[xUnit.net 00:00:02.33]            at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
[xUnit.net 00:00:02.33]            at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
[xUnit.net 00:00:02.33]            at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken)
[xUnit.net 00:00:02.33]         /home/runner/work/weasel/weasel/src/Weasel.Postgresql.Tests/IntegrationContext.cs(45,0): at

I understand that you can only run concurrent index creation as a separate statement. And you cannot run it inside the transaction, which is created implicitly by npgsql while running the command.
@danilfilatoff, thoughts?

The problem in tests I was trying to fix by changing Integration context is that the schema creation process is executed differently than in production code. I think it's good idea also in general to unify a bit tests so they are executed as in production. And it matters here for my other changes. It's very expected that the fix stopped working.
Another problem that I can't make all tests pass on my local computers even on master, so it really hinders my possibilities to change code. That's why I've been asking for help with it.

@danilfilatoff, are you using Postgres 15.3? How are you starting your postgres? If just running docker-compose, then by default, is running an older version, you need to uncomment this line and comment out the older version: https://github.com/JasperFx/weasel/blob/master/docker-compose.yml#L5
Regarding

The problem in tests I was trying to fix by changing Integration context is that the schema creation process is executed differently than in production code

Are you referring to your production code or Marten?

Yep, I use docker compose, and I tried different versions of Postgres, it didn't help much.
Regarding applying changes I'm referring to Weasel method ApplyAllConfiguredChangesToDatabaseAsync which is also used in marten when ShouldApplyChangesOnStartup=true https://github.com/JasperFx/marten/blob/21e172af3915123b1274926de98b516223b506bd/src/Marten/Services/MartenActivator.cs#L80C30-L80C30

Please run tests again, it seems like I managed to fix all current issues with tests.

@danilfilatoff I will trigger the CI again.

@danilfilatoff everything is green now 👍

@oskardudycz  Please check and merge the PR.


Only the fixed mode has the play before/after and pause button?

中文用户请注意：请尽量用英文描述你的 issue，这样能够让尽可能多的人帮到你。
If you want to report a bug, please provide the following information:

The steps to reproduce.
A minimal demo of the problem via https://jsfiddle.net or http://codepen.io/pen if possible.
Which versions of APlayer, and which browser / OS are affected by this issue?

Same with me


allow to configure repositories for syncLibs

We use a setup where our build can only uses artifacts from our in-house artifactory repository (basically a means to control what our developers are allowed to use).  However, for "syncLibs" to work it needs access to external repos.  Right now I slove that by manually adding "jcenter()" to "build.gradle" before running "syncLibs" (and then reverting that change again).
What would be really cool would be if I instead could configure "syncLibs" to use "jcenter" (or "mavenCentral" or other repos) in addition to the normal repositories.

Another issue seems to be that the place where I add "jcenter()" matters a lot: seems that if I put that below my local artifactory reference, it does not find newer versions that are available on "jcenter".  I think that is a "this is how gradle is designed" problem, but might surprise your users (and/or lead to invalid/incomplete results).  Thus, if syncLibs would allow to explicitly specify "additional repos", it could either always put these as the first ones to use, or perhaps support a "first"/"last" configuration for the user to decide.

I now realize that this is a request for the "dependencyUpdates" plugin and not for this one.  I opened issue https://github.com/ben-manes/gradle-versions-plugin/issues/274 for this and will close this issue.

@nkiesel Correct, this would be a configuration option for the gradle versions plugin. Let me know if you it works for you, I could add a paragraph about this in the README.

Yes, worked for me.  Looks at the issue linked above for my current solution.  One caveat is that my project has a multi-project setup, not sure if the same version works for single-project setups or if the allprojects has to be removed for that.
Another word of advice (which also applies more to the underlying versions plugin) is that at least with gradle 4.9.x the order of repos is critical.  As a concrete example, I have a dependency where jcenter has 2.4 as the latest version and mavencentral has 2.3, and depending on which comes first the plugin (and thus your plugin) will report differnt values for the latest version.  For most dependencies that might not matter as long as you have either jcenter or mavencentral as the top repo because the are 99% or so in sync anyway.  But mentioning that in your README might be helpful for some users.


Update README.md

Added some information to the README

@williamrhayes Could you check this when you are free? I want to merge to directly to main instead of dev since it's just a README change.


Strip "words" consisting mainly of punctuation.

This adds a post-processing step for binary files. The idea is to remove obvious garbage. Any runs of punctuation, or word chars with two adjacent punctuation chars are stripped. Unit test to verify these rules are followed.

LGTM


[Bug] Beeper - an Electron app - crashes United Sets when attempting to add it to a set.

Following the instructions to add Beeper to a set the set freezes for a moment and then crashes.

We're sorry. I tried signing up for the account, but I had to wait until they reached out to me that I got the account. Therefore, I cannot test it.
However, There seems to be no issue with adding the login page, which is the only thing that I can access right now with no account.

Do you have any way to collect logs? If yes I can send them.

Unfortunately, we don't. You can try looking at Event Viewer but I don't think it will report the error in terms of exception there.

low priority since I cannot replicate the bug


[KBFS-1988] Implement quota-dependent backpressure

Still needs to be fleshed out and tested, but would like to make sure you're okay with this approach.

Ideally you could make tlfJournal.putBlockData return a kbfsblock.BServerErrorOverQuota{Throttled: false} in that case, and then block_util.go:PutBlockCheckQuota would take care of the message.

Ugh, although it probably shouldn't return that every time.  Maybe once every minute or five?

Okay, @strib, this is finally ready for review again. I might still clean up the tests a bit more, but it should still be reviewable.

Okay, addressed all comments. Can you take another quick look, esp. at the accounting for ignored blocks? Thanks!


Reorganize certificate config intro page

Adds onto https://github.com/zowe/docs-site/pull/2890 by reorganizing the intro/summary page on certificates to explain concepts to people who aren't familiar with them.

Hi all, I'm merging this as complete-enough. I understand everyone wants this to be good and we've made a lot of improvements ...

Great to see this merged and thank you to everyone for working on this !   On of my fave quotes is "Don't let perfect be the enemy of good", and I agree that this PR is already very very good and best to merge and go live and use as the new reference point to go forward.


docs(tutorial/0 - Bootstrapping): Clarifying where the callback is defined

Saying that the script-tag registers a callback was for me very confusing, and I think specifying that it is the code in the script that registers the callback makes this a bit clearer.

Signed the CLA.

Hi, thanks for the PR! I committed another version, which I found a bit simpler. Thanks for the contribution though!


Failed on cmake ninja command

I was trying to build it and run this command.
cd build
cmake -G Ninja
-DCMAKE_BUILD_TYPE=Release
..
ninja
but I got  failed. I could not find the reason behind it
Below is the output:
FAILED: async_grpc.client_test
: && /usr/bin/c++  -O3 -DNDEBUG  -rdynamic CMakeFiles/async_grpc.client_test.dir/async_grpc/client_test.cc.o  -o async_grpc.client_test  -Wl,-rpath,/usr/local/lib libasync_grpc.a gmock/libgmock_main.a -lpthread -lgrpc++ -lglog -lgflags /usr/local/lib/libprotobuf.so -lpthread -lgrpc++ && :
/usr/bin/ld: 找不到 -lgrpc++
collect2: error: ld returned 1 exit status

Hi, I have the same problem. It says:
In file included from ../async_grpc/type_traits_test.cc:17:
../async_grpc/type_traits.h:20:10: fatal error: grpcpp/grpcpp.h: No such file or directory
Did you find the solution?


Introduce the component system for managing pre-installed addons

Previously: Typhoon provisions clusters with kube-system components like CoreDNS, kube-proxy, and a chosen CNI provider (among flannel, Calico, or Cilium) pre-installed. This is convenient since clusters come with "batteries included". But it also means upgrading these components is generally done in lock-step, by upgrading to a new Typhoon / Kubernetes release
It can be valuable to manage these components with a separate plan/apply process or through automations and deploy systems. For example, this allows managing CoreDNS separately from the cluster's lifecycle.
These "components" will continue to be pre-installed by default, but a new components variable allows them to be disabled and managed as "addons", components you apply after cluster creation and manage on a rolling basis. For some of these, we may provide Terraform modules to aide in managing these components.

module "cluster" {
  ...

  # defaults shown
  components = {
    enable = true
    coredns = {
      enable = true
    }
    kube_proxy = {
      enable = true
    }
    # Only the CNI set in var.networking will be installed
    flannel = {
      enable = true
    }
    calico = {
      enable = true
    }
    cilium = {
      enable = true
    }
  }
}

An earlier variable install_container_networking = true/false has been removed, since it can now be achieved with this more extensible and general components mechanism by setting the chosen networking provider enable field to false.

So with this new system, would this be the proper way to skip cilium and manage it on my own?
module "cluster" {
  ...
  networking  = "cilium"

  components = {
    cilium = {
      enable = false
    }
  }

or just set networking = "none"

Yes, that example looks right. Typhoon does still need to know which CNI provider you've chosen in order to allow the right firewall / security policies between nodes.
Setting networking to none should cause a validation error.


Docking support

Describe the solution you'd like
Simple as that please add docking possibilities components/forms/pages, etc...  Such a component already exist, but it is buggy and not working correctly and what is worst, not free :(. Love Mudblazor, and i want to use only this package, not mixed it with others in  any case, but some of the components im still missing....
Regards

Could you describe more about "docking" (with screenshot maybe)?

here you go
https://3bo61w2s39sh2nxd9917cfju-wpengine.netdna-ssl.com/wp-content/uploads/2020/09/blazor-dock-manager.jpg

We can do with CSS, didn't we?

dont think it would be easy, not doable just like this. Form are docking each other. Working same as docking system in Visual Studio for example. This would require separate component for sure.. :)


Angular SSR - only specific routes to be rendered as SSR is iqnored in v18.x; it was working fine in v16.x

Which @angular/* package(s) are relevant/related to the feature request?
platform-server
Description
In Server.ts, bypassing specific Urls to be rendered only on the client side worked great in Angular 16.x, but the same functionality is ignored in Angular 18.x.
Not sure if:

the logic has been changed in v18.x
or if it is something that I am doing wrong in the code below
or the latest version of Angular is now requiring that everything has be severed as SSR and to use the PLATFORM_ID to determine what to do?

Here is the code.
    // If these routes, then do not serve as SSR
const iqnoreSrrUrls = [
	'/home',
	'/details/requests',
	'/details/notifs',
	'/details/messages'
];

// All regular routes use the Angular engine
server.get('**', (req, res, next) => {
	const { protocol, originalUrl, baseUrl, headers } = req;

	// This does not work any longer
	const found = iqnoreSrrUrls.some((url) => req.url.toLowerCase().lastIndexOf(url));
	if (found) {
		res.sendFile(join(browserDistFolder, 'index.html'));
		return;
	}

	commonEngine.render({
		bootstrap: AppServerModule,
		documentFilePath: indexHtml,
		url: `${protocol}://${headers.host}${originalUrl}`,
		publicPath: browserDistFolder,
		providers: [
			{ provide: APP_BASE_HREF, useValue: baseUrl }
		],
	})
	.then((html) => res.send(html))
	.catch((err) => next(err));
});

Proposed solution
Its not very intuitive on how to do this in Server.ts. Would be great to leave a small "commented" code sample in this file.
Alternatives considered
Even this did not work for me:
// Serve static files from /browser
server.get('/home/**', express.static(browserDistFolder, {
	maxAge: '1y',
	index: 'index.html',
}));

Thanks for reporting this issue. This issue is now obsolete due to changes which will be available as part of version 19.
See: https://github.com/angular/angular-cli/pull/28346


TextField not rendering text

I am having a weird problem with Flutter. I have two TextField where the user can input some text that I will then save in a database. The app is working fine on the emulator, but on my phone I can't use the TextField more than once. I will explain better: I export the app as an APK and then I installed it on my phone. I use the TextField and the work fine, then I change widget and, when I come back, I can't write anymore. From my keyboard it seems that I am writing but it not displayed on the screen. There is only the "hint text" and it wont go away. If I run the app trough USB-Debug it's even worse: in this mode I can type in the TextField as many time as I want but, for some strange reason, the app will not save the data in the database.
C:\Users\marco\AndroidStudioProjects\vocabulary_app>flutter run --verbose
[ +147 ms] executing: [C:\flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[ +283 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[   +1 ms] ab68721a5da013dff6a08854bdba5e1f3206f9cf
[   +1 ms] executing: [C:\flutter/] git tag --contains HEAD
[ +534 ms] Exit code 0 from: git tag --contains HEAD
[   +1 ms] 1.19.0-5.0.pre
           1.20.0-0.0.pre
           1.20.0-1.0.pre
[  +21 ms] executing: [C:\flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[ +247 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[   +1 ms] origin/master
[        ] executing: [C:\flutter/] git ls-remote --get-url origin
[ +241 ms] Exit code 0 from: git ls-remote --get-url origin
[   +1 ms] https://github.com/flutter/flutter.git
[ +297 ms] executing: [C:\flutter/] git rev-parse --abbrev-ref HEAD
 +244 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[   +1 ms] master

[   +1 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[  +11 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[   +1 ms] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[   +1 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[   +3 ms] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[   +1 ms] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +43 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe devices -l
[ +211 ms] List of devices attached
                    emulator-5554          device product:sdk_gphone_x86_arm model:AOSP_on_IA_Emulator device:generic_x86_arm transport_id:4
[   +8 ms] C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell getprop
[ +227 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[  +10 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[  +25 ms] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ +155 ms] Found plugin path_provider at C:\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-1.6.11\
[   +7 ms] Found plugin path_provider_linux at C:\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider_linux-0.0.1+1\
[   +3 ms] Found plugin path_provider_macos at C:\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider_macos-0.0.4+3\
[  +11 ms] Found plugin sqflite at C:\flutter\.pub-cache\hosted\pub.dartlang.org\sqflite-1.3.1\
[  +94 ms] Found plugin path_provider at C:\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-1.6.11\
[   +3 ms] Found plugin path_provider_linux at C:\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider_linux-0.0.1+1\
[   +2 ms] Found plugin path_provider_macos at C:\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider_macos-0.0.4+3\
[   +9 ms] Found plugin sqflite at C:\flutter\.pub-cache\hosted\pub.dartlang.org\sqflite-1.3.1\
[  +68 ms] Generating C:\Users\marco\AndroidStudioProjects\vocabulary_app\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java
[ +107 ms] ro.hardware = ranchu
[  +34 ms] Using hardware rendering with device AOSP on IA Emulator. If you get graphics artifacts, consider enabling software rendering with "--enable-software-rendering".
[  +45 ms] Starting incremental build...
[   +4 ms] Initializing file store
[  +12 ms] Skipping target: gen_localizations
[   +7 ms] complete
[   +5 ms] Launching lib\main.dart on AOSP on IA Emulator in debug mode...
[   +7 ms] C:\flutter\bin\cache\dart-sdk\bin\dart.exe C:\flutter\bin\cache\artifacts\engine\windows-x64\frontend_server.dart.snapshot --sdk-root C:\flutter\bin\cache\artifacts\engine\common\flutter_patched_sdk/ --incremental --target=flutter --debugger-module-names
-Ddart.developer.causal_async_stacks=true --output-dill C:\Users\marco\AppData\Local\Temp\flutter_tools.5ebfdd3d\flutter_tool.45d17dd1\app.dill --packages .packages -Ddart.vm.profile=false -Ddart.vm.product=false
--bytecode-options=source-positions,local-var-info,debugger-stops,instance-field-initializers,keep-unreachable-code,avoid-closure-call-instructions --enable-asserts --track-widget-creation --filesystem-scheme org-dartlang-root --initialize-from-dill
build\cache.dill.track.dill
[  +15 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\build-tools\29.0.2\aapt dump xmltree C:\Users\marco\AndroidStudioProjects\vocabulary_app\build\app\outputs\flutter-apk\app.apk AndroidManifest.xml
[ +109 ms] Exit code 0 from: C:\Users\marco\AppData\Local\Android\sdk\build-tools\29.0.2\aapt dump xmltree C:\Users\marco\AndroidStudioProjects\vocabulary_app\build\app\outputs\flutter-apk\app.apk AndroidManifest.xml
[   +1 ms] N: android=http://schemas.android.com/apk/res/android
             E: manifest (line=2)
               A: android:versionCode(0x0101021b)=(type 0x10)0x1
               A: android:versionName(0x0101021c)="1.0.0" (Raw: "1.0.0")
               A: android:compileSdkVersion(0x01010572)=(type 0x10)0x1c
               A: android:compileSdkVersionCodename(0x01010573)="9" (Raw: "9")
               A: package="marcodemartino.it.vocabularyapp" (Raw: "marcodemartino.it.vocabularyapp")
               A: platformBuildVersionCode=(type 0x10)0x1c
               A: platformBuildVersionName=(type 0x10)0x9
               E: uses-sdk (line=7)
                 A: android:minSdkVersion(0x0101020c)=(type 0x10)0x10
                 A: android:targetSdkVersion(0x01010270)=(type 0x10)0x1c
               E: uses-permission (line=17)
                 A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
               E: application (line=19)
                 A: android:label(0x01010001)="vocabularyapp" (Raw: "vocabularyapp")
                 A: android:icon(0x01010002)=@0x7f080000
                 A: android:name(0x01010003)="io.flutter.app.FlutterApplication" (Raw: "io.flutter.app.FlutterApplication")
                 A: android:appComponentFactory(0x0101057a)="androidx.core.app.CoreComponentFactory" (Raw: "androidx.core.app.CoreComponentFactory")
                 E: activity (line=24)
                   A: android:theme(0x01010000)=@0x7f0a0000
                   A: android:name(0x01010003)="marcodemartino.it.vocabularyapp.MainActivity" (Raw: "marcodemartino.it.vocabularyapp.MainActivity")
                   A: android:launchMode(0x0101001d)=(type 0x10)0x1
                   A: android:configChanges(0x0101001f)=(type 0x11)0x40003fb4
                   A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x10
                   A: android:hardwareAccelerated(0x010102d3)=(type 0x12)0xffffffff
                   E: meta-data (line=38)
                     A: android:name(0x01010003)="io.flutter.embedding.android.NormalTheme" (Raw: "io.flutter.embedding.android.NormalTheme")
                     A: android:resource(0x01010025)=@0x7f0a0001
                   E: meta-data (line=48)
                     A: android:name(0x01010003)="io.flutter.embedding.android.SplashScreenDrawable" (Raw: "io.flutter.embedding.android.SplashScreenDrawable")
                     A: android:resource(0x01010025)=@0x7f040000
                   E: intent-filter (line=52)
                     E: action (line=53)
                       A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
                     E: category (line=55)
                       A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
                 E: meta-data (line=62)
                   A: android:name(0x01010003)="flutterEmbedding" (Raw: "flutterEmbedding")
                   A: android:value(0x01010024)=(type 0x10)0x2
[   +8 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell -x logcat -v time -t 1
[ +203 ms] Exit code 0 from: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell -x logcat -v time -t 1
[   +1 ms] --------- beginning of main
           06-19 22:59:03.976 I/GnssLocationProvider( 1985): WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@e5d385c)
[ +268 ms] <- compile package:vocabularyapp/main.dart
[ +121 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe version
[ +219 ms] Android Debug Bridge version 1.0.41
                    Version 29.0.6-6198805
                    Installed as C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe
[   +4 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe start-server
[ +194 ms] Building APK
[  +27 ms] Running Gradle task 'assembleDebug'...
[   +3 ms] gradle.properties already sets `android.enableR8`
[   +9 ms] Using gradle from C:\Users\marco\AndroidStudioProjects\vocabulary_app\android\gradlew.bat.
[   +2 ms] C:\Users\marco\AndroidStudioProjects\vocabulary_app\android\gradlew.bat mode: 33279 rwxrwxrwx.
[  +11 ms] executing: C:\Program Files\Android\Android Studio\jre\bin\java -version
[ +196 ms] Exit code 0 from: C:\Program Files\Android\Android Studio\jre\bin\java -version
[   +1 ms] openjdk version "1.8.0_242-release"
           OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
           OpenJDK 64-Bit Server VM (build 25.242-b01, mixed mode)
[   +4 ms] executing: [C:\Users\marco\AndroidStudioProjects\vocabulary_app\android/] C:\Users\marco\AndroidStudioProjects\vocabulary_app\android\gradlew.bat -Pverbose=true -Ptarget-platform=android-x86
-Ptarget=C:\Users\marco\AndroidStudioProjects\vocabulary_app\lib\main.dart -Ptrack-widget-creation=true -Pfilesystem-scheme=org-dartlang-root assembleDebug
[+4931 ms] > Task :app:compileFlutterBuildDebug
[   +1 ms] [ +124 ms] executing: [C:\flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[ +285 ms] [ +308 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[   +1 ms] [        ] ab68721a5da013dff6a08854bdba5e1f3206f9cf
[   +1 ms] [        ] executing: [C:\flutter/] git tag --contains HEAD
[ +597 ms] [ +546 ms] Exit code 0 from: git tag --contains HEAD
[   +1 ms] [        ] 1.19.0-5.0.pre
[   +1 ms]            1.20.0-0.0.pre
[   +1 ms]            1.20.0-1.0.pre
[   +2 ms] [  +15 ms] executing: [C:\flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[ +192 ms] [ +257 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[   +3 ms] [        ] origin/master
[   +2 ms] [        ] executing: [C:\flutter/] git ls-remote --get-url origin
[ +294 ms] [ +249 ms] Exit code 0 from: git ls-remote --get-url origin
[   +1 ms] [        ] https://github.com/flutter/flutter.git
[ +298 ms] [ +307 ms] executing: [C:\flutter/] git rev-parse --abbrev-ref HEAD
[ +300 ms] [ +272 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[   +2 ms] [        ] master
[   +1 ms] [  +40 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[   +2 ms] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[   +5 ms] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +1 ms] [   +7 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[   +2 ms] [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[   +5 ms] [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +68 ms] [  +35 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
[   +2 ms] [        ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
[   +2 ms] [        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[   +2 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
[   +1 ms] [  +87 ms] Initializing file store
[  +64 ms] [  +30 ms] Done initializing file store
[   +1 ms] [  +57 ms] Skipping target: gen_localizations
[+1098 ms] [+1112 ms] Skipping target: kernel_snapshot
[ +400 ms] [ +336 ms] Skipping target: debug_android_application
[   +3 ms] [   +1 ms] Persisting file store
[   +2 ms] [  +12 ms] Done persisting file store
[   +2 ms] [   +8 ms] build succeeded.
[   +1 ms] [  +15 ms] "flutter assemble" took 1.725ms.
[   +4 ms] [   +4 ms] ensureAnalyticsSent: 0ms
[   +1 ms] [   +1 ms] Running shutdown hooks
[   +1 ms] [        ] Shutdown hooks complete
[   +1 ms] [   +3 ms] exiting with code 0
[ +281 ms] > Task :app:packLibsflutterBuildDebug UP-TO-DATE
[   +2 ms] > Task :app:preBuild UP-TO-DATE
[   +1 ms] > Task :app:preDebugBuild UP-TO-DATE
[   +1 ms] > Task :path_provider:preBuild UP-TO-DATE
[   +1 ms] > Task :path_provider:preDebugBuild UP-TO-DATE
[   +2 ms] > Task :sqflite:preBuild UP-TO-DATE
[   +5 ms] > Task :sqflite:preDebugBuild UP-TO-DATE
[   +1 ms] > Task :path_provider:packageDebugRenderscript NO-SOURCE
[   +1 ms] > Task :sqflite:packageDebugRenderscript NO-SOURCE
[   +1 ms] > Task :app:checkDebugManifest UP-TO-DATE
[   +1 ms] > Task :app:generateDebugBuildConfig UP-TO-DATE
[   +6 ms] > Task :app:cleanMergeDebugAssets
[  +72 ms] > Task :path_provider:compileDebugAidl NO-SOURCE
[   +1 ms] > Task :sqflite:compileDebugAidl NO-SOURCE
[   +2 ms] > Task :app:compileDebugAidl NO-SOURCE
[   +2 ms] > Task :app:compileDebugRenderscript NO-SOURCE
[   +1 ms] > Task :app:mergeDebugShaders UP-TO-DATE
[   +4 ms] > Task :app:compileDebugShaders UP-TO-DATE
[   +1 ms] > Task :app:generateDebugAssets UP-TO-DATE
[   +1 ms] > Task :path_provider:mergeDebugShaders UP-TO-DATE
[   +1 ms] > Task :path_provider:compileDebugShaders UP-TO-DATE
[   +1 ms] > Task :path_provider:generateDebugAssets UP-TO-DATE
[   +1 ms] > Task :path_provider:packageDebugAssets UP-TO-DATE
[   +2 ms] > Task :sqflite:mergeDebugShaders UP-TO-DATE
[   +1 ms] > Task :sqflite:compileDebugShaders UP-TO-DATE
[   +1 ms] > Task :sqflite:generateDebugAssets UP-TO-DATE
[  +74 ms] > Task :sqflite:packageDebugAssets UP-TO-DATE
[   +1 ms] > Task :app:mergeDebugAssets
[ +498 ms] > Task :app:copyFlutterAssetsDebug
[   +2 ms] > Task :app:mainApkListPersistenceDebug UP-TO-DATE
[   +1 ms] > Task :app:generateDebugResValues UP-TO-DATE
[   +1 ms] > Task :app:generateDebugResources UP-TO-DATE
[   +1 ms] > Task :path_provider:generateDebugResValues UP-TO-DATE
[   +1 ms] > Task :path_provider:compileDebugRenderscript NO-SOURCE
[   +1 ms] > Task :path_provider:generateDebugResources UP-TO-DATE
[   +2 ms] > Task :path_provider:packageDebugResources UP-TO-DATE
[   +1 ms] > Task :sqflite:generateDebugResValues UP-TO-DATE
[   +1 ms] > Task :sqflite:compileDebugRenderscript NO-SOURCE
[   +1 ms] > Task :sqflite:generateDebugResources UP-TO-DATE
[  +84 ms] > Task :sqflite:packageDebugResources UP-TO-DATE
[  +99 ms] > Task :app:mergeDebugResources UP-TO-DATE
[   +2 ms] > Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
[   +1 ms] > Task :path_provider:checkDebugManifest UP-TO-DATE
[   +1 ms] > Task :path_provider:processDebugManifest UP-TO-DATE
[   +1 ms] > Task :sqflite:checkDebugManifest UP-TO-DATE
[   +1 ms] > Task :sqflite:processDebugManifest UP-TO-DATE
[ +191 ms] > Task :app:processDebugManifest
[   +2 ms] > Task :path_provider:parseDebugLibraryResources UP-TO-DATE
[   +2 ms] > Task :path_provider:generateDebugRFile UP-TO-DATE
[   +1 ms] > Task :sqflite:parseDebugLibraryResources UP-TO-DATE
[   +1 ms] > Task :sqflite:generateDebugRFile UP-TO-DATE
[ +992 ms] > Task :app:processDebugResources
[   +2 ms] > Task :path_provider:generateDebugBuildConfig UP-TO-DATE
[  +97 ms] > Task :path_provider:javaPreCompileDebug UP-TO-DATE
[   +2 ms] > Task :path_provider:compileDebugJavaWithJavac UP-TO-DATE
[   +1 ms] > Task :path_provider:bundleLibCompileDebug UP-TO-DATE
[   +1 ms] > Task :sqflite:generateDebugBuildConfig UP-TO-DATE
[   +1 ms] > Task :sqflite:javaPreCompileDebug UP-TO-DATE
[   +1 ms] > Task :sqflite:compileDebugJavaWithJavac UP-TO-DATE
[   +1 ms] > Task :sqflite:bundleLibCompileDebug UP-TO-DATE
[+1191 ms] > Task :app:compileDebugKotlin
[   +2 ms] > Task :app:processDebugJavaRes NO-SOURCE
[   +1 ms] > Task :path_provider:processDebugJavaRes NO-SOURCE
[   +1 ms] > Task :path_provider:bundleLibResDebug UP-TO-DATE
[   +1 ms] > Task :sqflite:processDebugJavaRes NO-SOURCE
[  +92 ms] > Task :sqflite:bundleLibResDebug UP-TO-DATE
[   +2 ms] > Task :path_provider:bundleLibRuntimeDebug UP-TO-DATE
[   +1 ms] > Task :path_provider:createFullJarDebug UP-TO-DATE
[   +1 ms] > Task :sqflite:bundleLibRuntimeDebug UP-TO-DATE
[   +1 ms] > Task :sqflite:createFullJarDebug UP-TO-DATE
[  +93 ms] > Task :app:javaPreCompileDebug
[ +501 ms] > Task :app:compileDebugJavaWithJavac
[   +7 ms] > Task :app:compileDebugSources
[  +92 ms] > Task :app:checkDebugDuplicateClasses
[ +598 ms] > Task :app:transformClassesWithDexBuilderForDebug
[   +2 ms] > Task :app:validateSigningDebug UP-TO-DATE
[   +1 ms] > Task :app:signingConfigWriterDebug UP-TO-DATE
[   +1 ms] > Task :app:mergeDebugJniLibFolders UP-TO-DATE
[   +1 ms] > Task :path_provider:mergeDebugJniLibFolders UP-TO-DATE
[  +93 ms] > Task :path_provider:mergeDebugNativeLibs UP-TO-DATE
[   +2 ms] > Task :path_provider:stripDebugDebugSymbols UP-TO-DATE
[   +1 ms] > Task :path_provider:transformNativeLibsWithIntermediateJniLibsForDebug UP-TO-DATE
[   +1 ms] > Task :sqflite:mergeDebugJniLibFolders UP-TO-DATE
[   +1 ms] > Task :sqflite:mergeDebugNativeLibs UP-TO-DATE
[   +1 ms] > Task :sqflite:stripDebugDebugSymbols UP-TO-DATE
[   +2 ms] > Task :sqflite:transformNativeLibsWithIntermediateJniLibsForDebug UP-TO-DATE
[  +89 ms] > Task :path_provider:extractDebugAnnotations UP-TO-DATE
[   +3 ms] > Task :path_provider:mergeDebugGeneratedProguardFiles UP-TO-DATE
[   +1 ms] > Task :path_provider:mergeDebugConsumerProguardFiles UP-TO-DATE
[   +1 ms] > Task :path_provider:prepareLintJarForPublish UP-TO-DATE
[   +1 ms] > Task :path_provider:mergeDebugJavaResource UP-TO-DATE
[   +2 ms] > Task :path_provider:transformClassesAndResourcesWithSyncLibJarsForDebug UP-TO-DATE
[   +2 ms] > Task :path_provider:transformNativeLibsWithSyncJniLibsForDebug UP-TO-DATE
[   +1 ms] > Task :path_provider:bundleDebugAar UP-TO-DATE
[   +1 ms] > Task :path_provider:compileDebugSources UP-TO-DATE
[   +1 ms] > Task :path_provider:assembleDebug UP-TO-DATE
[   +6 ms] > Task :sqflite:extractDebugAnnotations UP-TO-DATE
[   +1 ms] > Task :sqflite:mergeDebugGeneratedProguardFiles UP-TO-DATE
[   +1 ms] > Task :sqflite:mergeDebugConsumerProguardFiles UP-TO-DATE
[   +1 ms] > Task :sqflite:prepareLintJarForPublish UP-TO-DATE
[  +71 ms] > Task :sqflite:mergeDebugJavaResource UP-TO-DATE
[   +2 ms] > Task :sqflite:transformClassesAndResourcesWithSyncLibJarsForDebug UP-TO-DATE
[   +3 ms] > Task :sqflite:transformNativeLibsWithSyncJniLibsForDebug UP-TO-DATE
[   +1 ms] > Task :sqflite:bundleDebugAar UP-TO-DATE
[   +1 ms] > Task :sqflite:compileDebugSources UP-TO-DATE
[   +4 ms] > Task :sqflite:assembleDebug UP-TO-DATE
[   +1 ms] > Task :app:desugarDebugFileDependencies
[  +85 ms] > Task :app:mergeExtDexDebug UP-TO-DATE
[  +98 ms] > Task :app:mergeDebugJavaResource
[ +400 ms] > Task :app:mergeDebugNativeLibs
[ +400 ms] Unable to strip library 'C:\Users\marco\AndroidStudioProjects\vocabulary_app\build\app\intermediates\merged_native_libs\debug\out\lib\x86\libflutter.so' due to missing strip tool for ABI 'X86'. Packaging it as is.
[ +100 ms] > Task :app:stripDebugDebugSymbols
[   +2 ms] Compatible side by side NDK version was not found.
[   +1 ms] Unable to strip library 'C:\Users\marco\AndroidStudioProjects\vocabulary_app\build\app\intermediates\merged_native_libs\debug\out\lib\x86_64\libflutter.so' due to missing strip tool for ABI 'X86_64'. Packaging it as is.
[   +1 ms] > Task :app:mergeDexDebug
[+2093 ms] > Task :app:packageDebug
[ +299 ms] > Task :app:assembleDebug
[   +2 ms] BUILD SUCCESSFUL in 17s
[   +2 ms] 87 actionable tasks: 18 executed, 69 up-to-date
[ +734 ms] Running Gradle task 'assembleDebug'... (completed in 18,5s)
[  +45 ms] calculateSha: LocalDirectory: 'C:\Users\marco\AndroidStudioProjects\vocabulary_app\build\app\outputs\flutter-apk'/app.apk
[  +63 ms] calculateSha: reading file took 62us
[ +415 ms] calculateSha: computing sha took 414us
[  +16 ms] ✓ Built build\app\outputs\flutter-apk\app-debug.apk.
[   +7 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\build-tools\29.0.2\aapt dump xmltree C:\Users\marco\AndroidStudioProjects\vocabulary_app\build\app\outputs\flutter-apk\app.apk AndroidManifest.xml
[ +119 ms] Exit code 0 from: C:\Users\marco\AppData\Local\Android\sdk\build-tools\29.0.2\aapt dump xmltree C:\Users\marco\AndroidStudioProjects\vocabulary_app\build\app\outputs\flutter-apk\app.apk AndroidManifest.xml
[   +1 ms] N: android=http://schemas.android.com/apk/res/android
             E: manifest (line=2)
               A: android:versionCode(0x0101021b)=(type 0x10)0x1
               A: android:versionName(0x0101021c)="1.0.0" (Raw: "1.0.0")
               A: android:compileSdkVersion(0x01010572)=(type 0x10)0x1c
               A: android:compileSdkVersionCodename(0x01010573)="9" (Raw: "9")
               A: package="marcodemartino.it.vocabularyapp" (Raw: "marcodemartino.it.vocabularyapp")
               A: platformBuildVersionCode=(type 0x10)0x1c
               A: platformBuildVersionName=(type 0x10)0x9
               E: uses-sdk (line=7)
                 A: android:minSdkVersion(0x0101020c)=(type 0x10)0x10
                 A: android:targetSdkVersion(0x01010270)=(type 0x10)0x1c
               E: uses-permission (line=14)
                 A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
               E: application (line=16)
                 A: android:label(0x01010001)="vocabularyapp" (Raw: "vocabularyapp")
                 A: android:icon(0x01010002)=@0x7f080000
                 A: android:name(0x01010003)="io.flutter.app.FlutterApplication" (Raw: "io.flutter.app.FlutterApplication")
                 A: android:debuggable(0x0101000f)=(type 0x12)0xffffffff
                 A: android:appComponentFactory(0x0101057a)="androidx.core.app.CoreComponentFactory" (Raw: "androidx.core.app.CoreComponentFactory")
                 E: activity (line=22)
                   A: android:theme(0x01010000)=@0x7f0a0000
                   A: android:name(0x01010003)="marcodemartino.it.vocabularyapp.MainActivity" (Raw: "marcodemartino.it.vocabularyapp.MainActivity")
                   A: android:launchMode(0x0101001d)=(type 0x10)0x1
                   A: android:configChanges(0x0101001f)=(type 0x11)0x40003fb4
                   A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x10
                   A: android:hardwareAccelerated(0x010102d3)=(type 0x12)0xffffffff
                   E: meta-data (line=36)
                     A: android:name(0x01010003)="io.flutter.embedding.android.NormalTheme" (Raw: "io.flutter.embedding.android.NormalTheme")
                     A: android:resource(0x01010025)=@0x7f0a0001
                   E: meta-data (line=46)
                     A: android:name(0x01010003)="io.flutter.embedding.android.SplashScreenDrawable" (Raw: "io.flutter.embedding.android.SplashScreenDrawable")
                     A: android:resource(0x01010025)=@0x7f040000
                   E: intent-filter (line=50)
                     E: action (line=51)
                       A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
                     E: category (line=53)
                       A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
                 E: meta-data (line=60)
                   A: android:name(0x01010003)="flutterEmbedding" (Raw: "flutterEmbedding")
                   A: android:value(0x01010024)=(type 0x10)0x2
[   +2 ms] Stopping app 'app.apk' on AOSP on IA Emulator.
[   +4 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell am force-stop marcodemartino.it.vocabularyapp
[ +219 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell pm list packages marcodemartino.it.vocabularyapp
[ +210 ms] package:marcodemartino.it.vocabularyapp
[   +4 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell cat /data/local/tmp/sky.marcodemartino.it.vocabularyapp.sha1
[ +203 ms] e5631c42765673ddce2ca7a181f4b847d52dcf5a
[   +2 ms] Installing APK.
[   +3 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe version
[ +189 ms] Android Debug Bridge version 1.0.41
                    Version 29.0.6-6198805
                    Installed as C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe
[   +2 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe start-server
[ +187 ms] Installing build\app\outputs\flutter-apk\app.apk...
[   +2 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 install -t -r C:\Users\marco\AndroidStudioProjects\vocabulary_app\build\app\outputs\flutter-apk\app.apk
[+1721 ms] Performing Streamed Install
                    Success
[   +1 ms] Installing build\app\outputs\flutter-apk\app.apk... (completed in 1,7s)
[   +3 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell echo -n 6dc12a81c442c00843594b3e10208babb408a5b5 > /data/local/tmp/sky.marcodemartino.it.vocabularyapp.sha1
[ +205 ms] AOSP on IA Emulator startApp
[   +4 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell am start -a android.intent.action.RUN -f 0x20000000 --ez enable-background-compilation true --ez enable-dart-profiling true --ez enable-checked-mode true
--ez verify-entry-points true marcodemartino.it.vocabularyapp/marcodemartino.it.vocabularyapp.MainActivity
[ +224 ms] Starting: Intent { act=android.intent.action.RUN flg=0x20000000 cmp=marcodemartino.it.vocabularyapp/.MainActivity (has extras) }
[   +1 ms] Waiting for observatory port to be available...
[+1042 ms] Observatory URL on device: http://<IP_ADDRESS>:36720/ibmSi4Spm6o=/
[   +3 ms] executing: C:\Users\marco\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 forward tcp:0 tcp:36720
[ +216 ms] 65295
[   +1 ms] Forwarded host port 65295 to device port 36720 for Observatory
[   +6 ms] Caching compiled dill
[  +34 ms] Connecting to service protocol: http://<IP_ADDRESS>:65295/ibmSi4Spm6o=/
[ +478 ms] Successfully connected to service protocol: http://<IP_ADDRESS>:65295/ibmSi4Spm6o=/
[   +2 ms] Waiting for AOSP on IA Emulator to report its views...
[  +11 ms] Waiting for AOSP on IA Emulator to report its views... (completed in 9ms)
[  +13 ms] DevFS: Creating new filesystem on the device (null)
[  +31 ms] DevFS: Created new filesystem on the device (file:///data/user/0/marcodemartino.it.vocabularyapp/code_cache/vocabulary_appPGTXHN/vocabulary_app/)
[   +4 ms] Updating assets
[ +157 ms] Syncing files to device AOSP on IA Emulator...
[   +3 ms] Scanning asset files
[   +4 ms] <- reset
[   +1 ms] Compiling dart to kernel with 0 updated files
[   +1 ms] <- recompile package:vocabularyapp/main.dart f77db3ab-8a17-4164-ab6c-6f2610f01499
[        ] <- f77db3ab-8a17-4164-ab6c-6f2610f01499
[   +2 ms] D/EGL_emulation(10697): eglMakeCurrent: 0xd4f832a0: ver 3 1 (tinfo 0xe61e0740)
[   +1 ms] D/eglCodecCommon(10697): setVertexArrayObject: set vao to 0 (0) 1 0
[ +259 ms] Updating files
[ +113 ms] DevFS: Sync finished
[   +1 ms] Syncing files to device AOSP on IA Emulator... (completed in 389ms)
[   +1 ms] Synced 0.9MB.
[   +1 ms] <- accept
[   +6 ms] Connected to _flutterView/0xe4f08310.
[   +2 ms] Flutter run key commands.
[   +2 ms] r Hot reload. ���
[   +2 ms] R Hot restart.
[   +1 ms] h Repeat this help message.
[   +1 ms] d Detach (terminate "flutter run" but leave application running).
[   +1 ms] c Clear the screen
[   +1 ms] q Quit (terminate the application on the device).
[   +1 ms] An Observatory debugger and profiler on AOSP on IA Emulator is available at: http://<IP_ADDRESS>:65295/ibmSi4Spm6o=/
[  +26 ms] I/flutter (10697): 0
[+2664 ms] I/flutter (10697): Instance of 'Future<List<Word>>'
[+3433 ms] W/IInputConnectionWrapper(10697): beginBatchEdit on inactive InputConnection
[   +2 ms] W/IInputConnectionWrapper(10697): getTextBeforeCursor on inactive InputConnection
[   +1 ms] W/IInputConnectionWrapper(10697): getTextAfterCursor on inactive InputConnection
[   +1 ms] W/IInputConnectionWrapper(10697): getSelectedText on inactive InputConnection
[   +1 ms] W/IInputConnectionWrapper(10697): endBatchEdit on inactive InputConnection
[+6493 ms] I/flutter (10697): Instance of 'Future<List<Word>>'

C:\Users\marco\AndroidStudioProjects\vocabulary_app>flutter analyze
Analyzing vocabulary_app...

   info - This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't final: InsertWord._editing, InsertWord._originalWord, InsertWord.screenWidth, InsertWord.screenHeight - lib\insert_word.dart:6:7
          - must_be_immutable
   info - This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't final: WordContainer.word - lib\word_manager.dart:99:7 - must_be_immutable

2 issues found. (ran in 9.8s)

C:\Users\marco\AndroidStudioProjects\vocabulary_app>flutter doctor -v
[√] Flutter (Channel master, 1.19.0-5.0.pre, on Microsoft Windows [Versione 10.0.18363.900], locale it-IT)
    • Flutter version 1.19.0-5.0.pre at C:\flutter
    • Framework revision ab68721a5d (2 weeks ago), 2020-06-05 14:02:07 -0700
    • Engine revision e87a05fbba
    • Dart version 2.9.0 (build 2.9.0-13.0.dev 62903873df)

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at C:\Users\marco\AppData\Local\Android\sdk
    • Platform android-29, build-tools 29.0.2
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[!] Visual Studio - develop for Windows (Visual Studio Community 2019 16.6.1)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.6.30128.74
    • Windows 10 SDK version 10.0.16299.0
    X The current Visual Studio installation is incomplete. Please reinstall Visual Studio.

[√] Android Studio (version 4.0)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 46.0.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] IntelliJ IDEA Ultimate Edition (version 2019.3)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.1
    • Flutter plugin version 45.0.2
    • Dart plugin version 193.5731

[√] Connected device (2 available)
    • AOSP on IA Emulator • emulator-5554 • android-x86 • Android 9 (API 28) (emulator)
    • Windows             • Windows       • windows-x64 • Microsoft Windows [Versione 10.0.18363.900]

! Doctor found issues in 1 category.

(All the commands were executed on my computer while my phone was disconnected)
bug.zip

What did you mean by "I change widget" ?

Earlier, I have also faced similar issue when i was using a TextField and a drop down menu.
To solve this, you have to use a function inside onChanged: to save the value to some variable(let's say _name here) every time when it is changed with default value as empty string.
Also, You have to use another named argument, controller: TextEditingController(text: _name) to set the default text as the previous saved data.
Do the same thing with other TextField also with another variable to store the data of this TextField.
I hope it will work for you. If you have any queries or doubt, feel free to ask.  :)

Thank you for your reply, but unfortunately, it still doesn't work. The second time I load this StatelessWidget I can click on the first TextField (There is two) and start typing (I can see that I'm typing because I can see suggestions on my keyboard) but it is not displayed on the TextField, there is only the hint text. As soon as I click on this TextField I can't do literally anything: I can't click on the other TextField, I can't click on the button that's on the StatelessWidget and I can't even go back neither with the IconButton nor with the function "back" of my phone.
The weirdest thing is that it works with no problem on the emulator. And what's maybe even weirder is that the app is even more broken if I install it trough debug usb (I have already described that problem).

You have to make it StatefulWidget and in onChanged: , you have to use setState to  set the value of the variable storing the data(initially empty string) and using controller, you can set the default text as the value stored.
You have to follow this same approach with other textField also.

Can you please give me an example of what to do in onChanged:? I didn't get it.

Sure. lemme make a short script for it.

@SuperMarcomen I fixed this issue. For this, we can't use onChanged: but onSubmitted: has to be used. onChanged: worked for me though when i combined textField and dropdownmenu.
Here is the working code, https://gist.github.com/Chetan-Goyal/b5852584565b932446afcfd4ddd710d3
the data of textField is stored in nameOne and nameTwo.

I have made your changes but the text still isn't displayed in the TextField

Here is a video showing what's happening (It's from an old version of the app, but what's happening is the same) and here is the code.
https://youtu.be/D3JcGthqT8A
https://github.com/SuperMarcomen/vocabulary_app

Does anyone know how to fix this issue?

I am not being able to reproduce the issue as shown in the above video. I am getting an alert box with text, Articolo invalido with same input data.
I am using my device having android version 9 via ADB .

The only valid inputs (As you can see from the code) for the first TextField are: "der", "die" and "das" (German articles).

Hi @SuperMarcomen
This is not an issue with TextField. You can notice that entire UI is blocked after saving first word. And it’s blocked not in insert_word page but in main page. Since you use Navigator.push (not Navigator.pushReplacement), the main page reloads as well under word manager.
When you have one word in the list this loop goes in cycles (you can see it with debugger). Change condition to while (words.length > 1 && _oldWord != null && _oldWord.word == word.word).
Add if (words == null) return null; after this line, because later it’ll try to take length of null.
In insert word page replace onSubmitted with onChanged.
Can you confirm that it solves the problem?

Thank you so much @VladyslavBondarenko, I can't believe you actually took the time to review the entire code of my app. It is finally working properly but I have a final question: why was it happening only on my Android device and not on the ADB?
The main issue was the while loop with no exit condition, but why did it work on the emulator?

@SuperMarcomen I don't know how could it work with emulator, on Android 10 (API 29) (emulator) and iOS 13.5 simulator I had the same result as with real Android 9 device with current master and current beta (which is closed to version used by you).
Anyway closing as solved)


feat(frontend): added a drawer to show model properties details in

...in the model directory [pulumi up]

@ApostolosBenisis The quality gates in sonarcloud for this branch are failing cause of the coverage issues caused mainly by components that are not yet implemented.


[Xamarin Forms] Question : How can I detect if a point is inside or outside a circle?

Hello, I would like to know if there is a method that can detect if a point (in this case the GPS) is inside or outside a circle (geofencing or geofencing).
Something similar to this code that is for Android (Java)
float[] disResult = new float[2];

Location.distanceBetween( pos.latitude, pos.longitude,
                          circle.getCenter().latitude,
                          circle.getCenter().longitude,
                          disResult);

if(disResult[0] > circle.getRadius()){
    Log outside
 } else {
    Log inside
 }

Computes the approximate distance in meters between two locations, and optionally the initial and final bearings of the shortest path between them. Distance and bearing are defined using the WGS84 ellipsoid.
The computed distance is stored in results[0]. If results has length 2 or greater, the initial bearing is stored in results[1]. If results has length 3 or greater, the final bearing is stored in results[2].
Parameters
startLatitude | double: the starting latitude
startLongitude | double: the starting longitude
endLatitude | double: the ending latitude
endLongitude | double: the ending longitude
results | float: an array of floats to hold the results
I've been looking at the documentation but I have not found something similar to help me implement it.
If you have any ideas, I would appreciate it.  :)

To know if a point is within a circle it is enough to check if the distance to the center is less than the radius (no fancy geometry). So what you need is a method to calculate the distance between two points in latlon (wgs84, https://epsg.io/4326). There is no such method in Mapsui right now but you should be able to google one. This is the first thing I hit upon: https://stackoverflow.com/a/11172685/85325

Thanks @pauldendulk  for the information, I will investigate a little more what you comment.

This is the code I use and it has served me very well :)
     public static double Distance(double Lat_gps, double Long_gps)
    {

        var lat1 = Lat_gps;
        var lon1 = Long_gps;
        var lat2 = Lat_geo;
        var lon2 = Long_geo;

        var R = 6378.137; // Radius of earth in KM
        var dLat = lat2 * Math.PI / 180 - lat1 * Math.PI / 180;
        var dLon = lon2 * Math.PI / 180 - lon1 * Math.PI / 180;
        var a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Cos(lat1 * Math.PI / 180) * Math.Cos(lat2 * Math.PI / 180) * Math.Sin(dLon / 2) * Math.Sin(dLon / 2);
        var c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
        var d = (R * c) * 1000;
        return d;

    }

@Jesrigt Thanks for giving this back!


Fix/update popen to subprocess

First update of os.popen (which has been deprecated since Python 2.6) to subprocess.Popen - a similar change is needed for the entire code base eventually

I tested this by running the wcs stage on supernova 2016cok
lscloop.py -n 2016cok -e 20160529 --id 112 -s wcs

One of the last things printed is "check astrometry: fine". This is not fine if the subprocess.Popen does not successfully download the catalog.


Helm crashing with no error output

I have a somewhat complex chat with ~5 subcharts. I've started having issues performing upgrades on the chart on helm 2.8 on kops on aws. Particularly when diffing the chart using helm-diff (which basically just does a dry run).
The output I get on the client side is:
2018/02/03 10:48:16 transport: http2Client.notifyError got notified that the client transport was broken EOF.
Error: transport is closing
2018/02/03 10:48:16 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp <IP_ADDRESS>:55924: operation was canceled"; Reconnecting to {<IP_ADDRESS>:55924 <nil>}
2018/02/03 10:48:16 grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing

and the output from the tiller logs is simply
[storage] 2018/02/03 16:47:50 getting last revision of "myapp-blue"
[storage] 2018/02/03 16:47:50 getting release history for "myapp-blue"

Those logs happen before it starts to crash.
The strange part is what happens next. Tiller crashes another 5-10 times with no logs. Even if I log --previous it is just blank.
Describing the deployment just shows the health checks timing out.
Any ideas how I can debug this further?

I'd try the instructions available at https://github.com/kubernetes/helm/issues/3409#issuecomment-364455566 and see if that fixes things. :)

I think I eventually figured this out. There was a dns issue causing my kubernetes nodes to become unreachable. Everything seems fine now.

I saw the Error: transport is closing error too when I ran helm install, and after doing rm -rf ~/.helm, the error was not seen anymore. Guess deleting the helm cache (rm -rf ~/.helm) may resolve the error.


FIDO2 FAILURE 'x5c', was: /dev/hidraw0: Permission denied as non-root user

Nitrokey 3A Mini
OS: Linux
Distribution: Gentoo
As user root I installed libnitrokey
# emerge -lav libnitrokey

and as ordinary user admin I installed pynitrokey
$ pipx install pynitrokey

The key is mounted on /dev/hidraw0
# ls -l /dev/hidraw0
crw-rw-r--+ 1 root root 249, 0 Aug 20 16:14 /dev/hidraw0

Only user root seems to have rw access to the device.
Therefore user root can access the key via nitropy just fine although some errors are logged on fido_id:
# /home/admin/.local/bin/nitropy nk3 list
Command line tool to interact with Nitrokey devices 0.4.27
THIS COMMAND SHOULD NOT BE RUN AS ROOT!

Please install udev rules and run `nitropy` as regular user (without sudo).
We suggest using: https://raw.githubusercontent.com/Nitrokey/libnitrokey/master/data/41-nitrokey.rules
For more information, see: https://docs.nitrokey.com/software/nitropy/linux/udev.html

Set ALLOW_ROOT=1 environment variable to disable this warning.

:: 'Nitrokey 3' keys
/dev/hidraw0: Nitrokey 3 EF6E8C5D3433F6600000000000000000

# udevadm info --query=path /dev/hidraw0
/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:20A0:42B2.0005/hidraw/hidraw0
# udevadm test /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:20A0:42B2.0005/hidraw/hidraw0
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

Trying to open "/etc/systemd/hwdb/hwdb.bin"...
Trying to open "/etc/udev/hwdb.bin"...
=== trie on-disk ===
tool version:          251
file size:        11536610 bytes
header size             80 bytes
strings            2438978 bytes
nodes              9097552 bytes
Load module index
Found cgroup2 on /sys/fs/cgroup/, full unified hierarchy
Found container virtualization none.
Using default interface naming scheme 'v251'.
Parsed configuration file "/lib/systemd/network/99-default.link"
Created link configuration context.
Loaded timestamp for '/etc/udev/rules.d'.
Skipping overridden file '/lib/udev/rules.d/41-nitrokey.rules'.

In contrast, if logged in as ordinary user admin the key cannot be accessed:
$ nitropy nk3 list
Command line tool to interact with Nitrokey devices 0.4.27
:: 'Nitrokey 3' keys
Critical error:
An unhandled exception occurred
        Exception encountered: PermissionError(13, 'Permission denied')

--------------------------------------------------------------------------------
Critical error occurred, exiting now
Unexpected? Is this a bug? Would you like to get support/help?
- You can report issues at: https://support.nitrokey.com/
- Writing an e-mail to<EMAIL_ADDRESS>is also possible
- Please attach the log: '/tmp/nitropy.log.50xo2bpr' with any support/help request!
- Please check if you have udev rules installed: https://docs.nitrokey.com/nitrokey3/linux/firmware-update.html#troubleshooting

$ udevadm info --query=path /dev/hidraw0
/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:20A0:42B2.0005/hidraw/hidraw0
$ udevadm test /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:20A0:42B2.0005/hidraw/hidraw0
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

Trying to open "/etc/systemd/hwdb/hwdb.bin"...
Trying to open "/etc/udev/hwdb.bin"...
=== trie on-disk ===
tool version:          251
file size:        11536610 bytes
header size             80 bytes
strings            2438978 bytes
nodes              9097552 bytes
Load module index
Failed to read $container of PID 1, ignoring: Permission denied
Found cgroup2 on /sys/fs/cgroup/, full unified hierarchy
Found container virtualization none.
Using default interface naming scheme 'v251'.
Parsed configuration file "/lib/systemd/network/99-default.link"
Created link configuration context.
Loaded timestamp for '/etc/udev/rules.d'.
Skipping overridden file '/lib/udev/rules.d/41-nitrokey.rules'.

Skipping PR_SET_MM, as we don't have privileges.
hidraw0: 'fido_id'(err) 'Failed to get current device from environment: Invalid argument'
hidraw0: Process 'fido_id' failed with exit code 1.
hidraw0: /lib/udev/rules.d/60-fido-id.rules:5 Command "fido_id" returned 1 (error), ignoring
hidraw0: /lib/udev/rules.d/71-seat.rules:74 Importing properties from results of builtin command 'path_id'
hidraw0: /lib/udev/rules.d/73-seat-late.rules:16 RUN 'uaccess'
hidraw0: Preserve permissions of /dev/hidraw0, uid=0, gid=0, mode=0664
hidraw0: Failed to adjust timestamp of node /dev/hidraw0: Permission denied
hidraw0: Handling device node '/dev/hidraw0', devnum=c249:0
hidraw0: Failed to create symlink '/dev/char/249:0.tmp-c249:0' to '../hidraw0': Permission denied
hidraw0: Failed to create device symlink '/dev/char/249:0': Permission denied
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:20A0:42B2.0005/hidraw/hidraw0
DEVNAME=/dev/hidraw0
MAJOR=249
MINOR=0
ACTION=add
SUBSYSTEM=hidraw
TAGS=:seat:security-device:uaccess:
CURRENT_TAGS=:seat:uaccess:
ID_PATH=pci-0000:00:14.0-usb-0:2:1.1
ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_1
ID_FOR_SEAT=hidraw-pci-0000_00_14_0-usb-0_2_1_1
run: 'uaccess'
Unload module index
Unloaded link configuration context.

Manually running
# chmod 666 /dev/hidraw0

or adding MODE="0666" to the rules in file /etc/udev/rules.d/41-nitrokey.rules would fix the problem, but that's probably not advised.
Please advise how to best address the issue. Thanks.

The solution to the above described problem was to bring in group plugdev to my system. I achieved this by reinstalling systemd with use flag fido2:
# echo "sys-apps/systemd cryptsetup fido2" > /etc/portage/package.use/systemd
# emerge -lavuDU --with-bdeps=y @world
# gpasswd --add=admin plugdev
# ls -l /dev/hidraw0
crw-rw----+ 1 root plugdev 249, 0 Aug 20 17:43 /dev/hidraw0

The reason why I did this was actually that FIDO2 support doesn't seem to work with the key:
$  nitropy nk3 test
Command line tool to interact with Nitrokey devices 0.4.27
Found 1 Nitrokey 3 device(s):
- Nitrokey 3 at /dev/hidraw0

Running tests for Nitrokey 3 at /dev/hidraw0

[1/3]   UUID query                      SUCCESS         EF6E8C5D3433F6600000000000000000
[2/3]   Firmware version query          SUCCESS         v1.1.0
Please press the touch button on the device ...
[3/3]   FIDO2                           FAILURE         'x5c'

3 tests, 2 successful, 0 skipped, 1 failed

Summary: 1 device(s) tested, 0 successful, 1 failed

Critical error:
Test failed for 1 device(s)

--------------------------------------------------------------------------------
Critical error occurred, exiting now
Unexpected? Is this a bug? Would you like to get support/help?
- You can report issues at: https://support.nitrokey.com/
- Writing an e-mail to<EMAIL_ADDRESS>is also possible
- Please attach the log: '/tmp/nitropy.log.amn3l3uo' with any support/help request!
- Please check if you have udev rules installed: https://docs.nitrokey.com/nitrokey3/linux/firmware-update.html#troubleshooting

Any clue why the 3rd test fails with failure x5c?

@tglaeser I’m surprised that systemd does not support the uaccess mechanism with its default build settings.  It is not specific to FIDO 2.  Thanks for pointing this out!
It looks like the FIDO2 test failure is caused by an error during the device provisioning.  Unfortunately, it is not possible to fix it in field.  Please write a mail to<EMAIL_ADDRESS>including your order number and a reference to this ticket and we will replace the device.


call_line_action - Error on Keyboard Interrupt

When I try to open a file, which is already opened by another instance of NeoVIM, I am getting standard warning and selection between Open (Read-Only), Edit anyway, Recover, Quit, Abort.
As soon as I chose 'Abort`, I am getting following error:
E5108: Error executing lua ...share/nvim/plugged/dashboard-nvim/lua/dashboard/init.lua:208: Keyboard interrupt
stack traceback:
        [C]: in function 'cmd'
        ...share/nvim/plugged/dashboard-nvim/lua/dashboard/init.lua:208: in function 'call_line_action'
        [string ":lua"]:1: in main chunk

NeoVIM 0.7.0

@alexeygumirov  need reproduce step


Debug-print spans more compactly

Description:
dbg!() output on ASTs is kinda verbose,
ExprStmt {
    span: Span {
        lo: BytePos(
            37,
        ),
        hi: BytePos(
            50,
        ),
        ctxt: #0,
    },
    expr: Lit(
        Str(
            Str {
                span: Span {
                    lo: BytePos(
                        37,
                    ),
                    hi: BytePos(
                        49,
                    ),
                    ctxt: #0,
                },
                value: "use strict",
                raw: Some(
                    "\"use strict\"",
                ),
            },
        ),
    ),
}

A lot of the space is wasted on spans — 9 lines per span, even though it's pretty much unimportant cruft. This PR changes that to just one line per span:
ExprStmt {
    span: 37..50#0,
    expr: Lit(
        Str(
            Str {
                span: 37..49#0,
                value: "use strict",
                raw: Some(
                    "\"use strict\"",
                ),
            },
        ),
    ),
}

While not a statistically meaningful measurement, in my tests (sample size = 1) this change reduces the dbg!() of a 1103-byte script from 5597 to 2885 lines, which is a 48% reduction. In {:?} mode it goes from 40034 to 25457 chars, or 37% reduction.

BREAKING CHANGE:
None, Debug output is generally not considered stable.

Related issue (if exists):
None known.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

 Since these files contain dbg!() output, it is very reasonable that they fail, but I'm not sure what to do about it. Is there some command to update the reference files to current values?

UPDATE=1 cargo test should do the trick

This will break https://swc-ast.vercel.app/


Fix scale problem for database controller

raise memory limit
concurrency control

Coverage remained the same at 34.837% when pulling 96111983e97673b2d6a5678d763531f688cdf92e on zhyuhe/dbc-fix into 6a77a9b80a4e280da87d28db499dc099b05e4161 on master.