Performance regression

As reported by Jiaqi, there seems to be some significant performance regression for group knockoff solver.
MWE: (Knockoffs.jl v1.1.7 and on Julia 1.10)
using Knockoffs
using LinearAlgebra
using Random
using CSV
using DataFrames

# gnomad test data
datadir = "/Users/biona001/Benjamin_Folder/research/4th_project_groupKO/group_knockoff_test_data"
mapfile = CSV.read(joinpath(datadir, "Groups_2_127374341_128034347.txt"), DataFrame)
groups = mapfile[!, :group]
covfile = CSV.read(joinpath(datadir, "CorG_2_127374341_128034347.txt"), DataFrame)
Σ = covfile |> Matrix{Float64}
Σ = 0.99Σ + 0.01I

@time solve_s_group(
    Symmetric(Σ), groups, :maxent,
    m = 1,          # number of knockoffs per variable to generate
    tol = 0.001,    # convergence tolerance
    outer_iter = 10,    # max number of coordinate descent iterations
    robust = false, # whether to use robust cholesky updates
    verbose = true    # whether to print informative intermediate results
)

┌ Warning: Maximum group size is 192, optimization may be slow. Consider running `modelX_gaussian_rep_group_knockoffs` to speed up convergence.
└ @ Knockoffs ~/.julia/dev/Knockoffs/src/group.jl:360
Maxent initial obj = -44822.11340914695
Iter 1 (PCA): obj = -26794.756871827496, δ = 2.6915336716594664, t1 = 24.96, t2 = 32.32
Iter 2 (CCD): obj = -23681.635922280064, δ = 0.5920258362537, t1 = 534.9, t2 = 881.71, t3 = 0.22
Iter 3 (PCA): obj = -23476.599883936684, δ = 1.0851838794654751, t1 = 559.7, t2 = 913.86
Iter 4 (CCD): obj = -23441.194586522815, δ = 0.01917853738286209, t1 = 1059.27, t2 = 1761.83, t3 = 0.44
Iter 5 (PCA): obj = -23428.13516213957, δ = 0.20912865614936338, t1 = 1085.4, t2 = 1794.69
... # terminated

On Knockoffs.jl v0.3.0 (Julia 1.6.7), see Fast Cholesky update notebook
solve_group_max_entropy_ccd: Optimizing 58997 variables
┌ Warning: Maximum group size is 192, optimization may be slow. Consider running `modelX_gaussian_rep_group_knockoffs` to speed up convergence.
└ @ Knockoffs /Users/biona001/.julia/dev/Knockoffs/src/group.jl:230
initial obj = -13811.93738418022
Iter 1: obj = -8863.340455999352, δ = 0.9033274319764998, t1 = 8.85, t2 = 18.23, t3 = 0.04
Iter 2: obj = -7509.4699925543855, δ = 0.7627302489344706, t1 = 19.04, t2 = 36.57, t3 = 0.08
Iter 3: obj = -7495.512979153219, δ = 0.153471691368552, t1 = 29.25, t2 = 54.77, t3 = 0.12
Iter 4: obj = -7491.027981075002, δ = 0.0467433749392695, t1 = 39.2, t2 = 72.95, t3 = 0.16
Iter 5: obj = -7489.0243504490645, δ = 0.007200479138871564, t1 = 49.08, t2 = 90.98, t3 = 0.2
Iter 6: obj = -7487.899557778442, δ = 0.004873425110742543, t1 = 58.98, t2 = 109.34, t3 = 0.24
Iter 7: obj = -7487.198762711129, δ = 0.0031886466238885947, t1 = 68.75, t2 = 127.98, t3 = 0.28
Iter 8: obj = -7486.7318922165505, δ = 0.002106998635746351, t1 = 78.17, t2 = 146.58, t3 = 0.32
Iter 9: obj = -7486.405698134362, δ = 0.0011212737859179697, t1 = 87.39, t2 = 165.21, t3 = 0.37
Iter 10: obj = -7486.1699950030525, δ = 0.0006708441935208511, t1 = 96.52, t2 = 183.44, t3 = 0.41
283.395020 seconds (3.23 M allocations: 329.596 MiB, 0.05% gc time, 0.61% compilation time)

Initial objective value being different is due to different initialization of S. However the timing seems much slower, even if ran on different computers.

After a bit more digging, I am more inclined to think there are no performance regression, because the original problem likely ran on a subset of the variables.
p = 1241 # this includes group 263, which is the largest group with 192 members
groups = groups[1:p]
Σ = Σ[1:p, 1:p]

# Knockoffs.jl version 1.1.7
@time solve_s_group(
    Symmetric(Σ), groups, :maxent,
    m = 1,          # number of knockoffs per variable to generate
    tol = 0.00001,    # convergence tolerance
    outer_iter = 10,   # max number of coordinate descent iterations
    inner_ccd_iter = 1,
    inner_pca_iter = 0,
    robust = false,   # whether to use robust cholesky updates
    verbose = true    # whether to print informative intermediate results
);

┌ Warning: Maximum group size is 192, optimization may be slow. Consider running `modelX_gaussian_rep_group_knockoffs` to speed up convergence.
└ @ Knockoffs /home/groups/sabatti/.julia/packages/Knockoffs/Pvo6U/src/group.jl:360
Maxent initial obj = -13827.762715952922
Iter 1 (CCD): obj = -8578.305552411875, δ = 0.9025475541472799, t1 = 11.23, t2 = 23.98, t3 = 0.06
Iter 2 (CCD): obj = -7555.017497751844, δ = 0.7478481743005219, t1 = 23.57, t2 = 47.4, t3 = 0.13
Iter 3 (CCD): obj = -7550.483748831955, δ = 0.018305715936092613, t1 = 35.33, t2 = 70.84, t3 = 0.21
Iter 4 (CCD): obj = -7548.862400282033, δ = 0.016699603678850573, t1 = 46.44, t2 = 94.33, t3 = 0.28
Iter 5 (CCD): obj = -7548.3273548868, δ = 0.008661606230114097, t1 = 56.82, t2 = 117.76, t3 = 0.35
Iter 6 (CCD): obj = -7548.015458746686, δ = 0.00498206737500809, t1 = 66.43, t2 = 141.06, t3 = 0.42
Iter 7 (CCD): obj = -7547.793581622985, δ = 0.0026061168087445695, t1 = 75.48, t2 = 164.59, t3 = 0.49
Iter 8 (CCD): obj = -7547.619776039311, δ = 0.0014028998110954276, t1 = 83.86, t2 = 188.1, t3 = 0.56
Iter 9 (CCD): obj = -7547.4770852558795, δ = 0.0007153736353831524, t1 = 91.84, t2 = 211.48, t3 = 0.64
Iter 10 (CCD): obj = -7547.358121710283, δ = 0.0002760958077924706, t1 = 99.6, t2 = 234.89, t3 = 0.71
336.402501 seconds (595.27 k allocations: 357.114 MiB, 0.01% gc time)

With p=1241, the overall time and objective value is much closer to the value attained 2 years ago.

A few more hours later, I'm starting to think PCA updates are slower than they should be. Here is a test on 9000 by 9000 input matrix
file = "/oak/stanford/groups/zihuai/HighD_Sigma/UCB_cor.csv"
Σ = readdlm(file, ',', skipstart=1)
groups = hc_partition_groups(Symmetric(Σ), cutoff=0.5, linkage=:average)
group_reps = choose_group_reps(Symmetric(Σ), groups, threshold=0.5);

On Julia v1.10 & Knockoffs.jl version 1.1.7:
solve_s_graphical_group(
    Symmetric(Σ), groups, group_reps, :maxent;
    m = 5, verbose = true, inner_pca_iter=1,
    inner_ccd_iter=1, outer_iter = 2
)

8999 representatives for 9132 variables, 9033 optimization variables
PCA optimization: 8999 variables
CCD optimization: 8999 diagonal variables
CCD optimization: 17 off-diagonal variables
Maxent initial obj = -130896.16543115964
Iter 1 (PCA): obj = -124299.86980415294, δ = 0.5286405884857434, t1 = 1279.42, t2 = 278.81
Iter 2 (CCD): obj = -123656.14555594444, δ = 0.3698519162684533, t1 = 43.83, t2 = 274.62, t3 = 0.0
Iter 3 (PCA): obj = -118778.12068774736, δ = 0.42098723933166904, t1 = 2481.3, t2 = 524.16
Iter 4 (CCD): obj = -118445.11098235719, δ = 0.2330629376150859, t1 = 86.36, t2 = 513.34, t3 = 0.0
PCA timings: t1_pca = 2481.29556, t2_pca = 524.15894, t3_pca = 0.0
CCD timings: t1_ccd = 86.36043, t2_ccd = 513.33717, t3_ccd = 0.00045

It's clear that t1 (time to update Cholesky factors) is a lot slower for PCA updates than CCD updates, which doesn't make much sense to me since CCD requires more, not less, Cholesky updates. Thus I added some temporary code to check how many "early Cholesky terminations" happen for PCA vs CCD:
solve_s_graphical_group(
    Symmetric(Σ), groups, group_reps, :maxent;
    m = 5, verbose = true, inner_pca_iter=1,
    inner_ccd_iter=1, outer_iter = 10
)

8999 representatives for 9132 variables, 9033 optimization variables
PCA optimization: 8999 variables
CCD optimization: 8999 diagonal variables
CCD optimization: 17 off-diagonal variables
Maxent initial obj = -130896.16543115964
Iter 1 (PCA): obj = -124299.86980415294, δ = 0.5286405884857434, t1 = 1279.98, t2 = 287.63
pca_early_terminated = 9019
Iter 2 (CCD): obj = -123656.14555594444, δ = 0.3698519162684533, t1 = 42.88, t2 = 273.52, t3 = 0.0
ccd_early_terminated = 207
Iter 3 (PCA): obj = -118778.12068774736, δ = 0.42098723933166904, t1 = 2526.84, t2 = 557.25
pca_early_terminated = 9019
Iter 4 (CCD): obj = -118445.11098235719, δ = 0.2330629376150859, t1 = 85.95, t2 = 531.38, t3 = 0.0
ccd_early_terminated = 231
Iter 5 (PCA): obj = -114810.46063950789, δ = 0.3855781593833003, t1 = 3816.9, t2 = 850.46
pca_early_terminated = 9019
Iter 6 (CCD): obj = -114638.32618042963, δ = 0.09078804983710237, t1 = 118.88, t2 = 821.56, t3 = 0.0
ccd_early_terminated = 192
Iter 7 (PCA): obj = -112127.17150059695, δ = 0.3573975408848783, t1 = 5112.73, t2 = 1145.55
pca_early_terminated = 9019
Iter 8 (CCD): obj = -112033.49440467537, δ = 0.06394698256688378, t1 = 141.36, t2 = 1113.82, t3 = 0.0
ccd_early_terminated = 155
Iter 9 (PCA): obj = -110229.42080921704, δ = 0.2913788676608088, t1 = 6407.41, t2 = 1440.61
pca_early_terminated = 9019
Iter 10 (CCD): obj = -110175.8992055564, δ = 0.04113289361230646, t1 = 155.91, t2 = 1404.21, t3 = 0.0
ccd_early_terminated = 120
Iter 11 (PCA): obj = -108676.19894636273, δ = 0.19573378930103782, t1 = 7700.19, t2 = 1734.3
pca_early_terminated = 9019
Iter 12 (CCD): obj = -108657.18365041119, δ = 0.01959907766848471, t1 = 165.56, t2 = 1693.48, t3 = 0.0
ccd_early_terminated = 80
Iter 13 (PCA): obj = -107312.02842853116, δ = 0.18208840012112923, t1 = 8989.03, t2 = 2027.97
pca_early_terminated = 9019
Iter 14 (CCD): obj = -107302.33547962835, δ = 0.025094298874137874, t1 = 173.6, t2 = 1982.7, t3 = 0.0
ccd_early_terminated = 54
Iter 15 (PCA): obj = -106186.3408574712, δ = 0.22998709100773107, t1 = 10282.46, t2 = 2322.45
pca_early_terminated = 9019
Iter 16 (CCD): obj = -106182.00466931309, δ = 0.013124608119177414, t1 = 181.32, t2 = 2272.57, t3 = 0.0
ccd_early_terminated = 44
Iter 17 (PCA): obj = -105226.74312417053, δ = 0.18798423882462398, t1 = 11585.63, t2 = 2618.13
pca_early_terminated = 9019
Iter 18 (CCD): obj = -105225.00889733771, δ = 0.016869569663403902, t1 = 188.68, t2 = 2565.28, t3 = 0.0
ccd_early_terminated = 36
Iter 19 (PCA): obj = -104351.73259806576, δ = 0.19649363409471488, t1 = 12893.27, t2 = 2915.27
pca_early_terminated = 9019
Iter 20 (CCD): obj = -104351.0770831528, δ = 0.005042151160751619, t1 = 195.93, t2 = 2855.19, t3 = 0.0
ccd_early_terminated = 34
PCA timings: t1_pca = 12893.26639, t2_pca = 2915.26801, t3_pca = 0.0
CCD timings: t1_ccd = 195.93278, t2_ccd = 2855.18508, t3_ccd = 0.0021

