Update UG DG with renamed commands, added 2101 UG

Codecov Report

Merging #225 (5592ac2) into master (f7d9ddc) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #225   +/-   ##
=========================================
  Coverage     70.51%   70.51%
  Complexity      595      595
=========================================
  Files            85       85
  Lines          1923     1923
  Branches        259      259
=========================================
  Hits           1356     1356
  Misses          448      448
  Partials        119      119

Continue to review full report at Codecov.

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

Do you want me to follow to same style with delete also?


Add: Check technical OS users and groups for SAP are defined locally …

…on Linux Host

@angelabriel @lee-martin could you have a look, please?

@aleksei-burlakov in addition to @lee-martin 2 points from my side:

Even that we do not official support the use of Active Directory, many customers - especially in cloud environments - simply use an AD integration instead of local defined users. And this often cause a lot of trouble.
It would be really helpful, if we can check this situation and give a big warning, that this is unsupported (at the moment).
So not only report 'no local users defined', but additional something like 'use of AD not supported'

the user sidadm needs to be member of the group 'haclient' too, if the customer is using 'sap_suse_cluster_connector' for HA (ENSA1 or ENSA2).
So this needs to be checked too. If not in this check, then we need an additional check.

May I also add my thoughts?

Please do NOT assume there is only one single SID in the cluster. We allow multiple in different resources.
Testing /etc/passwd is not sufficient because the entry could be replaced by a remote definition.
I do nt know if pam gives us a change to calculate, if a user resolution is finally made locally or using remotes.

@aleksei-burlakov in addition to @lee-martin 2 points from my side:

2. the user sidadm needs to be member of the group 'haclient' too, if the customer is using 'sap_suse_cluster_connector' for HA (ENSA1 or ENSA2).
   So this needs to be checked too. If not in this check, then we need an additional check.

Yes, this is for ENSA1 and ENSA2. For HANA we need sudoers entries to be checked, so I would move these checks to
separate tests.

May I also add my thoughts?

Please do NOT assume there is only one single SID in the cluster. We allow multiple in different resources.
Testing /etc/passwd is not sufficient because the entry could be replaced by a remote definition.
I do nt know if pam gives us a change to calculate, if a user resolution is finally made locally or using remotes.

The first point makes sense, @stefanotorresi, @lee-martin  what do you think about this?
About the second point, this check checks explicitelly if the user is set up locally as we recommend in https://documentation.suse.com/sbp/all/single-html/SLES4SAP-hana-sr-guide-PerfOpt-15/ in section 2, "Technical users and groups, such as adm are defined locally in the Linux system."

About the second point, this check checks explicitelly if the user is set up locally as we recommend in https://documentation.suse.com/sbp/all/single-html/SLES4SAP-hana-sr-guide-PerfOpt-15/ in section 2, "Technical users and groups, such as adm are defined locally in the Linux system."

No? We do not say in the SBP that cecking /etc/passwd is sufficient. We only say that you need to make sure that the user, group and host names must be resolved locally - or do I have overseen something?

Please do NOT assume there is only one single SID in the cluster. We allow multiple in different resources.
The first point makes sense, @stefanotorresi, @lee-martin what do you think about this?

If you like I could help you with the coding to get all SID=xxx out of the cluster.

About the second point, this check checks explicitelly if the user is set up locally as we recommend in https://documentation.suse.com/sbp/all/single-html/SLES4SAP-hana-sr-guide-PerfOpt-15/ in section 2, "Technical users and groups, such as adm are defined locally in the Linux system."

No? We do not say in the SBP that cecking /etc/passwd is sufficient. We only say that you need to make sure that the user, group and host names must be resolved locally - or do I have overseen something?

This is correct, so I assumed that local=/etc/passwd

Please do NOT assume there is only one single SID in the cluster. We allow multiple in different resources.
The first point makes sense, @stefanotorresi, @lee-martin what do you think about this?

If you like I could help you with the coding to get all SID=xxx out of the cluster.

This will be helpfull. And it would also be helpfull if you say how to check that the sap_suse_cluster_connector was used?

About the second point, this check checks explicitelly if the user is set up locally as we recommend in https://documentation.suse.com/sbp/all/single-html/SLES4SAP-hana-sr-guide-PerfOpt-15/ in section 2, "Technical users and groups, such as adm are defined locally in the Linux system."

No? We do not say in the SBP that cecking /etc/passwd is sufficient. We only say that you need to make sure that the user, group and host names must be resolved locally - or do I have overseen something?

This is correct, so I assumed that local=/etc/passwd and AD=remote

I did some research and discussions with colleagues.
I would say (at the moment) taht we at least also need to check in nsswitch.conf that the entry for passwd and group are set to either "compat" for "files". If it is set to an other source the entries in /etc/passwd does not play any role.

Please do NOT assume there is only one single SID in the cluster. We allow multiple in different resources.
The first point makes sense, @stefanotorresi, @lee-martin what do you think about this?

If you like I could help you with the coding to get all SID=xxx out of the cluster.

This will be helpfull.

Please give me some time ...

And it would also be helpfull if you say how to check that the sap_suse_cluster_connector was used?

For SAPInstance resources please assume you have sap_suse_cluster_connector integration, so for those SIDs you can check the haclient group membership. For SAPHana, SAPHanaController and SAPHanaTopology we do not need to check this.
For SAPHana* we could (in the future) add checks for the needed sudoers entries (sudo -U xxx -l).

To get a list of SIDs defined in SAPHanaController primitives: (in format value="SID1" value="SID2" ...)
cibadmin -Q | xmllint -xpath '//primitive[@type="SAPHanaController"]//nvpair[@name="SID"]/@value' - ;
Same for SAPHana, SAPHanaTopology and SAPInstance by just replaicing SAPHanaController by the other strings.
With cibadmin -Q | xmllint -xpath '//primitive//nvpair[@name="SID"]/@value' - ; echo
you get any value="SID" (nvpair) of any primitive resource in the cluster which might also hit dummy resources or other
resources which uses a SID=xxx parameter.

@aleksei-burlakov in addition to @lee-martin 2 points from my side:

Even that we do not official support the use of Active Directory, many customers - especially in cloud environments - simply use an AD integration instead of local defined users. And this often cause a lot of trouble.
It would be really helpful, if we can check this situation and give a big warning, that this is unsupported (at the moment).
So not only report 'no local users defined', but additional something like 'use of AD not supported'

@angelabriel @fmherschel I have added a check 1.5.4 that explicitly checks that the adm user is not available from an active directory.

@aleksei-burlakov in addition to @lee-martin 2 points from my side:

Even that we do not official support the use of Active Directory, many customers - especially in cloud environments - simply use an AD integration instead of local defined users. And this often cause a lot of trouble.
It would be really helpful, if we can check this situation and give a big warning, that this is unsupported (at the moment).
So not only report 'no local users defined', but additional something like 'use of AD not supported'

+1

@angelabriel @fmherschel I have added a check 1.5.4 that explicitly checks that the adm user is not available from an active directory.

+1

Could somebody please approve the PR?

I'm afraid this work is lost, and this check needs to be completely re-implemented in Ansible now.


Please specify that this project is using inswapper_128.onnx for face swapping.

Hello.  I don't understand the content of the question.  If the question is about how the face swap approach works, then I made a video about it on YouTube.

The actual name of your faceswap.onnx is inswapper_128.onnx, from the InsightFace project(which you can google it). I noticed that you've credited many open-source projects but did not mention inswapper_128, and renaming it to faceswap.onnx struck me as quite odd.

There were quite a lot of projects for each module, some of which I taught and completely rewrote.  Redmi itself has changed and been downsized many times.  The video talks about all the approaches and neural networks, in fact it is a reminder.  At the moment, I don’t remember why there is something in Redmi, and something not, maybe I got laid off, maybe I changed a lot and there’s practically nothing left from the original approach.
All approaches and libraries that are used under the MIT license.

Face swapping is one of the core features of your project, as can be seen from the sample images in the About section of your README. You also credit many third-party open-source models you used in the Credits section, but you're missing a reference to this most important face swapping model. Additionally, you have removed the original filename inswapper_128 and renamed it to the more neutral faceswap.onnx. No matter how you look at it, it seems a bit odd. Regardless of how many modifications you've made, please acknowledge in the Credits section that your face swapping model comes from the InsightFace project's inswapper_128 model.


Add -u param to usermod in linux_user resource when using non_unique

Signed-off-by: Maxime “pep” Buquet<EMAIL_ADDRESS>Description
-u (uid) parameter is required by usermod when using -o (non_unique). This patch adds the parameter if needed.
I don't have tests for it as apparently there is no test yet for usermod in the linux_spec. I can try to come up with some tests if somebody quickly guides me through it.
Check List

[ ] New functionality includes tests
[ ] All tests pass
[ ] RELEASE_NOTES.md, has been updated if required (not required for bugfixes, required for API changes)
[X] All commits have been signed-off for the Developer Certificate of Origin. See https://github.com/chef/chef/blob/master/CONTRIBUTING.md#developer-certification-of-origin-dco

best place to add a spec would most likely be spec/functional/resource/user/useradd_spec.rb
probably does need a spec, since i think the original patch most likely didn't work, or at least needs a func test to validate it does work.


Fix footer links in default.hbs

When inside the blog clicking on procing, about, or contact links in the footer will result in 404 page, because they're linked to the current domain (which is blog.ghost.org) and they're existing on the main domain (ghost.org).

Nice catch!


name of received share appears as 'home' once accepted

instead of .e.g. '/asdf'

This stop gap makes it work: https://github.com/cs3org/reva/commit/c466de2b1f41a093f6a1ba82bc3b2509f730d7ce
@yasharpm can you see if you can find a way to achieve the same by doing some operation on info.Path?

