The --auto-approve feature should be removed and replaced with --dry-run

PR #263 added an --auto-approve flag to signal some destructive actions should be applied, such as destroying and recreating resources.
I think this is a bad user experience. After all, if just ran a command to delete or sync resources, then that is what I want the command to do. Don't make me confirm that I really mean it.
An approach I would prefer would be to restore the original behaviour, but add a --dry-run flag that would simply print the commands that would execute instead of actually executing them.

Both kubectl and helm support --dry-run flags for a number of commands.

Hi!
Maybe you're talking about removing the flag from delete, right? You can use sync instead of apply in case you aren'j interested in interactivity.

Also, the point of apply is not to print commands being executed but show what's being affected. dry run does'nt help that. Maybe sync is what you want and your frustration would be from its name - apply. I'm open to suggestions to rename apply to something else to not confuse k8s/helm users, but don't expect me to just remove it! There are use-cases and conforming to kubectl/helm is not the only goal at the moment.
Removing interactivity from delete might make sense. I'd instead add destroy command that works interactively.
Do you actually need --dry-run? Or is it just that you don't like interactivity?

Okay but I won't just remove it! There're diverging use-cases that shouldn't be thrown away.
I'd appreciate if you could suggest better names for the commands you think wrong but other people think useful, and suggest addition of more low-level commands that will fit your use-cases.

No, I don't need --dry-run. It was a compromise for those who might like the interactive behaviour to remain.
How we use helmfile is for integration testing against minikube locally, and against a real K8S deployment when running on jenkins. Our plans for the future include using it for actual production deployments, too.
However, right now it is only used for integration testing during builds and called from a Makefile. We have defined a build lifecycle where tooling runs make up to use helmfile to deploy resources, then we run integration tests, and then run make down to use helmfile to clean up the resources.
It looks something like this, if this is helpful:
.PHONY: up
up:
	kubectl --context=${K8S_CONTEXT} create namespace ${K8S_NAMESPACE}
	eval `${DP_DEPLOYMENT_DIR}/bin/kube-env --kube-context ${K8S_CONTEXT} --namespace ${K8S_NAMESPACE}` && \
	helmfile --kube-context ${K8S_CONTEXT} --namespace ${K8S_NAMESPACE} sync --args --wait

.PHONY: down
down:
	eval `${DP_DEPLOYMENT_DIR}/bin/kube-env --kube-context ${K8S_CONTEXT} --namespace ${K8S_NAMESPACE}` && \
	helmfile --kube-context ${K8S_CONTEXT} --namespace ${K8S_NAMESPACE} delete --purge || true
	kubectl --context=${K8S_CONTEXT} delete namespace ${K8S_NAMESPACE} --ignore-not-found || true

@blissd Thanks for sharing your use-case!
Yeah, that's basically how I'm using helmfile. And I was planning to just replace sync in your example with apply --auto-approve, and add --auto-approve to delete, when landing the latest helmfile onto my pipeline in near future.
So, it is not that I don't understand your use-case, but there are divergence among us about what good u/x is.
Perhaps you are not going to use apply? Then, how about using apply and destroy for interactive use-cases and sync and delete for non-interactive use-cases?
If that's ok, what we need is to add a new command destroy [--auto-approve], and remove --auto-approve and the confirmation out of delete. WDYT?

From the docs, sync and apply mostly sound like the same thing, which is confusing. I'd rather they were more distinct, or merged and their behaviour differentiated by a command line flag.
For the same reason I wouldn't want to see a destroy command added. Delete should be enough.
So my suggestion is to have single commands for syncing and deleting, instead of two command with subtly different behaviours.
I'd imagine a CLI something like this:
# Sync changed releases, as determined by helm diff
$ helmfile sync

# Sync all releases. Don't use helm diff, just 'helm install --upgrade' everything
$ helmfile sync --full

# Only print commands that have side-effects,
# for the use case where changes must be validated first
$ helmfile sync --dry-run

# Delete all releases right now
$ helmfile delete

# Only print commands that have side-effects,
# for the use case where changes must be validated first
$ helmfile delete --dry-run

And then :wink: :
$ helmfile apply
No such command 'apply'

$ helmfile destroy
No such command 'destroy

Sounds good, as long as you can accept that sync --dry-run also prints a summary of affected releases at last.

