added JSON singleton

There was no way to access JSON functionality in scripting languages
apart from GDScript because the JSON class wasn't exposed to ClassDB.

I guess we might remove to_json and parse_json from GDScript if we go the singleton way (no need to duplicate the functionality).
Also, you might add an additional parse method, which returns the result directly, or errors out if there is an error (thus skipping JSONParseResult).

Yes, that was the plan, those wouldn't be of any use anymore.
Actually I like the explicit return container, you can still get the result with JSON.parse(str).result but it gives you less room for speculation. If you have a Variant parse_json() with a comment: "returns error code when json can't be parsed" then I think that's a lot less informative than a container where you can explicitly access the error code and other information.
The naming I don't really care about.

Although it is merged, stringify or encode is way better names for an serialization function than print I think. "Encoding into a variable" is more intuitive than "Printing into a variable" while serializing any data. Second includes the confusion about "Input is already serialized or not?" And also "where is the serialization function?".
Naming is the most important part for long term maintainability of the code I think. Thus I am concern enough to write this comment.


Data down actions up.

This pr changes the functionality of this addon significantly.  It removes the value attribute and changes selected to read only.
At first I attempted to allow both "two way binding" or "oneway with actions" but failed to come up with a elegant way to differentiate between the two.
Personally I have come to the conclusion that the component should not mutate the object but only send actions and if I want the component to mutate a property I should wrap the component in another component and implement the mutation there.

@arenoir, please read the discussion in this PR and on this topic.
Bottom line is that "Data down actions up" doesn't apply to every case.
Ember 2.0 will have primitives to allow components to change data that is passed in: <my-video paused={{mut isPaused}}></my-video>
Also, even React allows these kind of things.
Think about a long form with many selects. It would very cumbersome to write an action to each select instance. I think it would be a step backwards.
However, like @sandsrom mentioned here, there are some cases where an action is more appropriate.
I believe that this component would lose a lot of its usefulness if it only supports "Data down actions up" paradigm. I'm open for discussion, of course.

Yes I agree there are cases for two way bindings and form elements are usually a good case. So until we can specify a property as mutable perhaps there should be an additional property to flag it as such isSelectionMutable?

That would be in line with #53.


missing ; in example code

In order to make ferm happy with the @include line, I needed to add a terminal ;.  This appears to be a documentation bug.

PR 👍 https://github.com/diefans/ferment/pull/7


Fix External Account Json Schema Issue

Describe your changes:
Fixes Json Schema Issue on Bigquery

Type of change:

[x] Bug fix
[ ] Improvement
[ ] New feature
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation

Checklist:

[x] I have read the CONTRIBUTING document.
[ ] My PR title is Fixes <issue-number>: <short explanation>
[ ] I have commented on my code, particularly in hard-to-understand areas.
[ ] For JSON Schema changes: I updated the migration scripts or explained why it is not needed.

Merging this again ( as it was already approved, fixed a failure in  tests which lgtm now )


plugin: unbound SRV records overrides

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

[ x] I have read the contributing guide lines at https://github.com/opnsense/core/blob/master/CONTRIBUTING.md
[ x] I am convinced that my issue is new after having checked both open and closed issues at https://github.com/opnsense/core/issues?q=is%3Aissue

Is your feature request related to a problem? Please describe.
With removal of custom options it would be great to support SRV records (and maybe more DNS record types) in overrides.
Describe the solution you like
So far following config in custom options worked.
server:
local-data: "_service._tcp.domain. 3600 IN SRV 0 100 88 host.domain."
Describe alternatives you considered
To get rid of custom settings
Additional context
N/A

I'm also very interested by this one !
I was using it for my apt-proxy to be discovered easily :
local-data: "_apt_proxy._tcp. 180 IN SRV 10 0 3142 my-apt-proxy-server.lan."
I've seen advice that I should use a "real" DNS server for that, but thet feels like a lot of work for only one line that is possible with unbound and just not with the gui...
I'll try to have a look if I can make a PR but I'm really new at dev on opnSense


Notify different group or even protocol on diffrent alert

Hi,
currently alerta looks like "notification aggregator" for me, but i really cant see any possibility to send info about alarms to different people or even protocols, or at least different chat groups...
I have to notify my manager by email, and other team prefer slack or telegram. some of them have to be notified about only specific types of alerts. I already ave them in db but how can i send them ?
Alerta have really lots of filed that describes the alert but where is some kind of "alert router" ?
Am i ready documentation wrong?

any ideas ?