This is a sample of the share object that the provider sends to the receiver via OCM
'share' =>
  array (
    'shareWith' => 'marie@https://nc2.docker',
    'shareType' => 'user',
    'name' => 'inner2',
    'resourceType' => 'file',
    'description' => '',
    'providerId' => 11,
    'owner' => 'einstein@https://nc1.docker/',
    'ownerDisplayName' => 'einstein',
    'sharedBy' => 'einstein@https://nc1.docker/',
    'sharedByDisplayName' => 'einstein',
    'protocol' =>
    array (
      'name' => 'webdav',
      'options' =>
      array (
        'sharedSecret' => '8DlbywvAGmPz00I',
        'permissions' => '{http://open-cloud-mesh.org/ns}share-permissions',
      ),
    ),
  ),
)

This shows that path is never needed to be sent for file sharing via the OCM. So I am going to get rid of the path entirely and only send the file name.

Turns out filepath.Base actually returns the last element of path. The only part that the code got wrong was that it was trying to get the file name from the path. So passing req.ResourceId.OpaqueId as the parameter for Base fixed the issue.

@michielbdejong I am not authorized to push into the sciencemesh-dev branch.
Change line 269 in file internal/grpc/services/ocmshareprovider/ocmshareprovider.go to
Name:          filepath.Base(req.ResourceId.OpaqueId),

and this issue will be resolved.

ah and don't forget to add the dependency first in line 25: "path/filepath"

A couple of observations here for @yasharpm as you're getting into OCM:

in the OCM v1.1 - which we're aiming for in this implementation! - you do need to pass the full path. As a matter of fact, the legacy way of passing an OCM share is incomplete and navigating a sub-path is still unclear.
req.ResourceId.OpaqueId is opaque and its content shouldn't be assumed to contain file name. It turns out that with the localfs storage driver - the one we all use for demos, but the one that nobody will ever use in production - the opaqueId looks like fileid-<path>, but again this is an implementation detail.

This shows that path is never needed to be sent for file sharing via the OCM. So I am going to get rid of the path entirely and only send the file name.

Saying that, as already said by @glpatcern, the localfs storage driver (particularly the localhome version) is bugged, this is already the case in reva master. We are sending only the file name, as you can see in the code https://github.com/cs3org/reva/blob/507e96e4346c68230b48879b28c231e4d8e68fc3/internal/grpc/services/ocmshareprovider/ocmshareprovider.go#L268

in the OCM v1.1 - which we're aiming for in this implementation! - you do need to pass the full path.

I don't think this is a realistic goal to achieve since you would need to get pull requests into both NC and OC. Considering out time limitations and the fact that OCM v1.1 is not even merged yet let alone being implemented by someone for OC and NC and then the time consuming process of getting the pull requests accepted I don't think this can be done in any time window smaller than at least a couple of months.

req.ResourceId.OpaqueId is opaque and its content shouldn't be assumed to contain file name.

As far as I understand filepath.Base(info.Path) used info which comes from statRes which is set by only passing req.ResourceId to a function called Stat here. So everything is coming from req.ResourceId anyways. Unless there is another field with a non-opaque path in ResourceId I think info.Path doesn't give us any extra information. I also tried to find the implementation of the Stat function. The best I could get was [here])(https://github.com/cs3org/reva/blob/507e96e4346c68230b48879b28c231e4d8e68fc3/pkg/storage/utils/decomposedfs/spaces.go#L182) which is referring to the OpaqueId. I have no idea if I am looking at the right place to be honest. Reva code is hard to read!

We are sending only the file name

I think info.Path only contains the path and not the file name itself. And so the Base function resolves to the latest element in the path which is home and undesired.
@glpatcern @gmgigi96 what do you think?

I don't think this is a realistic goal to achieve since you would need to get pull requests into both NC and OC

I realize I was not clear myself: I meant we're aiming to OCM v1.1 in Reva, and in any Reva-to-Reva communication. Of course NC and OC are out of scope, they will hopefully implement OCM v1.1 whenever it matches their work plan. OCM v1.1 will be merged soon anyway... and Reva is already 99% compliant.
For the rest, Gianmaria is also writing a comment - I acknowledge browsing the Reva code is hard (it is for me as well), anyway the decomposedfs is not implemented in Reva master and the localfs is incomplete/buggy. The "real" storage provider drivers are the nextcloud one and the eos one.

We are sending only the file name

I think info.Path only contains the path and not the file name itself. And so the Base function resolves to the latest element in the path which is home which is undesired and the subject of this issue.

info.Path is supposed (according to the CS3APIs) to have the path of the resource, that also contains as last element the filename.
As already said in my previous comment, localfs + localhome (used in general for tests) might have some bugs, so that the path could not be correctly resolved in some cases. Because the name in the OCM share is meant to be just a tag to the share for the end user in a web UI, this can have whatever value. I know it's annoying seeing home as name, but this is just a bug in the 2 storage drivers. Saying that, I think you can forget this problem for now.

Of course NC and OC are out of scope

Do you mean that we are not going to use NC or OC in our Reva presentation? If we are, I am not sure that the OCM end points of NC or OC can handle a path for a filename in their input. If we are not, then the work that PonderSource is doing is irrelevant for the upcoming deadline and you didn't need to wait for us to complete anything. @michielbdejong are we out of scope? :-)

Saying that, I think you can forget this problem for now.

Let me quickly double check what the receiver side gets from Reva. The issue to my understanding is that you share a file named for example welcome.txt and it shows up as home on the receiving end. If it is the case, we can not ignore it.

@yasharpm the work you / PonderSource are doing is not at all out of scope. Let's have a call whenever you wish, it does not help to write further comments as I see I'm giving for granted a lot of context and as you're relatively new you don't know what has happened.

Saying that, I think you can forget this problem for now.

Let me quickly double check what the receiver side gets from Reva. The issue to my understanding is that you share a file named for example welcome.txt and it shows up as home on the receiving end. If it is the case, we can not ignore it.

I was doing some tests with the configurations in examples/ocmd, and the name is correctly the filename of the resource.

Are you running the latest reva on master?
Which storage drivers are you using?

@michielbdejong I am dropping this issue at this point. Going with the logic that existed i.e. filepath.Base(info.Path), I created folders outer/inner/ on nc1 and shared it with nc2 via Reva. nc2 controller still receives home as name.
If info.Path contains the full path, we would expect inner as the value for name. @glpatcern believes we should be receiving outer/inner which is not the case for now. What I believe we should aim for is inner. What your current commit req.ResourceId.OpaqueId[len("fileid-/home"):] returns is outer/inner which @glpatcern and @gmgigi96 don't like the approach.
I would try to log the actual value for info.Path and ResourceId next but as I have other tasks planned for today, I am not going to chase this any longer.