A possible problem in the interactive workflow of running helmfile sync --dry-run first and then helmfile sync to commit is that, helmfile needs to read the whole tree of helmfie.yaml files twice, involving external commands({{ exec " ... " }}) and files({{ readFile "..."  It wouldn't be a good u/x when the tree is huge.
So, I'd be happy if we could also come up with a nicely named flag, that means you do want confirmation before commit.
I think that I don't have a strong opinion about making confirmation a default behavior, but I do have a strong opinion about that helmfile should works fast and nice when used interactively.

If you want to avoid processing many helmfiles twice, then perhaps instead of --dry-run add a -i or --interactive option?

I have thought about this more, and I think that every "possibly cluster altering" command should have a interactive safeguard. I believe that it is easier to add --auto-approve in an automation context (which you don't change once introduced), than remembering to type --interactive at each invocation.
We should optimize for the user experience. The machine can receive hard-coded parameters in a source-controlled script. I definitely would prefer the prompt to help me not make mistakes.
@blissd What prevents you to add --auto-approve in your Makefile driven tests ?

Nothing stops me adding --auto-approve, and I will do that. However, it is the opposite of my preference for how command-line tools should work.  Default-on interactive safeguards to CLI tools harken back to those annoying old email client messages that said "do you really want to delete this email?" I like CLI tools to do what they are told, especially when I only use them from scripts. That behaviour would optimize my user experience.
I also don't see why helmfile would require an interactive step when the other tooling like kubectl and helm don't. As I use these tools together to mange different aspects of the same resources I would very much like for them to have consistent behaviours.
Our current use case is managing K8S resources during local testing and testing on CI, both of which are non-interactive. Our future planned use case (perhaps when helmfile is a bit nearer 1.0) is to manage production deployments, too, which would be driven by something like Jenkins and also be non-interactive.
None of my use cases are interactive, so being interactive by default is no help to me.
Of course, perhaps my non-interactive use cases aren't the common ones.
In fairness, though, I've destroyed plenty of things by running the wrong command. However, an interactive step like the one in helmfile won't stop me doing that. Once you get beyond four or five releases it become too easy to miss something that you don't want affected, or so much noise that it will be ignored.
Should all of these be deleted?
Affected releases are:
  app4-test (dp-incubator/dp-kafka-streams-v2)
  app45-test (dp-incubator/dp-kafka-streams-v2)
  app5-test (dp-incubator/dp-kafka-streams-v2)
  app50-test (dp-incubator/dp-kafka-streams-v2)
  app51-test (dp-incubator/dp-kafka-streams-v2)
  app60-test (dp-incubator/dp-kafka-streams-v2)
  app62-test (dp-incubator/dp-kafka-streams-v2)
  app63-test (dp-incubator/dp-kafka-streams-v2)
  app63a-test (dp-incubator/dp-kafka-streams-v2)
  app67-test (dp-incubator/dp-kafka-streams-v2)
  app70-test (dp-incubator/dp-kafka-streams-v2)
  app71-test (dp-incubator/dp-kafka-streams-v2)
  app79-test (dp-incubator/dp-kafka-streams-v2)
  app80-test (dp-incubator/dp-kafka-streams-v2)
  app81-test (dp-incubator/dp-kafka-streams-v2)
  app82-test (dp-incubator/dp-kafka-streams-v2)
  ... lots more...

Do you really want to delete?
  Helmfile will delete all your releases, as shown above.

 [y/n]:

What's the right answer? I don't know because too many things can be altered so I can't really look at it and tell what is correct or not. I can only imagine this will be even less helpful when using helmfile with multiple helmfile.yaml files.
So for me, I suspect an interactive step won't stop the destruction of anything that shouldn't be destroyed.
I think this exhausts my commentary on the subject.

Linux CLI tools follow all sorts of conventions. rm defaults to not prompting, but many distros alias it to default to interactive. kubectl and helm don't prompt. yum does prompt. apt prompts if it needs to do something extra.
If the interactive/non-interactive flag coudl be made a top level flag (not a flag belonging to a subcommand) it would be possible to change the default with a shell alias, e.g alias helmfile=helmfile --noninteractive

@blissd Thanks a lot for taking much time to explain your thoughts!
I now believe helmfile should default to non-interactive. And I'd add helmfile [-i|--interactive] and suggest aliasing it, alias hi='helmfile --interactive' for interactive use-case and refer to it in docs if necessary.
Thanks also to @davidovich @manics for your feedbacks!

#368 is the impl for this.


Fix an error in ALTER_STORAGE_VOLUME document

Why I'm doing:
There's an error in ALTER_STORAGE_VOLUME document as stated in https://github.com/StarRocks/starrocks/issues/53993.
This PR is to fix the error in the document. This PR does not contain code changes and will not influence behaviors.
What I'm doing:
Fixes #53993
What type of PR is this:

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Does this PR entail a change in behavior?

[ ] Yes, this PR will result in a change in behavior.
[x] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

 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.


Generating quadratures

Thanks for this software!
I cannot create custom quadratures using the scheme proposed in the documentation.
See the section: Generating your own Gauss quadrature in three simple steps
I am using quadpy 0.11.4 and orthopy 0.5.3.

I've updated to documentation now. (Earlier, I'd just moved over the code from orthopy without updating the documentation.)

@nschloe thanks!


Consider using static initializers instead of a constructor with optional parameters in LayerEntry

Original comment

Actually probably not necessary


Cannot provision puppet-varnish in vagrant

My Puppetfile initializes the puppet-varnish module:
...
## Install Module: varnish
mod 'varnish',
  :git => 'git@github.com:BashtonLtd/puppet-varnish.git',
  :ref => '3.0.0'
...

Then, the install.pp definition installs the module:
### Note: the prefix 'cache::', corresponds to a puppet convention:
###
###       https://github.com/jeff1evesque/machine-learning/issues/2349
###
class cache::varnish::install {
    class { 'varnish': }
}

Finally, my configure.pp:
### Note: the prefix 'cache::', corresponds to a puppet convention:
###
###       https://github.com/jeff1evesque/machine-learning/issues/2349
###
class cache::varnish::configure {
    ## variables
    $config_file = 'cache/default.vcl'

    ## configure vcl
    varnish::vcl { '/etc/varnish/default.vcl':
        content => file(dos2unix($config_file)),
    }
}

implements a corresponding default.vcl.erb, which is required by varnish.  However, when I run the above puppet definitions (via vagrant up), I get the following error traceback:
$ vagrant up
...
==> default: Running provisioner: puppet...
==> default: Running Puppet with environment development...
==> default: Warning: ModuleLoader: module 'varnish' has unresolved dependencies
 - it will only see those that are resolved. Use 'puppet module list --tree' to
see information about modules
==> default: Warning: ModuleLoader: module 'varnish' has unresolved dependencies
 - it will only see those that are resolved. Use 'puppet module list --tree' to
see information about modules
==> default: Warning: ModuleLoader: module 'varnish' has unresolved dependencies
 - it will only see those that are resolved. Use 'puppet module list --tree' to
see information about modules
==> default: Warning: ModuleLoader: module 'varnish' has unresolved dependencies
 - it will only see those that are resolved. Use 'puppet module list --tree' to
see information about modules
==> default: Warning: ModuleLoader: module 'varnish' has unresolved dependencies
 - it will only see those that are resolved. Use 'puppet module list --tree' to
see information about modules
==> default: Notice: Compiled catalog for drupal-demonstration.com in environmen
t development in 2.52 seconds
==> default: Notice: /Stage[main]/Varnish::Repo::El7/Yumrepo[varnish-cache]/ensu
re: created
==> default: Notice: /Stage[main]/Varnish::Install/Package[varnish]/ensure: crea
ted
==> default: Notice: /Stage[main]/Varnish::Secret/File[/etc/varnish/secret]/selu
ser: seluser changed 'unconfined_u' to 'system_u'
==> default: Notice: /Stage[main]/Varnish::Config/File[/etc/varnish/varnish.para
ms]/content: content changed '{md5}73adaa45730eaad22aa78a77cd7c0554' to '{md5}bb
8b07352b460b9f8b17d117a192ad22'
==> default: Notice: /Stage[main]/Varnish::Service/Service[varnish]/ensure: ensu
re changed 'stopped' to 'running'
==> default: Notice: /Stage[main]/Cache::Varnish::Configure/Varnish::Vcl[/etc/va
rnish/default.vcl]/File[/etc/varnish/default.vcl]/content: content changed '{md5
}43f33efc867d0ecd6f2ab08878a936bb' to '{md5}f6a26098425c6ad4d2b34c8fb47d05ab'
==> default: Notice: /Stage[main]/Varnish::Service/Exec[vcl_reload]/returns: /et
c/varnish/varnish.params: line 9: $'\r': command not found
==> default: Notice: /Stage[main]/Varnish::Service/Exec[vcl_reload]/returns: /et
c/varnish/varnish.params: line 11: $'\r': command not found
==> default: Notice: /Stage[main]/Varnish::Service/Exec[vcl_reload]/returns: /et
c/varnish/varnish.params: line 15: $'\r': command not found
==> default: Notice: /Stage[main]/Varnish::Service/Exec[vcl_reload]/returns: Err
or: RELOAD_VCL is not set to 1
==> default: Error: /Stage[main]/Varnish::Service/Exec[vcl_reload]: Failed to ca
ll refresh: /usr/sbin/varnish_reload_vcl returned 2 instead of one of [0]
==> default: Error: /Stage[main]/Varnish::Service/Exec[vcl_reload]: /usr/sbin/va
rnish_reload_vcl returned 2 instead of one of [0]
==> default: Notice: Applied catalog in 11.88 seconds
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

Hi,
Firstly apologies for not reviewing this sooner!
Your Puppet output looks like there's an error within your /etc/varnish/varnish.params file - I can't find anything amiss with the file as it's committed, so it may be due to your git settings when checking out the file.
I'll close this issue for now - please do feel free to re-open if your issue hasn't been solved in the year since raising it!
Thanks,
Craig


add storehouse for intentionally stored models

It is common for multiple components to need access to the same data. In this case, either a view is conflated so that the same model can be accessed in its different facets, the model is passed around to each view, multiple models are used with logic to keep them in sync, or a global model is used. All of these have deficiencies: non-atomic/componentized views, a fragile hierarchy, state issues, or encapsulation breakdowns.
This pull request proposes a storehouse into which explicitly decided models are saved, and from which can be explicitly drawn. If a model is created with a custom cid passed in, the reference returned will be from the storehouse if one exists, or else to the newly create model (whose reference is saved to the storehouse). In this way, using the cid from options, there will be no memory hit for how backbone is being used currently.
As proposed then, a view can be sanely small, atomic, componentized, and encapsulated with a model whether it has the only reference to it, or whether there are dozens more, the view does not know and the creation and experience is as desired. When any view changes the model's state, all views update accordingly. If all but the original model remain, or if dozens of new references emerge, each view has the same desired behavior for its model without knowing or caring if other views have the same model.
There are way more lines here than the pull request, as this is more of adding a new philosophic option than it is code (it weighs in with 5 new lines of code, and 4 changed lines). If there is an optimal way to achieve this, or more tests are desired, please let me know!

 This can also be implemented pretty easily in user lab (though they should use a WeakMap instead of an object) by either extending or patching model

I was just having a conversation with coworkers about PHP version of this, and we decided it was a big :-1:. Additionally, I've actually written a plugin for this on an old client project, and it turned out to be a huge source of bugs in our code.
In essence, what does new Model({}) do? It returns a brand new instance of a model with specified attributes.
var model = new Model({ cid: 1 });
var model2 = new Model({ cid: 1 });
model.set('test', 'test');

In this example, developers immediately understand that only model's attributes have changed. The fact that model2 was also updated is completely unintuitive. That isn't normal javascript, and it's going to trip people up.
var model = new Model({ cid: 1 });
var model2 = model;
model.set('test', 'test');

In this, it's very explicit that model and model2 are the same instance, so it's very clear that modifying one is going to modify the other.
I strongly recommend the "the model is passed around to each view" option, because it makes dependencies very clear -- it's dependency injection!

Thank you for your feedback. Here are some initial responses.

Not all models, but yes, those intentionally stored. Let me think on this.

This can also be implemented pretty easily in user lab

Agreed, but this is a powerful option that could be included 'out of the box' for a very small footprint.

In essence, what does new Model({}) do?

It does what you expect. The proposal does not affect all model constructions, just when specifically and intentionally desired by passing in an option to do so.

The fact that model2 was also updated is completely unintuitive.

I don't believe so. It is expected because an option was specifically passed in for this behavior. cids are expected to be unique per model, so it is a perfect fit. If desired though, this could be explicit by calling it something like primaryKey. I think cid is a perfect fit, though.

I strongly recommend the "the model is passed around to each view" option ...

I find this approach works fine in some cases, but in many others creates fragile and non-componentized views which are harder to reuse, and expensive to maintain. When passing around a model, it often begins journeying an hierarchy where many of the intermediate views have no relation to the model.

... because it makes dependencies very clear -- it's dependency injection!

I don't think its fair to think necessarily of a model in a view in this pattern.
In general, this is not a use case for every created model. But it is a powerful option with a small footprint which enables atomic and encapsulated views for when the same model should underlie or surface data for many different scattered views. It has proven fruitful and greatly simplified management of data, flexibility of reuses, and maintainability .

First of all: Hey Craig :-)
This idea is something I've tinkered with before. After a while I came to some of the same conclusions that others here are expressing. Passing a model around explicitly does make for more easily understandable code. I also discovered that in most of the places where I wanted to have this kind of functionality what I was lacking was a well defined hierarchy of views/controllers.
I'd suggest considering why you want to this in the first place. When multiple views require access to the same model you probably have either a nested hierarchy of views or multiple sibling views (which could be thought to be contained by a parent view/controller object). In either case it seems that managing model to view relationships is the responsibility of the parent view.
If you want to keep a store that tracks and manages model creation then you could create a factory object and make it a dependency of the parent and child views. This works well if you want to allow sibling views/controllers to have the ability to interact with the shared store of models directly while still fully encapsulating the logic in one module. It also has the benefit of being very explicit.
Garbage collection would be a concern unless you are careful with how you handle the model store. When I've created shared collections like this I've tended to attach them to a parent controller (view) and tie destruction of the collection to the close method of that view.
That's just my two cents on this. Feel free to contact me if you'd like to discuss this off-line; maybe we could come up with some sort of plugin for this kind of functionality if we can distill a good specific set of use cases.

I'll preface by saying I'm biased on this concept. It would work well anywhere passing models would, but the association in the middle views will no longer be required. Admittedly, I'm not particularly experienced, and so I appreciate any comments on my thoughts.

 That should be handled.

The fact that model2 was also updated is completely unintuitive. That isn't normal javascript, and it's going to trip people up.

It might feel unintuitive if developers are using numerical cids, however sharing models should be deliberate so a meaningful cid would be a better practice.

Passing a model around explicitly does make for more easily understandable code. I also discovered that in most of the places where I wanted to have this kind of functionality what I was lacking was a well defined hierarchy of views/controllers.

In my experience, a component could be used in two different places, but it may then need to pass two different models through hurting readability. Using a storehouse may also hurt readability if you're making certain assumptions, but it permits highly decoupled components.

Using a storehouse ... permits highly decoupled components.

Those aren't decoupled components, they're now dependent on global state.

Those aren't decoupled components, they're now dependent on global state.

That's interesting. Where is the dependency? It shouldn't create any more dependency than passing a model.

Those aren't decoupled components, they're now dependent on global state.

I think that gets to the heart of it (for better or worse for my proposal): the components are not dependent of this global state. This application state is not a dependency of the view, but is simply application state. If state is gained from a retrieval vs a creation, that is fine and well. If it is not, that is fine and well. There may be multiple references to the model, and the new model not actually new but retrieved, and this does not matter. In this manner, same as in the 'passing around a model' manner, the view does not know/care whether or no it has a unique reference or not.

I was looking at Symbol.for and just remembered this PR. What a terrifying idea to overload the constructor! Thanks for the kind words of warning.


nextcloudPackages: update

Are we okay with the downgrades?
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

I would avoid the downgrades and leave the unstable packages as they are until the get a higher stable release

Is there any guarantee on down migrations? :(


Read16() function - strange values are readout from PCF8575

Hello Rob,
many thanks for your email - hope you'll be OK soon.
So my problem is that I 'm not able to read out right value from PCF8575 chip. You can see the ino file which I used for testing... I added only printout the value "x" on screen... the value are strange - random..??
I don't know I do some mistake or what is wrong.... I use an arduino MEGA and a blue PCF8575 module from alliexpress.
Connection: GND, 5V, SDA, SCL.
There is 4V on the output of the voltage regulator (on PCF8575 module).
It is really strange.
Many thanks for your help :)
Martin

Can you post a close up photo of the PCF?
Both sides please

Dear Rob :)
It seems you opened my eyes :)
I though that after writing some "valueX" by function .write16 than by the next function read16 I readout this number "valueX" back (the value from internal flip-flop).
Now I understand that function "read/read16" reads actual state on the pins of the PCF :-D I'm stupid :) I had to use function valueOut :)
I'm very sorry to bother you....
Many thanks for your help.....
Martin

