Implement sum method for Sequence class

This PR:

Implements the sum method of the Sequence class; includes tests
Adds documentation for the sum method.

Examples:
System.print([1, 3.14].sum)  //> 4.14
System.print((1..3).sum)  //> 6
System.print([].sum)  //> 0

System.print(["string", 1, 2].sum)  //> runtime error "Can't sum non-numeric values"

Note that this is the same as:
seq.reduce(0) { |sum, item| sum + item }

Though it could be useful as a shortcut.
Do we need the explicit runtime error checking, though? Doesn't a reasonable runtime error already happen once it actually tries to add up something non-numeric?

This is my first PR in a project of this scale, so pardon my knowledge gaps in architecture. I have to questions then:

Do you think using reduce in sum implementation would be a better thing than a for-loop which I used?
As for explicit errors, probably you're right and it is redundant there.

Does not seems very useful, seems to much specific too me. Would be more
interesting in something like NumSequence or NumList.

I'm closing this PR until someone implements either of NumSequence or NumList then

To be honest I don't really see the point of NumSequence or NumList. Wren is not Java. I personally see little harm in adding sum to Sequence, and letter it produce an error when it encounters something that can't be added, the same way it happens when you try to use the + operator anywhere else.
We can also add other little helpers like min, max and average. And while browsing the Java 8 Stream API there's more "inspiration" to be found, for example the distinct function, which could build up a set of seen-values on-demand to prevent processing them again.
In the end it's up to the maintainers to decide. No need to just the PR just cause someone suggests something else. :-)

Personally I see more these utility functions as external ones.
The proposed change was well defined/correct/... but to me sounds to not
fit in the picture. Relying on + and num 0 to perform the first iteration
is not well behaving. Likewise with min/max it relies on magnitude aka
ordering operation of items and don't fit such generic container.

hey @vladyio thanks for the PR, it's a good suggestion and a reasonable implementation.
@bjorn is on point with regards to extraneous types like NumSequence, as wren is minimal in design and intention, a bunch of top level types like that don't belong.
The idea of sum, min, max and average being part of the sequence API is an interesting question.
In a way, any and reduce are not that different from sum, but there is one important distinction. In the case of the existing API, the utility is asking you to clarify the nature of the sequence through functions (predicate), or providing a utility based on a fundamental with how wren works. e.g all with a list of values will return false if any value is null - it doesn't care about the types, only the falseness.
This is true for sum as well. It doesn't need to care about numeric values, it only need to cares about the + operator. This means you can do:
var lists = [ [0], [1], [2] ]
var combined = lists.sum // [0,1,2]
var strings = ["hello", "world"]
var joined = strings.sum //"helloworld"

This works for strings, custom + operators, and more.
This makes sum a generic and useful tool, similar to reduce and others. The use case reasons about usage on the user side. It doesn't make many assumptions except 1. iterable 2. uses + operator (unsurprising for sum).
Now, there is the issue of var result = 0, and with what @bjorn suggested, as it moves the assumption deeper into the core that the sequence is numeric. reduce(0) and result = 0 is enforcing that. To avoid that, it should be along the lines of var result = sequence.first which can copy how the reduce function implements it.
But since this is essentially just reduce now, it can be implemented like this:
sum { reduce {|current, item| current + item } }

So if this is all that sum amounts to, let's question the 'built in' use cases:

strings - sequence.join works here, as does reduce
lists - A: var result = [] / sequence.each {|list| result+list },  B: sequence.reduce([]) {|cur, list| cur + list }
custom - reduce is the only option

What's interesting is that B: reduce form is technically a small convenience over the manual accumulator form A:. This is preferable, reduce is much cleaner and nicer. Also then, sum is just a minor convenience over reduce, both cleaning up the code and making the sequence API useful. seq.sum is much simpler than seq.reduce() {|cur, item| cur + item } and is more convenient.
Based on that, with some minor changes, I do think sum is a useful addition to the sequence API, and fits alongside the other conveniences provided by sequence already.
min, max, and average are trickier, they don't necessarily need to enforce numericness internally, but that means they're more generic/useful as predicates, something like seq.min {|a, b| a < b }. That's a separate discussion and this is already long - so let's focus on sum first.

sum { reduce {|current, item| current + item } }

Right, I didn't suggest this because this way the sum of an empty sequence is not 0 but produces an error, which is rather unexpected. That said, I do like that it's more generic.

min, max, and average are trickier, they don't necessarily need to enforce numericness internally, but that means they're more generic/useful as predicates, something like seq.min {|a, b| a < b }. That's a separate discussion and this is already long - so let's focus on sum first.

While I think you're certainly right that average is trickier, I think min and max follow the same generic rule of sum in that they would map to the following shortcuts:
min { reduce {|current, item| current < item ? current : item } }
max { reduce {|current, item| item < current ? current : item } }

And the < operator will determine in a type-specific way exactly what that comparison means. And in this case, it even makes sense for the function to error out on an empty sequence.
Of course, as is usually the case when sorting, it makes sense to add a way to customize the comparison beyond what the < operator provides, as you suggested.

but produces an error

And in this case would be an error about reduce, which is confusing when calling sum. Maybe the empty sequence error similar to reduce can be added for clarity. This line could go at the top of sum, then:
sum {
  if (isEmpty) Fiber.abort("Can't sum an empty sequence.")
  return reduce {|current, item| current + item }
}

@vladyio feel free to make these changes to your PR, once it's aligned closer to the ideal we can consider merging it.

I think min and max follow the same generic rule of sum in that they would map to the following shortcuts:

Sum leans on multiple types in the core having + while only Num has <. or >, given that only has meaning with numbers. What is < of a list without assumptions? It's hard to say...
Though it could be a variant, i.e provide both min(fn) {} and min { } such that if it's a numeric-like sequence with types that implement < then it applies, and if not the predicate is required.
But I want to still think about this a bit more.

All these, are utility wrappers around reduce. It is easy to add them to
the core language/module but they are not necessary to make it work.
But you can add them to a dedicated module, in a static method. As a bonus,
it would be more reusable since it would/should work with every iterable
and not only with Sequence. As a side note it is also true with a bunch of
methods from Sequence, even reduce itself.
I don't deny the value of such code, but you are augmenting the Sequence
class for the wrong reasons. Look at how these utility functions are
implemented in Java/c++/... They all implement them in a static method or
function. I can try to explain the reasons why, but it is hard to express.

They all implement them in a static method or function. I can try to explain the reasons why, but it is hard to express.

I see this is the case in the STL, but how is it true for Java?
I think Wren does not lend itself very well for static functions, since they will always need their class prefix. In addition it reverses the order of the code. So it becomes both verbose and hard to read, if such methods are not directly available on the Sequence class.

Sum leans on multiple types in the core having + while only Num has <. or >, given that only has meaning with numbers. What is < of a list without assumptions? It's hard to say...

Hmm, I had thought at least String would also provide this operator. In any case, we don't need to define < for types where it makes no sense. Trying to use these functions will then raise a X does not implement '<(_)' error, which is fine.

Le mer. 15 mai 2019 à 11:14, Thorbjørn Lindeijer<EMAIL_ADDRESS>a écrit :

They all implement them in a static method or function. I can try to
explain the reasons why, but it is hard to express.
I see this is the case in the STL, but how is it true for Java?

They was dedicated classes like (java.utils.)ArrayUtils, but since the
introduction of generics one should use (java.util.)Collections.
It doesn't mean class shouldn't offer shorthand to them as methods, but
behavior should be identical to the static ones.

I think Wren does not lend itself very well for static functions, since
they will always need their class prefix. In addition it reverses the order
of the code. So it becomes both verbose and hard to read, if such methods
are not directly available on the Sequence class.

Verbosity is not the biggest problem here. It makes the language more
functional like. It sounds less intuitive, but by doing less, we can reuse
(and compose) more.

Sum leans on multiple types in the core having + while only Num has <. or

, given that only has meaning with numbers. What is < of a list without
assumptions? It's hard to say...

Hmm, I had thought at least String would also provide this operator. In
any case, we don't need to define < for types where it makes no sense.
Trying to use these functions will then raise a X does not implement
'<(_)' error, which is fine.

Well we are so used to the string < operator that we forgot that it is non
sense, but just a useful helper that rely on encoding of the the string.

@underscorediscovery, do you think this behaviour is the right thing?
> [].sum
Runtime error: Can't sum an empty sequence.

I mean, Python can (sum([]) # => 0) and Ruby can ([].sum # => 0), and I think it also would make sense in Wren.
Then also I noticed this:
> [null].sum
null

> [null, null].sum
Runtime error: Null does not implement '+(_)'.

> [1, null, null].sum
Runtime error: Right operand must be a number.

Which apparently makes sense on the implementation level, but in terms of developer experience doesn't feel obvious and can be confusing. Well, this is just my opinion about your last suggested implementation of sum.

This has to be reduce with the accumulator set to 0 to reduce a number of
these errors.
But it does also means it will only works with what Num + accept.

Maybe packing the appending of strings and arrays in a sum helper is going too far.
@vladyio Since you're comparing to Python and Ruby, what do they do on non-numeric input?

@bjorn in Ruby you can't really sum much except numeric values.
[nil].sum
# => TypeError (nil can't be coerced into Integer)

["str", "ing"].sum
# => TypeError (String can't be coerced into Integer)

The same thing happens in Python:
sum([None])
# => TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'

sum(["str", "ing"])
# => TypeError: unsupported operand type(s) for +: 'int' and 'str'

Both languages don't support the sum of arrays via the sum method, but it's allowed to join arrays by + operator.
I believe they use sum only for the numeric sequences since each error points to an integer, which I guess because they both start sums from a zero.

What happens with more exotic numeric values like big numbers, complex, or
polynomials.

@mhermier, Both are able to sum complex and big numbers in arrays. Polynomial isn't included in their standard libraries, so no point in checking them out.

Well, my preference for sum would hence go to:
sum { reduce(0) { |sum, item| sum + item } }

Since this seems the most intuitive and most common behavior. I hope we can move on to more interesting work on Wren. :-)

