Add edge-weighted PageRank algorithms

I implemented edge-weighted PageRank algorithms in graph/network package.
Although there seems to be no related issue, i hope this PR resolve one of TODOs.

Do you want me to do the type assertion change or will you?

I think that it would be good for clients to be able to just hand a graph to PageRank or PageRankSparse and have the function type assert on graph.Weighed to use the correct routine.

i fully agree with that, and understand it's hard to do this pr because it involves unexportings.

i did 😄

I'm thinking something more this (on your change).
diff --git a/graph/network/page.go b/graph/network/page.go
index 1b77850..15f05b7 100644
--- a/graph/network/page.go
+++ b/graph/network/page.go
@@ -14,11 +14,33 @@ import (
        "gonum.org/v1/gonum/mat"
 )

-// EdgeWeightedPageRank returns the PageRank weights for nodes of the weighted directed graph g
+// PageRank returns the PageRank weights for nodes of the directed graph g
 // using the given damping factor and terminating when the 2-norm of the
 // vector difference between iterations is below tol. The returned map is
 // keyed on the graph node IDs.
-func EdgeWeightedPageRank(g graph.WeightedDirected, damp, tol float64) map[int64]float64 {
+//
+// If g is a graph.WeightedDirected, an edge-weighted PageRank is calculated.
+func PageRank(g graph.Directed, damp, tol float64) map[int64]float64 {
+       if g, ok := g.(graph.WeightedDirected); ok {
+               return edgeWeightedPageRank(g, damp, tol)
+       }
+       return pageRank(g, damp, tol)
+}
+
+// PageRankSparse returns the PageRank weights for nodes of the sparse directed
+// graph g using the given damping factor and terminating when the 2-norm of the
+// vector difference between iterations is below tol. The returned map is
+// keyed on the graph node IDs.
+//
+// If g is a graph.WeightedDirected, an edge-weighted PageRank is calculated.
+func PageRankSparse(g graph.Directed, damp, tol float64) map[int64]float64 {
+       if g, ok := g.(graph.WeightedDirected); ok {
+               return edgeWeightedPageRankSparse(g, damp, tol)
+       }
+       return pageRankSparse(g, damp, tol)
+}
+
+func edgeWeightedPageRank(g graph.WeightedDirected, damp, tol float64) map[int64]float64 {
        // EdgeWeightedPageRank is implemented according to "How Google Finds Your Needle
        // in the Web's Haystack" with the modification that
        // the columns of hyperlink matrix H are calculated with edge weights.
@@ -101,7 +123,7 @@ func EdgeWeightedPageRank(g graph.WeightedDirected, damp, tol float64) map[int64
 // graph g using the given damping factor and terminating when the 2-norm of the
 // vector difference between iterations is below tol. The returned map is
 // keyed on the graph node IDs.
-func EdgeWeightedPageRankSparse(g graph.WeightedDirected, damp, tol float64) map[int64]float64 {
+func edgeWeightedPageRankSparse(g graph.WeightedDirected, damp, tol float64) map[int64]float64 {
        // edgeWeightedPageRankSparse is implemented according to "How Google Finds Your Needle
        // in the Web's Haystack" with the modification that
        // the columns of hyperlink matrix H are calculated with edge weights.
@@ -179,11 +201,11 @@ func EdgeWeightedPageRankSparse(g graph.WeightedDirected, damp, tol float64) map
        return ranks
 }

-// PageRank returns the PageRank weights for nodes of the directed graph g
+// pageRank returns the PageRank weights for nodes of the directed graph g
 // using the given damping factor and terminating when the 2-norm of the
 // vector difference between iterations is below tol. The returned map is
 // keyed on the graph node IDs.
-func PageRank(g graph.Directed, damp, tol float64) map[int64]float64 {
+func pageRank(g graph.Directed, damp, tol float64) map[int64]float64 {
        // PageRank is implemented according to "How Google Finds Your Needle
        // in the Web's Haystack".
        //
@@ -252,11 +274,11 @@ func PageRank(g graph.Directed, damp, tol float64) map[int64]float64 {
        return ranks
 }

-// PageRankSparse returns the PageRank weights for nodes of the sparse directed
+// pageRankSparse returns the PageRank weights for nodes of the sparse directed
 // graph g using the given damping factor and terminating when the 2-norm of the
 // vector difference between iterations is below tol. The returned map is
 // keyed on the graph node IDs.
-func PageRankSparse(g graph.Directed, damp, tol float64) map[int64]float64 {
+func pageRankSparse(g graph.Directed, damp, tol float64) map[int64]float64 {
        // PageRankSparse is implemented according to "How Google Finds Your Needle
        // in the Web's Haystack".
        //
diff --git a/graph/network/page_test.go b/graph/network/page_test.go
index 66934b9..350db40 100644
--- a/graph/network/page_test.go
+++ b/graph/network/page_test.go
@@ -91,7 +91,7 @@ func TestPageRank(t *testing.T) {
                                g.SetEdge(simple.Edge{F: simple.Node(u), T: simple.Node(v)})
                        }
                }
-               got := PageRank(g, test.damp, test.tol)
+               got := pageRank(g, test.damp, test.tol)
                prec := 1 - int(math.Log10(test.wantTol))
                for n := range test.g {
                        if !floats.EqualWithinAbsOrRel(got[int64(n)], test.want[int64(n)], test.wantTol, test.wantTol) {
@@ -115,7 +115,7 @@ func TestPageRankSparse(t *testing.T) {
                                g.SetEdge(simple.Edge{F: simple.Node(u), T: simple.Node(v)})
                        }
                }
-               got := PageRankSparse(g, test.damp, test.tol)
+               got := pageRankSparse(g, test.damp, test.tol)
                prec := 1 - int(math.Log10(test.wantTol))
                for n := range test.g {
                        if !floats.EqualWithinAbsOrRel(got[int64(n)], test.want[int64(n)], test.wantTol, test.wantTol) {
@@ -201,7 +201,7 @@ func TestEdgeWeightedPageRank(t *testing.T) {
                                }
                        }
                }
-               got := EdgeWeightedPageRank(g, test.damp, test.tol)
+               got := edgeWeightedPageRank(g, test.damp, test.tol)
                prec := 1 - int(math.Log10(test.wantTol))
                for n := range test.g {
                        if !floats.EqualWithinAbsOrRel(got[int64(n)], test.want[int64(n)], test.wantTol, test.wantTol) {
@@ -232,7 +232,7 @@ func TestEdgeWeightedPageRankSparse(t *testing.T) {
                                }
                        }
                }
-               got := EdgeWeightedPageRankSparse(g, test.damp, test.tol)
+               got := edgeWeightedPageRankSparse(g, test.damp, test.tol)
                prec := 1 - int(math.Log10(test.wantTol))
                for n := range test.g {
                        if !floats.EqualWithinAbsOrRel(got[int64(n)], test.want[int64(n)], test.wantTol, test.wantTol) {

truly lgtm

you're, of course, welcome to commit to this PR/branch.

Do you mind applying that change? I'll approve, but we'll wait for someone else as well.

Do you mind applying that change? I'll approve, but we'll wait for someone else as well.

No I don't mind. I am happy to have your changes.
No, I don't mind.

I will tomorrow.
On Sun, Jun 10, 2018, 00:18 Dan Kortschak<EMAIL_ADDRESS>wrote:

@kortschak approved this pull request.
LGTM, but waiting for another.
@mewmew https://github.com/mewmew or @vladimir-ch
https://github.com/vladimir-ch, are either of you able to take a quick
look at this?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/gonum/gonum/pull/526#pullrequestreview-127379832, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABwJvkK182e5pdgSsh84K3FoGjh_NtCqks5t7EmzgaJpZM4UhQx4
.

Thank you @mathetake and welcome.

thank you for your reviews!


Add source for testSpecification

Linking the test specification to the source from which it's derived from.
If possible, an authoritative source

There is a contact point

And publisher


Add AzureSasCredential

In this PR:

Add AzureSasCredential per https://github.com/Azure/azure-sdk/issues/1954
AzureSasCredential is the name that has been settled on the end of discussion.
Add AzureSasCredentialPolicy that appends SAS to query

Remarks:

Some service (like storage in the Portal) present SAS with leading "?". This has to be stripped before appending
The validation if serviceUri already contain sas (mentioned here) will be responsibility of service clients:

the format varies between services (i.e. Event Grid SAS and Storage SAS are vastly different)
it would be good to fail fast (at client creation) rather than late (at request send).

References

.NET PR

Thanks @kasobol-msft - looks good.
Could you please update release notes? I assume this will initially be going out as a preview version?

Thanks @kasobol-msft - looks good.
Could you please update release notes? I assume this will initially be going out as a preview version?

Thanks @kasobol-msft - looks good.
Could you please update release notes? I assume this will initially be going out as a preview version?

As discussed offline. We intend to ship this in GA. I've added release notes entry.

Thanks @kasobol-msft - looks good.
Could you please update release notes? I assume this will initially be going out as a preview version?

As discussed offline. We intend to ship this in GA. I've added release notes entry.

What's the difference betweeen AzureSasCredential and AzureKeyCredential? Can we just create an alias of AzureKeyCredential?

What's the difference betweeen AzureSasCredential and AzureKeyCredential? Can we just create an alias of AzureKeyCredential?

What's the difference betweeen AzureSasCredential and AzureKeyCredential? Can we just create an alias of AzureKeyCredential?

There isn't much today. However per https://github.com/Azure/azure-sdk/issues/1954 the AzureKeyCredential will get extra property (name). The outcome from board discussion was to keep these types separate.

What's the difference betweeen AzureSasCredential and AzureKeyCredential? Can we just create an alias of AzureKeyCredential?

There isn't much today. However per https://github.com/Azure/azure-sdk/issues/1954 the AzureKeyCredential will get extra property (name). The outcome from board discussion was to keep these types separate.

/azp run python - storage - ci

/azp run python - storage - ci

/azp run python - storage - ci

/azp run python - storage - ci


[BUG] - Install the newly built node and CLI commands to the ~/.local/bin directory:

Internal/External
Internal   if an IOHK staff member.
External   otherwise.
Area
Token Locking    Related to Token Locking (Allegra).
Native Tokens    Related to Native Tokens (Mary).
Other   Any other topic (Delegation, Ranking, ...).
Summary
Cannot get past this step without the error
Steps to reproduce
Steps to reproduce the behavior:

Go to 'Step - Building and installing the node'
Run Command = cp -p "$(./scripts/bin-path.sh cardano-node)" ~/.local/bin/
See error:  -bash: ./scripts/bin-path.sh: No such file or directory cp: cannot stat '': No such file or directory

Expected behavior
should be able to proceed to the next part of the install
System info (please complete the following information):

OS Name:  Ubuntu

OS Version [e.g. 20.06]

Node version (output of `cardano-node --version = <IP_ADDRESS>.0

CLI version  (output of cardano-cli --version)

If the git revision is reported to be<PHONE_NUMBER>000000000000000000000000000000, please use cabal build instead of cabal install to build the binaries because cabal install does not record the git revision in the binaries.
Screenshots and attachments

Additional context
Add any other context about the problem here.

You need to be in the cardano-node repository folder (it is copying to ~/.local/bin, not from) to execute this command

You need to be in the cardano-node repository folder (it is copying to ~/.local/bin, not from - and relative path is from git repo) to execute this command

Thank you for that, I started a new build out and i am getting the same error as before

there's no bin-path.sh

This is from the instructions from your main GitHub site.
cardano-node/install.md at master · input-output-hk/cardano-node (github.com)https://github.com/input-output-hk/cardano-node/blob/master/doc/getting-started/install.md
Under “Building and installing the node” , “install the newly built node and CLI commands to the ~/.local/bin directory:”
Please advise on next steps.
Thank You!
Dwayne Mc Gordon
Chief Executive Officer
Email<EMAIL_ADDRESS>Cell:<PHONE_NUMBER>
Office:<PHONE_NUMBER>
From: @.>
Sent: Friday, June 4, 2021 4:43 AM
To: @.>
Cc: Dwayne Mc @.>; @.>
Subject: Re: [input-output-hk/cardano-node] [BUG] - Install the newly built node and CLI commands to the ~/.local/bin directory: (#2761)
there's no bin-path.sh
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/input-output-hk/cardano-node/issues/2761#issuecomment-854640811, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AUIRQMU25LIGMNVLOTQTERTTRC34ZANCNFSM45X5ICGA.

which version of the node did you checkout? I think the bin-path.sh script was added not that long ago (2 Months)
you don't need that script tho, you could also use cabal install as far as I know.
the last time I build the node I checked out
git checkout tags/1.27.0
~/cardanoSourceDir/cardano-node$ git status
HEAD detached at 1.27.0

~/cardanoSourceDir/cardano-node$ ls scripts/ | grep bin-path
bin-path.sh

any version older than 1.26.2  wont have that script

My checkout is:  git checkout tags/1.9.3
I am also using Ubuntu 20.04
Dwayne Mc Gordon
Chief Executive Officer
Email<EMAIL_ADDRESS>Cell:<PHONE_NUMBER>
Office:<PHONE_NUMBER>
From: Philipp @.>
Sent: Friday, June 4, 2021 10:54 PM
To: @.>
Cc: Dwayne Mc @.>; @.>
Subject: Re: [input-output-hk/cardano-node] [BUG] - Install the newly built node and CLI commands to the ~/.local/bin directory: (#2761)
which version of the node did you checkout? I think the bin-path.sh script was added not that long ago (2 Months)
you don't need that script tho, you could also use cabal install as far as I know.
the last time I build the node I checked out
git checkout tags/1.27.0
~/cardanoSourceDir/cardano-node$ git status
HEAD detached at 1.27.0
~/cardanoSourceDir/cardano-node$ ls scripts/ | grep bin-path
bin-path.sh
any version older than 1.26.2 wont have that script
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/input-output-hk/cardano-node/issues/2761#issuecomment-855189308, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AUIRQMQ66N3SR5HPSGJ4AWTTRG32XANCNFSM45X5ICGA.

My checkout is: git checkout tags/1.9.3

Not sure which doco are you using , but that tag's ancient, as software versioning standard is usually semantic (so 1.9 is smaller than 1.10). The current latest release  is 1.27.0 as indicated above

@dwaynemcgordon  could you explain how you checked out that tag, maybe other people also made that mistake. (Especially @34r7h with all the issues he created.)

Here is what I see after running these commands from the walk through.
@.***D75ABF.D02BBE20]
@.***D75ABF.D02BBE20]
@.***D75ABF.D02BBE20]
Dwayne Mc Gordon
Chief Executive Officer
Email<EMAIL_ADDRESS>Cell:<PHONE_NUMBER>
Office:<PHONE_NUMBER>
From: Philipp @.>
Sent: Saturday, June 5, 2021 10:39 PM
To: @.>
Cc: Dwayne Mc @.>; @.>
Subject: Re: [input-output-hk/cardano-node] [BUG] - Install the newly built node and CLI commands to the ~/.local/bin directory: (#2761)
@dwaynemcgordonhttps://github.com/dwaynemcgordon could you explain how you checked out that tag, maybe other people also made that mistake. (Especially @34r7hhttps://github.com/34r7h with all the issues he created.)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/input-output-hk/cardano-node/issues/2761#issuecomment-855342212, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AUIRQMXB4UH6WBYLXTIT7HTTRMCYLANCNFSM45X5ICGA.

After a new build with git checkout tags/1.27.0
I have new error and also same error with Building and Installing node: please see screen shots below.
@.***D75AC8.66E54720]
I path my way to the folder and file. The file is there as you stated. When running the command from the ~/src/cardano-node path still wont run properly. Please see screen shots below.
@.***D75AC8.66E54720]
Dwayne Mc Gordon
Chief Executive Officer
Email<EMAIL_ADDRESS>Cell:<PHONE_NUMBER>
Office:<PHONE_NUMBER>
From: Philipp @.>
Sent: Saturday, June 5, 2021 10:39 PM
To: @.>
Cc: Dwayne Mc @.>; @.>
Subject: Re: [input-output-hk/cardano-node] [BUG] - Install the newly built node and CLI commands to the ~/.local/bin directory: (#2761)
@dwaynemcgordonhttps://github.com/dwaynemcgordon could you explain how you checked out that tag, maybe other people also made that mistake. (Especially @34r7hhttps://github.com/34r7h with all the issues he created.)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/input-output-hk/cardano-node/issues/2761#issuecomment-855342212, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AUIRQMXB4UH6WBYLXTIT7HTTRMCYLANCNFSM45X5ICGA.

Closing this. If this is still relevant please reopen.


[5.3] Improve behavior of MySQL strict flag, add modes config

This PR improves the behavior of the strict flag for the MySQL connector and adds a new modes config section for users who need more control than the strict flag allows.
Quick example:
'mysql' => [
    'database'  => env('DB_DATABASE', 'forge'),
    'username'  => env('DB_USERNAME', 'forge'),
    'password'  => env('DB_PASSWORD', ''),
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',

    // Behave like MySQL 5.6
    'strict'    => false,

    // Behave like MySQL 5.7
    'strict'    => true,

    // Ignore this key and rely on the `strict` key
    'modes'     => null,

    // Explicitly disable all modes, overrides `strict` setting
    'modes'     => [],

    // Explicitly enable specific modes, overrides `strict` setting
    'modes'     => [
        'STRICT_TRANS_TABLES',
        'ONLY_FULL_GROUP_BY',
    ],
],

Setting strict to true now enables all of the default MySQL 5.7 modes rather than just STRICT_TRANS_TABLES.
Reasoning here is that MySQL 5.7 being "strict" isn't just defined by one mode, and is really a combination of many. The strict config setting in this case is being treated as a convenience toggle between MySQL 5.6's "loose" behavior and MySQL 5.7's "strict" behavior.
In 5.7, STRICT_TRANS_TABLES does include many of these other strict settings by default, like NO_ZERO_IN_DATE for example, but to replicate that behavior in 5.6 and below requires enabling those modes explicitly.

Prior to this PR, setting strict to false actually removed all modes that were enabled by the database, as you can see here:
$connection->prepare("set session sql_mode=''")->execute();
This PR just sets the mode to NO_ENGINE_SUBSTITION which was the default prior to 5.7.

A new modes config key has been added
This key is an array of the modes you would like to enable.

If it is not set or null, it has no effect.
If it is an empty array, it overrides the strict flag, and will explicitly set your sql_mode to "".
If it contains modes, those are the modes that will be enabled for the connection.

Here are some references for the default SQL mode settings:
For MySQL 5.6, from here:

As of MySQL 5.6.6, the default SQL mode is NO_ENGINE_SUBSTITUTION. Before 5.6.6, the default mode was empty (no modes enabled).

For MySQL 5.7, from here:

The default SQL mode in MySQL 5.7 includes these modes: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION.
The ONLY_FULL_GROUP_BY and STRICT_TRANS_TABLES modes were added in MySQL 5.7.5. The NO_AUTO_CREATE_USER mode was added in MySQL 5.7.7. The ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, and NO_ZERO_IN_DATE modes were added in MySQL 5.7.8. For additional discussion regarding these changes to the default SQL mode value, see SQL Mode Changes in MySQL 5.7.

Re-submitted against 5.2 in #12030


[main] Add possibility of generate code with bean validation annotationin place.

Add bean validation option for api and models. Adapt templates for correct bean validation usage. Add integration test for bean validation.

The current version of the generator does not support configuration of bean validation. The possibility is given in the basic java code generation. This PR introduces the option to enable this feature as well as introduce some changes to the existing templates for supporting the correct generation of annotations.

Hi @hbelmiro!
Thank you for your valuable comments and remarks. I tried to adjust my changes according to it. Please have another look 🙂

@FelixScherzinger yes, we can make a release as soon as we fix the CI #752

Any timeframe as to when this will be merged and be available in a version. We need basic validation on our pojos. As a workaround we are leveraging other auto generating openapi libraries to generate our Pojos.

Any timeframe as to when this will be merged and be available in a version? We need basic validation on our pojos. As a workaround we are leveraging other auto generating openapi libraries to generate our Pojos.

We are working on the review. Once we merge it, we can release a patch version. There's no timeframe.

@hbelmiro You are right, better to be safe with tests than being sorry without them 🙂
I added up assertions for all values present in the tested annotations.

@hbelmiro can you release a new version for @FelixScherzinger?

https://github.com/all-contributors add @FelixScherzinger for docs.


Extra comma found in DEFAULT_SORT of FeedBack class

file ScheduleContract.java
can this extra comma cause problems?
public static class Feedback implements BaseColumns, FeedbackColumns, SyncColumns {
...
/** Default "ORDER BY" clause. */
public static final String DEFAULT_SORT = BaseColumns._ID + " ASC, ";
...
}

Thanks, this got cleaned up.


Question: Disadvantages of "raw" sql?

My app was originally written for Android and such did "raw" sql: e.g.," SELECT something FROM somewhere INNER JOIN ..., etc" and my first version under iOS did the same using prepare and run.
Now about 80% (by statements, not execution) of my sql is fairly simple stuff, select all rows in a table or a simple filter or two. I've gone back and recoded those to use the Type Safe system with expressions, .filter, .order, and even a few simple .joins
What's left is a bunch of complex sql -- multiple JOINs, aggregation and even a couple of UNIONs in there (does SQLite.swift do UNIONs?)
I am a big proponent of "if it ain't broke, don't fix it" so I wondering what I would lose if I don't convert some of the final complex statements? I control the database so I don't have to worry about somebody else making changes that impact my code. The database in the app is basically read only to the user -- it is a mirror of a master held on a server and updating by periodically downloading some JSON dictionaries.
I am very happy with the product so far -- it does everything I need with a minimum of fuss. This grasshopper just wants to increase his knowledge...

SQLite.swift handles raw SQL just fine with its core API. The type-safe layer is merely there to provide an additional layer of compile-time safety.
If you have tests/assurances/confidence that the SQL you have will compile, run, and do what you expect it to, by all means continue to use raw SQL! Doubly so if you're sharing code with Android—I don't think I'd use the expression builder if I was working within that constraint. If you build a new, Swift-only project from scratch, feel free to try the expression layer and see if it's something that benefits you.
I intend to continue to improve SQLite.swift's raw SQL layer in the near future. The type-safe layer got a lot of love up front, but I've been working to decouple things to the point where you should be able to import just the Core API and ignore the expression builder layer entirely if you so choose.

Going to close this out for now, but feel free to ask additional questions if you have any!

Thanks. I have used the type-safe on a new project, so I feel fairly comfortable with it.


In @Implies javadoc, endorse the "transitive annotation" pattern as a fallback

Suppose annotation type A wishes to allow other annotations to "imply" it, e.g. @Implies(A.class) @interface B {}, but it wants users to have an alternative for whatever reason (e.g. perhaps B with no parameters wants to imply A with a hardcoded argument value).
If the @Implies javadoc defines a "transitive annotation pattern" to use for this case [EDIT: that means, advise A to include the annotation-type target type and to specify that @A @interface B {} means the same as the Implies code above], then
(a) it can explain the intended meaning of the pattern relative to the @Implies spec itself, which establishes consistency between the two approaches and should also just save time
(b) A (as long as it does not already target annotation types!) can adopt that pattern, and has an easy way to explain that to its users just by linking to the @Implies javadoc (perhaps to where it is hosted somewhere online, requiring no local build-time dependency)
(c) We hope there will be libraries corresponding to each API we use to inquire about annotations today, which make those inquiries in an @Implies-aware way; the @Implies javadoc would set out the rules these wrapper libraries should follow, and it makes sense for it to cover the transitive-annotation case at the same time.
(In fact, even if A has required parameters and can't be used with @Implies this still works.)
Now, it is irregular to be linking to @Implies to address a case where @Implies is not literally involved at all, but I'm not sure that's really a problem.
Not sure whether to tag this 1.0 or not, so when in doubt, I do.

David asked if this could be postponed past 1.0, but I literally think it is only some advice in the javadoc. Nothing to even test.

I was thinking more about the possibility of accidental implication when @Implies supports non-JSpecify annotations (#182).
Here's one of our annotations in com.google.common.annotations (not part of Guava, though):
@Documented
@GoogleInternal
@GwtCompatible
@IncompatibleModifiers(PUBLIC)
@Retention(CLASS)
@Target(CONSTRUCTOR)
public @interface DefaultConstructorForGwt {}

I think what we're saying is that @DefaultConstructorForGwt doesn't imply those annotations because those annotations don't document that they support the "transitive annotation" pattern. But how do tools know which annotations work that way and which ones don't? This sounds like it may be another reason to require putting @Implies on the annotation in order for it to imply anything, not for it to imply annotations it's annotated with automatically.
(Alternatively, we could have another meta-annotation for @SupportsTransitiveAnnotationPattern. But that isn't an option for JDK annotations. Or we could trigger the behavior based on the presence of @Target(ANNOTATION_TYPE)... except that that would do exactly the wrong thing for @Documented and friends, so we'd need to hope that we can make a list of @Documented and all the annotations that shouldn't trigger this behavior :))

I continue to think that we'd get into trouble if we tried to define a mechanism that behaves like implication but avoids using @Implies.
If we were to define such a mechanism anyway, I think that implementations would need to be careful in order to avoid sometimes introducing problems at runtime, even for people who don't use the mechanism.
Consider a tool like Guice that reads annotations at runtime. When it sees a @Provides method, it needs to see if any of the method's annotations imply @Nullable.
To do so, it has to call getAnnotations() on the method. If some the annotations are missing at runtime, getAnnotations() should omit them gracefully. But it's possible for some more complex problems to lead to exceptions (JDK-8247797), like if the enum value for an annotation element is missing. (Yes, we can hope that that JDK bug will be fixed someday, and maybe we could even try to help with it someday. But I wouldn't want to rely on anything anytime soon.)
I think that today Guice also needs to call getAnnotations() on the class of each annotation (in order to check if it's a scoping annotation or qualifier annotation):

https://github.com/google/guice/blob/2098d6ad4e33bb92e28d83eb6f52bf3497180985/core/src/com/google/inject/internal/ProviderMethodsModule.java#L322
https://github.com/google/guice/blob/2098d6ad4e33bb92e28d83eb6f52bf3497180985/core/src/com/google/inject/internal/Annotations.java#L186-L192

That, too, should omit problem annotations gracefully in most cases but not necessarily in general.
The part that would change with the feature we're discussing here is that Guice would thereafter need to explore the entire meta-annotation graph. (Note that even plain @Implies could increase how much of the graph it would need to explore, though at least it would be limited to the edges explicitly requested by @Implies.) That increases the chances that it will encounter an annotation that actually leads to an exception. For example, the Java 8 implementation of getAnnotations throws an exception when it tries to look up the annotations on an annotation that has @Target({..., MODULE}).
This should mostly be solvable by catching the exception. That does still leaves the feature slightly less reliable.  In contrast, it would seem more defensible for Guice to actually fail if it encountered an annotation that was explicitly annotated with @Implies, since @Implies suggests that the annotation author thinks it's important for tools to follow the link.) That said, implication in general may already end up being somewhat second-class, if only in the case of incomplete classpaths (which is one of the possible causes of the issue I'm discussing here).
Again, it's worth reemphasizing that the fundamental problem (a) exists today and (b) gets bigger with plain @Implies, just not as big as it gets with "implication without @Implies."


Add JointTrajectoryController system plugin

Hello everyone,
About a month ago, I wanted to utilise MoveIt2 inside of Ignition Gazebo. At the time, I could not find anything ready-to-use that would suit my needs, so I investigated my options.
My initial plan was to employ ros2_control. However, it was still under "heavy" development last time I checked, and integrating it in a similar manner to gazebo_ros2_control is beyond my competences. Therefore, I have decided to implement JointTrajectoryController instead, bringing me to this PR.
In its simplest, JointTrajectoryController subscribes to ignition.msgs.JointTrajectory messages (PR - https://github.com/ignitionrobotics/ign-msgs/pull/106) and controls multiple single-axis joints simultaneously to follow the desired trajectory. The resulting force/torque for each joint is computed as a sum position PID commands + velocity PID commands + effort, which is then applied to joints as force/torque commands. Any of these terms can be ignored by a) disabling PID; b) not including the corresponding commands in the JointTrajectory message. This allows the plugin to be used without a motion planning framework like MoveIt, e.g. for direct effort control of a manipulator or a simple gripper, which can even be in real-time if JointTrajectory is published frequently with only a single point.
I am not really sure if this plugin fits here or there is something else designed to obtain a similar functionality. If integration with ros2_control is preferred, or there are some other plans to obtain such functionality, then feel free to close this PR :smile:.

Examples: Currently, the only examples of using this plugin are with MoveIt2 controlling Franka Emika Panda. See ign_moveit2 for details.

A small example in which the plugin is used to control all joints, including the gripper.
Inclusion in SDF (example with Franka Emika Panda):
<include>
    <uri>https://fuel.ignitionrobotics.org/1.0/AndrejOrsula/models/panda</uri>
    <plugin
        filename="libignition-gazebo-joint-trajectory-controller-system.so"
        name="ignition::gazebo::systems::JointTrajectoryController">
        <joint_name>panda_joint1</joint_name>
        <initial_position>0</initial_position>
        <position_p_gain>3000</position_p_gain>
        <position_d_gain>15</position_d_gain>
        <position_i_gain>1650</position_i_gain>
        <position_i_min>-15</position_i_min>
        <position_i_max>15</position_i_max>
        <position_cmd_min>-87</position_cmd_min>
        <position_cmd_max>87</position_cmd_max>

        <joint_name>panda_joint2</joint_name>
        <initial_position>0</initial_position>
        <position_p_gain>9500</position_p_gain>
        <position_d_gain>47.5</position_d_gain>
        <position_i_gain>5225</position_i_gain>
        <position_i_min>-47.5</position_i_min>
        <position_i_max>47.5</position_i_max>
        <position_cmd_min>-87</position_cmd_min>
        <position_cmd_max>87</position_cmd_max>

        <joint_name>panda_joint3</joint_name>
        <initial_position>0</initial_position>
        <position_p_gain>6500</position_p_gain>
        <position_d_gain>32.5</position_d_gain>
        <position_i_gain>3575</position_i_gain>
        <position_i_min>-32.5</position_i_min>
        <position_i_max>32.5</position_i_max>
        <position_cmd_min>-87</position_cmd_min>
        <position_cmd_max>87</position_cmd_max>

        <joint_name>panda_joint4</joint_name>
        <initial_position>-1.57</initial_position>
        <position_p_gain>6000</position_p_gain>
        <position_d_gain>30</position_d_gain>
        <position_i_gain>3300</position_i_gain>
        <position_i_min>-30</position_i_min>
        <position_i_max>30</position_i_max>
        <position_cmd_min>-87</position_cmd_min>
        <position_cmd_max>87</position_cmd_max>

        <joint_name>panda_joint5</joint_name>
        <initial_position>0</initial_position>
        <position_p_gain>2750</position_p_gain>
        <position_d_gain>2.75</position_d_gain>
        <position_i_gain>1515</position_i_gain>
        <position_i_min>-6.88</position_i_min>
        <position_i_max>6.88</position_i_max>
        <position_cmd_min>-12</position_cmd_min>
        <position_cmd_max>12</position_cmd_max>

        <joint_name>panda_joint6</joint_name>
        <initial_position>1.57</initial_position>
        <position_p_gain>2500</position_p_gain>
        <position_d_gain>2.5</position_d_gain>
        <position_i_gain>1375</position_i_gain>
        <position_i_min>-6.25</position_i_min>
        <position_i_max>6.25</position_i_max>
        <position_cmd_min>-12</position_cmd_min>
        <position_cmd_max>12</position_cmd_max>

        <joint_name>panda_joint7</joint_name>
        <initial_position>0.79</initial_position>
        <position_p_gain>2000</position_p_gain>
        <position_d_gain>2</position_d_gain>
        <position_i_gain>1100</position_i_gain>
        <position_i_min>-5</position_i_min>
        <position_i_max>5</position_i_max>
        <position_cmd_min>-12</position_cmd_min>
        <position_cmd_max>12</position_cmd_max>

        <joint_name>panda_finger_joint1</joint_name>
        <initial_position>0</initial_position>
        <position_p_gain>250</position_p_gain>
        <position_d_gain>0.2</position_d_gain>
        <position_i_gain>50</position_i_gain>
        <position_i_min>-10</position_i_min>
        <position_i_max>10</position_i_max>
        <position_cmd_min>-20</position_cmd_min>
        <position_cmd_max>20</position_cmd_max>

        <joint_name>panda_finger_joint2</joint_name>
        <initial_position>0</initial_position>
        <position_p_gain>250</position_p_gain>
        <position_d_gain>0.2</position_d_gain>
        <position_i_gain>50</position_i_gain>
        <position_i_min>-10</position_i_min>
        <position_i_max>10</position_i_max>
        <position_cmd_min>-20</position_cmd_min>
        <position_cmd_max>20</position_cmd_max>
    </plugin>
</include>

JointTrajectoryController.hh documents this further.

It would be good to add a test before merging

Added tests for position and velocity control. PID/PI gains were tuned to have somewhat aggressive response in order to reduce the necessary duration of the test. Both should succeed with tolerance of 1e-5 (position even with 1e-6), but I set it to 1e-4 in case there are some minor/negligible future changes in physics.
These tests should* cover the main functionality of the plugin, parsing of parameters and communication via Ignition Transport. I did not add any complicated case of hybrid control as I wasn't really sure how to design such test.

It would be nice to add a simple demo using just Ignition Gazebo

Added a simple world with three planar RR robots to demonstrate position, velocity and effort control. Sending joint trajectories with CLI is a bit messy but I hope that's okay.

It would be good to add a test before merging

Added tests for position and velocity control. PID/PI gains were tuned to have somewhat aggressive response in order to reduce the necessary duration of the test. Both should succeed with tolerance of 1e-5 (position even with 1e-6), but I set it to 1e-4 in case there are some minor/negligible future changes in physics.
These tests should* cover the main functionality of the plugin, parsing of parameters and communication via Ignition Transport. I did not add any complicated case of hybrid control as I wasn't really sure how to design such test.

It would be nice to add a simple demo using just Ignition Gazebo

Added a simple world with three planar RR robots to demonstrate position, velocity and effort control. Sending joint trajectories with CLI is a bit messy but I hope that's okay.

Just a few thoughts for future. I have not included them, but they could be implemented as optional features of the plugin and enabled via parameters.
Use JointPositionReset component to set initial_position of joints
Currently, this plugin uses initial_position just as the first position target that the joint should reach. If position control is not enabled, this property is more or less ignored. JointPositionReset component could therefore be used to set the joint positions right after the model is spawned (inside Configure() if possible or at the first call to PreUpdate() and at each reset) and then just maintain them with regular control.
Add interpolation between trajectory points to provide smoother motion and reach points exactly at their time_from_start
This plugin currently does not perform any interpolation, therefore, the produced motion will be only as smooth as the input joint trajectory. With sparse points such as those in demo, it is possible to tune the smoothness a bit with the combination of PID gains and joint dynamics (e.g. damping), but it is quite limited.
Although some motion planning frameworks, e.g. MoveIt, might already produce trajectories with configurable number of points via their own interpolation/parameterization, it might still be beneficial to add simple interpolation inside of this plugin.

Just a few thoughts for future. I have not included them, but they could be implemented as optional features of the plugin and enabled via parameters.
Use JointPositionReset component to set initial_position of joints
Currently, this plugin uses initial_position just as the first position target that the joint should reach. If position control is not enabled, this property is more or less ignored. JointPositionReset component could therefore be used to set the joint positions right after the model is spawned (inside Configure() if possible or at the first call to PreUpdate() and at each reset) and then just maintain them with regular control.
Add interpolation between trajectory points to provide smoother motion and reach points exactly at their time_from_start
This plugin currently does not perform any interpolation, therefore, the produced motion will be only as smooth as the input joint trajectory. With sparse points such as those in demo, it is possible to tune the smoothness a bit with the combination of PID gains and joint dynamics (e.g. damping), but it is quite limited.
Although some motion planning frameworks, e.g. MoveIt, might already produce trajectories with configurable number of points via their own interpolation/parameterization, it might still be beneficial to add simple interpolation inside of this plugin.

The code checker has several complaints

Sorry about that. They should all be corrected by https://github.com/ignitionrobotics/ign-gazebo/pull/473/commits/e30cbb88fa553e2441172a4bb21e576c33389a3b now.


QR Code Reader on Text Extractor utility

Description of the new feature / enhancement
I suggest adding a built-in QR Code Reader to the Text Extractor utility. This would allow users to conveniently scan QR codes directly within the application, extracting the information embedded in the code without needing a separate scanner app. This feature would enhance the usability of the tool and provide users with a more seamless experience.
Scenario when this would be used?
Sometimes people get really excited about a (not so) new technology and want to use it everywhere, without considering if that technology is actually suitable for the situation. Like that coworker who sends a QR Code for a form via Microsoft Teams when they could just send you the link.
That leaves you with three options:

Find your smartphone to scan the darn thing and somehow send yourself the link to access it (if necessary).
Download the image and use another application capable of reading those little squares.
Educate the heathen that converting URLs into images is only useful when you can't just click and open it.

The feature to read QR Codes with the good ol' WIN + SHIFT + T would be a nice inclusion for people with social anxiety, as well as promoting less hostile work environments.
Supporting information
No response

/dup https://github.com/microsoft/PowerToys/issues/4859


fix(react-email): cli crash

When running react-email dev on fresh project, there was error occured sometimes. And error was occured when createAppFiles function creating ./react-email/src/pages/preview/[slug].tsx file, because writeFile function doesn't wait createDirectory function to finish.

@zenorocha, @bukinoshita Could you please check this PR.

Sounds good @enkhee-Osiris. Thanks for reporting as well @matt-aitken


a bug

the code in thpool.c at 143 lines is as blow:
thpool_p->threads = (struct thread**)malloc(num_threads * sizeof(struct thread));
i think it shuold be
thpool_p->threads = (struct thread**)malloc(num_threads * sizeof(struct thread *));

Nice catch! This definitely is a bug.

+1 for merging this fix into master


Update incorrect filename link

generateStoryFlow.ts was renamed to storyTellerFlow.ts but  README didn't reflect the change, giving a 404 when clicking on the link.
Hope it helps! 🙂 Great project btw (just came across today)

Thank you!


Bring your own dependencies

Razzle is awesome because of it's no-config-needed approach. Everything works out of the box.
To make this all possible, Razzle has a lot of dependencies. Currently, these dependencies are locked. It seems like they are locked since 2e68e7dd399131369aee51e3c1f3a27f40e7e940.
By locking these dependencies, it's hard for projects that use razzle to upgrade to a newer version of these dependencies. For example, eslint is currently locked at 4.5.0 while the latest version is 4.18.2. As stated in #404, old dependencies can become incompatible with other modules like eslint-config-airbnb.
If you run yarn add eslint, the newest version of eslint will be added to the project. But Razzle will still use the old version, because it's dependencies are locked. The only way to make Razzle use the new eslint is by changing the webpack config, but the old eslint will still be installed while it's never used.
Why were the Razzle dependencies locked? When they are loosened with a caret, it would be easier for users to update modules like eslint and babel. As long as dependencies uphold semver, updating them won't break Razzle.

Totally understand the frustration. Razzle runs on a lot of mission critical applications for my clients, so locking down deps is just a habit. When Babel 7 is released, I plan to do a large overhaul. I will consider relaxing them.

Feel free to submit a PR with the changes to eslint you'd like to see

Any ideas when this will get a npm tag so we can pull this as a dependency?

I have been working on 2. I think it’s about time to tag 0.8 as 1

@JP-GNL in which file did you put this?

Sorry, should have said: razzle-config.js in your app root.

So for clarity, using the example for custom webpack config the completed file would look something like this:
'use strict';
const path = require('path');
module.exports = {
  modify(config, { target, dev }, webpack) {
    config.module.rules[0].use[0].options.eslintPath = path.resolve(__dirname, 'node_modules/eslint');
    return config;
  },
};

Thank you @AndyArcherKG! I was fighting with this for a while, your solution works perfectly, didn't realize that was possible.


Add footer config to c3 charts

@aendrew First pass at https://github.com/masayuki0812/c3/issues/1266 - added a footer config similar to the header config in my other pull request. Also added ability to send the title to the bottom of the chart, which necessitated some sizing changes.

I'm going to put this onhold for the moment because as per #1032, this probably needs to be a plugin. Luckily, we're hoping to start making progress on that in the next month or two, so stay tuned. 😄

@aendrew Anything new about this functionality? :)


BUG Midi and Dig down not liking combat booster

The following two errors follow anytime I cast a spell with a template in midiqol.  It happens with midi 29 and 30, but I'm on 29 for reasons unrelated.
Midiqol 10.0.29(and 30)
dnd5e 2.1.4
foundry build 291
Dig Down
Combat Booster 3.5.1
Dig Down 2.2
(This error is confirmed to be occurring by multiple midi users and goes away when CB is disabled)

I have all 3 modules enabled (and dependencies) and i'm not getting this error

I have no idea of the cause of this issue, but i've added a try catch block so that the error is handled and does not stop the workflow in the event it happens


Bump version to v10.3.1

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Recipe was re-added via https://github.com/conda-forge/staged-recipes/pull/3563 . So this is ready to be merged!


New version: TTKN.CNKIExpress version 0.1.20

Auto-updated by vedantmgoyal2009/winget-pkgs-automation in workflow run 742
Microsoft Reviewers: Open in CodeFlow

Enter a pull request number: 56247

Manifest validation succeeded.
Found 全球学术快报 [TTKN.CNKIExpress] Version 0.1.20
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
An unexpected error occurred while executing the command:
No mapping for the Unicode character exists in the target multi-byte code page.

Press any key to continue . . .

It's a WinGet preview bug.
I'll file an issue at https://github.com/microsoft/winget-cli


Add RandomForest exception tests

This Pull Request adds:

[x] Exception throwing with invalid feature subset ratio tests
[x] Exception throwing when feature subset ratio is not float nor string
[x] Makes it possible to use 'sqrt' feature subset ratio 🐛
[x] Changes core Exception to php-ml InvalidArgumentException
[x] Cleans up some of the docblocks in RandomForest class

Thanks.


Custom Widget loaded value missing?

Are you requesting a feature, reporting a bug or ask a question?
question, possible bug?
What is the current behavior?
if json data is loaded the value is no where found in widget, is different since version 0.12.32
What is the expected behavior?
To have the loaded value available to pre select or display data
How would you reproduce the current behavior (if this is a bug)?
in 0.12.32 I use question.cachedValueForUrlRequests to get the current loaded value, but now since that version I don't see any property with the value.
Also, in select widget example even if the survey has assign a json data to be display, the widget does not show that value, it selects the first item in the list, not the one in the json.
Regards and Thanks,

@madceb Yes, I have changed gettting values from restful services. The property is still there, however it is better do not use it, it is a private property. What do you want to achieve?
Thank you,
Andrew

Hello @andrewtelnov, what I'm trying to do it is to preselect in the select2 widget a previously saved data. Using the property mentioned I used to do it in 0.12.32 and back version.
Thanks,

@madceb You may take a code from here: https://github.com/surveyjs/widgets/blob/master/src/select2.js
It supports preselect.
We are going to release new custom widgets approach on this week.
Thank you,
Andrew

Thanks @andrewtelnov, I'll be looking forward for the new widgets approach.
Excellent work.
Regards,


[YouTube] Incorrect detection of best format

Checklist

[x] I'm reporting a broken site support issue
[x] I've verified that I'm running youtube-dl version 2019.11.05
[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar bug reports including closed ones
[x] I've read bugs section in FAQ

Verbose log

youtube-dl.exe -v --list-formats https://www.youtube.com/watch?v=88aN6mYjJTQ
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-v', '--list-formats', 'https://www.youtube.com/watch?v=88aN6mYjJTQ']
[debug] Encodings: locale cp1252, fs mbcs, out cp850, pref cp1252
[debug] youtube-dl version 2019.11.05
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.18362
[debug] exe versions: none
[debug] Proxy map: {}
[youtube] 88aN6mYjJTQ: Downloading webpage
[youtube] 88aN6mYjJTQ: Downloading video info webpage
[youtube] {18} signature length 109, html5 player vfl3Ub7Lu
[youtube] {313} signature length 105, html5 player vfl3Ub7Lu
[youtube] {266} signature length 109, html5 player vfl3Ub7Lu
[youtube] {264} signature length 105, html5 player vfl3Ub7Lu
[youtube] {271} signature length 109, html5 player vfl3Ub7Lu
[youtube] {137} signature length 109, html5 player vfl3Ub7Lu
[youtube] {248} signature length 109, html5 player vfl3Ub7Lu
[youtube] {136} signature length 109, html5 player vfl3Ub7Lu
[youtube] {247} signature length 105, html5 player vfl3Ub7Lu
[youtube] {135} signature length 105, html5 player vfl3Ub7Lu
[youtube] {244} signature length 109, html5 player vfl3Ub7Lu
[youtube] {134} signature length 105, html5 player vfl3Ub7Lu
[youtube] {243} signature length 109, html5 player vfl3Ub7Lu
[youtube] {133} signature length 105, html5 player vfl3Ub7Lu
[youtube] {242} signature length 105, html5 player vfl3Ub7Lu
[youtube] {160} signature length 109, html5 player vfl3Ub7Lu
[youtube] {278} signature length 109, html5 player vfl3Ub7Lu
[youtube] {140} signature length 109, html5 player vfl3Ub7Lu
[youtube] {249} signature length 109, html5 player vfl3Ub7Lu
[youtube] {250} signature length 109, html5 player vfl3Ub7Lu
[youtube] {251} signature length 109, html5 player vfl3Ub7Lu
[info] Available formats for 88aN6mYjJTQ:
format code  extension  resolution note
249          webm       audio only tiny   51k , opus @ 50k (48000Hz), 1.12MiB
250          webm       audio only tiny   67k , opus @ 70k (48000Hz), 1.47MiB
140          m4a        audio only tiny  128k , m4a_dash container, mp4a.40.2@128k (44100Hz), 2.93MiB
251          webm       audio only tiny  134k , opus @160k (48000Hz), 2.92MiB
278          webm       256x144    144s  108k , webm container, vp9, 30fps, video only, 2.26MiB
160          mp4        256x144    144s  116k , avc1.4d400c, 30fps, video only, 2.56MiB
133          mp4        424x240    240s  253k , avc1.4d4015, 30fps, video only, 5.66MiB
242          webm       424x240    240s  257k , vp9, 30fps, video only, 5.04MiB
243          webm       640x360    360s  474k , vp9, 30fps, video only, 9.49MiB
134          mp4        640x360    360s  634k , avc1.4d401e, 30fps, video only, 10.34MiB
244          webm       848x480    480s  867k , vp9, 30fps, video only, 17.07MiB
135          mp4        848x480    480s 1161k , avc1.4d401f, 30fps, video only, 19.66MiB
247          webm       1280x720   720s 1706k , vp9, 30fps, video only, 34.40MiB
136          mp4        1280x720   720s 2314k , avc1.4d401f, 30fps, video only, 37.20MiB
248          webm       1920x1080  1080s 2971k , vp9, 30fps, video only, 61.08MiB
137          mp4        1920x1080  1080s 4342k , avc1.640028, 30fps, video only, 66.13MiB
264          mp4        2560x1440  1440s 9200k , avc1.640032, 30fps, video only, 134.85MiB
271          webm       2560x1440  1440s 9285k , vp9, 30fps, video only, 183.87MiB
266          mp4        3840x2048  2160s 12787k , avc1.640033, 30fps, video only, 236.25MiB
313          webm       3840x2160  2160s 19124k , vp9, 30fps, video only, 402.59MiB
18           mp4        640x360    360s  585k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 13.49MiB (best)

Description

Trying to download https://www.youtube.com/watch?v=88aN6mYjJTQ at default settings, which is supposed to be best quality, downloads a video at total garbage quality. You can see in the output of --list-formats above how it is incorrectly detecting format 18 as best instead of 313+140/251, or at least 266.

Oh, it seems I forgot to install ffmpeg, that is why it did not pick the split bestvideo+bestaudio. Big facepalm here..


(Question) Using default HTML Parser

Hey. I see you're using NSHtmlTextDocumentType while initing NSAttributedString to parse and present html. I went through your code and I'm not sure you're caching the result. You're also required to use this from the main queue. The reason why I bought this up is I have been using it in my own project and I have seen some really weird crashes whenever I use it in a TableView or CollectionView and reload a cell or the whole view. Have you experienced anything similar? I have been using DTCoreText as an alternative.

@arjunpa oh interesting, thanks for the heads up! we'll investigate doing this another way. we have very light needs for our "html parsing", so the whole NSHtmlTextDocumentType machinery was a bit overhanded anyway.
Thanks!


consider nlohmann_json for next major release?

Hey, You might want to consider switching to nlarssson's json in a future release.  It makes json a C++ datatype (e.g. you just use the usual container operations on the aggregate ones, etc), is faster than jansson (and written in C++11), supports msg pack natively, and is header-only.  I just wrote a shim Lohmann_json <->jalson so our code could use json and then could just pass to to wampcc through a json-json translator.  nlohmann is so c++-like it's worth doing this translation to get the benefit of wampcc.
I know this isn't a trivial code change but would result in smaller code.  I haven't made a pull request for such a big change but might work on this if it's interesting to you.

Hello @dvhwgumby, I have wampcc integrated in two projects now and to avoid conversions between json types I have used wampcc::json_object everywhere. It is expected that many other project have done the same.
I would kindly ask if such a code change happens that it is switchable/optional during build time as it would completely break existing source codes linked to wampcc library.

Hi ... that would be a large change to the project, although possible to temporarily make it less disruptive by also keeping the wampcc::json_object as a wrapper.    My original concern with nohlmann is that it might require later language features, so I though would be better to stick to roughly earlier modern-C++.  I'll have a review.  Although do note internally wampcc does use a separate C library for json, it is not an own implementation etc.


Package license is not sorted at the top in licenses shown in LicensePage

The LicensePage seems to have special handling for the app license, see https://github.com/flutter/flutter/blob/3.16.9/packages/flutter/lib/src/material/about.dart#L704-L706 and https://github.com/flutter/flutter/blob/3.16.9/packages/flutter/lib/src/material/about.dart#L731-L749. It assumes the first license that it gets from LicenceRegistry.licenses is the application package, but this is not the case. The licenses in the asset NOTICES.Z are already sorted in a way, and the application package is not the first one. What this means that there is no way to make the app license to appear on top; if it is named so that it is sorted first, it will still be sorted second (unless the package really sorts as the very first one, which is unlikely as it would require it to have a name starting with _).
This behavior (showing the app package as first) is actually never advertised here: https://api.flutter.dev/flutter/material/LicensePage-class.html, this behavior is only mentioned in code. So maybe just removing the code (because it is confusing for readers, as it just doesn't work as its comments say) is the fix?

CC @Hixie, since you're probably more familiar with the licenses page than anyone else

That's probably a contract we never wrote a test for and so at some point we broke it.
The fix is probably to make sure the code in the tool that brings all the licenses together makes a point of keeping the main license first.


Skype bot error [413] Request Entity Too Large

Hi all.  I'm getting error [413] on a simple skype bot.
Error: Error: Request to https://smba.trafficmanager.net/apis/v3/conversations/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/activities' failed: [413] Request Entity Too Large
Sample code:
const express = require('express');
const builder = require('botbuilder');
const app = express();

const port = process.env.PORT || 3000;

app.listen(port,()=>{
    console.log(`Server listening on port ${port}.`);
});

const connector = new builder.ChatConnector({
    appId: process.env.MICROSOFT_APP_ID,
    appPassword: process.env.MICROSOFT_APP_PASSWORD
});

const bot = new builder.UniversalBot(connector);

app.post('/api/messages', connector.listen());

bot.dialog('/', function (session) {

    var msg = new builder.Message(session)
            .attachments([{
                contentType: 'image/gif',
                contentUrl: 'http://i.imgur.com/MAQm02i.gif'
            }]);

    session.send(msg);

});

It works on webclient and on the emulator but crashes on skype. Any idea whats happening ?

Could it be that the gif you're trying to attach is too large for Skype? It's over 50MB in size. Have you tried using a smaller gif file?

Skype limits size of the attachment to 20MB and as a result you are hitting that limit and get http status code 413. Different channels have different size limits for attachments. Publishing a list covering these limits is in our backlog.

@msft-shahins I know it's been over a year and a half since this thread was closed, but I would really like to know if the list you refer to, got finally published, since I am not able to find any associated ticket.
I would appreciate your help.


feat(cxx_common): optionally dispose of unselected filesets

PTAL

(oops, jumped the gun there, actual PTAL now)


Campaign page: add ipfs support to markdown editor

https://github.com/gamedaoco/gamedao-beta/pull/133


Compatibility with RuboCop v0.60.0

There are a few interesting changes between RuboCop v0.59.2 and v0.60.0:

We need to add [:exclude_limit] when checking cop.config_to_allow_offenses.
Style/MutableConstant reported a few new issues.
Layout/AlignHash has been changed so a combination of key and table styles is no longer allowed. I disagree with this decision, and have voiced my opinion on the issue rubocop-hq/rubocop#6410
There seems to be some namespace collision between the cops Rails/HttpStatus and RSpec/Rails/HttpStatus … again.

Before submitting the PR make sure the following are checked:

[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[ ] Added tests.
[ ] Added an entry to the changelog if the new code introduces user-observable changes.
[x] The build (bundle exec rake) passes (be sure to run this locally, since it may produce updated documentation that you will need to commit).

The point number 4. can be related to this issue as well.

Probably also related to rubocop-hq/rubocop#5251

@Darhazer Fixed and rebased.


Chore/GitHub actions ci

添加CI的git-action的workflow，添加README对应的action badge

 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.


[BUG] Fail to copy public url to block blob

Describe the bug
We used the function BlobBaseClient.SyncCopyFromUriAsync to copy a public url to a block blob. It was working fine before, but it failed when I ran the unit test today. It is strange that the copy status is success, but the size of the blob is 0.  The copyId is 7e6337ea-c904-4aa8-906a-78010dac8c31. Some screen shots are as follow:
The response of source url:

Copy Status:

The properties of target blob:

The response of target blob:

Expected behavior
Succeed to copy the public url to the block blob
Actual behavior (include Exception or Stack Trace)
Fail to copy the thumbnail, but the copy status is success.
To Reproduce
Steps to reproduce the behavior (include a code snippet, screenshot, or any additional information that might help us reproduce the issue)

Use the function BlobBaseClient.SyncCopyFromUriAsync to copy the url to a block blob

Environment:

Name and version of the Library package used: Azure.Storage.Blobs 12.7.0
Hosting platform or OS and .NET runtime version (dotnet --info output for .NET Core projects): Microsoft.NETCore.App 3.1.13
IDE and version : Visual Studio 16.9.1

Hi.  Are you sure your source URL is valid, and is authorize to access the resource?

Hi. Are you sure your source URL is valid, and is authorize to access the resource?

Of course. I am sure that the url is valid, and it can be accessed anonymously.

This sounds like an intermittent issue with the service than an SDK issue since you said it was working fine before and it failed in the instance you ran the unit test.
This would be a difficult thing for us to reproduce since this isn't tied to a version of the SDK you upgraded to or anything. I would open an incident issue with the storage service and provide them the information to this copy request you sent.
https://docs.microsoft.com/en-us/azure/azure-portal/supportability/how-to-create-azure-support-request

I think you are right. It seems that this is indeed a service issue. Thanks for you help.


object literal change

Previously,
console.log foo:1, bar:2, 3

compiled to
console.log({foo:1, bar:2, '3':3})

But in current version, it compiles to
console.log({foo:1, bar:2}, 3)

Is this change intentional and guaranteed not to change again?

Intentional. Not sure how much of a guarantee I can give you (the parser is a fickle mistress), but this was a long-standing bug that was finally quashed, and everyone agreed that it was a bug, so it'd definitely be seen as a regression if it cropped up again.


Using the same channel mask for multiple images

First of all, I want to appreciate this work. It is very useful, and I'm currently using it for my research.
I want to use the same cloud pattern for multiple images, and I believe it is returned as cmask in the example. Is it possible to use the same cmask for different images? I am evaluating performance of ML model robustness against cloud and I want to apply the same cloud pattern to many images to observe if different patterns influence the performance.
Is there any way I can do it?
Thank you.

Hi @zakiindra, thank you!
Yes, it is possible and I have done this before for my research I think.
Please have a look here:
https://github.com/strath-ai/SatelliteCloudGenerator/blob/d0787cbdc1b39a7976f89aa085f1430f3207eda6/src/CloudSimulator.py#L328-L333

You can get the cloud component by setting return_cloud to True
You can then use the mix() method as shown above to mix the returned cloud with any image
Ultimately, the current code is not best adapted to it, but it is definitely possible by doing this as described above - if you have some ideas on how the current package could be expanded to allow this more easily, feel free to propose!

Let me know if this answers your doubts.


Logs are cut off in dashboard UI

Logs presented in web UI are always cut off and there is no way to find the reason for the failure from this view.
In jx get build logs logs are present correctly.
Sample URL address for this view - https://dashboard-jx.jenkinsx.company/org/repot/master/XXX
Pipelines visualizer version: 1.7.5
Described situation is illustrated below. On the left you can see all logs from a pod, on the right you can see that in dashbord there are a few last lines missing. I have this issue for every failing build.

more details would help
I haven't seen this
Is there an error?

Could you post any screenshots to show how it looks like? Any logs from browser's inspector while viewing this view? Server responses from inspector? :slightly_smiling_face:

@keskad @patrickleet I've just attached a screenshot to the issue description.
In network traffic, I see that dashboard is presenting everything that gets from the server:

I'm not sure if it is connected with this issue, but sometimes I get the below between log lines:
failed to create fsnotify watcher: too many open files

failed to create fsnotify watcher: too many open files

is an error with how your kubernetes nodes are configured.
see https://github.com/kubernetes/kubernetes/issues/64315#issuecomment-904103310

@patrickleet I've changed the node configuration, now I don't see an error with "open files" anymore.
Unfortunately original issue, with cut off logs, still occurs.
It looks like a general error with sending data from a server. Isn't this kind of problem that occurs for each user?

I didn't make the ui but maybe something to do with stdout vs stderr?

I am also experiencing the same.
example pipeline step:
- name: db-wait
          image: docker.io/amazon/aws-cli:2.0.52
          script: |
            #!/bin/sh
            source .jx/variables.sh
            echo ">>> Found PR #$PULL_NUMBER"

sometimes it will show the echo output, sometimes it wont.
if i have multiple lines that use echo, some will show, others will not


Documentation update for 1.4

Some things need to be updated before release:

[x] event images
[ ] settings editor
[x] theme editor
[x] new DialogicClass functions

are the ones I could think of so far

[ ] Details for the History settings
[ ] Guide to customizing History Parts

I will close this as it has no priority whatsoever anymore.


Mario currently doesn't collide with boulders except being killed when touched by them

Although the death mechanics work it won't block passages in certain levels like Natla's Mines;

savegame-natlas.zip


auth/login not work

Hello Dear
@victorgram
@nicklee1990
@HipsterJazzbo
I followed your instructions that you mentioned here , am also working with laraParse provider .
I am trying to login with exist users on my parse User table but the login failed and I am getting this message
These credentials do not match our records.
Note : registration work fine
thanks

That is just the standard parse invalid login details. Check your form to ensure you are passing the login credentials correctly

On 28 Nov 2015, at 13:41, backersh<EMAIL_ADDRESS>wrote:
Hello Dear @nicklee1990
I followed your instructions that you mentioned here , am also working with laraParse provider .
I am trying to login with exist users on my parse User table but the login failed and I am getting this message
These credentials do not match our records.
Note : registration work fine
thanks
—
Reply to this email directly or view it on GitHub.

@nicklee1990
I check the form the posted data look like this I think there is nothing wrong with these data sent !!
credentials array
array(2) { ["email"]=> string(20<EMAIL_ADDRESS>["password"]=> string(8) "password" }

Hmm perhaps because the field name is "email" rather than "username" it is not using the correct details

On 28 Nov 2015, at 18:28, backersh<EMAIL_ADDRESS>wrote:
@nicklee1990
I check the form the posted data look like this I think there is nothing wrong with these data sent !!
credentials array
array(2) { ["email"]=> string(20<EMAIL_ADDRESS>["password"]=> string(8) "password" }
—
Reply to this email directly or view it on GitHub.

I checked this also , same issue , Its weird how registration works correctly but login not .
when I register new user  the user is authenticated correctly but using login for is not .
I am using this class that you mentioned in  #36 post
auth = $auth;
        $this->registrar = $registrar;
        $this->user = $user;
        $this->middleware('guest', ['except' => 'getLogout']);
    }

    /**
     * Handle a login request to the application.
     *
     * @param  \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function postLogin(Request $request)
    {

        $this->validate($request, [
//            'email' => 'required|email',
            'password' => 'required',
        ]);

        $credentials = $request->only('email', 'password');

        if ($this->auth->attempt($credentials, $request->has('remember_token'))) {
            return redirect()->intended($this->redirectPath());
        }

        return redirect($this->loginPath())
            ->withInput($request->only('email', 'remember_token'))
            ->withErrors([
                'email' => $this->getFailedLoginMessage(),
            ]);
    }

    /**
     * @param Request $request
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function postRegister(Request $request)
    {
        $validator = $this->registrar->validator($request->all());

        if ($validator->fails()) {
            $this->throwValidationException(
                $request, $validator
            );
        }

        $this->auth->login($this->registrar->create($request->all()));

        return redirect()->intended($this->redirectPath());
    }

}

@nicklee1990

@nicklee1990
this is link of the AuthController
https://drive.google.com/file/d/0BzgxVoERZTStZmItNmlsOHFBRnM/view?usp=sharing

@nicklee1990
this is a link of the AuthController
https://drive.google.com/file/d/0BzgxVoERZTStZmItNmlsOHFBRnM/view?usp=sharing

@nicklee1990
this is a link of the AuthController file
https://drive.google.com/file/d/0BzgxVoERZTStZmItNmlsOHFBRnM/view?usp=sharing

i think you'll need to do some more debugging before i can help you with this one. try logging the response from Parse and adding logging at various points of the login process. as i said, the error message suggests it's a case of wrong auth details

Hello @nicklee1990
I did some debugging again and I changed the email by username, authentication succeed  and redirected to home view but auth not working , I want to retrieve the authenticated user id and name  but this error appeared  Trying to get property of non-object , and I noticed that also I can return to the login view which is not correct to happen .

I found the solution
thanks for help :)

hi @nicklee1990 , could help me installing this?
Could you provide me sample codes for User.php class and AuthController.php?
I have already set config driver to 'Parse' and set the Keys, but im new to Laravel and don't know how to procceed!!!
Regards!!


suggest copy() for sliding elements

Say we want to slide n bytes at offset of bs to the beginning (or to any other offset, really):
for i := 0; i < n; i++ {
        bs[i] = bs[offset+i]
}

The same can be rewritten to:
copy(bs[:n], bs[offset:offset+n])

Or a little simpler, since the amount copied is the minimum of the two lengths:
copy(bs[:n], bs[offset:])

@shurcooL Do you have an opinion on this?

After thinking about it for a few minutes, the change suggestion itself seems good.
I haven't benchmarked it, but I suspect there's a good chance it's either faster, or the same.
It looks simpler, shorter. Not obscure. Not difficult to understand.
I don't know how easy/viable it is to detect when it can be made, without false positives. I haven't verified if it's still applicable if there's overlap.
It seems like a simplification that's easy to miss, so if it can be reported by a tool automatically, and there are (or will be) occurrences in real world, its value goes up.


Resume after pause causes out of sync / cluttered blocks

After latest update that made Resume button work diffrently from Restart, another issue arose:
Video: https://take.ms/ijFsk
Issue: When you pause the song, wait for a bit, then resume it, the blocks start flying out of sync / become cluttered.

I've noticed this as well. I think it's pausing the song, but not the block playback. Using CORS header on a zip from a discord server. Not sure if that has anything to do with the issue though. Also noticed after a long pause that it said the song was playing at 8 minutes on a 5 minute song.

fixed!


Can now require that all points in alert batch match criteria

Fixes #281
Note the any method was not added as that is the default behavior.
This is now possible:

|alert()
    .all()
    .warn(lamnda: "value" > 5)
    .crit(lamnda: "value" > 10)

Given a batch of data with:
value 7
value 12
value 4

No alert would be triggered
Given a batch of data with:
value 7
value 12
value 6

A WARNING will be triggered
Given a batch of data with:
value 13
value 12
value 15

A CRITICAL will be triggered

@nathanielc this sounds very interesting.. but just to make sure If have 3 points in batch and only is critical while others are ok - an alert will be dispatched? or all points must be critical?

@yosiat If you use the .all() property on the alert then all must be critical in order to trigger an alert. So in your example no alert will trigger. If you want an alert to trigger don't use .all()
I'll update the comments with an example.

@nathanielc If so this is great :+1:
I have requirement that asks to dispatch the alert only after X times when critical severity.

but the value when the alarm is restored is the value when the alarm is triggered.


Note about default environment

If you add IJulia to a different environment, then Jupyter won't be able to launch the IJulia kernel automatically.  I got bit by this recent.

When Jupyter tries to launch a Julia kernel, it evidently uses the default Julia environment

Are you launching jupyter from outside of Julia then?

@fredrikekre Yes, typically Jupyterhub.

Okay makes sense. If you launch it through Julia this isn't a problem (e.g. IJulia.notebook(; dir=pwd()) and similarly for jupyterhub)


Brazilian portuguese wordlist

Hi all,
I developed a brazilian portuguese wordlist for our projects and it could be interesting to put on main branch.
I tried to make a pull request from my working branch (feature-ptbr-wordlist), but it is not accepting under releases or master. I figured the steps from https://github.com/bitpay/bitcore/blob/master/CONTRIBUTING.md but stills not sending.
Then I am attaching just the .js for your reviewing and if possible, telling me the steps to send the pull request with all working.
Best regards,
brazilian_portuguese.js.zip

This should be submitted to the BIP39 repo on bitcoin/bips
https://github.com/bitcoin/bips
Things you should change for the pull request:

/bip-0039/bip-0039-wordlists.md should include a list of the rules you followed when creating the wordlist as well as any considerations developers must make to implement your wordlist correctly.
/bip-0039/portuguese_brazil.txt should contain all 2048 words each with an LF line break ("\n") after each word to make the new line. the last word should also have an LF after it, so the txt file should be 2049 lines.

A few questions I have, as a non-portuguese speaker:

I noticed there were no accent marks on any words, is that normal? If a brazilian person memorized the phrase, would they accidentally add an accent? (This may cause problems for users) If you are removing accents from words with accents, please describe how a developer should remove any accidental accents entered by a user etc.
Remember, the wordlist must be NFKD normalized. Since ASCII alphabet characters are already NFKD normalized, they do not need to be changed, but if you add a accent, you must normalize before submitting the wordlist.


Be able to select/highlight text inside a node

Please describe the feature that you want to propose
Currently, nodes are draggable and elements can be interacted with, but text inside a node is not selectable, even when disabling drag for the node.

interestingly I had just been searching for this when I saw the issue appear, then get closed. Is there an existing solution?

Nevermind! My issue was panning. I just added the nopan class to the div that contains the input fields in my custom node.


pugixml v1.11   released this 7 days ago

Maintenance release.
Release highlights:

Add xml_node::remove_attributes and xml_node::remove_children

Add a way to customize floating point precision via xml_attribute::set and xml_text::set overloads

XPath parser now limits recursion depth which prevents stack overflow on malicious queries

Well, good news

Finish update: https://github.com/c4games/engine-x/commit/ac9884026e4b41370eaa522c953b9a1ada834cde


Safe files to remove?

After putting the main folder on a live server, what folders/files are safe to remove but still have the index.html page work? (I'm sorry - I don't know how to add a "Question" flag on a GitHub post).

You need everything in the build/ folder. Everything else is necessary for building it, but that's already done.

Thank you!


CLI installation table of contents has repeated element

page: https://www.pulumi.com/docs/install/

hey @desteves can you apply your fix to this page as well! thank you!

@interurban See PR https://github.com/pulumi/pulumi-hugo/pull/3588

PR https://github.com/pulumi/pulumi-hugo/pull/3625


Add imagemagick instructions, remove gimp instructions

Figured out how to convert png's to raw 16bit images with image magick

Hi! Thanks for fixing this. I'm on my phone right now, but I'll fix the CI issue tomorrow and get this PR merged in.

I'll fix the CI issue tomorrow and get this PR merged in

Awesome.
I can't help but notice, these module comments are not actually showing up in the docs? For example the 8bpp docs only show the first line, and not the info for using imagemagick?

CI is fixed, please rebase from master and your build should work.

I can't help but notice, these module comments are not actually showing up in the docs?

I've opened #63 to address. Thanks for pointing that out.

This changes is now visible on docs.rs


Add support for PHP >= 7.4, PHPUnit 9, fix test errors

@googlebot I signed it!

@bebetoalves - We would like to merge this in and include this in the next release. It would be great if you could rebase your change and take a a look at the comment I added. Appreciate your help!

Let's merge this pull request in and I will follow up on the formatting comment afterwards.
Thanks for submitting this pull request!


Update docs for google_search.ipynb

Update the custom tool creation of 'top5_results' with ".run" where omited.

@vowelparrot ahh good point, my mistake!


Does selenium-grid supports to send extra customised commands from hub to node before starting tests

Is there any provision in selenium-grid so that we can send / fire some extra commands before starting tests on nodes?
I want to set some settings on mobile device before starting tests from that node.

No. I dont think you can do this because unless and until a new session request is fired by the test case (when you instantiate RemoteWebDriver) the hub doesn't really know to which node is the test going to be routed to. So this can't be done at the test case level.
But you should be able to do this by building your own custom RemoteProxy and then adding your customised logic in its new session request handling piece by doing the following:

Build a new servlet which can be added at the node.
Have the node servlet do the customisation that is required
Build your own custom RemoteProxy which would basically invoke your servlet as part of honouring the new session
Start your hub using the custom proxy and start your node using the newly added custom servlet.

For a sample servlet refer GhostProxy
Again, all of this is in Grid3. The Grid4 architecture has changed and a lot of these things would perhaps not even be applicable on grid4


Add Sayan Biswas to the OpenShift team

Link to GitHub repository

When modifying release permission
If you are modifying the release permission of your plugin or component, fill out the following checklist:

### Release permission checklist (for submitters)
- [x] The usernames of the users added to the "developers" section in the .yml file are the same the users use to log in to [accounts.jenkins.io](https://accounts.jenkins.io/).
- [x] All users added have logged in to [Artifactory](https://repo.jenkins-ci.org/) and [Jira](https://issues.jenkins.io/) once.
- [x] I have mentioned an [existing team member](https://github.com/orgs/jenkinsci/teams) of the plugin or component team to approve this request.

When enabling automated releases (cd: true)
Follow the documentation to ensure, your pull request is set up properly. Don't merge it yet.
In case of changes requested by the hosting team, an open PR facilitates future reviews, without derailing work across multiple PRs.
Link to the PR enabling CD in your plugin

### CD checklist (for submitters)
- [ ] I have provided a link to the pull request in my plugin, which enables CD according to the documentation.

### Reviewer checklist
- [ ] Check that the `$pluginId Developers` team has `Admin` permissions while granting the access.
- [ ] In the case of plugin adoption, ensure that the Jenkins Jira default assignee is either removed or changed to the new maintainer.
- [ ] If security contacts are changed (this includes add/remove), ping the security officer (currently `@Wadeck`) in this pull request. If an email contact is changed, wait for approval from the security officer.

There are IRC Bot commands for it.

cc @sayan-biswas

@NotMyFault This one should be ready for review whenever you get a chance.
Thanks in advance!

@NotMyFault Thank you!
cc @sayan-biswas

@NotMyFault Thank you! cc @sayan-biswas

No problem :)


Feature Allowlist in config

This will add support for adding config option for allowed packages and multiple scopes. This is extremely helpful for self-hosted version where you don't want someone looping over every package on npm and ddos your server.
This will:

add support for multiple scope, not just one
allow package names
allow something, ban something
add tests

I guess I need approval before the tests will run again

Need more context to why this feature is wanted/needed?

@renhiyama @ije Can you help me to get closer to merge?

hi @olekenneth can you please check the CI failed? thanks

Yes. Of course. I'll look at it an hour or so

@olekenneth thanks


[DO NOT MERGE] Testing CI with reverted ROX-17157

CI run

/test master-ocp-4-13-qa-e2e-tests

/test ocp-4-13-qa-e2e-tests


hopefully making docs better

Codecov Report

Merging #150 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #150   +/-   ##
=======================================
  Coverage   72.52%   72.52%
=======================================
  Files          18       18
  Lines         928      928
=======================================
  Hits          673      673
  Misses        255      255

Impacted Files
Coverage Δ

bowtie/_layout.py
79.63% <ø> (ø)
:arrow_up:

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 4ed1537...f405457. Read the comment docs.


GD32 flash(v2) driver bank0 writing problem.

Hello
Nowadays, I'm trying to integrate GD32F103 to Zephyr 3.5 and I have encountered a problem about bank0 writing function.
I believe the code at flash_gd32_v2.c (gd32_fmc_v2_bank0_write) -> line 80
flash_prg_t *prg_flash = (flash_prg_t *)((uint8_t *)SOC_NV_FLASH_SIZE + offset);
should be
flash_prg_t *prg_flash = (flash_prg_t *)((uint8_t *)SOC_NV_FLASH_ADDR + offset);
Thanks.

I also found some problems about erase function.
in my case these changes work:
in flash_gd32_v2.c
function: gd32_fmc_v2_bank0_erase_block
line 161 and 162:
size -= GD32_NV_FLASH_V2_BANK0_PAGE_SIZE;
page_addr += GD32_NV_FLASH_V2_BANK0_PAGE_SIZE;
instead of
size -= GD32_NV_FLASH_V2_BANK0_SIZE;
page_addr += GD32_NV_FLASH_V2_BANK0_SIZE;
and
function: flash_gd32_valid_range
line 300 and 305:
if (offset % GD32_NV_FLASH_V2_BANK0_PAGE_SIZE) {
(len % GD32_NV_FLASH_V2_BANK0_PAGE_SIZE)) {
instead of
if (offset % GD32_NV_FLASH_V2_BANK0_SIZE) {
(len % GD32_NV_FLASH_V2_BANK0_SIZE)) {
Notes:
I created some partitions on main flash of GD32F103 and checked only functions of bank0.

@serhang Thanks for look into gd32 flash driver.
You are right, there have some problem in gd32 flash v2 driver. I will create a new PR to fix it later in today.

@serhang  I have create a new PR to fix it. Could you please help to check if there still have problem in here? Thanks!

@cameled Thank you. The partitions on bank0 work well with the changes. We also designed a board based on gd32f207rgt6. After your commit I'll check the bank1 functions too.


Reproduce Hybrid nDCG@10

Hi,
I tried to reproduce hybrid ndcg@10 but got different numbers. Take Spanish as an example:

I reproduced the BM25 (0.3193) and mDPR (0.4777), which match the numbers in the paper.

And then, I normalized the BM25 and mDPR scores using MinMaxScaler from sklearn, respectively.

Finally, sum the BM25 and mDPR scores by setting alpha = 0.5 but the ndcg@10 from my hybrid list is 0.5638

What am I missing here?
Thank you!

Hi @zhiqihuang, I think we only use the first part in the MinMaxScalar:
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))

also here's the script I was using to produce the hybrid runfile, with pyserini, lmk if it works for you:
 python -m pyserini.fusion --runs ${bm25_runfile} ${mdpr_runfile}--output ${fusion_runfile} --method interpolation --alpha 0.5 --depth 1000 --k 1000

Hi @zhiqihuang, I think we only use the first part in the MinMaxScalar:
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))

also here's the command I was using to produce the hybrid runfile, with pyserini, lmk if it works for you:
 python -m pyserini.fusion --runs ${bm25_runfile} ${mdpr_runfile}--output ${fusion_runfile} --method interpolation --alpha 0.5 --depth 1000 --k 1000

Strange. I changed my normalization function and used the same pyserini command, got 0.5623

@zhiqihuang I realized in the 2CR (if that's what you used to reproduce), hits is set to 100, which means running the above command (python -m pyserini.fusion ...) on it only performs hybrid on top-100 results rather than 1k as specified in the command. Could that be the issue?

Yes, I use 2CR with hits = 100. That could be the issue. I will set hits to 1K for both BM25 and mDPR, then try again.

@crystina-z Set hits to 1000 for both BM25 and mDPR gives 0.6355. I think this is within the tolerance range. Thanks for your help.


make csi-address can be configurable

Ⅰ. Describe what this PR does
make csi-address can be configurable
Ⅱ. Does this pull request fix one issue?

fixes #378
Ⅲ. List the added test cases (unit test/integration test) if any, please explain if no tests are needed.
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Thanks, @wangandyang


Marshal returns 4-space indented YAML

protoyaml.Marshal() returns 4-space indented yaml, instead the more-conventional 2-space indented yaml. In addition, list items are indented an extra two spaces (likely a result of https://github.com/go-yaml/yaml/issues/720).
So, for example, it would generate the following:
examples:
    - value: test2
    - value: test3
value: test

Instead of the more-conventional:
examples:
- value: test2
- value: test3
value: test

IMHO, it'd be nice if the configurable indent from go-yaml.v3 was exposed or, perhaps, if go-yaml.v2 was used for marshaling, as the defaults there are closer to user expectations (as evidenced by the linked issue).
Reproduction:
main.go
package main
//go:generate protoc --go_out=paths=source_relative:. ./test.proto

import (
	"github.com/bufbuild/protoyaml-go"
	"os"
)

func main() {
	bytes, _ := protoyaml.Marshal(&ExampleMessage{
		Value: "test",
		Examples: []*Example{
			{Value: "test"},
			{Value: "3"},
		},
	})
	_, _ = os.Stdout.Write(bytes)
}

test.proto
syntax = "proto3";
//
option go_package = "./main";

message ExampleMessage {
  string value = 1;
  repeated Example examples = 2;
}

message Example {
  string value = 1;
}

Exposing the configurable indent SGTM

(note that this will still indent the lists, as it looks like they still do not have an option to not indent lists)

(hence the linked issue in the original post (: )

If they ever add it, I'd be happy to pipe it through.

Closing as the main part of this issue fixed. List items getting an extra indent is better tracked upstream in go-yaml (:


Fix typo in Spring Monitor readme

API change check
API changes are not detected in this pull request.


Update security-webapppolicies.md

Corrected typo in line 71 "threat" to "treat"
Category

[ ] Content fix
[ ] New article
Related issues: fixes #X, partially #Y, mentioned in #Z

For the above list, an empty checkbox is [ ] as in [SPACE]. A checked checkbox is [x] with no space between the brackets. Use the PREVIEW tab at the top right to preview the rendering before submitting your issue.
(DELETE THIS PARAGRAPH AFTER READING)

What's in this Pull Request?

Please describe the changes in this PR. Sample description or details around bugs which are being fixed.
(DELETE THIS PARAGRAPH AFTER READING)

Guidance

Please update this PR information accordingly. We'll use this as part of our release notes in monthly communications.
Please target your PR to 'master' branch. Released documents are in live branch.
(DELETE THIS PARAGRAPH AFTER READING)

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/solution-guidance/security-webapppolicies.md
:white_check_mark:Succeeded
View

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

Absolutely valid fix... these small things are also absolutely welcome. Thx for submitting.


Can't customize default services due to removal of --no-deploy

It looks like k3s is moving forward with the plan to remove the --no-deploy option altogether, and hasn't considered one very important detail:
This prevents users from modifying the default k3s services.
Let's say I want to customize my coredns deployment. By default, k3s will redeploy its own version of of the kube-system/coredns manifest (you know, for updates), which will, of course, overwrite my customizations.
However, if I use --disable, k3s will delete the coredns service that I had defined.
The workaround for this requires calling my version of the coredns service something other than coredns so it won't match the name k3s tries to delete if the user's disabled the k3s version of the service.
Possible solution
If k3s believes its core default services should never be modified by the end user (which is what removing --no-deploy would seem to suggest), maybe it should give them names like k3s-coredns instead? That way, if a user wants to make their own version of a service k3s deploys, they can just redeploy it without the k3s- prefix?

Yeah, I noticed the same thing. I ended up just putting a prefix on all my manifests so that the filenames don't conflict. I like the idea of prefixing the default manifests (with k3s- or rancher-) instead of making me prefix all of mine ;)
I think the core issue here is that the deploy controller isn't really meant to be particularly user-friendly at the moment. Beside this issue, there's the fact that any errors encountered during deployment only go to the system log - ideally both success and failure would create events attached to the custom resource. This would also require fixing the fact that (iirc) the custom resource isn't created until after the initial deployment succeeds.

I'm trying to disable traefik but it doesn't work with --disable or --no-deploy flag:
NAMESPACE     NAME                                     READY   STATUS    RESTARTS   AGE kube-system   local-path-provisioner-6d59f47c7-vr7np   1/1     Running   5          68m kube-system   metrics-server-7566d596c8-xsx8z          1/1     Running   5          68m kube-system   coredns-8655855d6-h2nrs                  1/1     Running   5          68m kube-system   traefik-758cd5fc85-2b8b2                 1/1     Running   4          66m kube-system   svclb-traefik-849qd                      2/2     Running   0          11m
It was installed with this command:
cur -sfL https://get.k3s.io | sh -s - --disable traefik
What I'm doing wrong?
Thanks

@i5Js maybe try this
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server --disable traefik" sh -s -

This is for server, you don't need to disable on agents.

Hey! thanks for answer, finally I made it with this:
INSTALL_K3S_EXEC=" -t ${NODE_TOKEN} --tls-san <nodename> --no-deploy servicelb --disable traefik

I just realized, in a k3os context, you can technically emulate the behavior of --no-deploy by setting the content of the corresponding manifest file to "" in the write_files array of /var/lib/rancher/k3os/config.yaml (since there's no delete_files array). That would make it so, on startup, before k3s parses the file for document names to delete, they're all removed first, so the "disable" step would do nothing
Of course, if you're doing this, you don't need to specify --disable for the service any more, since this would also negate the function of applying that manifest.
You just have to make sure that there's never a situation where an upgrade restores your manifests, and then k3s restarts without re-executing the k3os configuration.

It's been really informative to read this issue. I'm just wondering though, isn't it making good sense to use --disable and use some custom name for deploying ones own version of e.g. coredns. I mean in that way, everyone administering the K3S cluster should be able to transparently tell that the installed coredns version is not the default one.


Create KMPSearch.java

Codecov Report

Merging #5 (da9a56b) into master (e6a3656) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master       #5   +/-   ##
=========================================
  Coverage     33.08%   33.08%
  Complexity     1786     1786
=========================================
  Files           238      238
  Lines         13913    13913
  Branches       2626     2626
=========================================
  Hits           4603     4603
  Misses         9069     9069
  Partials        241      241

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Transfer doesn't find any new transactions in NR

Hi Eric - I just downloaded your code and successfully built it, but when I ran ./transfer for the first time I got the following:
pro:ericmelz-NeatQuick-dc8490b paul$ cd build/dist/bin
pro:bin paul$ ./transfer
Gathering quicken nids...
Gathering neat items...
Creating transactions...
pro:bin paul$
and no data  seems to have been identified and processed
I realise that I don'y know what defines a new transacrion in NR and your video says that transfer looks for "new" transactions in NR.
Here's my setup and the status before I ran transfer for the first time.
I already have many receipts in NR that are either in folders or still in the Inbox.  I took an existing QEM data file that I had used previously (only) to store a subset of these NR transactions in a series of cash accounts whose names match the folders in NR that I was tracking.  Before running transfer I simply deleted all of the transactions in QEM leaving an empty file with four empty cash accounts.  I left NR as is.  I noticed that you started with one transaction.  I just need a little context to know how to initialise the QEM file and an understanding of how a NR receipt will be identified as new/updated.
Thanks, Paul

Just thumbing through the code, in transferutil.groovy you have a method addAttachment with your hard coded user directory, could this be the source of the problem? I am also seeing the same problem as Paul on my machine.

Definitely hardcoded paths are a problem....ack.
I'll be revisiting this project soon.... stay tuned for updates.

Cool thanks for the response :). I look forward to your updates, this seems really useful.
~Benjamin Holland
On Jan 3, 2012, at 9:27 PM, Eric<EMAIL_ADDRESS>wrote:

Definitely hardcoded paths are a problem....ack.
I'll be revisiting this project soon.... stay tuned for updates.

Reply to this email directly or view it on GitHub:
https://github.com/ericmelz/NeatQuick/issues/1#issuecomment-3349853

Thanks to prompting from another user, I dusted off the code and fixed some bugs (including the abovementioned hardcoded path).  Please have a try again and let me know if you hit issues.


Adds check for SSH keygen command

Adds a check to find ssh-keygen in the user's $PATH, in the event it
can't find it, return an error with a friendly message
Signed-off-by: Simon Thulbourn<EMAIL_ADDRESS>Fix for #62

Why not exec.LookPath?

I didn't know it existed. I'll update.

Hat tip to @nathanleclaire :)

LGTM


Add docstrings

Now that the doctoring mechanism in 0.4 is stable, we should start adding them to all of our routines.
Most of the text can be borrowed from the python docstrings, but we would want to do heavy reformatting to match the conventions established in the docs for methods in Base
This should address #24

Would be nice to have a wiki on what the docs in Julia should look like or maybe a link to point us in the right direction.

Great point, are you volunteering :wink: ?

closed by #50