If there are no questions left you may clise the issue.

Rob,
I very appreciate your help :)
(it is interesting idea to do such a way I2C memory :) )
Only one next think.
I connected a LED with resistor on one pin.
P00 ->      --|<|--Resistro ---- +5V   (Led lights OK with "L" state on pin )
but the light doesn't light in this case:
P00->      --|>|-- Resistor ----GND (LED should light with "H" on pin but it doesn't )
It seems the driver doesn't work well.... I tried to bypass the regulator .... I have on chip 5V now... LED doesn't still light... strange
Martin

When I write 0xFFFF there is a 0V on each pin with respect to the GND....
Many thanks
Martin

0.11V is way too low.
Can you post photo of the board ?
Both sides.

Do you have a link of the datasheet?
And a link where you bought the PCF?

Rob,
here are photos of my PCF module - both sides.
Datasheet of the PCF and link to sellers page is enclosed too.
Many thanks
Martin

Link to seller:
https://www.aliexpress.com/item/4001273616648.html?spm=a2g0o.productlist.0.0.7fb84600Gck6Wv&algo_pvid=15b745e9-9e4c-40ef-afee-b6b8f7d26a24&algo_exp_id=15b745e9-9e4c-40ef-afee-b6b8f7d26a24-0&pdp_ext_f={"sku_id"%3A"10000015561464537"}&pdp_pi=-1%3B41.07%3B-1%3B-1%40salePrice%3BCZK%3Bsearch-mainSearch
pcf8575.pdf

You should check the PCB if all soldering is done well.
Near p05 and p06 there might be an unintended connection.

From the schema it is clear that the device will operate on 3V3. Not on 5V. That defines what output levels to expect.

Dear Rob,
it seems me that there won't be 5V on the output without a load.... the port
has current source from VCC.
So close teh issue please.
Have a nice day
BR
MArtin
---------- Původní e-mail ----------
Od: Rob Tillaart @.>
Komu: RobTillaart/PCF8575 @.>
Datum: 7. 4. 2022 19:05:47
Předmět: Re: [RobTillaart/PCF8575] Read16() function - strange values are
readout from PCF8575 (Issue #16)
"
From the schema it is clear that the device will operate on 3V3. Not on 5V.
That defines what output levels to expect.
—
Reply to this email directly, view it on GitHub
(https://github.com/RobTillaart/PCF8575/issues/16#issuecomment-1091989983),
or unsubscribe
(https://github.com/notifications/unsubscribe-auth/AN7VUI3XSF2CFZTBKPE5UU3VD4IWHANCNFSM5SZH2OPA)
.
You are receiving this because you authored the thread. Message ID: <
@.***>
"


Locale-aware moment.weekdays issue #2927

fix issue #2927
moment.weekdays(true) to sort list by the first day of week according to locale data
moment.weekdays(true, NUMBER) to get the #NUMBER day in sorted weekdayList

Close this in favor of #3105.

The format argument needs to be preserved for the locales that have separate 'standalone'/'format' weekdays, like be, also reorganized the code a bit.


Example in the QuickStart section has a syntax error

I copy/pasted the example in the quick start to get up and running, and immediately got a NF error on the include line.  Editing it to use semi-colons instead of commas, as follows, worked for me:
include { validateParameters; paramsHelp; paramsSummaryMap; paramsSummaryLog; validateAndConvertSamplesheet } from 'plugin/nf-validation'

Thank you! I'll make a quick PR to fix this :)

Hi @tfenne the README has been adjusted.


Add CMS

https://github.com/postlight/awesome-cms
Awesome CMS is a curated collection of content management systems. It has already seen > 25 pull requests with contributions. The README.md is generated from flat, human-editable, files in the same GitHub repository.  Contributors have remarked that they like the painless experience our entry-per-file system creates. The tool has been extracted into generate-awesome and we intend to add more features to make creation of even more useful awesome lists easier.

[x] I have read and understood the contribution guidelines and the instructions for creating a list.
[x] This pull request has a descriptive title. (For example: Add Node.js)
The list I added

[x] has been around for at least 20 days,
[x] is a non-generated Markdown file in a GitHub repo, see comments above about generation
[x] is not a duplicate,
[x] only has awesome items with descriptions (Awesome lists are curations of the best, not of everything),
[x] contains the awesome badge on the right side of the list heading,
[x] has a Table of Contents section named Contents as the first section,
[x] has an appropriate license (Meaning something like CC0, NOT a code licence like MIT, BSD, Apache, etc),
[x] has contribution guidelines,
[x] has been checked for inconsistent formatting, spelling, and grammar (This includes starting each link description with an uppercase character and ending it with a period ., and consistent naming),
[x] has been added at the bottom of the appropriate category.

Awesome lists are hand-edited markdown files. I'm sure other ways can work too, but this is how it works here. Your list looks like a useful resources, but Awesome lists are curations, not collections of everything.
I would encourage you to add it to the wiki though: https://github.com/sindresorhus/awesome/wiki ;)


Player or mob having NaN HP

It probably has something to do with this:
[ne.mi.co.Co.apotheosis/COREMODLOG]: Patching CombatRules#getDamageAfterMagicAbsorb
When it happens to your character it goes as follows:
You take damage from a certain mob (while on full HP) and all your hearts go away as if you were dead, but you do not die and your health bar stays emty, the screen shakes and hostile mobs do not 'see' you
interaction with blocks is impossible
It is in a modpack with like 60 mods in 1.16.5 Forge 36.2.39

1.16 is not supported, though this isn't caused by that coremod, as it is caused by a weird client/server desync.


Wrong properties in documentation: min/max -> minValue/maxValue

Current coverage is 100% (diff: 100%)

Merging #432 into master will not change coverage

@@           master   #432   diff @@
====================================
  Files           1      1
  Lines         896    896
  Methods         0      0
  Messages        0      0
  Branches        0      0
====================================
  Hits          896    896
  Misses          0      0
  Partials        0      0

Powered by Codecov. Last update 7cae6d8...fa860e8

The documentation is correct. There is no mandatory naming for the min and max values, it only depends on your html binding. In the README, the declaration is like this:
<rzslider
    rz-slider-model="slider.min"
    rz-slider-high="slider.max"
    rz-slider-options="slider.options"></rzslider>

By the way the min, max and options variables don't necessarily need to be stored in the same object. It just cleaner...


Camera: Add hasMoved property

Knowing if the camera has moved since the last frame is something that comes regularly in the forum, and I also needed it in my blog post.
So, I thought it would be nice to add a property in the Camera class for this purpose.

Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s).
To prevent this PR from going to the changelog marked it with the "skip changelog" label.

Snapshot stored with reference name:
refs/pull/14764/merge
Test environment:
https://babylonsnapshots.z22.web.core.windows.net/refs/pull/14764/merge/index.html
To test a playground add it to the URL, for example:
https://babylonsnapshots.z22.web.core.windows.net/refs/pull/14764/merge/index.html#WGZLGJ#4600
Links to test babylon tools with this snapshot:
https://playground.babylonjs.com/?snapshot=refs/pull/14764/merge
https://sandbox.babylonjs.com/?snapshot=refs/pull/14764/merge
https://gui.babylonjs.com/?snapshot=refs/pull/14764/merge
https://nme.babylonjs.com/?snapshot=refs/pull/14764/merge
To test the snapshot in the playground with a playground ID add it after the snapshot query string:
https://playground.babylonjs.com/?snapshot=refs/pull/14764/merge#BCU1XR#0

(Experimental) visualisation test reporter:
https://babylonsnapshots.z22.web.core.windows.net/refs/pull/14764/merge/testResults/webgl2playwright/index.html


Add port mapping in the setup documentation to make sure Jupyter notebook server port is exposed.

Need to add -p 8888:8888 to expose the port to host in the Docker documentation.

Can one of the admins verify this patch?

@tensorflow-jenkins test this please.
Need to pass checks even for documentation change.

Can you also add the flags to the docker_run script? And maybe add a sentence about what it's for?

This PR is for updating documentation.
Will send another PR to update the script.
Would that be ok?

That would be ok. Can you add a sentence explaining why the -p argument is
necessary?
On Sun, May 8, 2016 at 11:01 AM Henry Saputra<EMAIL_ADDRESS>wrote:

This PR is for updating documentation.
Will send another PR to update the script.
Would that be ok?
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/tensorflow/tensorflow/pull/2222#issuecomment-217736643

Update PR with description about the Docker -p option.

Thx for merging, @martinwicke


Adventure Pointers Support

Description
It seems that Krypton does not support Adventure Pointers, since their classes that implement the Audience class do not override the pointers() method, for example: https://github.com/KryptonMC/Krypton/blob/master/server/src/main/kotlin/org/kryptonmc/krypton/console/KryptonConsole.kt and https://github.com/KryptonMC/Krypton/blob/master/server/src/main/kotlin/org/kryptonmc/krypton/user/KryptonUser.kt
Steps to reproduce
For example when trying to use the KryptonConsole#pointers().supports(any pointer) method, it will return false since the default Pointers returned is a Pointers.empty() https://github.com/KyoriPowered/adventure/blob/main/4/api/src/main/java/net/kyori/adventure/pointer/Pointered.java#L91 which does not have any information
Expected behaviour
That the pointers are implemented in the main classes that implement Audience
Details

Server version: Krypton 0.66.3
Java version: 17

Other information
An example of pointer implementation is how Paper and Velocity implement it https://github.com/PaperMC/Velocity/blob/1a3fba4250553702d9dcd05731d04347bfc24c9f/proxy/src/main/java/com/velocitypowered/proxy/console/VelocityConsole.java#L57
Pointers are important for multiplatform plugins, since they allow to obtain common information (like the PermissionChecker) without the need of having a specific logic for each platform

Fixed in 5e70bac3ecbc2d4d0a8144809371e0d0b91de503


no web app

hey just trying to set up a phoniebox for my boys! if i try to connect to the web app i just come to the Apache2 Debian Default Page :(

Hi @Zortris

did you use the one line install script or install manually?
and it shouldn't show apache, because I am using the lighttpd webserver
do you see the default page when connected via Wifi from another device or typing in localhost in the browser of your raspberry pi?

... a bit more context to your issue would help to help :)

hey sorry for the missing infos ;)
i used the one line script and i see the apache default page on every device in my network.
i can connect with ssh and from my pc so i see the folders.
Sorry for my poor english^^

just removed apache2 and now it works!

@Zortris
good thing it works now. I guess I should add this in the troubleshooting section, because many people might have something on their Pi and such conflicts are happening.
For future questions, we can also communicate in German. What is your native language?
All the best, micz

ah perfekt! jetzt muss ich mir noch zusammensuchen wie ich knöpfe zum laufen bring und dann gehts ans Gehäuse bauen! Super Sache! Vielen Dank für dieses großartige Projekt!

I'm adding my question here, cause it seems to be related:
I installed Phoniebox on RPi Stretch, following the instructions (https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/INSTALL-stretch) an d using the online command (with Spotify). Everything went smoothly, but after trying to reach the static IP address via browser or smb, I get non connection.
Entering localhost in the browser of my Raspberry also didn't work:
Website nicht erreichbar. localhost hat die Verbindung abgelehnt.
smb: Beim Verbinden mit dem Server „<IP_ADDRESS>“ ist ein Fehler aufgetreten.
Any suggestions? Sorry, I'm a Newbie and need clear instructions what to type ore where to search for.
Thanks in advance!

Hi @kleinhanss
It looks as if the webserver is not running. Let's do some checking first.
What is the IP address?
On your Pi, open a terminal and type
ipconfig

This should return the IP address - if there is any. Mine, here at home is <IP_ADDRESS> like the one you have posted above. Which makes me a bit suspicious.
Please post the results of the above command here.
Now open a terminal in your Pi and type
ping -c 3 <IP_ADDRESS>

(replace the IP address with your Phoniebox IP)
Is the Pi in the wifi
Now open a terminal in a PC that's connected to the same wifi and type
Now open a terminal in your Pi and type
ping -c 3 <IP_ADDRESS>

(replace the IP address with your Phoniebox IP)
And: this is how you ping in Linux and it should also work in OSX. But I don't know what the Windows equivalent would be. You might need to google that.
What does this return? Then we take if from here.


Will Homebridge run better on beefier hardware?

I'm currently running homebridge on a RaspberryPi 3B and am wondering if switching to something more powerful will have a positive effect on performance?
Im noticing for example when opening a camera feed (provided by the homebridge-camera-ffmpeg plugin) that starting the feed takes about 5/10 seconds whereas when using the VLC app, the feed starts almost instantly.
Will behavior like this improve when switching from a raspberry pi to something beefier?

Today released raspberry pi 4B with 4GB ram.

Im not specifically revering to the newly released raspi 4, but to more powerful hardware in general.


Dive photos

@Widdershin
Code Review
-Have a look at storing and displaying photographs in Diver, Dive models & Controllers

Hmmm, maybe the photos aren't actually being stored in the database. Not really familiar enough with Entity Framework to know what the right way is.
@ubermouse you got any thoughts?

Not really, it's been years since I did C# and I'm not even sure I used EntityFramework. I'm not sure what the problem I am supposed to be looking at is either, maybe you can't store bytearrays? Maybe they should be converted to a string? Or stored in a blob column? ¯_(ツ)_/¯


cache refresh and writing byte array to server.

I want to write this value to custom UUID then refresh service and characteristic cache to catch new characteristic UUID.
But when I try to write I can only write one byte but for this value that has 4 bytes, it has nothing happen.
I've looked for some documentation and topics on this repo and esp32 Webboard but still did not understand. several function
1. esp_err_t esp_ble_gattc_write_char( esp_gatt_if_t gattc_if,                                     uint16_t conn_id,                                     uint16_t handle,                                     uint16_t value_len,                                     uint8_t *value,                                     esp_gatt_write_type_t write_type,                                     esp_gatt_auth_req_t auth_req);    For this function I don't know what the parameter I should add to.
2. esp_ble_gattc_cache_refresh(myDevice->getAddress().toString().c_str());  for this one I can't compile because type of value didn't match
Here's my part of code modified from Neil Koban client example.
uint8_t newValue[4] = {0x9f,0xcc,0x01,0x80};
uint8_t accSelfTest = {0x06};
Serial.println(" - Found our characteristic4 : Test Mode Enable");
  // Read the value of the characteristic.
  if (pRemoteCharacteristic->canWrite()) {
    pRemoteCharacteristic->writeValue(newValue,4);
    //esp_ble_gattc_write_char()
    Serial.println("Write Test Mode Enable Complete");
  }
 esp_ble_gattc_cache_refresh(myDevice->getAddress().toString().c_str());
 delay(1500);
  pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID6);
  if (pRemoteCharacteristic == nullptr) {
    Serial.print("Failed to find our characteristic UUID: ");
    Serial.println(charUUID6.toString().c_str());
    pClient->disconnect();
    return false;
  }
Serial.println(" - Found our characteristic4 : ACC. Self Test");
  // Read the value of the characteristic.
  if (pRemoteCharacteristic->canWrite()) {
    pRemoteCharacteristic->writeValue(accSelfTest);
    Serial.println("Write Self Test Complete");
  }
  delay(500);
  if (pRemoteCharacteristic->canRead()) {
    std::string value = pRemoteCharacteristic->readValue();
    int j = value.length();
    Serial.print("Data length = ");
    Serial.println(j);
    for (int i = 0; i < value.length(); i++)
    {
      String stringOne =  String(value[i], DEC);
      Serial.print(stringOne);
    }
    Serial.println("");
  }
  delay(1000);

I've researched for bd address and found this solution to convert char from myDevice->getAddress().toString().c_str() into byte array to use with esp_ble_gattc_cache_refresh()
byte addr[6]; void parseBytes(const char* str, char sep, byte* bytes, int maxBytes, int base) {     for (int i = 0; i < maxBytes; i++) {         bytes[i] = strtoul(str, NULL, base);  // Convert byte         str = strchr(str, sep);               // Find next separator         if (str == NULL || *str == '\0') {             break;                            // No more separators, exit         }         str++;                                // Point to next character after separator     } } //in other functions. const char* devAddr = myDevice->getAddress().toString().c_str();   parseBytes(devAddr, ':', addr, 6, 16);   for(int i =0 ; i<5 ; i++){Serial.println(addr[i], HEX);}
I only try to print into serial monitor and  esp_ble_gattc_cache_refresh() but can't see any different cause I have no LOG show when running on esp32 but every thing seems okay. need to try again when able to write byte array into the server to activate hidden characteristic.

esp_ble_gattc_cache_refresh(esp_bd_addr_t remote_bda)
You have BLEAddress->native()

esp_ble_gattc_cache_refresh(esp_bd_addr_t remote_bda)
You have BLEAddress->native()

Dear Chegewara,
Sorry for a nonsense question because I’m new to this BLE but what do you mean about
BLEAddress->native()   I did not understand it do I have to call this class to activate refresh function and now I’m still stuck with writing byte array to server characteristic. But when I’m write a byte array with nRF Connect everything work fine. If I can write with esp32 I’m also can test the refresh service function. Anyway thanks for your support.

Update!!!
Now I can write byte array to my device by using
pRemoteCharacteristic->writeValue(newValue,4, true);
Just add TRUE at the end of the command and it can be used!!!
I've read this issue https://github.com/nkolban/esp32-snippets/issues/382
Big thanks to chegewara and vcmorini.
Next I'll try to refresh a service by using esp_ble_gattc_cache_refresh(esp_bd_addr_t remote_bda)

There is class BLEAddress. In that class you have function that will return value or pointer to value you need:
https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/BLEAddress.h#L26

BLE_client:216:52: error: cannot convert 'uint8_t ()[6] {aka unsigned char ()[6]}' to 'uint8_t* {aka unsigned char*}' for argument '1' to 'esp_err_t esp_ble_gattc_cache_refresh(uint8_t*)'
esp_ble_gattc_cache_refresh(myAddress->getNative());
Hi, I edit my code then got this error message. When edit to *myAddress->getNative()
Got this error
10:33:07.942 -> Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled. 10:33:07.942 -> Core 1 register dump: 10:33:07.942 -> PC      : 0x4000c310  PS      : 0x00060130  A0      : 0x800fc2b5  A1      : 0x3ffc8650   10:33:07.942 -> A2      : 0x3ffc8670  A3      : 0x00000000  A4      : 0x00000006  A5      : 0x3ffc8670   10:33:07.942 -> A6      : 0x3ffbedb0  A7      : 0x00000000  A8      : 0x00000000  A9      : 0x3ffc8650   10:33:07.942 -> A10     : 0x00000002  A11     : 0x3f4020ef  A12     : 0x0000001f  A13     : 0x0000ff00   10:33:07.942 -> A14     : 0x00ff0000  A15     : 0xff000000  SAR     : 0x00000004  EXCCAUSE: 0x0000001c   10:33:07.975 -> EXCVADDR: 0x00000000  LBEG    : 0x4000c2e0  LEND    : 0x4000c2f6  LCOUNT  : 0xffffffff

(uint8_t*)esp_ble_gattc_cache_refresh(myAddress->getNative());
or
(uint8_t*)&esp_ble_gattc_cache_refresh(myAddress->getNative()[0]);

After trying code with your suggestion the same error occurs
0x400d2454: connectToServer() at D:\BLE_client/BLE_client.ino line 216 0x400d2f12: loop() at D:\BLE_client/BLE_client.ino line 440 0x400d8635: loopTask(void*) at C:\Users\parin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32\main.cpp line 19 0x4008e089: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c line 143 PC: 0x4000c310 EXCVADDR: 0x00000000

I'd do some research and found that my result from exception decoder is LoadProhibited from address 0x00000000
Which describe in
But I don't know where to look for. By the way, I declared a BLEAddress class as
static BLEAddress* myAddress;
And use as

esp_ble_gattc_cache_refresh((uint8_t*)myAddress->getNative());
or
esp_ble_gattc_cache_refresh((uint8_t*)&myAddress->getNative()[0]);

Is they have anything to do with this exception?

static BLEAddress* myAddress;

This in NULL, try that:
bleClient->getPeerAddress().getNative()

Thanks for your advice. Now it's looking good can compile and run but it seems to have no service refresh at all.

I need to write a value to custom UUID to activate hidden UUID and refresh it so the program can see new characteristic UUID.

But now I'm stuck at refresh UUID. Can I use any other method to refresh server UUID?
Anyways thanks you so much for your support.

Hey!, I read reference form
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/bluetooth/esp_gattc.html#_CPPv435esp_ble_gattc_unregister_for_notify13esp_gatt_if_t13esp_bd_addr_t8uint16_t
I have a question, Did esp_bd_addr_tserver_bda and esp_bd_addr_tremote_bda is the same value
because in BLERemoteCharacteristic
class esp_ble_gattc_register_for_notify  can use esp_bd_addr_tserver_bda
as *m_pRemoteService->getClient()->getPeerAddress().getNative()
but when I try to use the same method nothing happen.
esp_ble_gattc_cache_refresh((uint8_t*)pRemoteService->getClient()->getPeerAddress().getNative());

Yes, its the same address.

Yes, its the same address.
espressif/esp-idf#3198

Did a GATTC API different version or older version than the one on
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/bluetooth/esp_gattc.html

Now, I add a
bool BLEClient::serviceRefresh() { 	esp_err_t errRc = esp_ble_gattc_cache_refresh(*getPeerAddress().getNative()); 	if (errRc != ESP_OK) { 		log_e("esp_ble_gattc_cache_refresh: rc=%d %s", errRc, GeneralUtils::errorToString(errRc)); 		return false; 	} 	else return true; }
and call this in main program.
`if (pClient->serviceRefresh()){
pRemoteService = pClient->getService(serviceUUID2);
if (pRemoteService == nullptr) {
Serial.print("Failed to find our service UUID: ");
Serial.println(serviceUUID.toString().c_str());
pClient->disconnect();
return false;
}
pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID6);
if (pRemoteCharacteristic == nullptr) {
Serial.print("Failed to find our characteristic UUID: ");
Serial.println(charUUID6.toString().c_str());
pClient->disconnect();
return false;
}`
It seems that refresh function return TRUE after execute but still can not get characteristic UUID before resetting a device

@greatwuu
How did you solve this issue

@greatwuu
How did you solve this issue

Hi Soth,
Now I have no device to review my previous code. I will review and get back to you later.

Sorry for late reply,
I have checked my code and found that the server that I have connected to will updated the Services and Char UUID automatically and if it is not updated software will try to reconnect it.
`bool connectToServer() {
Serial.print("Forming a connection to ");
strAddr = myDevice->getAddress().toString().c_str();
Serial.println(strAddr);
BLEDevice::setEncryptionLevel(ESP_BLE_SEC_ENCRYPT_MITM);
pClient  = BLEDevice::createClient();
Serial.println(" - Created client");
pClient->setClientCallbacks(new MyClientCallback());
pClient->connect(myDevice);
Serial.println(" - Connected to server");
Serial.print(devName);
Serial.print(" RSSI = ");
Serial.println(RSSIvalue);
pRemoteService = pClient->getService(serviceUUID);
if (pRemoteService == nullptr) {
Serial.print("ERROR : Failed to find GENERIC ACCESS UUID: ");
Serial.println(serviceUUID.toString().c_str());
pClient->disconnect();
return false;
}
pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID);
if (pRemoteCharacteristic == nullptr) {
Serial.print("ERROR : Failed to find DEVICE NAME UUID: ");
Serial.println(charUUID.toString().c_str());
pClient->disconnect();
return false;
}
Serial.println("    - Device name");
// Read the value of the characteristic.
if (pRemoteCharacteristic->canRead()) {
std::string value = pRemoteCharacteristic->readValue();
devName = value.c_str();
Serial.println(value.c_str());
}
pRemoteService = pClient->getService(serviceUUID2);
if (pRemoteService == nullptr) {
Serial.print("ERROR : Failed to find CUSTOM SERVICE UUID: ");
Serial.println(serviceUUID.toString().c_str());
pClient->disconnect();
return false;
}
pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID5);
if (pRemoteCharacteristic == nullptr) {
Serial.print("Failed to find our CUSTOM CHAR. UUID: ");
Serial.println(charUUID5.toString().c_str());
pClient->disconnect();
return false;
}
Serial.println(" - Test Mode Enable");
if (pRemoteCharacteristic->canWrite()) {
pRemoteCharacteristic->writeValue(newValue, 4, true);
Serial.println("Write Test Mode Enable Complete");
}
delay(500);
pRemoteService = pClient->getService(serviceUUID2);
if (pRemoteService == nullptr) {
Serial.print("ERROR : Failed to find CUSTOM service UUID: ");
Serial.println(serviceUUID.toString().c_str());
pClient->disconnect();
}
pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID6);
if (pRemoteCharacteristic == nullptr) {
Serial.print("ERROR : Reseting Device ");
Serial.println(charUUID6.toString().c_str());
pClient->disconnect();
}
connected = true;
return true;
}`


How to handle obsolete GO terms (or obsolote terms in general)

How can we handle normalization of obsolete GO Terms? For example GO:0055072 is "obsolete iron ion homeostasis" and the webpage suggests it could be replaced by GO:0006879 or GO:0060586.

I like this idea. I think it may be impossible to avoid relying on deprecated identifiers for some sources, such as when the resource is no longer being updated, but still has valuable data we want.  Plus it would be helpful to see that flag in node norm just to see a reason why normalization is failing rather than getting no response.


POC (do not merge): Add row-group and column select

Makes read_parquet(filename, rgs=None, columns=None), where the optional inputs are integer lists. To be useful, the user needs to first know how many row-groups there are (this is easy) and how the columns they want map onto schema indices (this is hard for the nested case).
I note that loading refuses (correctly) in the case that you have a MAP type and you only specify the keys or values but not both.
I also found that "filename" must be a real file not a directory, which I found surprising, since parquet datasets are usually multi-file. Of course dask et al already has code for extracting the potentially many files of a dataset, first constructing an aggregate schema including any partitioning keys. I suppose this paragraph belongs in https://github.com/kylebarron/arro3/issues/195 .

Thanks for the PR!

Makes read_parquet(filename, rgs=None, columns=None), where the optional inputs are integer lists. To be useful, the user needs to first know how many row-groups there are (this is easy) and how the columns they want map onto schema indices (this is hard for the nested case).

Right, this is where it's nicer to have a stateful reader like ParquetFile. For reference, I have ParquetFile and ParquetDataset in geoarrow-rs. These should work for non-spatial data, but are spatial-aware.

I also found that "filename" must be a real file not a directory, which I found surprising, since parquet datasets are usually multi-file. Of course dask et al already has code for extracting the potentially many files of a dataset, first constructing an aggregate schema including any partitioning keys. I suppose this paragraph belongs in #195 .

The Rust parquet crate API only supports single files, so any dataset abstraction needs to be built on top of that. You can refer to ParquetDataset in geoarrow-rs: https://github.com/geoarrow/geoarrow-rs/blob/d4e6957bd73f70f9d00a8b6b8c2d66f7c0622deb/python/geoarrow-io/src/io/parquet/async.rs#L313-L321

Right, this is where it's nicer to have a stateful reader like ParquetFile. For reference, I have ParquetFile and ParquetDataset in geoarrow-rs. These should work for non-spatial data, but are spatial-aware.

I suppose I am a little confused about how you see there different packages relating to each other. Clearly geoarrow cares about parquet, but it also uses arro3 internally, so why wouldn't dataset live here? I see it also supports remote stores...
geoarrow, of course, depends on the whole of pyarrow (all that C++ stuff).

I suppose I am a little confused about how you see there different packages relating to each other. Clearly geoarrow cares about parquet, but it also uses arro3 internally, so why wouldn't dataset live here? I see it also supports remote stores...

Because I don't know of a good way (yet) to have the main Python binding live here but inject spatial-specific extensions from geoarrow-rs's Python bindings. If we figured that out then I would put the core Python parquet bindings here.
It's the same story on the JS side, where I have WebAssembly bindings to Parquet, but then reimplement a bunch of that stuff for GeoParquet in JS. https://github.com/geoarrow/geoarrow-rs/tree/main/js/src/io/parquet

geoarrow, of course, depends on the whole of pyarrow (all that C++ stuff). Not to mention GEOS and GDAL!!

No. geoarrow-rs does not depend on pyarrow, nor GEOS nor GDAL. geoarrow-rs is pure Rust, and especially the GeoParquet reader and all the core dependencies are pure Rust. That's what allows it to go in WebAssembly so easily https://explore.overturemaps.org (clicking Download Visible uses my Rust GeoParquet reader). geoarrow-rs is separate from geoarrow-c and geoarrow-pyarrow, which depend on pyarrow.


Poorly documented Start Call functionality

The call overview for the Teams SDK is not documented from the original source.
See example below direct from source:
export enum CallModalities {
    Unknown = 'unknown',
    Audio = 'audio',
    Video = 'video',
    VideoBasedScreenSharing = 'videoBasedScreenSharing',
    Data = 'data',
  }

  export interface StartCallParams {
    // comma-separated list of user IDs representing the participants of the call.
    // Currently the User ID field supports the Azure AD UserPrincipalName,
    // typically an email address, or in case of a PSTN call, it supports a pstn
    // mri 4:<phonenumber>.
    targets: string[];
    // List of modalities for the call. Defaults to [“audio”].
    requestedModalities?: CallModalities[];
    // An optional parameter that informs about the source of the deep link
    source?: string;
  }

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

ID: 39ee4b2f-8b19-f411-052d-0100c7510d2f
Version Independent ID: e91fc1e6-bfc6-7edd-87f4-81467fadd581
Content: call module - Teams
Content Source<EMAIL_ADDRESS>Product: msteams
GitHub Login: @charlesprakash
Microsoft Alias: o365devx

We are looking into this, we will update you.

The documentation team has fixed the issue and the fix has been merged into main. Thanks!


Support actor tokens

This adds support for actor tokens (and superusers that can generate them in the first place).
The following changes are mainly here to support changes in dashboard:

Store the raw payload received from the API as token so we can easily re-auth with a token from the store.
Optionally do not delete the token when logging out.

The following do stand on their own:

Show a link to the impersonation menu if the user is a superuser (i.e. if they may be able to use it in the first place).
Add actor-awareness (renders as $ActorName (as $Username) in the navbar)

--
cc @fancyremarker @sandersonet @gib

:clap:


<IP_ADDRESS>.0

This PR updates the partner version to <IP_ADDRESS>.0 for release.

Closing to make a new build internally.


Directory with the same name as an npm module causes trouble

Description
If you name a (toplevel?) directory the same as an npm module, compilation fails – in a bad way.
Expected behavior
Either a good error message, or successful compilation. I’m not sure if you are allowed to name a directory the same as an npm module or not, but it is an easy error to make.
Actual behavior
$ brunch b
(node:30221) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): BrunchError: Failed to read file app/react.
Error: EISDIR: illegal operation on a directory, read
02 Nov 10:00:05 - info: compiling
02 Nov 10:00:09 - info: compiling.
02 Nov 10:00:13 - info: compiling..
02 Nov 10:00:17 - info: compiling...
02 Nov 10:00:21 - info: compiling
02 Nov 10:00:25 - info: compiling.
02 Nov 10:00:29 - info: compiling..
02 Nov 10:00:33 - info: still compiling...
02 Nov 10:00:37 - info: compiling
02 Nov 10:00:41 - info: compiling.
02 Nov 10:00:45 - info: compiling..
02 Nov 10:00:49 - info: compiling...
02 Nov 10:00:53 - info: compiling
02 Nov 10:00:57 - info: compiling.
02 Nov 10:01:01 - info: compiling..
02 Nov 10:01:05 - info: compiling...
02 Nov 10:01:09 - info: compiling
^C⏎

In other words, a bad error message is shown and then brunch gets stuck "compiling" forever.
Test repo: https://github.com/lydell/brunch-module-name-bug
Environment

Brunch: 2.9.1
Node: 6.9.1
NPM: 3.10.8
Operating system: Ubuntu 16.04

package.json contents
{
  "private": true,
  "devDependencies": {
    "brunch": "^2.9.1",
    "javascript-brunch": "^2.0.0"
  },
  "dependencies": {
    "react": "^15.3.2"
  }
}

brunch config contents
module.exports = {
  files: {
    javascripts: {
      joinTo: 'app.js'
    }
  }
}

Other useful files
app/main.js:
var component = require('./react/SomeComponent')

console.log('component', component)

app/react/SomeComponent.js:
var React = require('react')

module.exports = function SomeComponent(props) {
  return React.createElement("span", null)
}

Background
I recently added React to a single page of an existing project. I figured I’d put all React components in a directory called "react". Then I ran into this problem. I ended up simply renaming that directory to "react-components" to avoid the problem. This was not a good experience.

This seems to also happen for me, although for a different reason (as far as I can tell) - I don't have any directories named the same as my dependencies.
Environment

Brunch: 2.9.1
Node: 4.2.6
NPM: 3.5.2
Operating system: Ubuntu 16.10

I'm not really a frontend / JS person (this is happening on our build server and locally, on our machines, everything works as expected), so any pointers as to how to debug this would be greatly appreciated.

This also happens for us with the following setup

Node: 6.9.1
Brunch: 2.8.2
NPM: 3.10.8
Mac OS Sierra, 10.12.1

Hi, @lydell, @Fohlen and @cdman! Thanks for reaching out!
Your issue is related to problems with deppack module.
Here are other issues: deppack related issues.
We're working on it. I believe we will fix that as soon as it possible.

@denysdovhan upgrading to brunch 2.10.0 resolved the issue for me.

👍🏻

Happens in 2.10.8 as well: https://github.com/lydell/brunch-module-name-bug

Okay, gonna take a look at this asap.

Any news on this subject ?


updating Windows Server Core limitations and FOD

This document was not intended to be complete by the note.
Yet in the field it is often cited for the limitations of Server Core and could lead Administrators and IT management to choose against the use of Server Core.
In fact many software vendors have not even tested or can tell if their Software would run on Server Core. With certain expierence of application and server migration, I can say that this is possible most of the time.
With a clear exception of Citrix some software vendors were then interested to support their software hosted on Server Core using Remote Tools.
I am adding this for the sake of the previous unintended completeness.
FOD after 1903 is not very well documented, however later developments of Feature on Demand were important in certain scenarios to support Server Core.
Certainly Server 2022 is around the corner. Everywhere IT Pros, Microsoft, Vendors and Partners are vouching for the use of Server Core.
Clear information is the foundation of good IT decisions in favour for this officially preferred installation method of modern versions of Windows Server.
This PR reflects the outcome of discussion with @illfated. Thanks for your advice, as always.
reference: @Karl-WE  #3016
added: another reason to complete this list is that the references on what is included and what is not included are great but focus on roles and features and not on all named tools here. So one might be disappointed to look into roles and features that give no clue about MMC or Explorer or etc.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@illfated can you specify?

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Karl-WE : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Thanks @illfated for your help on corrections.

@JasonGerend @pronichkin imho this is now ready for a final review and signoff

#sign-off

@illfated: I'm sorry - only the author of this article, @pronichkin, @jasongerend, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

Yes, I know. My sign-off comment is based on an agreement with the team.

@pronichkin Can you please sign off or close this PR? Thanks!

No response from author, closing.

@Karl-WE I am sorry to have to close this, but I can't get a response from the author. Possibly they moved on to other things. If you still want this change, can you open a new PR? Perhaps it will get reassigned to the current author/team member.

@sethmanheim I have contacted Artem personally and wait for his response.

@Karl-WE OK, thank you! If we get a response I am happy to re-open this PR.


allowClear on single select

Hi,
when I have a allowClear on a single select that have more than one row by item, the clear button "X" does not work!
I send a attached to view the case.

Best regards

@killermouse I think the problem is that the element with selected item is actually covering the clear button (X). Quick fix would be to just add this to your styles:
.selectivity-single-selected-item-remove {
  position: relative;
  z-index: 1;
}

@arendjr I've made a pull request with this hotfix. The problem can be seen for example here: https://jsfiddle.net/dmarchuk/9Ltevh10/2/. If you select the item in the select and then try to clear it with "X", it won't work. Here is an example of the same select but with the fix applied: https://jsfiddle.net/dmarchuk/9Ltevh10/1/

@dmarchuk thank you.
Problem resolved.
Best regards

Thanks guys!


Avoid duplicated sort operation for status list.

@SpecialYang: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
7caf4f150f2d7a9f98b645374f04b7fde760aa4c
link
unknown
/test gencheck_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@SpecialYang: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
7caf4f150f2d7a9f98b645374f04b7fde760aa4c
link
unknown
/test gencheck_istio

lint_istio
7caf4f150f2d7a9f98b645374f04b7fde760aa4c
link
unknown
/test lint_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@SpecialYang: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
7caf4f150f2d7a9f98b645374f04b7fde760aa4c
link
unknown
/test gencheck_istio

lint_istio
7caf4f150f2d7a9f98b645374f04b7fde760aa4c
link
unknown
/test lint_istio

unit-tests_istio
7caf4f150f2d7a9f98b645374f04b7fde760aa4c
link
unknown
/test unit-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

@SpecialYang: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests_istio
7caf4f150f2d7a9f98b645374f04b7fde760aa4c
link
unknown
/test unit-tests_istio

lint_istio
7caf4f150f2d7a9f98b645374f04b7fde760aa4c
link
true
/test lint_istio

gencheck_istio
7caf4f150f2d7a9f98b645374f04b7fde760aa4c
link
true
/test gencheck_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest


Fix: A symptom of characters being copied when there are multiple TextEdits.

Related #4358

Fix: A symptom of characters being copied when there are multiple TextEdits.

Blocked on https://github.com/emilk/egui/pull/4358

@emilk
for example,
This is necessary because after entering the ID, if you select the Password line to enter the password, part of the ID will be copied.
Please review.


Feat: Add user added reactions to the message reactions

Summary
Add reactions to Message.reactions when message.add_reaction is called

Fixes #106
Checklist

[x] If code changes were made then they have been tested.

[ ] I have updated the documentation to reflect the changes.

[x] This PR fixes an issue.
[x] This PR adds something new (e.g. new method or parameters).
[ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
[ ] This PR is not a code change (e.g. documentation, README, ...)

Hmmm this code looks really bad now that I think about it. Gonna rewrite it later

did you rewrite it yet

Nope


Nested-menu docs widget doesn't show up

Yep !
While working in the (nested menu) docs area (widget)

[x] made the content/branches - doc folders ...
[x] brought the needed layouts/partials
[ ] the method i use for embedding the widget  as a partial !/  fails   :

# About Lorem..
[..]
## And...yes: there is project documentation available

{{ partial "nested-menu.html" . }}  \!/ this fails to load

in the about.md file
...umh,i might be missing some very basics here... ? (Not gonna push the tests/changes, for now...FYI)
I might be calling the relevant partial in the 'wrong place' ?

4 out of 3 times it is a matter of having the wrong context...

Fixed.


Fix SympyModel.performance_optimize

SympyModel.performance_optimize now also fails its tests, see
https://github.com/ComPWA/tensorwaves/pull/329/checks?check_run_id=3857915954
For now, its corresponding test is removed through #329.
See also https://github.com/ComPWA/tensorwaves/pull/260

Fixed by #397


Octopus - E2E tests

Add E2E integration test support for multi-VC feature.

Closing since it is a duplicate issue. The E2E tests are tracked in issues# 268 and 267


From 2018 team post-mortem: Mission editing

Currently inconvenient to make changes to the mission after it’s published
e.g. Cannot easily change due date

Note from Martin: strongly agree. This would be one of the central features of an admin interface.

This is still an issue, but more relevant to backend

This is handled by the Mission Control tool, currently available at:
https://sourceacademy.nus.edu.sg/mission-control


add test for version check

[ ] I have added the tests to cover my changes. N/A; the changes are a test
[x] I have updated the documentation and CHANGELOG accordingly.
[x] I have read the CONTRIBUTING document.

This is a test for the changes merged in https://github.com/AgnostiqHQ/covalent/pull/274


Integrate IOGX

This PR is a work in progress, please don't look yet
As part of the ongoing effort to build a Developer Platform for IOG, the smart-contracts-dev-empowerment team is releasing IOGX - a Flake Template for Haskell Projects at IOG
The vision is to provide a JSON-like, declarative interface to Nix, so that developers unfamiliar with the language may independently maintain and add to the Nix sources with minimum effort.
The goal is to integrate with all Smart Contracts repositories, and maybe more.
There are currently several other repositories using this: marlowe-cardano, antaeus, quickcheck-dynamic, marconi, stablecoin-plutus, dapps-certification.

This PR is a full refactor of the Nix code. The old __std__ folder is gone, and all the nix files are now in the nix folder.
While CI may be green, there are a few things I unfortunately I cannot test, namely x86 linux stuff.
Most importantly, please do check that the following are still working:

haskell-language-server in your IDE
That the devcontainer-docker-image works:
docker load < $(nix build .#devcontainer-docker-image)

You might find that the shell looks a little different, if you don't like it you can tell me.
Notably, the fix-*formatter* scripts have gone, because the same result can be obtained just by using pre-commit.
E.g.
fix-stylish-haskell
fix-shellcheck
# -> Now becomes
pre-commit run stylish-haskell
pre-commit run shellcheck

# To run all formatters
pre-commit run

# To run on all files (not just the committed ones)
pre-commit run --all-files

Various documentation-related files will also have to be updated.
I'm preparing a separate PR for that

Stuff in the shell today:
🔨 Welcome to plutus-shell

[docs]

  autobuild-docs          - Start the autobuild server on localhost:8000
  build-docs              - Build the docs locally in doc/read-the-docs-site/_build
  jekyll                  - Static site builder, used for the metatheory documentation
  serve-docs              - nix build and serve the doc site on localhost:8002

[general commands]

  R                       - Statistical modelling tool
  ShellCheck              - Shell file checker
  editorconfig-checker    - Checker for editorconfig conformance
  fix-png-optimization    - Fix all PNG files in-place
  menu                    - prints this menu
  scriv                   - Manage changelogs

[haskell]

  agda                    - Agda and its standard library
  cabal                   - Haskell build tool
  cabal-fmt               - Cabal file formatter
  fix-cabal-fmt           - Format all cabal files in-place
  fix-stylish-haskell     - Run stylish-haskell on all haskell files in-place
  haskell-language-server - Haskell Language Server
  hlint                   - Haskell linting tool
  stylish-haskell         - Haskell code formatter

[nix]

  check-the-flake         - For nix maintainers: build everything in the flake
  nixpkgs-fmt             - Nix code formatter

Output of info on this branch:
λ changelog
— assemble-changelog ∷ Assembles the changelog for PACKAGE at VERSION
— prepare-release ∷ Prepares to release PACKAGEs at VERSION
— update-version ∷ Updates the version for PACKAGE to VERSION

λ general
— info ∷ Print this message
— list-flake-outputs ∷ List the flake outputs buildable by nix

Update agda-project.nix compiler-nix-name to ghc92
Brought back the version scripts
Removed #!/usr/bin/env bash from version scripts
Renamed option shellFor into shellArgsForProjectVariant
Pinned haskell.nix
Added support for ghcXX* versioning
Removed sha256map from cabal-project.nix
Use build-latex-doc at each use site
Move unraveling-recursion-paper to its own file
Simplified nix/outputs.nix

How do I fix anything in the RTD site if it's not working properly?

You have to rely on iogx for the RTD site derivation. If it breaks then it has to be patched in iogx. I'm not sure what an "escape hatch" for this would look like, short of providing the read-the-docs-site derivation yourself, which kind of defeats the purpose.

it looks like you've just taken a frozen snapshot of the python packages we happen to currently be using for Sphinx, but we might want to add more - there's 0 guarantee that that's the final set. So what would I do then?

I can add a shpinxToolchain option to the readTheDocs config.
That's all that's needed to build the site. Although there is the issue with plantum:
  site = pkgs.stdenv.mkDerivation {

    name = "read-the-docs-site";

    buildInputs = [
      repoRoot.src.ext.sphinx-toolchain
      # We need this here in order to get the `plantuml` executable in PATH.
      # Unfortunately `python3.withPackages` (used by sphinx-toolchain above)
      # won't do it automatically.
      pkgs.python3Packages.sphinxcontrib_plantuml
    ];
  };

Maybe we can get sphinxcontrib_plantuml from sphinx-toolchain somehow. I'll look into that

What do we do about hlint?

With this PR, hlint would be run on each git commit, and also in CI as part of pre-commit-check, using the top-level .hlint.yml file, and using the "right" version of the hlint program. But this won't show the hints in the PR.
The GH hlint workflow uses version 2.13.3. We would have to remember to keep that up-to-date. But again, it uses ./.github/.hlint.yaml, which runs no hints.

We can either:

Tell the GH hlint to use the top-level .hlint.yml
Tell the GH hlint to also use our hlint. But this means that the workflow has to enter the nix shell, which means downloading 10-30 minute of stuff every time.
Remove the GH hlint altogether and rely on pre-commit-check

I'm not sure. I'm happy to not have the GH Hlint workflow, I don't find it that valuable. I think @zliu41 added it, what do you think?


416 ThaliNotificationClient

ThaliNotificationClient and tests are mostly new.
Smaller changes in ThaliNotificationAction.js and ThaliPeerDictionary.js and their tests to reflect new simpler design.
Small fix to runCoordinatedTests.js that allows one to set number of instances for coordinated test run.

This change is

Hi @juhanak, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Juhana Ilari Sakari Koski). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

PR is added to the queue for testing as 1. task. (6bb5f66)

Test (Success) 63910704 build is completed (6bb5f66)
See https://github.com/ThaliTester/TestResults/tree/639107046bb5f66_416_ThaliNotificationClient_juhanak/ for the logs

Test 639107046bb5f66(6bb5f66) has failed
See https://github.com/ThaliTester/TestResults/tree/639107046bb5f66_416_ThaliNotificationClient_juhanak/ for the fail logs

Reviewed 7 of 7 files at r1.
Review status: all files reviewed at latest revision, 20 unresolved discussions.

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 9 [r1] (raw file):
NB: Typically all the requires are bunched together without spaces at the top of the file just so that the eye can quickly skip over it. When you put in spaces you are saying "something interesting is happening here" and it causes the reader to stop and look to see what that interesting thing is. But in this case, with the exception of proxyquire which maybe you should put a space before, nothing interesting is going on so I would suggest removing the spaces between the lines.

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 26 [r1] (raw file):
This should not be capitalized. A capital variable name means it is a factory that constructs new instances and should only be used with new. But this is just a function and so should be named makeIntoCloseAllServer

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 62 [r1] (raw file):
Please set this to 0 just so that if we don't actually use a random port we will eventually get an error.

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 64 [r1] (raw file):
That seems like way too long a time out to be using for BVTs, I can see 10 seconds, but not 100!

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 81 [r1] (raw file):
NB: This will work as written but it would be polite to specify self.expressServer = makeIntoCloseAllServer(self.expressServer) as it makes it clear that a transformation is going on.

thali/NextGeneration/notification/thaliNotificationClient.js, line 81 [r1] (raw file):
Please do my paranoia a favor and put in an instance of check that unencryptedKeyId is a Buffer. If it is not then return null and log a warning.

thali/NextGeneration/notification/thaliNotificationClient.js, line 126 [r1] (raw file):
NB: From a style perspective I would get rid of the else statement and instead just initialize both _publicKeysToListen and _publisKeyToListenHashes to [] before you call the if statement.

thali/NextGeneration/notification/thaliNotificationClient.js, line 193 [r1] (raw file):
Since logging this data does constitute a security hole please file a bug to remind us to make sure to remove this.

thali/NextGeneration/notification/thaliNotificationClient.js, line 197 [r1] (raw file):
NB: We should probably at least log at the warning level that we are getting what are, in effect, bogus peer availability changed events.

thali/NextGeneration/notification/thaliNotificationClient.js, line 209 [r1] (raw file):
NB: It is very tempting to elevate this to an assert. This is bad and indicates something has gone wrong somewhere in thaliMobile.

thali/NextGeneration/notification/thaliNotificationClient.js, line 214 [r1] (raw file):
Why do you need to check exists? If remove is written correctly then nothing should break if you try to remove an entry that isn't there. In other words if you need the if then it means remove is broken. :)

thali/NextGeneration/notification/thaliNotificationClient.js, line 231 [r1] (raw file):
These tiny functions make the code harder to read, not easier because they require the reader to jump around. So unless you desperately need _addPeer for testing purposes please get rid of it.
BTW, a good counter point is _createNewAction. That is a function you need in two places so it makes sense to break it out even though it is also quite small.

thali/NextGeneration/notification/thaliNotificationClient.js, line 272 [r1] (raw file):
If there is a problem with enqueue it will be returned as an error response. So you need to check if the response is null or an Error. It doesn't throw.

thali/NextGeneration/notification/thaliNotificationClient.js, line 275 [r1] (raw file):
I don't believe you need a try catch since neither enqueue nor addUpdateEntry throws.

thali/NextGeneration/notification/thaliNotificationClient.js, line 299 [r1] (raw file):
NB: This isn't a useful comment as it states the obvious

thali/NextGeneration/notification/thaliNotificationClient.js, line 305 [r1] (raw file):
NB: See my previous comment :)

thali/NextGeneration/notification/thaliNotificationClient.js, line 309 [r1] (raw file):
You should really use a switch statement and not nested if/else/if statements.

thali/NextGeneration/notification/thaliNotificationClient.js, line 384 [r1] (raw file):
I recognize my writing so I assume you copied and pasted the above comment from one of my descriptions and I'm pretty sure now I'm wrong.
The scenario is as follows: Let's say that the android phone has detected a ton of devices and so scheduled a bunch of notification actions to find out who those devices are. One of the notification actions resolves to the identity of a peer that the Android device really wants to replicate with. But right now there are no open slots to do the replication with because all the Bluetooth connection slots are filled up with activate notification actions.
At this point the pool manager has two choices. It can wait for one of the notification actions to finish and then use that slot for replication. Or, more likely, it can decide that since people are always moving around there is no time to lose and therefore it will just nuke one of the notification actions in order to open a slot for a replication action.
There is another scenario where we dump a ton of notification actions into the peer pool's queue and we add so many that the peer pool has to kill them to pull them out. But that really shouldn't happen and if it did it should result in an error from enqueue not a kill.
So I think for now we should treat a KILLED as being the equivalent of a bad network connection and retry.

thali/NextGeneration/notification/thaliNotificationClient.js, line 397 [r1] (raw file):
It turns out that it can be very useful to add in a tiny randomly generated delta to keep everyone from retrying in lock step (which really does a number on network utilization). So in the code that calls RETRY_TIMEOUTs you should add a small random generated delay of say between 0 and 100 ms just to keep folks out of synch.

thali/NextGeneration/notification/thaliPeerDictionary.js, line 104 [r1] (raw file):
NB: /defied/defined/

Comments from the review on Reviewable.io

PR is added to the queue for testing as 1. task. (4b9b71d)

Test (Fail) 63910704 build is completed (4b9b71d)
See https://github.com/ThaliTester/TestResults/tree/639107044b9b71d_416_ThaliNotificationClient_juhanak/ for the logs

PR is added to the queue for testing as 2. task. (05f2a33)

Test (Success) 63910704 build is completed (05f2a33)
See https://github.com/ThaliTester/TestResults/tree/6391070405f2a33_416_ThaliNotificationClient_juhanak/ for the logs

Review status: 3 of 7 files reviewed at latest revision, 20 unresolved discussions.

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 26 [r1] (raw file):
fixed.

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 62 [r1] (raw file):
fixed.

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 64 [r1] (raw file):
Ups, Good catch. It was supposed to be 10 seconds.

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 81 [r1] (raw file):
Ok. fixed

thali/NextGeneration/notification/thaliNotificationClient.js, line 81 [r1] (raw file):
Ok. I added Buffer.isBuffer check.

thali/NextGeneration/notification/thaliNotificationClient.js, line 126 [r1] (raw file):
Thanks. Indeed it makes it cleaner.

thali/NextGeneration/notification/thaliNotificationClient.js, line 193 [r1] (raw file):
https://github.com/thaliproject/Thali_CordovaPlugin/issues/674

thali/NextGeneration/notification/thaliNotificationClient.js, line 197 [r1] (raw file):
Added logging

thali/NextGeneration/notification/thaliNotificationClient.js, line 209 [r1] (raw file):
Ok, asserted it.

thali/NextGeneration/notification/thaliNotificationClient.js, line 214 [r1] (raw file):
There was an assert inside the remove function that checked if the entry exists or not. I removed it so remove doesn't throw errors even if the entry doesn't exists.

thali/NextGeneration/notification/thaliNotificationClient.js, line 231 [r1] (raw file):
Thanks for pointing this out again. Fixing it
(short irrelevant history: _addPeer and _createNewAction were one function first. They were split apart when I realized I need _createNewAction functionality in two places. And well then I didn't notice that _addPeer became quite useless)

thali/NextGeneration/notification/thaliNotificationClient.js, line 272 [r1] (raw file):
Fixed.

thali/NextGeneration/notification/thaliNotificationClient.js, line 275 [r1] (raw file):
Ups. Right. Fixed it so that if the enqueue returns an error we don't add the peer to the dictionary.

thali/NextGeneration/notification/thaliNotificationClient.js, line 309 [r1] (raw file):
Fixed. Indeed the switch statement made it cleaner.

thali/NextGeneration/notification/thaliNotificationClient.js, line 384 [r1] (raw file):
Ok, moved KILLED to the same switch path with network problems. However I wonder should we have a less aggressive retry timeout for this case. I mean if the peer pool is under heave pressure waiting 100 ms and trying again may not help it..

thali/NextGeneration/notification/thaliNotificationClient.js, line 397 [r1] (raw file):
Sure, I added 0-100 ms random component to the timeout timer.

thali/NextGeneration/notification/thaliPeerDictionary.js, line 104 [r1] (raw file):
fixed.

Comments from the review on Reviewable.io

Test<PHONE_NUMBER>f2a33(05f2a33) has failed
See https://github.com/ThaliTester/TestResults/tree/6391070405f2a33_416_ThaliNotificationClient_juhanak/ for the fail logs

Reviewed 3 of 3 files at r2, 1 of 1 files at r3.
Review status: all files reviewed at latest revision, 2 unresolved discussions.

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 64 [r1] (raw file):
It's still 100 seconds

thali/NextGeneration/notification/thaliNotificationClient.js, line 384 [r1] (raw file):
The retry will only happen if the pool actually schedules the action. If it's under pressure then the action's start won't be called anyway.

Comments from the review on Reviewable.io

PR is added to the queue for testing as 1. task. (6ed3de5)

Test (Success) 63910704 build is completed (6ed3de5)
See https://github.com/ThaliTester/TestResults/tree/639107046ed3de5_416_ThaliNotificationClient_juhanak/ for the logs

Test 639107046ed3de5(6ed3de5) has failed
See https://github.com/ThaliTester/TestResults/tree/639107046ed3de5_416_ThaliNotificationClient_juhanak/ for the fail logs

PR is added to the queue for testing as 1. task. (8b8fbc2)

Test (Success) 63910704 build is completed (8b8fbc2)
See https://github.com/ThaliTester/TestResults/tree/639107048b8fbc2_416_ThaliNotificationClient_juhanak/ for the logs

Test 639107048b8fbc2(8b8fbc2) has failed
See https://github.com/ThaliTester/TestResults/tree/639107048b8fbc2_416_ThaliNotificationClient_juhanak/ for the fail logs

PR is added to the queue for testing as 1. task. (0172e2e)

Test (Success) 63910704 build is completed (0172e2e)
See https://github.com/ThaliTester/TestResults/tree/639107040172e2e_416_ThaliNotificationClient_juhanak/ for the logs

Test<PHONE_NUMBER>72e2e(0172e2e) has failed
See https://github.com/ThaliTester/TestResults/tree/639107040172e2e_416_ThaliNotificationClient_juhanak/ for the fail logs

Reviewed 1 of 1 files at r5.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from the review on Reviewable.io


d.preventDefault is not a function

when I write" $('.xxx').on('tap', function(){
// dosmothing;
return false;
}) "
it's d.preventDefault is not a function;

@a6051529 I can't reproduce. Please share your example (via jsbin.com or jsfiddle.net).

@a6051529, here's your case: http://jsfiddle.net/5ffwgLj6/2/.
Works perfectly in all the modern browsers. Could you please update us with the info on the browser/OS/device you're testing on?
Thanks.

@pukhalski  @ezhlobo  I use zepto.js for seajs,The seajs is an AMD Module Loader，When I  use zepto.js not zepto.js for seajs ,it is OK!,When I use zepto.js for seajs, It is d.preventDefault is not a function;

Thanks, @a6051529, for a very specific case. Let me check it out.

@pukhalski   Thanks, very much

I've discovered the same error when enabling touch events in the Firefox Developer Edition's Responsive Design Mode.

@jsor, what version do you use?
@ezhlobo, could you please advice?

<EMAIL_ADDRESS>from npm (1.0.8 isn't available yet), Firefox 46.0a2 (2016-03-07).


Reuse a single comment on GitLab if pipelines can't be used

On GitLab, to be able to show pipelines on merge requests, Packit needs to have access to the source (=usually fork) project. Currently, if we don't have the rights, we request access and use comments instead.
@mfocko has suggested the following approach to improve the UX:
GitLab now supports history for the comments on MRs, so one of my ideas is to have »one« Packit comment containing commit hash, timestamps and all of the statuses updated over time (also with a history). Such as
     <!-- packit-stg CI; »do not edit« -->
     commit hash: aaaaaaa
     updated: 2023-01-02 12:34:56

     | Job                                               | Status  |
     | ------------------------------------------------- | ------- |
     | [rpm-build:fedora-rawhide-x86_64](dashboard link) | success |

Part of packit/packit-service#1821 epic.

If there is no strong demand for this, there is a really small chance we will work on this so I am going to close this issue but let us know if you consider this important.

I noticed this just now in https://gitlab.com/libblkio/libblkio/-/merge_requests/228 . Don't know if 1 user is strong demand enough, but it'd be really nice to see this implemented.

Let's reopen then..;) Sadly, there are not many users on GitLab and the existing users tend to migrate away...;(

Let's reopen then..;)

Thanks @lachmanfrantisek :)

In cryptsetup project, we would also be interested in this feature, as we are not fond of giving write access to the Packit bot as a workaround for GitLab API permissions.

@lachmanfrantisek gentle nudge on this one :) . libblkio project currently has fedora copr builds on every MR and they are ok so far with the noise but I fear they may not be once I add TMT tests generating even more noise :) .