I mean, Python can (sum([]) # => 0) and Ruby can ([].sum # => 0), and I think it also would make sense in Wren.

If we are treating sum as a generic sequence operation and not a numeric operation it doesn't matter much contextually what the other languages do, since their parameters are different. Comparing what they do with e.g bignum is also not relevant specifically, as this is Wren, which doesn't have those concepts. What Wren does have is the + operator, which a custom bignum or polynomial would implement, and gain access to sequence sum all the same,

Then also I noticed this:
> [null].sum
null

> [null, null].sum
Runtime error: Null does not implement '+(_)'.

> [1, null, null].sum
Runtime error: Right operand must be a number.

Which apparently makes sense on the implementation level, but in terms of developer experience doesn't feel obvious and can be confusing. Well, this is just my opinion about your last suggested implementation of sum.

All of these are sort of outside of reasonable bounds either way.
Even if forcing numeric onto the sum implementation, inserting null into your sequence will yield these errors. The input is invalid, regardless of whether it is numeric or generic. I think what you are referring to may be your original is Num test? Touching every element in a sequence up front, every time, is a costly operation to pay every time, when the invariant rules are being broken. (This I think was also what bjorn was originally contesting, a high cost every time).
If the issue is invalid inputs then there may be better options that don't incur that cost by default, e.g sequence.isNumeric which the user can use to avoid null in their inputs.

Folks, I've updated everything according to what we discussed.
The docs probably can be improved as well as the tests, but I need your advice on that.

Better, but I'm still not happy with that change, because it doesn't allow
iterables to reuse that code.

I think this version fails to be actually useful. When do you need a generic sum method, that can't deal with empty sequences? What use is an alternative to join, which can't deal with empty sequences?
I think this is going to be one of those methods where people think they know what it'll do, but after they have tried to use it, they will invariably run into this limitation and need to litter their code with isEmpty checks. :-/
One idea I'd have to maybe have everyone happy (but can't please @mhermier ;-)), is to define sum as follows:
sum(start) { reduce(start) { |sum, item| sum + item } }
sum { sum(0) }

So now, we have a convenient default behavior for sum, but if you need to sum up a custom type, you can provide the starting value to have Wren use your type's + operator.

Le jeu. 16 mai 2019 à 14:33, Thorbjørn Lindeijer<EMAIL_ADDRESS>a écrit :

I think this version fails to be actually useful. When do you need a
generic sum method, that can't deal with empty sequences? What use is an
alternative to join, which can't deal with empty sequences?
I think this is going to be one of those methods where people think they
know what it'll do, but after they have tried to use it, they will
invariably run into this limitation and need to litter their code with
isEmpty checks. :-/
One idea I'd have to maybe have everyone happy (but can't please @mhermier
https://github.com/mhermier ;-)), is to define sum as follows:
sum(start) { reduce(start) { |sum, item| sum + item } }
sum { sum(0) }
Replace start with 'acc' or 'accumulator' to be consistent with 'reduce'
function.

And again I have no problem with the definition, only with where and how it
is defined.
I'm preparing a patch set to show what I mean, because a lot of 'Sequence'
utility methods needs the same treatment. Because 'Sequence' is a concrete
class of the 'Iterable' concept that is used in 'for', we should be able to
have access to most/all of them for 'Iterable' types.
As a bonus since they become static functions we don't need to unit test
them again and again per subclass.

So now, we have a convenient default behavior for sum, but if you need to
sum up a custom type, you can provide the starting value to have Wren use
your type's + operator.

This is a preliminary version of the patch set I propose. It is rough,
but it is more future/generic proof then simply expending 'Sequence'.
In extra, executing 'Iterable.sum([1, 2, 3, 4])' from the interactive
interpreter seems to trigger some wellknown frame corruption in the VM,
while the adding the accumulator parameter is not ... really odd.

Replace start with 'acc' or 'accumulator' to be consistent with 'reduce' function.

Sure, I didn't think too long about that name. :-)

This is a preliminary version of the patch set I propose. It is rough, but it is more future/generic proof then simply expending 'Sequence'.

I guess you attached a patch? You're replying to a GitHub issue, which sadly does not support attaching files via email.

Seems I'm doomed, because I renamed my local repo to canary. Last time I
checked I was not able to create another repo named wren because of the
rename...

Basically the change is pretty trivial. You take most of the code from
'Sequence' and vectorize it in static method. In my change set, I put
everything in an Iterable class (probably not the best name, but was a
placeholder to show what I meant).

Seems I'm doomed, because I renamed my local repo to canary. Last time I checked I was not able to create another repo named wren because of the rename...

The name of your Wren fork is kind of irrelevant. You can still push a branch there based on the master in this repository with your suggested changes.

In my change set, I put everything in an Iterable class

Rather than introducing a new class, couldn't the static methods just be added to Sequence?

Rather than introducing a new class, couldn't the static methods just be
added to Sequence?

While there is nothing technically against it, I don't really like it.
Since Iterable is mostly a concept/convention/protocol/interface/whatever
in the language, it should not be be mixed with a concrete class, in my
opinion.

Here is the flattened/minimal patch so we can discuss, and before I found a better way to contribute. Github is a pain by not allowing multiple forks, and I don't want to mess my canary fork ... so for the time being, here it is:
diff --git a/src/vm/wren_core.wren b/src/vm/wren_core.wren
index c2d0af92..613295aa 100644
--- a/src/vm/wren_core.wren
+++ b/src/vm/wren_core.wren
@@ -4,55 +4,106 @@ class Fn {}
 class Null {}
 class Num {}