This is weird: t1_pca for PCA takes >100x longer than t1_ccd even though it early terminates much more often.

It turns out the reason that t1_ccd is much faster than t1_pca is because CCD updates were being skipped over very often (doesn't improve the objective). The reason for this is because of a small bug in the update to the diagonal entries of CCD updates. After fixing this, the CCD updates take equally long as PCA updates, but the objective improves much faster.
Julia v1.10 and soon-to-be Knockoffs.jl v1.1.8:
solve_s_graphical_group(
    Symmetric(Σ), groups, group_reps, :maxent;
    m = 5, verbose = true, inner_pca_iter=1,
    inner_ccd_iter=1, outer_iter = 10
)

8999 representatives for 9132 variables, 9033 optimization variables
PCA optimization: 8999 variables
CCD optimization: 8999 diagonal variables
CCD optimization: 17 off-diagonal variables
Maxent initial obj = -130896.16543115964
Iter 1 (PCA): obj = -124299.86980415294, δ = 0.5286405884857434, t1 = 909.06, t2 = 264.1
pca_early_terminated = 9019
Iter 2 (CCD): obj = -118639.79956687437, δ = 0.495211713131239, t1 = 891.52, t2 = 260.2, t3 = 0.0
ccd_early_terminated = 9022
Iter 3 (PCA): obj = -114686.69186315064, δ = 0.45275292664408795, t1 = 1833.05, t2 = 546.13
pca_early_terminated = 9019
Iter 4 (CCD): obj = -112096.68739662363, δ = 0.32684850310884456, t1 = 1840.3, t2 = 546.12, t3 = 0.0


private mode support

Add an ability to explicitly link nodes. links value is a list of 2-item lists.
This will allow testing of large topologies where we define the graph fully and prevent arbitrary peering. This way, we can enforce number of hops between nodes and more efficiently detect regressions in block propagation times.
Configuration example:
nodes:
  tezos-baking-node:
    instances:
    - bake_using_accounts:
      - tezos-baking-node-0
      config:
        shell:
          history_mode: archive
        p2p:
          private-mode: true
      is_bootstrap_node: true
    - bake_using_accounts:
      - tezos-baking-node-1
      config:
        shell:
          history_mode: archive
      is_bootstrap_node: true
    runs:
    - baker
    - endorser
    storage_size: 15Gi
  tezos-node:
    instances:
    - config:
        shell:
          history_mode: rolling
      is_bootstrap_node: false
    - config:
        shell:
          history_mode: rolling
      is_bootstrap_node: false
    storage_size: 15Gi
links:
- [ tezos-baking-node-0.tezos-baking-node, tezos-node-0.tezos-node ]
- [ tezos-baking-node-0.tezos-baking-node, tezos-node-1.tezos-node ]
- [ tezos-baking-node-1.tezos-baking-node, tezos-node-0.tezos-node ]
- [ tezos-baking-node-1.tezos-baking-node, tezos-node-1.tezos-node ]
- [ tezos-baking-node-0.tezos-baking-node, tezos-baking-node-1.tezos-baking-node ]

When private_mode is set to "true", none of the bootstrap peers from the usual sources is configured in the node. Instead, only the links listed explicitly are configured.
Previously I found that private-private node connections did not work. But today, I found that it was actually working in my topology, but not reliably. We may want to configure trusted relationship between nodes to make sure connections get established reliably.

Whatever the structure or concept links will turn out to be, can we please give it a more obvious name? Something like trusted_peers? This is how the docs seem to refer to private node connections. https://tezos.gitlab.io/user/node-configuration.html?highlight=private mode

These are not trusted peers, these are links between 2 peers. What's not obvious about it?

Why need a standalone list of node links? With Roland's restructuring of the nodes definition, why not have a list of node links per node instance, per node class?
nodes:
  tezos-baking-node:
    instances:
    - bake_using_accounts:
      - tezos-baking-node-0
      config:
        shell:
          history_mode: archive
        p2p:
          private-mode: true
      is_bootstrap_node: true
      links:
         - tezos-node-0
         - tezos-node-1
         - tezos-baking-node-1
    - bake_using_accounts:
      - tezos-baking-node-1
      config:
        shell:
          history_mode: archive
      is_bootstrap_node: true
      links:
         - tezos-node-0
         - tezos-node-1
    runs:
    - baker
    - endorser
    storage_size: 15Gi

This centralizes the node's links inside the node itself. You don't need an explicit 2 way mapping from the instanceA to instanceB as the links are being defined in instanceA.
Also, I don't think one should need to specify the FQDN of each node. Why can't the code handle that for the user? All you need is the name of the node itself.
Personally I still think we need a better name than links. Why not something like link_to_nodes, link_with_nodes, peer_with_nodes? Or links_to_nodes/links_with_nodes/peers_with_nodes? These names are much more explicit as to what this field is for.
(The former names suggestion is in imperative/verb form. The latter names suggestion is in active/descriptive form. The reason I am making this grammatical distinction is because I just realized that we haven't been consistent with these forms in our structures. Examples being runs as the adjective, bake_using_accounts as the imperative. I think if something is a function you would use the imperative/verb form. If it is a property you would use the active/adjective/descriptive. node.runs.baker = true is describing a property of the instance. It isn't a function telling the node to run baker. The function in code would be shouldRunBaker and that would look up the prop. Sorry for this whole long craziness. Just want to express clearly what I'm thinking. So to sum this all up, I think we should use peers_with_nodes.)

I agree with replacing the fqdns with just the hostnames. Also replacing links with peering_links is fine.
I think defining links separately from nodes is cleaner. I briefly searched for reasons why and came across this:
https://stackoverflow.com/questions/43052290/representing-a-graph-in-json

I think it would be really cool to define topology as  in dot format (https://graphviz.org/) instead of a custom syntax - it could then be immediately visualized and compared with actual topology reported by https://github.com/oxheadalpha/tezos-net-viz

@nicolasochem
Does the link array structure imply that it is non-directed and therefore A -> B and and also B -> A ? Or is the graph directed and therefore just A -> B?
If the former then I understand why a separate structure makes sense, as you wouldn't want to define the edge in each node instance. You only want to define the edge once. If we really do require a separate structure and we are talking about DAGs, why not have a map of all the nodes, where each node has a list of every other node they point to? Why should each element in the list be a pair instead of a list of nodes?
The SO question you referenced is talking about a DAG. However, the DAG the user is talking about is more complicated than our use case here. His use case requires that the nodes and edges each have associated data. So the DAG representation is more complicated. We don't need that. Just a string being the hostname of a node pointing to another hostname string.
Here is a SO question about DAGs in json that is just like our use case: https://stackoverflow.com/a/9899057/6379084
The answer is like I'm suggesting here.


Added tests str

Minor changes. Changed around the testing project structure and added tests for the str method for the Card class


Documentation request: Clarify buffer configurationmax_request_bytes default value

Title: Document the default value of buffer configuration setting max_request_bytes
Description:
Configuration parameter max_request_bytes can be tweaked to increase the size of the buffer to workaround a HTTP Response Status Code 413 Payload Too Large [RFC 7231].
There is no information what is the default value in envoy documentations either for v1-api (version 1.8.0) nor v2-api (latest version 1.12.0).
For lot of configuration parameters envoy documentation explicit the default values. An example on the Circuit breaker settings
I tried to figured out what is the default value for that max_request_bytes parameter by investigating the code in several places protocol buffer definition, cpp BufferFilter object definition and test samples.
Would you mind to let me know if I have missed some parts in the documentation which would give me more details or if it's still unspecified.
Relevant Links:
V1 API HTTP Filters Buffer documentation link
V2 API HTTP Filters Buffer documentation link

Thanks! 🤝

I still do not see the default value of mx_request_bytes documented. Can someone clarify here?

I still do not see the default value of mx_request_bytes documented. Can someone clarify here?

@k2mahajan If I understood correctly, you should take a look on the following docs on how to increase it:
https://www.envoyproxy.io/docs/envoy/latest/faq/configuration/flow_control
And if you go to the docs of the per_connection_buffer_limit_bytes that is mentioned there:
https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto#envoy-v3-api-field-config-listener-v3-listener-per-connection-buffer-limit-bytes
It says the default limit is 1mb


[locale] az: Improve relative time for seconds

"Saniyə" sözündə orfoqrafik səhv
Orthographic error in translation of th word "second"

https://azerdict.com/orfoqrafiya/saniyə

@topchiyev any comments

@javid-yagubali you need to change src/locale/az.js and src/test/locale/az.js.

Thanks for your contribution @javid-yagubali - but you need to edit the files in src/.
@topchiyev - can you confirm this correction?

I'm not a regular user of github. Just noticed a small typo, decided to inform. I don't even know how to contribute. Sorry.
@topchiyev, thanks for your effort.
in file src/locale/az.js line 55 (ss : '%d saniyə',) is correct. line 54 (s : 'birneçə saniyyə',) is not, there is one extra 'y' in there.
in file src/test/locale/az.js every word "second" has one extra 'y' in it. just search and replace "saniyyə" with "saniyə".
Sorry for really late response. Thank you for this amazing library.


Error getting generated key or setting result to parameter object. Cause: java.lang.NullPointerException

when use mybatis 3.5.3
batch insert data and get ids.
Error:Error getting generated key or setting result to parameter object. Cause: java.lang.NullPointerException

@Cicizz Could you provide more detail information? We cannot investigate by current provided informations.

Hi @Cicizz ,
This could be a duplicate of #1719 .
Could you try the latest 3.5.4-SNAPSHOT and see if the problem is resolved?
https://github.com/mybatis/mybatis-3/wiki/Maven
Thank you!

Assuming it was the same issue as #1719 .


(Testing) fixes log if previous version of kURL was not find and continue

What this PR does / why we need it:
If be unable to obtain the previous version used then, we just log and continue.
Which issue(s) this PR fixes:
Related to # https://github.com/replicatedhq/kURL/issues
Special notes for your reviewer:

Steps to reproduce

Does this PR introduce a user-facing change?

Fixes problem faced to check the previous kURL version used to do the install. If the installer be unable to obtain this information then it will be outputted and the script will not fail because of it.

Does this PR require documentation?

Done in : https://github.com/replicatedhq/kURL/pull/4263/files


Next ratatui version

From 0.20.1 to 0.21.0
a.k.a. the switch from tui-rs to ratatui.

https://github.com/tui-rs-revival/ratatui/releases/tag/v0.21.0 says ratatui was released 2023-05-29.


Change AuthenticationBackend authenticate signature to support OAuth

Closes https://github.com/aminalaee/sqladmin/issues/442

Hi @aminalaee
Thank you so much for your effort. I finally had time to test it (according to your gh-docs). But unfortunately it did't work for me.

I'm not redirected to the auth_provider (in case no user is in the session)
I'm redirected to the admin backed regardless (if user is in session or not)

If I hit the login endpoint directly I get also this error message authlib.integrations.base_client.errors.MismatchingStateError: mismatching_state: CSRF Warning! State not equal in request and response.
as it is just one file I pasted the whole code below for reproduction (I only removed SSO credentials and installed fastapi, sqladmin  & authlib).
In case I can help you, just let me know (but I'm not very experienced and learning day by day). And I'm definitely going to buy you a coffee for your help!
Do you spot the problem? Thanks and BR
from typing import Optional
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import declarative_base
from authlib.integrations.starlette_client import OAuth
from sqladmin import Admin, ModelView
from sqladmin.authentication import AuthenticationBackend
from starlette.applications import Starlette
from starlette.middleware.sessions import SessionMiddleware
from starlette.requests import Request
from starlette.responses import RedirectResponse, Response
from fastapi import FastAPI

app = FastAPI()
app.add_middleware(SessionMiddleware, secret_key="test")

oauth = OAuth()
oauth.register(
    'google',
    client_id="...",
    client_secret="...",
    server_metadata_url="...",
    client_kwargs={
        'scope': 'openid email profile',
        'prompt': 'select_account',
    },
)
google = oauth.create_client('google')

Base = declarative_base()
engine = create_engine(
    "sqlite:///example.db",
    connect_args={"check_same_thread": False},
)

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True)
    name = Column(String)

Base.metadata.create_all(engine)

class AdminAuth(AuthenticationBackend):
    async def login(self, request: Request) -> bool:
        return True

    async def logout(self, request: Request) -> bool:
        request.session.clear()
        return True

    async def authenticate(self, request: Request) -> Optional[RedirectResponse]:
        user = request.session.get("user")
        if not user:
            redirect_uri = request.url_for('login_google')
            return await google.authorize_redirect(request, redirect_uri)

admin = Admin(app=app, engine=engine, authentication_backend=AdminAuth("test"))

class UserAdmin(ModelView, model=User):
    def is_visible(self, request: Request) -> bool:
        return True

    def is_accessible(self, request: Request) -> bool:
        return True

admin.add_view(UserAdmin)

#also tried with @app.get('/auth/google')
@admin.app.route("/auth/google")
async def login_google(request: Request) -> Response:
    token = await google.authorize_access_token(request)
    user = token.get('userinfo')
    print(user)
    if user:
        request.session['user'] = user
    return RedirectResponse(request.url_for("admin:index"))

Hi @aminalaee
Thanks for a great tool!
This doesn't look safe for me to authenticate user if return value is not Response type especially for devs that will upgrade from <0.10.0.
Maybe if return value is not Response type then it's better to check that at least bool(response) is True ?
It looks safer and at the same time is not a breaking change/vulnerability for devs who upgrade from <0.10.0.

Hey @NikitaZakharov ,
Can you explain what is not safe? Maybe with a a sample code?
There's already a check doing isinstance(resp, Response) to make sure a response is returned.

@aminalaee
So before it was pretty straightforward - to determine if user is authenticated we just check whether return value is true or false. Currently it's a requirement to return Response in order to properly handle authentication check. What bothers me is upgrading to 0.10.0 from previous versions might lead to always-authenticated issue. Also the idea that any non-Response return value triggers authentication check to be skipped makes me feel a bit unsafe.
What if we just always expect Response type return value and otherwise just raise an error?
Current
response = await auth_backend.authenticate(request)
if response and isinstance(response, Response):
    return response
# else we just skip authentication check and show admin page

Suggested
response = await auth_backend.authenticate(request)
if response and isinstance(response, Response):
    return response
raise Exception('Response instance expected')

hmm, yeah it is very implicit and the docs only mentions the Response object, but the code doesn't enforce it,
I think that's a good idea, feel free to create a PR with a simple test to cover it, otherwise I can take a look later.


No Biometric support?

FaceID, TouchID etc?

As you can see in Readme, no support now

As you can see in Readme, no support now


Switch Errorf to Fatalf in retry tests.

These are bounds checks, and if they fail because the length is zero, then the test will panic just below.  This creates a much nicer failure mode for the test.
/kind cleanup
Submitter Checklist
As the author of this PR, please check off the items in this checklist:

[ ] Docs included if any changes are user facing
[ ] Tests included if any functionality added or changed
[ ] Follows the commit message standard
[ ] Meets the Tekton contributor standards (including
functionality, content, code)
[ ] Release notes block below has been filled in or deleted (only if no user facing changes)

Release Notes
NONE

looks like a flake...
/retest

Apparently I have angered the CI gods.
CI Gods, please take this 🐐 as my humble sacrifice 🙏
/retest

/approve


fix: pod install with --project-directory

Summary
The variable version is previously used but in https://github.com/facebook/react-native/commit/234486068e7f547450829d17e8d5db111a1571bc#diff-adcf572f001c2b710d14f409c14763f1a50b08369b3034548f1602685d21f67f, its usage have been removed the but the variable is kept.
It also raises an error when using bundle exec pod install --project-directory=ios which works on 0.70.X and below.
No such file or directory @ rb_sysopen - ../node_modules/react-native/package.json

/Users/davidangulo/Desktop/mobile/myapp/node_modules/react-native/scripts/react_native_pods.rb:212:in `read'
/Users/davidangulo/Desktop/mobile/myapp/node_modules/react-native/scripts/react_native_pods.rb:212:in `react_native_post_install'

Changelog
[IOS] [FIXED] - pod install with --project-directory
Test Plan
bundle exec pod install --project-directory=ios should not raise an error.

CC @dmytrorykun to double check.

@dcangulo I have the exact same error with pod install with --project-directory
but when I go into the ./ios folder and pod install, no problem

@arnaudambro This issue should be fixed in 0.72.
For 0.71, you can do the following for a workaround.
post_install do |installer|
  react_native_post_install(
    installer,
+   'node_modules/react-native',
    # Set `mac_catalyst_enabled` to `true` in order to apply patches
    # necessary for Mac Catalyst builds
    :mac_catalyst_enabled => false
  )
  __apply_Xcode_12_5_M1_post_install_workaround(installer)
end

In you ios/Podfile.

@arnaudambro This issue should be fixed in 0.72.
For 0.71, you can do the following for a workaround.
post_install do |installer|
  react_native_post_install(
    installer,
+   'node_modules/react-native',
    # Set `mac_catalyst_enabled` to `true` in order to apply patches
    # necessary for Mac Catalyst builds
    :mac_catalyst_enabled => false
  )
  __apply_Xcode_12_5_M1_post_install_workaround(installer)
end

In your ios/Podfile.

I'm using a monorepo and this worked perfectly, just needed to add the correct path. in my case: '../../../node_modules/react-native',
Thank!

Doesn't this fix qualify for a 0.71.X cherry pick?

@varemenos https://github.com/facebook/react-native/pull/36096 would fix it for 0.71.X


Update Instagram.php

$numberOfCommentsToRetreive calculation fixed. Code works with pull request https://github.com/postaddictme/instagram-php-scraper/pull/381

@HankFromLA  thank you for contribution,
if you have time  please solve PR conflicts


F#10 more blocks

pushing the things that work for now

I moved the function 'readpythonfile' to utils, is that cool?


Refactor: TypeTypeof.resolve

The statement scope is not necessary.

This front-end cleanup is necessary for:
https://trello.com/c/ihKhGeiu/115-reg2-031-forward-reference-to-inferred-return-type-of-function-call-when-using-auto-return-type


Doc Page Links
https://cs.spatial.io/api/SpatialSys.UnitySDK.ActorProfilePictureRequest.html
Explain Suggestion
Simple example showing how to set a RawImage's texture property with the texture returned from the ActorProfilePictureRequest
Code Suggestion
using SpatialSys.UnitySDK;
using UnityEngine;
using UnityEngine.UI;

public class YourCSharpScript : MonoBehaviour
{
    [SerializeField]
    RawImage profilePicture;

    public void SetProfilePicture()
    {
        SpatialBridge.actorService.localActor.GetProfilePicture().SetCompletedEvent((evt) =>
        {
            profilePicture.texture = evt.texture;
        });
    }
}

Contribution Credit
No response
Spatial.io handle
No response
Discord handle
No response

added


Implement certbot recipe

Changelog
Added
Changed
Deprecated
Removed
Fixed
Security
Checklist

[ ] Test
[ ] Self-review
[ ] Documentation

Reference

CHEF Attributes: does file name matter?
CHEF snap_package Resource
CHEF link Resource

Aergia is moving away from CHEF and targeting permanently at HashiCorp, hence closing this


localize autoscaling for italian

localize autoscaling for italian
See https://github.com/cncf/glossary/blob/main/LOCALIZATION.md

This issue is a duplicate of #1645.

@jihoon-seo  did the issue resolved or should I raise the PR

@akshaya-hub According to the prior issue #1645, @sistella self-assigned himself and already opened a PR #1809.
Plus, it seems that you are a Hindi speaker, and it is highly discouraged for not-fluent speakers to process localization jobs using machine translators (Policy details might vary by each localization team).
Please consider the aspects mentioned above, and let me close this issue.
Thank you for your contribution!


[TACHYON-1528] tachyon-stop.sh should not stop all but print usage by default

When people run bin/tachyon-stop.sh, he(she) may think that the stop shell will print usage as tachyon-start.sh does. And following the usage, people can specify which component(s) he(she) want to stop.
But now, when people run bin/tachyon-stop.sh, the script will stop master and all workers by default. And this probably is not what people want and all components has been stopped.
Maybe we can follow the tachyon-start.sh custom, print usage by default in tachyon-stop.sh

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Tachyon-Pull-Request-Builder/7754/
Test FAILed.

Jenkins, test this please.

LGTM

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Tachyon-Pull-Request-Builder/7756/
Test PASSed.

+1 LGTM
Thanks for this improvement! I think it makes a lot of sense.

Thanks for the improvement. With this merged, we also need to update the docs of running Tachyon, such as in http://tachyon-project.org/documentation/Running-Tachyon-Locally.html.

bin/tachyon-start.sh invokes bin/tachyon-stop.sh and it has not been updated to reflect this change ... as a consequence, bin/tachyon-start.sh now does not stop a previously running Tachyon service if there is one

@jsimsa @yupeng9   sorry for the missing, I will update the bin/tachyon-start.sh and docs in another issue.


build-bpf not working

root@1a06c1cedfdc:/test-ledger/hello-anchor# anchor build
BPF SDK path does not exist: /usr/local/bin/sdk/bpf: No such file or directory (os error 2)

there's this dir -- not sure if it's what it expects -- but if I export BPF_SDK_PATH=/usr/local/bin/bpf -- it just hangs when I run cargo build-bpf -- troubling!
# find / -name bpf
/usr/local/bin/bpf

well, hang on, that might have just been network being slow ..

aha, now have anchor build working

beh, what's the elegant way to do this in docker instead of on first build-bpf

https://github.com/solana-labs/solana/blob/dcce90555bb26493b3379801001bf59b46a3a3fe/sdk/bpf/scripts/install.sh#L111-L115
God only knows what we have to do to get this working OK on ARM


How to make it expanded by default ?

 It opens from scratch, from root.
Exactly I would like to have opened root, opened some level, where the link was clicked, whenever page is refreshed or not.
How ?

Good question! I'll have to address that in a future release.

good feature

That would be an amazing feature for navigation - Active menu/ or pre expanded! Great work by the way! Really appreciate the work you put in!

Waiting on this feature as well - open to the currently active category - not starting the drill down all over again.

This is very similar to this request https://github.com/somewebmedia/hc-offcanvas-nav/issues/14
Check my answer there and we'll see where it goes.

Hello everybody, that days is finally here! The latest version of the plugin brings you the desired feature.
New options: expanded, closeOpenLevels
New data attribute: data-nav-active
Check the repo readme for details on how to use them.
Cheers.


cask-repair: use hub default remote & protocol with custom branch prefix

This pull request addresses issues raised in #85 and #86 while taking into consideration challenges presented in #61 and #57. The goal is to support both git and https protocols and use by default what the user has configured with hub.
With this change cask-repair avoids setting user configurable preferences either in the local repository with git config --local hub.protocol https or globally with git config --global hub.protocol https and does not enforce a custom remote name for the user's fork.
A simple hub fork is now used to create both the fork and the remote. Checks are still performed to ensure the remote is present based on the known default remote name. Branch names are no longer based on the remote name and instead use a cask_repair_branch_prefix followed by a hyphen and the cask name. This allows cask-repair to use the standard hub remote while naming branches exactly as they were before. This minimizes the impact of the change in behavior and migration to the default remote and allows --delete-branches functionality to continue working. If --delete-branches is run after these updates, it will work even to delete branches which were created before the cask-repair script was updated.
Both #61 and #57 were review and neither raises any concers with these modifications. #61 was primarily an inquiry about git protocol support which we are now adding and #57 was dealing with a user who had modified the origin to use the git protocol. These changes deal only with the remote for the user's fork and do not make any modifications to the checks ensuring the proper origin. Both homebrew-core and homebrew-cask assume https origins and the current checks ensure the origin is configured per the standard distribution. Any discussion around changing the origin should probably fall within the scope of those respective projects.
All functionality, including --delete-branches has been tested and appears to be working with both git and https remotes with cask-repair now respecting the hub.protocol setting as configured by the user either locally for the cask tap or globally.

My previous pull request was closed in a way that I could not update and reopen it. Please test and let me know if this requires some tweaking, but this seems to balance supporting all functionality while taking user preferences and local configuration into consideration.

Thank you for keeping at it, the detailed explanation, the testing, and all the work. Merging now and releasing an update to the formula.
Thank you again!

Making a note for myself. If there are further problems, test https://github.com/vitorgalvao/tiny-scripts/issues/20#issuecomment-316447787.


Pfe

Switching elements from the RHElement and rh- namespace to PFElement and pfe- namespace.

I'm not able to npm install, it fails with:
lerna ERR! npm install exited 1 in '@rhelements/rhelements'
lerna ERR! npm install stderr:
npm ERR! code E404
npm ERR! 404 Not Found: @pfelements/pfe-sass@*

It seems like @pfelements/pfe-sass can't be found on npm, but I wouldn't have expected that to be a problem because the local pfe-sass should be linked up and used instead.

Here goes something.


Use a single lookup for many external instructions

Originally posted by @georgwiese in https://github.com/powdr-labs/powdr/pull/383#pullrequestreview-1551788197
One thing that just came to my mind: Now, a function basically translates to a new instruction with a lookup constraint for each distinct function. In Halo2, a lookup constraint is roughly 4x as expensive as an additional polynomial identity.
A more efficient approach would be to instead have an instruction per sub machine and to include the function ID in the program.
So instead of:
instr_add { 0, X, Y, Z } in main_arith.latch { main_arith.function_id, main_arith.x, main_arith.y, main_arith.z };
instr_sub { 1, X, Y, Z } in main_arith.latch { main_arith.function_id, main_arith.x, main_arith.y, main_arith.z };

we'd do:
instr_call_arith { function_id, X, Y, Z } in main_arith.latch { main_arith.function_id, main_arith.x, main_arith.y, main_arith.z };

This would also reduce the number of columns (one per machine + 1 instead of one per function).
Have you considered this? Anyway, might not be relevant to this PR, can be a future optimization.

This would still be cool!


createInsightsMiddleware - [insights middleware]: could not extract Algolia credentials from searchClient

Description
When using the createInsightsMiddleware with the typesense-instantsearch-adapter search client, the useInstantSearch from 'react-instantsearch-hooks' throws the following error:
Uncaught Error: [insights middleware]: could not extract Algolia credentials from searchClient
This appears to be because of a missing appId and appKey. Attempts to add this via search-insights have not been successful:
import aa from 'search-insights';
aa('init', { appId: 'test', appKey: 'test'})

What I'm trying to achieve is to use insights to send events to a third-party analytics service.
Steps to reproduce
Create an insights middleware component:
import { createInsightsMiddleware } from 'instantsearch.js/es/middlewares';
import { useInstantSearch } from 'react-instantsearch-hooks';
import { useLayoutEffect } from 'react';

export const InsightsMiddleware = () => {
  const { use } = useInstantSearch();

  useLayoutEffect(() => {
    const middleware = createInsightsMiddleware({
      insightsClient: null,
      onEvent: () => {
        // todo
      }
    });

    return use(middleware);
  }, [use]);

  return null;
}

Provide the InsightsMiddleware to the InstantSearch component:
<InstantSearch indexName='index' searchClient={searchClient}>
  <InsightsMiddleware />
  <SearchBox />
  <Hits hitComponent={Hit} />
</InstantSearch>

Expected Behavior
The ability to use insights middleware to send events to third-party APIs.
Actual Behavior
Uncaught Error: [insights middleware]: could not extract Algolia credentials from searchClient

@tomzweb Even though the search-insights middleware has a generic name, it turns out that it is only useful to send analytics events to Algolia. To send analytics to a third party service, you want to use the approach outlined here: https://www.algolia.com/doc/guides/building-search-ui/going-further/integrate-google-analytics/js/

@tomzweb I recently encountered this issue myself when developing a Search page for a client. It turns out that the reason for this, in my case, was that I was attempting to remove empty queries from Search Analytics using the old React InstantSearch method.
Check out the documentation here: https://www.algolia.com/doc/guides/getting-analytics/search-analytics/out-of-the-box-analytics/how-to/how-to-remove-empty-search-from-analytics/?client=React+Hooks
Specifically, look at the React Hooks example and note that the searchClient constant now has ...algoliaClient as part of it. This cleared up the issue and it's now working for me.
Hopefully this helps!

@accalton Thanks that does fix the error I was seeing, thank you!


Update (again) TerminationCodeDTO

A new Azure code was added (GLOBAL_INIT_SCRIPT_FAILURE) - not present yet in the documentation. The Jackson deserialization will fail.
In future I think that a better solution would be to convert the unknown enums to null (com.fasterxml.jackson.databind.DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL ) instead of throwing an error. The Azure API seems to change often and it will be hard to keep the pace.
https://github.com/edmunds/databricks-rest-client/pull/83
@samshuster

hey @cornelcreanga good idea!

hey @cornelcreanga good idea!

hey @cornelcreanga just letting you know that if you use the latest version 3.0.4, the code will now do what you suggest so you won't run into enum exceptions anymore.

hey @cornelcreanga just letting you know that if you use the latest version 3.0.4, the code will now do what you suggest so you won't run into enum exceptions anymore.

tkx @samshuster

tkx @samshuster


[Storage][DataMovement] Fix some flakey tests with concurrent eventing

This change should fix some flakey tests, most notably UploadSkipIfExists by switching the collection of skipped events to a concurrent collection. These events can be called by multiple threads and so the collection needs to be thread safe. I also converted the failed event collection to ConcurrentBag instead of a List with a lock for consistency.

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


bump: guest-components to candidate v0.9.0

This is for cutting release of v0.9.0 of trustee. To align with guest-components side.

Let me change the rev after https://github.com/confidential-containers/guest-components/pull/596 gets merged.


Add more general script for retrieving records/stats on the basis of queries from the DataCite API

Some changes to the retrieve records to generalize it and get some stuff needed to send emails to people about updating the schema versions of their records. Let me know how this looks!


⚠ Fortnite has degraded performance

In 1de2083, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1277 ms

Resolved: Fortnite performance has improved in a524914.


craftingpad 21w40a-1.0.6 crashes server on launch

I'm working to get my pack ready for the 1.18 launch and when I try to run my pack on my test server craftingpad 21w40a-1.0.6 crashes the server on launch
Minecraft 1.18-rc3
Fabric Loader: 0.12.5
craftingpad 21w40a-1.0.6
latest.log

As you opened the same issue with me, I wanted to tell you to open the issue here please, then noticed you already had.
Unfortunately, your crash log is incomplete - it doesn't show the crash stack trace itself. So StrickerRocker will likely not be able to fix it in case it's an incompatibility with any of the other mods.

There was no crash log, and the issue is intermittent. It looks like you have set the Compatibility level set to JAVA_16, when it should be JAVA_17


WFLY-12662 BouncyCastle update from 1.60 to 1.64

BouncyCastle update from 1.60 to 1.64
https://issues.jboss.org/browse/WFLY-12662
Please make sure your PR meets the following requirements:

[x] Pull Request title is properly formatted: [WFLY-XYZ] Subject or WFLY-XYZ Subject
[x] Pull Request contains link to the JIRA issue(s)
[x] Pull Request contains description of the issue(s)
[x] Pull Request does not include fixes for issues other than the main ticket
[x] Attached commits represent units of work and are properly formatted

@darranl or @fjuma Please review.

I believe Rest Easy may be the bigger consumer of BouncyCastle - I generally don't have an issue for small incremental updates if CI passes but they may want to double check as well.

@ronsigal Any input?


New option for not to show axis labels, only show axis line

Version

v2.16.0
Development Environment

Chrome, OSX
Current Behavior

When rendering axis area, it renders axis lines and axis labels.
Need an option for not to show axis labels.

Expected Behavior

Hey, @kind102
Thank you for your report on TOAST UI Chart.🙌🏻
I will mention again when this issue is resolved.
We loves issue reporting 💖.
If you have questions or find🔦 some bugs, report us.📡
Thank you✨

Looks good to me!

this issue is resolved


Reliability, resolution and uncertainty component for CRPS

I am using this package, which is really great.
Now, I am going to compute the reliability, resolution and uncertainty component for CRPS according to Hersbach 2000. Are you interested in a pull request or a joint development?

Hi @tozech:
I would be interested in the extension. Could you somehow share your code?

Hej @bexys08 ,
it is in my fork https://github.com/tozech/properscoring
I would be happy to push it here, but so far no package maintainer responds.

I'm not exactly a maintainer here, but I'll see if I can find someone who can answer.


fix: markAccountForDeletion for device accounts

Closing because we implemented this in the device account v3 PR here https://github.com/GaloyMoney/galoy/pull/2747/commits/4ce82be80b523154e93873a526db03dfa09b8cb6


DBaaS Helm chart

The charts/ directory currently contains some .yaml files related to the DBaaS operator.
These should be turned into an actual helm charts.

it is now done in lagoon-charts


jump list loses > marker

Steps to reproduce

mkdir -p ~/.vim/plugged/ && cd ~/.vim/plugged
git clone https://github.com/mhinz/vim-startify
vim --clean -u ~/.viminrc where ~/.viminrc reads

set nocompatible
let &rtp = '~/.vim/plugged/vim-startify/' . ',' . &rtp

Type :e ~/.viminrc and hit Enter
Hit <C-o>
Type :jumps and hit Enter

Expected behaviour
The output should contain >, but does not.
Version of Vim
8.2.4602
Environment
OS: Opensuse 15.3
Terminal: XTerm(330)
$TERM: xterm-256color
shell: GNU bash 4.4.23(1)
Logs and stack traces
No response

This happens, because startify sets :set bufhidden=wipe which means, Vim will wipe out the first buffer once it opens a new buffer (using the :e command).
Then after step 5, when trying to go backwards in the jump list and printing the jump list again, Vim cannot find that buffer anymore and returns NULL as the file name, which means, it will not print out anything and eventually will not mark the current position in the jumplist.
https://github.com/vim/vim/blob/ac72c21da696cf6c31630a9e5ff4c0d3e2049c11/src/mark.c#L872-L879
I am not sure how to handle this. We could add a marker before the known position, something like this:
diff --git a/src/mark.c b/src/mark.c
index fbb4b9a45..cb3fab725 100644
--- a/src/mark.c
+++ b/src/mark.c
@@ -875,6 +875,8 @@ ex_jumps(exarg_T *eap UNUSED)
            if (name == NULL || message_filtered(name))
            {
                vim_free(name);
+               if (i == curwin->w_jumplistidx)
+                   msg_puts("\n>");
                continue;
            }

Which would put out this after step 5:

This basically tells you you are before the first printed jump. But is this helpful? don't know.

According to :help jump the marker is always there:
The pointer will be set at the last used jump position.  The next CTRL-O
command will use the entry above it, the next CTRL-I command will use the
entry below it.  If the pointer is below the last entry, this indicates that
you did not use a CTRL-I or CTRL-O before.  In this case the CTRL-O command
will cause the cursor position to be added to the jump list, so you can get
back to the position before the CTRL-O.

Perhaps putting > to the current jump comes closest to Vim's behavior in other instances:

vim --clean
Type :e ~/.viminrc and hit Enter
Hit <C-o>
Type :jumps and hit Enter

Then the output is
 Sprung Zeile Sp Datei/Text
>  0     1    0

since, right after starting Vim, the current position is already after the first jump

vim --clean
Type :e ~/.viminrc and hit Enter
Type :jumps and hit Enter

:jumps
 Sprung Zeile Sp Datei/Text
   1     1    0
>

Hm, I am not sure.
okay, maybe make it consistently use -invalid- as is done in mark_line?
Would this be any better?

diff --git a/src/mark.c b/src/mark.c
index fbb4b9a45..2ff9207ea 100644
--- a/src/mark.c
+++ b/src/mark.c
@@ -871,8 +871,10 @@ ex_jumps(exarg_T *eap UNUSED)
        {
            name = fm_getname(&curwin->w_jumplist[i].fmark, 16);

+           if (name == NULL)
+               name=vim_strsave((char_u *)"-invalid-");
            // apply :filter /pat/ or file name not available
-           if (name == NULL || message_filtered(name))
+           if (message_filtered(name))
            {
                vim_free(name);
                continue;

That looks technically correct.  The only thing that might happen is to get a long list of "-invalid-" items.
Perhaps only use "-invalid-" if the mark is on it?  Otherwise the "-invalid-" items are not useful.

okay, let me prepare a PR for that


Foundation 5 Accessible Tabs keyboard navigation problem

Browser version: Chrome 43.0.2357.124
jQuery: 2.1.0
Foundation version: 5.5.2
Issue
When a page first loads, and a tab receives the tabindex focus rectangle, the arrow keys do not work to select adjacent tabs.
Minimal example here: http://jsfiddle.net/j2r158hx/
The HTML is copied directly from the Foundation docs here, under the heading Accessibility: http://foundation.zurb.com/docs/components/tabs.html.
To test, click in the whitespace area in the Result panel, press Tab, which should select the first tab.  If you press the right arrow, nothing will happen.  If you press Tab or Enter so that it "loads" the first tab (even though it's already displaying it), then pressing right will move the focus rectangle to the right.
Refresh the JSfiddle page to reset state.  Then, instead of pressing Tab after clicking in the Result panel, click Tab 3 instead.  Now Tab 3 has the focus rectangle.  Pressing an arrow key will direct the focus rectangle to an adjacent tab, but the focus rectangle is then stuck there.
Only after pressing Tab or Enter to load the tab content do the arrow keys move again, but this time, it only moves to the adjacent tabs that have been previously selected.

facing a similar issue, tabs nav seems to work with arrow keys to move from tab1 to 2 etc
however, tabbing into the content area does not work

Yeah, this was tricky because we added some accessibly in Foundation 5 where we couldn't make breaking changes to the code. This is already addressed in the Foundation for Sites 6 version. If you have a non breaking solution for it now, we;d love to see it.


Creating a pod with Celery image doesn't work. Also, create->start container endless loop.

I am trying to set up a pod that contains a Celery image. I created a simple replication controller to use the celery dockerfile:
{
  "id": "celery-controller",
  "kind": "ReplicationController",
  "apiVersion": "v1beta1",
  "desiredState": {
    "replicas": 1,
    "replicaSelector": {"name": "celery"},
    "podTemplate": {
      "desiredState": {
        "manifest": {
          "version": "v1beta1",
          "id": "celery",
          "containers": [{
            "name": "celery",
            "image": "dockerfile/celery",
            "cpu": 100,
            "ports": [{"containerPort": 9876, "hostPort": 9876}]
          }]
        }
      },
      "labels": {
        "name": "celery",
      }
    }
  },
  "labels": {
    "name": "celery"
  }
}

From looking at the documentation (https://registry.hub.docker.com/u/dockerfile/celery/dockerfile/), I expected that when I start this controller I would see that pip installs the celery package. However, this doesn't happen. In fact, even pip itself is not installed.
The results of docker ps are:
$ sudo docker ps
CONTAINER ID        IMAGE                   COMMAND               CREATED             STATUS              PORTS                    NAMES
9372d9000fbe        kubernetes/pause:go     "/pause"              17 minutes ago      Up 17 minutes       <IP_ADDRESS>:9876->9876/tcp   k8s_POD.a5cea3a_celery-controller-gziey.default.api_e1d5ea0c-c0f0-11e4-92de-0800279696e1_8e8936f7
6c053213d869        google/cadvisor:0.8.0   "/usr/bin/cadvisor"   31 minutes ago      Up 31 minutes                                k8s_cadvisor.8d424740_cadvisor-agent.file-6bb810db-kubernetes-minion-2.file_e8804cbb62b8adb446577bcf28197c52_23a640b5
d75dcbf4ec4f        kubernetes/pause:go     "/pause"              32 minutes ago      Up 32 minutes       <IP_ADDRESS>:4194->8080/tcp   k8s_POD.252debe0_cadvisor-agent.file-6bb810db-kubernetes-minion-2.file_e8804cbb62b8adb446577bcf28197c52_54a98ef9

I thought I might be missing something simple, but when I run $ cluster/kubectl.sh describe pod celery-controller-gziey, I get strange output that suggests there might be a bug somewhere:
current-context: "vagrant"
Running: cluster/../cluster/vagrant/../../_output/dockerized/bin/linux/amd64/kubectl --kubeconfig=/home/karl/.kubernetes_vagrant_kubeconfig describe pod celery-controller-gziey
Name:				celery-controller-gziey
Image(s):			dockerfile/celery
Host:				<IP_ADDRESS>/<IP_ADDRESS>
Labels:				name=celery
Status:				Running
Replication Controllers:	celery-controller (1/1 replicas created)
Conditions:
  Kind		Status
  Ready 	None
Events:
FirstSeen			LastSeen			Count	From			SubobjectPath				Reason		Message
Mon, 02 Mar 2015 15:29:13 +0000	Mon, 02 Mar 2015 15:29:13 +0000	1	{kubelet <IP_ADDRESS>}	implicitly required container POD	created		Created with docker id 9372d9000fbe752c7dd6b7ad0ade17d3fa3fddb4eac4b0b50e1815497ddb4405
Mon, 02 Mar 2015 15:29:13 +0000	Mon, 02 Mar 2015 15:29:13 +0000	1	{kubelet <IP_ADDRESS>}	implicitly required container POD	pulled		Successfully pulled image "kubernetes/pause:latest"
Mon, 02 Mar 2015 15:29:13 +0000	Mon, 02 Mar 2015 15:29:13 +0000	1	{kubelet <IP_ADDRESS>}	implicitly required container POD	started		Started with docker id 9372d9000fbe752c7dd6b7ad0ade17d3fa3fddb4eac4b0b50e1815497ddb4405
Mon, 02 Mar 2015 15:29:14 +0000	Mon, 02 Mar 2015 15:29:14 +0000	1	{scheduler }							scheduled	Successfully assigned celery-controller-gziey to <IP_ADDRESS>
Mon, 02 Mar 2015 15:32:33 +0000	Mon, 02 Mar 2015 15:32:33 +0000	1	{kubelet <IP_ADDRESS>}	spec.containers{celery}			pulled		Successfully pulled image "dockerfile/celery"
Mon, 02 Mar 2015 15:32:34 +0000	Mon, 02 Mar 2015 15:32:34 +0000	1	{kubelet <IP_ADDRESS>}	spec.containers{celery}			created		Created with docker id 0b1d152c91503aa19238fcc547302d37e1063f52c48b0d08d9010d23b95d501c
Mon, 02 Mar 2015 15:32:34 +0000	Mon, 02 Mar 2015 15:32:34 +0000	1	{kubelet <IP_ADDRESS>}	spec.containers{celery}			started		Started with docker id 0b1d152c91503aa19238fcc547302d37e1063f52c48b0d08d9010d23b95d501c
Mon, 02 Mar 2015 15:32:43 +0000	Mon, 02 Mar 2015 15:32:43 +0000	1	{kubelet <IP_ADDRESS>}	spec.containers{celery}			created		Created with docker id be84906e41489d5ee3abe20101652a5720a2de2cd469a99a98206231f3dd64e0
Mon, 02 Mar 2015 15:32:43 +0000	Mon, 02 Mar 2015 15:32:43 +0000	1	{kubelet <IP_ADDRESS>}	spec.containers{celery}			started		Started with docker id be84906e41489d5ee3abe20101652a5720a2de2cd469a99a98206231f3dd64e0
Mon, 02 Mar 2015 15:32:53 +0000	Mon, 02 Mar 2015 15:32:53 +0000	1	{kubelet <IP_ADDRESS>}	spec.containers{celery}			created		Created with docker id 6a027b874dc98450ff654529a92a1fa37ccbffb37163710685bbadeff182dd34
Mon, 02 Mar 2015 15:32:54 +0000	Mon, 02 Mar 2015 15:32:54 +0000	1	{kubelet <IP_ADDRESS>}	spec.containers{celery}			started		Started with docker id 6a027b874dc98450ff654529a92a1fa37ccbffb37163710685bbadeff182dd34
etc.
etc.
etc.

This started->created->started loop continues on and on.
I am using the latest version of the Kubernetes master (commit 6c5b3901).
Am I doing something wrong here? Is anyone else able to get a Celery image up and running?
Or have I perhaps found some kind of bug?

What are you trying to do with celery? That docker image appears to be designed to be a base image upon which other layers are expected to be added. The default command is "bash" -- it doesn't actually do anything on its own.

Yes, this was confusion on my part over the lifecycle of a docker container. I didn't realise that the container would be automatically rescheduled after the container stops without doing anything. This can be closed.


[doc-bug][video-embed]

fix embed code

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/concepts/deploy-and-publish/appsource/prepare/submission-checklist.md
99
5
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit b264a8d:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/concepts/deploy-and-publish/appsource/prepare/submission-checklist.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Feature Request: Support Horizontal Orientation of Mobile Devices

Hello,
I would like to put in for a feature request. It would be nice if the time picker popup dialog would play nice with horizontal orientations of the mobile devices.
I don't really have a suggestion on what to do to accomplish this. One idea might be: when the height is less than 406px to not use the Material dialog's action buttons and instead implement your own buttons off to the right of the clock. But only if the device is horizontal orientation (height less than 406px).
I was thinking trying to target to make it look good at a height of 290px or greater.
Here is a picture of my Pixel 2 in horizontal mode:

Sorry, I can't handle feature requests. I maintain the library in my spare time, so I can't afford developing extra stuff.

I can appreciate that. Thank you for the response!   :)
For those who stumble upon this, here is the workaround:
Add this to the global styles file.
// Fixes issue where the timepicker clock popup doesn't look right on small screens in the vertical position.
.cdk-overlay-pane.ngx-mat-timepicker-dialog {
  max-width: 100% !important;
}

// Fixes issue where the timepicker clock popup doesn't look right on small screens in the horizontal position
@media (max-height: 415px) {
  .ngx-mat-timepicker-dialog {

    .timepicker__main-content {
      transform: scale(.7,.7) translate(0px, -45px);
      height: 178px;
    }

    .timepicker-header {
      height: 42px;
    }
    ngx-mat-timepicker-dial {
      transform: scale(.7,.7);
    }

    .mat-dialog-actions {
      min-height: 36px;
      height: 36px;
    }

  }
}

Result on my Pixel 2:


IE offsetWidthfloat calculation

in IE, offsetWidth returns an integer, but table cell width returns a
float, this causes cell text to be split over two lines
see https://github.com/mkoryak/floatThead/issues/167

Thanks, since this only affects ie 9, can you check for it and only do this workaround if it is being used. you can check for it with if(ieVersion == 9)
also, since we don't need the height part of this code, can you get rid of it please?
Otherwise, this looks good. Thanks for the PR, I've not had much time this week and this is a huge help.

no, this is a problem for every IE version
Please use the code as you see fit. I am not planning any more pull requests...

ok, sounds good thanks. Before you take off, can you suggest how to build a test-case for this so that I can see it fix the problem?

The example below results in the second column being split over two lines (IE any version,firefox)
without the offsetWidth  modification
(chrome is ok)

(only when useAbsolutePositioning: false)

Reason
Time (h:m:s)
Time(%)

SE manual stop
11:28:43
30.9

this fix makes the testcase look worse:


[BUG] org.opensearch.search.pipeline.common.SearchPipelineCommonYamlTestSuiteIT.test {yaml=search_pipeline/50_script_processor/Test supported search source builder fields} is flaky

Describe the bug
org.opensearch.search.pipeline.common.SearchPipelineCommonYamlTestSuiteIT.test {yaml=search_pipeline/50_script_processor/Test supported search source builder fields} is flaky:
java.lang.AssertionError: Failure at [search_pipeline/50_script_processor:86]: _shards.total didn't match expected value:
                 _shards.total: expected Integer [1] but was Integer [2]

To Reproduce
./gradlew ':modules:search-pipeline-common:yamlRestTest' --tests "org.opensearch.search.pipeline.common.SearchPipelineCommonYamlTestSuiteIT.test {yaml=search_pipeline/50_script_processor/Test supported search source builder fields}" -Dtests.seed=AB70D7E6202B781B

See please:
https://build.ci.opensearch.org/job/gradle-check/16134/testReport/junit/org.opensearch.search.pipeline.common/SearchPipelineCommonYamlTestSuiteIT/test__yaml_search_pipeline_50_script_processor_Test_supported_search_source_builder_fields_/
Expected behavior
Test must pass reliably
Plugins
Standard
Screenshots
If applicable, add screenshots to help explain your problem.
Host/Environment (please complete the following information):

CI

Additional context
Observed on 2.x branch so far

@noCharger could you please take a look, seems to be caused by https://github.com/opensearch-project/OpenSearch/pull/7607

PS C:\Users\louis\louis-dev\OpenSearch-Louis> ./gradlew ':modules:search-pipeline-common:yamlRestTest' --tests "org.opensearch.search.pipeline.common.SearchPipelineCommonYamlTestSuiteIT.test {yaml=search_pipeline/50_script_processor/Test supported search source builder fields}"

> Configure project :plugins:repository-hdfs
hdfsFixture unsupported, please set HADOOP_HOME and put HADOOP_HOME\bin in PATH
=======================================
OpenSearch Build Hamster says Hello!
  Gradle Version        : 8.1.1
  OS Info               : Windows 11 10.0 (amd64)
  JDK Version           : 17 (Eclipse Temurin JDK)
  JAVA_HOME             : C:\Program Files\Eclipse Adoptium\jdk-<IP_ADDRESS>-hotspot
  Random Testing Seed   : 43F0DAF9B5108C5F
  In FIPS 140 mode      : false
=======================================

> Task :modules:search-pipeline-common:yamlRestTest
WARNING: A terminally deprecated method in java.lang.System has been called
WARNING: System::setSecurityManager has been called by org.opensearch.bootstrap.BootstrapForTesting (file:/C:/Users/louis/louis-dev/OpenSearch-Louis/test/framework/build/distributions/framework-3.0.0-SNAPSHOT.jar)
WARNING: Please consider reporting this to the maintainers of org.opensearch.bootstrap.BootstrapForTesting
WARNING: System::setSecurityManager will be removed in a future release
WARNING: A terminally deprecated method in java.lang.System has been called
WARNING: System::setSecurityManager has been called by org.gradle.api.internal.tasks.testing.worker.TestWorker (file:/C:/Users/louis/.gradle/wrapper/dists/gradle-8.1.1-all/bs1rrjki8hh9bujwbsqnxtuzr/gradle-8.1.1/lib/plugins/gradle-testing-base-8.1.1.jar)
WARNING: Please consider reporting this to the maintainers of org.gradle.api.internal.tasks.testing.worker.TestWorker
WARNING: System::setSecurityManager will be removed in a future release

BUILD SUCCESSFUL in 32s
172 actionable tasks: 4 executed, 168 up-to-date

Can't really reproduce it on my local. But to unblock gradle check, will remove these match conditions


Feature requests

Please allow a config option to change the GUI background, my server uses black glass panes not gray.
It would also be great if the rewards could be sorted numerically, not all over the place

Also it seems that the %adventurecalendar_timeuntil_next% placeholder returns the time until the 25th (last) gift, not day 1

Also it seems that the %adventurecalendar_timeuntil_next% placeholder returns the time until the 25th (last) gift, not day 1

This may be because we're still in November, so it's using today (the 24th) as the current day.

Both of these have now been implemented as options.

Hey there, I'm trying to add a command to acal but it's not parsing {player} properly, such as /eco give {player} 100
maybe I'm doing it wrong?

nvm, saw in another part of the config that it's %player_name%


Shortcodes

Ability to use shortcodes to display various content.
Currently no planned release.

a couple new shortcodes will be added in 3.42.
grid shortcode comes with 2 shortcodes.
[ai:grid size=4]
and endgrid is the html needed to close the grid. In a way it works a bit like a bbcode. The grid shortcode allows for all 12 twitter bootstrap grid sizes. Ranging from 1 to 12. You can also optionally add on class= to define your own class to each grid item. This is so you can customize the css style of grid elements.
The next shortcode coming is page_parallax. The name is a bit misleading. It doesn't really give you a parallax code. But it does allow you to insert a page into another page. But it comes with html markup that would allow you to customize the background color, or image. Text color etc. So it is a pretty useful shortcode.
for example the default template in sharpedge creates the following html within the content area.

Content Here

What this shortcode does is it will end the divs early by adding closing divs. Then creating a new set of opening divs. This allows you to take full advantage of the full width of your screen. because it creates the following markup.

This new  tag will by default be the full page width. So you can attach a custom name=my_custom_css_id to the shortcode so you can customize that section of the design.
[ai:page_parallax id=5 name=custom_id]
This will load the page that has the id number of 5, and apply the id #custom_id to your
It is likely I will include a stripped down page shortcode that will only output the text. And not output other html markup. For more simple content integrations. for example the standard page shortcode would work as follows.
[ai:page id=5]
this would ouput
The contents of the page requests. No html or css. Unless you page has this markup in it.

2 new shortcodes
Add a navigation menu using the new navigation system - As of 3.42.50
[ai:nav id=menu_id|theme=navbar-default|pos=navbar-fixed-top|type=bar,pills,tabs]
new hide email shortcode has been added - As of 3.42.60
[ai:hide_email name=info|domain=domain.com|type=text,link]
This embeds javascript to display a mailto link or it can also display just text. This a email harvesting counter-measure. I have also encrypted emails within the source code on the contact form. So this shortcode goes with this update.


ktlint should not fall over if ij_java_packages_to_use_import_on_demand or ij_kotlin_packages_to_use_import_on_demand is blank in .editorConfig

Expected Behavior
Should be alllowed to set these to blank if we don't want any packages to use import on demand
Observed Behavior
ktlint throws these exceptions:
Exception in thread "main" java.util.concurrent.ExecutionException: org.ec4j.core.parser.ParseException: path:/Users/keny/work/samurai/.editorconfig:18:45: Property 'ij_kotlin_packages_to_use_import_on_demand' has no value
        at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
        at com.pinterest.ktlint.internal.KtlintCommandLine.parallel(KtlintCommandLine.kt:578)
        at com.pinterest.ktlint.internal.KtlintCommandLine.parallel$default(KtlintCommandLine.kt:536)
        at com.pinterest.ktlint.internal.KtlintCommandLine.lintFiles(KtlintCommandLine.kt:283)
        at com.pinterest.ktlint.internal.KtlintCommandLine.run(KtlintCommandLine.kt:235)
        at com.pinterest.ktlint.Main.main(Main.kt:31)
Caused by: org.ec4j.core.parser.ParseException: path:/Users/keny/work/samurai/.editorconfig:18:45: Property 'ij_kotlin_packages_to_use_import_on_demand' has no value

and
Exception in thread "main" java.util.concurrent.ExecutionException: org.ec4j.core.parser.ParseException: path:/Users/keny/work/samurai/.editorconfig:13:43: Property 'ij_java_packages_to_use_import_on_demand' has no value
        at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
        at com.pinterest.ktlint.internal.KtlintCommandLine.parallel(KtlintCommandLine.kt:578)
        at com.pinterest.ktlint.internal.KtlintCommandLine.parallel$default(KtlintCommandLine.kt:536)
        at com.pinterest.ktlint.internal.KtlintCommandLine.lintFiles(KtlintCommandLine.kt:283)
        at com.pinterest.ktlint.internal.KtlintCommandLine.run(KtlintCommandLine.kt:235)
        at com.pinterest.ktlint.Main.main(Main.kt:31)
Caused by: org.ec4j.core.parser.ParseException: path:/Users/keny/work/samurai/.editorconfig:13:43: Property 'ij_java_packages_to_use_import_on_demand' has no value

This also causes it to write a 0 length XML report.
Steps to Reproduce
Add these properties to your .editorConfig with no value.
Run ktlint
Your Environment

Version of ktlint used: 0.46.1
Relevant parts of the .editorconfig settings
ij_kotlin_packages_to_use_import_on_demand=
ij_java_packages_to_use_import_on_demand=
Name and version (or code for custom task) of integration used (Gradle plugin, Maven plugin, command line, custom Gradle task):

tasks.register("ktlint", JavaExec) {
    group = "verification"
    description = "Check Kotlin code style."
    classpath = configurations.ktlint
    main = "com.pinterest.ktlint.Main"
    args "src/**/*.kt", "--reporter=plain", "--reporter=checkstyle,output=${buildDir}/ktlint.xml", "--android"
    ignoreExitValue = true
    // see https://github.com/pinterest/ktlint#usage for more
}

Version of Gradle used (if applicable): 8.1.1
Operating System and version: OSX Ventura

Please consult documentation: https://pinterest.github.io/ktlint/0.49.1/rules/standard/#no-wildcard-imports and use unset instead of a blank value.

Thanks Paul...should have searched the docs :-(
That seems like an odd thing (i.e., less intuitive) to do instead of using a blank value...or using a blank value as an alternative to "unset".  Any context on why it uses "unset"?

hmmm..because it's part of the .editorConfig spec?
https://editorconfig.org/

Though it says:
"For any property, a value of unset is to remove the effect of that property, even if it has been set before. For example, add indent_size = unset to undefine indent_size property (and use editor default)."
which isn't necessarily "no values"...just clear it.

The reason behind this behavior is some compatibility reason with the default IntelliJ IDEA formatter. Inside the IntelliJ IDEA formatter this property is defined to have a certain value whenever it is not set. To mimic that behavior, the property is defined in Ktlint with an explicit default value. By using. unset the default value set by Ktlint is undone and it also means that IntelliJ IDEA formatter works as expected.

Thanks for the additional context :-)


Android gravity vector Godot 2.1

This PR adds support for reading the gravity vector sensor. This is a vector the OS calculates from the accelerometer sensor with some nice math to filter out any user vibration/movement. It is very useful in getting a more accurate "down" vector for stabilizing device orientation or for getting an approximate user movement by subtracting this vector from the accelerometer output.
Mainly it's added to create parity with the core motion changes we did for iOS for issue #7503
In theory the test project I did for coremotion should work to test this as well:
https://github.com/BastiaanOlij/TestCoreMotion
Due to lacking a suitable android device that actually has these sensors I've not been able to actually test this so I'm hoping someone with device that has all 3 sensors could give this a go?
And since @akien-mga refactored half the 2.1 branch this probably works in Godot 3 too.

I don't know if it's me, and it's probably just on my end, but I was unable to build due to the following error:

godot-2.1-build/platform/android/java/src/org/godotengine/godot/Godot.java:698: cannot find symbol
symbol  : method gravity(float,float,float)
location: class org.godotengine.godot.GodotLib
GodotLib.gravity(x,y,z);

A shame because this looks great, very exciting. I hope someone else can test.

I had to patch the following in order to compile:

platform/android/java/src/org/godotengine/godot/GodotLib.java
platform/android/java_glue.h
platform/android/java_glue.cpp

Then when I ran TestCoreMotion on an Android device (which has an accelerometer and magnetometer but no gyroscope) the vertical orientation seemed flipped and no gravity information was retrieved (0.00, 0.00, 0.00). I was still able to (sort of) look around. I might see if I can fix this later. Who knows? But probably not.

godot-2.1-patch.zip

Well that means there is still something missing in passing the gravity vector through, or it simply isn't supported. I didn't change anything in the gyro code so the missing gyro data suggest that  you either do not have a gyro or that I managed to break something :)
Without a gyro the OS possibly lacks the data to extract the gravity vector from the accelerometer, but if you're sure you have a gyro then I wonder what went wrong..
Also the orientation code is really based on having a gyro and stabilizing it. The code you have in your project which combines the accelerometer and magnetometer using a cross product is much better suited. I'm either going to need to build a check in that if there is no gyro data it takes that path, or find a good way to combine the two approaches :)
I really need to get my hands on a proper android phone, doing these changes blind is not doing anyone alot of favours :) Thanks for trying it out, I'll have a closer look at your changes, I had completely missed java_glue :).

@fluffrabbit I think I've added all your changes, they looked sound. I don't know why I didn't get errors while compiling or maybe it won't show up till you actually try to add it to the device?
@akien-mga Also changed some spaces to tab ;)

@fluffrabbit I'm mixing up projects, it was Jasons code that I was looking at, he had a really nice bit of code for combining accelerometer and magnetometer data:) so many different people working on solving this puzzle, pretty cool really :)

Without a gyro the OS possibly lacks the data to extract the gravity vector from the accelerometer, but if you're sure you have a gyro then I wonder what went wrong..

Android is supposed to know what planet you are on and calculate a gravity vector in m/s^2. How it would know what planet one is on is questionable (I guess it assumes Earth or something, kind of geocentric if you ask me but w/e) but supposedly that factors in somehow.

you either do not have a gyro or that I managed to break something
accelerometer and magnetometer but no gyroscope

The code you have in your project which combines the accelerometer and magnetometer using a cross product is much better suited. I'm either going to need to build a check in that if there is no gyro data it takes that path, or find a good way to combine the two approaches :)

I think your code is better because stability is inherently better when factoring in gravity, with or without a gyroscope. When you move the phone to look around, the accelerometer vector momentarily gets skewed because it is measuring, what else, acceleration. So in my code the view sort of "swings" exaggeratedly. The actual math involved to derive a stabilized gravity vector is a mystery to me, and maybe it does depend on the gyroscope, but unfortunately the material is really dense and heady so I don't know.

I had completely missed java_glue

It helps to use Github's search feature in the Godot codebase. I just searched for all instances of things like "accelerometer" and "gyroscope".
As for purchasing an Android device with a gyroscope, you'd be looking at paying quite a bit. Walgreens has $25 starter phones which should cover all your needs.

it was Jasons code that I was looking at, he had a really nice bit of code for combining accelerometer and magnetometer data

I'd love to see it.

@fluffrabbit btw, looking at your screenshot, the accelerometer data seems out of scale or at least not normalised (it will be normalised in code) and down seems to be pointed to positive Z, instead of negative Y as it would be on iOS. Confusing:)

@BastiaanOlij Accelerometer on Android is measured in meters per second ^ 2, hence 9.8. If normalized is normal, then crunchitize me cap'n

@fluffrabbit , no idea what is normal, I only have my iPhone to go on. It doesn't really matter what the scale is as long as you know what it is :)
I'm more concerned about the orientation, friend of mine who has an Android phone with a Gyro has already let me know the axis are reversed on the gyro data.
Now with the iOS implementation I took care to align all the axis with the axis inside of Godot because I needed to adjust them anyway with Apple changing the orientation to compensate for your screen orientation, while it looks like on Android we get the figures as they are...

on Android we get the figures as they are

That was the information I wanted to know. There is code in Godot which changes the orientation of the accelerometer on Android based on the orientation of the screen. I also copied and pasted that code to get_magnetometer when I implemented that on Android. Oh boy, here lurk strange bugs.

@fluffrabbit , I'll have a closer look at the code when I'm home tonight. I might be wrong, I couldn't find code that did anything too strange but I've only started looking at the android code a day or so ago so I'm not as familiar with it yet.

I couldn't find code that did anything too strange

Somebody might or might not have done a rewrite in the past few months, I can't clearly remember. But it must still re-orient the screen on the accelerometer side, not sure about magnetometer. I'd swear there was some code to do that at the time that I implemented get_magnetometer on Android.

I don't know what has changed. Gremlins in the code. But now I am getting a gravity vector on Android with TestCoreMotion. Holding the phone in landscape orientation straight out in front of me, the gravity vector is about 0.4, -9.5, 0.2. Resting flat on the floor, it is about 0.1, 0.2, 9.9. Magnetometer works correctly. Accelerometer seems to be inverted on both axis.


Page attribute doesn't work

There is a issue with page attribute, whatever you do is overwritten to page one when the directive is initialized, you can see it in the example of the project.

Hi @jcampalo, thanks, you have right!
I try to patch today.


fix: ramp slider (#829)

Adding back ramp-slider and removing color-slider.
Description
Addresses issue #829

added back ramp-slider
removed color-slider from slider page that is now it's own component under /docs/colorslider.html

How and where has this been tested?
URL: http://localhost:3000/docs/slider.html
Chrome Version 85.0.4183.102 (Official Build) (64-bit) on MacOS
Screenshots

To-do list

[x] If my change impacts other components, I have tested to make sure they don't break.
[x] If my change impacts documentation, I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.

[x] This pull request is ready to merge.

Good points @lazd .
I added a migration guide. Unfortunately your suggested commit message is not working because of the commit rules with uppercases:
$ g commit -m "BREAKING CHANGE: Slider color variant removed, used Color Slider component"
husky > commit-msg (node v12.16.2)
⧗   input: BREAKING CHANGE: Slider color variant removed, used Color Slider component
✖   header must not be longer than 72 characters, current length is 74 [header-max-length]
✖   subject may not be empty [subject-empty]
✖   type may not be empty [type-empty]

✖   found 3 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint

I used instead g commit -m "fix: breaking change: slider color variant moved to color slider. (#850)"
I also added the breaking-change label.

The disabled color seems to have changed for ramp slider. Is that a result of the tokens changing?


Tests

What would you like to be added:
A testing system.
I know we all hate this, but if we will be supporting CVE's and other vulnerabilities opened up we must have tests.
There are a few things we are interested in testing, and proving.

Vulnerabilities against falco
Vulnerabilities against kubernetes
Vulnerabilities against linux

Why is this needed:
So we can prove, concretely, that our tool can not only audit itself, but also audit the environment we wan't to run in.
We furthermore need an easy way to add future vulnerabilities into our testing system with little overhead (5 minutes or less to prove, N hours to code)

Somewhat related to #691 (unit tests).

This is the umbrella issue about testing: https://github.com/falcosecurity/falco/issues/704


feat(all): Material 3 / Material You

Feature Description
Add Material 3 support as Material 2 is considered legacy. The Material Web team is doing the same right now.

Duplicate of https://github.com/angular/components/issues/22738.


A way to edit permission values of files in context menus

You should be able to right-click any file in the project's tree view, and then click on a permissions button, opening up a menu to change the read, write, and execute permissions for owner, group, and public. Instead of using a simple UI, you should also be able to directly enter any numeric permission value.
Here is an example from FileZilla.

That's definitely a good idea for a feature to save time!
If you've got experience with Javascript, you should hack it together and submit a pull request. Atom is essentially a giant web app powered by node. Getting this feature done with the Atom/Remote-FTP code is a mountain not too high to climb!

i'll look into it later this week if i can find the time.

Though I now use WinSCP instead of FileZilla, which automatically reuploads my files when I save them (removing my need to use this), I think other people would still find it helpful for this feature to be implemented.

I started develop it. https://github.com/icetee/remote-ftp/commit/413b12dbddfc04cec197473a1872688dfd085a4f

Next version will be included. Thanks for the idea.

Awesome!


[CLOSED] Fix broken links to finders in README

 Issue by rgarner
Wednesday 02 March 2016 at 15:04 GMT
Originally opened as https://github.com/alphagov/specialist-publisher/pull/668

And some titles, too

rgarner included the following code: https://github.com/alphagov/specialist-publisher/pull/668/commits

 Comment by issyl0
Wednesday 02 March 2016 at 15:07 GMT

Oh, hello! :star:

 Comment by rgarner
Wednesday 02 March 2016 at 15:08 GMT

Hai :small_orange_diamond:

 Comment by elliotcm
Wednesday 02 March 2016 at 15:27 GMT

@rgarner were those URLs never live?  There's no redirects in place from the old ones.

 Comment by jamiecobbett
Wednesday 02 March 2016 at 15:25 GMT

:wave:

 Comment by rgarner
Wednesday 02 March 2016 at 15:48 GMT

@elliotcm don't think so - same sort of typos in them, looks like they were transcribed by hand and never clicked*
*speculation

 Comment by elliotcm
Wednesday 02 March 2016 at 15:34 GMT

Github won't even let me do a manual merge while that status check is pending :/


Implement Accessor and Schema API [DO NOT MERGE]

Pull request for implementing the Schema and Accessor API to which all related PRs will be merged.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: tamargrey:x: thehomebrewnerdYou have signed the CLA already but the status is still pending? Let us recheck it.


Custom cell templates

As the title suggests, it would be possible to put whatever content inside a cell. It is related to the customColumnOrder option if there was an option to add or define columns then it would be possible to create an "Action" column with buttons, or a checkbox column to act upon rows, select them, etc...
mat-table component from material.angular solves it as follows:

  <ng-container matColumnDef="actions"> // actions represent column name

          <button (click)="doSomething(element.id)">DELETE</button>

      ...
  </ng-container>
  ...

I tried to inject a button in a cell also in order to create an "Edit/Delete" column but unfortunately it did not render as an html element. Is this somehow possible? Is this planned for the future?

Hi @Vijeinath, this is currently not supported but it definitely something that I've been thinking about. It should be relatively straightforward to implement, so any contribution towards it is welcome :)

I also would really like this feature. I think I'll look into creating a PR.

you can push new item into displayedColumns array under ngOnInit method.

          {{options.capitalisedHeader ? (column | translate) : column | translate}}

View

                  {{element.isExpanded ? 'keyboard_arrow_down' : 'keyboard_arrow_right'}}

{{element.value[column]}}

              {{element.value[column]}}

  </ng-container>


Fully resolve DNS-SD discovered .local hostnames using Avahi instead of NSS

Let's say we have (both on the server and the client):

an IPv6-only Avahi setup
FreeBSD (where nss_mdns can't return multiple address families like on modern Linux which has the addrtuple stuff)

and we're trying to auto configure a printer with DNS-SD.
The dnssd backend returns a URL that still involves the .local hostname:
I [25/Mar/2020:14:38:51 +0300] [Job 3] Started backend /usr/local/libexec/cups/backend/dnssd (PID 25496)
D [25/Mar/2020:14:38:51 +0300] [Job 3] Resolving \"HP LaserJet P1102w @ solitude._ipp._tcp.local\"...
D [25/Mar/2020:14:38:51 +0300] [Job 3] STATE: +connecting-to-device
D [25/Mar/2020:14:38:51 +0300] [Job 3] Resolving \"HP LaserJet P1102w @ solitude\", regtype=\"_ipp._tcp\", domain=\"local.\"...
D [25/Mar/2020:14:38:51 +0300] [Job 3] Resolved as \"ipp://solitude.local:631/printers/HP_LaserJet_Professional_P_1102w\"...
D [25/Mar/2020:14:38:51 +0300] [Job 3] STATE: -connecting-to-device,offline-report

and then tries to look it up:
D [25/Mar/2020:14:38:51 +0300] [Job 3] Executing backend \"/usr/local/libexec/cups/backend/ipp\"...
D [25/Mar/2020:14:38:51 +0300] [Job 3] STATE: +connecting-to-device
D [25/Mar/2020:14:38:51 +0300] [Job 3] Looking up \"solitude.local\"...
D [25/Mar/2020:14:38:56 +0300] [Job 3] Unable to locate printer \"solitude.local\".

from a quick look at the code, the function it calls does involve Avahi for URLs with more stuff.
But the resolution of a plain something.local hostname fails here, because it goes through getaddrinfo → nss_mdns, which requests IPv4 from Avahi:
simple-protocol.c: Got RESOLVE-HOSTNAME-IPV4 request for 'solitude.local'.

and, well, I only have IPv6 enabled in Avahi. oops.
I do have a patch for nss_mdns that falls back to the other family in that case, I can build an IPv6-only nss_mdns, but like..
CUPS uses Avahi directly, so maybe it shouldn't require a working nss_mdns type thing at all?

Please report this to the OpenPrinting CUPS project.
Current CUPS should be requesting both IPv4 and IPv6.


Swap event processor

Codecov Report

Merging #640 (9fdadda) into main (a7827d5) will decrease coverage by 0.1%.
The diff coverage is 0.0%.

:exclamation: Current head 9fdadda differs from pull request most recent head ee42143. Consider uploading reports for the commit ee42143 to get more accurate results

@@           Coverage Diff           @@
##            main    #640     +/-   ##
=======================================
- Coverage    9.4%    9.2%   -0.1%
=======================================
  Files         32      34      +2
  Lines      10474   10616    +142
=======================================
  Hits         980     980
- Misses      9494    9636    +142

Impacted Files
Coverage Δ

src/automata.rs
0.0% <0.0%> (ø)

src/lib.rs
4.9% <ø> (ø)

src/service.rs
6.6% <ø> (-0.1%)
:arrow_down:

src/swapd/automata/mod.rs
0.0% <0.0%> (ø)

src/swapd/runtime.rs
0.0% <0.0%> (ø)

src/swapd/swap_state.rs
0.0% <0.0%> (ø)

src/swapd/syncer_client.rs
0.0% <0.0%> (ø)

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


Enable move any tab page

So far until 1.8.3 if is opened some files - where each one is available in its own tab page - is not possible move a specific tab page to a specific position.
For example is exists the following files opened and sorted as:
aaa bbb ddd ccc

is not possible either select ddd and move it to the right or select ccc and move it to the left. Currently I must close ddd and open again to see it as the latest tab page opened.

Should be closed with https://github.com/asciidocfx/AsciidocFX/releases/tag/v1.8.5 ?

Yes, it should also be available

Yes. I've confirmed it works. Huge Thanks for the support.


Typescript declarations

Hi! I'm new to github and open source collaboration in general - sorry if this is the wrong place to ask.
Recently i got tired of waiting for usable declarations to appear (not having all "any") and started to work on them myself (using "rewrite-to typescript" approach based on https://github.com/cmichaelgraham/aurelia-ts-port). I'd like to contribute some of my results, if it is appropriate. Where do I start? Just make a pull request?
In the case of this particular module, the ways I see to improve the definitions:

Use Dictionary<T> instead of Object:

interface Dictionary<T> {  [key:string]:T; }

generateQueryString(params:Dictionary<string|string[]>):string
parseQueryString(queryString:string):Dictionary<string|string[]|boolean>

Use generic type for route handler:

interface HandlerEntry<T extends RouteHandler> {
  handler:T;
  names:string[];
}

export class RouteRecognizer<T extends RouteHandler>

recognize(path:string):RecognizeResults<T>

This would allow to avoid casting of results to handler class. At least in theory - since in router it is used with union-typed handler, and casting is needed anyway.

Return type of recognize method: it is not RecognizedRoute[], it is RecognizeResults - which does have some properties of an array, but not the one. Also it has additional queryParams property which is actually used in router.

  recognize(path:string):RecognizeResults<T>

class RecognizeResults<T extends RouteHandler> implements ArrayLike<RecognizedRoute<T>> {
  splice: { (start: number): RecognizedRoute<T>[]; (start: number, deleteCount: number, ...items: RecognizedRoute<T>[]): RecognizedRoute<T>[] };
  slice: { (start?: number, end?: number): RecognizedRoute<T>[] };
  push: { (...items: RecognizedRoute<T>[]): number };
  [i: number]: RecognizedRoute<T>;
  length: number;
  queryParams: Dictionary<string|string[]|boolean>;
  constructor(queryParams:Object) {
    this.splice = Array.prototype.splice;
    this.slice = Array.prototype.slice;
    this.push = Array.prototype.push;
    this.length = 0;
    this.queryParams = queryParams || {};
  }
}

Return type of add - it is not pure State, it is augmented with additional properies. They might be irrelevant internal things, but the only use of return value of this method I found so far refers to one of these properties only, not to the State methods.

interface RouteState<T extends RouteHandler> {
  get(charSpec: CharSpec): RouteState<T>;
  put(charSpec: CharSpec): RouteState<T>;
  match(ch: string): RouteState<T>[];
  regex: RegExp;
  handlers: HandlerEntry<T>[];
  types: {
    statics: number;
    dynamics: number;
    stars: number;
  };
}

  add(route:ConfigurableRoute|ConfigurableRoute[]):RouteState<T>

All libraries now have official d.ts files. If you would like to contribute, you can send PRs directly against the source.


Programmatically load snippets

It would be great to have a way to load snippets from a behaviours file – e.g. like (:load-snippets "snip-folder")
Thanks for the great plugin by the way!

Covered in #2 !


add treemap

add treemap support for plotly.js as florian needs this implementation for their flourish use-case


Handle insertions into implicit nested structs gracefully

This case can happen at paths that aren't the root too.

Pull Request Test Coverage Report for Build 729

2 of 3 (66.67%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+1.2%) to 65.878%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/Clapi/Valuespace.hs
2
3
66.67%

Totals

Change from base Build 725:
1.2%

Covered Lines:
1365

Relevant Lines:
2072

💛  - Coveralls


added return statement in send methods

the send and sendMultiple methods of Mailer class should be return a value

I fixed the composer.json file pls consider to merge