Using with Angular 2.1.2

When I am trying to start demo-example I've got the following error, while npm install
npm WARN EPEERINVALID<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed.
npm WARN EPEERINVALID<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed.
npm WARN EPEERINVALID<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed.
npm WARN EPEERINVALID<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed.
npm WARN EPEERINVALID<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed.
npm WARN EPEERINVALID<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed.
npm WARN EPEERINVALID<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed.
npm WARN EPACKAGEJSON<EMAIL_ADDRESS>No repository field.

Should I downgrade to a @2.0.0-rc.6 or what is the best solution? thanks in advance

The ng2sf-tinymce module and the demo application have been updated to angular2 final. The demo should work now with the latest version of angular2-schema-form. Can you test it and tell us if it is working ?

Yeah, it works. Thanks!


Request Money - Report Status shows paid when clicked on view details after request

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Launch the app
Log in with any account
Tap on any user
Tap on Plus button - Request Money
Select amount and tap Request button
Tap on view details

Expected Result:
Report Status shows open when clicked on view details after request
Actual Result:
Report Status shows paid when clicked on view details after request
Workaround:
Unknown
Platform:

Where is this issue occurring?

Web
iOS
Android
Desktop App
Mobile Web

Version Number: <IP_ADDRESS>
Reproducible in staging?: Yes
Reproducible in production?: No
Email or phone of affected tester (no customers): any
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/93399543/179901820-d7b32ca4-0204-47b2-8cd0-7bb2fdd8fc07.mp4
Expensify/Expensify Issue URL:
Issue reported by: Applause-Internal Team
Slack conversation:
View all open jobs on GitHub

:wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

Identify the pull request that introduced this issue and revert it.
Find someone who can quickly fix the issue.
Fix the issue yourself.

cc: @Julesssss Not sure if this might be related to: https://github.com/Expensify/App/pull/9878

Yeah, quite possibly. Taking a look this morning.

Strange that this didn't come up during testing as this was a test case... Anyway, the fix is to add the data to the Web-E layer which I'll do now

Okay, so I've fixed the original issue. But ran into a new one, which I'm solving here as it's also occurring on this linked issue.

WIP Pr: https://github.com/Expensify/Web-Expensify/pull/34366

Ran out of time, will be finishing this tomorrow morning

Raised a PR and I'll request a CP to prod once it's approved and merged.

Confirmed resolved with this CP'd PR

@Expensify/applauseleads please retest this one. I have removed the blocker label in the meantime.

Issue is fixed.
https://user-images.githubusercontent.com/43995119/180299987-a558c038-b1f1-4b52-9de5-000357ebb885.mp4

Issue not reproducible during KI retests. (First week) @Julesssss  @MariaHCD  Are we ok to close this?

Yep, thank you!


Support external workspace and workspace size query in DFT domain

Summary
Support external workspace and workspace size query in DFT domain.
Problem statement
Currently, in the Intel(R) oneAPI Math Kernel Library, we can use external workspace and query workspace size and estimated workspace size.
Preferred solution
Support those functionalities in the opensource oneMKL interfaces.

Thank you for the issue. We'll start working on this in the coming weeks.

I'm looking at this at the moment. A challenging aspect is providing pre-commit estimates of workspace size. This is because rocFFT (and perhaps other future backends) do not support workspace estimates, only exact workspace requirements after committing.

What is the usecase for pre-commit workspace estimates?

Do we need pre-commit estimates at all?

Do these estimates need to be conservative?

Thanks!

Hi @hjabird , I noticed that https://github.com/ROCmSoftwarePlatform/hipFFT/blob/ef5eb0d5facf9d997b00bb0b94c8e37791b72ce4/library/src/amd_detail/hipfft.cpp#L1150 uses hipfftGetSize1d to implement hipfftEstimate1d which is the migrated result of cufftEstimate1d with HIPFIY.
It just queries the actual workspace size after creating a plan and destroys the plan before return.

Hi @zhiweij1, that is an option, but creating a plan just to query workspace size is an expensive thing to do. Especially if you then create that exact same plan once again on commit!
At the moment I don't understand the scenario in which you use an estimate instead of committing a descriptor and getting the exact workspace requirement from that. In such a scenario, does the estimate need to be conservative (if not, we could introduce some kind of heuristic for rocFFT's workspace requirements, or just return 0)?
The specification may be a better place to continue this discussion. I've created a spec issue https://github.com/oneapi-src/oneAPI-spec/issues/508 and also a draft PR in the spec https://github.com/oneapi-src/oneAPI-spec/pull/509

@zhiweij1 I've had some feedback on the above linked PR. It would be great to have your feedback too, especially since it doesn't include the estimation feature right now. It doesn't included this feature since I'm not sure how it would be used (and so what to specify), as stated in my above comment.

Hi @hjabird, the https://github.com/oneapi-src/oneAPI-spec/pull/509 LGTM.

As a timeline on this:

I believe above spec PR needs to be discussed by the Math SIG before it can be merged. I hope this can take place in early December, but obviously it is subject to availablity, scheduling, holidays in the US, etc.
I've already started work on adding support for the above spec to oneMKL, but it won't make sense to until the spec is merged.

So long as no problems or delays are encountered, hopefully external workspaces will be added in early December. I'll try to keep this issue updated.

Happy new year!: both the spec and implementation are now merged!


lax.scan is ~6x slower to run than hand-written loops

This is on a GPU backend, haven't tried on others.
https://colab.research.google.com/drive/1N1jrvGNFRhTnYLOCL6vXUzJN3pRR3pdr
Minimal repro below
from jax import numpy as np
from jax import grad, jit, vmap, lax
from jax import random as jax_random

import numpy as onp

@jit
def rewards_to_go(rewards, mask, gamma=0.99):
  r"""Computes rewards to go.
  Args:
    rewards: np.ndarray of shape (B, T) of rewards.
    mask: np.ndarray of shape (B, T) of mask for the rewards.
    gamma: float, discount factor.

  Returns:
    rewards to go, np.ndarray of shape (B, T).
  """
  B, T = rewards.shape  # pylint: disable=invalid-name,unused-variable

  masked_rewards = rewards * mask  # (B, T)

  # Compute r2g_{T-1} at the start and then compute backwards in time.
  r2gs = [masked_rewards[:, -1]]

  # Go from T-2 down to 0.
  for t in reversed(range(T - 1)):
    r2gs.append(masked_rewards[:, t] + (gamma * r2gs[-1]))

  # The list should have length T.
  assert T == len(r2gs)

  # First we stack them in the correct way to make it (B, T), but these are
  # still from newest (T-1) to oldest (0), so then we flip it on time axis.
  return np.flip(np.stack(r2gs, axis=1), axis=1)

@jit
def scan_rewards_to_go(rewards, mask, gamma=0.99):
  masked_rewards = rewards * mask  # (B, T)

  reversed_rewards = np.flip(masked_rewards, axis=1)  # (B, T) flipped on time.
  rrt = np.transpose(reversed_rewards)  # (T, B) transpose to scan over time.

  def discounting_add(carry, reward):
    x = reward + (gamma * carry)
    return x, x

  _, ys = lax.scan(discounting_add,
                   np.zeros_like(rrt[0], dtype=np.float32),
                   rrt.astype(np.float32))

  # ys is (T, B) and T is in reverse order.
  return np.flip(np.transpose(ys), axis=1)

B, T = 16, 128

num_examples = 100
rewards = []
pvs = []
mask = []

for _ in range(num_examples):
  rewards.append(onp.random.randn(B, T))
  pvs.append(onp.random.randn(B, T+1))
  ones = onp.full((B, T), 1, dtype=onp.int32)
  for one in ones:
    l = onp.random.randint(0, T)
    one[range(l,T)] = 0
  mask.append(ones)

Now time the invocations:
%timeit [rewards_to_go(rewards[i], mask[i]) for i in range(num_examples)]

and
%timeit [scan_rewards_to_go(rewards[i], mask[i]) for i in range(num_examples)]

I have a related scan file here: https://gist.github.com/cshesse/73f27d42c356e6e763275432422dacbe
On CPU:
reward_to_go_jax 0.028926010942086577
reward_to_go_scipy 0.001616921043023467
scipy speedup 17.889563047554923

In the CPU case, for large values of N, the performance gets much closer to scipy lfilter.
On GPU:
reward_to_go_jax 5.656240948010236
reward_to_go_scipy 0.001609566854313016
scipy speedup 3514.1385602304745

scipy.signal.lfilter may not be a useful benchmark to compare against, but the jax version seems to get significantly slower on GPU.
This is using git+https://github.com/google/jax.git@11c512a194add25ade20dbfacf635d6e0834eba3 and https://storage.googleapis.com/jax-wheels/cuda92/jaxlib-0.1.15-cp37-none-linux_x86_64.whl

@jlebar Any gut reactions here?
I've been meaning to dump this JAX code (both in the OP and in @cshesse's gist) into HLO text for easier repros, but I haven't gotten to it yet. Let me know if you can take a look without that step :)
Wild guess: could these slowdowns be related to the TupleThunk issue you just fixed?

