Realtime shield

Isn't this going to just waste CPU?

I am tired of the model lag error so I switched to the master-ci branch after this pull request is merged. I haven't experience any more model lag error since. Also, after 0.7.7, I sometime felt comma c2 turns the car slightly late. That got fixed with master-ci as well. Not so sure if it is related to this real time issue as well


Detect NIC's Failure

Does this operator identity the Node NIC failure and Migrate the VM's to next healthy node?

Hi @sudharsanomprakash, there are multiple aspects to the question, let me try to explain:

In general we try to differentiate between failure detection, and failure handling.
The main purpose of this self node remediation (SNR) operator is failure handling, by rebooting the failed node and deleting pods and volume attachments afterwards. The reboot will ensure that all workloads stop running, the deletion will accelerate rescheduling of workloads to other nodes.
For failure detection we offer the Node Health Check (NHC) operator (https://github.com/medik8s/node-healthcheck-operator). It detects unhealthy nodes based on their status conditions, and triggers e.g. SNR.
However, there are two cases when SNR will reboot the node without NHC: a) the SNR pod on the node stops working. Since the pod armed a watchdog, the watchdog will reboot the node after some time. b) the SNR pod loses network connection to the API server. Note that in these two cases the pods and volume attachments won't be deleted though, so workload rescheduling might be slow.

Circling back to your question:

Does SNR identify NIC failures:

a) without NHC:

when the failed NIC is for the network which connects the node to the API server: yes, the node will be rebooted, see last item, case b) above.
otherwise: no

b) with NHC:

when the NIC failure results in a node condition which triggers NHC (e.g. Ready=False because it is the NIC which connects the node to the API server): yes, the node will reboot, and pods and volume attachments will be deleted
when there isn't a condition which can be used for NHC (e.g. the NIC isn't used for API server connections, and nothing checks the NIC and updates a node condition accordingly): back to a)

Does SNR migrate VMs:

I assume you mean KubeVirt VMs? We don't handle VMs in a special way. But the VM's pod and volume attachment will be deleted. If that wll just start the VM on a healthy node, or if it will trigger an actual live migration, depends on several factors AFAIK. The VM needs to be live migratable in general, and the source VM and node need to be in a state which allows migration... which probably isn't the case when the relevant NIC has a failure. But for details on VMs, please reach out to the KubeVirt folks 🙂
So, overall we have several "it depends", but I hope this answers your question.

Hi, small addition to Marc's thorough reply.

b) the SNR pod loses network connection to the API server.

One caveat is the use case where the other agents lose network connection to the API server, but still have communication between themselves - in that case the agent will assume it's healthy and will not reboot.
Regarding restoring stateful workload, you might want to have a peek at rook (for k8s) or ODF (for OCP), and of course for more info contact KubeVirt folks per Marc's suggestion.

@slintes @mshitrit  Thank you for the response. Yes, it for KubevirtVM's.
I was in understanding that NHC monitors all the Interfaces in the nodes to determine the node health but it makes sense when the NodeConditon is determined based on NIC that connects to API server.
Since that NodeCondition was mentioned, it brings another question to me, there are No direct NodeCondition for CPU pressure like we have NetworkUnavailable or MemoryPressure. How would NHC react to it?
Example, What happens when we create CPU stress on a node, Will NHC report status as Ready until the CPU stress causes(might eventually due to stress) other effects like DiskPressure or MemoryPressue?

NHC does not monitor any hardware or software on the nodes. It purely looks at the k8s node resource, at the status conditions. You can configure NHC for selecting which conditions should be watched (see https://github.com/medik8s/node-healthcheck-operator/blob/main/docs/configuration.md).
Those conditions have to be set by other controllers. Some are set by core k8s controllers (e.g. Ready, DiskPressure, ...), everything else needs to be set by custom controllers. For the latter https://github.com/kubernetes/node-problem-detector might be worth a look.


Update README.md with grammar fixes

Fixed some grammar and a stray )

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

Hello @Strum355,Thanks again for the PR! We want to show our appreciation by sending                                              you some swag. Could you please fill out                                              this form so we can send it to you? Thanks!                                             Team SendGrid DX


fix(tests): add fakeasync dependency to karma

As per change log for angular

You will also need to add the dependency 'node_modules/zone.js/dist/fake-async-test.js' as a served file in your Karma or other test configuration.