There is an outstanding pull request to do just what you ask for (see #220). I was waiting for some feedback before I merged it.
This should enable you to route alerts to different notification plugins based on alert attributes.
You could try this branch and give me feedback or if you can wait until next week I'll meege this and make it a new release available for download.

Nick, thats cool!
and of cause i want to take part in tests. but in #220 i see only mentions about routing plugins, but no plugins :( Are they missing from pr?

The plugins themselves do not change. Everything should work as before unless you add a routing.py file which has a “rules” method. you get access to the list of available plugins and the current alert and need to return the list of plugins you want the alert to be sent to.

Example routing file https://github.com/guardian/alerta/blob/7fd5f97f2ded6272df69253f419da09abe6ad769/contrib/routing/routing.py

Waiting for the notify plugin.


Virtualization Demo write-up

with Information View OMAS

Please review the draft: https://www.odpi.org/?p=91197&preview=true

This is the link to the published blog https://www.odpi.org/blog/egeria/2019/10/22/using-egeria-to-integrate-with-data-virtualization-tool


cmd/go: TestScripts/svn fails if TZ database not installed

What version of Go are you using (go version)?

$ go version
go version devel go1.20-3ba3b4893f Wed Nov 2 14:43:52 2022 +0000 linux/amd64

Does this issue reproduce with the latest release?
Only in tip
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/root/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/root/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/src/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/src/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="devel go1.20-3ba3b4893f Wed Nov 2 14:43:52 2022 +0000"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/usr/local/src/go/src/go.mod"
GOWORK=""
CGO_CFLAGS="-O2 -g"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-O2 -g"
CGO_FFLAGS="-O2 -g"
CGO_LDFLAGS="-O2 -g"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3269867307=/tmp/go-build -gno-record-gcc-switches"

What did you do?

go test -run TestScripts/svn/hello -count 1 ./cmd/go/internal/vcweb/vcstest
What did you expect to see?
ok      cmd/go/internal/vcweb/vcstest   0.155s
What did you see instead?
  vcstest_test.go:136: 2022/11/02 07:32:23 hello.txt:
        > handle svn
        > env TZ='America/New_York'
        > mkdir db/transactions
        > mkdir db/txn-protorevs
        > chmod 0755 hooks/pre-revprop-change
        > env ROOT=$PWD
        > cd .checkout
        > svn checkout file://$ROOT .
        [stdout]
        Checked out revision 0.
        > svn add hello.go
        [stdout]
        A         hello.go
        > svn commit --file MSG
        [stdout]
        Adding         hello.go
        Transmitting file data .done
        Committing transaction...
        Committed revision 1.
        > svn propset svn:author 'rsc' --revprop -r1
        [stdout]
        property 'svn:author' set on repository revision 1
        > svn propset svn:date '2017-09-22T01:12:45.861368Z' --revprop -r1
        [stdout]
        property 'svn:date' set on repository revision 1
        > svn update
        [stdout]
        Updating '.':
        At revision 1.
        > svn log
        [stdout]
        ------------------------------------------------------------------------
        r1 | rsc | 2017-09-22 01:12:45 +0000 (Fri, 22 Sep 2017) | 3 lines

        hello world

        ------------------------------------------------------------------------
        > cmp stdout .svn-log
        diff stdout .svn-log
        --- stdout
        +++ .svn-log
        @@ -1,5 +1,5 @@
         ------------------------------------------------------------------------
        -r1 | rsc | 2017-09-22 01:12:45 +0000 (Fri, 22 Sep 2017) | 3 lines
        +r1 | rsc | 2017-09-21 21:12:45 -0400 (Thu, 21 Sep 2017) | 3 lines

         hello world

Additional info

Same failure happens in test1-svn-git.txt and test2-svn-git.txt.
These tests were added in CL 427914, but they have been expanded in as part of #27494.
I'm running these tests on a Linux distro with svn but without tzdata.

The TestScripts/svn tests are not hermetic, they set TZ='America/New_York' at the beginning and expect svn to honor that time zone when formatting date strings. Unfortunately, svn can only format dates using UTC if the TZ database is not installed.
These are the offending lines:
        > cmp stdout .svn-log
        diff stdout .svn-log
        --- stdout
        +++ .svn-log
        @@ -1,5 +1,5 @@
         ------------------------------------------------------------------------
        -r1 | rsc | 2017-09-22 01:12:45 +0000 (Fri, 22 Sep 2017) | 3 lines
        +r1 | rsc | 2017-09-21 21:12:45 -0400 (Thu, 21 Sep 2017) | 3 lines

The first date timezone is UTC and has been formatted by svn.
The second date timezone is UTC-4 and is hardcoded in the test case (here).
@bcmills

I believe that we can fix this issue by changing env TZ='America/New_York' to env TZ='' and updating the hardcoded date to be formatted as UTC. This way we wouldn't need the TZ database, and the test coverage would remain the same (IMO).

That seems like a fine solution as long as the tests that use that repo don't depend on that timezone information.


Suggest cargo install url using --git

Problem
Currently, someone may try cargo install https://github.com/light4/cargo-info, then I see.
    Updating crates.io index
error: could not find `https://github.com/light4/cargo-info` in registry `crates-io` with version `*`

Proposed Solution
It would be nice to see a suggestion to ask the user to run the same command with --git.
Notes
No response

I'm trying to think of what a user might type in, valid or not,

Valid: Crate names (identifiers, might expand to <identifier>[@<version>]
Invalid: path (foo/bar)
Invalid: git url, including

https://github.com/rust-lang/cargo.git
git@github.com:rust-lang/cargo.git
https://github.com/rust-lang/cargo
https://bitbucket.org/jcmoyer/rust-tictactoe/src/master/
https://bitbucket.org/jcmoyer/rust-tictactoe.git
git@bitbucket.org:jcmoyer/rust-tictactoe.git

Ideas

We can check if the path ends in .git
We can check for git@
Its probably safe to assume that if its a URL that is more than a path, then its git because the likelihood of a user entering a different URL is low.  If we add support for another VCS or URL use, we could expand it at that point.

We can check if the path ends in .git

Not a good idea as git can work without that.

We can check for git@

That limits the scope greatly given that ssh:// and https:// works.
What I think is when a path is invalid, maybe we can first probe git to try and clone it (given that you can use alias in git like gh: to https://github.com/), so I think the best way is to try clone (or search from a valid alias in github) without really cloning on failure to find it then suggest user based on that?
But most importantly we only suggest this when the input is invalid, so it's fine even though the suggestion may be incorrect, so we don't really have to git clone to probe it, can just suggest it when the crate name didn't work out.

We can check if the path ends in .git

Not a good idea as git can work without that.

We can check for git@

That limits the scope greatly given that ssh:// and https:// (and alias) works.

Note that my ideas for checking .git or git@ were not meant to be mutually exclusive with anything else but clues to help give the best hint.  These ideas are also predicated on the fact that most people are unlikely to hand-write a git url but copy from something.

What I think is when a path is invalid, maybe we can first probe git to try and clone it (given that you can use alias in git like gh: to https://github.com/), so I think the best way is to try clone (or search from a valid alias in github) without really cloning on failure to find it then suggest user based on that?

We probably should not make any network connections to determine what hint we should give.

But most importantly we only suggest this when the input is invalid, so it's fine even though the suggestion may be incorrect, so we don't really have to git clone to probe it, can just suggest it when the crate name didn't work out.

As I mentioned, there are other cases we should differentiate with like for paths.  That is why I was suggesting the URL approach so we can differentiate between an identifier, a path, and a url and suggest --git on urls.

Invalid: git url, including
* https://github.com/rust-lang/cargo.git

* [git@github.com](mailto:git@github.com):rust-lang/cargo.git

* https://github.com/rust-lang/cargo

* https://bitbucket.org/jcmoyer/rust-tictactoe/src/master/

* https://bitbucket.org/jcmoyer/rust-tictactoe.git

* [git@bitbucket.org](mailto:git@bitbucket.org):jcmoyer/rust-tictactoe.git

What about using this crate
https://crates.io/crates/git-url-parse
and specifically the parse method to verify if the invalid argument to install is actually a git url
https://docs.rs/git-url-parse/0.4.0/git_url_parse/struct.GitUrl.html#method.parse
then our hint can use the GitUrl struct to generate the appropriate suggestion?

GitUrl manages to successfully parse all 5 URLs that you gave, but installing from git@ urls fails.
cargo install --git git@github.com:rust-lang/cargo.git
error: invalid url `git@github.com:rust-lang/cargo.git`: relative URL without a base

Replacing Url with GitUrl in cargo feels like a bigger task than this ticket and current bandwidth allows. The question is - would you be amenable to using GitUrl only to verify that the cmdline argument is indeed a valid git URL and generate a suggestion that uses https for cargo install?

What do you think about this prototype? It uses GitUrl and then normalises git@ arguments into http-based git URLs that cargo currently supports.
https://github.com/rust-lang/cargo/pull/10522/files/e045b4f94dbf6ef25529d0dbfa974cebc65bc1b1..ef7ee2c7ee9e1373ec66f04460dca1db1da7f828

What do you think about this prototype? It uses GitUrl and then normalises git@ arguments into http-based git URLs that cargo currently supports.

Not sure if we want to normalize it but I think it's better to show the suggestion with the url that user was given rather than the normalized url, then the user might be surprised where did that url come from, if it's from their input then it should not be surprising.

Not sure if we want to normalize it but I think it's better to show the suggestion with the url that user was given rather than the normalized url, then the user might be surprised where did that url come from, if it's from their input then it should not be surprising.

if we leave the URL supplied by the user, the hint will suggest another failing command
cargo install git@bitbucket.org:jcmoyer/rust-tictactoe.git
    Updating crates.io index
error: could not find `git@bitbucket.org:jcmoyer/rust-tictactoe.git` in registry `crates-io` with version `*` # imagine this suggested add `install --git git@bitbucket.org:jcmoyer/rust-tictactoe.git

cargo install --git git@bitbucket.org:jcmoyer/rust-tictactoe.git
error: invalid url `git@bitbucket.org:jcmoyer/rust-tictactoe.git`: relative URL without a base

you are right about the principle of least surprise and I want to follow it, but I don't want to make a suggestion that also errors.
what if I restrict the hint suggestion to only return something for http(s) git URLs?


Toggle dropdowns by header + filter teams + fix create default brackets

Changed collapsing for teams, players, mappools and modbrackets. You can now click on the headers instead of just the button
Implemented filtering of teams
Fixed an issue where you couldn't create default brackets for a mappool after deleting a mod bracket

Closes #15


Feature: Widget for dynamically adjustable vectors/arrays

Hi! 👋
In a project of mine, I sometimes need to input a list of identically-typed values where the number of values is variable (think of a list of chemical reactions to simulate for example). So far I couldn't find any type of "array widget" or "vector widget" here or in other related packages like PlutoExtras.jl, so I posted this issue.
Questions
I'll start with the main questions, details below:

Is this widget a feature that others would also like to have in PlutoUI.jl (or is there a better place for this)?
Should I create a PR to discuss details of my current prototype and (hopefully) smooth out its edges or find a better approach altogether?

Proposed Feature
VectorWidget that takes a given widget/bond and creates a list of independent copies of that widget. It should allow for dynamically adjusting the number of elements and return a Vector containing the outputs of the individual widgets. Adjusting the number of elements should not reset the previous inputs (see below).
Currently possible workarounds
So far I used a two-cell approach, where the first would define a numberOfElements for the vector input and the second cell contains a combine widget which creates numberOfElements copies of a given widget. My main problems with this approach are that it doesn't compose well (not possible to nest this workaround inside a combine widget) and that changing the numberOfElements will re-run the cell containing the array widget and reset its state.
Example implementation
I hacked together a solution that (kind of) works for me and behaves like this:
https://github.com/JuliaPluto/PlutoUI.jl/assets/102872423/763daf4c-ef95-4aaf-bd8d-9f70b4bd00f0
There are still some problems I couldn't figure out so far:

not all widgets work properly as vector elements (but combine works, which is mostly enough for me)
composing the VectorWidget with other widgets inside a combine doesn't work yet

Very cool! Can you write a bit more about the two bullet points at the end of your post, especially the first one? Can you share how you implemented this with combine?

In general, I think you would want to implement this yourself without combine. Take a look at how combine and confirm were implemented, maybe you can make a prototype? Please let me know if you have questions!

Thanks for your quick reply!

Can you write a bit more about the two bullet points at the end of your post, especially the first one? Can you share how you implemented this with combine?

Sure. I have uploaded a notebook with the current implementation here, that might be the easiest to see all the details:
https://gist.github.com/angerpointnerd/03955274a7855ba69fbf4f1c251de4d3
Here is a summary (disclaimer: I used Julia for a while now, but I'm relatively new to JavaScript and web development in general)

"simple" widgets like a text or number field work well (as in the demo), but for example MultiSelect, RangeSlider, or Clock don't work at the moment (either they return nothing inside the Vector or they don't update their values properly)
if the "list element" is itself a widget created with combine, it also works. So I can actually wrap the widgets above that don't work inside a combine and it works e.g. combine(Child -> Child(Clock()))

Regarding the current implementation, originally, I wanted to try this

supply a function that creates a widget, e.g. () -> TextField() or () -> combine(...) to create new list elements
when pressing "+", use that function to create a new widget and add it to the list
when pressing "-", remove it again

Since I couldn't figure out how to run a Julia function from within JavaScript, I went for creating just one widget at the start and then just copying it when pressing "+". This worked well with text fields, but I couldn't figure out how to properly create new combine widgets (or anything with custom <script> tags inside show) after the cell with @bind xyz VectorWidget(...) has already been run.
As far as I understand, the content of <script> gets handled in a special way by Pluto and "hidden" in the final DOM.
So my current solution for the whole widget is quite primitive: I supply a maximum number of list elements (I usually can estimate how many I will need at most ). All I have to do then is to hide/show the list elements when pressing the buttons – the extra elements are already there in the DOM, but will just be ignored. This is only a half-baked solution of course, but it would be enough for my current use case I think. The advantage is that I can generate proper widgets on the Julia side without having to worry about doing it later from within JS.

In general, I think you would want to implement this yourself without combine. Take a look at how combine and confirm were implemented, maybe you can make a prototype? Please let me know if you have questions! The progress you made so far looks very promising!

The current prototype is actually heavily inspired by the implementation of combine, especially the part that creates event handlers to listen for input events in any of the list elements 😅
I think I get the overall logic of how and why combine works the way it does, but I'm clearly missing something. My guess is that I'm not handling the interface between JS and Julia correctly.

Questions I have going forward:

Is it important whether one uses the Object.defineProperty(div, 'value', ...) or simply sets div.value ?
Is there any way to modify the <script> section of an element in the cell output after the cell has been run ? Or is there another way to attach a new "child" widget to an existing list ? I didn't dive deep enough into the Pluto internals yet to figure that out.

Hey @angerpointnerd, thanks for the detailed answer!
I really like the solution of defining a maximum, and rendering all widgets from the start. Genius! An addition would be to set disabled on the + button when you reach the limit.
In fact, this means that you can probably use combine and transformed_value to create this superwidget! That might be nicer and more future-proof than sharing some internals with combine.
My idea: use combine to create one widget with as children: all the precomputed bonds, plus one ControllerWidget:
before_transform = PlutoUI.combine() do Child
@htl """
<adjustable-vector>
<ul>
$(Child.(bonds))
</ul>

$(Child(ControllerWidget()))
</adjustable-vector>
"""
end
"""

Where ControllerWidget is the + - widget, which returns the number of elements selected. But it's also responsible for hiding/showing the vector bonds! And updating text.

Something like:

```html
@htl """
<adjustable-vector-controller>
<button class="button removeElementButton">–</button>
<button class="button addElementButton">+</button>

<script>
const controller = currentScript.closest("adjustable-vector-controller")
const widget = currentScript.closest("adjustable-vector")

const buttons = ...
let value = 1

buttons[1].addEventListener("click", () => {
	value += 1
	make_visible(0...value)
})

Object.defineProperty(controller, "value", {
	get: () => value,
})
</script>
</adjustable-vector-controller>
"""

Then with PlutoUI.Experimental.transformed_value you can put it together:
result = PlutoUI.Experimental.transformed_value(before_transform) do from_js
	values = from_js[1:end-1]
	num_elements = from_js[end]
	values[1:num_elements]
end

Hope this helps!
Btw, the advantage of Object.defineProperty is that this lets you write widgets that can also have their value set by Pluto. This happens when you have the same notebook open in two windows, or when two people connect to the same server. Try it with a Slider or some combine to see what I mean! But don't focus on it while you're prototyping.

Alternatively, to continue more in the direction of your existing approach:
We recently released this new feature: https://github.com/fonsp/Pluto.jl/pull/2726. You could use this to get the HTML repr of a newly generated widget.
You can't modify a <script>, but you can render new HTML if you want:
const div = document.createElement("div")
div.innerHTML = "..."
some_element.append(div)

Unfortunately, this won't run scripts included in the HTML. To get this, you could look into is the internals of Pluto's embed_display function. There is a <pluto-display> web component that you can use to create new displays (which would also execute

Btw I'm working on documentation! Take a look at https://plutojl.org/en/docs/advanced-widgets/
What do you think so far? What's missing? I would love a list of things-you-would-have-like-to-know-about when doing your research! There might be things that are not so obvious to me that need to be documented.

Thanks for your feedback @fonsp !
Creating the list of elements with combine, adding a "controller widget" (for the button logic) and then using transformed_value indeed makes it a lot easier. I got it to work now also with list elements that contain more JS logic than just text or number fields (I've updated the gist here with some examples: https://gist.github.com/angerpointnerd/03955274a7855ba69fbf4f1c251de4d3 )
What doesn't work yet, but would be nice to add is using the vector_widget within a combine widget. I'm not sure what the problem is exactly, except that the widget returns nothing at some point where it shouldn't 😅  For a split second after running the cell, the value looks right (probably just because the initial value is set somehow), but the vector widget doesn't get rendered correctly (it shows all elements instead of the initial number (1)) and errors whenever some event outside the vector widget happens:
(I re-ran the cell multiple times by holding Shift+Return to make it "stuck" at the point before the error, just to demonstrate the issue)
https://github.com/JuliaPluto/PlutoUI.jl/assets/102872423/b32b3157-922c-4c69-b5c1-ac136e8c1b12
The full error message is this:
Details

The value_from_js is ["", nothing, 1] where it should be ["", [""], 1] which appears for a short moment when executing the cell.
(Not really useful for me, but a vector_widget nested inside a vector_widget already works 😄 )

Btw I'm working on documentation! Take a look at https://plutojl.org/en/docs/advanced-widgets/
What do you think so far? What's missing? I would love a list of things-you-would-have-like-to-know-about when doing your research! There might be things that are not so obvious to me that need to be documented.

That looks great! I think I found many of the things mentioned there before, but spread across a few different notebooks and it just didn't occur to me how to properly combine the pieces.
I'll see if I can contribute anything.


Allow docroot definition, enable Mcrypt (using symlink, php5-mcrypt in r...

...equirements.apt), and .htaccess via Rewrite in app.yaml (and AllowOverride All)

We have a pretty new PHP platform now, so I'm closing this issue. Feel free to send a new pull request on this subject, but ready for merging in the new platform.
Thanks for contributing!


Refactoring static content code at UI to avoid multiple API calls

From @venkati-naidu on August 13, 2018 12:27
Copied from original issue: Microsoft/Access2Justice#356

@svasylenko Please validate completed.


added roomba 692

I added Roomba 692 with firmware 3.5.62 to README as it works without map like @Evil95 reported in issue #28

I took it manually because of a merge conflix, thank you!


Fix timestamp and exclude inactive nodes from voting

Excludes inactive nodes from voting and fixes a timestamp being used.

@quantumagi can you fix the conflict please 👍


Update package.xml

Some minor cleanup to the package.xml file to keep the Addon Manager happy and ensure that updates work correctly for users without git installed.

Merged, thanks, much better than my "fix" of moving everything in a subfolder :-p


Upgrade XMLSecurity to version 4.0.0

Description
The removed test was useless because now secureValidation is enabled by default.
Target

[x] I checked that the commit is targeting the correct branch (note that Camel 3 uses camel-3.x, whereas Camel 4 uses the main branch)

Tracking

[ ] If this is a large change, bug fix, or code improvement, I checked there is a JIRA issue filed for the change (usually before you start working on it).

Apache Camel coding standards and style

[x] I checked that each commit in the pull request has a meaningful subject line and body.

[x] I have run mvn clean install -DskipTests locally and I have committed all auto-generated changes

/component-test xmlsecurity


Hbase bulk delete fails with InsertionIdQueryFilter

When the bulk delete request is made to the endpoint it seems that the MultiRowRangeFilter and the InsertionIdQueryFilter are incompatible. It seems a work around is to check for single row filters in the 'HBaseOperations' class's 'createDeleter' method.

Fixed


Fix typo in documents

Hi,
There are a couple of small typos in the document.

Thank you, and sorry for the huge delay in merging.


[GLUTEN-1632][CH]Daily Update Clickhouse Version (20230707)

Auto commit by gluten daily build, please check the build status and merge it if it's green.

close it  due to build failed in clickhouse
···
[2023-07-06T23:33:17.258Z] In file included from ../ClickHouse/src/Coordination/KeeperContext.cpp:1:
[2023-07-06T23:33:17.258Z] In file included from ../ClickHouse/src/Coordination/KeeperContext.h:3:
[2023-07-06T23:33:17.258Z] In file included from ../ClickHouse/base/poco/Util/include/Poco/Util/AbstractConfiguration.h:22:
[2023-07-06T23:33:17.258Z] In file included from ../ClickHouse/contrib/llvm-project/libcxx/include/vector:293:
[2023-07-06T23:33:17.258Z] In file included from ../ClickHouse/contrib/llvm-project/libcxx/include/__memory/allocate_at_least.h:13:
[2023-07-06T23:33:17.258Z] /home/jenkins/agent/workspace/gluten/gluten-ci/gluten/cpp-ch/ClickHouse/contrib/llvm-project/libcxx/include/__memory/allocator_traits.h:298:9: error: no matching function for call to 'construct_at'
[2023-07-06T23:33:17.258Z]         _VSTD::construct_at(__p, _VSTD::forward<_Args>(__args)...);
···


For synchronous stages (chat, election), don't allow participants to move forward until N participants have hit the stage (add this stage parameter, and remove it from experiment parameters)

We now have minParticipants, which prevents everyone from starting (not completing) the stage if min participants is not reached. Is that acceptable?
I think it's okay to keep the experimenter param one—that prevents people from clicking "Start experiment" (which is before any of the stages). We might never use it but it's not actually redundant


Use klee_assume(s[N - 1] == '\0') call for the last element of string

closes #215

@sava-cska Done. Check it out, please.


Invalid version (multiple ranges)

Describe the bug
For package @rollup/plugin-node-resolve
Coordinates:
<dependency>
	<groupId>org.mvnpm.at.rollup</groupId>
	<artifactId>plugin-node-resolve</artifactId>
	<version>15.2.3</version>
	<scope>provided</scope>
</dependency>

The pom plugin-node-resolve-15.2.3.pom of the artifact contains a dependency to org.mvnpm:rollup with a problematic version range:
<dependency>
	<groupId>org.mvnpm</groupId>
	<artifactId>rollup</artifactId>
	<version>[2.78.0,3),[3.0.0,4),[4.0.0,5)</version>
</dependency>

(using the ${org.mvnpm-rollup.version} variable that I have resolved here)
To my knowledge this notation is not a valid pom.
To Reproduce
Reproducer with Gradle:
In a quarkus project with (see query on code.quarkus.io) add this dependency:
compileOnly 'org.mvnpm:flowbite:2.5.1'

See complete build.gradle file

plugins {
    id 'java'
    id 'io.quarkus'
}

repositories {
    mavenCentral()
    maven {
        name = "mvnpm"
        url = uri("https://repo.mvnpm.org/maven2")
        content {
            includeGroupByRegex "org\\.mvnpm.*"
        }
    }
    mavenLocal()
}

dependencies {
    implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
    implementation 'io.quarkiverse.web-bundler:quarkus-web-bundler:1.7.0'
    implementation 'io.quarkus:quarkus-arc'
    compileOnly 'org.mvnpm:flowbite:2.5.1'
    testImplementation 'io.quarkus:quarkus-junit5'
}

group 'org.acme'
version '1.0.0-SNAPSHOT'

java {
    sourceCompatibility = JavaVersion.VERSION_21
    targetCompatibility = JavaVersion.VERSION_21
}

test {
    systemProperty "java.util.logging.manager", "org.jboss.logmanager.LogManager"
}
compileJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << '-parameters'
}

compileTestJava {
    options.encoding = 'UTF-8'
}

The work-around for this issue is to add following constraint:
    constraints {
        compileOnly('org.mvnpm:rollup:4.21.0') {
            because 'Latest available at time of writing, because the pom of "org.mvnpm.at.rollup:plugin-node-resolve" is broken'
        }
    }

To make gradle use a specific version of org.mvnpm:rollup instead of the multi-version range that is problematic.

Hi @jmini - Thanks for this issue. Not sure why i thought that is valid. Seems like the valid way to achieve this will be
<dependencies>
    <dependency>
        <groupId>org.mvnpm</groupId>
        <artifactId>rollup</artifactId>
        <version>[2.78.0,3)</version>
    </dependency>
    <dependency>
        <groupId>org.mvnpm</groupId>
        <artifactId>rollup</artifactId>
        <version>[3.0.0,4)</version>
    </dependency>
    <dependency>
        <groupId>org.mvnpm</groupId>
        <artifactId>rollup</artifactId>
        <version>[4.0.0,5)</version>
    </dependency>
</dependencies>

Are you keep to provide a PR with the fix ?

Well I tested with maven:
Added my dependency:
        <dependency>
            <groupId>org.mvnpm</groupId>
            <artifactId>flowbite</artifactId>
            <version>2.5.1</version>
            <scope>provided</scope>
        </dependency>

The build seems to work.
And mvn dependency:tree displays:
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ code-with-quarkus-webbundler ---
[INFO] org.acme:code-with-quarkus-webbundler:jar:1.0.0-SNAPSHOT
[INFO] +- org.mvnpm:flowbite:jar:2.5.1:provided
[INFO] |  +- org.mvnpm.at.popperjs:core:jar:2.11.8:provided (version selected from constraint [2.9.3,3))
[INFO] |  +- org.mvnpm:mini-svg-data-uri:jar:1.4.4:provided (version selected from constraint [1.4.3,2))
[INFO] |  \- org.mvnpm:flowbite-datepicker:jar:1.3.0:provided (version selected from constraint [1.3.0,2))
[INFO] |     \- org.mvnpm.at.rollup:plugin-node-resolve:jar:15.2.3:provided (version selected from constraint [15.2.3,16))
[INFO] |        +- org.mvnpm.at.rollup:pluginutils:jar:5.1.0:provided (version selected from constraint [5.0.1,6))
[INFO] |        |  +- org.mvnpm.at.types:estree:jar:1.0.5:provided (version selected from constraint [1.0.0,2))
[INFO] |        |  +- org.mvnpm:estree-walker:jar:2.0.2:provided (version selected from constraint [2.0.2,3))
[INFO] |        |  \- org.mvnpm:picomatch:jar:2.3.1:provided (version selected from constraint [2.3.1,3))
[INFO] |        +- org.mvnpm.at.types:resolve:jar:1.20.2:provided
[INFO] |        +- org.mvnpm:deepmerge:jar:4.3.1:provided (version selected from constraint [4.2.2,5))
[INFO] |        +- org.mvnpm:is-builtin-module:jar:3.2.1:provided (version selected from constraint [3.2.1,4))
[INFO] |        |  \- org.mvnpm:builtin-modules:jar:3.3.0:provided (version selected from constraint [3.3.0,4))
[INFO] |        +- org.mvnpm:is-module:jar:1.0.0:provided (version selected from constraint [1.0.0,2))
[INFO] |        +- org.mvnpm:resolve:jar:1.22.8:provided (version selected from constraint [1.22.1,2))
[INFO] |        |  +- org.mvnpm:is-core-module:jar:2.15.1:provided (version selected from constraint [2.13.0,3))
[INFO] |        |  |  \- org.mvnpm:hasown:jar:2.0.2:provided (version selected from constraint [2.0.2,3))
[INFO] |        |  |     \- org.mvnpm:function-bind:jar:1.1.2:provided (version selected from constraint [1.1.2,2))
[INFO] |        |  +- org.mvnpm:path-parse:jar:1.0.7:provided (version selected from constraint [1.0.7,2))
[INFO] |        |  \- org.mvnpm:supports-preserve-symlinks-flag:jar:1.0.0:provided (version selected from constraint [1.0.0,2))
[INFO] |        \- org.mvnpm:rollup:jar:4.21.0:provided (version selected from constraint [3.0.0,4), [4.0.0,5), [2.78.0,3))

The line org.mvnpm:rollup:jar:4.21.0:provided (version selected from constraint [3.0.0,4), [4.0.0,5), [2.78.0,3)) is very interesting.
I am not sure if there is a specification about what is a valid definition for the version field.
And the pom was accepted on maven central: plugin-node-resolve-15.2.3.pom
And the Maven Central UI doesn't complain:
https://central.sonatype.com/artifact/org.mvnpm.at.rollup/plugin-node-resolve/dependencies
So it might be a gradle issue…

I think we can close this issue, see: https://github.com/gradle/gradle/issues/3869
I will put my example as a comment.

From the maven docs:

Multiple requirements are separated by commas.

sources: https://maven.apache.org/pom.html#Dependency_Version_Requirement_Specification

OK cool. So it is valid. I could not find the link you just provided, but that must be why I initially allowed it.
Thanks :)


[Feat]: Add nightcafe.studio website

What feature?
I would like to add nightcafe.studio.
Nightcafe.studio is a creative studio that specializes in immersive and captivating visual experiences. With a focus on digital art, animation, and interactive installations, Nightcafe.studio combines artistic vision with cutting-edge technology to create stunning and engaging visual narratives that push the boundaries of creativity and storytelling.
Add screenshots

Code of Conduct

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

Hello @JasonDsouza212 @VenomFate-619, I have added my work still my issue has been closed. Please look into the matter


DateTime with float ms formatted into unparsable ISO string

Trying to format datetime (loaded by Timex.Ecto.DateTime):
iex> %DateTime{calendar: :gregorian, day: 14, hour: 12, minute: 0, month: 1, ms: 0.0, second: 0, timezone: %Timex.TimezoneInfo{abbreviation: "UTC", from: :min, full_name: "UTC", offset_std: 0, offset_utc: 0, until: :max}, year: 2015}
|> DateFormat.format("{ISO}")
{ :ok, "2015-01-14T12:00:00.000.0+0000"}

I assume returned string is not follow ISO 8601:
iex> DateFormat.parse("2015-01-14T12:00:00.000.0+0000", "{ISO}")
{:error, "Input string does not match format!"}

Thanks for reporting, this is fixed in master. I'll push a new release to hex soon :)


More compatibility changes for expandable public builds

Includes:

[x] Adding a new property DependentPackages that can be populated by each language team in Language-Settings

This allow us to "customize" what packages appear while generating the set of PR Package properties. Language Settings Change

[x] Various updates to verify readmes, changelogs, and api changes

@praveenkuttappan this changes the DetectApi-Changes to be powered based off the files in PackageInfo, NOT the artifact list. This is the only change, and as far as I can tell this is transparent / I just need to update callsite to not include the extra parameter for Artifacts. Thoughts?
Example build using these changes

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow

@praveenkuttappan I've renamed which artifact path you pull from. Will get this into public PR to verify that no functionality is broken. I'll probably need to make a small change to each sync pr to remove the -ArtifactList parameter, but that's nbd.

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow

Looks good

👍 I'll ensure I see the same diffs for JS before merging (on a template run).

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow


readme: update circe-config version to 0.8.0

readme: update circe-config at libraryDependencies from 0.7.0 to 0.8.0

Thank you for the fix!

Codecov Report

Merging #286 (931fce3) into master (a45d03f) will decrease coverage by 0.07%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #286      +/-   ##
==========================================
- Coverage   95.31%   95.23%   -0.08%
==========================================
  Files           6        5       -1
  Lines          64       63       -1
==========================================
- Hits           61       60       -1
  Misses          3        3

Impacted Files
Coverage Δ

...3-/main/scala/io.circe.config/compat/package.scala

Continue to review full report at Codecov.

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


Write individual tests for each combinator

Probably also keep the one big sequencer test (https://github.com/kyren/gc-arena/blob/master/src/gc-sequence/tests/tests.rs#L13-L45) but also add a test per combinator

The gc-sequence crate was removed in #50, so I'll close this as no longer applicable.


Update yarn installation in CONTRIBUTING.md

Add an additional installation command in the case that the first
returns an error.

Awesome! Thank you~


🐞 Need to disable default scrollbar styles

Problem:
Default browser scrollbar styles will break the theme on Window systems.
Solution:
Need to replace all scrollbar with custom styles.

This is fixed on version 1.0.0 release.


docs(scully): fix typo in getting-started.md

PR Checklist
Please check if your PR fulfills the following requirements:

[X] The commit message follows our guidelines: https://github.com/scullyio/scully/blob/master/CONTRIBUTING.md#commit
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[X] Other... Please describe:
docs

What is the current behavior?

Issue Number: N/A
What is the new behavior?
Does this PR introduce a breaking change?

[ ] Yes
[ ] No

Other information

 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.


question for public key size

Hello
For the product unit public key, I saw that the size is defined as 68.
https://github.com/Infineon/wpcqi-optiga-trust-charge/blob/5c063574f14e521916a5f74339d92fed1a3bb31c/wpc/qi_auth_self_test.c#L51
But from the function comments. It said that  the size is 65 as shown below. So I'm a little confused about the size.
Could you help to explain it?
Thanks a lot

\param p_puc_pubkey_size[in][out] Size of the public key in the Product Unit Certificate.

                          Should fit PubKeyLength(uncopressed 64) + Compression Byte[1]

Hi @davesliu,
The defined size of 68 just allocates some extra bytes to the public key buffer. However, the qi_auth_prx_get_certchain_info() function copies only the required 65 bytes (compression byte + key value) into the buffer and rest of the bytes have garbage value. You can see that this function also returns the pubkey buffer size as 65. Therefore you can change the buffer size to 65 and this will not have any effect on the implementation.

But in fact, if you look at the source code of  mbedtls_ecp_point_write_binary
https://github.com/Infineon/wpcqi-optiga-trust-charge/blob/5c063574f14e521916a5f74339d92fed1a3bb31c/wpc/PRx/qi_auth_prx_crypt.c#L572
The length 68 is used. ...

Yes, the predefined value is passed to the function. But, as this function is used to copy the uncompressed form of public key into the buffer, it updates the buffer and its size variable accordingly. Therefore, the buffer size value will get updated to 65 after the execution of  mbedtls_ecp_point_write_binary function.

@ShaikKarishma0
Thanks for your detail explaination. :-)


Update ReadMe

Make the ReadMe more relevant with the right information to build.

readme updated with deployment information


Intercept Log

Hi Paul,
Just wondering if its possible to intercept the log from siesta.
I want to use:
https://github.com/Cosmo/TinyConsole
in my debug builds and i want to see the Siesta log output there too.
Thanks
Andrew.

Yup, Siesta has that.
(Feel free to reopen this if that’s not what you’re looking for.)


feat: stage individual hunk lines

Codecov Report
Attention: Patch coverage is 93.61702% with 9 lines in your changes are missing coverage. Please review.

Project coverage is 84.11%. Comparing base (2894a42) to head (b8d58e0).

Files
Patch %
Lines

src/ops/editor.rs
66.66%
6 Missing :warning:

src/screen/mod.rs
89.47%
2 Missing :warning:

src/git/diff.rs
96.42%
1 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##           master      #92      +/-   ##
==========================================
+ Coverage   83.89%   84.11%   +0.22%
==========================================
  Files          36       36
  Lines        2812     2921     +109
==========================================
+ Hits         2359     2457      +98
- Misses        453      464      +11

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


add support to Control fan speed

It must be done on smc super io

It must be done on smc super io

Then add frequency Data

This kext is for temp and watt and should be used in conjunction with smcsuperio for fan reading.

then there is no way for frequency?

Virtualsmc has no keys for the cpu freq

Virtualsmc has no keys for the cpu freq

Then is there any way to add support for "Stats" app which is found on github? It alread can get CPU frequency from "Intel Power gadget". maybe add something for it to read frequency?

Already tried in the past, you can't have virtual smc publish the frequency keys, fakesmc does it, but it's an obsolete method, and I don't care to work on it, use SMCAMDProcessor app if you like, but you can't have the keys on virtual smc.

And I'm not going to talk about it any further, it's not feasible on this kext.


Entities missing with recordedEntitiesOnly: true

I have 6 Dallas Temperature sensors that show recorded data in the graph and also in the dropdown.

If i enable recordedEntitiesOnly
      - type: custom:history-explorer-card
        recordedEntitiesOnly: true

only two of the sensors are in the dropdown list.

These two sensors are also added to the default HA History.
history:
  use_include_order: true
  include:
    entities:
      - sensor.ds18b20_02
      - sensor.ds18b20_04
      - ...

If i remove them from the history configuration the dropdown is empty.
So are the entities selected from the history and not from the recorder?
Thanks for this beautifull card!

Yeah I've noticed something similar with a sensor of mine who would not appear in the list when recordedEntitiesOnly was true. It should return the list from the record component, the entries under history should be entirely unrelated. Basically the card does a query to the database (the record component) asking for a list of entities that are actively recorded during the last hour. If I do more than an hour, things become very slow and it didn't seem to fix the problem. I don't know why the list returned by the database query sometimes doesn't include all entities.
What happens if you go to the native HA history panel and request the history for the last hour, over all entities (not only a specific one) ? Do they appear there if you remove any specific inclusions and exclusions from the history setting in configuration.yaml (maybe just comment out the entire history config, but don't change the recorder config !).
Trying to chase this one down, it's a little strange.

I think I have to clean up again. :rofl:
That produces a lot of color, but the 6 dallas sensors are shown,

also in the dropdown of the history card with recordedEntitiesOnly: true.
But if i remove everything from the history the dropdown is empty again.
Maybe it's related to my recorder settings?
I don't record anything by default, only by adding entities to the recorder config.
db_url: !secret db_url
# purge_interval: 0 # Deprecated in 0.109
auto_purge: False
include:
  entities:
    - ...
    # DS18B20 Hub
    - sensor.ds18b20_01
    - sensor.ds18b20_02
    - sensor.ds18b20_03
    - sensor.ds18b20_04
    - sensor.ds18b20_05
    - sensor.ds18b20_06
    - ...

Thanks for your effort.

Thanks for your investigation, that helped. I found the issue, after digging around the HA source for the recorder and history components. Sadly, this behavior is by design and I don't see any way to disable it without changing the HA source code or writing a new custom component to provide an unfiltered database query.
The problem is that for HA, the REST API call to query the database is part of the history integration, not the recorder one. So if you issue a general database query (ie you don't request specific entities, you just want to know all recorded entities), then the history include / exclude config settings are automatically applied to your query. This is hardcoded in the history component and there's no way to disable this.
 I'll try to bring this up in the HA dev discord, but I don't expect that it will make any difference. The only ways to work around this is either to disable recordedEntititesOnly or to not exclude the entities in the history section of configuration.yaml. For now I will add a comment to the readme about this behavior.

That's not a problem for me.
I disable recordedEntititesOnly and all is good.
Thanks once again!

I'm still trying to find a way around that, if there's any. It makes recordedEntititesOnly much less useful, especially for power users who have already configured their native history panel.


Relay: Wrap resolve_model_node with django_resolver

Currently:
https://github.com/strawberry-graphql/strawberry-graphql-django/blob/8f82b84141c182980b5001b4f0f562c787fe2dda/strawberry_django/relay.py#L395
Only the actual get/first methods are being wrapped for async safety.
There are cases where I need to access data not fetched yet in the custom get_queryset resolver (permissions, system settings, etc) defined up:
https://github.com/strawberry-graphql/strawberry-graphql-django/blob/8f82b84141c182980b5001b4f0f562c787fe2dda/strawberry_django/relay.py#L380-L382
I went ahead and just wrapped the whole resolve_model_node resolver with django_resolver and didn't notice any difference.
I found this while trying to customize how a node is being resolved:
    node: relay.Node = relay.node()

Hi @SafaAlfulaij ,
Indeed the current get_queryset is not async safe.
Maybe we could wrap everything from that line to the end inside django_resolver? If so, it would make sense to do the same for non relay access as well

@bellini666 Yeah, that should be sufficient.

@bellini666 Yeah, that should be sufficient.

@SafaAlfulaij do you want to try to open a PR for that? Otherwise I'll try to take a look at the end of this week


无法进入一些目录

谢谢提供软件，我使用的是vps centos7 下载很方便，但有些目录识别为文件了 它不带有 / 。使用cd 后提示文件不存在，在更改文件夹名字后正常，更改为原文件名也正常，都识别为文件夹了，可以进入了。
识别成文件很麻烦，不知道是什么原因？不知道我说明白了没

大概能理解，开始下debug日志，贴上来看看

使用另外vps 一样,
[root@ny data]# aliyunpan ls
[2021-12-4 11:08:22.212] do request url: https://api.aliyundrive.com/v2/user/get
[2021-12-4 11:08:24.793] do request url: https://api.aliyundrive.com/v2/databox/get_personal_info
[2021-12-4 11:08:25.851] do request url: https://api.aliyundrive.com/v2/sbox/get
[2021-12-4 11:08:26.139] do request url: https://api.aliyundrive.com/adrive/v1/user/albums_info
[2021-12-4 11:08:27.028] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:08:27.311] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:08:28.922] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:08:29.325] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:08:29.607] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:08:31.292] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:08:31.726] do request url: https://api.aliyundrive.com/v2/file/list
文件大小       修改日期               文件(目录)
0         -  2021-12-03 15:02:34  S01/
1         -  2021-12-03 15:01:34  S0/
2         -  2021-12-03 14:52:22  ppp/
3         -  2021-11-24 08:42:44  S05/
/                      24 08:42:43  S06
/                      24 08:42:41  S03
/                      24 08:42:40  S04
/                      24 08:42:39  S02
总: 0B                       文件总数: 0, 目录总数: 8
[root@ny data]# aliyunpan ls S06
[2021-12-4 11:08:59.583] do request url: https://api.aliyundrive.com/v2/user/get
[2021-12-4 11:09:01.631] do request url: https://api.aliyundrive.com/v2/databox/get_personal_info
[2021-12-4 11:09:01.956] do request url: https://api.aliyundrive.com/v2/sbox/get
[2021-12-4 11:09:02.269] do request url: https://api.aliyundrive.com/adrive/v1/user/albums_info
[2021-12-4 11:09:02.567] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:02.864] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:04.235] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:04.645] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:04.934] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:06.335] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:06.756] do request url: https://api.aliyundrive.com/v2/file/list
文件不存在
[root@ny data]# aliyunpan cd S06
[2021-12-4 11:09:28.761] do request url: https://api.aliyundrive.com/v2/user/get
[2021-12-4 11:09:29.998] do request url: https://api.aliyundrive.com/v2/databox/get_personal_info
[2021-12-4 11:09:30.329] do request url: https://api.aliyundrive.com/v2/sbox/get
[2021-12-4 11:09:30.651] do request url: https://api.aliyundrive.com/adrive/v1/user/albums_info
[2021-12-4 11:09:30.945] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:31.231] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:32.690] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:33.116] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:33.390] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:34.895] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:35.314] do request url: https://api.aliyundrive.com/v2/file/list
文件不存在
[root@ny data]# aliyunpan d S06
[2021-12-4 11:09:43.768] do request url: https://api.aliyundrive.com/v2/user/get
[2021-12-4 11:09:45.045] do request url: https://api.aliyundrive.com/v2/databox/get_personal_info
[2021-12-4 11:09:45.372] do request url: https://api.aliyundrive.com/v2/sbox/get
[2021-12-4 11:09:45.665] do request url: https://api.aliyundrive.com/adrive/v1/user/albums_info
[2021-12-4 11:09:45.957] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:46.239] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:47.715] do request url: https://api.aliyundrive.com/v2/file/list
[0] 提示: 当前下载最大并发量为: 1, 下载缓存为: 65536
[2021-12-4 11:09:48.152] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:48.600] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:49.953] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:50.554] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:50.838] DEBUG: PANCOMMAND WARN: 文件不存在
[1] 加入下载队列: /来自分享/明星大侦探1-6季/S06
[2021-12-4 11:09:50.838] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:51.836] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:53.286] do request url: https://api.aliyundrive.com/v2/file/list
[2021-12-4 11:09:53.685] do request url: https://api.aliyundrive.com/v2/file/list
[1] 获取下载路径信息错误, 文件不存在
下载结束, 时间: 3.128s, 数据总量: 0B
以下文件下载失败:
1  /来自分享/明星大侦探1-6季/S06
[root@ny data]#
[root@ny data]#

「明星大侦探1-6季」，点击链接保存，或者复制本段内容，打开「阿里云盘」APP ，无需下载极速在线查看，视频原画倍速播放。
链接：https://www.aliyundrive.com/s/8Qut2fL4V5z

你这个是因为文件夹带有不可打印的字符导致的，看显示是 S03 其实他真正的文件夹名称是 "S03\r"
简单处理文件夹就先全部更名吧


[Pickers] Datepicker propagates react props to html

Seems like StaticDatePicker propagates unused props (inputFormat, renderInput) to the html.
Rest of the static pickers might be doing the same.

[x] The issue is present in the latest release.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯
React error when using static date picker.
Expected Behavior 🤔
No error by react.
Steps to Reproduce 🕹
Repro: https://codesandbox.io/s/red-star-bpndz?file=/src/Demo.tsx
Steps:

Use StaticDatePicker
See console

Context 🔦
After migration to the version 5 of our components library I am trying to get rid of overlooked issues and this seems like issue I cannot fix on my own.
Your Environment 🌎

`npx @mui/envinfo`
System:
OS: Windows 10 10.0.22000
CPU: (24) x64 AMD Ryzen 9 5900X 12-Core Processor
Memory: 14.62 GB / 31.91 GB
Binaries:
Node: 14.17.6 - C:\Program Files\nodejs\node.EXE
Yarn: 1.22.11 - ~\AppData\Roaming\npm\yarn.CMD
npm: 7.21.1 - C:\Program Files\nodejs\npm.CMD
Managers:
pip3: 21.2.3 - C:\Python39\Scripts\pip3.EXE
Utilities:
Git: 2.33.0.
Virtualization:
Docker: 20.10.8 - C:\Program Files\Docker\Docker\resources\bin\docker.EXE
IDEs:
VSCode: 1.60.1 - C:\Users\silha\AppData\Local\Programs\Microsoft VS Code\bin\code.CMD
Visual Studio: 16.11.31624.102 (Visual Studio Professional 2019)
Languages:
Python: 3.9.7
Python3: 3.9.7
Browsers:
Edge: Spartan (44.22000.120.0), Chromium (93.0.961.47)
Internet Explorer: 11.0.22000.120
Monorepos:
Yarn Workspaces: 1.22.11
Lerna: 4.0.0

Same behaviour on <DatePicker />.

Seems to be related to #26739

same issue with autocomplete

I get this also with Autocomplete joy
"Warning: React does not recognize the renderInput prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase renderinput instead. If you accidentally passed it from a parent component, remove it from the DOM element."


Count featurization on pre-existing splits

Is your feature request related to a problem? Please describe.
The featurizer API for count featurization is such that it's not clear how to impose an existing feature structure from one dataset onto another.
Describe the solution you'd like
Either make clear in the documentation that there is a "sharp edged" pattern here where you always have to featurize everything together and then split, or create a way to pass a certain data matrix column spec to a new featurization.

Or, if we want to keep the current count featurization API, we should at least implement a method whereby one can easily combine two LabeledPatients objects with +


Add a build badge ... check if Buildkite status appears

Adds a build badge, really a test for triggering builds in Buildkite and viewing status.

@jamesgorrie I was expecting reviews on the other PR (this one's a test for something else) i've folded changes from your review into the other PR and will close this one - the feedback is appreciated 👍

@kenoir not sure how I got that confused, sorry for the hassle.


AutoMCStats: runtime error for RooMorphingPdf processes

Dear all,
I have a question concerning the AutoMCStats using CMSHistErrorPropagator. It's about this line of code here:
https://github.com/cms-analysis/HiggsAnalysis-CombinedLimit/blob/102x/src/CMSHistErrorPropagator.cc#L65
In case of AutoMCStats, it essentially imports histogram distributions for backgrounds (named with shapeBkg prefix) and signals (named with shapeSig prefix).
For MSSM HiggsToTauTau, I encounter the problem, that this dynamic cast to CMSHistFunc fails, bacause the signals have a RooMorphingPdf format.
Do you have any advice, how to overcome this without disabling RooMorphingPdf and still using AutoMCStats?
Cheers,
Artur Gottmann

Hi Artur,
It's not possible to use RooMorphingPdf anymore with an autoMCStats based workspace. That said, the underlying CMSHistFunc is already capable of doing the kind of horizontal (or integral) morphing that RooMorphingPdf is doing, and also implements the moment morphing technique (based on https://root.cern.ch/doc/master/classRooMomentMorph.html) as an alternative.
A while ago I wrote a converter for CH, similar to what the BuildRooMorphing function does now, to convert the entire model to CMSHistFunc and enable the horizontal morphing for the signal:
https://github.com/cms-analysis/CombineHarvester/blob/cfa42837cb82605a57c6af121979a4289a685c4a/CombinePdfs/interface/CMSHistFuncFactory.h#L23-L24
You just need to create a CMSHistFuncFactory, instance, call SetHorizontalMorphingVariable with map from all the signal process names to the RooRealVar morphing variables, then call Run on the CH instance. Since this never got used before I'd recommend doing some validation of the results, but I think it should work ok.

Hi Andrew,
Thanks for the suggestion! I'll have a look at the alternative.
Cheers,
Artur


Laravel jobs in tenant database connection problem

Hello, I have been using this package for a software we need to develop and ran into a problem with jobs and queues not connecting to the tenant database but instead they are using the system one. We need the jobs table separately in each tenant database, when I set specifically in the queues.php that the table for the queue is tenant_db_name.jobs everything works fine.

hyn/multi-tenant version: 5.4
laravel version: 5.8
database driver and version: mysql 5.7.25
webserver software and version: homestead
php version: 7.3

tenancy.php config
<?php

/*
 * This file is part of the hyn/multi-tenant package.
 *
 * (c) Daniël Klabbers<EMAIL_ADDRESS> *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @see https://laravel-tenancy.com
 * @see https://github.com/hyn/multi-tenant
 */

use Hyn\Tenancy\Database\Connection;

return [
    /**
     * Random key used for tenant database user password
     */
    'key' => env('TENANCY_KEY', env('APP_KEY')),

    'models' => [
        /**
         * Specify different models to be used for the global, system database
         * connection. These are also used in their relationships. Models
         * used have to implement their respective contracts and
         * either extend the SystemModel or use the trait
         * UsesSystemConnection.
         */

        // Must implement \Hyn\Tenancy\Contracts\Hostname
        'hostname' => \Hyn\Tenancy\Models\Hostname::class,

        // Must implement \Hyn\Tenancy\Contracts\Website
        'website' => \Hyn\Tenancy\Models\Website::class
    ],
    /**
     * The package middleware. Removing a middleware here will disable it.
     * You can of course extend/replace them or add your own.
     */
    'middleware' => [
        // The eager identification middleware.
        \Hyn\Tenancy\Middleware\EagerIdentification::class,

        // The hostname actions middleware (redirects, https, maintenance).
        \Hyn\Tenancy\Middleware\HostnameActions::class,
    ],
    'website' => [
        /**
         * Each website has a short random hash that identifies this entity
         * to the application. By default this id is randomized and fully
         * auto-generated. In case you want to force your own logic for
         * when you need to have a better overview of the complete
         * tenant folder structure, disable this and implement
         * your own id generation logic.
         */
        'disable-random-id' => false,

        /**
         * The random Id generator is responsible for creating the hash as mentioned
         * above. You can override what generator to use by modifying this value
         * in the configuration.
         *
         * @warn This won't work if disable-random-id is true.
         */
        'random-id-generator' => Hyn\Tenancy\Generators\Uuid\ShaGenerator::class,

        /**
         * Enable this flag in case you're using a driver that does not support
         * database username or database name with a length of more than 32 characters.
         *
         * This should be enabled for MySQL, but not for MariaDB and PostgreSQL.
         */
        'uuid-limit-length-to-32' => env('LIMIT_UUID_LENGTH_32', false),

        /**
         * Specify the disk you configured in the filesystems.php file where to store
         * the tenant specific files, including media, packages, routes and other
         * files for this particular website.
         *
         * @info If not set, will revert to the default filesystem.
         * @info If set to false will disable all tenant specific filesystem auto magic
         *       like the config, vendor overrides.
         */
        'disk' => null,

        /**
         * Automatically generate a tenant directory based on the random id of the
         * website. Uses the above disk to store files to override system-wide
         * files.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-directory' => true,

        /**
         * Automatically rename the tenant directory when the random id of the
         * website changes. This should not be too common, but in case it happens
         * we automatically want to move files accordingly.
         *
         * @info set to false to disable.
         */
        'auto-rename-tenant-directory' => true,

        /**
         * Automatically deletes the tenant specific directory and all files
         * contained within.
         *
         * @see
         * @info set to true to enable.
         */
        'auto-delete-tenant-directory' => false,

        /**
         * Time to cache websites in minutes. Set to false to disable.
         */
        'cache' => 10,
    ],
    'hostname' => [
        /**
         * If you want the multi tenant application to fall back to a default
         * hostname/website in case the requested hostname was not found
         * in the database, complete in detail the default hostname.
         *
         * @warn this must be a FQDN, these have no protocol or path!
         */
        'default' => env('TENANCY_DEFAULT_HOSTNAME'),
        /**
         * The package is able to identify the requested hostname by itself,
         * disable to get full control (and responsibility) over hostname
         * identification. The hostname identification is needed to
         * set a specific website as currently active.
         *
         * @see src/Jobs/HostnameIdentification.php
         */
        'auto-identification' => env('TENANCY_AUTO_HOSTNAME_IDENTIFICATION', true),

        /**
         * In case you want to have the tenancy environment set up early,
         * enable this flag. This will run the tenant identification
         * inside a middleware. This will eager load tenancy.
         *
         * A good use case is when you have set "tenant" as the default
         * database connection.
         */
        'early-identification' => env('TENANCY_EARLY_IDENTIFICATION', true),

        /**
         * Abort application execution in case no hostname was identified. This will throw a
         * 404 not found in case the tenant hostname was not resolved.
         */
        'abort-without-identified-hostname' => env('TENANCY_ABORT_WITHOUT_HOSTNAME', false),

        /**
         * Time to cache hostnames in minutes. Set to false to disable.
         */
        'cache' => 10,

        /**
         * Automatically update the app.url configured inside Laravel to match
         * the tenant FQDN whenever a hostname/tenant was identified.
         *
         * This will resolve issues with password reset mails etc using the
         * correct domain.
         */
        'update-app-url' => true,
    ],
    'db' => [
        /**
         * The default connection to use; this overrules the Laravel database.default
         * configuration setting. In Laravel this is normally configured to 'mysql'.
         * You can set a environment variable to override the default database
         * connection to - for instance - the tenant connection 'tenant'.
         */
        'default' => env('TENANCY_DEFAULT_CONNECTION'),
        /**
         * Used to give names to the system and tenant database connections. By
         * default we configure 'system' and 'tenant'. The tenant connection
         * is set up automatically by this package.
         *
         * @see src/Database/Connection.php
         * @var system-connection-name The database connection name to use for the global/system database.
         * @var tenant-connection-name The database connection name to use for the tenant database.
         */
        'system-connection-name' => env('TENANCY_SYSTEM_CONNECTION_NAME', Connection::DEFAULT_SYSTEM_NAME),
        'tenant-connection-name' => env('TENANCY_TENANT_CONNECTION_NAME', Connection::DEFAULT_TENANT_NAME),

        /**
         * The tenant division mode specifies to what database websites will be
         * connecting. The default setup is to use a new database per tenant.
         * If using PostgreSQL, a new schema per tenant in the same database can
         * be setup, by optionally setting division mode to 'schema'.
         * In case you prefer to use the same database with a table prefix,
         * set the mode to 'prefix'.
         * To implement a custom division mode, set this to 'bypass'.
         *
         * @see src/Database/Connection.php
         */
        'tenant-division-mode' => env('TENANCY_DATABASE_DIVISION_MODE', 'database'),

        /**
         * The database password generator takes care of creating a valid hashed
         * string used for tenants to connect to the specific database. Do
         * note that this will only work in 'division modes' that set up
         * a connection to a separate database.
         */
        'password-generator' => Hyn\Tenancy\Generators\Database\DefaultPasswordGenerator::class,

        /**
         * The tenant migrations to be run during creation of a tenant. Specify a directory
         * to run the migrations from. If specified these migrations will be executed
         * whenever a new tenant is created.
         *
         * @info set to false to disable auto migrating.
         *
         * @warn this has to be an absolute path, feel free to use helper methods like
         * base_path() or database_path() to set this up.
         */
        'tenant-migrations-path' => database_path('migrations/tenant'),

        /**
         * The default Seeder class used on newly created databases and while
         * running artisan commands that fire seeding.
         *
         * @info requires tenant-migrations-path in order to seed newly created websites.
         * @info seeds stored in `database/seeds/tenants` need to be configured in your composer.json classmap.
         *
         * @warn specify a valid fully qualified class name.
         */
        'tenant-seed-class' => false,
//      eg an admin seeder under `app/Seeders/AdminSeeder.php`:
//        'tenant-seed-class' => App\Seeders\AdminSeeder::class,

        /**
         * Automatically generate a tenant database based on the random id of the
         * website.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-database' => true,

        /**
         * Automatically generate the user needed to access the database.
         *
         * @info Useful in case you use root or another predefined user to access the
         *       tenant database.
         * @info Only creates in case tenant databases are set to be created.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-database-user' => true,

        /**
         * Set of database privileges to give to the tenant database user.
         *
         * @info Useful in case your database restricts the privileges you
         *       can set (for example AWS RDS).
         * @info These privileges are only used in case tenant database users
         *       are set to be created.
         *
         * @info null by default means "ALL PRIVILEGES". Override with a list
         *       of privileges as a string, e.g. 'SELECT, UPDATE'.
         */
        'tenant-database-user-privileges' => null,

        /**
         * Automatically rename the tenant database when the random id of the
         * website changes. This should not be too common, but in case it happens
         * we automatically want to move databases accordingly.
         *
         * @info set to false to disable.
         */
        'auto-rename-tenant-database' => true,

        /**
         * Automatically deletes the tenant specific database and all data
         * contained within.
         *
         * @info set to true to enable.
         */
        'auto-delete-tenant-database' => env('TENANCY_DATABASE_AUTO_DELETE', false),

        /**
         * Automatically delete the user needed to access the tenant database.
         *
         * @info Set to false to disable.
         * @info Only deletes in case tenant database is set to be deleted.
         */
        'auto-delete-tenant-database-user' => env('TENANCY_DATABASE_AUTO_DELETE_USER', false),

        /**
         * Define a list of classes that you wish to force onto the tenant or system connection.
         * The connection will be forced when the Model has booted.
         *
         * @info Useful for overriding the connection of third party packages.
         */
        'force-tenant-connection-of-models' => [
//            App\User::class
        ],
        'force-system-connection-of-models' => [
//            App\User::class
        ],
    ],

    /**
     * Global tenant specific routes.
     * Making it easier to distinguish between landing and tenant routing.
     *
     * @info only works with `tenancy.hostname.auto-identification` or identification happening
     *       before the application is booted (eg inside middleware or the register method of
     *       service providers).
     */
    'routes' => [
        /**
         * Routes file to load whenever a tenant was identified.
         *
         * @info Set to false or null to disable.
         */
        'path' => base_path('routes/tenants.php'),

        /**
         * Set to true to flush all global routes before setting the routes from the
         * tenants.php routes file.
         */
        'replace-global' => false,
    ],

    /**
     * Folders configuration specific per tenant.
     * The following section relates to configuration to files inside the tenancy/<uuid>
     * tenant directory.
     */
    'folders' => [
        'config' => [
            /**
             * Merge configuration files from the config directory
             * inside the tenant directory with the global configuration files.
             */
            'enabled' => true,

            /**
             * List of configuration files to ignore, preventing override of crucial
             * application configurations.
             */
            'blacklist' => ['database', 'tenancy', 'webserver'],
        ],
        'routes' => [
            /**
             * Allows adding and overriding URL routes inside the tenant directory.
             */
            'enabled' => true,

            /**
             * Prefix all tenant routes.
             */
            'prefix' => null,
        ],
        'trans' => [
            /**
             * Allows reading translation files from a trans directory inside
             * the tenant directory.
             */
            'enabled' => true,

            /**
             * Will override the global translations with the tenant translations.
             * This is done by overriding the laravel default translator with the new path.
             */
            'override-global' => true,

            /**
             * In case you disabled global override, specify a namespace here to load the
             * tenant translation files with.
             */
            'namespace' => 'tenant',
        ],
        'vendor' => [
            /**
             * Allows using a custom vendor (composer driven) folder inside
             * the tenant directory.
             */
            'enabled' => true,
        ],
        'media' => [
            /**
             * Mounts the assets directory with (static) files for public use.
             */
            'enabled' => true,
        ],
        'views' => [
            /**
             * Enables reading views from tenant directories.
             */
            'enabled' => true,

            /**
             * Specify a namespace to use with which to load the views.
             *
             * @eg setting `tenant` will allow you to use `tenant::some.blade.php`
             * @info set to null to add to the global namespace.
             */
            'namespace' => null,

            /**
             * If `namespace` is set to null (thus using the global namespace)
             * make it override the global views. Disable by setting to false.
             */
            'override-global' => true,
        ]
    ]
];

webserver.php config
<?php

/*
 * This file is part of the hyn/multi-tenant package.
 *
 * (c) Daniël Klabbers<EMAIL_ADDRESS> *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @see https://laravel-tenancy.com
 * @see https://github.com/hyn/multi-tenant
 */

return [

    /**
     * Apache2 is one of the most widely adopted webserver packages available.
     *
     * @see http://httpd.apache.org/docs/
     * @see https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu
     */
    'apache2' => [
        /**
         * Whether the integration with Apache2 is currently active.
         */
        'enabled' => false,

        /**
         * Define the ports of your Apache service.
         */
        'ports' => [
            /**
             * HTTP, non-SSL port.
             *
             * @default 80
             */
            'http' => 80,
            /**
             * HTTPS, SSL port.
             *
             * @default 443
             */
            'https' => 443
        ],

        /**
         * The generator taking care of hooking into the Apache services and files.
         */
        'generator' => \Hyn\Tenancy\Generators\Webserver\Vhost\ApacheGenerator::class,

        /**
         * The view that holds the vhost configuration template.
         */
        'view' => 'tenancy.generators::webserver.apache.vhost',

        /**
         * Specify the disk you configured in the filesystems.php file where to store
         * the tenant vhost configuration files.
         *
         * @info If not set, will revert to the default filesystem.
         */
        'disk' => null,

        'paths' => [

            /**
             * Location where vhost configuration files can be found.
             */
            'vhost-files' => [
                '/etc/apache2/sites-enabled/'
            ],

            /**
             * Actions to run to work with the Apache2 service.
             */
            'actions' => [
                /**
                 * Action that asserts Apache2 is installed.
                 */
                'exists' => '/etc/init.d/apache2',
                /**
                 * Action to run to test the apache configuration.
                 *
                 * @set to a boolean to force the response of the test command.
                 * @info true succeeds, false fails
                 */
                'test-config' => 'apache2ctl -t',
                /**
                 * Action to run to reload the apache service.
                 *
                 * @info set to null to disable reloading.
                 */
                'reload' => 'apache2ctl graceful'
            ]
        ]
    ],

    /**
     * Nginx webserver support.
     *
     * @see http://nginx.org
     */
    'nginx' => [
        /**
         * Whether the integration with nginx is currently active.
         */
        'enabled' => false,

        /**
         * The php sock to be used.
         */
        'php-sock' => 'unix:/var/run/php/php7.3-fpm.sock',

        /**
         * Define the ports of your nginx service.
         */
        'ports' => [
            /**
             * HTTP, non-SSL port.
             *
             * @default 80
             */
            'http' => 80,
            /**
             * HTTPS, SSL port.
             *
             * @default 443
             */
            'https' => 443
        ],

        /**
         * The generator taking care of hooking into the nginx services and files.
         */
        'generator' => \Hyn\Tenancy\Generators\Webserver\Vhost\NginxGenerator::class,

        /**
         * The view that holds the vhost configuration template.
         */
        'view' => 'tenancy.generators::webserver.nginx.vhost',

        /**
         * Specify the disk you configured in the filesystems.php file where to store
         * the tenant vhost configuration files.
         *
         * @info If not set, will revert to the default filesystem.
         */
        'disk' => null,

        'paths' => [

            /**
             * Location where vhost configuration files can be found.
             */
            'vhost-files' => [
                '/etc/nginx/sites-enabled/'
            ],

            /**
             * Actions to run to work with the Nginx service.
             */
            'actions' => [
                /**
                 * Action that asserts nginx is installed.
                 */
                'exists' => '/etc/init.d/nginx',
                /**
                 * Action to run to test the nginx configuration.
                 *
                 * @info set to a boolean to force the response of the test command.
                 *  true succeeds, false fails
                 */
                'test-config' => '/etc/init.d/nginx configtest',
                /**
                 * Action to run to reload the nginx service.
                 *
                 * @info set to null to disable reloading.
                 */
                'reload' => '/etc/init.d/nginx reload'
            ]
        ]
    ]
];

queue.php config
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Queue Connection Name
    |--------------------------------------------------------------------------
    |
    | Laravel's queue API supports an assortment of back-ends via a single
    | API, giving you convenient access to each back-end using the same
    | syntax for every one. Here you may define a default connection.
    |
    */

    'default' => env('QUEUE_CONNECTION', 'sync'),

    /*
    |--------------------------------------------------------------------------
    | Queue Connections
    |--------------------------------------------------------------------------
    |
    | Here you may configure the connection information for each server that
    | is used by your application. A default configuration has been added
    | for each back-end shipped with Laravel. You are free to add more.
    |
    | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
    |
    */

    'connections' => [

        'sync' => [
            'driver' => 'sync',
        ],

        'database' => [
            'driver' => 'database',
            'table' => 'jobs',
            'queue' => 'default',
            'retry_after' => 90,
        ],

        'database-long-running' => [
            'driver' => 'database',
            'table' => 'jobs',
            'queue' => 'default',
            'retry_after' => 1800,
        ],

        'beanstalkd' => [
            'driver' => 'beanstalkd',
            'host' => 'localhost',
            'queue' => 'default',
            'retry_after' => 90,
            'block_for' => 0,
        ],

        'sqs' => [
            'driver' => 'sqs',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
            'queue' => env('SQS_QUEUE', 'your-queue-name'),
            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
            'queue' => env('REDIS_QUEUE', 'default'),
            'retry_after' => 90,
            'block_for' => null,
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Failed Queue Jobs
    |--------------------------------------------------------------------------
    |
    | These options configure the behavior of failed queue job logging so you
    | can control which database and table are used to store the jobs that
    | have failed. You may change them to any database / table you wish.
    |
    */

    'failed' => [
        'database' => env('DB_CONNECTION', 'mysql'),
        'table' => 'failed_jobs',
    ],

];

.env config
DB_CONNECTION=system
DB_HOST=<IP_ADDRESS>
DB_PORT=3306
DB_DATABASE=system
DB_USERNAME=homestead
DB_PASSWORD=secret

TENANCY_HOST=<IP_ADDRESS>
TENANCY_PORT=3306
TENANCY_DATABASE=system
TENANCY_USERNAME=tenancyadmin
TENANCY_PASSWORD="password"

BROADCAST_DRIVER=log
CACHE_DRIVER=array
QUEUE_CONNECTION=database-long-running
SESSION_DRIVER=file
SESSION_LIFETIME=120

TENANCY_DATABASE_AUTO_DELETE=true
TENANCY_DATABASE_AUTO_DELETE_USER=true

Error log
Base table or view not found: 1146 Table 'system.jobs' doesn't exist (SQL: insert into `jobs` (`queue`, `attempts`, `reserved_at`, `available_at`, `created_at`, `payload`) values (default, 0, ?,<PHONE_NUMBER>,<PHONE_NUMBER>, {"displayName":"App\\Jobs\\TestJob","job":"Illuminate\\Queue\\CallQueuedHandler@call","maxTries":null,"delay":null,"timeout":null,"timeoutAt":null,"data":{"commandName":"App\\Jobs\\TestJob","command":"O:16:\"App\\Jobs\\TestJob\":8:{s:10:\"website_id\";i:4;s:6:\"\u0000*\u0000job\";N;s:10:\"connection\";N;s:5:\"queue\";N;s:15:\"chainConnection\";N;s:10:\"chainQueue\";N;s:5:\"delay\";N;s:7:\"chained\";a:0:{}}"},"website_id":4}))

Controller.php
$job = new TestJob(app(\Hyn\Tenancy\Environment::class)->website()->id);
        $this->dispatch($job);

TestJob.php
<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class TestJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public $website_id;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($website_id)
    {
        $this->website_id = $website_id;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {

    }
}

I think the jobs table should stay in the system database. In the payload field there's a property website_id, so the job is able to identify the tenant. I only had to add this line on the job to use the correct tenant database:
public function handle(){     Config::set('database.default', 'tenant'); }

@leopelegrini thanks for the reply, would prefer to have it on each tenant's database but I guess I m gonna have to change it to the system instead.

I assume you've already changed your setup and that everything is running fine now :)
If not, please reopen this issue ❤


Use Travis test matrix for multiple GO versions

Travis has a way to matrix test the version of a language dependency
-> https://docs.travis-ci.com/user/languages/go/#specifying-a-go-version-to-use
language: go

go:
- 1.11.x
- 1.12.x
- 1.13.x

This will help moving forward on testing if new versions of GO break crc build or any specific features

The issue is not really with breaking features, as mostly (from experience) this is not the case. It is rather the hypervisor interaction that causes issues, but nearly none of the public CI allows to run nested virtualization.
Also, we are bound to the availability of Go versions on CentOS/RHEL

Knowing that crc won't build with newer versions of go is useful information to have, however, such go version upgrades would probably happen on developers' machines first. Knowing it in advance would help making more informed choices before doing such upgrades ;)


DoS, locked funds

It is trivial to lock the entire balance of the contract by creating enough borrow accounts that when looping over borrows, the contract always runs out of gas.
Significant redesign is needed prior to mainnet deployment. I suggest turning borrows into a mapping and never force undefined length for loops.
Would necessitate a different liquidation model as well

See here
here
here
and here.

Thanks for addressing this issue. Our team is looking at turning borrows into a mapping of UUID per borrow, in addition to creating a second mapping of active borrow to account address.

@brockelmore looping over borrows is removed, and replaced with a mapping of the borrower struct

@brockelmore looping over borrows is removed, and replaced with a mapping of the borrower struct

Awesome!


Move shard heartbeat from raft event loop to asynchronous worker

Move shard heartbeat from raft event loop to asynchronous worker

Add global  job support，running at prophet leader node.


Repo sync for protected CLA branch

The pull request is created from main637951445272716007sync_temp to main to fix git push error for protected CLA branch

#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team


Append ordinal numbers to test steps names

What type of PR is this?
/kind bug
What this PR does / why we need it:
If test configs have steps with duplicate names, they will be erroneously shown as one in the Prow GCS viewer. The change will prevent from such situations as we add ordinal numbers at the end of the test steps' names.
Which issue(s) this PR fixes:
No issue is opened for that.
Special notes for your reviewer:
/assign wojtek-t
Does this PR introduce a user-facing change?:
NONE

/approve

/lgtm

/test pull-perf-tests-verify-lint

Nice, but I'd prefer if the step number was the prefix of the step name. By doing so, we'd have the tests displayed nicely in the test_grid. Currently they are ordered alphabetically, which is odd


Update binding

Remove useless print
Remove unused struct
Add some comments

Ginkgo test was already broken
Will be fixed soon
Merging anyway


Fiz zeit paragraph selector

I updated the paragraph selector, but I didn't add a new parser version due to the new XPath variant being more or less equivalent to the previous CSSSelector().

I updated the paragraph selector, but I didn't add a new parser version due to the new XPath variant being more or less equivalent to the previous CSSSelector().

Thanks! You should only bump a parser version if the Layout changes on publisher side, so right decission.


Create a local website for the downloaded course

Hi 😃,
I created a tool to create a local website for the downloaded course.
The purpose of this project is to access your videos, subtitles, and HTML files all in one place so you can focus only on learning.
please see this link to know more about it

The project seems cool, but the question arises is people want to take off the courses from web to there personal PC/LAPTOP why would they again do that to access it on local web? though this seems good but people are lazy even i 'm, I don't want to run multiple things every time i restart my PC.

Hi 😃,
No, they need to run the script only one time in their whole life 😁
the script will create "index.html" file (Please see the image below)
for every unit (a group of videos for example 1. introduction) in the course and also another one for the whole course and they will stay on the local disk forever so if the user wanted to access the course again they only need to open the "index.html" file in their web browser

will consider this later on for now closing the PR. and try out the latest version i just pushed.


add an additional sensor (field) in gen 5 devices

include undefined sensor for recent Gen 5 devices
WHAT DOES THIS PR DO?
Defines the undefined sensor for recent Gen 5 devices whenever one queries the recent endpoint of data management service.
WHAT JIRA STORY/TASK IS RELATED TO THIS PR?

The one for getting the most recent Events (descriptive) as described here: https://docs.airqo.net/airqo-platform-api/data-management#get-last-entry-descriptive
Look out for Gen 5 devices accordingly as you are testing this out, you will recognise that they have an additional field/sensor names externalAltitude

IS THERE ANY JENKINS CONSOLE LINK FOR CODE COVERAGE AND BUILD INFO?
N/A
ARE THERE ANY RELATED PRs?
N/A

we could consider an appropriate response for devices that are not returning values . Currently the message I get is error -1

Good point, let me create a new issue for it.


ChatLibrary logic

(I think this story was somehow automatically created with the idea of removing the ChatLibrary logic. I'm closing it because I don't know what it is.)


Create glossary.md for the documentation sprint #1040

GitHub Issue: https://github.com/Islandora/documentation/issues/1040
What does this Pull Request do?
Adds a new page with a starter glossary of terms for Islandora 8. Based off the glossaries of Islandora 7, Drupal 8, and a scan of our documentation.
How should this be tested?
Preview the page and look it over. All definitions ok? Typos and formatting ok?
Additional Notes:
Happy to accept suggestions for terms that should be added!
There's no reviewer signed up yet, so whoever reviews, please grab the credit in that spreadsheet.
Interested parties
@Islandora/8-x-committers

Other than poll being listed as a type of node, the Flysystem typos, and @dannylamb' edit; this looks good.
However, I would feel better about merging if we got one of the newer folks to take a look and make sure the definitions are clear to them.

I've made those updates. I'll send a note out to the list of sprinters to see if any of the others might be willing to give this a look over. New eyes is a good idea.

As a newer Islandora 8 person/ person on the periphery, the definitions all make sense to me, Melissa. Formatting, etc. look OK.
Under "Microservices" there may be a typo. There's currently an endnote/ footnote "[1]" after "loosely coupled services". Should this be a full stop?

@cderven quite right, that reference went nowhere. Fixed now!
@seth-shaw-unlv I this this might be ready to merge.


Add a logger

That would be nice to have a logger to log some debug information.

The logging functionality was implemented in the v3.1.0 release.


Print more info about user credentials when binding is created

@kornys FYI

@lulf /home/travis/build/EnMasseProject/enmasse/service-broker/src/main/java/io/enmasse/osb/keycloak/KeycloakInstance.java:[21,63] non-static method getClass()

@lulf I restarted job again, I hope that in this build cert test will fail and we will see what was wrong.

@lulf I run several times all tests in this branch and test still not fail :D