It looks like this benchmark is including compilation time?

Wild guess: could these slowdowns be related to the TupleThunk issue you just fixed?

Meaning, the TupleThunk change makes things slower?  That would be surprising.  Possible, I suppose, but I don't immediately see how.
Other than the benchmarking methodology question I don't have an immediate guess here.  I don't know enough about the difference in HLO implementation of the two functions to have any ideas, without actually looking at the HLO.
I'm always trying to think bigger picture, though. We're getting a fair number of these performance bugs, which is genuinely great.  And the bugs are also fairly high quality.  But how do we streamline the process of receiving them, triaging them, and acting upon them, for you and for us?
I'm wondering if e.g. we could have a script/document that people can follow when they're reporting a performance bug, which will capture the textual HLO and xla_hlo_profile?  Ideally it could capture some sort of execution trace too, but I'm not sure how much of that is OSS at the moment.
Thinking even bigger, if JAX had some sort of benchmark framework then it could take care of ensuring that we ignore the compilation time, in addition to doing all of the things above for bug reports.

Meaning, the TupleThunk change makes things slower? That would be surprising. Possible, I suppose, but I don't immediately see how.

Oh, sorry, I meant the opposite but my wording was bad: these numbers are all from before the TupleThunk fix, so I was guessing that your TupleThunk fix could have improved things.
Great thoughts on the big picture. We should at least have a doc, and I bet we can make a script, including maybe an internal one that collects a trace (which we can run ourselves on small repros). Maybe we (on the JAX side) can take this opportunity to start developing those things!
Thanks for weighing in, even with very little info from our side here.

In my script, I call the function once during setup, is that not enough to avoid capturing compilation time?
For a benchmarking script, maybe a jax.experimental.benchmark(fn) vaguely like go bench setup:
import time
import jaxlib

first_run = True

def benchmark(fn, duration_sec=10):
    global first_run
    if first_run:
        print("jax version", jax.__version__)
        print("jaxlib version", jaxlib.__version__)
    first_run = False
    fn(1)
    n = 1
    while True:
        start = time.time()
        fn(n)
        elapsed = time.time() - start
        if elapsed > duration_sec:
            break
        n *= 10
    print("%s %d calls  %f us/call" % (fn.__name__, n, elapsed / n * 1e6))

def benchmark_reward_to_go_scipy(n):
    for _ in range(n):
        reward_to_go_scipy(rews, 0.99)

def benchmark_reward_to_go_jax(n):
    for _ in range(n):
        reward_to_go_jax(jrews, 0.99)

benchmark(benchmark_reward_to_go_scipy)
benchmark(benchmark_reward_to_go_jax)

In my script, I call the function once during setup, is that not enough
to avoid capturing compilation time?

Should be, yes.
On Thu, Jun 6, 2019 at 9:30 AM cshesse<EMAIL_ADDRESS>wrote:

In my script, I call the function once during setup, is that not enough to
avoid capturing compilation time?
For a benchmarking script, maybe a jax.experimental.benchmark(fn) vaguely
like go bench setup:
import time
import jaxlib
first_run = True
def benchmark(fn, duration_sec=10):
global first_run
if first_run:
print("jax version", jax.version)
print("jaxlib version", jaxlib.version)
first_run = False
fn(1)
n = 1
while True:
start = time.time()
fn(n)
elapsed = time.time() - start
if elapsed > duration_sec:
break
n *= 10
print("%s %d calls  %f us/call" % (fn.name, n, elapsed / n * 1e6))
def benchmark_reward_to_go_scipy(n):
for _ in range(n):
reward_to_go_scipy(rews, 0.99)
def benchmark_reward_to_go_jax(n):
for _ in range(n):
reward_to_go_jax(jrews, 0.99)
benchmark(benchmark_reward_to_go_scipy)
benchmark(benchmark_reward_to_go_jax)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/jax/issues/810?email_source=notifications&email_token=AABEZB5LLNWV7NJYD55MXCDPZE3QVA5CNFSM4HSJ4MHKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXDNLWY#issuecomment-499570139,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABEZBYK2I4BXXAUVG7CF7DPZE3QVANCNFSM4HSJ4MHA
.

The main problem with the example in the first comment is that there is almost no useful work in the loop (a elementwise multiply and an add of f32[16] vector). You won't get good GPU utilization from this no matter what we do; CPU will be faster. The loop benchmark (using scan) is mostly measuring loop overheads; we could probably lower them but I am wondering if this code is actually representative of something you want to do. Put another way: even if the scan variant is 6x slower, does it actually matter?

@hawkinsp I've ran into this with bigger workloads. Specifically, a scan implementation lead to about a ~4x slow down, ~6x larger GPU memory usage, ~4-6x higher transfer rates as reported by nvidia-smi than an unrolled implementation. I'm not so certain that this is just an issue of higher overhead.
For a bit of context, the workload at each iterations was:
1.extract_image_patch
2. tensordot(Nx28x28x9, Nx28x28x9x10 -> Nx28x28x10)
3. max(axis=-1)
with batch size N=10. While the scan version compiles very quickly, the slow down makes it completely impractical. This was on an Nvidia 2080 Ti.

Additional observations: for the workload I describe earlier, if I run 25 unrolled steps per scan iteration, I still see a drastic increase in GPU usage, memory usage and CPU-GPU communication. Everything I've observed seems to hint at some memory reuse issue or some arrays placed on the wrong device issue. This issue is a big blocker for me. If there is anything I can do to help fix it, please let me know.
Note that while the reported GPU usage increases (from ~60% to 99%) when going from unrolled to scan, the actual performance is much much worse.

@gehring Would it be possible to get us a self-contained example that demonstrates your slowdown? There are a few known drawbacks of XLA:GPU loops, but scan is typically supposed to be able to avoid the worst of it (raw while_loop loops have to bring their condition boolean back to the host at each step, while scan always has a fixed trip count).

@jekbradbury I'll try to strap a standalone example by the end of the week. In the meantime, if it makes any difference, I realize I forgot to mention that the workload I described is part of a SGD (pure python) loop, doing a forward and backwards pass in each jitted call.

@jekbradbury It ended up being much easier to do than I thought. The code where I first encountered this is somewhat complex but I was able to reproduce it with just a scan looping amat @ x + bvec. I saved it in a notebook for convenience.
On Google's public colab (GPU runtime), I get the following results:
Time taken unrolled: 12.955157 sec
Time taken scan: 197.164844 sec

I tried this example on a different workstation (with an old Quadro K2200) and observed pretty much the same symptoms as described earlier (using nvidia-smi).

