Staking/validators page

In this PR

Create Staking page with initial columns. NOTE: There's no "delegate"/"undelegate" button yet; that will come as part of #541.
Add StakingService to the service registry, create a proxy impl for it in service-worker.ts, and create a service client for it in webapp/src/clients/grpc.ts.
Move the max-width that was shared by a number of pages to the main tag of the root <Layout /> component.

Set up UI testing libraries inside webapp (@testing-library/react and @testing-library/jest-dom) along with test setup files and Vitest config.

Closes #540

Converting back to draft while I fix the commission

OK @grod220 / @turbocrime , this is ready for review again

As a general comment, this work is (or should be) entangled with #558: staking in Penumbra is token-based, and the staking UI should reflect that.
This UI shouldn't be centered around a list of validators, it should be centered around a list of tokens, since a user's staking state is represented via tokens. (That's why I opened up #558, to flag that as a problem to solve, but I could have been more explicit about the intent, sorry about that).
OK, but what does it mean for the UI to be centered around tokens?
First, we need to set out what tokens there are. There are three relevant classes of tokens:

The staking token UM itself, representing unbonded stake. This is the simplest, since it's just one token.
Delegation tokens, representing shares of a particular validator's delegation pool. These are not just one token but a family of tokens, parameterized by the validator identity. (The chain does staking rewards by adjusting the exchange rate between the staking token and each delegation token).
Unbonding tokens, representing stake that was delegated to a particular validator but is in the process of being undelegated. These have even more variety than delegation tokens: they're parameterized both by the validator identity and the epoch at which unbonding started. (In the happy path, unbonding tokens are 1:1 with the staking token, but the chain delays conversion to allow slashing if the validator were to misbehave during the unbonding period).

Rendering the user's staking state requires handling all of these tokens. However, because these tokens are how that state is recorded, it does not require any more than handling these three classes of tokens.
I'd suggest the following organization for the staking page. There should be several tabular blocks, showing each of these categories of tokens. Each row should have staking-specific rendering (ie additional contextual information) of the user's balance of a particular token.
The first block should be titled "Unstaked Tokens" and have one row, showing the user's balance of the UM token.
The second block should be titled "Staked Tokens" and have one row for each delegation token for which the user has a nonzero balance. If there are no rows, the block should be omitted. Each row should show the amount of delegation tokens, the equivalent amount of staking tokens and USD (this functionality being provided by the equivalent_values feature in the valueview, which the extension needs to but does not yet implement), information about the validator, and buttons for "Delegate" and "Undelegate".
The third block should be titled "Unbonding Tokens" and have one row for each unbonding token for which the user has a nonzero balance. If there are no rows, the block should be omitted. Each row should show the amount of unbonding tokens (initially we can ignore penalties and treat these as 1:1 for UM tokens), information about the validator, and a time-based estimate of when unbonding will finish. The row should have a button labeled "Claim" that does the UndelegateClaim, this should be disabled until unbonding is believed to be finished.
The fourth block should be labeled "Active Validators" and have one row for each active validator, excepting validators the user already has delegations to. Each row should be identical to the rows used for the "Staked Tokens" block, the only difference being that the rows are rendering a 0-balance of that validator's delegation token and so should have a disabled "Undelegate" button.
This UI shows a complete picture of the user's staking state, which is recorded by tokens, shows them the most relevant information (their balances and delegations) first, and provides convenient hooks for all staking-related actions.

I feel this comment is best placed in the very next task that is currently being worked on: https://github.com/penumbra-zone/web/issues/463

This UI shouldn't be centered around a list of validators, it should be centered around a list of tokens

In general, this feels like you are saying something was built incorrectly and something is wrong. But, really, this page is simply not complete. We have follow up issues specifically for the user's positions and taking actions. We really can't expect a user to be able to take an action without being able to pull a list of validators they can delegate to.

Thanks @grod220 / @hdevalence. It seems like I've built the "Active Validators" block except for its delegate buttons. My suggestion:

I'll add delegate buttons as part of #541.
I'll create additional tickets for each of the remaining blocks described above.

Yep, that sounds great. In that refactoring it would be good to refactor into a component that takes BOTH:

a ValueView of the delegation token
additional validator data

and reconceptualize it as being a rendering of the delegation token amount. We should be planning to use the asset Metadata to render the delegation tokens for the reasons discussed in #558 — it's important that we have consistent rendering of delegation tokens.


show an interface item that is a function

module Animals

using Interfaces

# Define the methods the interface uses
function age end
function walk end
function talk end
function dig end

# Define the interface conditions
@interface AnimalInterface (
    mandatory = (;
        age = (
            x -> age(x) isa Real,
            x -> age(x) >= 0,
        )
    ),
    optional = (;
        walk = x -> walk(x) isa String,
        talk = x -> talk(x) isa Symbol,
        eat = x -> eat(x) isa Function,            # <<<<<<< show what to do with a function
        eat = (x,y) -> eat(x,y) isa Function,    # <<<<<<< is multidispatch available?
    ),
)

end

using Interfaces

# Define our Duck object
struct Duck
    age::Int
end

# And extend Animals methods for it
Animals.age(duck::Duck) = duck.age
Animals.walk(::Duck) = "waddle"
Animals.eat(::Duck) = (x,y::Food)->isduckfood(y) ? true : false # <<<< making it up

# And define the interface
@implements Animals.AnimalInterface{(:walk, :talk)} Duck Duck(2)

Sure. PR?

Still isnt really a thing nut Arguments is an alternative


G2 thermostat support

Sinopé launched 2nd generation thermostats TH1123ZB-G2 and TH1124ZB-G2 which are a little different from the first generation. This PR add support for those G2 thermostats

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

3 of 3 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.007%) to 82.781%

Totals

Change from base Build<PHONE_NUMBER>:
0.007%

Covered Lines:
6245

Relevant Lines:
7544

💛  - Coveralls

Codecov Report
Base: 82.77% // Head: 82.78% // Increases project coverage by +0.00% :tada:

Coverage data is based on head (a46f270) compared to base (31245e0).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@           Coverage Diff           @@
##              dev    #1883   +/-   ##
=======================================
  Coverage   82.77%   82.78%
=======================================
  Files         243      243
  Lines        7541     7544    +3
=======================================
+ Hits         6242     6245    +3
  Misses       1299     1299

Impacted Files
Coverage Δ

zhaquirks/sinope/thermostat.py
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


line 11: cd: /usr/local/Homebrew/bin: No such file or directory

brew config output
brew config
/opt/homebrew/bin/brew: line 11: cd: /usr/local/Homebrew/bin: No such file or directory
HOMEBREW_VERSION: 3.2.8
ORIGIN: https://github.com/Homebrew/brew
HEAD: f026dd21c195952747395ebdda24327204f012ec
Last commit: 2 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 0f81ec1482f5b620523970582baa5f517a7c4393
Core tap last commit: 8 minutes ago
Core tap branch: master
HOMEBREW_PREFIX: /opt/homebrew
HOMEBREW_CASK_OPTS: []
HOMEBREW_MAKE_JOBS: 8
Homebrew Ruby: 2.6.3 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
CPU: octa-core 64-bit arm_firestorm_icestorm
Clang: 12.0.5 build 1205
Git: 2.32.0 => /opt/homebrew/bin/git
Curl: 7.64.1 => /usr/bin/curl
macOS: 11.5.2-arm64
CLT: <IP_ADDRESS>.1.1623191612
Xcode: 12.4 => /Users/marcelloh/Downloads/Xcode.app/Contents/Developer
Rosetta 2: false

brew doctor output
brew doctor
/opt/homebrew/bin/brew: line 11: cd: /usr/local/Homebrew/bin: No such file or directory
Your system is ready to brew.

[X] I ran brew update and am still able to reproduce my issue.
[X] I have resolved all warnings from brew doctor and that did not fix my problem.

What were you trying to do (and why)?
I want to use brew on a Mac M1. I think this has a different directory structure or something.
What happened (include all command output)?
With every command I do it has this message which makes me not trust what brew is doing for me.
What did you expect to happen?
No error messages, but even the normal brew command has that
Step-by-step reproduction instructions (by running brew commands)
brew
/opt/homebrew/bin/brew: line 11: cd: /usr/local/Homebrew/bin: No such file or directory
Example usage:
  brew search TEXT|/REGEX/
  brew info [FORMULA|CASK...]
  brew install FORMULA|CASK...

This appears to be caused by a broken (leftover?) /usr/local/bin/brew symlink.
Anyhow, I've opened #11887 which will probably fix this.

Ah, correct :-) If I remove that broken symlink, it works as expected. I will close this.


[Refactor] refactor auto streaming agg to avoid worst cases

Signed-off-by: fzhedu<EMAIL_ADDRESS>What type of PR is this：

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

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

the new auto strategy is shown as a state machine:

/* A state machine autoly chooses different preaggregation modes. If the initial preaggregation cannot insert
 * more data into hash table, the state shifts from INIT_PREAGG to ADJUST. The ADJUST state has 3 branches:
 * (1) If continuous AggrAutoContext::AdjustLimit chunks are lowly aggregated, shifting to PASS_THROUGH state;
 * (2) Else if continuous AggrAutoContext::AdjustLimit chunks are highly aggregated, shifting to PREAGG state;
 * (3) otherwise or the ADJUST state sustains continuous_limit times, shifting to SELECTIVE_PREAGG state.
 *
 * PASS_THROUGH state sustains continuous_limit times, it will force doing preaggregation if the hash table's size <
 * MaxHtSize, otherwise it will go to ADJUST state. Doing FORCE_PREAGG aims freshening the hash table with new coming
 * rows, helping to aggregating new coming chunks with limiting the size of hash table.
 *
 * FORCE_PREAGG/PREAGG state aggregates AggrAutoContext::PreaggLimit chunks, then going to ADJUST state. PreaggLimit
 * should be small enough to limit the size of hash table.
 *
 * SELECTIVE_PREAGG state aggregates continuous_limit chunks, then shifting to ADJUST state.
 */
(force_preagg is enabled when pass_through > C_LIMIT)
C_LIMIT : continuous_limit
P_LIMIT : preaggregation_limit

results:
auto_new is more efficient than auto, and near to force_streaming.
besides, TPCDS-10t reduces 100s, without effects on other benchmark(tpch/tpcds-1t).
mysql> set pipeline_dop = 16;
Query OK, 0 rows affected (0.01 sec)