-class Sequence {
-  all(f) {
+class Iterable {
+  static all(iterable, f) {
     var result = true
-    for (element in this) {
+    for (element in iterable) {
       result = f.call(element)
       if (!result) return result
     }
     return result
   }
-
-  any(f) {
+
+  static any(iterable, f) {
     var result = false
-    for (element in this) {
+    for (element in iterable) {
       result = f.call(element)
       if (result) return result
     }
     return result
   }
-
-  contains(element) {
-    for (item in this) {
+
+  static contains(iterable, element) {
+    for (item in iterable) {
       if (element == item) return true
     }
     return false
   }
-
-  count {
+
+  static count(iterable) {
     var result = 0
-    for (element in this) {
+    for (element in iterable) {
       result = result + 1
     }
     return result
   }
-
-  count(f) {
+
+  static count(iterable, f) {
     var result = 0
-    for (element in this) {
+    for (element in iterable) {
       if (f.call(element)) result = result + 1
     }
     return result
   }
-
-  each(f) {
-    for (element in this) {
+
+  static each(iterable, f) {
+    for (element in iterable) {
       f.call(element)
     }
   }
+
+  static isEmpty(iterable) { iterable.iterate(null) ? false : true }
+
+  static reduce(iterable, acc, f) {
+    for (element in iterable) {
+      acc = f.call(acc, element)
+    }
+    return acc
+  }
+
+  static reduce(iterable, f) {
+    var iter = iterable.iterate(null)
+    if (!iter) Fiber.abort("Can't reduce an empty sequence.")
+
+    // Seed with the first element.
+    var result = iterable.iteratorValue(iter)
+    while (iter = iterable.iterate(iter)) {
+      result = f.call(result, iterable.iteratorValue(iter))
+    }
+    return result
+  }
+
+  static max(iterable) { reduce(iterable) {|accumulator, element| accumulator < element ? element : accumulator } }
+
+  static min(iterable) { reduce(iterable) {|accumulator, element| accumulator < element ? accumulator : element } }
+
+  static sum(iterable) { sum(iterable, 0) }
+
+  static sum(iterable, accumulator) { reduce(iterable, accumulator) {|accumulator, element| accumulator + element } }
+
+  static toList(iterable) {
+    var result = List.new()
+    for (element in iterable) {
+      result.add(element)
+    }
+    return result
+  }
+}

-  isEmpty { iterate(null) ? false : true }
+class Sequence {
+  all(f) { Iterable.all(this, f) }
+
+  any(f) { Iterable.any(this, f) }
+
+  contains(element) { Iterable.contains(this, element) }
+
+  count { Iterable.count(this) }
+
+  count(f) { Iterable.count(this, f) }
+
+  each(f) { Iterable.each(this, f) }
+
+  isEmpty { Iterable.isEmpty(this) }

   map(transformation) { MapSequence.new(this, transformation) }

@@ -74,25 +125,9 @@ class Sequence {

   where(predicate) { WhereSequence.new(this, predicate) }

-  reduce(acc, f) {
-    for (element in this) {
-      acc = f.call(acc, element)
-    }
-    return acc
-  }
+  reduce(acc, f) { Iterable.reduce(this, acc, f) }

-  reduce(f) {
-    var iter = iterate(null)
-    if (!iter) Fiber.abort("Can't reduce an empty sequence.")
-
-    // Seed with the first element.
-    var result = iteratorValue(iter)
-    while (iter = iterate(iter)) {
-      result = f.call(result, iteratorValue(iter))
-    }
-
-    return result
-  }
+  reduce(f) { Iterable.reduce(this, f) }

   join() { join("") }

@@ -109,13 +144,7 @@ class Sequence {
     return result
   }

-  toList {
-    var result = List.new()
-    for (element in this) {
-      result.add(element)
-    }
-    return result
-  }
+  toList { Iterable.toList(this) }
 }

 class MapSequence is Sequence {

Here is the flattened/minimal patch so we can discuss, and before I found a better way to contribute. Github is a pain by not allowing multiple forks, and I don't want to mess my canary fork ...

Github might not allow it (which is sad), but you can still do it manually by creating an empty project then add wren as a remote. (you just won't have the "forked from..." message on the repo.

Le 21/05/2019 à 14:48, minirop a écrit :

Here is the flattened/minimal patch so we can discuss, and before
I found a better way to contribute. Github is a pain by not
allowing multiple forks, and I don't want to mess my canary fork ...

Github might not allow it (which is sad), but you can still do it
manually by creating an empty project then add wren as a remote. (you
just won't have the "forked from..." message on the repo.

Well there is a deeper consequence to this, you can't simply merge
from the site and I think the site will even forbid me to reuse the name
(which needs to be confirmed).

Or you can add a new branch based of wren/master.

@mhermier The above suggestion is the way GitHub should work. You can just call it wren or wren/master in your fork to avoid confusion. Or wren/[topic] of course.
Now please let us close this thread. I think @underscorediscovery should make a call regarding whether we will have sum and what form (with or without explicit initial 0) it will have for now. It's important we move on from this small contribution and hopefully @vladyio will find more useful changes to contribute.

Yes, I think veering from a minor convenience method into a major refactor of iterable is not the goal here regardless. The discussion was useful but ultimately it is just a minor convenience being discussed, which aligns with the other existing api. I'll take a closer look when I have a gap and we can finalize a choice.

Unfortunately I can't reopen this PR as it thinks the source repo doesn't exist.


uvcvideo Issue With Ubuntu 16.04's New Kernel From Week of May 8th, 2017

Required Info

Camera Model
SR300

Firmware Version
<IP_ADDRESS> (two sensors) and <IP_ADDRESS> (one sensor)

Operating System & Version
Ubuntu 16.04

Kernel Version (Linux Only)
4.8.0-51-generic

Build System
CMake 2.8+

I upgraded my Kernel (on two different computers) last week, and now I have this issue where the realsense script complains about not having the right kernel version. I have the latest pull from realsense master branch. This is the message I get:
modprobe: Error: could not insert 'uvcvideo': Unknown symbol in module, or unknown parameter (see dmesg) Failed to insert patched module. Operation is aborted, the original module restored Verify that the current kernel version is aligned to the patched module version

I have modified the script to support new kernel(4.8.0-xx).
link: https://github.com/JJHu1993/librealsense-patch.git
Patched kernel module created successfully

Unloading module uvcvideo
Applying patched module uvcvideo
Inserting uvcvideo succeeded

Script has completed successfully. Please consult the installation guide for further instruction.

jjhu@jjhu-computer:~/projects/librealsense$ uname -r
4.8.0-52-generic

@RoboEvangelist

Aight. Imma try it, and then close the issue when successful.
Thanks!

The patch has been merged into master branch and now both 4.4 and 4.8 LTS Ubuntu kernels are supported


URLs are wrong if you go to /admin/

If you go to http://localhost/admin/ the links are http://localhost/admin/telescope and http://localhost/admin/horizon.
If you go to http://localhost/admin (notice the lack of trailing slash) the links are correctly http://localhost/telescope and http://localhost/horizon.

@dpash can you submit a quick fix PR for this?

Unfortunately I was unable to find what's causing the issue.

Okay, I will look and see if I can find anything, but I think the issue might result from not using a defined tld. Have tried running your app on Valet or Homestead?

I've opened a PR for this
#12

Thanks @richardtoth94


Typos in MvNormal

https://github.com/nchopin/particles/blob/dd4ae7830f028c297c0cd5cad2635e97a90924cf/particles/distributions.py#L817-L818
I guess it should be self.loc in line 817 and  np.matmul in Line 818?

Wow... So many mistakes in so few lines, my eyes hurt. :-)
On top of what you found, the formula for the posterior covariance matrix was wrong.
It's a bit silly of me to implement these posterior methods, although I guess nobody use them. Anyway, the new version seems to work.


Use ports-root and registry-versions git repos.

Use the git repo of --x-builtin-ports-root and --x-builtin-registry-versions-dir when talking about port commit shas and version tree shas, respectively.
I believe this is necessary to make the instructions in https://learn.microsoft.com/vcpkg/produce/publish-to-a-git-registry#4---update-the-versions-database actually work.
This also reduces the number of things that assume VCPKG_ROOT is a git repo. (Since it is not when we are shipped in VS or acquired with the one liner)
Another extraction from https://github.com/microsoft/vcpkg-tool/pull/1210 .

The current instructions worked for x-add-version because the calculated SHAs are the same regardless of the parent repository.

x-add-version depends on ls-tree doing the right thing, and I don't believe it does so in the wrong repo. It certainly doesn't do the right thing for one-liner and VS copy of vcpkg, where vcpkg_root isn't a git repo at all.

But this change could let us to run x-ci-verify-versions on the registry.

Indeed this is why I made the change in https://github.com/microsoft/vcpkg-tool/pull/1210 :)


x-adminlte-card - card-header - custom html

I know that there are option such as collapsible, removable & maximizable that can add html to the header of a card - but how would I go about adding custom html in there? A , for example?
Thanks

There is no way, currently, to add extra markup on the header section using the component. You may, however:

Add an id attribute to the component and append extra markup using Javascript/JQuery.
Make your own custom copy of the component with an extra headerSlot. Read the Laravel documentation about components fi you do not have experience on how to work with they.

On the future we going to provide a way to publish the components, so once published, people can add their customizations...

Ok, will make a copy.
Thanks for a great package & continued dedication.

Thanks to you, I will keep this open to add it on a future release.

Thanks


[WFLY-15582] Remove unneeded code from legacy security subsystem; prune…

… pom and module dependencies
https://issues.redhat.com/browse/WFLY-15582
First bit of work for WFLY-15566, which is to restore the legacy security extension to WildFly Preview, as there's no reason not to make its current model-only incarnation available there.
But first I want to reduce the module dependencies to the needed minimum. Which led to a general code deletion and tightening exercise. That seems worthwhile on its own and need not block for the WF Preview work, so here it is.

@fjuma Please review.


Update pay if already pay.

I have the node with address 3P68Vpfa8UqhB1AGtXNSknYv1qMiJiCgXMj
and some my leasings from address 3PPTYsB78vQ5B7to1PHmgW6Bqdkkfavdcjn
I did found two blocks, and I want to see for who and how much need to pay for this block.
I go here: https://w8io.ru/3P68Vpfa8UqhB1AGtXNSknYv1qMiJiCgXMj/pay/1150000/5000000
And I see some value 0.31120000 Waves.
Then, I did pay from my node for the leaser, after found first block.
You can see the transfer here: https://w8io.ru/3P68Vpfa8UqhB1AGtXNSknYv1qMiJiCgXMj
2019.08.23 23:14 (1674207) (transfer) 3P68Vpfa8UqhB1AGtXNSknYv1qMiJiCgXMj -> 3PPTYsB78vQ5B7to1PHmgW6Bqdkkfavdcjn -0.31120000 Waves (0.00100000 Waves fee)
But, after this payment, I still see those value there.
And now, my debt for myself is not correct displaying.
Something wrong. Just subtract already outgoing transfers for leasers, there.

It is not possible to understand as a script the node's owner motivation of transfer transactions, so it cannot be done.

Is there any way to calculate the exact values for future payments for leasers,
using your block-explorer, or some another tools?

It looks like you are using ‘pay’ tool wrong.
You have to enter a range which you want to get payments for.
So, for example, first time you use pay/1150000/1159999 then next time you should use pay/1160000/1169999 etc.


Ensure font is not loaded twice on slow networks

Prior to this change if you were loading GOV.UK Frontend alongside alphagov/govuk_template you would have two @font-face declarations that tell the browser how to load the 'nta' font.
This is normally not an issue since as soon as the browser downloads a version it won't download a second copy of the font.
However when a user is on a slow connection, the browser can try to download the font from both the alphagov/govuk_template declaration and GOV.UK Frontend declaration.
Which means that the end user will download the font twice (and it's variants) resulting in a much slower experience.
This is even more of a problem for users on a slow network since their bandwidth may already be constrained.
To avoid this we check if the user has indicated they are using GOV.UK Template by checking the relevant compatibility flag.
If they have set this flag, we avoid outputting the declarations with the assumption that they will already have them, avoiding the chance of the font being downloaded twice.
We should take care to consider how this could impact bringing the new version of the NTA font @dashouse has been working on.
Fixes #1001

@injms @alex-ju if I did a test release branch of this would you be interested in testing it to confirm it resolves things your end?

@36degrees I tested this by setting the compatibility flag to true for GOV.UK Template, and including the font.css file from GOV.UK Template in the review application.

@nickcolley sure, I'll test it on gov.uk - this was sitting in the backlog for quite a while - awesome to see it tackled 🏉

@alex-ju if you want to test this, you can run the following
npm install --save alphagov/govuk-frontend#bdd839a7

@nickcolley tested this and works as expected 👏


Allure report is not generated if JAVA_HOME is not set

Suggest to override that in-code and point to the same jdk version that the IDE is using.

issue happens on windows / fixed on windows


Application error on certain invalid configurations

Stumbled upon a full nextjs 'Application crash' while writing an invalid machine config.
Reproduction case:
createMachine({
    id: "application error",
    initial: "loading",
    states: {
        loading: {
            entry: {
                target: "list"
            }
        },
        list: {}
    }
})

Crashes immediately on edit, even before hitting Visualize.
The crash persist after refresh, so you are forced to either clear the application storage, or quickly change the editor before it triggers.

I've encountered something similar, except for me it was when I saved machine with a target to a missing state (was about to add it).


feat: add translations

this pr loads a common dictionary with translations on every page (which currently only includes document titles in english).
translations can be accessed via the useI18n hook, which provides a translate function, which accepts a path to a dictionary key. the 'common' generic matches the dictionary name and is necessary to provide autocompletes:
const { t } = useI18n<'common'>()

// this would match `{ path: { to: { key: 'hello world' } } }` in the `common` dictionary namespace.
t(['common', 'path', 'to', 'key'])

the hook also provides some convenience functions e.g. to format dates according to the current locale:
const { formatDateTime } = useI18n()

formatDateTime(new Date('2022-01-01'))

x-ref: #19

Running validation (typecheck) I get the following error:
src/app/i18n/use-i18n.ts:1:15 - error TS2305: Module '"@stefanprobst/next-i18n"' has no exported member 'I18nContextValue'.

1 import type { I18nContextValue } from '@stefanprobst/next-i18n';
                ~~~~~~~~~~~~~~~~
Found 1 error in src/app/i18n/use-i18n.ts:1

yes it does - however non-UI related translation strings (i.e. vocabularies etc.) should probably be provided by the backend?


Allow multiple scenarios per test config

Could we re-use one deployment configuration for more than one scenario file? This might reduce a bit of overhead
e.g.
As well as
  - name: Deployment Config Name
    deploymentFlow: Inbound message flow name
    deploymentConfig: Messenger Deployment Config Name
    scenarios: scenario.yaml

Can we also support the following?
  - name: Deployment Config Name
    deploymentFlow: Inbound message flow name
    deploymentConfig: Messenger Deployment Config Name
    scenarios:
      - scenario-1.yaml
      - scenario-2.yaml

Apologies - this configuration sits outside of this tooling


Add ability to pre-apply transforms

Allows for adding capabilities to JSX
Useful for plugins like https://github.com/valtech-au/jsx-control-statements

I think this is out of scope of reactify as you can just chain multiple browserify together. For more sophisticated AST transformation framework I suggest looking at babel.


--entity2id and --relation2id in ke_tools/evaluate_trans_transductive.py

What are the json files for these args --entity2id and --relation2id?

Hi, these two arguments are not two fixed files that I can just provide for you. You are supposed to generate it for your used dataset as the comment introduced.
--entity2id: a json file that maps entity names (in the dataset) to the indices in the entity embedding numpy file, where the key is the entity names in the dataset, and the value is the indice in the numpy file.
--relation2id: a json file that maps relation names (in the dataset) to the indices in the relation embedding numpy file.

All you need to do is to map the entity/relation names (like Q29387131/P31) to their indices (like 0,1) in the output embedding files generated by examples/KEPLER/KE/generate_embeddings.py.


Fix incorrect redux store init arguments.

The middleware has to a be function. An object will cause a runtime crash in production env.

Codecov Report

Merging #549 (683938f) into master (009d163) will not change coverage.
The diff coverage is 0.00%.

@@          Coverage Diff           @@
##           master    #549   +/-   ##
======================================
  Coverage    7.27%   7.27%
======================================
  Files          10      10
  Lines          55      55
  Branches        1       1
======================================
  Hits            4       4
  Misses         51      51

Impacted Files
Coverage Δ

src/AppEntry.js
0.00% <0.00%> (ø)

Continue to review full report at Codecov.

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


Disable prompt asking for more files: Preloaded files has reached upper limit

What option can I use to disable prompt asking for more files?

Disabling option should be useful but I guess this was triggered by #58 in the first place, which is already fixed upstream.

@oblitum Not sure what you mean, I still get this problem. And coc's author says this: https://github.com/sumneko/lua-language-server/issues/480#issuecomment-843839861

@reportaman I speculate you're getting this prompt in the first place because you're getting your home folder being scanned, like on #58, but this has been fixed upstream: https://github.com/neoclide/coc.nvim/issues/3102#issuecomment-848308790.

It's still an useful option to have though, in real usecases where actual workspace folder (not home folder) has too many files.

@oblitum Hmm, do I need to do something special to try the new behavior?

@reportaman just update coc.nvim to latest. I used to have this issue too regarding home folder scan, but since 39c14a3 I don't face it anymore when opening files from home.


there is no prop for small size thumbnails on gallery view

There is an official way to use the small thumbnail in a gallery and high-quality image when opened But unfortunately, it's not documented.
Go to the bottom of this code, there you will find thumbnail parameter https://github.com/jfcaiceo/react-lightbox-component/blob/master/src/lib/components/Lightbox.jsx
This is how i use it
filter(props.list, function(each) {
    image_list.push({
        src : high_quality+each.file_path,
        title: ' ',
        description: ' ',
        thumbnail : thumbnail+each.file_path
    });
});


Constants in decorators are replaced with pure strings to avoid probl…

…ems during compilation of contracts
Closes #1

@jafri Sorry but I don't understand. Why in this case we should not export class? We do export in other cases.
Also I have all the contract file red with errors like Property 'isi8' does not exist on type 'ATOMIC_ATTRIBUTE'
But I see this error during compilation only when I add export to KvContract.

@andreyjamer we will fix this upstream


Create an Azure RBAC role instructions.

In the instructions for creating an Azure RBAC role (link), it mentions editing the file to add the subscription ID, but it does not mention that the line above the subscription ID needs to be deleted:

Can these instructions be updated to make it more clear that the Customer needs to both add their subscription ID and remove the line above the subscription ID?

The line that says "DELETE THIS LINE"? Sure. :)

Changed screenshot to show the instructions about deleting the line


Make it possible to store server.conf and log.conf as Secret

Because server.conf can contain secrets such as passwords it would be convenient to be able to store the complete server.conf as a Secret instead of a ConfigMap.
With this change it will be possible to the change config store type be setting questdb.configStorageType=Secret

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Mats Löfgren seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

All set, just cut 0.40.7! Thanks for the PRs, and let us know if you have any issues


Service

Write about service . What and how it is different from others?

What is so different about us?
For the most part we are same as your next door website developer (or soup maker as we say it). So why would you work with us. You want soup and you come to us and your problem ends there. From there the problem is our problem and not yours. We will make the soup and will make sure the soup remains warm, no extra cost for warming.
We may say a lot about us. But you will never know about it until you give us a chance. If you want to make omelette, you will have to break some eggs.


Add an instructor-note directive

This adds the instructor-note directive, with a greyscale color scheme to make it not stand out.  This works in my test in github-without-command-line.  Not yet documented, because there's not yet good sphinx-lesson documentation.

Thanks for this! I will test it out soon.


add jagged lines to map.

lets start with extreme and then pull back to fun AND usable.

Some paths seem to not reach their destination. Wonder if they are fading being removed() due to leaving "visible lines" or if the end points computed from jagged paths aren't working. Just tested turning off jagged paths and it seems that their server pos is in the middle of the ocean. To reproduce, just watch for about 30s.

I think it looks better if we set a constant radius of 3 or 4 instead of using rScale on the points

Added encoding download speed in the speed of the path. Could probably use some tuning, but it looks cool

💣 RADICAL ! 👍 🐴


origen_police dispatch

I see there is a 911 function to make people call for distress. But im using origen_police how can i disable this function?

Fixed


Make "Override Signature" work for tail-call-optimized calls.

For jump instructions that aren't optimized calls, the function should still return null because it won't find a CALL/CALLIND pcode op.

The Call Override will only be respected for calls within the decompiler.  You could trying modifying the instruction flow from the listing first than apply a call override.


[WIP] fix(brave): blocking search results no longer work

Issue
https://github.com/iorate/ublacklist/issues/371
Changes from the previous version

Slight modifications were made to the target DOM in accordance with Brave Search's specification changes.
Minor style modifications

*Note: Subdomains are not supported in Brave Image Search due to the difficulty in obtaining the complete URL of the image link. (e.g., if the link is to "www.example.com", it will block the entire "example.com"). I have not been able to do anything about this, but if you think you can improve the logic, please advise.
https://github.com/iorate/ublacklist/blob/408192680c5efa034d7521b41b4a2e11624b4f27/src/scripts/search-engines/brave.ts#L54-L61

@iorate
The detailed cause is under investigation, but it appears that the DOM is being modified after the load event is fired in Brave Search's specification.
Reference: https://i.gyazo.com/6e346a37725c089399e291c8f80aea1c.gif
I have tried to solve the problem by changing run_at in manifest.json.ts to document_idle, using MutationObserver, etc., but my implementation skills were not enough to solve the problem, so I would like to borrow some of your knowledge.
I apologize for the very naive implementation, but changing content-script.tsx as follows will solve the problem once, but it is not a clean way and I would like to avoid it.
// main();
setTimeout(() => {
  main();
}, 1000);

@iorate The detailed cause is under investigation, but it appears that the DOM is being modified after the load event is fired in Brave Search's specification.
Reference:
I have tried to solve the problem by changing run_at in manifest.json.ts to document_idle, using MutationObserver, etc., but my implementation skills were not enough to solve the problem, so I would like to borrow some of your knowledge.
I apologize for the very naive implementation, but changing content-script.tsx as follows will solve the problem once, but it is not a clean way and I would like to avoid it.
// main();
setTimeout(() => {
  main();
}, 1000);

PS: This problem did not occur in Firefox, so it may be specific to Chrome or Chromium-based browsers.
Environment

OS: macOS Sonoma 14.1.1
Browser (Firefox): Firefox 119.0.1
Browser (Chrome): Chrome 119.0.6045.15
Browser is newly launched from launch.json, without any other extensions, and is in a vanilla state.

@rsuwa
Thank you for your contribution.
I think the only way we can do now is to delay the content script.
I have modified the main code to support delaying.

*Note: Subdomains are not supported in Brave Image Search due to the difficulty in obtaining the complete URL of the image link. (e.g., if the link is to "www.example.com", it will block the entire "example.com"). I have not been able to do anything about this, but if you think you can improve the logic, please advise.

I think your solution is the best we can do.

@rsuwa Thank you for your contribution. I think the only way we can do now is to delay the content script. I have modified the main code to support delaying.

Thanks for your modification!
After several attempts, I thought 100 ms would be enough.


Details for project type

Named communities (# households)
FN communities (# households)
Highway miles per zone (w and w/out power)

No longer asking for projects in the RTP.


chef-client 12.5.1 breaks LWRP silently

This code which works perfectly fine in chef-client 12.4.3 does not work in 12.5.1:
https://gist.github.com/Sauraus/6b699f7726957bb8f577

+1, the recipes I wrote last week and deployed are now broken.

Could you elaborate how they are broken? Do they show an error?

Wrong place for the issue, proper location: https://github.com/chef/chef/issues/4124


fix(frontend): use cross-env in scripts to make them cross-platform

Description :sparkles:
fix(frontend): use cross-env in scripts to make them cross-platform
e.g. Windows needs cross-env to handle setting environment variables in package.json scripts
refs YJDH-697 (noticed cross-env being used inconsistently)
Issues :bug:
Testing :alembic:
Screenshots :camera_flash:
Additional notes :spiral_notepad:

API branch is deployed to platta: https://kesaseteli-pr2964.api.dev.hel.ninja/healthz :rocket::rocket::rocket:

API branch is deployed to platta: https://tet-pr2964.api.dev.hel.ninja/healthz :rocket::rocket::rocket:

API branch is deployed to platta: https://helsinkilisa-pr2964.api.dev.hel.ninja/healthz :rocket::rocket::rocket:

@rikuke @sirtawast @EmiliaMakelaVincit Any objections to merging this from your side?

Do it


Multiple consecutive sort clauses

What's up?
prql version: 0.8.1
comments: The usage of multiple consecutive sort clauses seems to be disallowed, and should be written in one line/operation.
May I understand this way? The last sort operation would overwrite all the ordering features from the previous steps. In other words, the effect of sort clause is overwritten instead of cumulated.
I'm not sure if a warning from the compiler might be better or if highlight it in the documentation would be helpful.
prql code:
from tb1
sort c1
sort [c2,-c3]

sql code:
SELECT
  *
FROM
  tb1
ORDER BY
  c2,
  c3 DESC

Thanks.

Agree a lint would be nice
I would probably vote to have this as a lint on a static query, rather than a warning at runtime. If a tool is building the query dynamically, it's completely fine to have consecutive sorts — indeed that's some of the elegance of the pipeline approach.
We don't yet have an ability to add lints, so I'd suggest marking this as Postponed. But fine to leave reopen if others prefer?


Downgrading is possible.

It is possible to downgrade to the factory version as you stated in the guide.
Please change the FAQ.

https://github.com/hacks-guide/Guide_Vita/commit/d9286a5049efed3a5a33088721335ac16f91b45c


Log error to console on add-on initialize

Hi @damiencaselli
I tried to setup this addon in my project but I end up with unconfigured Raven instance for some reason.
After a couple hours of investigation I found out that I copied wrong dsn from my Sentry account ( it was correct but contained personal key in it ). And Raven.js does not allow such dsn.
The thing is - this Raven.js error was suppressed by this try/catch block.
https://github.com/damiencaselli/ember-cli-sentry/blob/master/app/instance-initializers/raven-setup.js#L35
Can you add more verbose error output in catch block ?
Something like console.warn(e);

Hi @tikijian, that's doable :+1:


Task display innacurate

After a few days of uptime, I'm seeing some curious stats in the Task log...

Yes I can understand where that comes from. FreeRTOS has 2 separate functions, one returns total CPU time, and the other returns CPU time per task. The problem is, the first function is limited to 32 bit integer, so it overflows after some time (a couple of days, I believe). I don't think it's critical though, as this Tasks module should be used for debugging purposes and should not be included into production builds anyway

Thanks for the explanation


Unable to build on Windows and Ubuntu

Unfortunately I am not able to build the chamfer_distance.cuda on neither Windows 11 and Ubuntu 22.04 (same machine) when calling cd = load(name="cv" ...) for the first time. Both report similar error messages.
I use Python 3.10, PyTorch 1.11.0 with CUDA toolkit 11.6 on both Windows and Ubuntu.
I run this in a conda virtual environment.
I already tried this but it did not help.
Here is the Traceback from Ubuntu:
Traceback (most recent call last):
  File "/home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 1740, in _run_ninja_build
    subprocess.run(
  File "/home/sktis/anaconda3/envs/GrabNet/lib/python3.10/subprocess.py", line 524, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sktis/dev/python/GrabNet/grabnet/tests/grab_new_objects.py", line 24, in <module>
    from grabnet.tools.vis_tools import points_to_spheres
  File "/home/sktis/dev/python/GrabNet/./grabnet/tools/vis_tools.py", line 21, in <module>
    from grabnet.tools.train_tools import point2point_signed
  File "/home/sktis/dev/python/GrabNet/./grabnet/tools/train_tools.py", line 18, in <module>
    import chamfer_distance as chd
  File "/home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/chamfer_distance/__init__.py", line 1, in <module>
    from .chamfer_distance import ChamferDistance
  File "/home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/chamfer_distance/chamfer_distance.py", line 8, in <module>
    cd = load(name="cd",
  File "/home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 1144, in load
    return _jit_compile(
  File "/home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 1357, in _jit_compile
    _write_ninja_file_and_build_library(
  File "/home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 1469, in _write_ninja_file_and_build_library
    _run_ninja_build(
  File "/home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 1756, in _run_ninja_build
    raise RuntimeError(message) from e
RuntimeError: Error building extension 'cd': [1/2] /usr/bin/nvcc  -DTORCH_EXTENSION_NAME=cd -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -isystem /home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/include -isystem /home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -isystem /home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/include/TH -isystem /home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/include/THC -isystem /home/sktis/anaconda3/envs/GrabNet/include/python3.10 -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 --compiler-options '-fPIC' -std=c++14 -c /home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/chamfer_distance/chamfer_distance.cu -o chamfer_distance.cuda.o
FAILED: chamfer_distance.cuda.o
/usr/bin/nvcc  -DTORCH_EXTENSION_NAME=cd -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -isystem /home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/include -isystem /home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -isystem /home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/include/TH -isystem /home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/torch/include/THC -isystem /home/sktis/anaconda3/envs/GrabNet/include/python3.10 -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 --compiler-options '-fPIC' -std=c++14 -c /home/sktis/anaconda3/envs/GrabNet/lib/python3.10/site-packages/chamfer_distance/chamfer_distance.cu -o chamfer_distance.cuda.o
/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:
  435 |         function(_Functor&& __f)
      |                                                                                ^
/usr/include/c++/11/bits/std_function.h:435:145: note:         ‘_ArgTypes’
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’:
  530 |         operator=(_Functor&& __f)
      |                                                                                ^
/usr/include/c++/11/bits/std_function.h:530:146: note:         ‘_ArgTypes’
ninja: build stopped: subcommand failed.

Ok, I was able to solve the issue by downgrading to gcc-10 from gcc-11 using those commands.
$ sudo apt install gcc-10 g++-10
$ export CC=/usr/bin/gcc-10
$ export CXX=/usr/bin/g++-10

This fixed the problem on Ubuntu but I have not tried on Windows yet.


Arcane Weapon's interactions with other cards is unclear / buggy

Arcane weapon appears to (deliberately?) take its permanent value based on buffs / debuffs when played.
A few examples:
it has 4 dmg base, but ought to do 5 damage per turn if you have 1str when played
it has 4 dmg base, but ought to do 3 damage per turn if you have weak when played
These both seemed to work even when the strength / weak disappeared?
I got an Akabeko, and played Arcane Weapon+ while the Akabeko was still granting +8.
The tooltip & power icon said 'do 14 damage', but the power only did 14 damage on the first strike, and 6 on the second turn.
So the question is - at what point does Arcane Weapon decide how much damage it ought to do?
And when does the tooltip lock itself in?

After looking at this again, 'Arcane Weapon's actual damage is based on the current buffs, it's just that the tooltip is wrong.

Secondary related issue: report on discord suggests that Arcane Weapon's self-stacking behavior is off (updating tooltip/rendered amount but not actual damage), update should also include fixing that.

Fixed by 89818e4


updated descritpions

It would be so much nicer if we cleaned up whitespace and the quotes for consistency, if you dont think thats part of your story then create a card maybe?


[WIP] [Tooptip] Fix tooltip error with undefined dom node

I thought I tested this very line of code before in #3203 and identified it wasn't a problem, but trying it again now in master looks like I'm getting an error.

How do you trigger this error ?

Very bizarre, I thought to reproduce it all you had to do was go to #/components/icon-button but I just tried it again on master and appears fine.
Don't merge this yet, if I see it again I'll figure out why and repot back. Otherwise I'll close this.

I don't think I've seen this issue again and look at the code, I don't see how it's possible that it would be undefined. If it comes back, we can reinvestigate it then. Closing...


change byzer package naming

What changes were proposed in this pull request?

[ ] Finshed changes describe

How was this patch tested?

[ ] Testing done

Are there and DOC need to update?

[ ] Doc is finished

Spark Core Compatibility


Define a structure for the ESMValTool user guide

Since the version 2 documentation is almost completely missing, I have made a first attempt to define at least an overall structure.
This would hopefully motivate us to add some text to each chapter... :smile:
Suggestions are welcome!

I cannot understand why the python2 tests are failing, but it seems not to be related to this PR.


Change SceneBuilder to be an owning and cloneable structure that is consumed to produce fragments

This PR implements an API change that allows partially built scenes to be reused by making the SceneBuilder an owning and cloneable data structure.
It also makes it possible to store a partially constructed scene in a struct which I think would be impossible with the current API because storing both a SceneFragment and a SceneBuilder<'a> in a struct makes it self-referential.
The way this allows scene construction work to be reused is demonstrated in the contrived example below:
let mut builder = FragmentBuilder::new();
for i in 0..10 {
    builder.line_to(i * a, i * b);
    let fragment = builder.clone().finish();
    scene.append(&fragment);
    renderer.render(&scene);
}

In fact, this could be simplified even further by removing SceneFragments and allowing a &SceneBuilder to be appended directly to a Scene. I think that would most accurately convey the performance characteristics of the operation in the API as well.
I would be unsurprised to learn that the API is designed as it is right now with some future changes in mind that make what I suggest in this PR unfeasible. I'm posting this just as a discussion regarding how some scene-in-progress data could be reused out of efficiency, and to bring up the self-referential restrictions I see the current API imposing.

Apologies for allowing this to fall by the wayside.
As you've noticed, the current design lacks some clarity of intent although this is historical rather than forward thinking. Originally, Scene and SceneFragment were distinct in that the latter contained resource "patches" that were resolved when appended to the former. Resource resolution, which involves deduplication, is naturally a sync point so this was moved to render time. SceneBuilder also contained state in the form of transform and clip stacks which have since been made obsolete due to changes in the encoding.
I'm not very enthusiastic about changing SceneBuilder to be an owning type. That said, I do think that the ability to store and append to partially constructed scenes is worthwhile. Given the current state, it's worth considering whether SceneBuilder is necessary at all. It would be possible to move all methods to Scene allowing for incremental construction. We could also get rid of SceneFragment entirely although that would require some subtle changes when packing the scene for the GPU (the one remaining distinction is that Scene has an initial identity transform and -1.0 line width).
In its current form, I don't think this PR is the direction we want to go, but the problems it raises are definitely worth addressing so I appreciate the effort. If you'd like, feel free to file an issue about incremental scene construction and we can discuss API design and gather feedback before implementation.

After a very long delay, #432 has landed which should hopefully address the issues raised by this PR.


ES6 support

It's choking on ES6 syntax currently supported by node v4: `` strings, let keyword etc.

Thanks for letting me know, pull requests are welcome:)

Same here, I am having problems using generators in my project.
Was this issue taken into account already?

Unfortunately I am alone developing this project and so far I have not needed ES6 features myself.

Hi!
In your package.json you my use the branch:
'uglify-js': 'git://github.com/mishoo/UglifyJS2#harmony'
It is the official uglify branch with support for ES6. It is not finished yet but they are getting there.
There is a more "advanced" fork of this branch that goes a little further with ES6 support:
'uglify-js': 'git://github.com/UXtemple/UglifyJS2#harmony-generators-yield'
The above fork adds support for generators but it is not fully working yet (just almost!)
You can give it a go.
By the way, your project is great. In these days I'll send you a pull request to improve the way the final package is built. Your approach to order the js files in the right way is quite good but it fails oncertain scenarios. I have improved the algorithm and will send you the code in the near future.
Great project!
Alex

how to support es6?i can not get my min file when i add generator function like function*

Thanks for the input, I switched to the Harmony branch of Uglifier-Js. Besides like importing, most of the ES6 stuff are supported.


Cases are not match

Repo name and lib name is snake case but its using PascalCase and camelCase. This makes me confusing while using this moudle. Thx for making this lib. I'm using it quite well. Happy Hacking XD

won't fix
All the functions you use are snake_case.


Static IPs are not 'stripped' across AWS AZs

During an initial test session, using the CF Kit v1.4.0 (and the latest Vault Kit), we ran into the requirement for static IPs to be specified in the cloud-config.  Several thoughts/concerns arose from this .... particularly with regards to use in AWS (and likely GCP/Azure).

Why are static IPs even required?
When you are using external LBs requiring VM extensions.
When you have BOSH DNS.
All 'HA' capabilities are essentially lost, since the static IPs are not stripped across the AZs.
(ie .... deployed 2 routers and both are allocated in AZ1 .... none in AZ2 or AZ3)

We are no longer using static IPs (as of the forthcoming 1.6.1 release), so this issue should "resolve" itself accordingly.

This has been resolved by dropping static IPs.


vstest.console hangs after tests execution is complete

Description
Vstest.console hangs after tests execution is complete. I see the console output that after the last test has passed , but the execution doesn't complete. Even providing a TestSessionTimeout is not honored.
Steps to reproduce
> &"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" Test.OutputAdapters.dll /Logger:TRX /Parallel /InIsolation /Platform:X64 /TestCaseFilter:"((TestCategory=Gated|TestCategory=Rolling|TestCategory=Nightly)&TestCategory!=Ignore&TestCategory!=Manual)" /Settings:D:\asa\fx\1\bin\AnyCPU\Debug\CloudTest\CompleteTestGroup.runsettings
Expected behavior
The test run finishes in about 90 minutes. If tests timeout, hits session timeout of 3 hours.
Actual behavior
Executes tests but never finishes or times out. Stays hung.
Diagnostic logs
\schoolfs\asa\team\chetang\temp\dumps\2
Has dmp files and log files from diagnostic traces.
I can share individually if can't access.
Environment
VS 2019
OS Windows 10

I'm unable to share the dll because test execution depends on a keyvault for secrets and won't work outside the team.

@chetanmsft could you ping me internally on Teams please? I can't find you.

@nohwnd please let me know if you found anything interesting that might be causing the hang, thank you !

Having the same issue.   Plain vstest.console run that normally works fine, but hangs forever between the completion of the last test (all tests passing) and the log which indicates the .trx file was written (expected but never appears)...
2023-11-13T17:29:19.8115679Z   Passed Verify_StartDownload_ServerReadyNotReceived [5 s]
2023-11-13T17:29:27.8854249Z   Passed Verify_Commands_CancelDownloadProcessed [8 s]
2023-11-13T17:29:32.9309522Z   Passed Verify_CancelDownload_StartDownloadNotReceived [5 s]
2023-11-13T17:29:37.9498767Z   Passed Verify_Commands_UnknownCommandProcessed [5 s]
2023-11-13T17:29:43.3643452Z   Passed Verify_DisconnectPipes_SuccessfullyDisposes [5 s]  (Last Test, notice time differential)
2023-11-13T17:48:51.6732063Z ##[error]The task has timed out.
2023-11-13T17:48:51.6737704Z ##[section]Finishing: Run Unit Tests

Normal run logging with no hang:
023-11-13T16:57:13.3128666Z   Passed Verify_StartValidator_SendCommandRaisesException [5 s]
2023-11-13T16:57:18.3713049Z   Passed Verify_Commands_StartDownloadProcessed [5 s]
2023-11-13T16:57:23.4130924Z   Passed Verify_StartDownload_ServerReadyNotReceived [5 s]
2023-11-13T16:57:31.4483437Z   Passed Verify_Commands_CancelDownloadProcessed [8 s]
2023-11-13T16:57:36.4876648Z   Passed Verify_CancelDownload_StartDownloadNotReceived [5 s]
2023-11-13T16:57:41.5199567Z   Passed Verify_Commands_UnknownCommandProcessed [5 s]
2023-11-13T16:57:46.8762449Z   Passed Verify_DisconnectPipes_SuccessfullyDisposes [5 s]
2023-11-13T16:57:53.5322635Z Results File: D:\w\3\s\TestResults\svcalogentdevbuilder_UNI-BLD-AGT16_2023-11-13_08_51_58.trx
2023-11-13T16:57:53.5518301Z
2023-11-13T16:57:53.5577659Z Attachments:
2023-11-13T16:57:53.5580680Z   D:\w\3\s\TestResults\0d360b0a-c08c-4261-a6f3-c73116ec5147\5624f633-6694-4d28-86f6-698e849e7a5a.coverage
2023-11-13T16:57:53.6287110Z Test Run Successful.
2023-11-13T16:57:53.6288037Z Total tests: 12237
2023-11-13T16:57:53.6289046Z      Passed: 12213
2023-11-13T16:57:53.6289890Z     Skipped: 24
2023-11-13T16:57:53.6342403Z  Total time: 6.0844 Minutes
2023-11-13T16:57:53.9487290Z ##[section]Finishing: Run Unit Tests

Happens on any machine out of a pool of 12 machines (one agent per machine), approximately once out of every 10 runs (or so)

@SteveSims2  which version of vstest.console are you using? We recently had problems with this. Fix is in 17.8.0.

https://github.com/microsoft/vstest/commit/9a0c41811637edf4afe0e265e08fdd1cb18109ed

Ok, thanks.  I didn't know where to look for the fixed version, so thanks for mentioning that here.   We were on 17.6.1 until I got your notification this morning and trying the updated version now.
Thanks!


rs: start at 20200313

Motivation for this change
rs is a small utility from BSD world. It formats the input as a table.
Things done

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

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

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

And also, the commit should be rs: init at 20200313 to follow our conventions, not start at.


Container how to be filled with fluid?

Hi! I want to know how to fill the containers(like sink, bathtub or swimming pool ) with water ? I have tried water=get_system("water")
assert sink.states[object_states.Saturated].set_value(water,True)
but it didn't work

You can try  sink.states[object_states.Filled].set_value(water, True).

Hi, Thanks @ChengshuLi ! I have tried this , but there are still some problems,  my code is as follows:
`bathtub_cfg = dict(
type="DatasetObject",
name="bathtub",
category="bathtub",
model="fdjykf",
abilities={
# "toggleable": {},
# "saturable":{},
"fillable":{},
},
position=[0.0, 0, 1.42],
)
cfg["objects"] = [bathtub_cfg]

# Create the environment!
env = og.Environment(configs=cfg)

# Set camera to ideal angle for viewing objects
og.sim.viewer_camera.set_position_orientation(
    position=np.array([ 0.37860532, -0.65396566,  1.4067066 ]),
    orientation=np.array([0.49909498, 0.15201752, 0.24857062, 0.81609284]),
)

# Take a few steps to let the objects settle, and then turn on the sink
for _ in range(10):
    env.step(np.array([]))              # Empty action since no robots are in the scene

sink = env.scene.object_registry("name", "bathtub")
# assert sink.states[object_states.ToggledOn].set_value(True)
water=get_system("water")
og.log.info(sink.states.keys())
sink.states[object_states.Filled].set_value(water,True)`

however , error is KeyError: <class 'omnigibson.object_states.filled.Filled'>
and the states dict only have [INFO] [omnigibson] dict_keys([<class 'omnigibson.object_states.contact_bodies.ContactBodies'>, <class 'omnigibson.object_states.aabb.AABB'>, <class 'omnigibson.object_states.pose.Pose'>, <class 'omnigibson.object_states.saturated.ModifiedParticles'>, <class 'omnigibson.object_states.contact_particles.ContactParticles'>, <class 'omnigibson.object_states.saturated.Saturated'>, <class 'omnigibson.object_states.covered.Covered'>, <class 'omnigibson.object_states.adjacency.HorizontalAdjacency'>, <class 'omnigibson.object_states.touching.Touching'>, <class 'omnigibson.object_states.adjacency.VerticalAdjacency'>, <class 'omnigibson.object_states.particle_source_or_sink.ParticleSink'>, <class 'omnigibson.object_states.particle_source_or_sink.ParticleSource'>, <class 'omnigibson.object_states.next_to.NextTo'>, <class 'omnigibson.object_states.on_top.OnTop'>, <class 'omnigibson.object_states.under.Under'>, <class 'omnigibson.object_states.inside.Inside'>])
so can you inform me how can I fill a container with liquid?

oh i just tried a bowl , and it can be filled with water, so is there any other larger container have the filled state? and do they need some specific config setting to contain water?

Well , i find a swimming pool fillable , that's really nice! 😀

They do need to contain a "fillable" volume metalink annotation for the Filled state to work properly.
Yes some swimming pools should be fillable, e.g. see the "Meta Links" in https://behavior.stanford.edu/knowledgebase/objects/swimming_pool-kohria/index.html.

They do need to contain a "fillable" volume metalink annotation for the Filled state to work properly. Yes some swimming pools should be fillable, e.g. see the "Meta Links" in https://behavior.stanford.edu/knowledgebase/objects/swimming_pool-kohria/index.html.

Thanks @ChengshuLi , But maybe there is a bug that when the swimming pool is filled with water, at the beginning the water falls into the pool as if it were falling from the sky, collides, bounces, and finally comes to rest. I am wondering if there is a way to make the water still From beginning to end

One thing you could do is:

set Filled to be True
let water falls and settles
call state = og.sim.dump_state() to dump the state

Then you can do og.sim.load_state(state), which should have the water still.


Updated input error

The fields was pointing to authorId intead of userId

Thanks so much for catching this @greguintow 🎉

No problem, I'm following Prisma more than 1 year, I'm more than glad for helping Prisma 2


revert back change Tijn/identity fixes

This reverts the incorrect change #76

Fixed: https://github.com/deso-protocol/identity/commit/ea0c12469fa9ac1325d84f3c0f37762702f22c11


Error when I try to install Openswoole

What did you do? If possible, provide a simple script for reproducing the error.

I tried to install Openswoole according to the instructions at openswoole.com.  It seemed to work until the last step, which is:
composer require openswoole/core:22.1.5

It yielded this error:
 Package openswoole/core at version 22.1.5 has requirements incompatible with your PHP version, PHP extensions and Composer version:
    - openswoole/core 22.1.5 requires ext-openswoole >=22.0 but it is not present.

I tried installing ext-openswoole according to the instructions on this site, but the above command still gave the same error.

I then tried "composer require ext-openswoole" and got this:
Could not find package ext-openswoole.

  Did you mean one of these?
      upscale/ext-openswoole
      upscale/ext-swoole

So then I tried "composer require upscale/ext-openswoole" and got this:
Package upscale/ext-openswoole has requirements incompatible with your PHP version, PHP extensions and Composer version:
    - upscale/ext-openswoole v22.1.2 requires ext-openswoole self.version but it is not present.

What did you expect to see?

What did you see instead?

What version of OpenSwoole are you using (show your php --ri openswoole)?

What is your machine environment used (show your uname -a & php -v & gcc -v) ?

uname -a:
Linux swadams-HP-EliteDesk-800-G3-DM-35W 6.5.0-35-generic #35~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May  7 09:00:52 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

php -v:
PHP 8.3.7 (cli) (built: May 13 2024 15:38:09) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies

gcc -v:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)

You can also try the following OpenSwoole support channels:

Documentation - Documentation for Open Swoole
Slack - Slack channel of Open Swoole
Discord - Discord server of Open Swoole

You need to install the extension. composer only installs php packages (php code, not code compiled into your PHP install)
git clone https://github.com/openswoole/ext-openswoole
cd ext-openswoole
phpize
./configure
make
make install
etc...
run "php -i" make sure that swoole is listed as an extension.

I tried that and nothing changed.  Oh, and I used the "php -m" command and saw this error:
PHP Warning:  PHP Startup: Unable to load dynamic library 'openswoole' (tried: /usr/lib/php/20230831/openswoole (/usr/lib/php/20230831/openswoole: cannot open shared object file: No such file or directory), /usr/lib/php/20230831/openswoole.so (/usr/lib/php/20230831/openswoole.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

sounds like maybe your phpize doesnt match your PHP install.
run:
which php
which phpize
and make sure those point to the same php install.
also try:
find /usr/lib/php -name openswoole.so

That may be the case.  Output of "ls -l /usr/lib/php" shows:
drwxr-xr-x 3 root root 4096 May 22 12:12 20210902
drwxr-xr-x 2 root root 4096 May 20 16:25 20230831
drwxr-xr-x 3 root root 4096 May 20 15:37 8.1
drwxr-xr-x 3 root root 4096 May 20 15:39 8.3
-rw-r--r-- 1 root root   13 Jan  9 06:01 packaging
-rwxr-xr-x 1 root root  514 Jan  9 06:01 php-fpm-socket-helper
-rw-r--r-- 1 root root 4845 Jan  9 06:01 php-helper
-rw-r--r-- 1 root root 9234 Jan  9 06:01 php-maintscript-helper
-rwxr-xr-x 1 root root 2976 Jan  9 06:01 sessionclean
I looked in the 20210902 directory and openswoole.so is there, but Composer looked in the 20230831 directory.

I used the "which php" and "which phpize" commands and they yielded "/usr/bin/php" and "/usr/bin/phpize", respectively.

It has nothing to do with comopser. Composer only tells you, that your PHP needs the openswoole extension and it will not install the openswoole PHP classes, as long as the extension is missing.
I had the same (or similar) problem with openswoole on ubuntu somewhere early last year. I think I fixed it by making sure phpize, php -i and php-config have the same version output.
$ phpize --version
Configuring for:
PHP Api Version:         20220829
Zend Module Api No:      20220829
Zend Extension Api No:   420220829

You will find the versions in php-config and php -i output too. They all must match. Otherwise the extension will be build for another PHP version, or some other stuff happens that does not work.
Even when build succeeds, make sure openswoole is enabled on by checking if /etc/php/8.2/cli/mods-available/swoole.ini is linked to /etc/php/8.2/cli/conf.d/30-swoole.ini (or similar name). Sometimes this fails too.

Oddly, in my /etc/php/8.3/cli/conf.d directory, I have 25-swoole.ini and 30-openswoole.ini, but 30-openswoole.ini links to a nonexistent file.

I finally got it to work.  For some reason, there were still files related to PHP 8.1 in the /usr/include/php and /usr/lib/php directories even though I'm using 8.3 and this seems to have been the cause of the problem.  Using an "apt uninstall" command to get rid of 8.1 didn't work since apt said 8.1 wasn't installed.  I deleted them manually and reran the commands Bitslip6 listed.  I got a better error, one that said a conflicting extension had been loaded already.  I deleted the 25-swoole.ini link, restarted Apache, and it worked.  I was then able to get the composer command to work after some changes to file permissions/ownership.

I finally got it to work. For some reason, there were still files related to PHP 8.1 in the /usr/include/php and /usr/lib/php directories even though I'm using 8.3 and this seems to have been the cause of the problem. Using an "apt uninstall" command to get rid of 8.1 didn't work since apt said 8.1 wasn't installed. I deleted them manually and reran the commands Bitslip6 listed. I got a better error, one that said a conflicting extension had been loaded already. I deleted the 25-swoole.ini link, restarted Apache, and it worked. I was then able to get the composer command to work after some changes to file permissions/ownership.


tutorial for distributed training

Description
This PR adds a tutorial for distributed training.
It covers

how distributed training works
setting up a cluster
how to run distributed training using launch.py and different options it supports
how to run distributed training without launch.py
related environment variables

Direct link:
docs/faq/distributed_training.md
I split the old PR to separate doc change and code change.
Doc change is in this PR.
The example referred to in this tutorial requires this PR to go in
Checklist
Essentials
N/A Doc changes only

[x] Passed code style checking (make lint)
[x] Changes are complete (i.e. I finished coding on this PR)
[x] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
[x] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
[x] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes

[x] Removed old section in multi_devices.md to a new page for distributed_training because it is long

Comments

The example this refers to requires this PR to be merged. The reason for this is that the example currently uses a python path insert to fetch a file from tests/ folder. This causes few problems

It requires the user to have the whole mxnet repository, with the directory structure intact
It means the user can't run the example standalone
For distributed training this means we would have to synchronize the whole mxnet directory across all machines.
This is unnecessary and bad user experience IMHO

Hi, the community has passed to vote about associating the code changes with JIRA<EMAIL_ADDRESS>We have updated the guidelines for contributors in https://cwiki.apache.org/confluence/display/MXNET/Development+Process, please ensure that you have created a JIRA at https://issues.apache.org/jira/projects/MXNET/issues/ to describe your work in this pull request and include the JIRA title in your PR as [MXNET-xxxx] your title where MXNET-xxxx is the JIRA id
Thanks!

@TaoLv Sorry I missed your comment. You can profile the worker process similar to a single machine case.
mx.profiler.profiler_set_config(mode='all', filename= str(kv.rank) + 'profile_output.json')
mx.profiler.profiler_set_state('run')
    # Code to be profiled goes here...
mx.profiler.profiler_set_state('stop')

Note the use of rank above to ensure that the path to save profile should be different for different workers.
There you can look for the operators KVStore Push/Pull to see time taken for communication.
I'll add a proper section for profiling to the tutorial once https://github.com/apache/incubator-mxnet/pull/9933 is merged. That makes it easy to profile the server processes too.

@rahul003 Thanks for your reply. I will try that. Seems some links in this tutorial are broker:
Training with multiple GPUs using model parallelism
Using data from S3 for training
Another minor suggestion, I think it would be better if you can add some pictures to show the architecture or scalability of parameter sever.

@rahul003 Another question, is distributed training also supported by other frontend languages? Seems this tutorial only describes how to run it with python.

@rahul003 ping

@piiswrong can we merge this ?


how to reference "pivot-table" object in Add-ExcelChart -PivotTable parameter

Hello All,
i am testing a script where I want to create Mutliple charts with the same pivot data,
I am able to get the first chart using the below snippets
 $pivotTableParams = @{
    PivotTableName  = "PWAuditData1"
    Address         = $excel.Sheet1.cells["F1"]
    SourceWorkSheet = $excel.Sheet1
    PivotRows       = echo o_username
    PivotData       = @{'Total' = 'sum'}
    PivotTableStyle = 'Light21'

        PivotChartDefinition = @{
                        Title="Total Downloads by Users";
                        ChartType="ColumnClustered";
                        Column=5; Row=15; Width=600; Height=500;
                        YMajorUnit=500; YMinorUnit=100;
                        LegendPosition="Bottom"
                                 }
}

and then call the above definition using
$pt = Add-PivotTable @pivotTableParams -PassThru
I want to use the same data from above Pivot Table and insert for example a doughnut chart for which i use the Add-ExcelChart
$pivotSheet=$excel.Sheet1

$pt1 = Add-ExcelChart  -Worksheet $excel.Sheet1 -PivotTable $pivotSheet.pivotTables[0] -ChartType Doughnut -Row 100 -Column 20 -PassThru

when the code runs, I am able to get the first chart, but for inserting the second chart it gives error as below,
Parameter set cannot be resolved using the specified named parameters

Question:
What is the correct way to reference the existing Pivot object which is already? placed on the sheet ?
Thanks for looking to this,
RJ

Check this out, let me know if it doesn't do what you need.
https://github.com/dfinke/ImportExcel/blob/master/Examples/PivotTable/MultiplePivotTables.ps1

Two issues with add-ExcelChart as currently written.

You can't specify both -worksheet and -pivotTable.  When called with -PivotTable the chart is created on the page where the data is .
When a pivot chart is created  it uses a fixed name, so add-excelChart can't create two charts for one pivot.

As a workaround use
$pt = Add-PivotTable @pivotTableParams -PassThru
as before, and then
$chart = $excel.Sheet1.Drawings.AddChart(("chart 2" ),"Doughnut",$pt)
$chart.SetPosition(100,0,20,0)  # X row, x offset, y row, y offset
$chart.SetSize(1000,500)   # Xpixels , yPixels

Hi @dfinke  and @jhoneill
Thanks a lot for looking into my query and responding to it.
The solution provided by @jhoneill  has worked for me and I am able to plot multiple charts using the same pivot table.
$pivotTableParams = @{
    PivotTableName  = "PWAuditData1"
    Address         = $excel.Sheet1.cells["F1"]
    SourceWorkSheet = $excel.Sheet1
    PivotRows       = echo o_username
    PivotData       = @{'Total' = 'sum'}
    PivotTableStyle = 'Light21'

        PivotChartDefinition = @{
                        Title="Total Downloads by Users";
                        ChartType="ColumnClustered";
                        Column=5; Row=15;
                        Width=600; Height=500;
                        LegendPosition="Bottom"

                                }

     }

$pt = Add-PivotTable @pivotTableParams -PassThru`
$chart = $excel.Sheet1.Drawings.AddChart(("chart 2"),"Doughnut",$pt)
$chart.SetPosition(10,0,20,0)  # X row, x offset, y row, y offset
$chart.SetSize(1000,500)   # Xpixels , yPixels
$chart.DataLabel.ShowValue = $true

One follow up question, using the line of code
$chart.DataLabel.ShowValue = $true
I was able to turn on the "Datalables" for the "Doughnut" chart.
How do I enable "DataLables" for charts created using Import-Excel module?

Got the answer
$excel.Sheet1.Drawings["ChartPWAuditData1"].DataLabel.ShowValue= $true
@jhoneill @dfinke  Thanks a ton.

@jhoneill thoughts on effort and ROI of enabling that in function?
Get-ExcelDrawing -WorkSheet $ws -name yyz -ShowDataLabel
Feels like it may be a nest of issues, and interesting.

The easiest way to do it is to split new-ExcelChart so all the set operations go into a new Set-ExcelChart; and have a new Get-ExcelDrawing which returns the chart.
 Get-ExcelDrawing -WorkSheet $ws -name yyz | set-ExcelChart -ShowDataLabel
Effort is minutes rather than hours. Return ... hard to estimate, but probably worth enough to a small number to make it worth doing.

Yeah. Well, to the backlog it goes.

As cprograemer84 mentioned, adding $chart.DataLabel.ShowValue = $true to the Add-ExcelChart.ps1 file, line 133 in my .PS1 (7.0.0) added the labels automatically. (ColumnClustered chart type). I tested a few other types as well just fine.


Being sure it is authenticated before joining

This does a 5 seconds timeout so we prevent it joining without authenticating with NickServ.

@LifeMushroom ?

Nobody cares anymore


Improve benchmark output upon error

Currently when benchmark failed, it will just print the dispatch error message without the context. i.e. the pallet, the extrinsic, the parameters.
It will be helpful to print more context along with the error message when a benchmark failed.

@shawntabrizi I'd like to take this one over in order to get into the code base.

@ropottnik sounds good! This should be a really easy one, just need to generate the appropriate error message with the info about current pallet and extrinsic being benchmarked, and wrap the actual error so that is seen too.

Thanks, like I said, I want to use it as a means to get a bit into the code base. I will probably pn you on discord for some general questions on setting things up (like how to actually benchmark something and provoke a failure :D)

From discord chat:
to start, i would clone and compile a local version of Substrate, using the runtime benchmarks features:
cd bin/node/cli
cargo build --release --features runtime-benchmarks

then i would go and edit one of the benchmarks to have an error
For example comment out this line should be enough: https://github.com/paritytech/substrate/blob/master/frame/balances/src/benchmarking.rs#L88
then if you build again and run the benchmark:
./target/release/substrate benchmark --pallet balances --extrinsic "*" ...

you should see an error show up
your goal would be to improve that error, which right now does not say anything besides directly what the error is.
I think you need to change this line: https://github.com/paritytech/substrate/blob/master/frame/benchmarking/src/lib.rs#L1082
and the same line in the else statement below, so rather than directly doing ?
you need to do .map_err(|e| "new error message here...")?
i think something like that
your setup to test what the error looks like shoudl help you figure out the details


train model for different $w$

Thank you for your great work. I have a simple question.
In the training section, you mention that 'change repleated $w$ for all layers to different $w$s'. There are a few pretrained models in stylegan which use repleated $w$, could I just adapt the weights from them or I need to retrain the model?
Thank you for your help.

And would you mind uploading the manipulation boundary for face? Thank you again for your help.

any response?

And would you mind uploading the manipulation boundary for face? Thank you again for your help.

Sorry, but the npy boundaries are ignored by git before. Now, all boundaries are uploaded.

Thank you for your great work. I have a simple question.
In the training section, you mention that 'change repleated $w$ for all layers to different $w$s'. There are a few pretrained models in stylegan which use repleated $w$, could I just adapt the weights from them or I need to retrain the model?
Thank you for your help.

Although we recommend using different ws for different layers, using same w (i.e., the official StyleGAN) also works. You can use the official StyleGAN model and then use IDInvert to train your own encoder and use InterFaceGAN to find your own boundaries.

And would you mind uploading the manipulation boundary for face? Thank you again for your help.

Sorry, but the npy boundaries are ignored by git before. Now, all boundaries are uploaded.

Thx, I will try it.

And would you mind uploading the manipulation boundary for face? Thank you again for your help.

Sorry, but the npy boundaries are ignored by git before. Now, all boundaries are uploaded.

Thanks a lot, I will try it.


Question: Recommended way to check state of command window

I want to control which scripts are accepting input at any given time, and when the CopperDC command window is accepting input I want other nodes to ignore input.
I've looked through the code to see that Copper checks $"Command Field" visibility when toggling, but that node doesn't seem to be accessible from other functions I've created.
func debug_console_is_visible():
	var debug_console_node = $"Command Field"
	return is_instance_valid(debug_console_node) && debug_console_node.get_visible()

Is there a more reliable way that you recommend?

That seems to be the best way to do it currently. I'll probably add some sort of built-in variable or function just to make it more convenient.

Maybe my setup is broken, but the standard dollar-sign syntax isn't working for me, it always returns null. I ended up using get_node and pulling the exact path from the root in order to get the reference and check the state. get_visible() also doesn't work on that node, but just checking the visible member works fine.
Hopefully this working (Godot 4.2.1) code will help out anyone with a similar use case:
@onready var debug_console_node = get_node("/root/debug_console/Command Field")

func debug_console_is_visible() -> bool:
	if is_instance_valid(debug_console_node):
		return debug_console_node.visible
	else:
		return false

I've now implemented a function that does this called is_console_visible. Hope it works for you.


Adds Hash#except for Ruby 3

Ruby 3  added Hash#except. Sorbet does not know yet. This PR attempts to change this.
See https://ruby-doc.org/core-3.0.0/Hash.html#method-i-except
This method should not be allowed for Ruby < 3, since when I'm outside a Rails/ActiveSupport context Hash#except simply does not exist.
Unsure if wrapping the method in a "unless Ruby 3" block is the prefered way.
Motivation

This brings Sorbet closer to support Ruby 3 features, thus allowing to use Hash#except (when not using Rails, where Hash#except comes from ActiveSupport).
Test plan

I couldn't find any unit tests for the other instance methods on Hash. Also unsure on how to test against different Rubies (it seems tests are run against Ruby 2.6 only?).
Head e.g. to sorbet.run, and try:
some_hash = {
 foo: 'bar',
 bar: 'foo',
}

some_hash.except(:foo)

this will currently throw a type error. Given that the sandbox is (presumably) Ruby 2.x, this is actually correct.
It would be amazing, if we could choose the (major) Ruby version for the sandbox.

I felt opening an issue to ask for this is actually more effort than opening a PR, since this is effectively ~2 LOC.

We have a policy of testing changes to Sorbet against Stripe's codebase before
merging them. I've kicked off a test run for the current PR.  When the build
finishes, I'll share with you whether or how it failed. Thanks!
Stripe employees can see the build results here:
→ https://go/builds/bui_LC2ES7weiSFVIb
→ https://go/builds/bui_LC2EGQ4uW6CYbN


Fix for Issue-1974 - Added Bonus Columns

Fix for #1974
Added Bonus Column attribute to Grade Entry Items, and a checkbox to toggle the bonus attribute.
Excluded Bonus Columns from Total Calculation

@peterzhao333 I actually meant that the bonus mark should not be added to the total mark for the spreadsheet, not the individual user.
So if the midterm is out of 20, that doesn't include a bonus question (which could be out of 5).