Sorry missed these changes yesterday, the specs are still valid, but it might be worth reviewing to see if they should be using async(inject


Attempting to make a pull request with a pushed branch?

Hey guys, I wanted to make a PR with some previous events.

So I cloned the repo, checked out a branch made the changes.

Now I wanted to push the branch to this remote repo in order to make a PR..
But I don't have the permission to do so..
How else should I go about making the PR?
-Thanks for your time.

Forked Repo and made a PR


Cerate "css-icon"

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[ ] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

We are currently not accepting translations for Guide articles for Thai.
Note that if people submit translations of either the README.md or the CONTRIBUTING.md, we will accept those in any language. Contributors should create files in the /docs folder.
Thank you.


[Feature] Adding "menu transfer list"

Description
We can add menu transfer list where one or more menu items can be added or removed
Screenshots
https://github.com/Rakesh9100/Beautiify/assets/162733812/8cac36d4-a229-4c87-99eb-f286702184a7
Checklist

[X] I have checked the existing issues.
[X] I follow Contributing Guidelines of this project.
[X] I am a GSSOC'24 contributor.
[ ] I am a IWOC'24 contributor.
[ ] I am a JWOC'24 contributor.
[ ] I am a SWOC'24 contributor.

Code of Conduct

[X] I agree to follow this project's "Code of Conduct".

@Rakesh9100 please assign me this issue I want to work on it

@Rakesh9100 new addition of transfer list

@Rakesh9100 please assign me this issue I want to work on it

Go ahead @Maana-Ajmera


How to chain then+catch with fulfill, reject

PromiseKit version: 4.0.4
Xcode version: 8.0
CocoaPods version: 1.1.0.rc.2

I know there is a "wrap" keyword in promiseKit 4, but for a special use case, when I try to use fulfill/reject, I should be mistaken somewhere because I can't chain then+catch in a row.
Xcode is telling me Missing return in a closure expected to return AnyPromise, but I don't want to return a promise as my logic is done and just want to retrieve the error in the catch closure (with reject resolver)
Here is an example of simple wrapping which cause me some troubles:
        UserService.loginWithFacebookOn(viewController: self)
            .then { result in
                if result.isCancelled == false {
                    self.performSegue(withIdentifier: "", sender: nil)
                }
            }.catch { error in // Compiler error here
                self.view.show(message: error.localizedDescription, type: .error)
            }

Then the loginWithFacebook method:
static func loginWithFacebookOn(viewController: UIViewController) -> Promise<FBSDKLoginManagerLoginResult> {
        ...
        return Promise { fulfill, reject in
            loginManager.logIn(
                withReadPermissions: permissions,
                from: viewController,
                handler: { result, error in
                    if error != nil {
                        reject(error!)
                    } else {
                        fulfill(result!)
                    }
            })
        }
    }

Specify -> Void. See FAQ or 60% of the closed tickets.

Oh didn't see it, thanks !

Fixed it?

Yes sure

Great. Let us know if you have any other issues.


List function like R.map and R.filter to accept iterators as arguments

I'm not sure if it is feature request or an issue, looking at documentation I would expect this to work already, for example:
console.log(R.filter(R.gt(3),[1,2,3,4]))
console.log(Array.from(R.filter(R.gt(3),g())))

function* g() {
  yield 1
  yield 2
  yield 3
  yield 4
}

I would expect first and second lines to output the same, but the program outputs:
[ 1, 2 ]
[]

This would unlock very nice feature, namely transducers working on producers, not on consumers (like current transducers in Ramda), so following holds R.comp(R.map(f),R.map(g)) === R.map(R.comp(f,g)) for iterators as arguments, i.e. no intermediate values are created. I think this is simpler than clojure style transducers implemented in Ramda.

I think its a good feature request to consider.
I don't completely follow your last paragraph. I thought the point of using iterators was to get at intermediate values?

R.filter would have to be changed internally so that it can run your object with next calls

yes, run it, but also return generator, it is the point, simplified definition for filter (without other input types) would be just:
function* filter(pred, input) {
   for(let i of input)
      if (pred(i))
         yield i
}

or for map
function* map(fun, input) {
   for(let i of input)
      yield fun(i)
}

and I don't think it is hard for other List functions too

I don't completely follow your last paragraph. I thought the point of using iterators was to get at intermediate values?

I mean the whole results of f and g as intermediate values, in case of arrays these will be the whole array returned after each state. In case of these transducers the execution order of f and g will be interleaved for each element.
I use this in my utility for ESTree AST traversal, there is a bit of elaboration about this kind of transducers in estree-transducers

and I don't think it is hard for other List functions too

Probably right.
Thanks for the link. I will check it out and get back to you.

I really like this idea. Thank you for the post! you describe it well with context to clojure, ramda, and reference links.
I made a simple example because I want to make sure I understand correctly what you intend.

producer - changes input into an iterable and returns it
consumer - pulls iterable values through the composed transforms in order to produce output

const R = require('ramda')

function producer() {
  return Array.from(arguments)
}

function map(fn) {
  return function* (iterable) {
    for (let i of iterable) {
      yield fn(i)
    }
  }
}

function consumer(transforms) {
  const list = []

  for (let i of transforms) {
    list.push(i)
    console.log(list) // side-effect
  }
}

function main() {
  const pipeline = R.pipe(
    producer,
    map(R.compose(R.inc, R.inc)),
    consumer)

  pipeline(1,1,1)
  /*  Logs
      [ 3 ]
      [ 3, 3 ]
      [ 3, 3, 3 ]
  */
}

main()

gist link
Ramda functions like map are dynamically dispatched--see the switch statement for all of map's possible behaviors based on the second input value. In node v6 generatorObj.toString() === "[object Generator]", so that could be added to map dispatch quite easily.

probably the switch may look like the one in interanal/_reduce.js, and default behavior is to return generator. And actually, it is another useful application for the tool, say, we use ES6 Sets instead of generators, and what to apply filter and transform each element:
R.compose(R.filter(g), R.map(f))(new Set([1,2,3,4])

If implementations of R.map and R.filter work for Set like for Arrays, namely, returning Set with updated and filtered values, this will create intermediate Set value between filter and map, we know Set creation is expensive, and it is absolutely useless there, we can get Set back on the final stage, or whenever we need Set:
new Set(R.compose(R.filter(g), R.map(f))(new Set([1,2,3,4]))

So I think for all Iterables it is good it to return Generator, I would do this for Arrays too, but since a lot of code may already depend on current implementation a special case for it would do the job.
There is probably another stopper, it requires ES6 Generators, but Ramda seems to keep ES5 sources.

looks interesting. i think we should take this up post-1.0.

I am actually curious, why not use the internal _reduce for map and filter as the default fallback? instead of a separate _map and _filter for arrays?
just for performance reasons? as _reduce supports reducing over iterables.
since most if not all functions can be implemented through reduce/fold, why not use that instead?
then in _reduce, have any dynamic dispatches for different data structures, if necessary.

@comraq good question. i think the array-specific lines are to optimize the primary path. it is not written in stone, however. i am certainly open to seeing what the tradeoffs are of centralizing these implementations in reduce. I expect we'd take a perf hit, but if we can streamline the dispatch logic or get some other benefit in exchange, that may be a trade worth making

why not use the internal _reduce for map and filter as the default fallback?

internal _reduce takes three arguments: fn, acc and list. So how do you derive acc from a map call which only takes two arguments: fn and functor?

imlazy library by @benji6 may be of interest

@thurt  map for example:
const map = (fn, ls) => reduce((acc, x) => acc.concat(fn(x)), [], ls)
if we had something that could reliably get us the type of the container ls and an empty instance of it, then we could do something nice like
const map = (fn, ls) => reduce((acc, x) => acc.concat(fn(x)), empty(ls), ls)

if we had something that could reliably get us the type of the container ls and an empty instance of it

Isn't that exactly what R.empty does, @buzzdecafe?

indeed. also gotta have concat defined for the relevant type

a generic concat and empty (with dynamic dispatches) are pretty crucial, as they are the essence of monoids.
but yeah, if those are present, pretty much everything can resort to a reduce implementation.
though only thing is that reduce, for the most part, is eager and not lazy. what @awto brought up about lazy generators really has potential.

I stumbled upon this today, playing with a custom iterator for an object. R.reduce works as expected with it, but R.map simply maps over the keys and ignores the iterator.

if we had something that could reliably get us the type of the container ls and an empty instance of it

Isn't that exactly what R.empty does, @buzzdecafe?

It would be, but unless I'm missing something, there is no guarantee that every Functor passed to map is a Monoid.

@CrossEye if not guranteed to be monoid, then there can possibly another switch in map before fallback? check if empty is function or map differently?
though, currently I am more leaning towards the idea of lazy generators, and that it may be a better default/fallback.

going back to @awto:
I don't see how it will be easy/simple to change over to a generator-based library at the current time (as @buzzdecafe says the current version is pre 1.0). It wouldn't be good to only change some functions to generator functions, because in certain cases they are not composable with non-generator functions (ie. they introduce backwards compatibility concerns).
I'm not convinced that all list-based functions have an obvious generator version, and there are still other functions which require more careful consideration about how or whether to store state in their generator version.
If you are interested in starting a fork to try changing some functions, I would be happy to provide input! A complete list of all the functions you want to change to generators would be a good start I think.
I definitely like the model expressed by generator composition and I see how it can quickly pay off after implementing just a few functions. The imlazy library looks like a really good source of inspiration (source code is very easy to read).

@thurt many thanks for imlazy library pointer, this is exactly the library I need, I will definitely try to add iterator cases to ramda functions after I have some free time if nobody takes it first

I'm not convinced that all list-based functions have an obvious generator version, and there are still other functions which require more careful consideration about how or whether to store state in their generator version.

do you have any concrete function in mind as an example? I looked briefly through List functions list and haven't noticed any complicated.
But anyway, it looks like a core decision for Ramda team to make, now many functions don't support iterators at all, and for me it looks like a top priority requirement for libraries such as Ramda. There are quite a few modern containers: in ES6, Immutable.js worth supporting. The question is: should the functions work eagerly with such containers and each to build same type of container as output, or lazely, like in imlazy librarry, well, or the 2 sets of functions.

Wouldn't using concat on arrays mean you'd be cloning the accumulator on every pass of the reduce?

@svozza yes, there would definitely be some perf hits with a naive implementation.

I'm not convinced that all list-based functions have an obvious generator version, and there are still other functions which require more careful consideration about how or whether to store state in their generator version.

do you have any concrete function in mind as an example? I looked briefly through List functions list and haven't noticed any complicated.

:+1: Yea I'm thinking about this right now. I don't have any specific ones yet, but I am being wary.
My primary concern is that the model of composition introduced by composing generators isn't friendly with non-generator functions.
R.pipe(R.map(R.inc), R.apply(R.multiply))([1,1]) // returns 4
// changing R.map to a generator map will break this code (for multiple reasons)

This suggests to me that many more functions would have to be changed to generator functions (not just the list-based ones).
Regarding state: for example, I think of reduce having two likely implementations
const reduce = R.curry(function* (f, acc, iterable) {
  for (let i of iterable) {
    acc = f(acc, i)
    yield acc
  }
})

const reduce2 = R.curry(function (f, acc) {
  let a = acc
  return function* (iterable) {
    for (let i of iterable) {
      a = f(a, i)
      yield a
    }
  }
})

With the first, I get the accumulator values across one iterable. With the second, I can continue the accumulator across multiple iterables (which may be separated in time). Which implementation to choose depends on what direction the library wants to go.

@thurt hmm, reduce with generators? maybe im missing something here but what is the purpose of yielding the intermediate acc values?
by nature reduce is defined to "fold down" a sequence/list and reduce them to ONE final value. what purpose does outputing the intermediate results serve? (other than seeing how the accumulator is accumulated)
it is why i think that reduce is eager because reduce should only output 1 result from any arbitrary length list. hence, it can be lazy in the sense that it will not execute until you demand for its value/acc. but, it will/should only have 1 value as its output. (in terms of JS iterators, imo it probably only has 1 "next" value and then its done).
and thus, if reduce is eager and generators are lazy, they cant/shouldnt be mixed together. either you choose to use lazy generators for transformations or you use reduce to eagerly reduced down to ONE final value/result. (if you want to pipe multiple transformations into eager evaluation through reduce without intermediate values, use clojure transducers)
In the end, it seems like reduce vs generators are on two sides of the spectrum, the public api can support both (but may be messy), however, they shouldnt be mixed.

@comraq makes sense! thanks for noticing that. I agree with your explanation. I think scan is a more appropriate name.

@thurt I don't see problem with R.apply, JS apply doesn't work with arbitrary Iterables too, why should R.apply works, or you mean something else?

@comraq

if reduce is eager and generators are lazy, they cant/shouldnt be mixed together

i don't think reduce has to be eager. It can be a lazy generator. does this do what you expect:
const reduce = R.curry(function* (f, acc, iterable) {
  for (let i of iterable) {
    acc = f(acc, i)
  }
  yield acc
})

const sumIterable = reduce(R.add, 0)
const mySum = sumIterable([1, 2, 3]) // lazy
console.log(...mySum) // 6

@awto I just wanted to make it clear to other readers that the generator composition model is not interchangeable with Ramda's function composition model. To do the same computation, I would have to write an apply consumer:
const apply = R.curry(function (f, transforms) {
  const xs = []
  for (let t of transforms) {
    xs.push(t)
  }
  return f(...xs)
})

// now this works because I am composing compatible things
R.pipe(map(R.inc), apply(R.multiply))([1,1]) // returns 4

@thurt yeah, your example is what i meant by:

in terms of JS iterators, imo it probably only has 1 "next" value and then its done

yeah, your example is what i meant

Ok good :+1:

i cant really think of a good situation/usage for that. any thoughts?

it seems like all the generator functions would be implemented so that they only work with iterables. So if reduce returns a primitive value, like a number (as I show above), then it may not be very useful in a generator composition (i think you were getting at this point in your comments). In that case, the only place I would put it is at the end of an R.pipe:
const sumIterable = reduce(R.add, 0)
const myOperation = R.pipe(map(R.inc), sumIterable)
console.log(...myOperation([1,1])) // 4

Maybe I could use it in the middle of a generator composition, but I have to make sure reduce returns an iterable, not a primitive.
const of_sumIterable = reduce(R.pipe(R.add, R.of), 0)
const myOperation2 = R.pipe(map(R.inc), of_sumIterable, map(R.inc))
console.log(...myOperation2([1,1])) // 5

I suppose the reduce operation could also build up a more complex iterable, but I haven't experimented on that.

I suppose the reduce operation could also build up a more complex iterable, but I haven't experimented on that.

Just following up on this more complicated case.
When reduce is used to build up a new iterable structure, I may want to subsequently iterate through that new structure. Unfortunately with composed generators, I'm not able to do that within the same composition.
To iterate the new structure, I have to map another generator function or generator composition over it.
For simplicity, I will build a new iterable structure with map(dupl), which yields a new iterable for each of the values.
const dupl = R.flip(R.repeat)(2) // dupl(1) => [1, 1]
const nextOp = map(R.inc)
const Op = R.pipe(map(dupl), map(nextOp))

const myOp = Op([1, 2, 3]) // lazy and nested: Generator(Generator)
console.log(...myOp) // {} {} {} (returns 3 instances of the second generator, nextOp)

I don't get my final values unless I also consume the nextOp generators. In most cases, that will be a burden to have to consume twice. So I will have to write another generator function, maybe flatMap is a suitable name?
// I expect i to be one of my new iterables (ie. a result of dupl)
// and f(i) to be iterable (ie. a generator, nextOp)
const flatMap = R.curry(function* (f, iterable) {
  for (let i of iterable) {
    for (let j of f(i)) {
      yield j  // j is a value from new iterable; transformed by nextOp
    }
  }
})

Now I will get my final values with just one consumer
const Op = R.pipe(map(dupl), flatMap(nextOp))

const myOp = Op([1, 2, 3])
console.log(...myOp) // 2 2 3 3 4 4

The principle would be the same if I had to use reduce instead of map(dupl), except that reduce would only yield one new iterable from all of the values.

I also agree that generators will be helpful.
const S = x => y => z => x(z)(y(z));
const K = x => y => x;
const B = x => y => z => x(y(z));

const W = (S(S))(S(K)); // monadic join for function

const take = R.curry(function * (n, stream) {
  for(let x of stream) {
    if(n-- === 0) {
      return
    }
    yield x
  }
});

const iterate = R.curry(function * (f, a) {
  yield a
  for(;;) {
    a = f(a)
    yield a
  }
});

const repeat = function * (value) {
  yield * iterate(K(value), value)
}

const replicate = R.curry(function * (n, value) {
  yield * take(n, repeat(value));
});

console.log([...W(replicate)(3)]); // => [3,3,3]

I think perhaps it's time to write a roadmap document.  As @buzzdecafe suggested above, this might be good post-1.0 work.
A roadmap might make it clear that 1.0 would be the last version to support ES5 (even ES3?)  While that seems to be a general understanding among the core team, I believe, it would be good to document it.

I didn't say that correctly.  1.0 would support ES5, and work would begin on 2.0, which would not.  There certainly could be intermediate releases which also support ES5.

I would like to see Ramda suppporting the native Map and Set types. Has this been considered?

@OliverJAsh:
What sort of support do you envision?  Both have significant philosophical differences with Ramda, which is interested in value equality; they focus on reference equality.  This makes it somewhat difficult to interoperate.

Sorry, to be clear I meant the ES6 native Map and Set types, which are iterables.
For example, I would like to be able to use Ramda to map over a native ES6 Set and get back a mapped Set.

I found an alternative project that does exactly this: https://github.com/kevinbarabash/functify

That sort of support is exactly where I can imagine philosophical differences.  There are several issues.  First, assuming that map was extended to Sets, there is a very clear, if imprecise, notion that what map does is to return a new data structure of the same shape as the original one.  If you map over an n-element list, you return an n-element list.  If you map over a Maybe.Just you get another Maybe.Just.  If you map over a binary tree, you get another binary tree with exactly the same branching pattern.  But this would not be able to extend to mapping over native Sets:
let s1 = new Set([-2, -1, 0, 1, 2])
map(n => n * n, s1)
//~~> new Set([4, 1, 0])

Our 5-element set mapped into a 3-element one.  This wreaks havoc with our intuition.  But perhaps that's acceptable.  We haven't formulated any precise laws that this would break, so maybe it's OK.
But then look at this example:
let s2 = new Set([{x: -2}, {x: -1}, {x: 0}, {x: 1}, {x: 2}])
map(n => ({x: n.x * n.x}), s2)
//~~> new Set([{x: 4}, {x: 1}, {x: 0}, {x: 1}, {x: 4}])

Now we run into real problems with Ramda.  The native Set type distinguishes the first and last elements listed in that return by reference, and so includes them both.  Ramda works with value equality and would consider them identical.  So from Ramda's point of view, we have a Set with duplicated elements.  That's a very substantial problem, quite possibly an insurmountable one.
And of course native Maps would run into the same issue with their keys.
I would love to hear of reasonable ways of addressing these issues.  But I haven't come up with any myself.

@CrossEye Interesting points. As for the first, I think that's acceptable. I'm used to this behaviour with Scala's Set:
scala> Set(1, -1).map(n => n*n)
res1: scala.collection.immutable.Set[Int] = Set(1)

@OliverJAsh:
I think the first one is actually all right.  It doesn't feel that way, because in all other iterable cases we are used to seeing, either the original and the mapped iterables are both infinite or

Why not just let the native Set decide how to dedupe elements? E.g. new Set([1,1]) => Set { 1 }. Is there a reason Ramda must decide what is and is not equal?

@OliverJAsh:

Why not just let the native Set decide how to dedupe elements?

To my mind, this is very clear.  Ramda is designed to do one important job: to make it easier to do in JS the sort of functional programming available in a number of other languages.  There are a number of factors involved, including purity, immutability, composability, and this one: value-based semantics.
Functional programming is about values not references.  When we want to know if foo and bar are equal, we care about their content, and not their addresses in memory.  We take this for granted with strings and numbers but, often in JS, feel fine ignoring this for other types.  Ramda is interested in sticking closer to the functional programming mainline.
We already have functions that try to think in a Set-like fashion, uniq, union, intersection, difference, and the like.  These are designed to work with lists, and it would be really nice to have a Set interface for them to work with.  (We do, by the way, internally; perhaps we need to promote that.)  But they are designed for value equality.
What would you see as the integration points with native Set/Map implementations, and what are the advantages?  Is it any more than adding map, filter, reduce`, et. al., to them?


PyTorch notebook examples

This change is

@abhi-g  @karthikv2k This issue has been open for a while.
Are you just waiting for it to be reviewed? Is there someone other than @abhi-g who could review it?

waiting to be reviewed. anyone can review it as it is only adding examples.

/lgtm
/approve


Should be good now

:tada: This PR is included in version 9.2.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Added mount_options to config.vm.synced_folder

Issue #1 has continued to be a problem for me. Adding :mount_options => ['dmode=777', 'fmode=666'] to config.vm.synced_folder resolves it for me.

@atadams thanks for the pull request


MQTT light: Order of packets: command_topic and brightness_command_topic

Circumstances
I'm using auto-discovered MQTT lights (HA -> ESP8266+IR-Diode -> IR-controlled LED bulbs) and I am aware of the reasonable paradigm that the ON payload is sent alongside any other non-OFF command.
Description of problem:
The "ON" packet (command_topic) is sent after a brightness or color temperature change. For lights which ignore state changes during the OFF-state (which shouldn't be uncommon) this is a big problem.

Turning light on via brightness slider sets the brightness and then turns on the device resulting in ignoring the new brightness
Changing brightness and receiving the "ON" packet afterwards may reset brightness
Changing color temperature and receiving the "ON" packet afterwards may reset brightness

Expected:
The "ON" packet should be sent before any other command to preserve "backwards compatibility" with dumb devices.
EDIT
I was convinced by @TD22057 that reversing the packets is ideally not a good idea (it is better for devices which accept commands during OFF state). Having an option of the order would be better.

I'm experiencing the same.
On another note upon setting full brightness makes the light stick to red and become unresponsive.
The only workaround I found was to turn down the brightness while the light is offline then to boot the light and adjust the brightness again to restore control.
esp8266+ws2812b (64 leds) fastled

Since different lights behavior differently, I think this should be a config flag to control when the on command is sent.  If a light can handle on last, it probably works better because then the brightness and color are set correctly before it's turned on.  I looked at the code and think it should be pretty easy to have either option supported.

@TD22057 I see your point. First send desired settings and then activate. Reasonable. Otherwise "Set course to Earth, warp 9, engage." would be dangerous. I suppose Philips Hue accepts settings during the OFF state.
Should also all settings (Color temperature, RGB, Effects) be also visible in Hassio even if the light is OFF?

@lukie80 No idea.  I don't actually own any of these lights - this just seemed like a bug I could help with.  It's easy enough to make the sending code handle either style (on before settings or on after after settings).  If you still want that let me know and I'll work on putting it in.

@TD22057 Thank you very much for the offer. I think it could help others having this option #2161, HA forum in particular because implementing the option to not always send the ON packet was rejected (#2161, pre-last comment). In the meantime I've expanded my program on the ESP8266 to ignore command_topic=ON if the state of the light is already ON, so I'm fine now. So maybe waiting for more feedback on this topic?

@TD22057 It would really help to have this option. The same issue has been raised on #7810
I would be great if you can work to add a config flag to send the state before the option.

FYI - I have an initial cut at this implemented.  You can grab the file here: https://github.com/TD22057/home-assistant/blob/mqtt_light/homeassistant/components/light/mqtt.py
I added a new configuration option to the mqtt light (not the template or json version):
send_on_with_change: 'AFTER' / 'BEFORE' / 'NONE'
Here's the scenarios:
1) click on:
   send ON
2) click off:
   send OFF
3) change brightness (or color)
   if config is BEFORE:
       send ON, send BRIGHTNESS
   else if config is AFTER:
       send BRIGHTNESS, send ON
   else if config is NONE:
       send BRIGHTNESS

So here is a question for you:  If you have a light that's off, and you click the on button, what should happen?  Currently, the way the MQTT light works, it just send an ON command.  But what if you adjusted the brightness to 50% and turned it off?  When you click on, HASS assumes the light is turned on to 50% and doesn't send a brightness command, it just sends the on command.
If I understand your hardware correctly, sending ON is like saying "set brightness to 100%, turn on".  In that case, it seems like if the input config is NONE, turning the light on should actually just send a brightness command, not an on command.  Does that sound right?

@TD22057 - thanks for your work here!
The best way to understand my hardware is to consider that sending "ON" is functionally identical to sending "set brightness 100%", and sending "OFF" is functionally identical to sending "set brightness to 0%".  They're just shortcuts, if you like. (This makes it clear why the current code doesn't work for me.)
If one adopts that paradigm, then the answers to your questions become obvious: in the first case HASS need make no assumption about the existing state since adjusting to 50% then turning off is the equivalent of adjusting to 0%. Sending an ON command at that point will set the brightness to 100%.
And in the second case, there is no difference between sending a "brightness 100%" and an "ON" command.
However, that's just my hardware. :)
I can live with the BEFORE case, since the hardware reaction time is quick/slow enough that "ON, brightness 1%"  will just give me a very dim light without a noticeable bright flash. Though the NONE is better for me, of course.

OK - I reworked it a little bit - try this one: https://github.com/TD22057/home-assistant/blob/mqtt_light/homeassistant/components/light/mqtt.py
I changed the configuration input - it's now:
on_command_type: 'FIRST' or 'LAST' or 'BRIGHTNESS'

If on_command_type is 'FIRST', the on command is sent before the style (brightness, color) commands.  If on_command_type is 'LAST', it's sent after (the current behavior) the style commands.  If on_command_type is 'BRIGHTNESS', then the brightness command is used to turn the light on (the "ON" packet is never sent at all).  It will still send the brightness command along w/ the colors but it should be the same value as before so I think that's ok.
I think that's what you want.  But - one last question:  if it never needs to send the ON command because it's using brightness, should it still send an OFF command?  Or should that be sent as a brightness = 0 command?

Hi
For my configuration, sending a brightness of 0 exactly equates to turning off, so I am ambivalent.
(Just for completeness, if from an off position I - via mosquitto_pub set a brightness of 1 (% in this case) then I see status messages posted confirming the new brightness and the status being "on". If I publish a request to set brightness to 0 then I get both the new brightness of 0 and an "off" status. If - instead of the latter - I publish an "off" then exactly the same statuses (0/off) are returned.)
Philosophically, I guess I would prefer an OFF command to mean OFF rather than brightness zero - it just feels a bit safer!
I haven't yet had a chance to try your code, having been away. I'm back now and will try over the weekend. I am a hassbian user - my guess is I need to replace
/srv/homeassistant/lib/python3.4/site-packages/homeassistant/components/light/mqtt.py
and change DEFAULT_ON_COMMAND_TYPE on line 62 to "BRIGHTNESS"

is that right?

Note quite.  Make sure you're on the latest version, copy down the updated light/mqtt.py file and replace it (keep a copy of the original though).  Then edit your config file to add on_command_type = 'BRIGHTNESS' to any light you want to control that way and restart hass.
Once I get the unit tests updated, I'll send a push request to include this and close the issue.

OK, I'm on 0.52.1 at the mo, so will update this weekend.
PS I'm assuming you mean
on_command_type: 'BRIGHTNESS
to the light config. Shout if not! :)

Hi - so I updated to the latest version (which since has just changed to 0.55), replaced mqtt.py, and added BRIGHTNESS to one of my lights.
It works perfectly - thanks so much! :)

Can I ask a cheeky follow-up question, now that I can control brightness - I see that the Light module supports 'transition' - a time in seconds to make the transition to a new state. Does your mqtt code support this?
For my particular setup (using https://github.com/the1laz/cgateweb), I can pass two arguments to my mqtt publication - brightness, time - where brightness is an integer (0-100 in percent), and time is a string eg 4s, 5m
I am guessing that there are too many varieties of implementation to make this an easy coding exercise.

I see that the docs say it supports transitions but the code has no mention of that work anywhere so I don't know what it means.  I think you can implement that using the MQTT template light by saying something like {{brightness}},5s.
I actually think your original problem should have been solvable w/ the template light.  But I think there is also a bug in the MQTT template light in that it only fills in the brightness value if brightness is being changed, not when it's just clicked on.  It looks to me like the MQTT template light has some problems - it passes a dictionary of the values to fill in the templates but it only fills the keywords that are being modified.  So when I said:
  - platform: mqtt_template
    command_topic: "test/light2/bright"
    command_on_template: "{{ brightness|d }}"
    command_off_template: "0"
    brightness_command_topic: "test/light2/result/bright"
    brightness_template: "{{ value }}"

I think it should have sent a test/light2/bright = X message to turn the light on and a test/light2/bright = 0 message to turn the light off.  But since I wasn't changing brightness, the on message is blank.  I made a quick mod to mqtt_template.py to fix that and it works perfectly.  But - you must have the input topics defined - for example if you don't define the input brightness command topics, it won't allow brightness as an output at all (also not described in the docs).  But if you do define them (and have my mod), then it will send the brightness as the command_on topic as you want.

Actually - someone on the forum already did this.  See the answer here - you can just use mqtt template light as a brightness controller already with this additional logic:
https://community.home-assistant.io/t/bug-in-mqtt-light/18810/3
If you use this logic, you don't need my update to mqtt_template.py except for the fact that it doesn't remember what the last brightness was, it always turns on at 255.  So I think my mod is still necessary to be really useful.
  - platform: mqtt_template
    command_topic: "test/light2/bright"
    command_off_template: "0"
    brightness_command_topic: "test/light2/result/bright"
    brightness_template: "{{ value }}"
    command_on_template: >
      {%- if brightness is defined -%}
      {{ (brightness ) | int }}
      {% else %}
      255
      {%- endif -%}

For any on that cares, I posted an MQTT template question on the forum to see if anyone cares if I make the fix to the template code as well.  That would be another, more flexible way to achieve a similar result.

Oh wow. mqtt-template - who knew?
I do see on the page that the table states that transition is not supported by mqtt, which I suppose explains why you can't see it in the code. Documentation error, I guess.
Are you still planning on releasing the changes you have made to mqtt? I think it would be useful and I would certainly use it. (At least for now - the transition thing is hard; I'd like to use it in certain circumstances (eg lights out in evening) but not all the time. One to think further about.)

Hi @TD22057 - it doesn't look to me like your changes have been incorporated into 0.56. Are you planning on releasing them?

See: #9829.  It's been submitted as a pull request - the HASS owners have to decide to merge it or not.  You can always download the modified file from my repo to use until then.


Incomplete data received by sub

hi, did you find a problem? When subscribing to a topic under TCP protocol, big data will accept incompleteness, and I failed to set relevant properties.

I have not seen any issues so far and I am sending/receiving round about 0.5 MB/s of data.
With properties do you mean option (setOption function)? And which options were you not able to set?

I have not seen any issues so far and I am sending/receiving round about 0.5 MB/s of data.
With properties do you mean option (setOption function)? And which options were you not able to set?

I set the rcvbuf and rcvhwm properties.Now we have segmented the server transmission.It's okay, thank you.

Also, do you know how to. / build.sh [ x86 ]，I failed to compile

Also, do you know how to. / build.sh [ x86 ]，I failed to compile

Works for me just fine


[BUG]

Notice
Many bugs reported are actually related to the PnP Framework which is used behind the scenes. Consider carefully where to report an issue:
Reporting an Issue or Missing Feature
Please confirm what it is that your reporting
-ForceAuthentication flag for Connect-PnpOnline does not use entered credentials for WIA workstations
Expected behavior
As a user in a corporate environment that uses Windows Integrated Authentication (WIA), I need to connect to SharePoint as an admin account or other account that is different from the credentials I used to login to the Windows machine I am using when I run the cmdlet.  When I use Connect-PnpOnline -Url $url -Interactive -ForceAuthentication, I expect that I will be prompted for my alternate user name and password and receive a connection back as that alternate account.
Actual behavior
I am correctly prompted for a user name but when I submit it, the login process sees my WIA credential and tries to log me in with that instead.  Use cases we have seen this in include:

Logged in to Windows as a non-admin user.  Attempt to connect to an SPO site that the non-admin account does not have access to.  Enter admin credentials at the login prompt.  Receive Access Denied error from SPO event the admin credentials have rights to the site being access.
Logged in to Windows with an account that is not federated to AAD.  Attempt to connect to an SPO site.  Enter admin credentials at the login prompt.  Receive AADSTS50107: The requested federation realm object '' does not exist.

Steps to reproduce behavior
See actual behavior description above for use cases and steps to repro.
What is the version of the Cmdlet module you are running?
2.2 (also seen in 2.1)
Which operating system/environment are you running PnP PowerShell on?

[ X] Windows
[ ] Linux
[ ] MacOS
[ ] Azure Cloud Shell
[ ] Azure Functions
[ ] Other : please specify

@calebmil have you tried -UseWebLogin instead of -Interactive?

Closing as no response.


Cannot edit in "Open Changes" diff-view

VSCode Version: 1.42
OS Version: macOS Catalina 10.15.3

Steps to Reproduce:

Open a file with changes
Press on the "Open Changes" icon
Try to edit either the left or the right side

Expected behavior:
Both sides of the diff-editor are editable
Actual behavior:
Neither side is editable.  Both editors are read only and display a "Cannot edit in read-only editor" tooltip

Does this issue occur when all extensions are disabled?: Yes

Not only did I disable all extensions but also deleted all settings

The title of the diff says (Index) - this means you have staged the changes, and you are diffing the staged changes against the head revision
You can never edit the left side as this is a read only file from the git history
You cannot edit the right side because the changes are staged - you need to edit the working copy and stage those changes as well, or unstage and edit the file


Feature Request: Convert impls to methods

Is your feature request related to a problem? Please describe.
So I'm not even sure if this can be implemented, but in the example, there is a struct:
#[derive(Debug, Clone)]
pub struct Point {
    pub x: f64,
    pub y: f64,
}

Say we had a corresponding impl
impl Point {
    pub fn norm(&self) -> f64 {
        (self.x * self.x + self.y * self.y).sqrt()
    }
}

Describe the solution you'd like
In the binding, this impl could be converted to
class Point {
  final double x;
  final double y;

  Point({
    required this.x,
    required this.y,
  });

  Future<float> norm() {
    [[link to norm implementation]]
  }
}

Describe alternatives you've considered
I don't know how feasible this is, especially with using rust methods in ffi, but you can actually just turn them into regular functions like this:
pub fn point_norm(p: Point) -> f64 {
    p.norm()
}

Additional context
This is just a thought though, and I'm happy to be proven wrong :)

Yup, will do when I find the time :) Awesome project by the way, I've been eagerly waiting for something like this to finally come around

Thank you!
Before this is implemented, we may use the alternative way you have suggested. It is a bit longer, but you know, C programmers always write down that long form ;) (I just mean the length of writing function names, but this package is definitely safe unlike C)

Bumping this so it doesn't get locked.
I think this could become even more interesting once #243 is implemented.

Bump

Bump

Being implemented in #543


Consolidate the initials in the bubbles

Until a better options comes out, we are defaulting to the bubbles view for the cards.
We need to curate the initials, to make sure they are the best options and there are no clashes between pages.

It seems that the avatar (bubble) accommodates comfortably max 2 chars/letters.
We can add the option to specify such initials, or otherwise use initial letters of each word.
The "automatic" option (i.e. pick initials of each word) work for most sections.
Problems arise with long named sections, for which we should manually specify the short version:
Variation and Genomic Context
Mechanisms of Action
Pathways and Systems Biology

We could map as:
Variation and Genomic Context => V
Mechanisms of Action => MA
Pathways and Systems Biology => P or Pw to differentiate from Phenotypes?
Phenotypes => P or Ph or Pt to differentiate from Pathways (see above)?


smoothing llvm to make it more mergeable with master

Since llvm and master have diverged this far, some preprocessing on llvm is necessary which aims to be cognizant of what happened on master. This should pave the way for an eventual llvm => master merge.

Abandoning master-mergeability in favor of features for now.


fill a transparent heart with red color

I have a heart image which is transparent from the inner part, when I use fave-button it colors the image itself (only the border line of the heart) which's reasonable because it applies the mark on the image itself, what I need to achieve is to fill the heart with red color for the inner part too, vector image is attached.
like.pdf

I have the same issue , if I use  .setImage(image , for: UIControl.State.selected) it just puts the changed image inside the red outlined image

Did anyone resolve this?


Support for polyhedron edges and more interface

This PR introdces features requires by the optimal construction method in sch-creatot

add extraction of the list of edges from the output file of qconvex.
make the radii of STP BV accessible after the object has been built.
add some interface to vector3T

This PR is created on the base of https://github.com/jrl-umi3218/sch-core/pull/42 and I am fixing the comments received there


replace "hsv" format by "hsl" + add "hslArray" format

#25

Hi Damien,
Thanks for this work, good spot on lack of CSS support for HSV, that was sloppy of me!
Best, David


Upgrade kind-of to reduce security risk

Upgrade kind-of dependency as the current versions in use (3.2.2, 4.0.0) have security vulnerabilities (Improper Input Validation in utils-extend, Type checking vulnerability in kind-of, etc)
https://www.npmjs.com/package/kind-of - the latest version is 6.0.3

From what I can see, the vulnerable versions of kind-of are only used by our dev-dependencies, not our direct dependencies. So, this is not a critical issue.


fix: minor touchup & prettier

Using prettier for YAML format, minor other things.

Thanks, I should start using prettier 😅


New CloudSlang runner

This pull request builds on top of #1491 - it includes some improvements and style changes.

Allow user to specify inputs as action parameters. This way it's consistent with other runners - 857a829d661801996ac301ba9f2a4a538a0238d7
Use standard entry_point attribute to point to the flow file instead of using custom flow_path runner attribute. This way it's consistent with other workflow runners (action chain, mistral) and using relative path now also works since entry_point is resolved inside the runner container service. - ca3704e68b0845dea37bde6e7d9b25e85e3d2f59
Add a note to the docs that this runner is currently still in an experimental phase.

Since it is experimental, should I add the experimental flag in the runerrsregistrar?

@orius123 I think it's fine to skip that since if you add experimental attribute this means the runner is not registered by default when running register-content script and user needs to explicitly run register-content script with "--experimental" flag.

Alright, I've merged initial support into trunk - thanks!
Feel free to open new pr(s) for documentation and other updates if needed.

Thanks! :fireworks:
We will.


[Proposal] Implement Database from Json files using Data Driven Programing

About a month ago i did this script for a personal project, i think this can match any case where you make a data driven approach, using this approach, creating a new item, skill, or even maybe enemy could be as easy as adding it's data structure to a Json file.
How it works: there's a const value in the script currently pointing to res://game_data/ folder, this could be changed. but inside this folder you place subfolders with the names of different categories (in my case these was: items, perks, fighter_classes, etc) and inside every folder you place whatever quantity of json files with any name you like, these files have only 2 requeriments:

the file must be an array, even if it only has 1 or 0 objects
every object inside the array must have an id property, if this id is repeated for every category, the last one readen will override the previous one.
This is an example of how an Item structure looks for my game

After the files are loaded, the Node having this script attacked to will have all this information on a Dictionary called data. this variable has a property member with the name of every folder on the main directory, and from there you can access every object on the json file with the id provided on the json file, so for example to access to the "Photon Gun2" weapon you should use the path data.items[2]
The filter_data method: the script also has a filter_data(source, criteria) tool that will gather from the objects on the database those who matches a certain criteria. for example this line of code:
filter_data(data.items, {type="BARRIER"})
will return all the items that can be equiped on the BARRIER slot.

Which problem does this solve in this project?
We already use Godot's Resources system to store data, which is built just for that, used throughout the engine, is well-tested, and optimized.
I'll need some really good arguments to maintain our own system and to lose the ability to edit data in the inspector.

I definitely agree that Resources are a far better approach for Godot projects (especially demos like this one).

Mainly, that json files are faster to read and edit, you dont have to lookup for nodes and/or resources on the file system or opening an scecific scene to find and change what you want to change.

that for example how champions and heroes on league of legends are done

They probably have some tools that serialize the data. I'd be really surprised if the designers balanced the characters from JSON instead of using some UI while the game is running.

json files are faster to read and edit

Maybe for a developer like you who's used to working with JSON. I don't think so in general: a folder with a flat structure of text files, which is exactly what items are in the game, is just as easy to edit.
And contrary to JSON Godot recognizes the format and lets you edit files from the inspector as well, from nested inspectors...
As you say yourself:

I agree this is not the most user friendly

So it's not workflow-friendly either.
This is an open source project, that we're building so the Godot community can use it and developers of all horizons can join and contribute. We should avoid adding dependencies on external tools and making design tasks less accessible to designers.
As I said above, you need strong arguments for us to ditch a well-tested, built-in, optimized system in favor of doing our own from scratch. For now, I'm not convinced at all. I only see drawbacks.

I understand that this is an educational projects for Godot but when developing for a game that want to be released, usually (often) you need support from backend, especially if you want some online feature ( multiplayer? buy items? score ladder? ). For this you will connect to external services, and JSON is a pretty viable way (the best if online).
Plus, (but this is my opinion) Resources are not user-friendly and/or workflow-friendly at all, at least as they are right now: It might be hard backtracking resources attached to .tscn file.
Example for this project regarding battle_template Resource:

Party member has a Resource export var (that can be ANY Resource for Godot editor).
Resources like Godette.tres and Robi.tres have a PackedScene in it. In order to find out which PackedScene they have you cannot click the scene on the editor of resource but you have to click the arrow next to the editor and click Show in FileSystem.
Accessing to the <nameCharacter>Anim.tscn will show the scene of a Position2D with Sprites and AnimationPlayers (Where will be added in the main actor scene? With the information we have from this process, we cannot know).
Battler.tscn has another resource called template and it is a Resource as well. What kind of resource?  ....
... is this workflow-friendly ?

A JSON has key->value data. it might be verbose but tells you exactly what you need and it is understandable by other services that you (most likely) will end up using

yeah, all these features you mentioned are new in 3.1
The issues i mentioned where working with 2.x and 3.0

And this is a Godot 3.1 project

All right, we could reopen this discusion if we ever find a problem with the workflow and need to figure out another easier way of doing things.


implement query and header tags

Performance:
json-minus
BenchmarkAPI-3             77253            143875 ns/op

master (f3eb4e4335)
BenchmarkAPI-3             64728            174644 ns/op

query-and-header
BenchmarkAPI-3             90836            153767 ns/op

No idea why json-minus is faster than master. Anyway, this PR does not bring any significant slowdown which is good,

ltgm


Verify LDBC100 Shortest Path query results

Currently on the benchmark q37 |  q38 |  q39 |  q40 are failing.
Need to verify after running on Neo4j the query results.
Link to failed queries: https://github.com/kuzudb/kuzu/actions/runs/5594256913/jobs/10229096019#step:6:430

I ran the queries on Neo4j v5.2.0 to confirm the results, it is taking too much time for path length 30 so I had to reduce it to length 2 and 3.
The current master branch's results don't match results from Neo4j.
Neo4j execution:

Current master branch results:

My branch results (nTkS scheduler):

Queries run on LDBC-100, difference in the results:
Neo4j | Kuzu (master branch) | Kuzu (nTkS)
Query: MATCH (a:Person)-[r:knows* SHORTEST 1..2]->(b:Person) WHERE a.ID = 94 RETURN count(*);
2070 | 2071 | 2070
Query: MATCH (a:Person)-[r:knows* SHORTEST 1..2]->(b:Person) WHERE a.ID = 933 RETURN count(*);
4763 | 4765 | 4763
Query: MATCH (a:Person)-[r:knows* SHORTEST 1..3]->(b:Person) WHERE a.ID = 94 RETURN count(*);
66396 | 66428 | 66396

Reran the queries  and the results are now matching between kuzu and neo4j

Will put in a PR to re-enable queries


not easy to tell difference between "offer help" and "need help"

when I edit a post, though I can select "offer help" or "need help" it does not reflect on the resulting post

same observation on the "Help Board", not easy to tell "offer" or "help" for each post

propose a prominent icon on the post digest (below icon is for demonstration only)

@CamilaArias

@ddveloper . in edit post we can see whether the post is Offering help or Requesting Help. Please see if the below explain your concern.  if it is not , we can see it as issue

on the help board, you can choose all posts (requesting help and offering help ) or you can select requesting help

the picture above, i think it is offering help

just realize we have home page entrances user can choose "offer help" or "request help", so we may not need such a prominent icon, it could be just me but I think the "offer help" and "request help" should be much easier to access (like a label or icon on each post, or extract the "offer help / request help" option out of the Filter, so user can switch the view by single click instead of multiple clicks.

my bad @adorapham , I think you're right, this is more like for improvement, close this for now

@ddveloper , that is fine, testers run into the same situation many times :)

@ddveloper we have designs to implement this in the post card, but next time feel free to move the ticket to the new UI/UX Feedback project so we can tackle it :D


Standard docker images

Hey, thanks for these addons, they work great!
I recently moved from HAOS to the docker and so I lost addons on the way. I got these addons working as standalone docker services with the following services, but I thought that other people could want to do the same and perhaps its better to publish these images with the python entrypoint rather than the HASS supervisor one.
  wyoming-microsoft-stt:
    container_name: wyoming-microsoft-stt
    image: "ghcr.io/hugobloem/amd64-wyoming-microsoft-stt:latest"
    restart: unless-stopped
    environment:
      - TZ=${TZ}
    entrypoint:
      - /bin/bash
      - -c
      - |
        python3 -m wyoming-microsoft-stt \
          --uri "tcp://<IP_ADDRESS>:10300" \
          --subscription-key "${AZURE_SPEECH_KEY}" \
          --service-region "${AZURE_REGION}" \
          --download-dir /data \
          --update-languages \
          --debug
    ports:
      - "10300:10300/tcp"
  wyoming-microsoft-tts:
    container_name: wyoming-microsoft-tts
    image: "ghcr.io/hugobloem/amd64-wyoming-microsoft-tts:latest"
    restart: unless-stopped
    environment:
      - TZ=${TZ}
    entrypoint:
      - /bin/bash
      - -c
      - |
        python3 -m wyoming-microsoft-tts \
          --uri "tcp://<IP_ADDRESS>:10200" \
          --subscription-key "${AZURE_SPEECH_KEY}" \
          --service-region "${AZURE_REGION}" \
          --download-dir /data \
          --update-voices \
          --debug
    ports:
      - "10200:10200/tcp"

Hi thank you for sharing this.
I have added Dockerfiles to each of the individual repositories: wyoming-microsoft-tts and wyoming-microsoft-stt. When a next version is released these packages should be available from GitHub packages.


Add Dockerfile to run wiremock. Standalone mode

I've pushed it to Dockerhub (under gabrielpjordao/wiremock) as well. It would be interesting if you could push it with the "original" username, though.

I think a Docker configuration for WireMock is a great idea, but I'm hesitant about keeping one in with WireMock itself.
I think deployment wrappers (and generally things that yield new build targets) ought to have their own release cycle, the main reason being that they can then be freely maintained by someone expert in that technology. I'm not particularly Docker literate, hence my reluctance to fold maintenance of a Dockerfile into WireMock's core.
There are a couple of WireMock Docker projects out there already. It'd be really great to see one of these become the focus of attention and therefore be kept up to date.


Migrate to Embassy S3

We have done our development to support file uploads to Embassy S3. There is a pending ticket with storage team with regards to access controls and CORS configuration. We are currently held up waiting for the completion of the required changes by the storage team.

Update from VAC - Storage Team are super busy with the DC move again, so there will be delay in setting this up.
/cc @mcourtot

Embassy migration is working. Check-in is done in Embassy_Integration_2 branch. Master branch and the deployed application is still connecting to AWS. Next step would be to work on the covid-utils CLI tool to migrate to Embassy S3 so that it creates upload areas in Embassy S3. We can then merge back Embassy changes to master and re-deploy.
/cc @mcourtot , @tburdett

Closing this ticket and will open a new one for covid-utils CLI tool changes


⚠ ClamAV has degraded performance

In 109878f, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 71 ms

Resolved: ClamAV performance has improved in 569cec3 after 6 minutes.


Fix all missing copyright notices at once

This issue is imported from pivotal - Originaly created at Jul 19, 2019 by bstrooband
There are a couple of places where the copyright notices are missing from the code. To prevent keeping this from returning in reviews I think we should automate this task to prevent this unnecessary overhead.
Could we use the year of first publication (a fixed year) because then we could automate this task? I would suggest 2014.
/**
 * Copyright 2014 SURFnet bv
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

@thijskh what do you think about this? (bstrooband - Jul 19, 2019)

Fine to add to all files with a fixed copyright year (Thijs Kinkhorst - Jul 19, 2019)

But what about new files? They should reflect the year they are created right? It feels really counter-intuitive to set them with a year from the past.
Also, what should be the copyright year for the files currently not 'tagged' with a copyright? The first Github tag of EB (1.0.0) is from march 2011. But development might have started at an earlier point in time? (Michiel Kodde - Aug 22, 2019)

The year really does not bear any significance and files are part of the total product.
Fine with me to put "2010" everywhere (year of first commit). Or the year the notice was added to the file (so a notice added today lists 2019). But please no updating of years after that. It serves no purpose and pollutes the git history. (Thijs Kinkhorst - Aug 23, 2019)

Updated the year to 2010 (bstrooband - Aug 27, 2019)


Switch to version 5.1 Elasticsearch

This just works!

Codecov Report

Merging #107 into develop will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           develop   #107   +/-   ##
======================================
  Coverage      100%   100%
======================================
  Files           74     74
  Lines         2014   2014
======================================
  Hits          2014   2014

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 8acf74c...ceb85d7. Read the comment docs.

👍


Getting an error `parse_options': invalid option: --max-issues (OptionParser::InvalidOption)

ruby-2.1.1/gems/github_changelog_generator-1.3.11/lib/github_changelog_generator/parser.rb:108:in `parse_options': invalid option: --max-issues (OptionParser::InvalidOption)

seems like --max-issues option doesn't work.

There's not been a release since March 21, that's why

@aaronmcadam you're absolutely right. It's time :watch:
@deezahyn I will release new version in a seconds. Please, update gem few minutes later!  :wink:

Thanks @skywinder, hope this will allow me to use this gem with my longer-running projects!

Please, welcome 1.4.0!

welcome 1.4.0 !


Configure global concurrency

Solve issue where deploy job from a concurrent workflow run takes the concurrency lock before the test job of a run was able to lock it. Which meant tests weren't being executed against the actual assets relevant to their commit.

Not sure but the Deploy to EKS job here seems it may have cancelled my EKS / pytest run here: https://github.com/didx-xyz/aries-cloudapi-python/actions/runs/10351777014/job/28651869843?pr=975

Ah, yes it would have because that job was still using the old concurrency group so the new workflow run will have interfered.


Word layout switcher for users with > 1 keyboard layout.

Description of the new feature / enhancement
Hello! It would be great to have ability to change the layout of latest written word and change layout for highlighted text.
As English is not my first language, I use my local layout a lot. Sometimes I start to write in one language but forgot to switch layout. It is not necessary to make it automatically. Just to revert what was already written.
Scenario when this would be used?
Power Tools is the best place for this. This program is small and perfectly fit. With chosen hotkey users will use it a lot. It will bring more user from over the world with trust-able source as PowerToys.
Scenario 1: I am not looking at screen while typing. I wrote: 'Руддщ Цщкдв!', but I wanted  to write 'Hello World!'. Now i need to delete and write again. I want to highlight text and automatically transform.
Scenario 2: I am noticed that word I am writing in another layout. I wrote: 'Руд', but I wanted  to start with 'Hel'. I press hotkey and it transform current word to correct one 'Руд' -> 'Hel'
Supporting information
There are couple old, outdated and big project that use a lot memory: dotswitcher, puntoswitcher etc https://alternativeto.net/software/punto-switcher/

have duplicates themes


feat: bump axe core to 4.2.1

Summary

bumped axe core to 4.2.1
updated snapshots

4.2.1 version has greatly improved vs 4.0.1 with major fixes and greater coverge.
I would like to start using it in our team but the old version 4.0. 1is showing false negative issues for 'button-name' and 'svg-img-alt' rules that were fixed in 4.2.1.
I would really appreciate it if this change gets merged.

Hi @nickcolley ,
I would really appreciate if you consider to merge this library update and bump jest-axe.
We keep seeing the issue from axe-core old version (august 2020 version) that is just an incorrect axe core rule that was fixed before.  Example(removed some real names from classes):
    Expected the HTML found at $('.test-class') to have no violations:

    <svg xmlns="swgUrl" focusable="false" role="img" fill="currentColor" viewBox="0 0 24 24" class="test-class">

    Received:

    "svg elements with an img role have an alternative text (svg-img-alt)"

    Fix any of the following:
      Element child title is empty
      aria-label attribute does not exist or is empty
      aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty
      Element has no title attribute

When test-class svg has a title that fix such violation:
<svg xmlns="swgUrl" focusable="false" role="img" fill="currentColor" viewBox="0 0 24 24" class="test-class">
<title>Hide chart</title>
<path d="some correct path">
</path>
</svg>

This issue is not reproducible with axe-core 4.2.1 and the current MR would be really helpful for me to unblock usage of jest-axe.
Thank you in advance for your time!

Running CI for this and will merge and publish as a breaking change if it succeeds. (Since new rules result in builds changing, small breaking change for some people)...


Excluded annotated methods not ignored in Sonar

This is related to Issue https://github.com/Kotlin/kotlinx-kover/issues/576.
Applies to version 0.8.3 and 0.9.0-RC.
I have Kover XML reports setup with Sonar.
Unfortunately excluding @Composable functions are not excluded in the Sonar coverage report.
If ignored, the @Composable is not added to the Kover XML report.
However, adding a simple Data Class in the same file causes Sonar to understand that this function should be ignored. Adding the Data Class adds the file to the XML report because of the uncovered Data Class.
data class UIData(
    val someData: String
)

@Composable
fun MyComposable() {
    Text("some text")
}

In the other issue, you had asked them if the XML report is used with Sonar. For us, yes, we are using the xml report path with Sonar.
Thanks!

Unfortunately excluding @Composable functions are not excluded in the Sonar coverage report.
If ignored, the @Composable is not added to the Kover XML report.

Hi, do I understand correctly that the marked function is missing in the xml report, but it is still displayed in Sonar?

Hi @shanshin , thanks for looking into this. Could you point me to where the XML report generation tool is used in the Kover codebase? I'll close this comment and try to see if there's a way to override the behavior internally.
Thanks

@lawfulpepper, https://github.com/JetBrains/coverage-report/tree/master/report-builder/src/jetbrains/coverage/report


Disk space and number of items in the store

This PR introduces two new features:

It adds the command line option --obuilder-prune-item-threshold which specifies an upper bound on the number of result items/steps which will be held in the obuilder cache store.  It is possible to specify both --obuilder-prune-threshold and the new  --obuilder-prune-item-threshold at the same time which will limit both the number of items and the maximum percentage free and it will prune until both conditions are satisfied.  It is noted that some stores perform badly when the number of items becomes very large.

The free disk space calculation is now passed to the OBuilder Store via Builder.df rather than using ExtUnix.All.statvfs to determine the amount of free disk space.  As a consequence, we do not need the variable t.root.  On macOS with OpenZFS, statvfs (and macOS's own df) returns the space used by the current ZFS volume only and does not include the sub-volumes.  Instead, we must use zpool to get the actual space used.  I have extended this to BTRFS as well but the difference is negligible.

@mtelvers you might want to grab https://github.com/ocurrent/ocluster/pull/230/commits/aabae0ff48beb29e0fa13c96896bff5b7998ebfc.
The packages require different OCaml versions and that is causing problems.
We can safely move everything to 4.14 since we are the only users of the libraries at the moment.
Ideally current_cluster and ocluster-api could be made to support older versions of OCaml if that was useful. @MisterDA moved the other components to 4.14 to take advantage of Windows bug fixes


Slow Rendering / Processing in Browser

Describe the bug
A staff member is working on reconciling names in a larger one of our library's digital collections (total of 5401 records, note there are also LOTS of columns). We are using this method of reconciliation. While I can work with this collection easily on my Mac (with OpenRefine 2.7, Chrome, and Java 9.0.1), this work is extremely slow on our staff member's computer.
To Reproduce
Steps to reproduce the behavior:
Faceting is extremely slow. It takes the computer a very long time to go from one selected value to another (or to unselect a faceted value). Selecting a reconciliation match also takes a long while to process. We updated Java to the most recent Java version to try and improve speed and things actually got much slower.
Expected behavior
I would hope that version 3.0 could function at the same speed as version 2.7 (what I continue to run on my own machine). Timing the same functions (faceting, etc.) using both versions, we've determined that the speed is 4 times faster with the older 2.7 version.
Desktop (please complete the following information):

OS: Windows 10
Browser Version: Chrome 19
JRE or JDK Version: Java 9.0.1

OpenRefine (please complete the following information):

Version: OpenRefine 3.0 Beta

Datasets
Volunteer Voices
Additional context
I am hoping this staff member will be able to continue to help me with library metadata projects, but this will not be possible if I cannot make her work slightly more efficient. We have tried setting up a Mac with similar settings to my personal laptop, but it is also slow. Ideally this staff member would like to continue working on a Windows machine.

Thank you for this report. We recommend to use Java 8 with OpenRefine. There are known issues with Java 9. Could you let us know if the problem persists with Java 8?

@mlhale7 Is it 64bit Java on that staff computer ?  Do java -version
Can you attach the support.log file in the OpenRefine folder to this issue ?  Thanks.

@wetneb - Is there a particular update number we should focus on? The staff member's permanent computer (not the one she was working on) has Java 8 Update 191. It is also extremely slow.

Java 8 Update 191 should be fine.
Have you tried version 2.8 too? Does it also have this speed issue?

I tried your Voices dataset in 2.7, 2.8 and our Trunk version... all of them loaded without problems using Firefox & Chrome latest and "refine /m 4096m" using jdk1.8.0_151
You have 322 columns in this dataset and I can easily slide left to right in our datagrid.
My hunch is that there is not enough memory provided, for your Facets to enjoy a bit of speed.  I see your doing lots of mass edits and sometimes those involve a Facet, and other times you are reordering those 322 columns.

@thadguidry - I can confirm that the Java is 64 bit. Unfortunately I have been unable to locate the support.log file. Can you provide any additional instructions on locating it (Googling has failed me so far)?

@mlhale7 It is located under the OpenRefine folder itself...where the refine.bat file is located.

@wetneb - We have also tried 2.8. I was going to have her install 2.7 since that works best on my computer, but I'm not sure if this will help or not. I can easily work with the data on my computer with 2.7, but her computer using 2.8 is incredibly slow.
@thadguidry - I did increase the memory allotted to OpenRefine but that also didn't help. I'm not able to access this staff member's computer today to check on the file you mentioned and she is not confident in retrieving it herself. I'll see if I can try again tomorrow.

@mlhale7 oh okay so it's slow on her computer no matter which version you try - sorry I thought there was a specific problem with a version (your first message was clear, I just read too quickly).
If she has any extensions on her Chrome it would be worth trying without them, maybe?

I wanted to follow back up on this and share that when I updated to OpenRefine 3.1 on my own Mac computer it actually couldn't even save changes on my project. I would make changes and then close out as normal and then the next day all of my previous changes would be gone. I also was unable to export a full Excel spreadsheet with the data and changes to try and save my work in a roundabout way. Upon exporting, I found that many of my columns were removed and that the last column was filled with the text "ERROR: TOO MANY COLUMNS" (Image below). I have since reverted to 2.7 and it has been able to save the changes I've made and export the complete set of data as an Excel Spreadsheet. I understand that this project is atypical (tons of columns), but it seems odd that the newer versions of OpenRefine can't handle projects that the older versions can. I lost two days of work from upgrading. Please let me know if sharing additional information is helpful.


About pre-trained model

Thank your great work!
The superpoint_bn.pth and superpoint_v1.pth provided by you have some difference? I want the magicpoint parameter trained from synthetic dataset , which I can train in my dataset rather COCO. Could you share it ?
Thanks!

Hi, both superpoint_bn.pth and superpoint_v1.pth are superpoint model, not magicpoint model. Training magicpoint is much easier than superpoint, have a try!

感谢回复，我用您的代码训练第一步，人造图形训练magicpoint，怎么到20个epoch左右验证损失就收敛了，但是原论文说magicpoint训练了200000个iteration，然后给coco打点，打出来的点效果并不理想。还望解答，谢谢。

感谢回复，我用你的代码训练第一步，人造图形训练magicpoint，怎么到20个epoch左右验证就收敛了，但是原论文说magicpoint训练了200000个迭代，给coco打点，打出来的点效果不太理想。还望解答，谢谢。

I also tried using magipoint to generate keypoints. The loss has converged, but there is no way to generate reliable keypoints for them in actual images. Even if the threshold is changed to 0.001, it has no effect. If you find any problems, please let me know. Thank you.


Not Working on Android

FAILURE: Build failed with an exception.

What went wrong:
A problem occurred configuring project ':webf'.

Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl.
Namespace not specified. Specify a namespace in the module's build file. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace.

 If you've specified the package attribute in the source AndroidManifest.xml, you can use the AGP Upgrade Assistant to migrate to the namespace value in the build file. Refer to https://d.android.com/r/tools/upgrade-assistant/agp-upgrade-assistant for general information about using the AGP Upgrade Assistant.

Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.
Get more help at https://help.gradle.org.

BUILD FAILED in 2s
Running Gradle task 'assembleRelease'...                            3.1s
Gradle task assembleRelease failed with exit code 1

Same issue facing.

same error


add ssl support to zmqserver

adds arguments --certfile and --keyfile to be passed to HTTPServer.
Updates meshcat SHA

Codecov Report

Merging #66 into master will decrease coverage by 1.79%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #66      +/-   ##
==========================================
- Coverage   89.66%   87.87%   -1.80%
==========================================
  Files           8        8
  Lines         726      726
==========================================
- Hits          651      638      -13
- Misses         75       88      +13

Impacted Files
Coverage Δ

src/meshcat/path.py
95.23% <0.00%> (-4.77%)
:arrow_down:

src/meshcat/geometry.py
87.95% <0.00%> (-3.62%)
:arrow_down:

src/meshcat/commands.py
92.68% <0.00%> (-2.44%)
:arrow_down:

src/meshcat/animation.py
77.77% <0.00%> (-1.02%)
:arrow_down:

src/meshcat/tests/test_drawing.py
96.95% <0.00%> (-0.61%)
:arrow_down:

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 7046ca9...d899314. Read the comment docs.


[JENKINS-53998] Don't load users just to get current user name

Untested.
JENKINS-53998

@daniel-beck I checked if the feature continues to work with both authenticated users as well as with SYSTEM user.

authenticated users as well as with SYSTEM user.

Anonymous might be interesting too.

It works also with anonymous user.


Conditional/Branching composite HTTP filters

Today filters can be configured in two ways: a per route configuration that is used when the incoming requests match a specific route entry and a default configuration that is used whenever no per route configuration is used.
One problem with this approach is that if you want to use a specific filter configuration for traffic that might be a sub match of many route entries, all of these route entries need to be duplicated to add the per route config. For example, you can imagine a large route table existing that primarily looks at :path, and wanting to add specific filter for GET requests. Today this would require injecting a route entry for each :path + :method == GET into the route table.
One way to make this easier would be introduce a filter (or a series of filters) that allows resolving the filter configuration + instantiation of a filter without relying on the route table. For example:
message CompositeFilter {
  message FilterMatch {
    config.common.matcher.v3.MatchPredicate match = 1;
    google.protobuf.Any typed_filter_config = 2;
  }

  repeated FilterMatch = 1
}

which follows the semantics that each FilterMatch is attempted. The first matching entry will indicate the filter that should be instantiated, while if nothing matches the filter does nothing.
Not only would this help simplify the route configuration, it would also make it possible for ECDS to configure different behavior based on the matching request without having to push this logic into each filter and without having to be accompanied by an RDS change to update the per route filter config.

@htuch @mattklein123 Thoughts on this from an API perspective? I think this would address some limitations of the current per filter config approach

@snowp in general I agree we should do this, and also include generic disable support. I think this is a dup though. I will try to find the duplicate(s) later. cc @kyessenov who I think has opened similar issues.

https://github.com/envoyproxy/envoy/issues/11690 also wants different order of filters.

#11690 is similar but the key difference is that this issue proposed making this matching logic independent of the route selection. I think this approach is better for certain use cases (for more cross cutting concerns than route resolution) but there would be value in having a per route filter order as well.
Implementation wise this composite filter might be easier, since there are fewer edge cases around what happens when the resolved route changes.

Here is the generic disabling issue I was thinking about: https://github.com/envoyproxy/envoy/issues/8669. I think it would be good to work that into this proposal.

(Basically I would make FilterMatch contain an embedded oneof that allows for: 1) inline config, 2) ecds config, 3) disable.
Perhaps (2) is not needed and could be added later.

I wonder if the filter match predicate and disablement is something that should be included inside ECDS, e.g. making the composite filter to be another filter. That's probably least disruptive. Route overrides with ECDS also need https://github.com/envoyproxy/envoy/issues/12575 to be fixed.

Yeah I think there are multiple ways to go here. @snowp @kyessenov can you collaborate on a design to make sure we are covering as many cases as possible with the next set of changes?

Agree on the direction. Re: ECDS, I think this is a good idea or we need a real FCDS. What this proposal does is push a bunch of matching and routing logic into the filter chain, which today can only be loaded dynamically via LDS or (in the proposal) ECDS. LDS with delta updates might be some temporary relief here, but it's logically a bad fit, as request routing has nothing to do with listening.

Another structural approach that could be taken is to organize the filter chain as a tree, rather than as a list.

If this was added as a regular filter, in theory they could be composed to create a tree structure, though we might want that to be first class rather than via a filter if that's the direction we want to go in.
The feature that I'm trying to unlock here is to have a management server be able to have a lot of flexibility to influence the request/response processing without being coupled with the management server that is providing routes/listeners/etc.
An example of this is connecting to an optional management server that might introduce faults/chaos/etc. into the stream. By having it only influence a single filter config, its uptime requirements are now much lower than that of the management server that provides more critical configuration updates.

IMO the use case makes sense to me. I don't feel very strongly about whether we build this into ECDS itself (it could have matching, disable, etc.) built in or it's a composite filter. I guess if you pushed me I would rather have this be built in.
Given that we all agree on the high level direction can @snowp @kyessenov collaborate offline on an API proposal?

Here's a first draft I threw together: https://docs.google.com/document/d/1dOa_v1eMA4F61f0jdFkxtbcO-_TYD76oMfGoY7nzZhk/edit#
@kyessenov ptal

CC @penguingao re: selective filter enablement on internal redirects.

Use different filter configs for different requests in same route entry is a function that we've been hoping for for a long time.
We have a ugly implementation in our own Envoy branch. We just add a 'filters_config_switch_key' in HCM and compute a switch key by the config and incoming request.
Then we get per filter config from 'typed_per_filter_config' map by filter name and this switch key. This scheme lacks design and has many problems. But it's simple and just work.
message FiltersConfigSwitchKey {
     KeyBuilder key_builder = 1;
}

To update everyone on the current plan here: we're looking at splitting this proposal into a generic matching API proposal (#5569) and a dynamic filter creation proposal.
The dynamic creation or changing filter config doesn't have a dependency on the matching API, so it makes sense to split these up. This would also open up for arbitrary filters to do this without relying on the matching API.

@snowp per my comments in the doc, can we do a revamped proposal that covers the new plan (part HCM, part wrapper filter)? I think it will be easier to sort through.
The other major missing piece is the final form of the matcher config. I think the existing matcher we have is very powerful but not easily scalable (this has been mentioned elsewhere). This is a great opportunity to design a tree/trie with linear leaves matching system that can cover all the different use cases. I don't think this will be too terribly hard given what we know now and the code/config we already have. I'm happy to brainstorm more on this offline.

I am concerned that this may be tying the xDS API more closely to Envoy's architecture.  gRPC has started looking at how we can support HTTP filters in xDS, but it's difficult because the representation in the API does not match our interceptor architecture at all -- and in fact, one of the main mismatches is that we don't have an easy way for interceptors to affect the routing decision.  I fear that the changes being discussed here may make that problem worse.
I'm just brainstorming here, but as an alternative, could we consider providing some sort of better abstraction here, like maybe separating out the filters that affect the routing decision from those that want to be run only in the case of a specific route?  I'm thinking that the HCM config could include just those filters that affect the routing decision, and then the individual routes could contain a list of filters to be run only when that route is chosen.  This would allow gRPC to support the filters in the route via something like our current interceptor API, and maybe we could provide some sort of new API for plugins that need to affect the routing decision.  This approach might even eliminate the problem of having to override filter configs in routes to begin with; if all of the per-route filters are simply specified in the route itself, then there's no need to override a filter's config from multiple sources.
Another change that might help here would be to move the RouteAction out of Route so that the same RouteAction can be used in multiple Routes.  This would be helpful not only for filter configuration but also for all of the other fields that are specified in RouteAction (e.g., retry policies), which today have to be repeated in multiple routes.
@ejona86 and @dfawley may want to weigh in here as well.

@markdroth Part of the original motivation behind this proposal was precisely to not have to rely on the route configuration, but instead to perform stream matching that is independent of the route resolution as a way to configure filters. The best example in my mind is wanting to apply some specific configuration to all POST requests without having to add a new POST entry for every single routing branch.
I would expect (based on my experience with grpc-java in the past) that gRPC interceptors would be able to keep an internal map of interceptors, picking which one to use based on the result of matching the incoming stream. I'm no expert on gRPC though, so I could be totally wrong. This would be conceptually similar to what I'm suggesting here, though in the Envoy case I was thinking of integrating it a bit more with the FilterManager (e.g. a filter can inject a filter after itself in the filter chain the stream hasn't passed the current filter).


fill added in algo's

Hi please have a look at this PR, if you want any modification please let me know.


feat: add ethers-cli and support abigen

Motivation

Issue existed #3
For me abigen has been the most used ad-hoc functionality from ethers-rs. Instead of maintaining a messy boilerplate code to generate bindings for various contracts, I finally decided to implement a simple CLI for it.
Solution

Dependency added is gumdrop as suggested in the above issue.
Usage
$ cargo run --bin ethers_cli -- --help
$ cargo run --bin ethers_cli -- abigen --help

Pending commands

[x] Generate type-safe bindings
[ ] Send ETH
[ ] Send ERC-20 tokens
[ ] Wrap ETH
[ ] Unwrap ETH
[ ] Sign data
[ ] Compile solidity contract
[ ] Deploy solidity contract
[ ] Account info
[ ] Tx info
[ ] Wait for pending transaction

Closing this to keep the PRs clean, feel free to re-open if you start working on it again! Thank you.


require.resolve() should not circumvent bundle splitting

Do you want to request a feature or report a bug?
Bug.

What is the current behavior?
require.resolve causes a strong dependency when one is not needed.
If the current behavior is a bug, please provide the steps to reproduce.
require.resolve('./foo'); import('./foo'); causes the ./foo file to be included in my bundle even though I have no hard (synchronous) dependency on its code.

What is the expected behavior?
Without the require.resolve call ./foo gets put into its own chunk so that bundle splitting works as expected. I expect this behavior to be maintained even when I add a require.resolve call.
If this is a feature request, what is motivation or use case for changing the behavior?
Please mention other relevant information such as the browser version, Node.js version, webpack version and Operating System.
Webpack 1.14.0.

There is a require.resolveWeak for a weak reference.
require.resolve creates a strong reference because it could be used to access the modules.
const id = require.resolve("module");
const fn = __webpack_modules__[id]; // <- must be available!

// my own module system
const m = { id, exports: {} }
fn(m, m.exports, __webpack_require__);

I see. That's unfortunate because in Node there is no require.resolveWeak so there's no way to express it in a concise way cross-environment. I guess that's just an ecosystem issue and not a bug.


Remove Basics of Web Development from the ASP.NET TOC

https://github.com/aspnet/Docs/issues/45

I can submit a PR for this shortly

Submitted PR #608


Bundle arithmetic not working with "map" config

Repro: https://github.com/cnshenj/sysbuilder-test
Run npm install in root directory, then go to build directory and run node build.js.
Error:
Unhandled rejection Error on fetch for bar.js at file:///E:/sysbuilder-test/app/bar.js
Loading index.js
Error: ENOENT: no such file or directory, open 'E:\sysbuilder-test\app\bar.js'
at Error (native)
index - bar (this is what I prefer and expect) and index - bar.js hit the same error.

Just found out for those modules that will be excluded, they still need to be present to be traced. This has 2 problems:

Analyzing modules that will not be included, making the build process longer.
For modules that are not present locally, builder still tries to analyze them but will fail to calculate canonical name.

Perhaps try externals: ['bar'] here instead?

"externals" solved the problem


Needed option:  columns.escape  |  boolean

So that users dont have to define their own "render" function to safely HTML escape the text being inserted into the cells, you should provide a simple boolean option that can be toggled to true on the columns object.
Then internally, if the escape option is on, use a simple escape algorithm:
var entityMap = {
 				  "&": "&",
 				  "<": "<",
 				  ">": ">",
 				  '"': '"',
 				  "'": ''',
 				  "/": '/'
 				};

		var escapeHtml = function(string) {
		  	return String(string).replace(/[&<>"'\/]/g, function (s) {
		    	    return entityMap[s];
		  	});
		}

As it is now, I have to define a render function like this:
	/**
		*  This can be used as a columns.render handler
		*/
		var cellEscape = function(data, type){
			if (type=="display"){
				return escapeHtml(data);
			}
			return data;
		};

There is a built in text renderer which can be used to do this rather than needing to define it yourself.

Cool thanks for the reply!  Might be nice to mention that in the columns.render documentation.

Yup - good point. The examples, manual and reference all really need to link to each other a bit more. This one is a start.
Will be deployed to the site soon.


Replication Interval

"Because the primary and secondary databases are synchronized using asynchronous replication, the failover may result in data loss. " What is the replication interval?
[Enter feedback here]

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

ID: e22db66f-542f-bc95-c232-fe775754a015
Version Independent ID: c08d859c-0725-7944-ef32-8ee13ccbf8fa
Content: Auto-failover groups - Azure SQL Database & SQL Managed Instance
Content Source: articles/azure-sql/database/auto-failover-group-overview.md
Service: sql-db-mi
Sub-service: high-availability
GitHub Login: @anosov1960
Microsoft Alias: sashan

@hnst-grl123
Thank you for reaching out. At this time we are reviewing the ask and will provide an update as appropriate

Hi @hnst-grl123 The potential data loss is known as Recovery point objective (RPO) is 5sec.
Replication is asynchronous and continuous, with latency up to 5 seconds.
For more details:
https://docs.microsoft.com/en-us/azure/azure-sql/database/business-continuity-high-availability-disaster-recover-hadr-overview
#please-close

Hi @hnst-grl123 The potential data loss is known as Recovery point objective (RPO) is 5sec.
Replication is asynchronous and continuous, with latency up to 5 seconds.
For more details:
https://docs.microsoft.com/en-us/azure/azure-sql/database/business-continuity-high-availability-disaster-recover-hadr-overview
#please-close


Add idemponent resource group command

The group command makes it simpler to ensure a resource group
exists, and that it has been cleaned up when the bundle is uninstalled.
When used in any action other than uninstall, the mixin will ensure that the resource group exists.
install:
  - az:
      description: "Ensure my group exists"
      group:
        name: mygroup
        location: westus

When used in the uninstall action, the mixin ensures that the resource group is deleted.
uninstall:
  - az:
      description: "Cleanup my group"
      group:
        name: mygroup

I have also added the ignoreError functionality from the exec mixin so
that custom user commands can handle errors.
🚨 This relies on https://github.com/getporter/porter/pull/1846. Once that is merged, I'll cut a release and we can reference the release in our go.mod.

I've updated the PR to use porter v1.0.0-alpha.7