mysql> set streaming_preaggregation_mode = auto;
Query OK, 0 rows affected (0.00 sec)

mysql> select max(csales) tpcds_cmax from ( select ss_customer_sk,sum(ss_quantity*ss_sales_price) csales from store_sales where ss_customer_sk is not null  group by ss_customer_sk ) t1;
+-------------+
| tpcds_cmax  |
+-------------+
| 12959806.59 |
+-------------+
1 row in set (1 min 24.23 sec)

mysql> set streaming_preaggregation_mode = auto_new;
Query OK, 0 rows affected (0.00 sec)

mysql> select max(csales) tpcds_cmax from ( select ss_customer_sk,sum(ss_quantity*ss_sales_price) csales from store_sales where ss_customer_sk is not null  group by ss_customer_sk ) t1;
+-------------+
| tpcds_cmax  |
+-------------+
| 12959806.59 |
+-------------+
1 row in set (1 min 9.89 sec)

mysql> set streaming_preaggregation_mode = force_streaming;
Query OK, 0 rows affected (0.01 sec)

mysql> select max(csales) tpcds_cmax from ( select ss_customer_sk,sum(ss_quantity*ss_sales_price) csales from store_sales where ss_customer_sk is not null  group by ss_customer_sk ) t1;
+-------------+
| tpcds_cmax  |
+-------------+
| 12959806.59 |
+-------------+
1 row in set (1 min 9.80 sec)

mysql> set new_planner_agg_stage = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> select max(csales) tpcds_cmax from ( select ss_customer_sk,sum(ss_quantity*ss_sales_price) csales from store_sales where ss_customer_sk is not null  group by ss_customer_sk ) t1;
+-------------+
| tpcds_cmax  |
+-------------+
| 12959806.59 |
+-------------+
1 row in set (57.63 sec)

Checklist:

[x] I have added test cases for my bug fix or my new feature (manually test on benchmark tpch/tpcds)
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[ ] 2.5
[ ] 2.4
[ ] 2.3
[ ] 2.2