Ah, right! info.Path comes from
info := statRes.Info which comes from
statRes, err := s.gateway.Stat(ctx, &providerpb.StatRequest{ ...
so since we are using pkg/storage/fs/nextcloud as our storage driver, we can fix this in https://github.com/pondersource/nc-sciencemesh/blob/main/lib/Controller/RevaController.php#L200
And then revert the stop gap entirely. That should be the desired course of action, I think.
Sorry for the whole discussion and confusion about OCM versions in Reva and NC/OC-10!


Header Range issue

Sometimes server returns error 416. I suppose this happens because of wrong range header if preload byte count more then file size. Header when error occurs is Range = "bytes=170636-2097151". First index is more then file size too. When header is "bytes=0-2097151" server returns 0 - 170635 with 206 code after that framework make request with out of bounds range "bytes=170636-2097151" but I think it should be "bytes=170635-170636"
Preconditions: server Amazon CDN, file size = 170636, preloadByteCount = 2097152

Now the preload does not check the actual size of the video, only downloads according to the preset preload size. If I have time, I will try to optimize this.
If you want to avoid this error for now, you can either reduce the preload size or decide not to put the preload in if the video is too small.

I think it can be just wrong first index if header is "bytes=170635-2097151" it works

Sorry, I see what you mean now.

I guess it's because when you called preload, the video was already in the local cache, and the size was 170635, so the first index was 170635. Is that right?

I'll try to fix it.

It happens in really rare case so unfortunately I don't know is it was in local cache or not:(

It has been fixed and released as version 1.2.3, so you can see if your problem is fixed.

Thank you!


Generalize handling of parallelization docs

Parallelization docs were handled hodgepodge.  This PR generalizes them.

Coverage increased (+0.06%) to 77.52% when pulling 7792165ba757ceeb1717b58010acb92fe98a4506 on keflavich:generalize_paralleldocs into 3d071dac6c11e6a8b0bace4ea2898478b5409a01 on radio-astro-tools:master.


Build failure: error compiling ckdtree.

With Mac OS X 10.9.5, python 2.7.10, numpy 1.9.2, I get compilation errors when I build scipy.  I assume it is the result of https://github.com/scipy/scipy/pull/5293;  looks like isinf is referred to when it isn't defined.  For what it's worth:
$ g++ -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix

Here's the relevant part of the output that shows the compilation errors:
building 'scipy.spatial.ckdtree' extension
compiling C++ sources
C compiler: g++ -fno-strict-aliasing -I/Users/warren/anaconda/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall

creating build/temp.macosx-10.5-x86_64-2.7/scipy/spatial/ckdtree
creating build/temp.macosx-10.5-x86_64-2.7/scipy/spatial/ckdtree/src
compile options: '-I/Users/warren/anaconda/include/python2.7 -I/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include -Iscipy/spatial/ckdtree/src -I/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include -I/Users/warren/anaconda/include/python2.7 -c'
g++: scipy/spatial/ckdtree/src/ckdtree_globals.cxx
g++: scipy/spatial/ckdtree/ckdtree.cxx
In file included from scipy/spatial/ckdtree/ckdtree.cxx:250:
In file included from /Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/arrayobject.h:4:
In file included from /Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h:17:
In file included from /Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/ndarraytypes.h:1804:
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: "Using deprecated NumPy API, disable it by "          "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
#warning "Using deprecated NumPy API, disable it by " \
 ^
In file included from scipy/spatial/ckdtree/ckdtree.cxx:254:
scipy/spatial/ckdtree/src/ckdtree_cpp_methods.h:138:14: error: use of undeclared identifier 'isinf'
    else if (npy_isinf(p)) {
             ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4264:16: error: use of undeclared identifier 'isinf'
  __pyx_t_3 = (npy_isinf(__pyx_v_p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4270:16: error: use of undeclared identifier 'isinf'
  __pyx_t_3 = (npy_isinf(__pyx_v_upper_bound) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4327:16: error: use of undeclared identifier 'isinf'
  __pyx_t_3 = (npy_isinf(__pyx_v_p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4391:16: error: use of undeclared identifier 'isinf'
  __pyx_t_3 = (npy_isinf(__pyx_v_self->p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4702:19: error: use of undeclared identifier 'isinf'
  __pyx_t_1 = ((!(npy_isinf(__pyx_v_self->p) != 0)) != 0);
                  ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4778:19: error: use of undeclared identifier 'isinf'
  __pyx_t_1 = ((!(npy_isinf(__pyx_v_self->p) != 0)) != 0);
                  ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5422:16: error: use of undeclared identifier 'isinf'
  __pyx_t_2 = (npy_isinf(__pyx_v_p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5428:16: error: use of undeclared identifier 'isinf'
  __pyx_t_2 = (npy_isinf(__pyx_v_upper_bound) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5485:16: error: use of undeclared identifier 'isinf'
  __pyx_t_2 = (npy_isinf(__pyx_v_p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5549:16: error: use of undeclared identifier 'isinf'
  __pyx_t_2 = (npy_isinf(__pyx_v_self->p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5810:19: error: use of undeclared identifier 'isinf'
  __pyx_t_1 = ((!(npy_isinf(__pyx_v_self->p) != 0)) != 0);
                  ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5896:19: error: use of undeclared identifier 'isinf'
  __pyx_t_1 = ((!(npy_isinf(__pyx_v_self->p) != 0)) != 0);
                  ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:16903:19: error: use of undeclared identifier 'isinf'
  __pyx_t_1 = ((!(npy_isinf(__pyx_v_p) != 0)) != 0);
                  ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:16926:23: error: use of undeclared identifier 'isinf'
      __pyx_t_1 = ((!(npy_isinf((*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_real_r.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_real_r.diminfo[0].strides))) != 0)) != 0);
                      ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:17454:29: error: use of undeclared identifier 'isinf'
            __pyx_t_6 = ((!(npy_isinf(__pyx_v_tracker->p) != 0)) != 0);
                            ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
1 warning and 16 errors generated.
In file included from scipy/spatial/ckdtree/ckdtree.cxx:250:
In file included from /Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/arrayobject.h:4:
In file included from /Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h:17:
In file included from /Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/ndarraytypes.h:1804:
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: "Using deprecated NumPy API, disable it by "          "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
#warning "Using deprecated NumPy API, disable it by " \
 ^
In file included from scipy/spatial/ckdtree/ckdtree.cxx:254:
scipy/spatial/ckdtree/src/ckdtree_cpp_methods.h:138:14: error: use of undeclared identifier 'isinf'
    else if (npy_isinf(p)) {
             ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4264:16: error: use of undeclared identifier 'isinf'
  __pyx_t_3 = (npy_isinf(__pyx_v_p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4270:16: error: use of undeclared identifier 'isinf'
  __pyx_t_3 = (npy_isinf(__pyx_v_upper_bound) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4327:16: error: use of undeclared identifier 'isinf'
  __pyx_t_3 = (npy_isinf(__pyx_v_p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4391:16: error: use of undeclared identifier 'isinf'
  __pyx_t_3 = (npy_isinf(__pyx_v_self->p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4702:19: error: use of undeclared identifier 'isinf'
  __pyx_t_1 = ((!(npy_isinf(__pyx_v_self->p) != 0)) != 0);
                  ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:4778:19: error: use of undeclared identifier 'isinf'
  __pyx_t_1 = ((!(npy_isinf(__pyx_v_self->p) != 0)) != 0);
                  ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5422:16: error: use of undeclared identifier 'isinf'
  __pyx_t_2 = (npy_isinf(__pyx_v_p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5428:16: error: use of undeclared identifier 'isinf'
  __pyx_t_2 = (npy_isinf(__pyx_v_upper_bound) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5485:16: error: use of undeclared identifier 'isinf'
  __pyx_t_2 = (npy_isinf(__pyx_v_p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5549:16: error: use of undeclared identifier 'isinf'
  __pyx_t_2 = (npy_isinf(__pyx_v_self->p) != 0);
               ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5810:19: error: use of undeclared identifier 'isinf'
  __pyx_t_1 = ((!(npy_isinf(__pyx_v_self->p) != 0)) != 0);
                  ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:5896:19: error: use of undeclared identifier 'isinf'
  __pyx_t_1 = ((!(npy_isinf(__pyx_v_self->p) != 0)) != 0);
                  ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:16903:19: error: use of undeclared identifier 'isinf'
  __pyx_t_1 = ((!(npy_isinf(__pyx_v_p) != 0)) != 0);
                  ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:16926:23: error: use of undeclared identifier 'isinf'
      __pyx_t_1 = ((!(npy_isinf((*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_real_r.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_real_r.diminfo[0].strides))) != 0)) != 0);
                      ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
scipy/spatial/ckdtree/ckdtree.cxx:17454:29: error: use of undeclared identifier 'isinf'
            __pyx_t_6 = ((!(npy_isinf(__pyx_v_tracker->p) != 0)) != 0);
                            ^
/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h:201:34: note: expanded from macro 'npy_isinf'
            #define npy_isinf(x) isinf((x))
                                 ^
1 warning and 16 errors generated.
error: Command "g++ -fno-strict-aliasing -I/Users/warren/anaconda/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -I/Users/warren/anaconda/include/python2.7 -I/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include -Iscipy/spatial/ckdtree/src -I/Users/warren/anaconda/lib/python2.7/site-packages/numpy/core/include -I/Users/warren/anaconda/include/python2.7 -c scipy/spatial/ckdtree/ckdtree.cxx -o build/temp.macosx-10.5-x86_64-2.7/scipy/spatial/ckdtree/ckdtree.o" failed with exit status 1

The g++ in Xcode is actually using clang++ with headers from g++ 4.2.1. It thus reports to support C++11 and C99 while only providing C90 in math.h. It is a compiler bug. Any compiler which reports to use C++11 must provide C99 math functions in math.h. Since it reports to provide C++11, npy_math assumes that isinf is available. And when it's not it fails to build. The error is in this particular compiler, not in SciPy or NumPy. You can fix it by using a real g++ (not Apple's fake g++), clang++ or Intel icpc, or add -std=gnu++98 to CXXFLAGS and -std=gnu90 to CFLAGS.

@sturlamolden: As I just said, I can use isinf in C and C++ code.  I don't need to use any additional command line arguments.  For example, here is check_isinf.cxx:
#include <iostream>
#include <cmath>

int main(int argc, char *argv[])
{
    double x = 1.0;

    std::cout << std::isinf(x) << std::endl;

    return 0;
}

$ g++ check_isinf.cxx -o check_isinf
$ ./check_isinf
0

As I just said, ...

Oops.  I just noticed that this is not the same issue as where I said that.  I said it here: https://github.com/scipy/scipy/pull/5314


Fix build (tests) for users having a non-English default locale

The tests AdminApiTest and EqualToXmlPatternTest assert English XML parser
error messages. To make those tests succeed for users having a non-English
default locale we set the default locale to English in those tests.
We refrain from setting the system property user.language in build.gradle
because that would only fix the tests when run from the command line, not when
run from some IDE.

Thanks!


[semver] Breaking change in patch release

Commit 4dec90acbe9e96c30cc152a76cee5e83d173f5a8 introduced a breaking change for some projects, a dependency on React 17+.
This broke semver guarantees, and now npm update breaks when run in a project with React 16.x and react-flatpickr 3.10.7 installed.
Please bump at least the minor release numbers when making breaking changes so the package version can be set with to, for example, 3.10.x for React 16 projects.

You're right, I'm sorry about that, it was a mistake to bump the version when changing to peerDependencies. 3.10.10 should fix that by broadening the acceptable range.
Thanks for the issue!


Don't force type as button, allow links styled as buttons

This package is forcing the use of buttons instead of links and the forms change state, but not route.
The reason I want to use the router to change the form is for 2 reasons:

In the current state, the url path remains the same. For example if you are on the login form /login and then click the register button, the register from is shown, but the user is still at route '/login'.
I am adding a headline to the page through a prop setup in the FlowRouter route for each user account page. This also does not change, so it will show Login above the Register form if the user switches to the register from via the button. This is the case for all form states.

You can easily override the defaults by swapping out the render on the Accounts.ui.Form and Accounts.ui.Button, see how we do that in Semantic or Bootstrap, it's like just a few lines. 👍
https://github.com/studiointeract/accounts-semantic/blob/master/main.jsx#L70-L98

But if we find this being the default to use links rather than defaults, a PR changing this would be appropriate and credited in the Readme ;)


ci: disassemble chart release action

Disassemble chart release action into its subcommands.

This allows for greater control over the release process and is a prerequisite to fixing the automation.
Signed-off-by: Moritz Röhrich<EMAIL_ADDRESS>
[x] I have performed a self-review of my code.
[x] If it is a core feature, I have added thorough tests.
[x] CHANGELOG.md has been updated should there be relevant changes in this PR.

This PR is part of the story for merging the charts & tools repository into main s3gw#166. Since priorities have shifted and the PR is outdated we'll close it and work on it in future cycles


ES6 for Angular

Hi Jhon, thanks for the huge contribution!
I suggest update  angular1's styleguide including ES6 syntax and preparation guide for migrate to Angular 2 https://angular.io/docs/ts/latest/guide/upgrade.html#!#preparation

would be nice, yes. but i'm not going to create an ES5, ES6, ES7, and TS version of this guide for A1. Right now I'm leaving it as ES5 for A1 and TS for A2. Feel free to create one tho


rvm error after starting zsh

I'm getting this error when opening new zshell:
/Users/mgmerino/.rvm/scripts/initialize:48: __rvm_cleanse_variables: function definition file not found
/Users/mgmerino/.rvm/scripts/initialize:50: command not found: rvm_error

As suggested on other related answers, I've
rm -r ~/.zcompdump

but the folder is generated every time I open a new shell, so this does nothing. Any idea?
system info:
osx 10.11.2
rvm 1.26.11

Follow this instructions to capture a debugging session and post back the results in a gist.

https://gist.github.com/emedlr/f6daf3bb53a35746e3cb

Here's the relevant part of the results:
 6206 +/Users/mgmerino/zgen.zsh:471> ZGEN_AUTOLOAD_COMPINIT=true
 6207 if $ZGEN_AUTOLOAD_COMPINIT; then
 6208     autoload -U compinit
 6209     compinit -d "${ZGEN_DIR}/zcompdump"
 6210 fi
 6211 +/Users/mgmerino/zgen.zsh:472> true
 6212 +/Users/mgmerino/zgen.zsh:473> autoload -U compinit
 6213 +/Users/mgmerino/zgen.zsh:474> compinit -d /Users/mgmerino/.zgen/zcompdump

It seems you're using zgen after loading Oh My Zsh─which is not the intended way to be done, see the example zshrc─but that is not the culprit though, and it's more than possible that it can work either way.
The problem is that zgen is generating its own zcompdump file, so you should rm ~/.zgen/zcompdump instead of the ~/.zcompdump* which is where Oh My Zsh stores the completion cache file.
You can delete the gist now, and tell me if doing that solves your problem.

Thanks @mcornella, finally rm ~/.zgen/zcompdump solved the issue.

:+1:

similar thing for zplug: rm ~/.zplug/zcompdump

For me it is rm ~/.zcomp*

@cyyyu  rm ~/.zcomp* fixed the issue for me too. thanks!

@cyyyu rm ~/.zcomp* fixed the issue for me too in mac os!! thank you

@cyyyu rm ~/.zcomp* fixed the issue. Thanks!

Thanks!

@mgmerino thank you!! rm ~/.zplug/zcompdump for those using zplug

for me rm ~/.zlogin fixed the issue, thank you.


Fix bug where restored CIDR identities would be incorrectly released, leading to packet loss

Boris (@carnerito) and Jason (@jwitko) report that ten minutes after startup, Cilium releases CIDR identities that are allowing Cilium to implement network policy, which leads to connectivity outages. Boris traced this down to commit c96b9d81a8a6 ("ipcache: Remove superfluous if condition") which attempted to solve a reference leak issue in the core of ipcache. Upon deeper inspection, the agent's CIDR Identity restore logic was not playing well with network policy allocations of CIDR Identity in the ipcache, due to a misalignment of expectations of ownership over Identity and IPcache entry structures between the two agent modules. This commit resolves the misalignment by moving the CIDR Identity restore logic over to the newer IPCache APIs, thereby balancing the reference counting ownership between the different code paths.
This PR fixes two related bugs that cause packet drops during a Cilium agent restart or upgrade:

IPs corresponding to FQDNs known by a previous cilium-agent are forgotten after 10m until the subsequent DNS request by the apps using those FQDNs
IPs used in CIDR policies lose connectivity until the user adjusts those policies, causing Cilium to re-evaluate the policy posture.

The first one is due to the interplay between identity reference counting in the agent startup logic and the DNSNameManager / SelectorCache modules. The second one is a similar interplay between the agent and the core ipcache (particularly related to the new internal APIs which are used by the policy engine in v1.14).
Review commit-by-commit, in particular the last two commits which have detailed commit messages for the fixes.
Tasks:

[x] Test the fixes using #27253

#27253 fails on its own against the main branch.
The final commit fix from this PR by itself also fails, but for a different test around ToFQDNs.
With all commits, this resolves the initial report as well as the hidden ToFQDNs reference tracking bug that was revealed through testing on top of #27253 .

[x] Manual testing
[ ] Create hotfix image for user testing
[ ] List all related filed issues

Fixes: #27210

/ci-ginkgo

/ci-ginkgo

/ci-ginkgo

/ci-ginkgo

/ci-ginkgo

/ci-ginkgo

/ci-ginkgo

/test

Thanks for the reviews, I've addressed some of the initial feedback. I think there's still a few steps that need to be investigated a bit more deeply before proceeding with this PR, specifically around some of the ordering constraints as raised by reviews from Lorenz and Casey.
After some discussion with the reviewers and re-evaluating the state of this PR, I think that it's going in the right longer term direction for several aspects, but for now there may be a simpler and more reliable fix in order to resolve the issue for v1.14. I've filed https://github.com/cilium/cilium/pull/27327 to follow up on that, and I'll pursue that option first before returning to this PR.

I'll go ahead and close this one out in favor of https://github.com/cilium/cilium/pull/28673 . I think that Casey has a bit more available bandwidth at the moment to push the proper solution across the line on this front, and his PR is not burdened with the commit messages assuming one bugfix or another may be applied within the changes due to historic versions of the change. We can take a closer look at any of the remaining tasks from this PR as part of review on that PR.


Safe area with keyboard showing has excess padding above the keyboard on iPhone X

On phones that have a "Safe Area" at the bottom, such as the iPhone X, the safe area seems to still be respected even when the keyboard shows.
This behavior can be seen with the following build method:
@override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("Safe Area Test"),
      ),
      body: new Builder(
        builder: (BuildContext context) {
          return new SafeArea(
            child: new Stack(
              children: <Widget>[
                new Positioned(
                  left: 0.0,
                  right: 0.0,
                  bottom: 0.0,
                  height: 60.0,
                  child: new Container(
                    padding: const EdgeInsets.symmetric(
                        vertical: 10.0, horizontal: 5.0),
                    color: Colors.yellow,
                    child: new Center(
                      child: new Container(
                        decoration: new BoxDecoration(
                          color: Colors.white,
                          borderRadius: new BorderRadius.circular(20.0),
                        ),
                        padding: const EdgeInsets.only(left: 10.0, right: 0.0),
                        height: 50.0,
                        child: new Row(
                          children: <Widget>[
                            new Expanded(
                              child: new TextField(
                                decoration: new InputDecoration(
                                  border: InputBorder.none,
                                ),
                              ),
                            ),
                            new Container(
                              width: 40.0,
                              height: 40.0,
                              child: new Material(
                                borderRadius: new BorderRadius.circular(20.0),
                                type: MaterialType.transparency,
                                child: new IconButton(
                                  onPressed: () {
                                  },
                                  icon: new Icon(Icons.arrow_upward),
                                ),
                              ),
                            ),
                          ],
                        ),
                      ),
                    ),
                  ),
                ),
              ],
            ),
          );
        },
      ),
    );
  }

And an image of the described issue:

Steps to Reproduce

Build a screen with a safe area and a text field aligned to the bottom, the sample code above has it.
Click into the textfield so the keyboard appears
See described issue

Logs
flutter run
Launching lib/main.dart on iPhone X in debug mode...
Syncing files to device iPhone X...                          2.1s

🔥  To hot reload your app on the fly, press "r". To restart the app entirely, press "R".
An Observatory debugger and profiler on iPhone X is available at: http://<IP_ADDRESS>:8100/
For a more detailed help message, press "h". To quit, press "q".

flutter analyze
Analyzing /Users/KG/Developer/Mine/testing_safe_to_delete_all_contents/keyboard_safe_area_test...
No issues found!
Ran in 6.2s

Flutter Doctor
[✓] Flutter (Channel master, v0.2.5-pre.41, on Mac OS X 10.12.6 16G1212, locale en-US)
    • Flutter version 0.2.5-pre.41 at /Users/KG/Developer/Flutter/flutter
    • Framework revision 2171fcb882 (2 days ago), 2018-03-25 00:04:24 -0700
    • Engine revision 6280adbfb1
    • Dart version 2.0.0-dev.39.0.flutter-06949dc985

[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
    • Android SDK at /Users/KG/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-27, build-tools 27.0.3
    • ANDROID_HOME = /Users/KG/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b08)
    • All Android licenses accepted.

[✓] iOS toolchain - develop for iOS devices (Xcode 9.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 9.2, Build version 9C40b
    • ios-deploy 1.9.2
    • CocoaPods version 1.3.1

[✓] Android Studio (version 3.0)
    • Android Studio at /Applications/Android Studio 3.0RC2.app/Contents
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b08)

[✓] Android Studio (version 3.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b08)

[✓] IntelliJ IDEA Community Edition (version 2017.2.7)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 21.2.2
    • Dart plugin version 172.4343.25

[✓] VS Code (version 1.21.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Dart Code extension version 2.10.0

cc @cbracken

Also experiencing this, it'd be nice to also incorporate some form of keyboardDismissMode with a ListView.  The input area should also follow the dragging motion similar to an inputAccessoryView.

Sorry for the late response. There were some related changes.
Is this still an issue in recent Flutter versions?

Yes this is still an issue with the project I am working on.
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel dev, v0.5.7, on Mac OS X 10.13.5 17F77, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 9.4.1)
[✓] Android Studio (version 3.1)
[!] IntelliJ IDEA Community Edition (version 2017.3.2)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] VS Code (version 1.25.0)
[✓] Connected devices (1 available)

also confirming that it is still an issue for me as well
[✓] Flutter (Channel master, v0.5.8-pre.61, on Mac OS X 10.13.6 17G65, locale en-US)
    • Flutter version 0.5.8-pre.61 at /Users/KG/Developer/Flutter/flutter
    • Framework revision b8b6d4166c (16 hours ago), 2018-07-17 18:07:54 -0700
    • Engine revision 5557e3006e
    • Dart version 2.0.0-dev.67.0.flutter-84ca27a09e

[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
    • Android SDK at /Users/KG/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-27, build-tools 27.0.3
    • ANDROID_HOME = /Users/KG/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
    • All Android licenses accepted.

[✓] iOS toolchain - develop for iOS devices (Xcode 9.4.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 9.4.1, Build version 9F2000
    • ios-deploy 1.9.2
    • CocoaPods version 1.5.3

[✓] Android Studio (version 3.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 26.0.1
    • Dart plugin version 173.4700
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)

[✓] IntelliJ IDEA Community Edition (version 2017.2.7)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 21.2.2
    • Dart plugin version 172.4343.25

I also experience this on the master and beta channels

#18562 looks related that was merged 4 days ago but that should be included in v0.5.8-pre.115
You could try setting a different scrollPadding value.

Don't think scrollPadding has anything to do with this issue. In my specific case i have a button outside the ListView and sticked to the bottom and when the keyboard appears it looks funky ><

@cbracken I think we need another condition at https://github.com/flutter/flutter/blob/da0e898da9c329192cd1ef4f8fe6e7d03a952adc/packages/flutter/lib/src/material/scaffold.dart#L1443 for if widget.resizeToAvoidBottomPadding is true and mediaQuery.viewInsets.bottom > 0 (though ideally subtract mediaQuery.viewInsets from mediaQuery.padding). Does that sound right?

If I move my buttons into the Scaffold.persistentFooterButtons the bottom padding will go away when the keyboard shows, but im left with a divider I don't want :-) So adding something to the removeBottomPadding  as @xster suggest seems the way to go

A super easy fix would also be to manually apply the required safe area padding and check whether the keyboard is currently open with MediaQuery.
You can find out the current keyboard height with MediaQuery.of(context).viewInsets.bottom > 0.0
If that is the case you just don't apply the safe area, which you can get with MediaQuery.of(context).padding.bottom
You could even create a custom widget that does this for you. But in my opinion I would add an option the the SafeArea widget that allows to remove the bottom safe area when the keyboard is open
I inserted my check into the didChangeDependnecies method.

Thanks @wwwdata, that worked like magic :-)

@wwwdata can you please provide an example of your proposal?

@ma-rp it is very easy. You can either make a custom SafeArea Widget that takes in a child Widget. Or if you just need it once, use a stateful component and then do it like this:
double _safeAreaHeight;

@override
void initState() {
  super.initState();
  _safeAreaHeight = MediaQuery.of(context).padding.bottom;
}

@override
void didChangeDependencies() {
  super.didChangeDependencies();
  final bool isKeyboardVisible = MediaQuery.of(context).viewInsets.bottom > 0.0;
  if (isKeyboardVisible && _safeAreaHeight > 0.0)) {
    setState(() {
      _safeAreaHeight = 0.0;
    });
  } else if (!isKeyboardVisible && _safeAreaHeight == 0.0) {
    setState(() {
      _safeAreaHeight = MediaQuery.of(context).padding.bottom;
    });
  }
}

and then in your build method, use that _safeAreaHeight variable as padding manually.
But if you need this behaviour more often, just do a small custom stateful component that does this check for you and renders a child Widget with a surrounding Padding Widget. That's it.

@zoechi If it's correct that https://github.com/flutter/flutter/pull/18562 caused this problem, what is the right thing to do? Would you revert that PR until it has been improved to not cause this problem?
I'll try backing out the PR on my local branch, and see if it is the cause.

@goderbauer I wonder if you'd mind taking a look at this issue? It's possible it's related to your PR https://github.com/flutter/flutter/pull/18562

@Norbert515 / @goderbauer I just tried reproducing the problem with and without the changes in PR https://github.com/flutter/flutter/pull/18562/ and the problem this issue is about is still there without the changes.
@zoechi After an empirical test, I'm pretty sure this isn't to do with that PR

@xster missed your last comment while I was out in Japan. Your proposal sounds right to me; that looks like an oversight on my part from back when this was added.

/cc @GaryQian

Sent out a fix for this in flutter/engine#6297.

The fix has landed. When the engine rolls to the framework, this will be available on master.

Fixed by: https://github.com/flutter/engine/pull/6297

@cbracken I am still facing this issue.
I am on flutter version  1.19.0-4.1.pre


Included NFS server Package on Prerequisite

I have added NFS server Package on Prerequisite section. nfs-kernel-server package to be installed and service to be started in order to share the nfs folder to accept vagrant. Thanks.

Thank you @deenamanick


feat: Adds mechanism to generate tests by parsing savedsearches.conf.

Mechanism to generate tests by parsing savedsearches.conf.
Documentation Update.
Added tests in TA_Fiction and TA_Broken.

I have read the CLA Document and I hereby sign the CLA

:tada: This PR is included in version 1.4.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.4.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


public master instance: wrong url in email

The links in an email sent by ownerblue point to satvm02

everything running on this instance is currently configured for internal useonly as the instance itself does not contain any changes yet, we merely have the nginx configuration running on live (for now) that redirects said url to the master server, once the configuration is done and merged into master we need to remove all the old content too since the existing uris would not be accessible from the "outside"


Feature/new checkbox icons

Ensuring I have the states and icons replaced where appropriate.

I think you want one of these examples to be selected and disabled, right?


Mocking framework

Hi,
hope find you well with this cold call.
I am an author of mocking framework for Kotlin
I see you are using mockito-kotlin.
I just want you to be aware that there is solution that fully supports Kotlin and ask to try it in your new/current projects.
I can help you if you answer to this issue.
Thanks and please star it

Hi @oleksiyp ,
I hadn't heard of it before. So, I replaced some tests written with mockito by mockk and apreciated it a lot. :). ⭐
I rewrite some tests in another project too: https://github.com/felipehjcosta/kotlin-microservice
Thanks!


Addon Issue

Addons not working for both VideoEditor and DatabaseManager both produce the same error.

Commenting out the Unlock and DependsOn field fixes the issue? need to try to see whats wrong with it?

Issue has been figured out, Last feature in Addons cannot have a depends on Element.


check for existing packages

One of the libraries I used isn't Python2.7 compatible. I'll fix that

Thanks for the brainstorming on this and for the draft implementation. I've instead gone with the implementation referenced above (a2f6ce52bd5b88641b91e90ef9fe91928b1625e9), but your ideas here helped.

Glad I could help with this!


The progress spinning wheel in activity log is not in high contract color

Storage Explorer Version:  1.0.0
OS Version:  Windows 10

A change is merged to make the progress spinner's color adjust according to the theme.


CAT not working after upgrade to Sierra 10.12.6

OS Version: 10.12.6
Mac model: MBP E 2011
Dongle or replaced card?: replaced
Used dongle/card: card

Your Issue: Bluetooth not connecting to devices and Airdrop no longer working after upgraded to Sierra 10.12.6 in July 2017.
Steps done to try to fix the issue:
System info - 'Handoff not supported'
csrutil status -
System Integrity Protection status: enabled (Custom Configuration).
Configuration:
Apple Internal: disabled
Kext Signing: disabled
Filesystem Protections: enabled
Debugging Restrictions: enabled
DTrace Restrictions: enabled
NVRAM Protections: enabled
BaseSystem Verification: enabled
What do???

Same here: MacBookPro8,3 on 10.12.6.
"Bluetooth not available"

Similarly, I'm using High Sierra (beta 6?) and it's not working.
I have a MacBook Air Mid 2011 (13") that's supposed to work out of the box.

The same for me. After upgrading to 10.12.6 handoff on my Mac mini 2011 became not working.  When I re-installed CAT, bluetooth connections became unavailable at all: from Bluetooth pane I can see my Magic Trackpad but "connect" action fails, I can also see my iPhone SE but handoff doesn't work.  After uninstallation of CAT Trackpad returns, handoff checkbox on General pane disappears.


[FEATURE] Put up web page https://easyeyes.app/threshold

PUT UP THE THRESHOLD PAGE. Let's implement the bare bones user interface of https://easyeyes.app/threshold/ . Create a threshold.html web page in the EasyEye.app directory. It should have the same menu bar as the rest of the pages in the easyeyes.app directory. For the time being, the common menu bar will NOT mention "Threshold". So the public won't easily find our page. I realize that Google will track it, but we don't need high security. Right now I imagine:
• Menu bar, consistent with rest of EasyEyes.app
• Easy uploading of a Threshold table to the EasyEyes directory. Uploading immediately begins the preprocessor.
• A radio button selecting whether to run the preprocessor WITHOUT requiring a Pavlovia account.
• A radio button selecting whether or not to enable automatic upload to Pavlovia. (Grayed out if scientist selected to run without pavlovia.)
• Once the preprocessor runs, it should display a page of errors that can be saved to disk as a plain text file, possibly with Markdown formatting.
• If and when the preprocessor finds no errors, and "automatic upload" is on, upload files to a new project in the scientist's Pavlovia account, and display a copyable display of the URL of the uploaded experiment. Label it:
URL to run your uploaded experiment:
• Note that any uploading to Pavlovia will require OAuth logging into Pavlovia.
The preprocessor will check that any required consent forms and fonts are present in Pavlovia.
As a friendly gesture to visitors who may not yet have Pavlovia accounts, we offer the option of preprocessing WITHOUT Pavlovia to allow the scientist to see whatever error messages the preprocessor produces. However, we should NOT allow uploading to pavlovia until the preprocessor has checked the table's specified fonts and consents against those available in the EasyEyesResources folder of their Pavlovia site.

ADD HANDLING OF FONTS AND CONSENTS.
In easyeyes/threshold, add user interface elements for easy uploading of a few consent forms and Fonts to the EasyEyesResources/Consents and EasyEyesResources/Consents folders in the scientist's Pavlovia account, and an easy way to get (popup?) directories of both folders. (This will require OAuth login to the scientist's Pavlovia account.) The popup directories must allow selection and copying of the file names to the clipboard. We must provide a way to delete a file from either folder. 1 day.

Just so we don't accidentally spend time recreating anything, the Javascript translation of the preprocessor can be found in the control-panel (private) repo. At the moment, it just does

• Easy uploading of a Threshold table to the EasyEyes directory. Uploading immediately begins the preprocessor.

I think we should keep using that other repo (renaming if desired) for development of this experimenter-facing side of things (ie not in the Threshold repo). The web-page itself will need to be in the website repo.  @peilingjiang do I remember correctly that you did something similar for the remote calibrator, ie develop in its own repo, then embed the repo w/in the website repo?

ADD HANDLING OF FONTS AND CONSENTS to the EasyEyes.app/threshold web page.
In easyeyes/threshold, add user interface elements for easy uploading of a few consent forms and Fonts to the EasyEyesResources/Consents and EasyEyesResources/Consents folders in the scientist's Pavlovia account, and an easy way to get (popup?) directories of both folders. (This will require OAuth login to the scientist's Pavlovia account.) The popup directories must allow selection and copying of the file names to the clipboard. We must provide a way to delete a file from either folder. 1 day.

We probably ought to create a new "issue" for every feature request. We can only close the issue as a whole, afaik, so adding new requests in the thread will make the current state of affairs less obvious.

Dear Gus
I understand, but even though fonts and consent forms are distinct
categories, it's the same code. The only difference is the instruction and
the destination folder.
I think it's fine to have feature requests, but I'm finding them nearly
useless for project management, as they do not provide a useful display of
how we're doing. Until something better appears, I'm going back to my excel
spreadsheet, which i can sort in various ways and provides a compact useful
display of our status.
Best
Denis
[image: photo]
Denis Pelli
Professor of Psychology & Neural Science, New York University
+1-646-258-7524 | @.***
http://psych.nyu.edu/pelli/ | Skype: denispelli <#>
| http://denispelli.com
https://www.facebook.com/denispelli
https://www.linkedin.com/in/denispelli/ http://twitter.com/denispelli

On Mon, Sep 20, 2021 at 11:19 AM Gus Burchell @.***>
wrote:

ADD HANDLING OF FONTS AND CONSENTS to the EasyEyes.app/threshold web page.
In easyeyes/threshold, add user interface elements for easy uploading of a
few consent forms and Fonts to the EasyEyesResources/Consents and
EasyEyesResources/Consents folders in the scientist's Pavlovia account, and
an easy way to get (popup?) directories of both folders. (This will require
OAuth login to the scientist's Pavlovia account.) The popup directories
must allow selection and copying of the file names to the clipboard. We
must provide a way to delete a file from either folder. 1 day.
We probably ought to create a new "issue" for every feature request. We
can only close the issue as a whole, afaik, so adding new requests in the
thread will make the current state of affairs less obvious.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_EasyEyes_threshold_issues_17-23issuecomment-2D923025376&d=DwMCaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=7X-NKAXavKeKD9gIvst_RX6MqmtP6wERm4LVB5ZkcI4&m=G14yY5mDamDktoBwYgfTebYWOxesEJWzup4Ruu4q1KU&s=-lHoTSB2j4Q7r7SH2BdG-AxdtXzZgA0iKfmNr-9e_9g&e=,
or unsubscribe
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_ADKWX62R73BLYXOX6UNF7YDUC5GGXANCNFSM5EKUCYOA&d=DwMCaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=7X-NKAXavKeKD9gIvst_RX6MqmtP6wERm4LVB5ZkcI4&m=G14yY5mDamDktoBwYgfTebYWOxesEJWzup4Ruu4q1KU&s=j010Mj1OtuYSl1OCDFVDDdkTScOZ4SP76QDqLUKuK1o&e=
.
Triage notifications on the go with GitHub Mobile for iOS
https://urldefense.proofpoint.com/v2/url?u=https-3A__apps.apple.com_app_apple-2Dstore_id1477376905-3Fct-3Dnotification-2Demail-26mt-3D8-26pt-3D524675&d=DwMCaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=7X-NKAXavKeKD9gIvst_RX6MqmtP6wERm4LVB5ZkcI4&m=G14yY5mDamDktoBwYgfTebYWOxesEJWzup4Ruu4q1KU&s=kxMPlFrGQd5am2t5uSHMjwDVOhyNh4RfY4cZOphkZng&e=
or Android
https://urldefense.proofpoint.com/v2/url?u=https-3A__play.google.com_store_apps_details-3Fid-3Dcom.github.android-26referrer-3Dutm-5Fcampaign-253Dnotification-2Demail-2526utm-5Fmedium-253Demail-2526utm-5Fsource-253Dgithub&d=DwMCaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=7X-NKAXavKeKD9gIvst_RX6MqmtP6wERm4LVB5ZkcI4&m=G14yY5mDamDktoBwYgfTebYWOxesEJWzup4Ruu4q1KU&s=L9bwiSvMVTSvoDo9MpB1AbX7xX5j0qPVpmlS-MpYd4E&e=.

Dear Gus
Thx for the heads up. This seems needlessly complicated. The main point of
a repo is to make it easy to find things. The preprocessor is an essential
part of the project. I'd like to keep the threshold project in the
threshold repo. Ok?
Am I missing something?
Best
Denis
[image: photo]
Denis Pelli
Professor of Psychology & Neural Science, New York University
+1-646-258-7524 | @.***
http://psych.nyu.edu/pelli/ | Skype: denispelli <#>
| http://denispelli.com
https://www.facebook.com/denispelli
https://www.linkedin.com/in/denispelli/ http://twitter.com/denispelli

On Mon, Sep 20, 2021 at 11:15 AM Gus Burchell @.***>
wrote:

Just so we don't accidentally spend time recreating anything, the
Javascript translation of the preprocessor can be found in the control-panel
(private) repo
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_EasyEyes_control-2Dpanel&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=7X-NKAXavKeKD9gIvst_RX6MqmtP6wERm4LVB5ZkcI4&m=7vJ4ghobMDoyI3jJBy-GeGraHQP3RZ09IOnHdBfHdNM&s=lgtan3pO9DSWnexn3K8FAY6OGfC3eJ6jwYy9ABe9Cfc&e=.
At the moment, it just does
• Easy uploading of a Threshold table to the EasyEyes directory. Uploading
immediately begins the preprocessor.
I think we should keep using that other repo (renaming if desired) for
development of this experimenter-facing side of things (ie not in the
Threshold repo). The web-page itself will need to be in the website repo.
@peilingjiang
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_peilingjiang&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=7X-NKAXavKeKD9gIvst_RX6MqmtP6wERm4LVB5ZkcI4&m=7vJ4ghobMDoyI3jJBy-GeGraHQP3RZ09IOnHdBfHdNM&s=PRyvZ1X1BsopKKwD14apZDiy2silv5SYgvCw133MUIo&e=
do I remember correctly that you did something similar for the remote
calibrator, ie develop in its own repo, then embed the repo w/in the
website repo?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_EasyEyes_threshold_issues_17-23issuecomment-2D923021836&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=7X-NKAXavKeKD9gIvst_RX6MqmtP6wERm4LVB5ZkcI4&m=7vJ4ghobMDoyI3jJBy-GeGraHQP3RZ09IOnHdBfHdNM&s=LM-KaTfVh6i9RMfeD-PefVE_9hMoZS8mIrFOgVUfMII&e=,
or unsubscribe
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_ADKWX6YJX25DO4TWB5MNORDUC5FX5ANCNFSM5EKUCYOA&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=7X-NKAXavKeKD9gIvst_RX6MqmtP6wERm4LVB5ZkcI4&m=7vJ4ghobMDoyI3jJBy-GeGraHQP3RZ09IOnHdBfHdNM&s=kdMk99WTvTbjWbL01iydxZaZYX3KmWrs3NFT7Vfy8dU&e=
.
Triage notifications on the go with GitHub Mobile for iOS
https://urldefense.proofpoint.com/v2/url?u=https-3A__apps.apple.com_app_apple-2Dstore_id1477376905-3Fct-3Dnotification-2Demail-26mt-3D8-26pt-3D524675&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=7X-NKAXavKeKD9gIvst_RX6MqmtP6wERm4LVB5ZkcI4&m=7vJ4ghobMDoyI3jJBy-GeGraHQP3RZ09IOnHdBfHdNM&s=0A3DWX0FiyvZ2tmyvd47Xu4rA6Nnw4HmPDNvPok9xMw&e=
or Android
https://urldefense.proofpoint.com/v2/url?u=https-3A__play.google.com_store_apps_details-3Fid-3Dcom.github.android-26referrer-3Dutm-5Fcampaign-253Dnotification-2Demail-2526utm-5Fmedium-253Demail-2526utm-5Fsource-253Dgithub&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=7X-NKAXavKeKD9gIvst_RX6MqmtP6wERm4LVB5ZkcI4&m=7vJ4ghobMDoyI3jJBy-GeGraHQP3RZ09IOnHdBfHdNM&s=FEzpZEn3nfzghQq3EF7QBc4KVYVIrQiOPnAmWYcluzY&e=.

Dear Gus I understand, but even though fonts and consent forms are distinct categories, it's the same code. The only difference is the instruction and the destination folder. I think it's fine to have feature requests, but I'm finding them nearly useless for project management, as they do not provide a useful display of how we're doing. Until something better appears, I'm going back to my excel spreadsheet, which i can sort in various ways and provides a compact useful display of our status. Best Denis [image: photo] Denis Pelli Professor of Psychology & Neural Science, New York University +1-646-258-7524 | @.*** http://psych.nyu.edu/pelli/ | Skype: denispelli <#> | http://denispelli.com https://www.facebook.com/denispelli https://www.linkedin.com/in/denispelli/ http://twitter.com/denispelli
…

I apologize, I should have been more clear. I didn't mean that the fonts and consents should be different issues, but that "ADD HANDLING OF FONTS AND CONSENTS" should be it's own issue from "PUT UP THE THRESHOLD PAGE". Excel seems to work great for you, but for me as a developer Github is much more useful. It sounds like what you're looking for is the Project page, which provides a table of relevant Issues and their state (ie To Do/In progress/Complete). I would ask that you not abandon the workflow -- which we have all agreed on, and have only just started using -- because I made a request for the sake of making progress clear (ie represent separate tasks as separate Issues).

Dear Gus Thx for the heads up. This seems needlessly complicated. The main point of a repo is to make it easy to find things. The preprocessor is an essential part of the project. I'd like to keep the threshold project in the threshold repo. Ok? Am I missing something?

No, I think you're right. There is some developer-side benefit (or maybe just personal preference) with having a separate repo, but @peilingjiang has shown me a way (using submodules) that we can have those benefits while still including the files in the Threshold repo as you request. Peiling said he will take care of this, and start on the page you initially requested, today.


Suggestion: Tone.Offline might benefit from ability to control when the rendering process starts

When using Sampler and Players in the Tone.Offline callback I am running into an issue that by the time Sampler or Player nodes have been loaded rendering is already done. It might be useful for offline callback to look something like this:
Tone.Offline((Transport, startRender) => {
  new Sampler({
    "C3" : "path/to/C3.mp3",
    "D#3" : "path/to/Dsharp3.mp3",
    "F#3" : "path/to/Fsharp3.mp3",
    "A3" : "path/to/A3.mp3",
   }, () => {
    // ... schedule events
    startRender()
  })
})

Of course we could preload buffers outside of Tone.Offline call and then pass them in to the sampler in the callback, but this becomes increasingly more difficult when the node creation is abstracted in another external function

Thanks for the suggestion, i like your proposed solution.
There is currently an undocumented way to do this, but i'm not totally satisfied with the API yet. Currently you can return a promise within Tone.Offline, and the context will wait until that promise is resolved before starting to render.

@tambien can you give an example of what you mean by "return a promise within Tone.Offline, and the context will wait until that promise is resolved before starting to render"?

The attached HTML document (added with a .txt extension because GitHub won't let me upload it otherwise) demonstrates the problem, or at least the way I'm trying to invoke this.
When opened, the HTML document has four links:

Basic Synth (online) - plays some notes using Tone.Synth directly
Sampler (online) - plays some notes using Tone.Sampler directly
Basic Synth (offline) - plays some notes using Tone.Synth via Tone.Offline (then plays the generated buffer)
Sampler (offine) - plays some notes using Tone.Sampler via Tone.Offline (then plays the generated buffer), or at least tries to

The first three links seem to work fine and can be repeated an arbitrary number of times.
The fourth (offline sampler) doesn't work as-is and I'm not able to get it to work in any variation I've tried.  In the current setup I'm getting "Error connecting to node: [object GainNode]" when I try to call sampler.triggerAttackRelease.
That error (and some other debugging output) can be seen in the console log when that link is hit.
@tambien Am I doing this incorrectly? Should I open a new issue with this example?
offline-sampler.html.txt

@rodw I have not tried to use this yet but I think you should be able to do something like this:

(See https://github.com/Tonejs/Tone.js/blob/092ffc60a14f317485a2b5285ef659647e392647/Tone/core/Offline.js#L71 for reference)

@rodw I have not tried running this, but it seems that the offline example with the promise is missing transport start. Try adding transport.start(0.2) near resolve() in play_via_offline_sampler

@gdenisov thanks for your help, but I don't think it makes much of a difference.
Adding transport.start(0) before or after the call to resolve() doesn't seem to help.
I have noticed that adding a synth.sync() call into the mix (e.g., within after_loaded) will make the "Error connecting to node" exception go away, but still doesn't produce any audible output.
In fact no combination of the methods transport.stop, transport.start or synth.sync in or around that after_loaded callback seems to work.
For what is is worth, the non-promise, Tone.Synth version works without any calls to transport.start (or synth.sync or transport.stop), but also works with them.
Because it is easier to read, here's the non-promise, Tone.Synth version:
      function play_via_offline_synth() {
        var generate_offline = function(transport) {
          transport.stop(); // <== optional line
          var synth = new Tone.Synth().toMaster();
          synth.sync(); // <== optional line
          play_riff(synth);
          transport.start(); // o<== ptional line
        }
        Tone.Offline(generate_offline, 4).catch(console.error).then(function(buffer){
          play_audio_buffer(buffer._buffer);
        });
      }

Any combination of including or not including the lines marked // optional line seems to work OK.
Putting any combination of those lines in equivalent locations within play_via_offline_sampler doesn't seem to help though, at least not in any of the several variations I have tried.

@rodw Here is the snippet that works for me (which prompted this issue). I am not sure why this works but the promise resolution does not yet. Will need to do some research. Either way if you replace your sample play_via_offline_synth with this:

      function renderOffline(callback, duration){
        // Set the OfflineAudioContext
        let sampleRate = Tone.context.sampleRate
        let originalContext = Tone.context
        // Make sure to preserve original Transport if it has not be cached on the context yet
        if (!originalContext.Transport) originalContext.Transport = Tone.Transport
        // Create new OfflineContext and make it the default context
        let context = new Tone.OfflineContext(2, duration, sampleRate)
        Tone.context = context
        function onReady() {
          // process the audio
          var rendered = context.render()
          // return the original AudioContext
          Tone.context = originalContext
          // return the audio
          return rendered.then(function(buffer){
            // wrap it in a Tone.Buffer
            return new Tone.Buffer(buffer)
          })
        }
        // invoke the callback/scheduling
        callback(Tone.Transport, onReady)
      }

      function play_via_offline_sampler() {
        renderOffline((Transport, render) => {
          const synth = new Tone.Sampler(samples, onSynthLoaded).toMaster();

          function onSynthLoaded() {
            play_riff(synth);
            render().then((buffer) => {
              buffer.reverse()
              play_audio_buffer(buffer._buffer)
            })
          }
        }, 4)
      }

@rodw Here is the above as stand alone pen: https://codepen.io/anon/pen/BqqwXK

@gdenisov Thanks!  So that seems to work for me also.
If I understand your renderOffline method correctly you have essentially re-written the Tone.Offline functionality to match the method signature and behavior you described in the original post for this issue, is that correct?
For what it's worth I actually prefer this syntax to the "return a promise" style that should work according to the @tambien 's comment above and, as far as I can tell, from looking at the Tone.Offline code itself, but I'm maybe old-school and prefer callbacks to promises in general.  (I've resigned myself to this being a minority opinion, so don't read that as advocating for callbacks rather than promises in Tone.js in general).
Thanks again @gdenisov, I think this solves my issue.
Thanks also @tambien for a pretty awesome library in general.  My issues with offline-rendering notwithstanding I'm impressed and pleasantly surprised at how easy Tone.js makes working with synths and samplers and how easy it is to mix Tone.js with direct use of the WebAudio API.

Thanks for all your investigations and comments. The current API is clunky at the moment and was meant as a temporary bandaid until i can address the problem better.
I think other than the API being undocumented and confusing, the underlying issue is that the context AudioContext is not captured in the function's closure, but instead set globally only while the function inside of Tone.Offline is being invoked. so any deferred callback that's not in the initial callback will not have the same AudioContext, meaning that it will not be recorded and that it can't be connected to the first OfflineAudioContext.
The more sustainable solution would be to enable a non-temporary way to set the context within the callback, which is a bit complicated, but i've made a little progress on

The more sustainable solution would be to enable a non-temporary way to set the context within the callback, which is a bit complicated, but i've made a little progress on

Not sure how you'd feel about introducing a dependency, but this seems like the kind of problem zone.js was designed to address.
I.e. Within Tone.Offline you'd be in an "offline zone" which would then persist throughout any async work launched from that function, no matter what kind.


Beta5 2032: DbSet.Add, DbContext.Add & Entry.State=Added setting key value of entity

This is new behavior and I can't imagine it's intended. It did not work like this in Beta3. And in Beta4, the Add method started doing this but Entry.State=Added didn't.
When you call any of these methods on a new object (who's key property is an integer), the Id is gettinig populated.
I tried this with InMemory and SQLServer providers.
Simple as can be:
My class:
 public class LambsonType
  {
    public int Id { get; set; }
    public string Description { get; set; }
  }

My context: (note that you can't pass in dboptions with preset provider so I have a workaround)
 public class LambsonContext : DbContext
  {
    bool _isInMemory = false;
    public DbSet<LambsonType> Lambsies { get; set; }
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
      if (_isInMemory)
        optionsBuilder.UseInMemoryStore();
      else
        optionsBuilder.UseSqlServer
          ("Server = (localdb)\\mssqllocaldb; Database=EF7Bryce; Trusted_Connection=True; MultipleActiveResultSets = True;");
      base.OnConfiguring(optionsBuilder);

    }
    public LambsonContext(bool isInMemory) : base() {
      _isInMemory = isInMemory;
    }
  }

A set of tests. The first three use the inmemory provider and are just adding the new object to the context. The second three use SqlServer provider and just add (no saving).
WIth the inmemory, if you run them all together, the Id gets changed to 1, 2 and 3 in each subsequent test.
With Sqlserver it's wierd because if I run the three tests, I first got 1, 11 and 21. ran them again and got 31, 41 and 51.
With these getting applied you will have a conflict if there are already objects being tracked by teh context with those key values ...this happened to me which is how I backed up to this problem.
hope it's useful.
Also there is another problem I noticed re using DbContextOptionsBuilder. DbContext still takes DbContextOptions as an overload. I will look for a related issue and add if necesary then come back here and add a pointer.
  [TestMethod]
    public void InMemoryAddNewEntityViaDbSetAddMethod() {
      var lamb = new LambsonType { Description = "a type" };
      var lambidbeforeadd = lamb.Id;
     // Console.WriteLine("before adding to context, new lamb ID is {0}", lamb.ID);
      using (var ctx = new LambsonContext(true)) {
        ctx.Lambsies.Add(lamb);
        Assert.AreEqual(lambidbeforeadd,lamb.Id);
         Console.WriteLine("InMemory: After DbSet.Add, new lamb ID is {0}", lamb.Id);
      }

    }
    [TestMethod]
    public void InMemoryAddNewEntityViaDbContextAddMethod() {
      var lamb = new LambsonType { Description = "a type" };
      var lambidbeforeadd = lamb.Id;
      // Console.WriteLine("before adding to context, new lamb ID is {0}", lamb.ID);
      using (var ctx = new LambsonContext(true)) {
        ctx.Add(lamb);
        Assert.AreEqual(lambidbeforeadd, lamb.Id);
        Console.WriteLine("InMemory: After DbContext.Add, new lamb ID is {0}", lamb.Id);
      }

    }
    [TestMethod]
    public void InMemoryAddNewEntityViaEntryState() {
      var lamb = new LambsonType { Description = "a type" };
      var lambidbeforeadd = lamb.Id;
       using (var ctx = new LambsonContext(true)) {
        ctx.Entry(lamb).State = Microsoft.Data.Entity.EntityState.Added;
        Assert.AreEqual(lambidbeforeadd, lamb.Id);
        Console.WriteLine("InMemory: After DbContext.Entry.State, new lamb ID is {0}", lamb.Id);

      }

    }

    [TestMethod]
    public void SqlServerAddNewEntityViaDbSetAddMethod() {
      var lamb = new LambsonType { Description = "a type" };
      var lambidbeforeadd = lamb.Id;
      using (var ctx = new LambsonContext(false)) {
        ctx.Database.EnsureCreated();
        ctx.Lambsies.Add(lamb);
        Assert.AreEqual(lambidbeforeadd, lamb.Id);
        Console.WriteLine("SqlServer: After DbSet.Add, new lamb ID is {0}", lamb.Id);

      }

    }
    [TestMethod]
    public void SqlServerAddNewEntityViaDbContextAddMethod() {
      var lamb = new LambsonType { Description = "a type" };
      var lambidbeforeadd = lamb.Id;
      using (var ctx = new LambsonContext(false)) {
        ctx.Database.EnsureCreated();

        ctx.Add(lamb);
        Assert.AreEqual(lambidbeforeadd, lamb.Id);
        Console.WriteLine("SqlServer: After DbContext.Add, new lamb ID is {0}", lamb.Id);
      }

    }
    [TestMethod]
    public void SqlServerAddNewEntityViaEntryState() {
      var lamb = new LambsonType { Description = "a type" };
      var lambidbeforeadd = lamb.Id;
      using (var ctx = new LambsonContext(false)) {
        ctx.Database.EnsureCreated();

        ctx.Entry(lamb).State = EntityState.Added;
        Assert.AreEqual(lambidbeforeadd, lamb.Id);
        Console.WriteLine("SqlServer: After DbContext.Entry.State, new lamb ID is {0}", lamb.Id);
      }

    }

cc @bricelam

Here is the issue re DbContext overload for DbContextOptionsBuilder: https://github.com/aspnet/EntityFramework/issues/2211

@julielerman EF7 doesn't have the old "temporary key objects" that were used in the old stack. Instead EF7 has value generators which generate values for keys as needed when new entities are added to the context. This means that when an entity is Added the values of its key properties are checked. If  the values have been set, then these values are just used. If the values are null or the default value, then EF generates a value.
How the value is generated depends on the store being used. It may be the actual final key value, or it may be a temporary value that which will be updated when the entity is saved. Prior to Beta 4, SQL Server used temporary values for integers, which were then updated on SaveChanges using the value from an Identity column. In Beta 4, the SQL Server provider now gets the real key value from a database Sequence object immediately when Add is called. This means that you no longer have temporary keys that can change when the entity is saved. (Note that it uses a pool of blocks obtained from the database to avoid round-tripping on every Add call. This is one reason you don't just see 1, 2, 3, 4, etc.)
There are advantages and disadvantages to this use of Sequences, and we may end up changing back to using temporary values and Identity columns again. If you want to switch back now you can do so with modelBuilder.ForSqlServer().UseIdentity;. Regardless, EF7 will continue to generate key values for new entities on Add--this has been baked in from the beginning and is very unlikely to change.
Note that you should not get key conflicts using these patterns when doing anything normal. Obviously, if you delete and recreate or otherwise manipulate the Sequence object, then you might, or if you sometimes set key values explicitly while letting other keys be generated. But for normal code you should never get conflicts.

oh my...so many things I didn't realize. I was performing a test. which I had built with beta 3. With beta4, it went awry.
Here is the actual test (actually a method in a console app)
in ctor, I set up a few new objects:
static Samurai Samurai_KK = new Samurai { Name = "Kikuchiyo" };
static Samurai Samurai_KS = new Samurai { Name = "Kambei Shimada" };
static Samurai Samurai_GK = new Samurai { Name = "Gorōbei Katayama" };
In the method I added those and saved them to the database. (no problem)
Then I retreivedthem into a new context. edited one. Deleted one. and ...here was the problem, added another new one. When I used the Add method, I got the error "can't track this because there's already an entity being tracked with the same key". When I changed it to Entry.State, it worked. (this was with beta4). Maybe I'll do this one with beta5 to see if it works out, but the fact that it was using a sequence value for the id that already existed in the tracked entities seems really like trouble ...though I couldnt imagine this leaking through your tests so figured I'm soing soemting wrong. I don't have time to test right now (have to get on the road for a 6 hour drive) so could you tell me a few things....

are you saying that if I call add (etc), a RT is made to the database? (say no say no say no)
do you think the conflict happened in the below code because I deleted something before I added?
will this work better if I use it in beta5?

I have to figure out what "normal code" is becuse I'm really worried about having to wade through "watch out for this this and that when you use EF". I'm sorry I missed this in all the time you have been working on EF7. It's really hard to keep up with (or remembering) the details even reading meeting notes etc. And with beta3, nothing out of the norm happened with this code so it didn't catch my attention.
So here's the code that triggered this:
I was using sqlserver provider here.
private static void Batch_CUD() {
  Console.WriteLine("If you want to see the effect of this method, switch the context builder options to the UseSqlServer code and also start your db profiler. Press any key to continue...");

  using (var context = new SamuraiContext(true)) {
    context.Samurais.AddRange(Samurai_KK, Samurai_KS, Samurai_GK);
    context.SaveChanges();
  }

  using (var context = new SamuraiContext(true)) {
    var samurais = context.Samurais.ToList();
    samurais[0].Name += "The Glorious";
    var ks = samurais.FirstOrDefault(n => n.Name.Contains("Shimada"));
    ks.Quotes.Add(
        new Quote
        {
          Text =
                    @"This is the nature of war. By protecting others,
                      you save yourself. If you only think of yourself,
                      you’ll only destroy yourself."
        });
    context.Remove(samurais.Where(n => n.Name.Contains("Gor")).FirstOrDefault());
    var newSamurai = new Samurai { Name = "Julizuro" };
    context.Entry(newSamurai).State=EntityState.Added;
    context.SaveChanges();

 }
  Console.WriteLine("Check profiler to see the batched up SQL sent to db.");

}

p.s. thanks for the quick and detailed reply above :)

@julielerman I don't see anything immediately and obviously wrong with the test code--can you post your model so that I can try to repro the issue.
To answer your questions:

It may result in a database round trip if a new block of values from the database sequence is needed. This is a trade off for having stable keys. You will always be able to use temporary values instead and have them updated on SaveChanges, which was what happened on the old stack. We will likely make this the default again for RTM for a number of reasons (e.g. Azure support and key space aesthetics), although the database round trip isn't one of those reasons.

I don't know why the conflict happened--I will try to reproduce if you send me your model. F.Y.I. there should not have been any difference between calling Add and changing the state to Added.

Everything works better in the current bits. :-)

In EF7 you should have less to watch out for than in the old stack. However, there are lots of places where if you have an expectation of what will happen based on the old stack then things might be different on the new stack. Think of it as a different framework rather than a new version of an existing framework. When using EF7 your knowledge of the intricacies of the old stack may not help much. We tend to get used to the way the old stack works and think of it as the "right way" when really it was only that way because it was implemented that way in v1 and was too hard to change--temporary key objects in the old stack is one example of that.

Thank you so much Arthur.
I'm currently without WiFi but can upload my code later.
I really appreciate your perspective and explanation.
Julie
-----Original Message-----
From: "Arthur Vickers"<EMAIL_ADDRESS>Sent: 5/18/2015 5:14 PM
To: "aspnet/EntityFramework"<EMAIL_ADDRESS>Cc: "Julie Lerman"<EMAIL_ADDRESS>Subject: Re: [EntityFramework] Beta5 2032: DbSet.Add, DbContext.Add & Entry.State=Added setting key value of entity (#2210)
@julielerman I don't see anything immediately and obviously wrong with the test code--can you post your model so that I can try to repro the issue.
To answer your questions:

It may result in a database round trip if a new block of values from the database sequence is needed. This is a trade off for having stable keys. You will always be able to use temporary values instead and have them updated on SaveChanges, which was what happened on the old stack. We will likely make this the default again for RTM for a number of reasons (e.g. Azure support and key space aesthetics), although the database round trip isn't one of those reasons.

I don't know why the conflict happened--I will try to reproduce if you send me your model. F.Y.I. there should not have been any difference between calling Add and changing the state to Added.

Everything works better in the current bits. :-)

In EF7 you should have less to watch out for than in the old stack. However, there are lots of places where if you have an expectation of what will happen based on the old stack then things might be different on the new stack. Think of it as a different framework rather than a new version of an existing framework. When using EF7 your knowledge of the intricacies of the old stack may not help much. We tend to get used to the way the old stack works and think of it as the "right way" when really it was only that way because it was implemented that way in v1 and was too hard to change--temporary key objects in the old stack is one example of that.

Reply to this email directly or view it on GitHub:
https://github.com/aspnet/EntityFramework/issues/2210#issuecomment-103212811


Pad function

As a compliment to the crop function being considered it may be helpful to offer a simple pad function that resizes the image but fills in the new space with a solid color (provided by the caller)
May also be helpful to consider allowing anchoring of the image, but this can open up a can of enum-worms as there are 9 potential anchor points.
Will likely just default to centering the image.

Fixed, added in 4.0


Rizzler Accent & Exposing Other Accents

About the PR

"Chat... SPARKLY RIZZBALL LOOSE NO CAP, like in Fortnite." - Sun Tzu
Adds the Rizz Accent and corresponding trait (known as Ohio accent in code), and exposes various other accents such as the Italian accent to traits (only in straight up word replacements though so no prefixes or suffixes if there even are any in the accents I exposed).
Why / Balance

This is VERY important for game balance. Trust me. I'm a lawyer.
Technical details

I pretty much just copied and pasted code from other accents, I tested it though and it's all working.
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Changelog

:cl:

add: Added the Rizz accent and corresponding trait.
tweak: Made more accents into traits.

Remove the rizz accent from traits, we don't need goobers running around the station talking like dumbasses.