Any update? We would also like to see this move forward.

Hello,
sorry it is taking us too long. The thing is that there are not many GitLab users so it's not efficient to spend much time on it, but we welcome any help! Also, this workarounds the GitLab behaviour what is the core issue here.


fix: improve onBeforeRender() env logic

@AurelienLourot

I went ahead and merged, but let me know if you object @AurelienLourot

Looks good, thanks for the heads-up!


[Admin] (loc priority for add-ins docs) Update value of localization_priority metadata attribute.

Articles that have been assigned localization_priority: Priority include:

all landing pages (main, host-specific, topic-specific like design, testing, etc.)
all quick starts and tutorials
other strategic/important content

Docs Build status updates of commit 7eee09d:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/add-ins/activation-rules.md
:white_check_mark:Succeeded

docs/add-ins/apis.md
:white_check_mark:Succeeded

docs/add-ins/authenticate-a-user-with-an-identity-token.md
:white_check_mark:Succeeded

docs/add-ins/authenticate-a-user-with-an-sso-token.md
:white_check_mark:Succeeded

docs/add-ins/contextual-outlook-add-ins.md
:white_check_mark:Succeeded

docs/add-ins/extension-module-outlook-add-ins.md
:white_check_mark:Succeeded

docs/add-ins/get-attachments-of-an-outlook-item.md
:white_check_mark:Succeeded