[FE PR Coverage Check]
:disappointed: fail : 1 / 2 (50.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/planner/AggregationNode.java
1
2
50.00%
[228]

[FE PR Coverage Check]
:disappointed: fail : 1 / 2 (50.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/planner/AggregationNode.java
1
2
50.00%
[228]

[FE PR Coverage Check]
:disappointed: fail : 1 / 2 (50.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/planner/AggregationNode.java
1
2
50.00%
[228]

[FE PR Coverage Check]
:disappointed: fail : 1 / 2 (50.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/planner/AggregationNode.java
1
2
50.00%
[228]

[FE PR Coverage Check]
:disappointed: fail : 2 / 3 (66.67%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/planner/AggregationNode.java
2
3
66.67%
[228]

run starrocks_fe_unittest

[FE PR Coverage Check]
:heart_eyes: pass : 0 / 0 (0%)

SonarCloud Code Analysis  is not passed due to some duplicated old code.

[FE PR Coverage Check]
:heart_eyes: pass : 0 / 0 (0%)

[FE PR Coverage Check]
:heart_eyes: pass : 0 / 0 (0%)

[FE PR Coverage Check]
:heart_eyes: pass : 0 / 0 (0%)

aggregate_distinct_streaming_sink_operator.cpp is highly duplicated with aggregate_streaming_sink_operator.cpp, we should refactor these two files later.

[FE PR Coverage Check]
:heart_eyes: pass : 0 / 0 (0%)

run starrocks_admit_test

run starrocks_admit_test

run starrocks_admit_test

run DCO


Duplication in help strings when documentation string is present

See 2nd and 3rd tooltips

I tried this again with the exact same code, still getting duplicates.

Yes, I fixed it


adding white space for better readability

adding white space for better readability

Hi @manish1m97!
This change would break the syntax of the user-agent


chore: optimize output log

Codecov Report

Merging #50 (1dd9433) into master (f7b63c6) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #50   +/-   ##
=======================================
  Coverage   78.35%   78.35%
=======================================
  Files          27       27
  Lines        1035     1035
  Branches      198      198
=======================================
  Hits          811      811
  Misses        221      221
  Partials        3        3

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 f7b63c6...1dd9433. Read the comment docs.


allow collapsing the data section

[x] Closes #145
[ ] Tests added
[x] Passes pre-commit run --all-files
[ ] Changes are summarized in docs/source/whats-new.rst

In the process I refactored the code to:

use CSS classes instead of style tags
match the style of xarray's html formatting code
only include the CSS stylesheet / SVG icon once per repr

However, I'm not proficient with CSS so I'd appreciate someone looking over this. @benbovy, might I ask you for a review when you have time?
Some new issues:

~the attrs of the node data seem to now be connected to the data vars: only attrs disappear when toggled if the data vars are collapsed.~ fixed by putting the sections into <ul> / <li> tags

Some old issues:

the vertical line connecting the parent with the children does not always align with the horizontal line of the last node (there's sometimes a 1-2px part that's below the horizontal line... is that browser specific?)
the data repr is still small in non-root nodes (#91). Overriding the xr-sections class of the sections with width: 1200px temporarily fixes that issue for me, so I'd assume there's not enough space for the data?

the main goal of allowing to collapse the data attached to a node has been achieved, although this makes #91 worse for me (the workaround of manually setting an arbitrary but sufficient absolute width works, though, so I'd expect this to be a relatively small fix).
The tests are failing because they check equality with a predetermined expected string (which is called acceptance testing, apparently), so they either need to be updated or rewritten to use something similar to xarray's str.count-based tests.

something that just occurred to me is that instead of (or in addition to?) adding a new "data" section we might want to collapse the entire node by clicking on its name. I'd imagine that to be a bit more difficult than the data section, though.

@keewis could you upload some screenshots? It will be easier for the review.
A more general comment: why not having a clearer distinction between the data sections and the tree node headers in the repr? Something like https://jsfiddle.net/98k7trvy/. This is a rough example that could be much improved, but it has the advantage of fixing #91 (data sections are less indented than headers, and subtle borders are used to distinguish between data sections).

sure.
The first image is the HTML repr without fixing the width:

while the second has the fixed width (search for style="width: 1200px", I accidentally included that in one of the commits):

why not having a clearer distinction between the data sections and the tree node headers in the repr?

my knowledge of HTML and CSS is pretty limited, so I just used whatever was already available in xarray. If you have a better idea I'd be happy to use that instead

the fixed width is a hack, as I had no idea how to fix it otherwise. I'm not sure how exactly min-width works (my guess is that the content should take up anything between min and max), but I have to set it to 800px to get anything remotely readable, which to me indicates that the range does not work as it should.
Since fixing that might involve a fair amount of debugging (even though I expect the fix to be pretty small), maybe it would be better to just reimplement the whole repr using your suggestions? Those do sound good to me, and I had been somewhat discontent with the collapsible Data section, anyways. However, I wonder if we can somehow combine https://jsfiddle.net/98k7trvy/ with the tree lines?

@keewis sorry I forgot about this. Is it still relevant?

yes it is, but I think we're better off redesigning the HTML repr. This is something I wouldn't know too much about, but maybe we can make use of anywidget for that?

FWIW, https://github.com/benbovy/xarray-fancy-repr uses anywidget and implements the Xarray object reprs has a set a reusable react components. I think it would be quite straightforward integrating it with datatree (or once the latter has moved into Xarray) and no need to deal with the hassle of trying to implement some interactivity in pure HTML+CSS. Unfortunately I don't have much time to experiment with this at the moment, though.

I agree, we should put this on hold until the merge is done (and no worries about it taking longer)

Closing this as potentially useful but tracked upstream by https://github.com/pydata/xarray/issues/9343. Feel free to re-open a new PR upstream.


version 2.27 uses recently stable feature

Trying to build with rustc 1.54.0:
error[E0658]: use of unstable library feature 'maybe_uninit_extra'
   --> /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/protobuf-2.27.0/src/coded_output_stream.rs:211:62
    |
211 |         unsafe { (&mut *self.buffer)[self.position as usize].write(byte) };
    |                                                              ^^^^^
    |
    = note: see issue #63567 <[https://github.com/rust-lang/rust/issues/63567>](https://github.com/rust-lang/rust/issues/63567%3E) for more information

1.55 is September 2021. Let me check if I can make it work with earlier version.

we can lock the previous release as a workaround until we can upgrade the compiler. maybe just documenting the MSRV in the README is enough if the fix is too much work. thank you.

maybe just documenting the MSRV in the README

I usually document it in changelog
https://github.com/stepancheg/rust-protobuf/blob/d1cb2b8875922843ba83a5228214c94a701f935c/CHANGELOG.md#L70-L73

Yes, it's doable, need to copy-paste two functions from rust stdlib. I'll do it later today.

I mean, port stable branch back to version 1.52.1.

Published rust-protobuf=2.27.1 compatible with rust>=1.52.1.


Write documentation

Meaning, documentation comments within the source code itself. The DESIGN.md file already covers the overview of the design.
Topics include:

using the pje identity function to remove type variables in records
best practices for adding decoding context to bidi codecs
ideas for overriding existing error types (e.g. colors used in the AnsiDodoError)

The above things have been documented. While there could be more docs on how to use dimap correctly, I don't think it's necessary.


Allow handling fee deductions done by EVM

Projects using pallet_ethereum need a way to know about fee deducted
by EVM to take appropriate action on the fee like giving it to the
miner. This adds a type OnChargeTransaction to pallet's Config trait
similar to OnChargeTransaction of pallet_transaction_payment
Signed-off-by: lovesh<EMAIL_ADDRESS>

Needs to fix tests.

@sorpaas Thanks


Mobile Auth fails if credentials have expired

This is possible a peculiarity of a test account I'm using, but clicking to bookmark an item on mobile fails with an authentication error if credentials have expired.
13:29:37.347  E  FATAL EXCEPTION: main
                 Process: dev.johnoreilly.confetti, PID: 23542
                 com.google.firebase.auth.FirebaseAuthInvalidUserException: The user's credential is no longer valid. The user must sign in again.
                 	at com.google.android.gms.internal.firebase-auth-api.zzxc.zza(com.google.firebase:firebase-auth@@21.1.0:29)
                 	at com.google.android.gms.internal.firebase-auth-api.zzya.zza(com.google.firebase:firebase-auth@@21.1.0:9)
                 	at com.google.android.gms.internal.firebase-auth-api.zzyb.zzl(com.google.firebase:firebase-auth@@21.1.0:1)
                 	at com.google.android.gms.internal.firebase-auth-api.zzxy.zzh(com.google.firebase:firebase-auth@@21.1.0:25)
                 	at com.google.android.gms.internal.firebase-auth-api.zzxa.zzh(com.google.firebase:firebase-auth@@21.1.0:1)
                 	at com.google.android.gms.internal.firebase-auth-api.zzty.zza(com.google.firebase:firebase-auth@@21.1.0:2)
                 	at com.google.android.gms.internal.firebase-auth-api.zzyj.zzb(com.google.firebase:firebase-auth@@21.1.0:10)
                 	at com.google.android.gms.internal.firebase-auth-api.zzyj.zza(com.google.firebase:firebase-auth@@21.1.0:14)
                 	at com.google.android.gms.internal.firebase-auth-api.zzxp.zzf(com.google.firebase:firebase-auth@@21.1.0:4)
                 	at com.google.android.gms.internal.firebase-auth-api.zzvf.zzp(com.google.firebase:firebase-auth@@21.1.0:4)
                 	at com.google.android.gms.internal.firebase-auth-api.zzxb.zzj(com.google.firebase:firebase-auth@@21.1.0:5)
                 	at com.google.android.gms.internal.firebase-auth-api.zzvp.zzc(com.google.firebase:firebase-auth@@21.1.0:1)
                 	at com.google.android.gms.internal.firebase-auth-api.zzyc.run(com.google.firebase:firebase-auth@@21.1.0:1)
                 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
                 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
                 	at java.lang.Thread.run(Thread.java:923)
                 	Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@25aae28, Dispatchers.Main.immediate]

I'll try to find the right place to catch it.

I think fix is
class DefaultUser(
    override val name: String,
    override val email: String?,
    override val photoUrl: String?,
    override val uid: String,
    private val user_: FirebaseUser?
): User {
    override suspend fun token(forceRefresh: Boolean): String? {
        return try {
            user_?.getIdToken(forceRefresh)
        } catch (e: Exception) {
            null
        }
    }
}

Interesting. The doc doesn't say anything about throwing and I was operating under the assumption that the idToken returned there was always valid and refreshed internally by Firebase. But looks like it's not the case?

Not sure, but

This is possible a peculiarity of a test account I'm using

Also, after this fails, Firebase no longer considers the user logged in, which seems correct.


New theme for midnight commander (mc)

New Theme
Simple theme for midnight commander (mc) - a terminal based file manager
https://github.com/davison/mc
At present this has a dependency on a suitable terminal theme also being installed (as it simply references colours defined in the terminal theme palette) - don't know if that breaks any rules for inclusion.
Tested in gnome-terminal on Linux and iTerm2 on macos with the appropriate terminal themes installed.

pushed a version that works independently of the terminal's colour palette but which has theme colours that are not as true to the Dracula theme. Either or both can be installed giving the user a choice at runtime.

Hey @davison!
I'm glad to see that you create this theme! Are you interested in transferring your repository to the official organization (https://github.com/dracula)? You'll continue maintaining this project, the only difference is that we can make it more visible and include it on the site (https://draculatheme.com).
I just sent you an invite to join the organization. If you accept, you'll be able to transfer the repo and we can continue with adding to the site.
Thanks for building it!

transferred. https://github.com/dracula/mc

It's live! https://draculatheme.com/midnight-commander 🎉 🎉 🎉


Update kinesis, utils to 2.19.12

Updates

software.amazon.awssdk:kinesis
software.amazon.awssdk:utils

from 2.19.10 to 2.19.12.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "software.amazon.awssdk" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "@monthly" },
  dependency = { groupId = "software.amazon.awssdk" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Codecov Report
Base: 88.63% // Head: 88.70% // Increases project coverage by +0.06% :tada:

Coverage data is based on head (35a462f) compared to base (e5dc61f).
Patch has no changes to coverable lines.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #398      +/-   ##
==========================================
+ Coverage   88.63%   88.70%   +0.06%
==========================================
  Files          93       93
  Lines        3001     3001
  Branches      170      170
==========================================
+ Hits         2660     2662       +2
+ Misses        341      339       -2

Impacted Files
Coverage Δ

src/main/scala/kinesis/mock/cache/Cache.scala
84.18% <0.00%> (+0.32%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


suggestion | ceph_conf_override to support client.rgw.X section

Hi,
Is it possible to support the sections of each rgw?
Thank you

I don't think so, I think I've already tried and it doesn't work.

But I'll see how we can improve this.

Wait it actually works thanks to @cloudnull, I'm going to submit a PR that will introduce "profiles" in ceph-ansible, starting with keystone v3


config: Add Hardware description object to the VM configuration

This adds section to describe HW that should be passed through to the VM. This enables Hardware-level isolation provided by XEN for e.g. functional safety use cases.
Adds hwConfig object to the VM section which is apt to describe the initial configuration for the VM, sush as number of vcpus and memory, provided to the VM.
Hardware description includes path to the device-tree, that should be passed to the VM and the hardware configuration parameters which provides all needed data for VM to use the devices, such as:

dtdevs: host device tree nodes to passthrough to the VM;
iomems: allow auto-translated domains to access specific hardware I/O memory pages;
irqs: allows VM to access specific physical IRQs.

@giuseppe I don't see an immediate use for it, but it's good to know it's there.

Looks good, but we are freezing the main branch until releasing v1.1.0.

https://github.com/opencontainers/runtime-spec/issues/1052

Hope we can release v1.1.0 and merge post-v1.1 PRs in the next couple of weeks.

Hi @AkihiroSuda. Do you have any plans merging this changes?

Yes, but after releasing this:

https://github.com/opencontainers/runtime-spec/pull/1242

We also want to see a POC of this PR to confirm implementability.

Yes, but after releasing this:
* [Release v1.1.1 #1242](https://github.com/opencontainers/runtime-spec/pull/1242)

We also want to see a POC of this PR to confirm implementability.

Thank you for the quick response. What do you expect as POC? Some real yamls based on this bindings?

A POC of an actual runtime implementation would be more preferable

ping @opencontainers/runtime-tools-maintainers

ping @opencontainers/runtime-spec-maintainers

What's the current status of this?

What's the current status of this?

Hi @AkihiroSuda,
Sorry. Missed email notification. Just replied.


How much blocking is there in the Synchronous API?

Hi my team is looking to switch to a non-blocking Redis client library. We are debating between Redisson and Lettuce. The important feature we are looking for is the non-blocking API.
I came across this documentation for Lettuce. It basically mentions that Lettuce's synchronous API blocks the caller (as it should) but the layer below that (connection) is still non-blocking so other commands can still be executed on the same connection.
This can be very useful for us because this means we do not have to refactor our cache interfaces to be non-blocking and just switch the implementation to be able to get a lot of the benefits of a non-blocking API.
I am expecting a similar implementation by Redisson but I could not find an explicit documentation explaining this.
Would you be able to provide a thorough clarification on this topic?
Thank you

All commands executed asynchronously and each sync method is only waiting the result. All works even with a single connection.


Further changes to CFG interactive

Resolves #1420

[x] Lower interface priority of 'New productions' button, hide it towards the bottom of the interactive as a additional feature.

Now the button is labelled Customise Productions
Now in bottom right and coloured grey (Note: Can still be removed entirely with parameter hide-builder)

[x] Disable the text field that allows customising the equation text, as it's prone to errors.

Can be re-enabled with URL parameter editable-target

[x] Increase average difficulty of random equations.

They are still random (I didn't force a minimum number of productions) but the difficulty skew is now more closely proportional to the probability of following each production.

[x] Use wording 'generate' instead of 'form'
[x] Fix wrapping behaviour of user expression
[x] Remove internal shortcut for storing terminals as a list of elements as it no longer makes sense
[x] Prefill production builder with appropriate YACC syntax for the existing productions
[x] Use an en-dash in spaces rather than a hyphen to make the increasing-integers-production shortcut clearer when viewing negative numbers (e.g. -9--1 becomes -9 – -1)
[x] Update README

@eAlasdair Could you please write an explanation here of the new logic changes, in particular how findPossibleExpressionsAtDepth() works to populate expressionsAtDepth_, and then how that variable is used in recursiveRandomExpression(). I understand parts of it, but struggling to see how it all fits together. Having it written here will be good documentation for the next developer too.

The aim of this algorithm is to find everything that can be produced by following productions with a maximum depth, so that we don't need to bogosearch for valid expressions to use as examples.
The first note to make is that the phrase "expressions at depth" means "expressions that can be made with the given maximum depth". So expressionsAtDepth_ is a store of all possible valid expressions up to a given depth, organised by that depth and the starting nonterminal. At depth 1, a valid expression can only be made if the nonterminal is replaced by a terminal, this is the first step of findPossibleExpressionsAtDepth(depth), and for the default productions results in:
expressionsAtDepth_ = {
    1: {
        E: [],  // No production for E ends in a terminal string so the list is empty
        N: [['0'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']],
    }
}

Note 1:  The inner dictionary follows the normal internal syntax, the inner lists are for separating terminals and nonterminals from eachother. e.g look at const DEFAULT_PRODUCTIONS
Note 2: I'm leaving the syntax for defining a string (") out; the terminals in expressionsAtDepth_ include the inverted commas
For every depth above 1, findPossibleExpressionsAtDepth(depth) looks at each production and figures out if it's possible to get from the nonterminal to a valid expression, using that production. To do that it needs to check that all nonterminals as a result of the production can themselves reach a valid expression at any depth lower than the current one. For example, at depth 2:

N ➞ 0|1|... are all valid productions because they end in a terminal string
E ➞ N is valid because we know (looking at expressionsAtDepth_) that at depth 1 N can get to a terminal string
E ➞ E + E is NOT valid because we know that at depth 1, E cannot get to a terminal string

Note: In the code, innerSuccess is true if one of the nonterminals in the sub-expression reaches a valid expression, outerSuccess is true if all of the nonterminals in the sub-expression reach a valid expression.
Valid results are stored as expressions with pointers to other results, with the pointer being [depth, nonterminal] -> Follow the nonterminal at that depth to find the rest of the expression. The pointers are stored in a list as there could be multiple options, so the result for depth 2 is:
expressionsAtDepth_ = {
    1: { as above },
    2: {
        E: [
            [[[1, N]]] // A list in the usual syntax, of a list of pointers, of the pointer [depth=1, nonterminal=E]
        ],
        N: [['0'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']],
    }
}

And for depth 3:
expressionsAtDepth_ = {
    1: { as above },
    2: { as above },
    3: {
        E: [
            // N
            [[[1, N], [2, N]]]  // <1N OR 2N>
            // E + E & E * E
            [[[2, E]],  '+', [[2, E]]],  // <2E> + <2E>
            [[[2, E]],  '*', [[2, E]]],  // We don't need to know what E can get to at depth 2, only that it can get to something
            // -E
            ['-', [[2, E]]],                            // - <2E>
            // (E)
            ['(', [[2, E]], ')'],                       // ( <2E> )
        ],
        N: [['0'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']],
    }
}

Note: There are definitely ways to make this more spatially efficient: since N only goes to nonterminals we only need to store it at depth 1; and in theory if a depth can be found then every depth above it is guaranteed. But even as is, it's more spatially efficient than storing every possible permutation normally and far faster than any method we've so far come up with.
The result of the algorithm is a data structure we can follow at random without reaching a dead (invalid) end. If we want a random expression with maximum depth 3 we:

randomExpression(3)
Expressions have already been parsed
`recursiveRandomExpression(3, E):

If the list for expressionsAtDepth_[3][E] is empty we know it's impossible to get to a valid expression and don't need to bother parsing the tree. It's a big problem if this isn't the first level of recursion because it implies that further up the tree is a path that says a valid expression can be gotten via this node, which is false.
we pick a sub-expression at random from expressionsAtDepth_[3][E], let's say ['(', [[2, E]], ')']
for each element in the sub-expression we either have a terminal string or a list of pointers
'(' is a terminal, so we can move it on to our return string as is
[[2, E]] is a list of pointers, we pick one at random, there's only one: [2, E]
recursiveRandomExpression(2, E)

pick a sub-expression at random: [[[1, N]]]
pick a random pointer: [1, N]
recursiveRandomExpression(1, N)

pick a sub-expression at random: ['1']
the sub-expression contains only terminal strings, so we return it joined: '1'

we move '1' on to our return string
the loop is finished so we return our return string '1'

we move '1' on to our return string: '(''1'
we move ')' on to our return string: '(''1'')'
the loop is finished so we return our return string '(''1'')'
// The pairs of inverted commas ('') not being removed here is actually a minor bug, but it isn't needed - the end result is the same

we remove the inverted commas, then return the result: (1)

And the new user target with depth 3 is (1)


Refactor routing / routed state management

This issue is intended to track something we discussed in our last meeting and that I'm currently working on.
Deep routing for queries is a bit of a mess. The query parameters of the route are supposed to maintain two-way synchronisation with the state of the UI. There are currently two ways in which this is implemented (depending on the component):

The ParamDirective is a superclass for components. The idea is that components handle state updates by sending updates to the Router, and then listen to changes in the route. This is a clean way to achieve two-way binding, but tying everything to components makes it difficult to model interdepencies between different parts of the query / results. It also makes it difficult to manipulate the data without using that routed component, which complicates unit testing.
For the reasons described above, the QueryModel, as a more complex model, is not really built on the ParamDirective class, but the implementation is not very clean. The idea is that the model handle's its state internally, and the component that creates it (the SearchComponent) makes sure the route is kept up to date. If the route is changed in a way that doesn't match the current state of the model, the model is re-instantiated from the route. This carries a risk that if the conversion between the route and the model is incorrect, the application can get caught in a loop.

So the main issues are (in no particular order):

inconsistent implementation
difficulty in managing connected parameters
difficulty in unit testing
two-way binding that can cause cyclical updates

I've been working on a solution that should help with issues 2-4. If it is applied across the application, point 1 would be addressed as well.

Current status of this issue:
After https://github.com/UUDigitalHumanitieslab/I-analyzer/pull/1467 is merged, the core of the application is based on the Store / StoreSync classes to handle routing.
The refactor will be complete if we also convert:

the word models query
visualisation modules

For visualisations, this can be done by basing visualisations on the Results class but may also be done by rewriting the component so it inherits StoreSync. The former option is more "proper" but also takes longer.

Perhaps this is a superfluous comment, but you could consider the route a special type of view/controller. As such, ideally it would communicate changes by editing a model and only update itself in response to changes in a model. This would eliminate any direct ties between routes and components and avoid cyclical updates. Maybe this what you were planning to do already, or similar to it.

Yes, I went with that approach in an earlier version, but the issue was that routes can be updated independently (through browser navigation) and it's hard to detect whether changes in the route were triggered by the model or not (especially in a fool-proof way). You end up listening to any changes in the route and responding to those, but also triggering changes when the model changes, so there is a real risk of cyclical updates.
The current approach instead conceptualises routes as a "backend" to the model. The same model  class can be instantiated with different backends so this maintains flexibility, but you get a clean unidirectional dataflow, where changes from controllers result in the model sending an update message to the backend, and the model presents an observable based on the backend state to view components.

Please clarify, how does that eliminate the cyclical updates? Whether you call the route a backend or a view, isn't it both a source and a target of events in both cases?
MVC generally avoids these cycles by only issuing events when there are actual changes. For example, consider that we start with a change in the model. The route updates accordingly. Assuming for a moment that the routing mechanism has no way to prevent an event from being triggered, this will cause a response in the model again. However, since this does not change the actual value of the model, the model does not retrigger a change event. The chain stops.
Similarly if the route changes first, for example because the user pressed the back button: the model changes accordingly. It will obviously trigger an event because any views observing the model need to update. The router will detect this event as well and respond. However, since this does not change the route, the router will not emit a second event and the chain stops.
(I know that in Backbone, routers can distinguish between external and internal updates, and they only trigger events on external updates unless you explicitly ask them to also do it on an internal update. I don't know Angular's routing mechanism very well, but even if it does not have a similar provision, the above general mechanism should still stop cyclical updates.)

Re. cyclical updates, the earlier implementation that conceptualised routes as views/controllers ended up with a flow like this:

a controller signals an update to the model
the model updates its internal state
the router (as a view) receives the updated state from the model and starts navigation
the router finishes navigation and (as a controller) signals the new path to the model
if the route doesn't look like the model expects it to, go back to step 2

I think that mostly matches your description. Step 5 was where you would compare the router state to the model state and only respond to real changes. But if a model's methods to convert between its internal state and the route are implemented incorrectly, you can get caught in a loop where steps 2-5 keep repeating.
The current implementation functions roughly like this:

a controller signals an update to the model
the model signals an update to the router, and the router starts navigation
the router finishes navigation and signals the new path to the model
the model's observable state is defined as a reflection of the router, so it will now show the new value to observers (e.g. views)

Mistakes in the implementation of models can obviously still result in bugs, but there is no possibility of a feedback loop.
I don't think this approach generalises as well to other applications but it works for how I-analyzer uses deep routing.

Both of the flows that you describe are fairly MVC-ish, except that in both cases, you seem to frame it as if the model is concerned with the state of the route. Maybe that is just my interpretation. In any case, this is how I would approach it:

A controller tells the model what state it should have.
The model compares the target state to its actual state. If they are the same, the flow stops here.
Otherwise, the model triggers an event with its updated state.
The router (as a view) responds to the event with a pushState, which updates the URL in the address bar. At the same time, other views probably also respond to the update.
The route change finds its way back to the model, either by the router acting as a controller or through some other pathway. The new route translates to a state that the model should have.
We are back at step 2; the model compares the target state to its actual state. Since the model was already at the state that corresponds to the current route, the flow stops here.

You are right that a loop can still happen if the comparison in steps 2 and 6 is implemented incorrectly, but that is just a plain bug that can happen with any design. I would not consider that a flaw in the MVC division of labor.
In the second flow, in which you described the current implementation, the model and the router have a shared concern. I'm not saying that as a judgment, just an observation. If this setup works, I don't think there is a need to change it.


sshd: Add restartTrigger for sshd_config

Motivation for this change
Changing sshd options (e.g. via extraConfig) does not restart the ssh service, currently.
IMO this is expected behaviour, which this fixes.
Things done

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

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

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

Care needs to be taken. openssh can't simply be restarted because some users might depend on its connection to access the machine itself. If the config has a single bug, openssh could fail to restart and lock users out. I'm not entirely sure myself how it all works currently (active connections stay alive or so), but this should be reviewed and tested with care.

Fixes #48658
Fixes #43341

Care needs to be taken. openssh can't simply be restarted because some users might depend on its connection to access the machine itself.

It can be restarted without aborting of the connection, and it is how sshd worked in 18.03 and before, until was untintentially broken in https://github.com/NixOS/nixpkgs/pull/41744

@volth how is this different from #48658?
I didn't see your PR before submitting this, sorry.

@volth how is this different from #48658?

At first glance it seems the same.

Rebased, fixed and only adding the restartTriggers now when not socket-activated via systemd.


Is it supported for "esp-idf v4.2" branch?

Hi,
When I use "esp-idf v4.2" and use the command "idf.py menuconfig", the menu function cannot be run successfully. I can switch to v4.0 and it will work fine. Is there any plan to support v4.2 version?

Hi,
I haven't tested the ESP-IDF 4.2 branch, I'm running ESP-IDF 4.1-rc1 myself. Care to send an screenshot? Do it shows something on the console?

Hi，
I just tested it again and found that the menu can be generated on linux, and the menu cannot be generated on windows10, and an error is reported. It should be an error in the CMakeLists.txt file.
So I chose to compile with linux.

Seems like CMake can't find the C nor C++ compilers, are the esp32 dependencies installed? I think each release of the ESP-IDF need to install their dependencies.


Adds k8s recommended labels

Changes
Adds Kubernetes recommended labels to networking as discussed in https://github.com/knative/networking/issues/552
Note that changes to the labels in vendor/knative.dev/networking should be handled by the automation once https://github.com/knative/networking/pull/555 merges.
/kind enhancement
/assign @dprotaso

/lgtm
/approve
/hold - in case you want to drop the label on the resources in test/config

/lgtm
/approve
/hold cancel

/lgtm
/approve


[WebGL2] Particles2D not being rendered on Firefox

Godot version: 3.0.2 stable official
OS/device including version:

Firefox 60, 61 and 62 on Mac OS X (computer is a 2017 iMac)
Chrome 66 on Mac OS X

Issue description:
On Firefox, sometimes Particles2D systems are not visible. On Chrome, in addition to the particles not being visible, the screen shakes quite hard  and freezes (this last bit probably is the same as https://github.com/godotengine/godot/issues/16281 )
Steps to reproduce:
I made a game that showcases this.  Enemies should explode on contact, but on Firefox most of the times the particles are not visible / created (sometimes they do).
Source code is available at https://github.com/belen-albeza/space-shooter-godot

Confirmed on Firefox Nightly 62.0a1 (2018-06-02) (64-bit).

Same with Godot Engine v3.0.6 on Chrome 69.0.3497.23 Linux

sorry for up
Particles2D(GPU) still does not work in Godot 3.1 for WebGL
reason is https://www.khronos.org/registry/webgl/specs/latest/2.0/#5.1

We are no longer working on the WebGL2 backend due to poor driver support on most systems. We recommend you use the GLES2/WebGL backend instead.
Unfortunately, that means this bug just isn't going to be fixed in GLES3/WebGL2, sorry.


Re-run afterglow for Lazy Loading

I'm wondering if there is a way to rerun afterglow after a button is pressed to look for new videos as I have a page that uses lazy loading so some videos aren't brought into the page until a button is clicked on.
Cheers

I believe i may have found my own solution by running window.afterglow.init(); after the click.

@spbuckle Thank you so much! You saved my weekend. Why is this not in the official documentation?

Because this is not the perfect way to do this. It will load videos twice if they have been there before the reinit. This will be improved in future versions, if there will be any. Development is stopped for now, as I just don't have the time to support the project.
You might want to reset the loaded players manually before the init, try something like this:
window.afterglow.players = [];


Add secondary type support in sql failover group

Related command
az sql failover-group create
az sql failover-group update
Description
Adds a new optional boolean parameter --secondary-type to command az sql failover-group create/update to enable creation of geo/standby replica on partner server while creating/updating sql failover group.
Testing Guide
Example1: az sql failover-group create --name fog --partner-server svr2 --resource-group saljain --server svr1 --add-db testdb
--secondary-type Standby
Output: Creates a failover group named fog with testdb added as standby replica on svr2
Example2: az sql failover-group update --name fog --resource-group saljain --server svr1 --add-db testdb2 --secondary-type Geo
Output: Updates failover group named fog with testdb2 added as geo replica on svr2. Now fog has 2 databases: testdb with standby replica and testdb2 with geo replica on svr2
Example3: az sql failover-group create --name fog --partner-server svr2 --resource-group saljain --server svr1 --secondary-type Named
Output: az sql failover-group create: 'Named' is not a valid value for '--secondary-type'. Allowed values: Geo, Standby.
History Notes
[SQL] az sql failover-group create: Add parameter --secondary-type to support creation of geo/standby replica on partner server
[SQL] az sql failover-group update: Add parameter --secondary-type to support addition of databases in failover group with geo/standby replica on partner server.
[SQL] az sql failover-group create: Change default failover policy to manual.

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

[ ] I adhere to the Error Handling Guidelines.

Thank you for your contribution! We will review the pull request and get back to you soon.

Please fix CI issues

/azp run


tem.Net.Http.Native': The specified module or one of its dependencies could not be found.

blu@minopia:/opt/beatsaber $ ./ServerHub
[LOG       -- 11:44:19] Beat Saber Multiplayer ServerHub v<IP_ADDRESS>
[LOG       -- 11:44:19] Found 0 plugins!
[WARNING   -- 11:44:20] Unable to fetch public IP!
[LOG       -- 11:44:20] Hosting ServerHub @ <IP_ADDRESS>:3700
[WARNING   -- 11:44:20] Unable to fetch public IP!
[LOG       -- 11:44:20] Hosting  WebSocket Server @ <IP_ADDRESS>:3701
tem.Net.Http.Native': The specified module or one of its dependencies could not be found.
 (Exception from HRESULT: 0x8007007E)
   at Interop.Http.GetSslVersionDescription()
   at Interop.HttpInitializer..cctor()
   --- End of inner exception stack trace ---
   at Interop.HttpInitializer.Initialize()
   at Interop.Http..cctor()
   --- End of inner exception stack trace ---
   at Interop.Http.GetSupportedFeatures()
   at System.Net.Http.CurlHandler..cctor()
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.GetResponse()
   at System.Net.WebClient.GetWebResponse(WebRequest request)
   at System.Net.WebClient.DownloadBits(WebRequest request, Stream writeStream)
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---
   at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   at ServerHub.Misc.VersionChecker.Client_DownloadStringCompleted(Object sender, DownloadStringCompletedEventArgs e) in D:\andru\Desktop\BeatSaberMultiplayer-<IP_ADDRESS>\ServerHub\Misc\VersionChecker.cs:line 36

Try installing libssl1.0.2 or libssl1.1

blu@minopia:~$ sudo apt install libssl1.0.2
[sudo] password for blu:
Reading package lists... Done
Building dependency tree
Reading state information... Done
libssl1.0.2 is already the newest version (1.0.2s-1~deb9u1).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
blu@minopia:~$ sudo apt install libssl1.1
Reading package lists... Done
Building dependency tree
Reading state information... Done
libssl1.1 is already the newest version (1.1.1d-0+deb10u2+rpt1).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

same error here
user@geko:~/ServerHub$ ./ServerHub
[LOG       -- 13:22:26] Beat Saber Multiplayer ServerHub v<IP_ADDRESS>
[LOG       -- 13:22:27] Found 0 plugins!
[EXCEPTION -- 13:22:29] System.TypeInitializationException: The type initializer for 'System.Net.Http.CurlHandler' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Http' threw an exception. ---> System.TypeInitializationException: The type initializer for 'HttpInitializer' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'System.Net.Http.Native': The specified module or one of its dependencies could not be found.
 (Exception from HRESULT: 0x8007007E)
   at Interop.Http.GetSslVersionDescription()
   at Interop.HttpInitializer..cctor()
   --- End of inner exception stack trace ---
   at Interop.HttpInitializer.Initialize()
   at Interop.Http..cctor()
   --- End of inner exception stack trace ---
   at Interop.Http.GetSupportedFeatures()
   at System.Net.Http.CurlHandler..cctor()
   --- End of inner exception stack trace ---
   at System.Net.Http.CurlHandler..ctor()
   at System.Net.Http.HttpClientHandler..ctor()
   at Sentry.Internal.Http.DefaultSentryHttpClientFactory.Create(Dsn dsn, SentryOptions options)
   at Sentry.Internal.SdkComposer.CreateBackgroundWorker()
   at Sentry.SentryClient..ctor(SentryOptions options, IBackgroundWorker worker)
   at Sentry.Internal.Hub..ctor(SentryOptions options)
   at Sentry.SentrySdk.Init(SentryOptions options)
   at Sentry.SentrySdk.Init(Action`1 configureOptions)
   at ServerHub.Hub.Program.Start(String[] args)
   at ServerHub.Hub.Program.Main(String[] args)
[LOG       -- 13:22:29] Shutting down...

Unhandled Exception: System.TypeInitializationException: The type initializer for 'System.Net.Http.CurlHandler' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Http' threw an exception. ---> System.TypeInitializationException: The type initializer for 'HttpInitializer' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'System.Net.Http.Native': The specified module or one of its dependencies could not be found.
 (Exception from HRESULT: 0x8007007E)
   at Interop.Http.GetSslVersionDescription()
   at Interop.HttpInitializer..cctor()
   --- End of inner exception stack trace ---
   at Interop.HttpInitializer.Initialize()
   at Interop.Http..cctor()
   --- End of inner exception stack trace ---
   at Interop.Http.GetSupportedFeatures()
   at System.Net.Http.CurlHandler..cctor()
   --- End of inner exception stack trace ---
   at System.Net.Http.CurlHandler..ctor()
   at System.Net.Http.HttpClientHandler..ctor()
   at Sentry.Internal.Http.DefaultSentryHttpClientFactory.Create(Dsn dsn, SentryOptions options)
   at Sentry.Internal.SdkComposer.CreateBackgroundWorker()
   at Sentry.SentryClient..ctor(SentryOptions options, IBackgroundWorker worker)
   at Sentry.Internal.Hub..ctor(SentryOptions options)
   at Sentry.SentrySdk.Init(SentryOptions options)
   at Sentry.SentrySdk.Init(Action`1 configureOptions)
   at ServerHub.Hub.Program.Start(String[] args)
   at ServerHub.Hub.Program.Main(String[] args)
Aborted

Happened to me too. This is because there are missing dependencies.
Use the command ldd System.Net.Http.Native.so, check which dependencies are missing, and then install the specified dependencies.

Thank you. I had to install libcurl3 and remove libcurl4, works like a charm now!


retriggering sequences

First off, thanks for the library.  I think it is going to work perfectly but I’d like to check how I’m using it as I’m a little confused by the templating.
I’d like to trigger multiple sequences repeatedly in response to events.  I’m assuming this means that the timeline should continue to run and that I should add (or retrigger) sequences as needed.
I have the timeline set to REPEAT_TL mode and auto_erase set to true.
To the dynamic_append example, I have added the following to the “switch” conditionals
} else if (c == 'e') {
Serial.println("Add e");
ep = (float*) malloc(sizeof(float));
*ep = 0;
timeline.add(*ep,true).init(0).then(14, 5000).then(0, 2000,  {
Serial.println("e is finished, destroy e");
free(ep);
ep = NULL;
});
timeline.update_duration();
}
This seems to work but is there a simpler way….for instance resetting the 'a' sequence and adding it back in.  Perhaps it would take the addition of an indefinite hold method in addition to the reset.  That way the sequence could stay in the timeline until it was ready to be triggered.  An example of this scenario would be great.

I'm sorry, I couldn't understand what you'd like to do... Could you explain more details with some drawings?

Thank you for responding.  Actually I thought I had it working but didn't.  Here's the scenario
I have some tweens I wish to retrigger multiple times.  Lets say we have
Tween A defined as  init(0).then(10, 5000).then(0, 2000)
and
Tween B defined as init(0).then(100,5000).then(0,5000)
Imagine these tweens are triggered by two buttons (A and B).  The A button is pushed at T=2 and T = 10.  The B button is pushed at T= 5.
If I printed the values every second, I would expect something like (if the Tween isn't running, it holds it's value and would be initialized to 0)
T    A   B
0    0    0
1    0    0
2    0    0
3    2    0
4    4    0
5    6    0
6    8    20
7    10   40
8    5    60
9    0    80
10  0    100
11   2    80
12   4   60
13   6   40
14   8   20
15   10  0
16   5   0
17   0   0
...
But what I see is that the tween starts at some random point in the sequence like it's initial start time isn't being set correctly.  Will submit a code example and output shortly.

#include <Tween.h>
Tween::Timeline timeline;
float* ep = NULL;
void setup() {
Serial.begin(115200);
delay(2000);
timeline.mode(Tween::Mode::REPEAT_TL);
timeline.auto_erase(true);
timeline.start();  // must be started to tween items in timeline

}
void loop() {
timeline.update();  // must be called to update tween in timeline
// show plot if timeline runs in 10sec
if (Serial.available()) {
    char c = Serial.read();

    if (c == 'e') {
        if (ep != NULL) {
          Serial.println("E still running");
        } else {
          Serial.println("Add e");
          ep = (float*) malloc(sizeof(float));
          *ep = 0;
          timeline.add(*ep,true).init(0).then(14, 5000).then(0, 2000, []() {
                Serial.println("e is finished, destroy e");
                free(ep);
                ep = NULL;
            });
          timeline.update_duration();
          }
    } else if (c == 'c') {
        Serial.println("Clear");
        timeline.clear();
        timeline.update_duration();
        //timeline.start();
    } else if (c == 's') {
        timeline.stop();
        Serial.println("Stopped");
    } else if (c == 'r') {
        timeline.update_duration();
        timeline.start();
        Serial.println("Started");
    }
}

// adjust serial ouput
static uint32_t prev_ms = millis();
if (millis() > prev_ms + 1000) {
    if (timeline.isRunning()) {
      Serial.print(timeline.size());
      Serial.print(" ");
      Serial.print(timeline.isRunning());
      Serial.print(" e:");
      if(ep!=NULL) {
        Serial.println((float)*ep);
      } else {
        Serial.println("-");
      }
    }
    prev_ms = millis();
    delay(50);
}

}
Here's the output I get from a Feather M0, comments added to explain
21:02:55.326 -> 0 1 e:-          //no sequences running but the timeline is running
21:02:55.841 -> Add e           //e sequence added
21:02:56.304 -> 1 1 e:1.35    ///initiallized to zero correctly
21:02:57.313 -> 1 1 e:4.15
21:02:58.318 -> 1 1 e:6.95
21:02:59.328 -> 1 1 e:9.76
21:02:59.537 -> E still running  //tried to readded, correctly identified as still running
21:03:00.307 -> 1 1 e:12.56
21:03:01.326 -> 1 1 e:10.59
21:03:02.304 -> 1 1 e:3.59
21:03:02.815 -> e is finished, destroy e     //e sequence finishes and calls the callback
21:03:03.318 -> 0 1 e:-                                //no sequences running, timeline continues to run
21:03:04.319 -> 0 1 e:-
21:03:05.083 -> Add e                                  //another e is added
21:03:05.333 -> 1 1 e:6.97                            //value does not initialize to 0
21:03:06.302 -> 1 1 e:9.78
21:03:07.329 -> 1 1 e:12.58
21:03:08.310 -> 1 1 e:10.54
21:03:09.319 -> 1 1 e:3.54
21:03:09.815 -> e is finished, destroy e
21:03:10.332 -> 0 1 e:-
21:03:11.312 -> 0 1 e:-
21:03:12.305 -> 0 1 e:-
21:03:13.307 -> 0 1 e:-
21:03:14.062 -> Add e
21:03:14.338 -> 1 1 e:12.60        //a third e sequence is triggered, this time it seems to start the sequence on the downward slope
21:03:15.339 -> 1 1 e:10.50
21:03:16.316 -> 1 1 e:3.49
21:03:16.816 -> e is finished, destroy e
21:03:17.333 -> 0 1 e:-

update_duration() does not reset a timeline. Please use timeline.restart() to restart the timeline from zero. You can check the current elapsed time of the timeline by timeline.sec().

I believe that would restart the entire timeline...interrupting other running tweens.  I don't think this library will work for me but I can use your easing library directly.  Thanks for your attention.

If you want to switch between completely different sequences applied to the same target, it would be best to have multiple timelines and switch between the timelines themselves.


config.py: Set bot prefix to corobo

Reviewers Checklist

[ ] Appropriate logging is done.
[ ] Appropriate error responses.
[ ] Handle every possible exception.
[ ] Make sure there is a docstring in the command functions. Hint: Lookout for
botcmd and re_botcmd decorators.
[ ] See that 100% coverage is there.
[ ] See to it that mocking is not done where it is not necessary.

ack https://github.com/coala/corobo/pull/128/commits/55177a96ed39ce5813ff22d8c6866e8a27fd0e7c

thanks :+1:

@rultor merge

@rultor merge

@meetmangukiya OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@meetmangukiya Done! FYI, the full log is here (took me 2min)


Search CJK text

I tried this plugin and it worked.
But I found it cannot get all results. Sometimes it get nothing, although the words to search do exsit in the markdown file.
Is it because of searching for Chinese in the Chinese document?

You can see #11 .You can try to install flexsearch in your project.
It's work in my project

You can see #11 .You can try to install flexsearch in your project. It's work in my project

Thanks, your suggestion solved my problem.
非常感谢。

不过这样改了后有一个3M左右的文件会在网站开始的时候加载


Implement Last Observation Carried Forward

https://docs.timescale.com/latest/using-timescaledb/reading-data#locf
Should probably be integrated with time_bucket_gapfill
    metrics.timescale.time_bucket_gapfill('time', '1 day', ranges[0], ranges[1], datapoints=240, locf=True)

Currently something like this will do the trick
Metric.
timescale.filter(device=device).filter(time__range=range).values('temperature').time_bucket_gapfill('time', '1 day', range[0], range[1], datapoints=1).annotate(Avg('temperature')).annotate(locf=Func(F('temperature'), function="locf")).order_by('time')

This didn't work for me. I tried to run this in a Django shell on Python 3.8.6 and get the following error:
Metrics.timescale.filter(time__range=ranges).time_bucket_gapfill('time', '1 hour', ranges[0], ranges[1], datapoints=30).annotate(Avg('loss')).annotate(locf=Func(F('loss'), function="locf"))
Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'Func' is not defined

Any idea?

``
from django.db.models import Func

@DoGab  As I remember the query above isn't quite there yet, but it's a long time ago since I've played with it.
Really looking forward to hear if you can use it or how to do it :)

@schlunsen Thank you for the Hint. I didn't find the correct library to include.
It worked great! I have not tested it with data that are gapped but for now the query already works!

Docs are now at https://docs.timescale.com/api/latest/hyperfunctions/gapfilling-interpolation/locf/


Snap [Feature Request]

I was wondering if you might have an interest in a snap version. I would help make the snap and submit a PR if there's any interest.
Crafting your first snap

Intel welcome community contributions of any kind for RealSense.  In an online 'webinar' session about RealSense in June 2018, the following statement was made by the Intel presenters:
"We strongly appreciate and encourage community participation ... we wanted to make it very easy for people to take the library and modify it to their needs, and share it with more people, even if it doesn't line up with our vision of the product".
If a customer writes a feature, documents and submits it, then it is "a very strong tool for influencing the direction of the product".
Intel will almost always happily accept a contribution and try to maintain it from that point onward.

I support this feature request.
Currently the SDK has dkms and udev-rules packages that may be tricky to package. DKMS can be bypassed by building the SDK with -DFORCE_LIBUVC=true, but udev-rules are a must. I'm sure there are solutions for it, but I personally am not familiar with Snap at all.

@dorodnic  Snaps were a new concept to me too.  From what I can gather from research, "Snaps are applications packaged with all their dependencies to run on all popular Linux distributions from a single build.  They update automatically and roll back gracefully".
A couple of years ago, someone released a Snap for Legacy Librealsense (1.12).
https://snapcraft.io/librealsense
It seems that in that system, Librealsense could be installed via Snap using a pip-style command:
sudo snap install librealsense

Hi @kyrofa,
I wondering if you could help me out here I was wanting to make an update version of the librealsense SDK snap but I noticed Canonical made one back in May 2017. Do you know who made the original one? Or someone who could update the snap to the upcoming 2.28 build.

@mikeroyal thanks for the ping. I've passed it onto the folks responsible and asked them to participate in this discussion.

Hi @mikeroyal, Do you still plan to submit a PR for Snap? Thanks.


[Package Request]: Microsoft.SQLServerManagementStudio - add automation for rolling update URL

How can we help?
I would like someone else to build the manifest.
Please read and ensure the following

[X] The installer meets the above requirements

Please provide the following information
Download Page Url:   https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms
Publisher:  Microsoft
Package Name:  SQLServerManagementStudio
Description: SQL Server Management Studio - EN-US rolling update. This URL will always point at the most recent SQL Management Studio instaler for EN-US language.
Package Version: (this URL is not for a fixed version, it is regularly updated to point to the most recent)
Installer URL:  https://aka.ms/ssmsfullsetup
Please add a winget repository for automatic rolling update for Microsoft SQL Management Studio, EN-US edition, which is kept updated at the following short aka.ms URL:
https://aka.ms/ssmsfullsetup
This URL is supposed to always point at the latest version of the installer and thus the Azure pipeline bots will detect automatically when the installer EXE file is changed/updated, and will automatically update the Winget manifests here.
So far i see that updates for SQL Management Studio are only published as manually-added pull requests, without update automation
https://github.com/microsoft/winget-pkgs/commits/master/manifests/m/Microsoft/SQLServerManagementStudio
I think that since this installer is for the English language, the installers for other languages will have to be defined separately, as they are currently.

The version of SSMS from WinGet's manifests appears to be the most recent version:
Name                                   Id                                  Version Match         Source
-------------------------------------------------------------------------------------------------------
Microsoft SQL Server Management Studio Microsoft.SQLServerManagementStudio 19.0.2  Moniker: ssms winget

Internet search:

Does this InstallerUrl hold a newer version of SSMS?

Installer URL: https://aka.ms/ssmsfullsetup

One issue with this is that using a vanity URL like the aka.ms link will cause previous versions to become unavailable when a new version is available as part of the automation

could wingetbot build that "previous versions list" by removing the HTTP redirect layers and keeping a record of the last URL in the redirect chain? (assuming that one will remain valid for the version, when anorher version is pushed to she short url?)
When it detects an updated file, can wingetbot push an additional "fixed" version of the package manifest?
currently the redirect chain goes like this:
---request begin---
GET /ssmsfullsetup HTTP/1.1
Host: aka.ms
User-Agent: Wget/1.21.2
Accept: */*
Accept-Encoding: identity
Connection: Keep-Alive

---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 301 Moved Permanently
Content-Length: 0
Server: Kestrel
Location: https://go.microsoft.com/fwlink/?linkid=2226343
Request-Context: appId=cid-v1:9b037ab9-fa5a-4c09-81bd-41ffa859f01e
X-Response-Cache-Status: True
Expires: Mon, 20 Mar 2023 19:52:31 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Mon, 20 Mar 2023 19:52:31 GMT
Connection: keep-alive
Strict-Transport-Security: max-age=31536000 ; includeSubDomains

---response end---

---request begin---
GET /fwlink/?linkid=2226343 HTTP/1.1
Host: go.microsoft.com
User-Agent: Wget/1.21.2
Accept: */*
Accept-Encoding: identity
Connection: Keep-Alive

---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 302 Moved Temporarily
Content-Length: 0
Server: Kestrel
Location: https://download.microsoft.com/download/9/f/8/9f8197f4-0f71-42a3-8717-b2817c77b820/SSMS-Setup-ENU.exe
Request-Context: appId=cid-v1:7d63747b-487e-492a-872d-762362f77974
X-Response-Cache-Status: True
Expires: Mon, 20 Mar 2023 19:52:31 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Mon, 20 Mar 2023 19:52:31 GMT
Connection: keep-alive
Strict-Transport-Security: max-age=31536000 ; includeSubDomains

---response end---

---request begin---
GET /download/9/f/8/9f8197f4-0f71-42a3-8717-b2817c77b820/SSMS-Setup-ENU.exe HTTP/1.1
Host: download.microsoft.com
User-Agent: Wget/1.21.2
Accept: */*
Accept-Encoding: identity
Connection: Keep-Alive

---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Accept-Ranges: bytes
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-blob-content-md5: tq7qy2qGXFooFmdTYOudog==
Last-Modified: Mon, 13 Mar 2023 18:04:01 GMT
ETag: "0x8DB23ED535AA330"
Content-Length: 659373600
Date: Mon, 20 Mar 2023 19:52:31 GMT
Connection: keep-alive

---response end---

Hey guys, I'm on the SSMS Team.
I believe I know quite well when we publish it and when we want to make it available thru the many release channels. :)
I was only guilty of not doing this on a regular basis in the past (I may have done it a couple of times maybe).
Starting with SSMS 19.0.2, I've added the automation that generates the files and prepares the PR to the SSMS release process, so it's going to be a lot harder (read: impossible, unless there is a reason for us not to push it out to winget) to be out of date.
So, as long as I'm concerned:

I'd like the SSMS Team to own the update of the winget files going forward
There is no need for anybody to have winget to try and guess from the download page what to do
Ultimately, close this issue

Let me know what you think.

Starting with SSMS 19.0.2, I've added the automation that generates the files and prepares the PR to the SSMS release process, so it's going to be a lot harder (read: impossible, unless there is a reason for us not to push it out to winget) to be out of date.

thanks - i think that solves most of the automation side of things and i can close this issue.


join doesn't work with pipe as second argument

The join command doesn't work with pipes as second arguments which is probably due to the implementation but it also doesn't fail gracefully. The first input for join can be a pipe but the second argument needs to be a file as it needs to be seekable.
I have the following input file normal.csv. Table works fine as it doesn't seek backwards.
$ xsv table <(cat normal.csv)
a1  a2  a3
b1  b2  b3

The first input is also not seeked
$ xsv join a1 <(cat normal.csv) a1 normal.csv
a1,a2,a3,a1,a2,a3
b1,b2,b3,b1,b2,b3

But the second argument is seeked and if it is a pipe it leads to the following error:
$ xsv join a1 normal.csv a1 <(cat normal.csv)
a1,a2,a3,a1,a2,a3
Illegal seek (os error 29)

Possible fixes (ideally both):

Save the second argument in memory and return to there. This might use a lot of ram so it should be available via command line switch
Check whether the second argument is a pipe and fail gracefully

Please don't just prevent pipes from being used everywhere. This is really useful when composing a lot of xsv commands.

Thanks @maweki—switching my argument order solved this problem for me too, though I'd ideally like to be able to use process substitution for both arguments.


Add --quiet argument

This adds a new --quiet argument to suppress noisy output unless there is an error. Logs are still recorded and written to the file, but only error outputs are printed and the log file location is printed if any errors were recorded.
Resolves #26

 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.


Server error inside CSV file when using Laravel response

Laravel 7
Version   9.6
Question
When using a Laravel download response, I'm receiving an error inside the CSV file. It shows up below the last row in the CSV file. If I don't use the Laravel response and simply echo $reader->output($fileName) then die, it works. So it's definitely related to the download response.
I'm wondering if you have encountered this before and if there is a solution for it. Other downloads I use for TAR files work fine.
Laravel code:
$filePath = Storage::path(config('config.rapid_export_dir') . '/' . $fileName);
$reader = Reader::createFromPath($filePath, 'r');
$reader->setOutputBOM(Reader::BOM_UTF8);

$headers = [
    'Content-Encoding' => 'none',
    'Content-Type' => 'text/csv; charset=UTF-8',
    'Content-Disposition' => 'attachment; filename="'.$fileName.'"',
    'Content-Description' => 'File Transfer',
];

return Response::download($reader->output($fileName), $fileName, $headers);

Error code:

<!DOCTYPE html>
--

<meta charset="utf-8">
<meta name="viewport" content="width=device-width

<title>Server Error</title>

<link rel="dns-prefetch"   href="//fonts.gstatic.com">
<link   href="https://fonts.googleapis.com/css?family=Nunito"   rel="stylesheet">

500

Server Error

@rbruhn thanks for using the library. I believe your question is answered in the library documentation website.

If it does, then I can't find it. I've tried all the various examples. Thanks anyway. I will just switch packages.

Did you read this section https://csv.thephpleague.com/9.0/connections/output/#using-a-response-object-symfony-laravel-psr-7-etc ?

Yes. With and without adding the $reader->setOutputBOM(Reader::BOM_UTF8);
Also tried $reader->getContent() in place of the $reader->output() shown in the code above.
When using getContent(), I got a 500 error when going to the download url. My error log simply said there was an error and spit out the 85K rows of the csv with 4 or 5 letters tagged at the beginning of the error. I don't have that log anymore or I'd show you the start of it. There was no trace for the error. No real message to figure out what went wrong.

from what you describe to me it's clearly an issue with Symfony or Laravel way of constructing the HTTP response rather that one with the library I'm afraid. 😢

Ya, that's what I thought. Which is why I was simply asking if you've ran into the issue or not. Thanks for responding further though.

@rbruhn I think you'll find the solution to your issue by reading the Laravel documentation https://laravel.com/docs/8.x/responses#file-downloads  ... your first snippet is incorrect you should correct it. And as I said this has nothing to do with the library 😉

Tried directly downloading the file. The problem was the file ended up with utf-8 characters scrambled inside the csv no matter what settings I had in the headers. When viewing the file saved on the server, the utf-8 characters are correct. So it's happening during the download. I was trying to use your methods to help with the download to get correct character encoding using BOM.
So, your library works for the file if I just send headers and die. It won't work at all using Laravel download.

Thought I would let you know I figured this out. The main problem was my file name in the url. It didn't like that so I changed it to be encoded. After fixing that, the Laravel download response still didn't give correct utf8 characters. However, using your example from the documentation finally worked. So it was the filename issue in the URL that caused all the issues. Code below works. Thanks.
$filePath = Storage::path(config('config.rapid_export_dir') . '/' . $fileName);
$reader = Reader::createFromPath($filePath, 'r');
$reader->setOutputBOM(Reader::BOM_UTF8);

$headers = [
    'Content-Encoding' => 'none',
    'Content-Type' => 'text/csv; charset=UTF-8',
    'Content-Description' => 'File Transfer',
    'Content-Disposition' => 'attachment; filename="'.$fileName.'"'
];

return response($reader->getContent(), 200, $headers);


Button is a kind of Control

"for example, the Button class is a kind of Control event". I think "event" should be deleted.

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

ID: 25b47b5f-7a8e-5f9b-10dd-ed409fa1b57a
Version Independent ID: 60b5834c-41ba-37b8-5f35-74e890d7f92f
Content: Names of Classes, Structs, and Interfaces
Content Source: docs/standard/design-guidelines/names-of-classes-structs-and-interfaces.md
Product: dotnet
GitHub Login: @rpetrusha
Microsoft Alias: ronpet

Thanks for pointing this out, @yanxiaodi. You are correct that the text should not describe Control as an event. Unfortunately, though, this is copyrighted material that we do not hold the copyright for, and as a result we can't change it. So unfortunately, I'll have to close this issue. Thank you again, though, for submitting your feedback.


Nothing happens when next page tester is run with jest

Hello,
I'm trying to use next-page-tester to test if a page has rendered. When I run the test with jest, it indicates that the test is running, then exits. No error code, no logs, nothing. It just exits and ignores any other test in that file. I'm expecting the test to run, but it does not.
NextJS 12.0.10
Jest 27.3.1
//index.page.tsx
import type { NextPage } from 'next';
export const Home: NextPage = () => {
  return(
Home page

}

//index.page.spec.tsx
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
import { getPage } from 'next-page-tester';

describe('GIVEN the home page', () => {
  it('THEN renders Home page text on the screen', async () => {

    const { render } = await getPage({
      route: '/'
    });
    render();
    expect(screen.getByText('Home page')).toBeVisible();

  //I added this test to try and debug (this test should obviously fail, but still nothing:
    expect(1).toEqual(2);
  })
})

@dbehmoaras
Could it be that Jest is not finding the folder with your test?
Try to change "test": "jest --watch" to "test": "jest --watchAll"

@kouliavtsev
Thanks for the reply (sorry for my delay, I was travelling the last few days).
I can confirm that jest is finding the folder with my test since the console actually shows the file being tested (ie: TESTS - followed by the describe block being tested with the string that I passed in). Moreover, if I remove the test that uses the next-page-tester and instead add in a placeholder assertion, the test runs that assertion.
Additionally, to make sure that this wasn't the case, I also tried manually running that specific test file directly in the command line, but I get the same result: TESTS - Given the home page, and then the test just stops.

Hoping that the PR that was just merged will address this

Have you checked if the issue is from next-page-tester? Try removing all next-page-tester and @testing-library/react, then try a simple test (like this one: expect(1).toEqual(2);) and see if the test file will run as expected.

Have you checked if the issue is from next-page-tester? Try removing all next-page-tester and @testing-library/react, then try a simple test (like this one: expect(1).toEqual(2);) and see if the test file will run as expected.

I am 100% sure that the issue is with next-page-tester. I have tried all kinds of permutations when running this test file, and this behavior only occurs when I add the following:
const { render } = await getPage({
  route: '/'
});
render();

Closing since no repro was provided. Feel free to open a new issue with a repro in case the issue persists.


fixes #697, fixed relabel variables as integers with no inplace

Closes #697

Codecov Report

Merging #698 into master will not change coverage.
The diff coverage is 0.00%.

@@           Coverage Diff           @@
##           master     #698   +/-   ##
=======================================
  Coverage   91.87%   91.87%
=======================================
  Files          60       60
  Lines        4224     4224
=======================================
  Hits         3881     3881
  Misses        343      343

Impacted Files
Coverage Δ

dimod/core/bqm.py
91.74% <0.00%> (ø)

Continue to review full report at Codecov.

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

Actually, can we add a test that would have caught it?

fixed the test, as it was awkwardly using inplace=True for an inplace=False operation. Should work now

Now I am worried that we don't test inplace=True

well, inplace=True is called inside inplace=False so it should actually raise the error

That is true, although an implementation detail. We should have tests that are still valuable even if the implementation changes.


[T2A2][F10-A2] Jeremy Goh

Good Effort Jeremy! Though more refactoring could be done as shared during the tutorial. Feel free to add more changes and create another pull request if you want and I can review it again :) Otherwise, good job for spotting the 'hasChanged' & renaming LS to abide to the Java Coding Convention. Thanks for sharing in class too!


cheat not working.

injecting through process hacker 2.
cheat won't start

Have you tried using another Injector? Perhaps ExtremeInjector with manual map and secure mode. https://github.com/master131/ExtremeInjector/releases/tag/v3.7.3

Have you tried using another Injector? Perhaps ExtremeInjector with manual map and secure mode. https://github.com/master131/ExtremeInjector/releases/tag/v3.7.3

csgo crashed.

process hacker not injecting right now (or injecting when u type -insecure on starts options)
use injector!
u can try this (I'm not the author) https://www.cshacked.pl/csh-injector-09072020-t156933/?tab=comments#comment-1022060
to inject u must:

add cheat and injector to one folder
change name of cheat to "cshacked.pl.dll"
open the injector as administrator

Do we need to use VACbypass first?

use sazzinjector, ive been cheating on osiris for 160 hours with sazz, no ban.


Got error "Network Error (tcp_error)" when saving video with duration more than 3 second

Q
A

Bug?
no

New Feature?
no

Version Used
0.7.0

FFmpeg Version
git-2016-11-26-99ee8ee

OS
CentOS 7

Hi,
I got an error when saving a video with duration more than 3 seconds. I thought it's about timeout then I set FFMPEG timeout to 18000000. But still get the same error.
Is this problem fully from my server or I did something wrong?
The error says:
Network Error (tcp_error)

A communication error occurred: "Operation timed out"
The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time.

For assistance, contact your network support team.

Thank you.

It is realy a issue with this library? What did the Server Log says?

I completely agree with @schmanat, logs are mandatory to understand the problem.
Could you paste them here, along with your code?
Thanks


TensorRT Deployment for nuScenes Trained Model

Hi, thanks for a great job!
I am having trouble converting the weights of the model trained with nuScenes dataset. As I understand, the deploy.py file only works with Waymo compatibility, and the nuScenes trtengine config yaml is not released. I have tried to write the nuScenes trtengine config file by just replacing the BACKBONE_3D part of the yaml, but before coming to this stage I had other problems with deploy.py. The input data (batch_dict) given by you is Waymo data and I think it is not a solution to just change this data with nuScenes because input_shapes and dynamic_axes config must be changed for nuScenes compatibility. So, is there a way to convert models trained with nuScenes to TensorRT right now, can I resolve this by myself? Are you planning to release some dataset-diagnostic deploy code in the near future?

Hi, thanks for a great job! I am having trouble converting the weights of the model trained with nuScenes dataset. As I understand, the deploy.py file only works with Waymo compatibility, and the nuScenes trtengine config yaml is not released. I have tried to write the nuScenes trtengine config file by just replacing the BACKBONE_3D part of the yaml, but before coming to this stage I had other problems with deploy.py. The input data (batch_dict) given by you is Waymo data and I think it is not a solution to just change this data with nuScenes because input_shapes and dynamic_axes config must be changed for nuScenes compatibility. So, is there a way to convert models trained with nuScenes to TensorRT right now, can I resolve this by myself? Are you planning to release some dataset-diagnostic deploy code in the near future?

Thanks for your interesting in our work!

We currently have no plans to open source deployment versions of the nuscenes version (maybe in the future).
I recommend you first try waymo deployment to familiarize the tensorRT deployment process. Deployment is not a simple matter.
If you only need to deploy backbone3D for Nuscenes, I think it's an easy thing. You just need to modify the deploy.py.

NuScenes Deployment of DSVT will be released in our new paper (Unified multi-modal DSVT), which is accepted by ICCV2023. Please be patient.


Custom form with onChange Methods

It's possible to use a custom form with the traditional methods like "onChange" or "onSubmit"? if so, how i can manage the data?

Yes, you can use the withNew, withEdit, etc. mutation HoCs to wrap your form component and pass it a mutation.  I think the Mutations section of the docs should cover all of that:
http://docs.vulcanjs.org/mutations.html
And here's an example: https://github.com/SachaG/Zensroom/blob/devel/packages/zensroom/lib/components/bookings/BookingsNewForm.js


Add -d when running Docker compose on Windows

cf #42
When running docker-compose run on windows system, you have to add the -d flag.
@hone or @zzak could you check my English? Thanks!

@toch is this still true for Windows? Otherwise the wording looks fine to me <3

yep, it's still there
Thanks @zzak for the review.


Can we generate code with spaces instead of tabs?

Let the war begin

We covered this using dotnet format in the generator


[6/n] Add support for front end requests

What does this PR do and why?
Provide a description of what this PR does. Link to any relevant GitHub issues, Notion tasks or Discord discussions.
Screenshots or screen recordings
If applicable, provide screenshots or screen recordings to demonstrate the changes.
Acceptance checklist

[ ] I have evaluated the Approval Guidelines for this PR.
[ ] (if relevant) I have tested this PR in all supported browsers.
[ ] (if relevant) I have tested this PR in dark mode and light mode (if applicable).

Current dependencies on/for this PR:

main

PR #3246

PR #3194

PR #3247

PR #3248

PR #3249

PR #3250   👈

This comment was auto-generated by Graphite.

@wraeth-eth queued this pull request to merge with Graphite.

Graphite rebased this pull request as part of a merge.

@wraeth-eth merged this pull request with Graphite.


Add dbrgn.tealdeer

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

This package is expecting arguments:
tealdeer 1.6.1
Danilo Bargen<EMAIL_ADDRESS>Niklas Mohrin<EMAIL_ADDRESS>A fast TLDR client

USAGE:
    tealdeer-windows-x86_64-msvc.exe [OPTIONS] [COMMAND]...

ARGS:
    <COMMAND>...    The command to show (e.g. `tar` or `git log`)

OPTIONS:
...


Security vulnerability node-forge

Describe the bug
<EMAIL_ADDRESS>requires<EMAIL_ADDRESS>which uses<EMAIL_ADDRESS>To fix this vulnerability, Vite should upgrade to<EMAIL_ADDRESS>because it uses<EMAIL_ADDRESS>which has the vulnerability fixed.

CVE-2020-7720
high severity
Vulnerable versions: < 0.10.0
Patched version: 0.10.0

The package node-forge before 0.10.0 is vulnerable to Prototype Pollution via the util.setPath function. Note: Version 0.10.0 is a breaking change removing the vulnerable functions.

Reproduction
n/a
System Info

required vite version: 1.0.0-rc.4
required Operating System: ubuntu 20.04
required Node version: 12.8.3

fixed at https://github.com/vitejs/vite/commit/b0fc211b4bd70d1f678e786e2f2ac214e952186f


JATOS top bar can obscure bottom part of window

When you resize the browser window of JATOS, at some point the username will roll over to the next line. (This happens before responsiveness kicks in such that the window actually changes its layout to fit a smaller screen.) As a result the top bar covers part of the window below.
It should look like this:

But if you resize, it looks like this: (Notice that the Optimal Viewing Position experiment has disappeared below the top bar.)

Thanks @smathot for reporting.

Fix will be part in next release


Eagerly reduce empty intersections to 'never'

Experiment to see whether we can eagerly reduce empty intersections to never.

@typescript-bot run dt

I assume this reduces nonsensical stuff like number & string to never?

@fatcerberus Yes, but the work is now in a new PR.


Add note for Debian family(such as Ubuntu)

There are many requests that demand using /bin/bash instead of /bin/sh
https://github.com/docker/docker/issues/8100
https://github.com/docker/docker/pull/7489
https://github.com/docker/docker/issues/7281
It because they are using the image of Debian family. It is inconvenient to write all command like RUN ["/bin/bash", "-c", "python test.py"].
And here is a much more simple way:
FROM some-image
RUN rm /bin/sh && ln -s /bin/bash /bin/sh

I think this is a very useful note  should be include in docs.

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "patch-1" git@github.com:eromoe/docker.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

Amending updates the existing PR. You DO NOT need to open a new one.

I'm -1 on this change.
Users should be able to use SHELL instead.
https://docs.docker.com/engine/reference/builder/#/shell

Apart from the suggestion to use SHELL (which I agree with) the better/supported way to change the default /bin/sh link in Debian from dash to bash would be something like:
RUN echo "dash dash/sh boolean false" | debconf-set-selections - && dpkg-reconfigure dash

and to switch back:
RUN echo "dash dash/sh boolean true" | debconf-set-selections - && dpkg-reconfigure dash

(only tried this from the shell prompt not actually in a Dockerfile so caveat emptor)