Thanks! This looks like a performance issue with JVP and possibly transpose of scan, which emit dynamic-slice and dynamic-update-slice operations (respectively) that appear to be the bottleneck here (and seemingly not necessary, since they don't show up in the unrolled version). Going to look into it, but I don't know this part of the code very well.

@jekbradbury Any progress or updates on this? No pressure, I'm just trying to get an idea as to whether a fix is in the works or if I should commit to a workaround.

I had a partial solution in the linked PR, but we ended up deciding against that approach and sketched out a more direct (and complete) solution two weeks ago. I haven’t implemented it yet, though it’s been on my todos; I expect I’ll have a new PR sometime in the next week or so.


sh:minInclusive not evaluated correctly

I'm attempting to validate some RDF data thtough a SHACL schema. When setting a minimum-inclusive limit on a decimal quantity, it behaves as an exclusive limit.
For example, sh:minInclusive 18; does not validate for 18, the error message itself being contradictory:
LiteralValue("minInclusive violation. Expected 18 >= 18")
Example data used:

RDF

@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix ex:      <http://example.org/> .

ex:reading a ex:sensorReading ;
          ex:readingTemperature "18"^^xsd:decimal .

Shapes Graph

@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix ex:      <http://example.org/> .

# Filters of a valid sensor reading
ex:ValidReading a sh:NodeShape ;
                sh:targetClass  ex:sensorReading ;
      			sh:property [
    				sh:path     ex:readingTemperature ;
                    sh:datatype xsd:decimal ;
                    sh:minInclusive 18;
  				] .

I fixed it by changing the following in the shapes graph:

sh:minInclusive 18 to sh:minInclusive 18.00

Still, I did not expect that behaviour and it does not happen using Jena-SHACL or TopQuadrants validators


A feature suggestion - Music Dance

The Rainbow TaskBar only features switching of the gradients in the traditional movements like  "linear", "sine", "back", etc.
Make it a feature that it sorts of dances with the music or media played on the PC. It would give much more 'power' to the music and makes the PC also look cool to see as it moved with music.

Hi! I will soon release a new update bringing a new, way powerful way to create configs. I don't know how I would go about adding support for music-responsiveness, but I'll keep it in mind for a later update


question: error handling,  finally and raise (or throw)

I wish to execute a pipeline step for messages whether or not the processor_failed condition has been set.
Would this work since there's no 'finally' condition?
    - for_each:
        - conditional:
            condition:
              or:
                - type: processor_failed
                - type: not
                  not:
                    type: processor_failed
            processors: []

After a subprocess has completed, the child pipeline may wish to raise or throw  an error.
Is it possible to set the processor_failed condition through a processor, something like this:
type: metadata
metadata:
  key: error
  operator: set
  parts: []
  value: "my error message"

Hey @bkcsfi, not sure I understand what you mean by a "finally" condition in this context, could you explain in more detail?
The other part of your question is possible, if you set the metadata field benthos_processing_failed then it'll be interpreted the same as a regular Benthos error.

Hi,
Benthos has processors 'try' and 'catch'. But it seems to be missing a construct similar to 'finally'.
for example in python I might have:
try:
  something_that_might_fail()
except  ValueError: # catch
  report_error()
finally:
   cleanup_resources()

where the function cleanup_resources() is always executed whether or not an exception occurred in the try statement.
Further, the finally statement does not clear the error condition, so a 'higher up/subsequent' catch processor would still be activated if an error condition had been set in the try statement.
What I'm trying to do is simulate a 'finally' processor by combining a processor_failed condition and a not processor_failed condition in an 'or' clause so that the processor is run for every message, regardless if the error condition is set and also to NOT clear the error condition.
I'm trying this because on the error handling page docs it states that to execute a process when processor_failed is set and to NOT clear the error flag, one must use a for_each with a processor_failed condition.
a specific use-case is related to the config I uploaded in the other issue. I have a dag that creates resources that must be cleaned up. After the dag the cleanup process must run on every message, regardless if there was an error or not. After the cleanup process a later conditional looks for processor_failed to take special action, hence the cleanup process should not clear the error condition on the message.
In a way, this use-case workflow is a bit strange.. a subprocess could 'raise' an exception causing the dag to exit, later the 'finally' condition I'm trying to simulate would carry out the cleanup process, and after that, a catch processor or a processor_failed conditional could handle the error condition on the message.  strange that finally effectively comes between 'try' and 'catch', though in this example I don't actually have a 'try' processor.

Hey @bkcsfi, any processor you write after the catch block will get executed on payloads regardless of their error status, so you can just do:
pipeline:
  processors:
    - try:
         - type: foo
    - catch:
         - type: bar
    - type: baz

You can consider the baz processor above to be within an imaginary "finally" block.
However, the catch processor will remove the error flag from messages, therefore in your case you want to use a conditional:
pipeline:
  processors:
    - try:
         - type: foo
    - for_each:
         - conditional:
              condition:
                type: processor_failed
              processors:
                - type: bar
    - type: baz

Thanks for the response Jeff. My issue is I want 'bar' to execute whether or not processor_failed is set, hence my original post about using an 'or' with condition processor_failed | not processor_failed.
Also, it looks like once processor_failed is set, any subsequent try processor will always get skipped.
e.g. in the example below if the subprocess returns output on stderr, then foo will not get executed. This seems somewhat unexpected because the 'error condition' in this case is not being raised inside the 'try', but rather had been raised earlier in the pipeline. Maybe a little comment in the documentation could help, though I'm not sure exactly how to phrase it.
pipeline:
  processors:
    - subprocess:
        # do something here to fail
    - try:
         - type: foo
    - for_each:
         - conditional:
              condition:
                type: processor_failed
              processors:
                - type: bar
    - type: baz

Ah okay I think I get it now, if you want to run bar regardless of whether a processing stage failed then you don't need a conditional statement at all.
The try processor is only required when you want to avoid the underlying processors executing when a prior error has occurred. If that's not the case then simply remove the try completely.
If you want to 'clear' the error flag from processing stages but don't have a specific processor to run for those failed messages you can just have an empty catch block:
pipeline:
  processors:
    - subprocess:
        # do something here to fail
    - catch: {} # Clear any existing error flags
    - try:
         - type: foo

super, thank you so much!


Nicer API for setting keyword call arguments programmatically

robot.running.Keyword.args contains arguments used in a keyword call as a list. Arguments originating from normal Robot Framework data are always strings and they are in the exact same format as in the data. This means that arguments can contain variables and escape characters, and that named arguments are represented using the name=value syntax.
If arguments are modified programmatically, it is possible to use also other objects than strings. This doesn't, however, work with named arguments because in the name=value syntax the value is always a string. Automatic argument conversion handles conversion in common cases, but especially with more complex objects being able to use them directly would be convenient. Another pretty common and unexpected annoyance is that arguments that are strings need to follow the same escaping rules as normal data. Most importantly, \ needs to be doubled and, because it's an escape character also in Python, we need to use data like 'c:\\\\temp\\\\new' or r'c:\\temp\\new'.
I propose we enhance setting arguments as follows:

Support specifying named arguments as two-item tuples like ('name', 'value') to allow using also non-strings as values. To avoid ambiguity with arguments possibly containing a literal =, we should also support positional arguments as one-item tuples like ('value',). In this usage we should still resolve variables, which requires users handling escaping themselves.
Example: [('positional',), ('name', 'value'), ('path', r'c:\\temp\\new')]
We support tuples like this also with the dynamic library API with arguments having default values. The approach thus has precedence and it has worked well.

Support giving arguments directly as a list of positional arguments and a dictionary of named arguments. In this usage we should use arguments directly without handling escapes. That then means that variables aren't resolved either, but automatic argument conversion and validation will still be done.
Example: [['positional'], {'name': 'value', 'path': 'c:\\temp\\new'}]

The above is pretty easy to implement. During execution we just need to handle different ways arguments can be specified when resolving arguments. No code changes are needed with robot.running.Keyword, but this new functionality needs to be documented and typing needs to be set accordingly. We also need to enhance robot.result.Keyword. With it it's better to always store arguments as strings, which means that we need to convert other arguments when they are set.
It's a bit questionable is this a good idea this late in RF 7.0 release cycle, we already have a release candidate out, but this makes some of the usages of the new start/end_keyword listener v3 methods (#3296) so much more convenient that we decided to still implement this. Changes are pretty small and ought to be safe, but big enough to warrant a second release candidate.

How this enhancement was implemented caused issues with BuiltIn.run_keyword in some cases. As explained in #5031, problems mostly occur when using it programmatically, but in special cases there can also be issues when using just normal data.
There doesn't seem to be any good way to avoid these problems and, now that I look at this again, the approach used here feels pretty hacky in general. We have thus made a decision to revert this change and to do it already in RF 7.0.1.
The original motivation for the enhancement was fine. I will open a new issue about that and propose a less hacky solution. It's probably best to wait for RF 7.1 until implementing it, though.


C# code generation: generated required collection property does not compile.

The following yaml code:
UserData:
	type: object
	required:
	  - owners
	properties:
	  first_name:
		type: string
		example: John
	  last_name:
		type: string
		example: Doe
	  owners:
		type: array
		items:
		  $ref: '#/definitions/UserDataOwner'

Generates such a buggy property (this code does not compile):
    [Newtonsoft.Json.JsonProperty("owners", Required = Newtonsoft.Json.Required.Always)]
    [System.ComponentModel.DataAnnotations.Required]
    public System.Collections.Generic.List<UserDataOwner> Owners { get; set; } = new System.Collections.ObjectModel.Collection<UserDataOwner>();

It should be either:
    public System.Collections.Generic.List<UserDataOwner> Owners { get; set; } = new System.Collections.Generic.List<UserDataOwner>();

or:
    public System.Collections.ObjectModel.Collection<UserDataOwner> Owners { get; set; } = new System.Collections.ObjectModel.Collection<UserDataOwner>();

You probably only changed the ArrayType but not the ArrayInstanceType

Thank you so much! This was the issue reason.


[flash_ctrl] Update key change timing for scramble

Do not allow key changes to happen during a transaction
as this can lead to timing issues.
Technically we do not care if the results become garbage, but
this forces synthesis to work harder than necessary
Another alternative is to explicitly false path, but this change
is small and touches fewer things.

Signed-off-by: Timothy Chen<EMAIL_ADDRESS>

Hope this relaxes the timing !


x1204 As ARA (Hon Man) I want to link up the new printer for 8 strip tubes to sprint

tubestrip-f237.internal.sanger.ac.uk
ACL ticket: https://sanger.freshservice.com/support/tickets/1411

The new printer has been added to SPrint.


Speed Up Exiting Activity

The fixes for issue #155 work, but cause devices that use camera2 (directly or via a compatibility layer) to exit very slowly. That's because we are waiting for everything to tidy up before exiting.
It would be better to let the activity exit and tidy things up in the background, but then block if a fresh activity is started while the prior shutdown is still in progress. After all, it is unlikely that the user is going to re-enter the activity right away, so let's optimize for the typical case of a single photo followed by a few seconds of no camera work.
This will get a bit tricky to handle race conditions, as the shutdown work is being done in the background.

Moot given reversion of original fix and v0.5.4 re-fix.


Issue reopen test

body...

Job gh:amihaiemil/docker-java-api#356 is not assigned, can't get performer


#1590 Use correct interval for request counting

Fixes #1590
Incrementing request counter if request time is in the interval
[FirstRequestTime, FirstRequestTime + PeriodTimespan] seems is incorrect. PeriodTimespan is a "ban" period, not a period for request counting. In case of PeriodTimespan interval significantly exceeds Period, Rate Limiting feature counts number of requests longer than expected. It leads to false rate limit exceeding error.
Proposed Changes
Increment request counter when request time within interval
[FirstRequestTime, FirstRequestTime + RateLimitingSettingPeriod] respectively to the Rate Limiting docs.

Hi Sergii!
Thanks for the solution and interest in the project!
I've resolved one merge conflict. And pipelines are green.
Could we discuss the issue #1590 first plz?

Yes, sure.

Yes, sure.

Sergii,
Now I see that at least your changes don't break current features.
But we have 2 parents in commit Merge branch 'develop' into Rate_linit_counting_interval_fix__issue_#….
I'm not a fan of merge commits with two parents after conflicts resolution, because they make non-linear history in base branch.
You need to put your commits on the top commit from base:develop!
Could I ask you to re-create PR please? Unfortunately your feature branch is broken. Your forked develop branch must be the same as develop branch in source repo!

Just backup files please with new changes.
Remove current fork, and make new fork to be sure you have the same history as in source repo having all commits up to date
Or pull down all base:develop commits
Don't apply changes in develop, just keep it updated via pull operation always, just for future usage
Create new feature branch from develop one, for example, feat/1590
Apply new changes from files backup.
Create new PR
Do not forget to link both PRs (old and new ones) for tracking purposes

As soon as you've created new PR, this PR will be closed as duplicate.
Thanks!

Hello Raman.
Sorry for significant delay, many things required my attention.
First, let me please confirm that you title and descr update is correct.
As for my implementation, I have a small doubt concerning timing calculation. I need to recheck them, and, perhaps, extend existing tests. Unfortunately I could not promise I will have solved it fast, but I will do all my best to finish with code changes in 2-3 weeks.
Cheers
S.

No worries, Sergii!
Take some time to finish the solution!
Tom will wait for your fix for a couple of years. 🤣 It's a joke!

Sergii,
Please merge PR 1 to update your repo!
Thank you!

sergio-str commented on May 29, 2023:

Unfortunately I could not promise I will have solved it fast, but I will do all my best to finish with code changes in 2-3 weeks.

Well... 3 weeks have been passed.
Any progress on that?
May I help you with this PR by some pair programming?

The feature branch has been rebased onto ThreeMammals:develop!
Welcome to code review!
I guess we can develop and review the code simultaneously.

@RaynaldM approved these changes on Sep 18

I would rather do not approve PR without any tests. And sorry, I think I asked to review too early.

The branch has been rebased onto release/24.0 with top commit https://github.com/ThreeMammals/Ocelot/commit/59b63eab9c2cd2ab33c5752bbc3bd00a079cd74c !

⚠ Development Complete❕
@RaynaldM @ggnaegi Could you please review?
The remaining work involves testing the user scenario from #1590. I will add a few tests in the next day or two.
I anticipate that the user scenario tests will be completed by Monday.
I was somewhat taken aback by the code quality. This is the oldest Ocelot feature that was not covered by unit tests, although it does have some very basic acceptance tests.
The feature was initially developed in PR #37 back in 2017.

@raman-m Yes, around midnight your time!

All code review issues have been resolved! Awaiting your approval, @ggnaegi.


Update 2.4.1 break _OrderByInput type

Bug description
After New Update

The OrderByInput type doesn't accept array format. (I run prisma generated after update)

Environment & setup

OS: Catalina 10.15.6
Database: MySQL 8.0
Node.js version: 12.18.3
Prisma version:

@prisma/cli          : 2.4.1
Current platform     : darwin

Order by is Enumerable in when it is used in the args type:

Enumerable make it so you can pass an Array or a single top level object:

So I can't reproduce this. I also going to close this, feel free to comment if you find anything wrong about it after the explanation.

I get it now... just declare the type as array i guess?

Yes, since you are declaring an array, you would need to annotate it with []


gc: Determine CLI design for manual cleaning

The current implementation from https://github.com/rust-lang/cargo/pull/12634 exposes a cargo clean gc subcommand to handle manually cleaning cache data. It is not clear what the final CLI design should be (and it is not clear exactly what the user scenarios are for when they would want to take manual control). This issue is tracking for determining what the CLI should look like. There are few different considerations:

What should the actual subcommand be called? There were a few different considerations:

cargo cache is already in use by a third-party command
cargo gc (reserved by a third-party, but unused), was part of early proposals (cargo doesn't handle unstable top-level subcommands very well)
cargo clean gc — the current implementation
cargo clean — just fold the functionality into a single command which handles cleaning caches. @epage has concerns that this is overloading a subcommand used for different types of caches (local vs global, etc.).
cargo maintenance — just an idea stolen from git

How does this evolve with cleaning target directories, global build caches, etc.?
Which flags should be exposed? Currently it exposes a large number of low-level flags. Ideally I would like to only stabilize a small number of higher-level flags. But I don't know what the high-level user scenarios might be, so I'm uncertain exactly what to expose.

For example, one idea is to have a flag for "things that can be recreated" and another for "things that require downloading".
Also bikeshed the names of the options.

Potential sources of prior of other tools with cache management

poetry
docker
git
nix, zig
dune, etc)

Apparently buck2 and Turborepo grow unbounded

Quick scan of brew

autoremove
cleanup

"Removes all downloads more than 120 days old. This can be adjusted with HOMEBREW_CLEANUP_MAX_AGE_DAYS."

HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS (default 30 days)

One complaint that came up was "brew cleanup has not been run in 30 days, running now" ... and then proceeds to run an interminable process in the middle of you attempting to do something else." (mastadon)

We should probably step back and enumerate what the required use cases are and the "if it works" use cases.

I like the way pnpm approaches this,
https://pnpm.io/cli/store

Running pnpm store prune is not harmful and has no side effects on your projects. If future installations require removed packages, pnpm will download them again.
It is best practice to run pnpm store prune occasionally to clean up the store, but not too frequently. Sometimes, unreferenced packages become required again. This could occur when switching branches and installing older dependencies, in which case pnpm would need to re-download all removed packages, briefly slowing down the installation process.

Regarding the concern of deleting crates that might still be in use, I like how rushjs asks you to pass an --unsafe flag to it's purge command,
https://rushjs.io/pages/commands/rush_purge/
 --unsafe    (UNSAFE!) Also delete shared files such as the package manager
              instances stored in the ".rush" folder in the user's home
              directory. This is a more aggressive fix that is NOT SAFE to
              run in a live environment because it will cause other
              concurrent Rush processes to fail.

@juliusl

https://pnpm.io/cli/store

it sounds like pnpm store prune removes everything that isn't referenced, regardless of age or size.
In #13137 I bring up the idea to build on top of the work to track workspaces in #13136 so we pin entries not in current lockfiles.
To extend this to clean up everything has the risk is if a project is transient (e.g. removable media) or moved but a new command wasn't run to register the new location.  If its manually done with a command, rather than part of the auto-gc, then that might be reasonable, especially if we swap the logic and have a --execute flag rather than a --dry-run flag.

Regarding the concern of deleting crates that might still be in use, I like how rushjs asks you to pass an --unsafe flag to it's purge command,

I don't think an --unsafe flag is as relevant.  For any shared directories, we use filesystem locks to ensure consistent reads/writes.
Any "in use" concerns we have are more about "relevant to the user" and not "file descriptors are open" and is mostly relevant for slow networks/systems and offline usage (I don't want a rarely used dependency being removed just before I go on an airplane to do development offline).


[WIP] Add README file

Steps

[x] Add README
[x] Document basic build info
[ ] Figure out how to get the localdb set up & add that
[ ] Polish the text

Running Update-Database leads to:

More than one DbContext was found. Specify which one to use

But I don't actually see anything inheriting from DbContext in the app. It appears the connection string is referenced purely for CloudScribe, which is a library, so I'm not sure the name of that context.

Closing this, as I honestly don't think it's necessary after doing this on another machine that wasn't having issues with its SQL Server installation. Was as easy for me as 1) pull the code 2) open 3) hit F5.


Code incompatible with Python 3

In aws_push.py, the code used to process the exception is only valid on Python 2.
In order to work on Python 3, it should use the "as" keyword instead of the comma syntax. More info here.

Nice thank you!


Transforming labels accordingly

Let's say my labels are landmarks on an image, am I able to transform them aswell - such that they fit on the transformed image?

Hi @fmbahrt no currently this is not supported. I am assuming the landmark labels are x,y coordinates on the image?

@mdbloice yes, the landmarks are (x, y) coordinates.

@fmbahrt OK understood, no unfortunately that is not currently supported...
M.

I also have a problem that requires the transformation (generally, operations) applied to the augmented result and am interested in helping out here.

Hi @jay-reynolds, sorry for the delay replying, yes sure, by all means make a pull request. It's a feature quite a few people have asked for so it would be worthwhile doing I am sure.


generate.py loading model problems, missing keys, discolored images

Hello! I trained StyleGAN2 on a dataset of gemstone images. Could you help me with some problems I have when I run generate.py?
Running generate.py normally gives me this error:
RuntimeError: Error(s) in loading state_dict for Generator:
	Missing key(s) in state_dict: "convs.12.conv.weight", "convs.12.conv.blur.kernel", "convs.12.conv.modulation.weight",
"convs.12.conv.modulation.bias", "convs.12.noise.weight", "convs.12.activate.bias", "convs.13.conv.weight",
"convs.13.conv.modulation.weight", "convs.13.conv.modulation.bias", "convs.13.noise.weight", "convs.13.activate.bias",
"convs.14.conv.weight", "convs.14.conv.blur.kernel", "convs.14.conv.modulation.weight", "convs.14.conv.modulation.bias",
"convs.14.noise.weight", "convs.14.activate.bias", "convs.15.conv.weight", "convs.15.conv.modulation.weight",
"convs.15.conv.modulation.bias", "convs.15.noise.weight", "convs.15.activate.bias", "to_rgbs.6.bias",
"to_rgbs.6.upsample.kernel", "to_rgbs.6.conv.weight", "to_rgbs.6.conv.modulation.weight", "to_rgbs.6.conv.modulation.bias",
"to_rgbs.7.bias", "to_rgbs.7.upsample.kernel", "to_rgbs.7.conv.weight", "to_rgbs.7.conv.modulation.weight",
"to_rgbs.7.conv.modulation.bias", "noises.noise_13", "noises.noise_14", "noises.noise_15", "noises.noise_16"

Running generate.py with g_ema.load_state_dict(checkpoint["g_ema"], strict=False) works, but the images seem weirdly discolored
Generated discolored images:

vs
Sample images from training that look fine:

You will need to set --size to the generate.py.

Awesome, thank you very much! I should have tried that out. My model was trained to generate images of size 256, not the default 1024.
By the way, I used your code to train these models for a class project! We even used the closed form factorization code. Thank you very much for publishing this!!
https://harryli0088.github.io/CS137-DNN-Project-StyleGAN2-Diamond/


[e2e]: generic push main default slsa3

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/3662391331
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.generic.push.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.generic.push.main.default.slsa3.yml
Trigger: push
Branch: main
Date: Sat Dec 10 03:14:24 UTC 2022

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/3667156640
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.generic.push.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.generic.push.main.default.slsa3.yml
Trigger: push
Branch: main
Date: Sun Dec 11 03:20:42 UTC 2022

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/3672321468
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.generic.push.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.generic.push.main.default.slsa3.yml
Trigger: push
Branch: main
Date: Mon Dec 12 03:20:02 UTC 2022

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/3677966174
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.generic.push.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.generic.push.main.default.slsa3.yml
Trigger: push
Branch: main
Date: Mon Dec 12 17:03:59 UTC 2022
Tests are passing now. Closing this issue.


Custom Button Color

Any way to change the bootstrap button color? Or we'll need to go into the source and change it?

I'll be making an update soon. I'll make sure to include this.

this can be accomplished with props.confirmBtnCssClass or props.confirmBtnStyle in 4.1.0.  Enjoy!


Training with PyTorch

Setup the program to train a model with the training set and validation set.

git fetch origin
git checkout 1-training-with-pytorch


登陆时是不是描述错误

Before you submit an question we recommend you to check out the DOCUMENT first.
You can also find more information in:

TROUBLESHOOTING
FAQ

💬 Questions and Help
Please outline the questions.
提示输入user name ，但是实际应该输入的是邮箱

Thanks. A better description should be Username or E-mail


Fix GREATEST and LEAST transform functions.

The correct SQL semantics is to return NULL if any of the arguments is NULL.

Codecov Report

Merging #11308 (75307f4) into master (a6e23c1) will increase coverage by 0.00%.
Report is 7 commits behind head on master.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master   #11308     +/-   ##
=========================================
  Coverage    0.11%    0.11%
=========================================
  Files        2230     2157     -73
  Lines      120140   116871   -3269
  Branches    18218    17738    -480
=========================================
  Hits          137      137
+ Misses     119983   116714   -3269
  Partials       20       20

Flag
Coverage Δ

integration1temurin11
?

integration1temurin17
?

integration1temurin20
?

integration2temurin11
?

integration2temurin17
?

integration2temurin20
?

unittests1temurin11
?

unittests1temurin17
?

unittests1temurin20
?

unittests2temurin11
0.11% <ø> (+<0.01%)
:arrow_up:

unittests2temurin17
0.11% <ø> (+<0.01%)
:arrow_up:

unittests2temurin20
0.11% <ø> (+<0.01%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

.../function/SelectTupleElementTransformFunction.java
0.00% <ø> (ø)

... and 83 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


[Hotfix][Testing] Wait for RPCServer to be established

In unittests, we establish a "faked" RPC tracker/runner locally, but we forgot to wait until the server process is set up, which causes flakiness on mainline.
https://ci.tlcpack.ai/blue/organizations/jenkins/tvm/detail/main/1815/pipeline
Thanks @vinx13 for reporting! CC @zxybazh

@shingjan Yes it's far more than enough as I experimented with @zxybazh weeks ago, but I did some refactoring when upstreaming the codebase, which accidentally dropped this line...

LGTM. Thanks for the fix.

OK, answering my own Q, this might be needed for server to connect to tracker.

@tqchen right, the server needs some time to talk to the tracker


Performance improvement for CoTeDe

Before it would call CoTeDe to run a full set of tests, like the full GTSPP recommendation, to extract only one test at a time. Now it calls CoTeDe to run only the specific test of interest.
It should make significant performance difference for most tests using CoTeDe. Since AutoQC runs in parallel, and only a portion of tests use CoTeDe, it requires a large data processing to identify this time difference.

@s-good and @BillMills , are you OK with this PR?
It says that there is a conflict, but I can't see what it is.

@castelao if you on your local machine switch to your cotedeupdate branch, and then do git pull upstream master (assuming you have a remote called upstream pointed at this repo), git should report all the files with merge conflicts in them, and annotate them inline. Let me know if this works for you!

Hi @BillMills . Yes, I called upstream, and yes I usually keep them sync, like I did for the previous PR deac0a8. I guess these PRs took so long that i missed the opportunity to sync again. I'll work on that when I have chance.
Thanks,

Hey @castelao - any luck here? Once #161 wraps up we will be ready for 1.0, and I really want this PR included there; let me know if I can help at all!


In VS 2019 Community, there are NO tabs for Packaging or Linker or Advanced.

In VS 2019 Community, there are NO tabs for Packaging or Linker or Advanced.
I am looking under Android Options.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 26d346ac-9d17-d567-9c22-4350aca4b071
Version Independent ID: bd0e55c1-7f38-fdf4-a5d0-763ce75d8604
Content: ProGuard - Xamarin
Content Source: docs/android/deploy-test/release-prep/proguard.md
Product: xamarin
Technology: xamarin-android
GitHub Login: @davidortinau
Microsoft Alias: daortin

Hi @mkamoski, this seems like it might be a bug? I've created an issue on developer community – does that reflect your experience as well?

Hi @mkamoski, this seems like it might be a bug? I've created an issue on developer community – does that reflect your experience as well?

Yes.

UPDATE: the engineering team showed me that the tabs are now 'flattened' into one page - the linker information is below the packaging properties, and the advanced information is now reached by a button rather than a tab (new screenshot below). Updating the doc screenshot soon.

Thanks for letting us know!


Automatically save resources in the Inspector

Godot version:
Godot 3.1 8b77dca
Issue description:
It is frustrating to have to manually save a resource every time I edit a property from the Inspector. I would rather the process be automated some way so that I don't forget to save it or have to go back to the resource if I move away from it just to save it before returning to where I was.
Right now when if you open a resource and edit it... and then open another resource and edit it too.
Even though the values were saved.. they are not! They only save when you click the save button (icon) when in the inspector.
Steps to reproduce:
Having two resources:

Edit the first
Double click the other resource
Edit the second resource
Double click the first (the values seem to be saved)
Close and Reopen the project
Values were not saved

Possible solution:
Add toggleable editor settings that do the following...

Save a resource every time its properties are edited. If the properties are set through an EditorPlugin (like for embedded curve editors), then serialize the data on a loop while editing (or something to just no execute I/O operations per frame while changing data every frame).

Additionally, auto-save a resource when switching from that resource to a different one. This would be accomplished with very little changes in the editor.

So, recently I noticed the resources do actually autosave. Not sure how (might be something with saving project i.e. CTRL+S or auto-save on run), but I could e.g. create and edit tileset with tileset editor without even touching the save resource button.

So, recently I noticed the resources do actually autosave. Not sure how (might be something with saving project i.e. CTRL+S or auto-save on run), but I could e.g. create and edit tileset with tileset editor without even touching the save resource button.

it only autosaves on run!!
The resources will not save.

Maybe it is related to https://github.com/godotengine/godot/issues/6201? I'm guessing if we have a check for detecting inspector value changes it would be straightforward to implement a record mode for keyframing.
Maybe with signals or something like suggested here? https://github.com/godotengine/godot/issues/16365

Maybe this is also related to #6201? I'm guessing if we have a check for detecting inspector value changes it would be straightforward to implement a record mode for keyframing.

Don't know how it is related, and don't think it is! This patch intent is automatically saving resource files so you don't lose your work! It happens to me a lot to just open the editor, create some Items/Weapons (that in my game are Resource extending classes) I save the project close and then I realize the changes didn't save!!

Maybe can have signals used in this change? It might make more sense an allow for much more extended behaviour instead of only auto-saving (see #16365).

Using signals for this (automatically saving resource files so you don't lose your work) raises a problem.. imagine you are updating a number with a scroll (or up-down) every time you change the value the resource would be saved to the disk.. and that would not be a good implementation.
I think signal on export property change would be a good addition to Godot in the future but not for this purpose.

By default, Ctrl+S saves the current scene (and running saves them all), which also saves all resources referenced by it. In many cases that means Godot will save work related to those scenes kind of automatically, but if you created a resource which is not referenced it may indeed not be included in that autosaving. I'd prefer have the option not to save resources everytime they are edited though, I'm of the ones who want to have control of when to write work to disk and when not to :p (that includes shaders and scripts)

@Zylann the PR I proposed allows for enable and disable this auto save functionality... I know it would be ideal to also have a notification alerting to unsaved resources! But that would make the PR more complex and not a pick for the 3.1 release. But it for sure should be considered for future implementations.
Right now the idea was to provide a simple way to resolve the lose of work/time I’ve been experiencing the last 6 months I’ve been using Godot!

In Godot 3.1, I changed Godot to save every edited resource when you run or ctrl-s, no matter whether its used or not by the current scene. If this is not working, please open a different issue.

I see that if there is a resource that is used by one that is saved to disk (like a gradient texture) this does not make the parent resource to be saved. This can be fixed, though, so please open a new issue about this.

Is there still a need for this proposal after 9ca6ffa3?

Autosave is a must.
nobody can predict unlucky events, it is the reason many software implement autosave.
I'm not saying to save the resource directly, but a sort of .recovery file that could be loaded after unlucky events (crashes of any kind), and allow users to commit saves manually.


[Bug] Fails to compile with @vuelidate errors

What happened?
Trying to run yarn dev following init as per the quickstart results in the following errors shown below on the terminal. The same errors are shown when browsing to the shopware-pwa. I tried few different node versions, but I could only get it to work that far with 16.10.0 so this is the one that is being used now. This is on a fresh ubuntu 20.04 docker image. Node and yarn installer with nvm.
root@XX:/home/pwa# yarn dev
yarn run v1.22.19
$ shopware-pwa dev
[CLI > dev] Starting Shopware PWA development project...
✔ [CLI > plugins] Generating plugins files
[CLI > languages] Shopware languages refreshed
[CLI > plugins] Plugins generated
[CLI > cms] CMS prepared
[CLI > languages] Shopware languages refreshed
ℹ Using theme: @shopware-pwa/default-theme                                                                                17:30:35
ℹ "notifications.js" plugin was registered automatically in client&server mode.                                                                                17:30:35
╭───────────────────────────────────────────╮
│                                           │
│   Nuxt @ v2.16.3                          │
│                                           │
│   ▸ Environment: development (dev)        │
│   ▸ Rendering:   server-side              │
│   ▸ Target:      server                   │
│                                           │
│   Listening: http://<IP_ADDRESS>:3000/   │
│                                           │
╰───────────────────────────────────────────╯
ℹ Preparing project for development                                                                                17:30:35
ℹ Initial build may take a while                                                                                17:30:35
✔ Builder initialized                                                                                17:30:35
✔ Nuxt files generated                                                                                17:30:35
✖ Client
Compiled with some errors in 23.64s
✔ Server
Compiled successfully in 21.76s
ERROR  Failed to compile with 14 errors                                                                                friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'computed' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'getCurrentInstance' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'inject' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'isReactive' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'isReadonly' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'isRef' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'nextTick' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'onBeforeMount' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'onBeforeUnmount' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'provide' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'reactive' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'ref' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'unref' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
ERROR  in<EMAIL_ADDRESS>                                                                                friendly-errors 17:30:59
Can't import the named export 'watch' from non EcmaScript module (only default export is available)                                                                                friendly-errors 17:30:59
friendly-errors 17:30:59
No issues found.                                                                                17:30:59
ℹ Waiting for file changes                                                                                17:31:00
ℹ Memory usage: 498 MB (RSS: 833 MB)                                                                                17:31:00
ℹ Listening on: http://<IP_ADDRESS>:3000/
Steps To Reproduce
Run a dockware <IP_ADDRESS> container, install latest (3.3) swag plugin.
On the fresh Ubuntu 20.04 docker image with host networking install nvm, install node 16.10 and yarn, then run:
mkdir pwa
cd pwa
npx @shopware-pwa/cli init
answer_questions
yarn dev
Is there an existing issue for this?

[X] I have searched the existing issues

Version
Canary (generated by CLI)
Which element is affected?
nuxt-module
Environment
- OS: Arch Linux, Ubuntu 20.04 running in docker.
- Node: 16.10
- Shopware API: <IP_ADDRESS>
- Shopware PWA version: 1.4.0 and 1.6.1

Relevant log output
ERROR in<EMAIL_ADDRESS>70:9-17
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>79:9-17
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>154:19-27
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>197:41-49
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>294:28-36
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>307:20-28
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>312:20-28
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>313:18-26
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>314:25-33
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>327:19-27
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>361:21-29
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>364:17-25
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>374:24-32
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>381:18-26
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>388:19-27
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>389:19-27
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>390:20-28
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>391:17-25
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>451:28-36
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>458:32-40
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>492:23-31
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>639:23-31
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>677:85-93
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>769:9-17
Can't import the named export 'computed' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>702:65-83
Can't import the named export 'getCurrentInstance' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>663:40-46
Can't import the named export 'inject' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>665:44-50
Can't import the named export 'inject' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>56:9-19
Can't import the named export 'isReactive' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>56:30-40
Can't import the named export 'isReadonly' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>503:10-15
Can't import the named export 'isRef' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>547:8-13
Can't import the named export 'isRef' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>744:35-40
Can't import the named export 'isRef' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>529:12-20
Can't import the named export 'nextTick' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>532:10-18
Can't import the named export 'nextTick' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>726:4-17
Can't import the named export 'onBeforeMount' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>766:4-19
Can't import the named export 'onBeforeUnmount' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>664:2-9
Can't import the named export 'provide' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>666:2-9
Can't import the named export 'provide' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>316:11-19
Can't import the named export 'reactive' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>560:9-17
Can't import the named export 'reactive' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>744:94-102
Can't import the named export 'reactive' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>106:19-22
Can't import the named export 'ref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>107:26-29
Can't import the named export 'ref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>178:19-22
Can't import the named export 'ref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>180:20-23
Can't import the named export 'ref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>264:17-20
Can't import the named export 'ref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>265:28-31
Can't import the named export 'ref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>266:27-30
Can't import the named export 'ref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>638:27-30
Can't import the named export 'ref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>710:28-31
Can't import the named export 'ref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>720:18-21
Can't import the named export 'ref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>725:12-15
Can't import the named export 'ref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>75:38-43
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>98:13-18
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>182:10-15
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>206:10-15
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>221:12-17
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>236:10-15
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>275:82-87
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>275:107-112
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>347:16-21
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>375:47-52
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>395:47-52
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>435:24-29
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>459:22-27
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>479:18-23
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>479:35-40
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>636:92-97
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>656:92-97
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>48:11-16
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>90:29-34
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>90:43-48
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>219:22-27
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>308:39-44
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>312:60-65
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>314:67-72
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>362:39-44
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>375:24-29
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>376:60-65
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>382:24-29
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>383:60-65
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>388:76-81
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>389:61-66
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>389:83-88
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>452:14-19
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>453:15-20
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>456:51-56
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>459:20-25
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>461:21-26
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>493:15-20
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>496:16-21
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>497:23-28
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>514:23-28
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>602:15-20
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>602:65-70
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>640:19-24
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>770:45-50
Can't import the named export 'unref' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>109:19-24
Can't import the named export 'watch' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>512:4-9
Can't import the named export 'watch' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>535:22-27
Can't import the named export 'watch' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>728:6-11
Can't import the named export 'watch' from non EcmaScript module (only default export is available)
ERROR in<EMAIL_ADDRESS>745:4-9
Can't import the named export 'watch' from non EcmaScript module (only default export is available)

A change to main package.json resolves it. Specifically when all dependencies are changed from this:
"nuxt": "^2.15.8"
to this:
"nuxt": "2.15.8"
It makes yarn use the correct versions. I've tried this on ubuntu 20.04 as mentioned and latest arch. Multiple versions of Node. yarn installed with npm. If this is not a bug in yarn, but desired behavior I suggest the file is updated to remove those marks.


Windows Server AHB Usage last day vs last 30 days does not match

in the Windows Server AHB Usage report example there is the value 64 for Windows Server AHB Usage last day card visual and last 30 days line chart.
for me it does not match. I would like to understand why those numbers differ. please see screenshot.

what are the
[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 0eddfa5b-1e69-a074-db05-a9138327170c
Version Independent ID: 7952af48-217c-d753-2ec0-a14fe75867cd
Content: Analyze Azure costs with the Power BI App - Microsoft Cost Management
Content Source: articles/cost-management-billing/costs/analyze-cost-data-azure-cost-management-power-bi-template-app.md
Service: cost-management-billing
Sub-service: cost-management
GitHub Login: @bandersmsft
Microsoft Alias: banders

@hokeson Thank you for posting your question. I will review it and get back to you soon.

@hokeson Thank you for your patience in this matter. Based on my discussion with an SME on this issue, it is best to reach out to Azure cost management support by raising a support request. The ticket enables you to work closely with the support engineers and get a quick resolution to your issue.
Here is the link - https://docs.microsoft.com/en-us/azure/azure-portal/supportability/how-to-create-azure-support-request to create support case.
FYI: Azure Billing and Subscription Management support is included in the Basic Support Plan without any charge.
https://azure.microsoft.com/en-us/support/plans/


Collisions

evaluate collisions between sprites

controlling one sprite punch another one.

[ ] validate collision areas
[ ] determine when a collision happened.


Platform dependent use patterns of arboard

Since 3.0, we should now create a new Clipboard, use it, then drop it right away on Windows.
However, I'm getting reports that that same code doesn't work on Linux X11, and that we there instead need to create a Clipboard once and then keep it around for the life of the program: https://github.com/emilk/egui/issues/2138
If true, this makes using arboard suddenly very annoying as I need different paths depending on what platform I am compiling for (which is exactly what I want arboard to help me abstract).

From a users point of view, I just want access to functions to copy and paste text and images. I don't want to think about the lifetime of the Clipboard resource.

Thanks for opening an issue. I agree that this is problematic, and I think that I've now seen it cause enough problems that I'll be reverting the new default behavior introduced in #60 to what it was pre 3.0. Sorry for causing headaches downstream 😦. I did not think enough about how cross-platform users would be affected by the new usage pattern on Windows, which is entirely my bad. I'll be looking at this after work today.

Thanks @complexspaces ❤

I have to say it is rather unclear from the repository the correct usage pattern for the Clipboard struct.
Can we expect to be able to (for all platforms and display server protocols) create multiple instances of Clipboard in numerous places in the program and drop them whenever we like without it affecting the underlying data that has either been written to or read from the Clipboard? I.e. create a new Clipboard, set some text, block ends and Clipboard is lost, and expect the text to remain paste-able.
Or must we create a single instance of Clipboard and use only that when set_text()ing or get_text()ing for the entirety of the program's lifespan?

@derfarctor The high-level answer to your question is "no." Linux uses too different of an architecture compared to the other platforms. Do you mind looking through the documentation changes in #89 and letting me know if it would answer your question and if there's anything else you would like to see called out?

@complexspaces The documentation is more clear there.
I've changed my program to only use a single instance of Clipboard but now, as I understand is expected, it does not work properly on Windows. I eagerly await the release of the fix such that this usage pattern can be fully cross platform friendly.

These fixes have been published as 3.2.0 on crates.io. Thanks again for opening this issue and contributing everyone.


[1.19.0] Reveal in tree view not selecting file when all parent directories are closed

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: http://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: http://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
Reveal in tree view doesn't select current file if all parent directories are closed.
Steps to Reproduce

Open atom window in root directory of project
Open a file nested somewhere deep in the folder structure
Close all parent directories in tree view
right click on open file and select reveal in tree view

Expected behavior: [What you expect to happen]
The current file to be selected in the tree view.
Actual behavior: [What actually happens]
Root directory is still selected.
Reproduces how often: [What percentage of the time does it reproduce?]
100%
Versions
Atom    : 1.19.0
Electron: 1.6.9
Chrome  : 56.0.2924.87
Node    : 7.4.0
apm  1.18.2
npm  3.10.10
node 6.9.5 x64
python 2.7.8
git 2.10.1
Additional Information

Thanks for taking the time to contribute!
We noticed that this is a duplicate of https://github.com/atom/tree-view/issues/188. You may want to subscribe there for updates.
Because we treat our issues list as the Atom team's backlog, we close duplicates to focus our work and not have to touch the same chunk of code for the same reason multiple times. This is also why we may mark something as duplicate that isn't an exact duplicate but is closely related.
For information on how to use GitHub's search feature to find out if something is a duplicate before filing, see the How Can I Contribute? section of the Atom CONTRIBUTING guide.


SSL error when porting from node:tls with a self sign certificate (SSLV3_ALERT_HANDSHAKE_FAILURE  or CertPathValidatorException)

Hi,
I am trying to port a library androidtv-remote that was originally designed to run in a node environment  to be able to run inside a react-native app.
For the ssl part it was using node:tls and it works fine with it.
The android device I am connecting to is using a self signed certificate and the app is using a self signed certificate too.
Here is the server ssl characteristics:
openssl s_client -state -connect <IP_ADDRESS>:6467
CONNECTED(00000003)
SSL_connect:before SSL initialization
SSL_connect:SSLv3/TLS write client hello
SSL_connect:SSLv3/TLS write client hello
Can't use SSL_get_servername
SSL_connect:SSLv3/TLS read server hello
depth=0 dnQualifier = full_fbx6lcv2/fbx6lcv2/Freebox Player Mini v2, CN = atvremote/863600S191201703
verify error:num=18:self-signed certificate
verify return:1
depth=0 dnQualifier = full_fbx6lcv2/fbx6lcv2/Freebox Player Mini v2, CN = atvremote/863600S191201703
verify return:1
SSL_connect:SSLv3/TLS read server certificate
SSL_connect:SSLv3/TLS read server key exchange
SSL_connect:SSLv3/TLS read server certificate request
SSL_connect:SSLv3/TLS read server done
SSL_connect:SSLv3/TLS write client certificate
SSL_connect:SSLv3/TLS write client key exchange
SSL_connect:SSLv3/TLS write change cipher spec
SSL_connect:SSLv3/TLS write finished
SSL3 alert read:fatal:handshake failure
SSL_connect:error in error
40277A58637E0000:error:0A000410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:../ssl/record/rec_layer_s3.c:1584:SSL alert number 40
---
Certificate chain
 0 s:dnQualifier = full_fbx6lcv2/fbx6lcv2/Freebox Player Mini v2, CN = atvremote/863600S191201703
   i:dnQualifier = full_fbx6lcv2/fbx6lcv2/Freebox Player Mini v2, CN = atvremote/863600S191201703
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Jan 25 11:00:00 2021 GMT; NotAfter: Jan 19 03:14:07 2038 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
MIICNzCCAiCgAwIBAgIGAXc6px/tMA0GCSqGSIb3DQEBCwUAMF0xNjA0BgNVBC4M
LWZ1bGxfZmJ4NmxjdjIvZmJ4NmxjdjIvRnJlZWJveCBQbGF5ZXIgTWluaSB2MjEj
MCEGA1UEAxMaYXR2cmVtb3RlLzg2MzYwMFMxOTEyMDE3MDMwHhcNMjEwMTI1MTEw
MDAwWhcNMzgwMTE5MDMxNDA3WjBdMTYwNAYDVQQuDC1mdWxsX2ZieDZsY3YyL2Zi
eDZsY3YyL0ZyZWVib3ggUGxheWVyIE1pbmkgdjIxIzAhBgNVBAMTGmF0dnJlbW90
ZS84NjM2MDBTMTkxMjAxNzAzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEA1hmo54HHzsk8i0+/hNax+zVtZR4WDP6F/3JXT1Y3YtYVP7HjW5THXSXvn+4i
VPgOwwFrg5fFd2N6hnk5As56Ks2h+r/r3UzuHvMiYnkkpbW89b0VoAhY740wShky
xY0TJx/Ipj1YlU65oB6AxWWM78MAHIAtNJuB+/DFvKTpZoGj32Eq2lHyEhfnHCYU
rkT27jkTp9TyWj6LIYkZFfcykgPKu90LDNqFtxrBCvA9d354TyrbZdBYbW3Ca4Vh
0jpfuxDPzOyRnSGWi4IwFZdIuv0vLu1TMOyp3aFzIbR4L+EBvvNKoSwDWFPnVRns
UAP+50dCjk6/zSNu4Fou4EwikwIDAQABMA0GCSqGSIb3DQEBCwUAAwIAAA==
-----END CERTIFICATE-----
subject=dnQualifier = full_fbx6lcv2/fbx6lcv2/Freebox Player Mini v2, CN = atvremote/863600S191201703
issuer=dnQualifier = full_fbx6lcv2/fbx6lcv2/Freebox Player Mini v2, CN = atvremote/863600S191201703
---
No client certificate CA names sent
Client Certificate Types: RSA sign, ECDSA sign
Requested Signature Algorithms: RSA+SHA512:ECDSA+SHA512:RSA+SHA384:ECDSA+SHA384:RSA+SHA256:ECDSA+SHA256:RSA+SHA224:ECDSA+SHA224:RSA+SHA1:ECDSA+SHA1
Shared Requested Signature Algorithms: RSA+SHA512:ECDSA+SHA512:RSA+SHA384:ECDSA+SHA384:RSA+SHA256:ECDSA+SHA256:RSA+SHA224:ECDSA+SHA224
Peer signing digest: SHA256
Peer signature type: RSA
Server Temp Key: ECDH, prime256v1, 256 bits
---
SSL handshake has read 1072 bytes and written 423 bytes
Verification error: self-signed certificate
---
New, TLSv1.2, Cipher is ECDHE-RSA-CHACHA20-POLY1305
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-CHACHA20-POLY1305
    Session-ID: E5935763D407F7CE037E1EE9F10B714E5347182F06929B4C07A17FCA936C37AB
    Session-ID-ctx:
    Master-Key: 1F6A12558802A1F2DE12478C3E1146A6ECCB4F1A08CF657B14C196CA7FC9DDBD873C83EFC3DE1DBE0F72D138815E65F1
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time:<PHONE_NUMBER>
    Timeout   : 7200 (sec)
    Verify return code: 18 (self-signed certificate)
    Extended master secret: yes
---

The application I am using is available here: https://github.com/vricosti/TestAndroidTVRemoteApp
At the beginning a self signed certificate is generated inside packages/androidtv-remote/src/certificate/CertificateGenerator.js
this.cert = await CertificateGenerator.generateFull(
                this.service_name,
                'CNT',
                'ST',
                'LOC',
                'O',
                'OU'
            );

this.cert object holds 2 fields, key and cert holding private key and certificate in pem
and then this certificate was used to start the tls connection:
async start() {
        return new Promise((resolve, reject) => {
            let options = {
                port: this.port,
                host : this.host,
                key: this.certs.key,
                cert: this.certs.cert,
                rejectUnauthorized: false,
            };

            if (jsEnv.isNodeOrDeno) {
                console.debug('set options to use node:tls');

                this.client = tls.connect(options, () => {
                    console.debug(this.host + " Pairing connected");
                });

            } else if (jsEnv.isReactNative) {
                console.debug('set options to use react-native-tcp-socket');
                options.tls = true;
                options.tlsCheckValidity = false;
                options.cert = this.certs.cert;

                this.client = TcpSockets.connectTLS(options, () => {
                    console.debug(this.host + " Pairing connected");
                });
            }

            this.client.pairingManager = this;

            //const connectEventName = jsEnv.isNodeOrDeno ? "secureConnect" : "connect";
            this.client.on("secureConnect", () => {
                console.debug(this.host + " Pairing secure connected ");
                this.client.write(this.pairingMessageManager.createPairingRequest(this.service_name));
            });

            this.client.on('data', (data) => {
                let buffer = Buffer.from(data);
                this.chunks = Buffer.concat([this.chunks, buffer]);

                if(this.chunks.length > 0 && this.chunks.readInt8(0) === this.chunks.length - 1){

                    let message = this.pairingMessageManager.parse(this.chunks);

                    console.debug("Receive : " + Array.from(this.chunks));
                    console.debug("Receive : " + JSON.stringify(message.toJSON()));

                    if (message.status !== this.pairingMessageManager.Status.STATUS_OK){
                        this.client.destroy(new Error(message.status));
                    }
                    else {
                        if(message.pairingRequestAck){
                            this.client.write(this.pairingMessageManager.createPairingOption());
                        }
                        else if(message.pairingOption){
                            this.client.write(this.pairingMessageManager.createPairingConfiguration());
                        }
                        else if(message.pairingConfigurationAck){
                            this.emit('secret');
                        }
                        else if(message.pairingSecretAck){
                            console.debug(this.host + " Paired!");
                            this.client.destroy();
                        }
                        else {
                            console.debug(this.host + " What Else ?")
                        }
                    }
                    this.chunks = Buffer.from([]);
                }
            });

            this.client.on('close', (hasError) => {
                console.debug(this.host + " Pairing Connection closed", hasError);
                if(hasError){
                    reject(false);
                }
                else{
                    resolve(true);
                }
            });

            this.client.on('error', (error) => {
                console.error(error);
            });
        });
    }

I have the following error:
Entering useEffect()
 LOG  Before instantiating AndroidRemote
 LOG  AndroidRemote.constructor
 LOG  After instantiating AndroidRemote
 LOG  Before start()
 LOG  AndroidRemote.start
 LOG  before CertificateGenerator.generateFull
 LOG  Entering generateFull
 LOG  after generateKeyPair with keys:  {"privateKey": {"d": {"data": [Array], "s": 0, "t": 79}, "dP": {"data": [Array], "s": 0, "t": 40}, "dQ": {"data": [Array], "s": 0, "t": 40}, "decrypt": [Function anonymous], "e": {"data": [Array], "s": 0, "t": 1}, "n": {"data": [Array], "s": 0, "t": 79}, "p": {"data": [Array], "s": 0, "t": 40}, "q": {"data": [Array], "s": 0, "t": 40}, "qInv": {"data": [Array], "s": 0, "t": 40}, "sign": [Function anonymous]}, "publicKey": {"e": {"data": [Array], "s": 0, "t": 1}, "encrypt": [Function anonymous], "n": {"data": [Array], "s": 0, "t": 79}, "verify": [Function anonymous]}}
 LOG  after createCertificate with cert:  {"extensions": [], "generateSubjectKeyIdentifier": [Function anonymous], "getExtension": [Function anonymous], "isIssuer": [Function anonymous], "issued": [Function anonymous], "issuer": {"addField": [Function anonymous], "attributes": [], "getField": [Function anonymous], "hash": null}, "md": null, "publicKey": null, "serialNumber": "00", "setExtensions": [Function anonymous], "setIssuer": [Function anonymous], "setSubject": [Function anonymous], "siginfo": {"algorithmOid": null}, "sign": [Function anonymous], "signature": null, "signatureOid": null, "subject": {"addField": [Function anonymous], "attributes": [], "getField": [Function anonymous], "hash": null}, "validity": {"notAfter": 2024-05-17T08:13:05.387Z, "notBefore": 2024-05-17T08:13:05.387Z}, "verify": [Function anonymous], "verifySubjectKeyIdentifier": [Function anonymous], "version": 2}
 LOG  after CertificateGenerator.generateFull
 LOG  before new PairingManager
 LOG  PairingMessageManager.constructor
 LOG  after new PairingManager
 DEBUG  set options to use react-native-tcp-socket
 Read error: ssl=0x756ae993d8: Failure in SSL library, usually a protocol error
error:10000410:SSL routines:OPENSSL_internal:SSLV3_ALERT_HANDSHAKE_FAILURE (external/boringssl/src/ssl/tls_record.cc:592 0x751aef9020:0x00000003)

if use rejectUnauthorized: true
 ERROR  java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

So in both case it fails...
I tried to add the server certificate and pass it but same error:
let options = {
                port: this.port,
                host : this.host,
                ca: require('../../../../server-cert.pem'),
                key: this.certs.key,
                cert: this.certs.cert,
                //rejectUnauthorized: false,
            };

and I even check that inside the android code it receives the passed certificate...
thanks in advance

I might have found why, will close once confirmed

Ok I found the fix and basically it implies to save the cert and the private key inside a keystore, I forked it.

Ok I found the fix and basically it implies to save the cert and the private key inside a keystore, I forked it.

you mean the private key of client or server?

Ok I found the fix and basically it implies to save the cert and the private key inside a keystore, I forked it.

you mean the private key of client or server?

private key of client

Hello @vricosti,
Is there a way to connect iOS devices with TLS certificate authority, certificate, key if we provide them as PEM strings? I tried passing the file path and the certificate as string but no luck.

Hello @vricosti, Is there a way to connect iOS devices with TLS certificate authority, certificate, key if we provide them as PEM strings? I tried passing the file path and the certificate as string but no luck.

I don't think so because I have only implemented on android, I should try it on iOS but don't know yet if it will be complicated or not...

I encountered a problem for iOS tls connection. Looking at the iOS code there is no logic yet for client authentication. I am pretty new to react native so I can't do much but I'll be sure to post here if I find something on the matter.
What I have done until now is pass PEM strings for CA, client certificate and private key to the connectTLS function. It works flawlessly in android but on iOS it throws this error:
The operation couldn’t be completed. (kCFStreamErrorDomainSSL error -9824.)


How do you delete a contact

Can you please tell me how I can delete a google contact?

You will need to use Factory, the ContactFactory.
You configure google server access data:
$google (object) array( 		'clientID' => $googleClientId, 		'clientSecret' => $googleClientSecret, 		'redirectUri' => $routeCallbackGoogle, 		'developerKey' => '', 		'refreshToken' => $user->AcessToken );
Get the selfUrl of the contact you want to delete:
$ga_selfUrl = $contact->ga_selfUrl;
Select it on the google server:
$contact = ContactFactory::getBySelfURL($ga_selfUrl, $google);
Then you run the contact delete command:
ContactFactory::delete($contact, $google);
This was the way I managed to do it.
Sorry the english is of google translator.