docs/add-ins/insert-data-in-the-body.md
:white_check_mark:Succeeded

docs/add-ins/inside-the-identity-token.md
:white_check_mark:Succeeded

docs/add-ins/item-data.md
:white_check_mark:Succeeded

docs/add-ins/metadata-for-an-outlook-add-in.md
:white_check_mark:Succeeded

docs/add-ins/outlook-mobile-addins.md
:white_check_mark:Succeeded

docs/add-ins/outlook-on-send-addins.md
:white_check_mark:Succeeded

docs/add-ins/pinnable-taskpane.md
:white_check_mark:Succeeded

docs/add-ins/read-scenario.md
:white_check_mark:Succeeded

docs/add-ins/sideload-outlook-add-ins-for-testing.md
:white_check_mark:Succeeded

docs/add-ins/troubleshoot-outlook-add-in-activation.md
:white_check_mark:Succeeded

docs/add-ins/understanding-outlook-add-in-permissions.md
:white_check_mark:Succeeded

docs/add-ins/use-regular-expressions-to-show-an-outlook-add-in.md
:white_check_mark:Succeeded

docs/add-ins/use-rest-api.md
:white_check_mark:Succeeded

docs/add-ins/web-services.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


[stable/coredns] update to 1.0.6 and small improvements

Updating the chart to latest stable version, 1.0.6.
Adding the functionality to roll the deployment upon config changes.
Moving ClusterIP configuration to outside the kubernetes plugin section, since it may be useful to configure even if running without the kubernetes plugin.

@k8s-ci-robot CLA signed :)

/ok-to-test

/lgtm


colorized output truncated in node 6

Everything works beautifully with latest stable xo in node 5. Switching to node 6, output is truncated after a few lines. Piping output through a filter prevents clipping, for instance by doing xo | tee.

Yes, this is a known Node.js 6 bug. It's going to be fixed very soon (https://github.com/nodejs/node/issues/6980#issuecomment-221713311).

Excellent! :)


newstyes.css

added media query

@AshtonFabby A media query was adding on a previous PR. Are there any additions you would like to make to what has already been merged?


added BinaryTree folder

Great work @Tanyamodi  please give this repo a star if it really helped you to complete your PR.
Also follow me for follow back if you want to get connected with me for any such open source contribution program. Thank you 😊