feat: Liveness analysis for constants

Bytecode size change:

Changes in bytecode size

contracts: Transpiling  AppSubscription::assert_block_number with size 365 => 386
contracts: Transpiling  AppSubscription::assert_not_expired with size 358 => 379
contracts: Transpiling  AppSubscription::constructor with size 1999 => 1942
contracts: Transpiling  Auth::constructor with size 1575 => 1518
contracts: Transpiling  Auth::get_authorized with size 254 => 276
contracts: Transpiling  Auth::get_authorized_delay with size 318 => 334
contracts: Transpiling  Auth::get_scheduled_authorized with size 247 => 269
contracts: Transpiling  Auth::set_authorized with size 1447 => 1400
contracts: Transpiling  Auth::set_authorized_delay with size 1370 => 1320
contracts: Transpiling  AuthRegistry::_set_authorized with size 468 => 496
contracts: Transpiling  AuthRegistry::consume with size 1908 => 1864
contracts: Transpiling  AuthRegistry::is_consumable with size 471 => 497
contracts: Transpiling  AuthRegistry::is_reject_all with size 319 => 345
contracts: Transpiling  AuthRegistry::set_authorized with size 338 => 358
contracts: Transpiling  AuthRegistry::set_reject_all with size 186 => 206
contracts: Transpiling  AuthWitTest::consume_public with size 1332 => 1280
contracts: Transpiling  AvmInitializerTest::constructor with size 1526 => 1470
contracts: Transpiling  AvmInitializerTest::read_storage_immutable with size 91 => 102
contracts: Transpiling  AvmTest::add_args_return with size 15 => 15
contracts: Transpiling  AvmTest::add_storage_map with size 369 => 389
contracts: Transpiling  AvmTest::add_u128 with size 117 => 132
contracts: Transpiling  AvmTest::assert_nullifier_exists with size 93 => 109
contracts: Transpiling  AvmTest::assert_same with size 87 => 99
contracts: Transpiling  AvmTest::assert_timestamp with size 92 => 105
contracts: Transpiling  AvmTest::assertion_failure with size 97 => 113
contracts: Transpiling  AvmTest::check_selector with size 1179 => 1128
contracts: Transpiling  AvmTest::create_different_nullifier_in_nested_call with size 190 => 193
contracts: Transpiling  AvmTest::create_same_nullifier_in_nested_call with size 188 => 191
contracts: Transpiling  AvmTest::debug_logging with size 205 => 236
contracts: Transpiling  AvmTest::elliptic_curve_add_and_double with size 80 => 80
contracts: Transpiling  AvmTest::emit_nullifier_and_check with size 170 => 191
contracts: Transpiling  AvmTest::emit_unencrypted_log with size 502 => 508
contracts: Transpiling  AvmTest::get_address with size 13 => 13
contracts: Transpiling  AvmTest::get_args_hash with size 18 => 18
contracts: Transpiling  AvmTest::get_block_number with size 13 => 13
contracts: Transpiling  AvmTest::get_chain_id with size 13 => 13
contracts: Transpiling  AvmTest::get_da_gas_left with size 13 => 13
contracts: Transpiling  AvmTest::get_fee_per_da_gas with size 13 => 13
contracts: Transpiling  AvmTest::get_fee_per_l2_gas with size 13 => 13
contracts: Transpiling  AvmTest::get_function_selector with size 13 => 13
contracts: Transpiling  AvmTest::get_l2_gas_left with size 13 => 13
contracts: Transpiling  AvmTest::get_sender with size 13 => 13
contracts: Transpiling  AvmTest::get_storage_address with size 13 => 13
contracts: Transpiling  AvmTest::get_timestamp with size 13 => 13
contracts: Transpiling  AvmTest::get_transaction_fee with size 13 => 13
contracts: Transpiling  AvmTest::get_version with size 13 => 13
contracts: Transpiling  AvmTest::keccak_f1600 with size 61 => 61
contracts: Transpiling  AvmTest::keccak_hash with size 998 => 939
contracts: Transpiling  AvmTest::l1_to_l2_msg_exists with size 17 => 17
contracts: Transpiling  AvmTest::modulo2 with size 16 => 16
contracts: Transpiling  AvmTest::nested_call_to_add with size 275 => 273
contracts: Transpiling  AvmTest::nested_call_to_add_with_gas with size 268 => 273
contracts: Transpiling  AvmTest::nested_static_call_to_add with size 289 => 287
contracts: Transpiling  AvmTest::nested_static_call_to_set_storage with size 201 => 204
contracts: Transpiling  AvmTest::new_note_hash with size 11 => 11
contracts: Transpiling  AvmTest::new_nullifier with size 11 => 11
contracts: Transpiling  AvmTest::note_hash_exists with size 17 => 17
contracts: Transpiling  AvmTest::nullifier_collision with size 12 => 12
contracts: Transpiling  AvmTest::nullifier_exists with size 17 => 17
contracts: Transpiling  AvmTest::pedersen_commit with size 81 => 78
contracts: Transpiling  AvmTest::pedersen_hash with size 19 => 19
contracts: Transpiling  AvmTest::pedersen_hash_with_index with size 19 => 19
contracts: Transpiling  AvmTest::poseidon2_hash with size 959 => 918
contracts: Transpiling  AvmTest::read_storage_list with size 54 => 54
contracts: Transpiling  AvmTest::read_storage_map with size 194 => 214
contracts: Transpiling  AvmTest::read_storage_single with size 25 => 25
contracts: Transpiling  AvmTest::send_l2_to_l1_msg with size 12 => 12
contracts: Transpiling  AvmTest::set_opcode_big_field with size 19 => 19
contracts: Transpiling  AvmTest::set_opcode_small_field with size 13 => 13
contracts: Transpiling  AvmTest::set_opcode_u32 with size 13 => 13
contracts: Transpiling  AvmTest::set_opcode_u64 with size 13 => 13
contracts: Transpiling  AvmTest::set_opcode_u8 with size 13 => 13
contracts: Transpiling  AvmTest::set_read_storage_single with size 33 => 33
contracts: Transpiling  AvmTest::set_storage_list with size 21 => 21
contracts: Transpiling  AvmTest::set_storage_map with size 199 => 219
contracts: Transpiling  AvmTest::set_storage_single with size 18 => 18
contracts: Transpiling  AvmTest::sha256_hash with size 46 => 46
contracts: Transpiling  AvmTest::test_get_contract_instance with size 300 => 308
contracts: Transpiling  AvmTest::test_get_contract_instance_raw with size 82 => 82
contracts: Transpiling  AvmTest::to_radix_le with size 136 => 137
contracts: Transpiling  AvmTest::u128_addition_overflow with size 440 => 367
contracts: Transpiling  AvmTest::u128_from_integer_overflow with size 140 => 139
contracts: Transpiling  AvmTest::variable_base_msm with size 92 => 90
contracts: Transpiling  Benchmarking::broadcast with size 196 => 216
contracts: Transpiling  Benchmarking::increment_balance with size 512 => 527
contracts: Transpiling  CardGame::on_card_played with size 1491 => 1485
contracts: Transpiling  CardGame::on_cards_claimed with size 1302 => 1292
contracts: Transpiling  CardGame::on_game_joined with size 1183 => 1197
contracts: Transpiling  CardGame::start_game with size 1567 => 1550
contracts: Transpiling  Child::pub_get_value with size 22 => 22
contracts: Transpiling  Child::pub_inc_value with size 42 => 42
contracts: Transpiling  Child::pub_inc_value_internal with size 198 => 216
contracts: Transpiling  Child::pub_set_value with size 29 => 29
contracts: Transpiling  Child::set_value_twice_with_nested_first with size 211 => 214
contracts: Transpiling  Child::set_value_twice_with_nested_last with size 203 => 206
contracts: Transpiling  Child::set_value_with_two_nested_calls with size 221 => 213
contracts: Transpiling  Claim::constructor with size 1645 => 1588
contracts: Transpiling  Crowdfunding::_check_deadline with size 411 => 434
contracts: Transpiling  Crowdfunding::_publish_donation_receipts with size 1456 => 1409
contracts: Transpiling  Crowdfunding::init with size 1765 => 1709
contracts: Transpiling  DelegatedOn::public_set_value with size 21 => 21
contracts: Transpiling  Delegator::public_delegate_set_value with size 210 => 227
contracts: Transpiling  DocsExample::get_shared_immutable_constrained_public with size 228 => 249
contracts: Transpiling  DocsExample::get_shared_immutable_constrained_public_indirect with size 160 => 165
contracts: Transpiling  DocsExample::get_shared_immutable_constrained_public_multiple with size 74 => 74
contracts: Transpiling  DocsExample::initialize_public_immutable with size 147 => 165
contracts: Transpiling  DocsExample::initialize_shared_immutable with size 147 => 165
contracts: Transpiling  DocsExample::spend_public_authwit with size 14 => 14
contracts: Transpiling  DocsExample::update_leader with size 161 => 178
contracts: Transpiling  EasyPrivateVoting::add_to_tally_public with size 602 => 633
contracts: Transpiling  EasyPrivateVoting::constructor with size 1546 => 1489
contracts: Transpiling  EasyPrivateVoting::end_vote with size 165 => 182
contracts: Transpiling  FeeJuice::_increase_public_balance with size 601 => 629
contracts: Transpiling  FeeJuice::balance_of_public with size 336 => 362
contracts: Transpiling  FeeJuice::check_balance with size 436 => 456
contracts: Transpiling  FeeJuice::claim_public with size 3283 => 3150
contracts: Transpiling  FeeJuice::mint_public with size 453 => 476
contracts: Transpiling  FeeJuice::set_portal with size 167 => 185
contracts: Transpiling  FPC::constructor with size 1527 => 1470
contracts: Transpiling  FPC::pay_refund with size 810 => 811
contracts: Transpiling  FPC::pay_refund_with_shielded_rebate with size 852 => 854
contracts: Transpiling  FPC::prepare_fee with size 579 => 579
contracts: Transpiling  ImportTest::pub_call_public_fn with size 187 => 190
contracts: Transpiling  InclusionProofs::constructor with size 1417 => 1357
contracts: Transpiling  InclusionProofs::push_nullifier_public with size 77 => 88
contracts: Transpiling  InclusionProofs::test_nullifier_inclusion_from_public with size 81 => 92
contracts: Transpiling  KeyRegistry::register_initial_keys with size 3448 => 3260
contracts: Transpiling  KeyRegistry::rotate_npk_m with size 3789 => 3588
contracts: Transpiling  Lending::_borrow with size 5366 => 6121
contracts: Transpiling  Lending::_deposit with size 473 => 496
contracts: Transpiling  Lending::_repay with size 3451 => 3908
contracts: Transpiling  Lending::_withdraw with size 5244 => 5858
contracts: Transpiling  Lending::borrow_public with size 385 => 382
contracts: Transpiling  Lending::deposit_public with size 773 => 739
contracts: Transpiling  Lending::get_asset with size 415 => 443
contracts: Transpiling  Lending::get_assets with size 244 => 263
contracts: Transpiling  Lending::get_position with size 2125 => 2297
contracts: Transpiling  Lending::init with size 364 => 378
contracts: Transpiling  Lending::repay_public with size 701 => 671
contracts: Transpiling  Lending::update_accumulator with size 4911 => 5617
contracts: Transpiling  Lending::withdraw_public with size 385 => 382
contracts: Transpiling  Parent::pub_entry_point with size 134 => 139
contracts: Transpiling  Parent::pub_entry_point_twice with size 236 => 227
contracts: Transpiling  Parent::public_nested_static_call with size 1306 => 1253
contracts: Transpiling  Parent::public_static_call with size 172 => 177
contracts: Transpiling  PriceFeed::get_price with size 318 => 345
contracts: Transpiling  PriceFeed::set_price with size 196 => 216
contracts: Transpiling  PrivateFPC::constructor with size 1530 => 1473
contracts: Transpiling  StatefulTest::get_public_value with size 322 => 350
contracts: Transpiling  StatefulTest::increment_public_value with size 251 => 274
contracts: Transpiling  StatefulTest::increment_public_value_no_init_check with size 197 => 217
contracts: Transpiling  StatefulTest::public_constructor with size 1647 => 1575
contracts: Transpiling  StaticChild::pub_get_value with size 159 => 178
contracts: Transpiling  StaticChild::pub_illegal_inc_value with size 195 => 214
contracts: Transpiling  StaticChild::pub_inc_value with size 42 => 42
contracts: Transpiling  StaticChild::pub_set_value with size 29 => 29
contracts: Transpiling  StaticParent::public_call with size 134 => 139
contracts: Transpiling  StaticParent::public_get_value_from_child with size 217 => 219
contracts: Transpiling  StaticParent::public_nested_static_call with size 372 => 366
contracts: Transpiling  StaticParent::public_static_call with size 172 => 177
contracts: Transpiling  Test::assert_public_global_vars with size 378 => 401
contracts: Transpiling  Test::consume_message_from_arbitrary_sender_public with size 2556 => 2438
contracts: Transpiling  Test::consume_mint_public_message with size 2826 => 2691
contracts: Transpiling  Test::create_l2_to_l1_message_arbitrary_recipient_public with size 12 => 12
contracts: Transpiling  Test::create_l2_to_l1_message_public with size 24 => 24
contracts: Transpiling  Test::dummy_public_call with size 155 => 173
contracts: Transpiling  Test::emit_nullifier_public with size 11 => 11
contracts: Transpiling  Test::emit_unencrypted with size 210 => 217
contracts: Transpiling  Test::is_time_equal with size 18 => 18
contracts: Transpiling  TestLog::emit_unencrypted_events with size 2459 => 2310
contracts: Transpiling  Token::_increase_public_balance with size 655 => 686
contracts: Transpiling  Token::_reduce_total_supply with size 356 => 380
contracts: Transpiling  Token::admin with size 200 => 218
contracts: Transpiling  Token::assert_minter_and_mint with size 576 => 607
contracts: Transpiling  Token::balance_of_public with size 390 => 419
contracts: Transpiling  Token::burn_public with size 2986 => 2867
contracts: Transpiling  Token::complete_refund with size 885 => 871
contracts: Transpiling  Token::constructor with size 2148 => 2086
contracts: Transpiling  Token::is_minter with size 365 => 393
contracts: Transpiling  Token::mint_private with size 721 => 738
contracts: Transpiling  Token::mint_public with size 849 => 877
contracts: Transpiling  Token::public_get_decimals with size 232 => 253
contracts: Transpiling  Token::public_get_name with size 221 => 242
contracts: Transpiling  Token::public_get_symbol with size 225 => 246
contracts: Transpiling  Token::set_admin with size 155 => 170
contracts: Transpiling  Token::set_minter with size 311 => 335
contracts: Transpiling  Token::shield with size 3149 => 3016
contracts: Transpiling  Token::total_supply with size 227 => 246
contracts: Transpiling  Token::transfer_public with size 3267 => 3148
contracts: Transpiling  TokenBlacklist::_increase_public_balance with size 655 => 686
contracts: Transpiling  TokenBlacklist::_reduce_total_supply with size 356 => 380
contracts: Transpiling  TokenBlacklist::balance_of_public with size 390 => 419
contracts: Transpiling  TokenBlacklist::burn_public with size 3274 => 3153
contracts: Transpiling  TokenBlacklist::constructor with size 2960 => 2826
contracts: Transpiling  TokenBlacklist::get_roles with size 431 => 459
contracts: Transpiling  TokenBlacklist::mint_private with size 784 => 796
contracts: Transpiling  TokenBlacklist::mint_public with size 1206 => 1226
contracts: Transpiling  TokenBlacklist::shield with size 3437 => 3301
contracts: Transpiling  TokenBlacklist::total_supply with size 227 => 246
contracts: Transpiling  TokenBlacklist::transfer_public with size 3856 => 3727
contracts: Transpiling  TokenBlacklist::update_roles with size 1991 => 1920
contracts: Transpiling  TokenBridge::_assert_token_is_same with size 347 => 371
contracts: Transpiling  TokenBridge::_call_mint_on_token with size 462 => 471
contracts: Transpiling  TokenBridge::claim_public with size 3151 => 2999
contracts: Transpiling  TokenBridge::constructor with size 1536 => 1479
contracts: Transpiling  TokenBridge::exit_to_l1_public with size 905 => 901
contracts: Transpiling  TokenBridge::get_portal_address_public with size 103 => 114
contracts: Transpiling  TokenBridge::get_token with size 208 => 228
contracts: Transpiling  Uniswap::_approve_bridge_and_exit_input_asset_to_L1 with size 7982 => 7453
contracts: Transpiling  Uniswap::_assert_token_is_same with size 629 => 648
contracts: Transpiling  Uniswap::constructor with size 1527 => 1470
contracts: Transpiling  Uniswap::swap_public with size 4641 => 4414

Benchmark results
Metrics with a significant change:

protocol_circuit_simulation_time_in_ms (private-kernel-tail-to-public): 1,297 (+94%)
avm_simulation_time_ms (Token:mint_public): 68.8 (+36%)
avm_simulation_time_ms (Token:assert_minter_and_mint): 41.1 (-87%)
avm_simulation_bytecode_size_in_bytes (FeeJuice:set_portal): 2,344 (-42%)
avm_simulation_bytecode_size_in_bytes (Token:constructor): 24,208 (-17%)

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Proof generation
Each column represents the number of threads used in proof generation.

Metric
1 threads
4 threads
16 threads
32 threads
64 threads

proof_construction_time_sha256_ms
5,749
1,560
711
758
776

proof_construction_time_sha256_30_ms
11,472
3,068 (-1%)
1,376 (-1%)
1,430
1,461

proof_construction_time_sha256_100_ms
44,131
11,828 (-1%)
5,413 (-1%)
5,389 (-3%)
5,792 (+2%)

proof_construction_time_poseidon_hash_ms
78.0
34.0
34.0
58.0 (+2%)
88.0

proof_construction_time_poseidon_hash_30_ms
1,530
422
202 (-1%)
220 (-4%)
270

proof_construction_time_poseidon_hash_100_ms
5,647
1,511
671
727 (-3%)
745

L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
4 txs
8 txs
16 txs

l1_rollup_calldata_size_in_bytes
4,356
7,876
14,884

l1_rollup_calldata_gas
50,268
92,962
178,180

l1_rollup_execution_gas
842,928
1,576,518
3,361,792

l2_block_processing_time_in_ms
257 (+1%)
454 (+3%)
818 (+2%)

l2_block_building_time_in_ms
10,943 (-4%)
21,403 (-4%)
42,645 (-4%)

l2_block_rollup_simulation_time_in_ms
10,943 (-4%)
21,402 (-4%)
42,645 (-4%)

l2_block_public_tx_process_time_in_ms
9,283 (-4%)
19,651 (-5%)
40,858 (-4%)

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 8 txs.

Metric
3 blocks
5 blocks

node_history_sync_time_in_ms
2,993 (-1%)
3,948 (+3%)

node_database_size_in_bytes
12,628,048
16,732,240

pxe_database_size_in_bytes
16,254
26,813

Circuits stats
Stats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.

Function
time_ms
bytecode_size_in_bytes

FeeJuice:_increase_public_balance
56.6 (-2%)
7,699 (-6%)

FeeJuice:set_portal
11.3 (-6%)
:warning: 2,344 (-42%)

Token:constructor
77.6 (-6%)
:warning: 24,208 (-17%)

FPC:constructor
54.5 (-3%)
16,751 (-12%)

FeeJuice:mint_public
39.7 (-3%)
5,847 (-10%)

Token:mint_public
:warning: 68.8 (+36%)
10,847 (-15%)

Token:assert_minter_and_mint
:warning: 41.1 (-87%)
7,462 (-12%)

AuthRegistry:set_authorized
47.5 (-3%)
4,371 (+4%)

FPC:prepare_fee
222 (-8%)
6,771

Token:transfer_public
19.3 (-15%)
36,727 (-8%)

FPC:pay_refund
51.2 (-23%)
9,549 (+2%)

Benchmarking:increment_balance
1,150 (-6%)
6,447 (-11%)

Token:_increase_public_balance
42.0 (+1%)
8,383 (-3%)

FPC:pay_refund_with_shielded_rebate
58.8 (-5%)
10,082 (+2%)

Public DB Access
Time to access various public DBs.

Function
time_ms

get-nullifier-index
0.156 (-1%)

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
16 leaves
64 leaves
128 leaves
256 leaves
512 leaves
1024 leaves

batch_insert_into_append_only_tree_16_depth_ms
2.22 (+1%)
3.92 (+1%)
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.8
31.7
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.115 (+1%)
0.110 (+1%)
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
11.4 (+2%)
17.6 (+2%)
30.7
59.9 (+3%)
113 (+1%)

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
95.9
159
287
543
1,055

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
0.109 (+2%)
0.102 (+1%)
0.0995
0.103 (+2%)
0.101 (+1%)

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
14.7 (+2%)
25.3
43.6
82.1 (+1%)
161

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
109
207
355
691
1,363

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
0.111 (+1%)
0.102 (-1%)
0.105
0.101
0.102 (-1%)

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
16.9 (+2%)
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
132
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
0.108 (+2%)
N/A
N/A
N/A
N/A

Miscellaneous
Transaction sizes based on how many contract classes are registered in the tx.

Metric
0 registered classes
1 registered classes

tx_size_in_bytes
64,779
668,997

Transaction size based on fee payment method
| Metric |  |
| - |  |


COMMUNITY: Add new bullet point to info screen (Addresses cwa-wishlist issue 660)

Description
This PR adds a new bullet point to the "Certificate Verification by Third Parties" screen.
Link to Jira

https://github.com/corona-warn-app/cwa-wishlist/issues/660

EXPOSUREAPP-13342

Screenshots

Internal Tracking ID: EXPOSUREAPP-13342

What is blocking the merge of this PR? Does the RKI has to approve this addition?

What is blocking the merge of this PR? I guess we're waiting for stakeholder approval at the moment, right?

Yes

Base branched changed to release/2.25.x from release/2.24.x.
Any update you could share with us @naveeddotio?

Base branched changed to release/2.25.x from release/2.24.x.
Any update you could share with us @naveeddotio?

@Ein-Tim Could you please update the text.
Also you need to update the test called testGIVEN_ViewModel_WHEN_getDataSource_THEN_SectionAndCellCountMatch() in CovPassCheckInformationViewModelTests. So all unit tests can pass and your PR can be merged.

@naveeddotio
I'm trying to update the test but my Xcode instantly hangs when opened, so I first have to figure out what is the problem there before I can actually fix the test. Sorry. 😅

@naveeddotio
I'm trying to update the test but my Xcode instantly hangs when opened, so I first have to figure out what is the problem there before I can actually fix the test. Sorry. 😅

@Ein-Tim Okay, we will wait. I was trying to checkout your branch but some how I wasn't.

@naveeddotio
I fear my skills are not developed enough for this, or Xcode doesn't want me to do this. :D
Independently of what test I run, I get the error
/Users/tim/Documents/GitHub/Ein-Tim/cwa-app-ios/src/xcode/ENA/HealthCertificateToolkit/Tests/HealthCertificateToolkitTests/CertificateAccess/DigitalCovidCertificateAccessTests.swift:7:18: Module 'HealthCertificateToolkit' was not compiled for testing

and thus I can't run any test (successful or not). Thus I also can't test when the test testGIVEN_ViewModel_WHEN_getDataSource_THEN_SectionAndCellCountMatch() would pass, as it always fails 😅
Maybe you or someone else from the team could quickly adopt the test? That would be awesome!

Can you please change 9 to 11? on line 19 and push? I cannot checkout your branch
XCTAssertEqual(dataSource.numberOfRows(section: 0), 11)


Add throttled events logging

Is this now in the build, and do I have to change and provisioner configuration to use it?

Ive just checked in a set of changes which mean throttled events are now part of the default calculation


Docker images of the cluster take too much space

When we start a cluster, we run a docker daemon on each node with their own image storage.
If we start applications, we'll have to pull the corresponding images on the nodes where they'll run. Images can be big and with our current approach that uses raw images and btrfs, we run out of space soon (see https://github.com/kinvolk/kube-spawn/issues/66). Increasing the size of the underlying btrfs volume is not enough if we start pulling a lot of images.
Sharing /var/lib/docker or its image storage doesn't work because docker assumes exclusive access to it and several docker daemons pulling to the same directory will definitely have problems (see https://github.com/jpetazzo/dind/issues/34 or https://github.com/moby/moby/issues/29764)
We could create a docker directory per node and bind-mount it so we at least don't run out of space in the btrfs volume. We'll have duplicated images if several nodes use the same but it might be an acceptable trade-off.

This was done in https://github.com/kinvolk/kube-spawn/issues/88. Closing.


Semi-Space

Hi,
For some reason, the Shift + Space combination doesn't insert a semi-space character, nor does Ctrl + Shift + 2. I doubt this is intentional.
Thanks for this project.

Yeah, turns out there are two versions of the same layout in my system. I guess one of them comes with xkb package. (Fedora 39) I'll close this issue, but if you know what's going on, please share. @MasterKia

Yeah, turns out there are two versions of the same layout in my system. I guess one of them comes with xkb package. (Fedora 39) I'll close this issue, but if you know what's going on, please share. @MasterKia

I PR'd the layout to xkb and it was added to xkb about a year ago. this repo is out of date, and also seems to be unmaintained.
I would recommend replacing your curremt copies of /usr/share/X11/xkb/symbols/ir and /usr/share/X11/xkb/rules/evdev.xml with ones from a clean install, so that the outdated layout from this repo gets removed, and only the one from xkb remains.

Could you share them?

here you go!
put evdev.xml in /usr/share/X11/xkb/rules
and ir in /usr/share/X11/xkb/symbols
these are from xkeyboard-config version 2.40 (which is currently the latest as I'm writing this).
just to be safe, make sure that you are also using version 2.40 before using these.

Yeah, turns out there are two versions of the same layout in my system. I guess one of them comes with xkb package. (Fedora 39) I'll close this issue, but if you know what's going on, please share. @MasterKia

I PR'd the layout to xkb and it was added to xkb about a year ago. the one that ships with xkb has the ZWNJ/semispace on AltGr (right alt) + Shift + 2.
this repo is out of date, and also seems to be unmaintained.
I would recommend replacing your curremt copies of /usr/share/X11/xkb/symbols/ir and /usr/share/X11/xkb/rules/evdev.xml with ones from a clean install, so that the outdated layout from this repo gets removed, and only the one from xkb remains.

Thanks, but I'm really used to the Shift + Space combination.
Is there a way to change AltGr + Shift + 2 to Shift + Space?

Thanks, but I'm really used to the Shift + Space combination.
Is there a way to change AltGr + Shift + 2 to Shift + Space?

you can manually edit the /usr/share/X11/xkb/symbols/ir file
at the bottom of the xkb_symbols "winkeys" layout, add this line before the closing curly bracket:
    key <SPCE> { [ space, U200C ] };

and reboot (I'm not sure if rebooting is required but whatever)
this will add the ZWNJ to the second level of the space key (i.e. when you're holding shift)
if at any point you update xkeyboard-config and it modifies the file (you would know if shift+space stopped working), just edit the file again.

How can I move all common characters (like @) from the AltGr bindings to Shift + {key}?

How can I move all common characters (like @) from the AltGr bindings to Shift + {key}? @cs127

if you're talking about the windows layout, @ is already on shift+2, what do you mean?

I think I finally know what's going on, if I have to take a guess, this is added in the new versions of xkb not yet reached Ubuntu 22.04 LTS. @MasterKia @cs127
All layouts added to /usr/share/X11/xkb/rules/*.conf, must also be added to the file /usr/share/X11/xkb/rules/base.lst.
I've also found a few not-so-pleasant-to-search-for tricks to force the the font Vazir on all Arabic glyphs across all apps. (The default Fedora font is awful) Would it be useful to write a few scripts to automatically apply these kind of things? Like awesome-persian-linux or somesuch.


Participants Process

@elysabethc5 - just to double check, some of the participant process!

Do you have to attend all sessions by the same trainer to complete the programme?

Can participants complete the programme over any time period and by going to any session as long as it's the session number (e.g. session 2) that is the next one they meant to complete? So all participants that attend a workshop that is session 1 don't then have to attend the exact same session 2 workshop as each other?

no , you could in theory attend sessions with different trainers . it would be less likley than being trianed by same trainer but sometimes trainers co-train togather so you might be on a session with differnt combination of trainers.
thats right . the course is sequentail so you have to do 1 before 2 and 2 before 3 . but you could just do session 1 and stop there, or session 2 and stop there. each group may be a different combination of delegates collected over time. so for example when i ran this training in stockport i would run 1 per month , delegates would opt into different sessions depending on thier availabilty . each group would be a different combination of delegates

Thanks @elysabethc5 . How often is co-training? Just wondering whether when a trainer 'creates a session' on the platform if they need to be able to add that there is a co-trainer.


Update demographics.py to handle data downloaded with forecasted values

Added code to filter by forecast model variant. This is necessary as described by issue #37 . If the user specifies a data range that includes data generated by a forecasted model (currently, this means any year >2021), the returned data will have multiple model variants for each observation. This needs to be filtered. We default to only using the "median" forecast model.
Added adjustments to the following functions: get_un_fert_data(), get_un_mort_data(), get_un_pop_data().
The adjustments:

create an additional parameter called variant that defaults to "4" (median)
Adds a description of this parameter
Filters the results to only include observations where the variable VariantId matches the parameter variant

@SeaCelo This is a nice addition.  However, with PR #51, we'll move over to using the demographics.py module from OG-Core.  Could you make this contribution to that project?

This PR is no longer necessary. Will make any contributions to the new demographics.py in OG-CORE. Closing.


SPN registration

When service starts it registers SPNs to DynamicsNAV/BCserver:port, but in document is written that SPN must be registered with instance name (BC160/BC150):
"For example, if BCSERVER is the name of the computer that is running Business Central Server and BC160 is the instance name, the actual command has the following format.
setspn -A BC150/BCSERVER.corp:7046 corp\bcdomainuser"

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

ID: d9871474-165d-c6bf-93f8-e11ea14c6596
Version Independent ID: a881c98f-927d-f458-7e42-e9380404da6f
Content: Configure Web Client Delegation - Business Central
Content Source: dev-itpro/deployment/configure-delegation-web-server.md
Service: dynamics365-business-central
GitHub Login: @jswymer
Microsoft Alias: solsen

Hello, thanks for the feedback!
There was an error in the paragraph that you mentioned, and it has been updated to this:
For example, if BCSERVER is the name of the computer that is running Business Central Server and BC160 is the instance name, the actual command has the following format.
setspn -A BC160/BCSERVER.corp:7046 corp\bcdomainuser
Does this change address your issue? Otherwise, let us know.

Hello, thanks for the feedback!
There was an error in the paragraph that you mentioned, and it has been updated to this:
For example, if BCSERVER is the name of the computer that is running Business Central Server and BC160 is the instance name, the actual command has the following format.
setspn -A BC160/BCSERVER.corp:7046 corp\bcdomainuser
Does this change address your issue? Otherwise, let us know.

Not realy. BC150/BC160 is typo error.
But confusing part is when service account is configured to register SPNs automaticaly when BC service starts. SPN will be registered as
DynamicsNAV/BCSERVER.corp:7046 corp\bcdomainuser and not BC160/BCSERVER.corp:7046 corp\bcdomainuser

Hello, Sorry for long wait on this issue. We've finally got clarification on this issue. As you noted, the SPN is always registered with DynamicsNAV, which is a hard coded value. This is used when the service account is configured to register SPNs automatically, and, when not, you should create the SPN using DynamicsNAV as well, like:
DynamicsNAV/BCSERVER.corp:7046 corp\bcdomainuser

We've updated the article accordingly. Thanks for the feedback!


We need to get a package with information about the tile.

I'm working on this now. :)
Right now, I have a script that integrates with servuo and it returns map data, tiledata, and art.

@lamo2k123 do you think it is better to get JSON map data & tile data with REST API or through websockets?

Websocket

tile texture gives the server? or server gives texture id?

png gives the game server?

Yes... For now.
The image/data server runs through ServUO. It can run independently too though.

I thought that all the static is stored in the client.

It is, but it would make more sense to have a server that can serve images for the game client.

Hmmm....

Static content is over 1GB, so the client would need to download it every load.
The server can send images as needed... so many smaller requests vs one big request...

how much more work on this task?

I'll try getting something up tonight after work :)

Here's an example of the map data:
http://<IP_ADDRESS>:2590/map?y=500&x=500
I can't get images working. It looks like Mono/libgdiplus doesn't support ARGB1555, which is needed for Ultima.dll to get images.

😞

I'm updating Ultima.dll to use ARGB8888 instead of ARGB1555 later tonight, so we should be able to get images working.

Loads with ARGB8888 👍
http://<IP_ADDRESS>:2590/land?id=4
http://<IP_ADDRESS>:2590/land?id=168

@lamo2k123 - should I wait for you to finish the refactoring before starting implementing the graphics?

Mmm... Use branch 'refactoring'.

Hmm.. Origin client size textures 64x64 and 128x128. And rotate 0

In 'refactoring', I npm installed history, hook-redux, and react-router-async.
Any other packages needed?
In console:

[HMR] Waiting for update signal from WDS...
index.js:111 Object {length: 2, action: "POP", location: Object}
core.js:97  action @ 20:12:34.197 @@router/START_TRANSITION (in 0.20 ms)
index.js:291 Uncaught (in promise) TypeError: route.action is not a function
at Router. (index.js:291)
at step (index.js:40)
at Object.next (index.js:21)
at fulfilled (index.js:12)
(anonymous) @ index.js:291
step @ index.js:40
(anonymous) @ index.js:21
fulfilled @ index.js:12
client?8505:38 [WDS] Hot Module Replacement enabled.
client?8505:38 [WDS] Warnings while compiling.

Sweet, thank you. :)

Have you used https://www.npmjs.com/package/request before?
I need to grab JSON and wondering if this is good to install or not. Could also just use XMLHttpRequest too.

Use the 'window.fetch'

which package contains data on the location of the character on the map?

I think it is either packet 0x1B or packet 0x20:
https://github.com/kevinhikaruevans/uojs2/blob/master/src/client/state/player/actions.js#L34
https://github.com/kevinhikaruevans/uojs2/blob/master/src/client/state/player/actions.js#L54

http://<IP_ADDRESS>:2590/map?y=3503&x=2574 here are the coordinates I got

there mapId need?

it's using blocks, so you'll need to do 3503/8 = 437, 2574/8 = 321, so you'll get:
http://<IP_ADDRESS>:2590/map?y=437&x=321
There is a map ID but I need to implement it still. Right now, it's using Felucca.

We'll probably need to create a system to detect as the player moves, preload each map block when they move near it.

8x8 block small :(((

Yeah, block is too small, so we'll have to load multiple blocks at once.
I'm trying to import THREE: https://github.com/kevinhikaruevans/uojs2/compare/refactoring...refactoring-map-additions
but import * as THREE from 'three' doesn't seem to work. Any ideas? 😕

Do you commit the res server for me to hook up on my vps? :)

In ServUO's Scripts directory:
UOJSServer.zip
Then in Data/Assemblies.cfg, I'm including these:
Newtonsoft.Json.dll
websocket-sharp.dll

(you'll need to download the binary dlls)

And where you can view the source code for parsing files map.mul

I'm using Ultima.dll to do that.
On Dec 28, 2016 11:49 PM, "lamo2k123"<EMAIL_ADDRESS>wrote:

And where you can view the source code for parsing files map.mul
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/kevinhikaruevans/uojs2/issues/45#issuecomment-269593882,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEgu3zs5G7aqWoNcC0ESBDfUeIg1aS-6ks5rM2YGgaJpZM4LPmn3
.

can nodejs to try to parse map file and make the api?

Yeah, but it'll take a long time to do.

I would like to just getting the tiles to rewrite.

It's just a matter of porting over Ultima.dll to nodejs. Should I work on doing that?
https://github.com/ServUO/ServUO/tree/master/Ultima

I want more convenient and flexible API to obtain data on the surrounding tiles. But we need to understand how to read the map file map (x) .uop

It's being done here: https://github.com/ServUO/ServUO/blob/master/Ultima/TileMatrix.cs#L414
Should I create repo for nodejs port package?

created. I think it will take much time.

Do you have a link for it?

I did not create. you create the repository.?

Ooh, just did:
https://github.com/kevinhikaruevans/uodatareader

nice 👍

Should it use uodatareader in server/index.js and send map responses through the websocket? Then we can send map JSON data and stuff through it.

of course yes

What about things like the images? Do we need to setup a separate webserver (like Express) to host this?

hmm.. I do not know yet. I would like to work in the production is not static nodejs distributed. I have not had time to look 'uodatareader' :) and I can not yet imagine the interaction of components.

how do you plan to implement threejs Z Index tiles?

I'm just setting the z in the position on the tile. We get the map data [{id: 123, z: 10}, ...], then use that z in the coordinate (tileposition = new THREE.Vector3(someX, someY, tile.z)).
It gets set here:
https://github.com/kevinhikaruevans/uojs2/blob/0d62a44543d5d0b21a5422f62aea5b504414a714/src/client/components/map/index.js#L34
I need to figure out the camera rotation for it to look better here:
https://github.com/kevinhikaruevans/uojs2/blob/0d62a44543d5d0b21a5422f62aea5b504414a714/src/client/components/scene/index.js#L30
It's rotating the camera along the Z to 45-degrees, but then it's rotating it along the X axis to give the Z axis depth.

Right now, it's looking like this for me:


System.ArgumentException: Unable to sort because the IComparer.Compare()

Howdy!
Amazing tool, thanks for sharing!
I got the following exception when adding/removing columns to an already filtered (on IsServiceRunning field) servers list.
System.ArgumentException: 'Unable to sort because the IComparer.Compare() method returns inconsistent results. Either a value does not compare equal to itself, or one value repeatedly compared to another value yields different results. IComparer: 'System.Collections.Generic.ObjectComparer`1[BrightIdeasSoftware.ICluster]'.'

I couldn't reproduce it yet but I thought I report it anyway...

Actually I could reproduce:

Filter the servers list on IsServiceRunning == True
Add the Procedures column
Right-click on the Procedures column
Exception

Thanks @wizche I will take a look today. I am able to reproduce.

On the RPC servers tab, when the Procedures column is added to the listview via the column selector context menu, that column is displayed and populated with lists of raw NDR procedure objects for all of the RPC servers.  When the column is then right-clicked from the listview header, the listview control tries to sort the raw object lists into clusters in preparation for filtering.  However, the default IComparer algorithm cannot compare IEnumerable lists against each other, and an exception is thrown. Note that you can cause this exception by repeating the steps to reproducing this issue, but select another column like Endpoints.
The underlying issue here is that Procedures (and several other columns) are not meant to be selected and displayed in this listview, because it would be a horrible visual experience to try to deconstruct and display thousands of procedures in a tab meant to show meta information about the RPC server. This is why the column is hidden by default.  The intended way to navigate to procedures in RPCI is to either:

From the server list, double-click a server (which opens an endpoint tab containing exposed interfaces), then double-click an interface to show the procedures supported on that interface.
Navigate to Library -> Procedures to see all procedures for all RPC servers in the library and search from there.

However, it's apparent that neither is a great experience if you see an RPC server of interest and want to go straight to all procedures for that server.  So, I think there are two tasks for this issue:

[ ] Remove unwanted columns (those that are not meant to be displayed and that would cause this exception) from the column selector
[ ] Add an item in the row right-click context menu to "View all Procedures", which will open the Procedures tab filtered to all procedures for all interfaces owned by that RPC server.


Add a Trusted Platform Module Provider

This issue tracks the work of adding a new provider in PARSEC for TPM support. This new provider will implement the Provide trait to respond to clients requests.
Multiple options are possible for the implementation:

produce a FFI to one of the TPM2 Software Stack API interfaces and dynamically link to a library implementing it (path provided in the configuration). Ideally we want to use the highest abstraction level (Feature API) but it seems to be work in progress. The highest level API we can use today is the Enhanced System API.
investigate the use of the tss-sapi crate, to see if it would fit our needs
investigate the use of a PKCS 11 to TPM 2 bridge. At a first glance, the README files warns that it is not production ready though.

cc @parallaxsecond/maintainers

From the ESAPI specs:

No two threads are allowed the same ESAPI context simultaneously.

We did a test where creating two contexts and trying in one to refer to the key handle of the other, ESAPI does not allow that (key handle does not exist) (cc @ionut-arm ).
That would mean that inside the provider functions, the code will be single-threaded (ensured with mutexes) so that we only have one context at all time. This context will be created when the provider is created.

#75 was just merged :)


bst artifact/source checkout UI should be made consistent with workspace checkout

See original issue on GitLab
In GitLab by [Gitlab user @tlater] on Jul 5, 2019, 16:26
Background
Currently, bst artifact checkout requires specifying a --dir or a --tar flag, and a directory/tar name. This is somewhat cumbersome (I just want my output!), and much like the situation for workspaces (#695), should change!
Task description
bst artifact/source checkout foobar.bst should be a little smarter, and more similar to bst workspace open.
A sensible approach would be to create a directory with the name of the specified element (without the .bst suffix), and take an argument to override that name.

For tar output, this could either infer what the desired format is from the argument or we could make --tar a switch that outputs a tarfile instead of a directory (inferring compression as with #1048).
We can also consider detecting piping and making our piped output a tar

I.e., I'm proposing: bst artifact checkout [--tar] <element> [<directory>]
Acceptance Criteria
I want to say bst artifact checkout [--tar] <element> [<directory>], but any UI close to bst workspace would work.

(Newcomers: simple, but make sure you discuss this a little on IRC/the ML first, since it's not decided yet)

In GitLab by [Gitlab user @beckyella16] on Jul 15, 2019, 13:54
marked this issue as related to #1079

In GitLab by [Gitlab user @tmewett] on Aug 9, 2019, 10:33
Could this be closed? !1476 added the default directory. Also, removing --directory in favour of an optional positional argument seems to go against the bst workspace open command, if that's what you meant [Gitlab user @tlater] ?

In GitLab by [Gitlab user @tlater] on Aug 22, 2019, 17:08
[Gitlab user @tmewett] I think this can be closed, yes. This would be similar to bst workspace open in its original design - the current variant was chosen because it's easier to express with click, and the implementation of bst artifact checkout is indeed closer to bst workspace open now, but I would have preferred the optional positional argument (in both cases).

In GitLab by [Gitlab user @tlater] on Aug 22, 2019, 17:08
closed


(fixup) remove incorrect uses of 'nfs'

In PR #210, I incorrectly referred to the backing storage as NFS. On
Azure, which is used in this tutorial, the proper protocol is actually
CIFS.
This commit corrects the incorrect usage, and perhaps more
appropriately, generalizes the technology as an "external volume"
/cc @mhausenblas, @pyronicide

lgtm!


Popup appearing when scrolling fast in list of models with thumbnail not generated yet

Describe the bug
A popup Press OK appear when f3d try to generate lots of thumbtail. Sometime if I open a file at same time this kind of popup appear, F3D can't load the model and write in console error alloc (I don't have the exact message for now)
To Reproduce
Scroll up and down in long list of file where thumbnail isn't generated.
Expected behavior
No popup.
System Information:

OS: Windows 10
GPU and GPU driver: RTX 2060s 8GB / 531.61 (Studio Driver)

F3D Information
F3D 2.0.0
F3D - A fast and minimalist 3D viewer
Version: 2.0.0.
Build date: 2023-05-12 00:39:16.
Build system: Windows 64-bits.
Compiler: MSVC 19.34.31944.0.
External rendering module: ON.
Raytracing module: OFF.
VTK version: 9.2.6 (build 20230224).
Copyright (C) 2019-2021 Kitware SAS.
Copyright (C) 2021-2023 Michael Migliore, Mathieu Westphal.
License BSD-3-Clause.
By Michael Migliore, Mathieu Westphal and Joachim Pouderoux.

I can fix the popup but it means some of your models cant be opened by F3D.

Only "Exception" shows up with a popup.

Fixed and in the last nightly


[FEATURE] Implement cache for MerchantKeyStore.

Feature Description
Implement L1 and L2 cache (In memory and Redis) for MerchantKeyStore store for MerchantKeyStore Table
Possible Implementation
There's already a static called ACCOUNTS_CACHE. You can use that and call get_or_populate_in_memory function to fetch from database if it's not either in redis or in memory cache. Refer https://github.com/juspay/hyperswitch/blob/d21fcc7bfc3bdf672b9cfbc5a234a3f3d03771c8/crates/router/src/db/merchant_account.rs#L99-L108.
Have you spent some time to check if this feature request has been raised before?

[X] I checked and didn't find similar issue

Have you read the Contributing Guidelines?

[X] I have read the Contributing Guidelines

Are you willing to submit a PR?
None

hey, im taking a look at this issue...It'd be helpful to know where the memory store for the cache is

Hey @NavinShrinivas the static for the in memory cache already exists as ACCOUNTS_CACHE. You just need to implement the get and store in redis and in memory logic for the table.

I'd like to work on this, all we should be calling is the get_or_populate_redis function before the memory (right?), when do we decide to cache it in memory if present in redis?

I will be assigning it to you @NavinShrinivas. You have to just call get_or_populate_in_memory. About the caching it happens during a get call to database, suppose if you don't have the data in in-memory cache or redis we fetch the data from database and insert into them both otherwise we get it from either in-memory or redis wherever it's present. Suppose the data is not in in-memory cache but it's on redis we get it from redis and insert it into in-memory.

pub async fn get_or_populate_in_memory<T, F, Fut>(
    store: &Store,
    key: &str,
    fun: F,
    cache: &cache::Cache,
) -> CustomResult<T, errors::StorageError>
where
    T: Cacheable + serde::Serialize + serde::de::DeserializeOwned + std::fmt::Debug + Clone,
    F: FnOnce() -> Fut + Send,
    Fut: futures::Future<Output = CustomResult<T, errors::StorageError>> + Send,
{
    let cache_val = cache.get_val::<T>(key);
    if let Some(val) = cache_val {
        Ok(val)
    } else {
        let val = get_or_populate_redis(store, key, fun).await?;
        cache.push(key.to_string(), val.clone()).await;
        Ok(val)
    }
}

This seems to be the current cahchng function for memory, I dont seem to have caught the gist of the issue yet as this function alredy checking and populates redis as needed. MerchantKeStore is calling this function for its cache checks.

Oh my bad, this function is called in merchatn account rather than keyStore, got the gist..will try sending a PR in soon

Hey @dracarys18 , I have some changes ready to be proposed as a PR, but cargo test is crashing my system. any fixes?

@dracarys18 I just opened a PR, would like to iterate on it. This being the first PR in hyperswitch I'm not sure i covered everything, I'm still trying to under the code structure. Any recommendations is welcome!

@dracarys18 Is this issue solved?
can we close it...


Added support for dynamic_template_data to SendGrid

The newly launched Dynamic Templates on sendgrid requires all data to be added to the dynamic_template_data json structure in the personalization map.
I've added new helper functions that work similarly to substitute to achieve this.

email
|> with_template(@template_id)
|> add_dynamic_field(:user, %{first_name: "jon", email<EMAIL_ADDRESS>

The tests DOESN'T fail - is something amiss with the circleci currently?

My application needs these changes as it requires SendGrid's dynamic transactional templates. Is there anything I can do to help this get merged? And besides the build failure, is there anything else that needs to be done before this can be merged?

Hi @Stratus3D  - It seems the team is a bit slow to respond currently. You can download my fork if you need it now, and switch over once they update it here.
  {:bamboo, git: "https://github.com/Aleksion/bamboo.git"}

You should pull from upstream to make sure the build it passing. Otherwise 👍

@joshchernoff got upstream pulled in

Any update on this? I would love to have this merged in soon, but I suppose in the mean time I can use @Aleksion 's fork, thanks for that!

@joshchernoff  bump

@joshchernoff bump

Sorry but I'm not someone who can merge this PR.

Sorry about that! :)
@mjankowski can you merge this?


Set a Boolean Claim

There does not appear to be an option here to set or change a Boolean Claim to a specific value.  For example, if I want to set a Claim received from the directory and save it back, regardless of its current value.
How is this possible in a Custom Policy through a Claim Transformation?

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

ID: b22a0db8-0391-0479-a20e-5a9c82765571
Version Independent ID: c9a7f125-6963-be5c-30b7-303e5e52ef04
Content: Boolean claims transformation examples for custom policies - Azure AD B2C
Content Source: articles/active-directory-b2c/boolean-transformations.md
Service: active-directory
Sub-service: b2c
GitHub Login: @msmimart
Microsoft Alias: mimart

@AndyBunning
Thanks for your feedback! We will investigate and update as appropriate.

@AndyBunning
Thank you for your time and patience! I reached out to my team regarding this and you should be able to set the value using OutputClaims in the TechnicalProfiles.

@AndyBunning
I just wanted to check in and see if you had any other questions or if you were able to resolve this issue?


Timestamp sorting treats the timestamp like text

My timestamps end in AM or PM. Because timestamps are treated like text when they are sorted, I get 10 AM, then 10 PM, then 11 AM, then 11 PM, etc. The timestamps should instead sort in chronological order.

This is for the Advanced Time Series Data Table.


Example project (& detox project) fails on simulator x86

Hi!
When I try to run yarn run ios on my mac (intel), it fails with:
/Users/timothee/Library/Developer/Xcode/DerivedData/CryptoppExample-fwcvmicakoisimehqiwmebxzjjis/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/react-native-cryptopp.build/Objects-normal/x86_64/message-authentication.dia:1:1: warning: Could not read serialized diagnostics file: error("Failed to open diagnostics file") (in target 'react-native-cryptopp' from project 'Pods')

2022-07-11 17:43:38.690 xcodebuild[93405:2326414] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
2022-07-11 17:43:38.692 xcodebuild[93405:2326414] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
** BUILD FAILED **

The following build commands failed:
        CompileC /Users/timothee/Library/Developer/Xcode/DerivedData/CryptoppExample-fwcvmicakoisimehqiwmebxzjjis/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/react-native-cryptopp.build/Objects-normal/x86_64/react-native-cryptopp.o /Users/timothee/ExternalProjects/react-native-cryptopp/cpp/react-native-cryptopp.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler (in target 'react-native-cryptopp' from project 'Pods')
(1 failure)

info Run CLI with --verbose flag for more details.
error Command failed with exit code 1.

Any idea why?
The sh scripts/compile_cryptopp_ios.sh works when ran manually.
I use:
➜  example git:(main) ✗ xcodebuild -version
Xcode 13.4.1
Build version 13F100
➜  example git:(main) ✗ node --version
v14.19.1
➜  example git:(main) ✗ yarn --version
1.22.19
➜  example git:(main) ✗ sw_vers
ProductName:    macOS
ProductVersion: 12.4
BuildVersion:   21F79

After further investigation, it seems the error comes from:
In file included from /Users/timothee/ExternalProjects/react-native-cryptopp/cpp/react-native-cryptopp.cpp:1:
In file included from /Users/timothee/ExternalProjects/react-native-cryptopp/cpp/react-native-cryptopp.h:7:
/Users/timothee/ExternalProjects/react-native-cryptopp/cpp/host_objects/hash-functions.h:8:10: fatal error: 'cryptopp/blake2.h' file not found
#include "cryptopp/blake2.h"
         ^~~~~~~~~~~~~~~~~~~
1 error generated.

I get this error when using pre-built binaries downloaded with yarn run download_cryptopp.
I'll try recompiling.

Great! I confirm it works on my end :)


Image preview improvements

After seeing issue #972, I remembered a mockup for the image viewer I did a few months ago but never shared.
Here it is.

Navigation buttons (previous image, next image) are intuitive and more prominent.
All save actions are separated from navigation, and placed together.
Removed "... and close" buttons, eliminating redundancy. We already have a close button in the window, also fix bug of 2 "close" buttons inside the window when image is already saved.
Details are ready in the window.
Links are less cluttered.

Also, maybe we could use the word "Dimension", "Resolution" or just "Width x Height" instead of "Size" in the details, but I'm not sure.
As for the main UI, is more complicated, but I think there are so many little things that could be improved. E.g. The navigation buttons don't show intention of navigation by their location in the window and by being so far apart. Or the download list selection of cells instead of rows, lack of drag and drop to reorganize the list, to remove "Move down" and "Move up" buttons. Etcetera.

Nice work, thanks for sharing!

Indeed, it definitely looks good!
I will definitely use it as inspiration for changing the image viewer window. 👍
Just two remarks:

Isn't a big part of the good looking result the flat button design and the font? Two things I'm not really willing to do in the program to stay coherent with both the OS and the rest of the UI.
Isn't it harder to read tags when put horizontally? (instead of the current booru-like vertical way) Maybe both could be mixed with a 3-column design? (image, details, vertical tags)

I definitely agree with this point, and I see your reasoning for not implementing it. I suppose something like that would be better handled with a theme. Curious what the font is.

I agree that it's harder to read the tags this way, although it does save space. If it were vertical, though and the space exceeded the height, it could be made into a scrollable column. That doesn't seem very elegant though to me. Perhaps the column(s) could be toggled so that if a user prefers to see it with the data, they can view it that way, or they can opt for a full window experience.

I was following closely how KDE's Dolphin (file manager) looks. Buttons without relief, "Breeze" theme and icons. Fonts were Roboto and Cantarell, but those should be irrelevant. The image was all about the organization of the window.
Tags: I think so too, horizontally is not optimal for reading something which is supposed to be a list.
Here is a more conservative approach:

Buttons with relief.
Tags vertically on the left, resembling an imageboard post. If there are more tags, it should scroll.
Do not show details, just a button. The titlebar already provides some basic info like size.

P.S. Other mockups: Search, Favorites and Downloads.

I have felt that the single image view has needed a UI overhaul so I really appreciate your designs on this, regardless of whether Bionus sees fit to implement. I really like that new one as well! If I knew the QT classes, I would attempt to create a style for it.

I was following closely how KDE's Dolphin (file manager) looks. Buttons without relief, "Breeze" theme and icons. Fonts were Roboto and Cantarell, but those should be irrelevant. The image was all about the organization of the window.

Yes it wasn't a reproach or anything it's just a risk when changing multiple things at the same time ^^

Tags: I think so too, horizontally is not optimal for reading something which is supposed to be a list.
Here is a more conservative approach:

Still looks quite good. I even think that the details button doesn't even need to open a new window and could open a pane like in the first mockup.

P.S. Other mockups: Search, Favorites and Downloads.

Those look good too!
Just a few remarks:

Is there any difference between the normal search tabs and the favorites tabs with this design?
Some users will be very against moving the "Merge" button to the "+" area
In the download tab, I believe the disappearance of the "Move" buttons means it's drag and drop? I'm not sure rows can be drag and drop with cells still being editable, so I'll take a look.

I have felt that the single image view has needed a UI overhaul so I really appreciate your designs on this, regardless of whether Bionus sees fit to implement. I really like that new one as well! If I knew the QT classes, I would attempt to create a style for it.

Since you already have Qt installed you must have Qt Designer too. It's totally WYSIWYG if you want to give it a try :smile:
As for the styles themselves, you can't move items around using Qt CSS, but all classes are in Qt doc for other types of customization. And if you want to style a widget in particular, you can identify it with their CSS ID which is the same as their "objectName" in Qt Designer.

Yes it wasn't a reproach or anything it's just a risk when changing multiple things at the same time ^^

I understand really, it was just a clarification. Maybe I should use some emoticons too. 😄

Is there any difference between the normal search tabs and the favorites tabs with this design?

Search would behave just like it does now.
Favorites would resemble search, but still behaves very similar to what it does now. This is what I was thinking:
a) Showing a sidebar in the same place as search would use the familiarity with the search tab and try to not introduce so many different behaviours.
b) The searchbar (or tagbar?) and "Plus" button would be disabled, but the searchbar would still show what tags is following the selected favorite.
c) There is a button to add a favorite, which would bring a window dialog.
d) Editing a favorite would bring the same dialog but populated.
e) When adding a new favorite it would show not viewed for a week prior. This would eliminate the need to edit the favorite just after adding it.

Some users will be very against moving the "Merge" button to the "+" area

Mmmh, well, that could be an issue. As I see it, "merging" is in the same context as configuring post-filtering. Both still need to press "OK" after changing them as well. And the mockup tries to group them together because those are "connected" actions, one after the other. This way it should be telling the user "Hey, you still need to press OK", and OK is the last action performed all the time in there. That's why "Sources" is also up there.
If it were an immediate action, i.e. at the moment the checkbox is active the view content changes. I would've put it together with pagination at the bottom, because pagination is immediate, it doesn't require confirmation.

In the download tab, I believe the disappearance of the "Move" buttons means it's drag and drop? I'm not sure rows can be drag and drop with cells still being editable, so I'll take a look.

Here, I'm still not sure either about what should be. (°-°;)?
I was thinking that a context menu with "Edit" and "Delete" items maybe would be more fitting. If more than 1 row were selected, the context menu would show the "Edit" item in a disabled state. The "Edit" item would bring up the same dialog as "Add (group or image)" but populated.

Since you already have Qt installed you must have Qt Designer too. It's totally WYSIWYG if you want to give it a try

@Bionus, I think I will take a look at it, however, given the complex nature of your buttons in the image window and all the different states, I would be afraid of causing more harm than good. Creating the styles, however, would be a breeze. If you're not wanting custom styles for the program, though, then there's not much point in making custom styles other than for my own benefit. That would require keeping up with your future releases, though. I'd much rather just contribute to your official repo under your guidelines.

I missed a few days and you guys already gonna change whole interface,O_o
First of all, I'm standing mostly on the side of old interface, but some suggestions looks interesting.
And of course I have some arguments.
Main thing: bad place for Buttons bar area
Buttons bar shouldn't be placed at the top of the preview window, it's VERY bad idea.
Buttons bar at the top of the window is normal for the file managers and for almost all windows which works with grid of files, BUT! It's a very bad idea in preview window. In Preview windows all buttons should be placed at the bottom of the window. As example you can look at almost all image viewers preview windows and to all media players. Actions and navigations button alvays placed at the bottom.
And I tell you why. User reads window from top left corner to right bottom corner, and it's very unconvinient for all users to break this habit.
Users ALWAYS reads pages from top to bottom, and from left to right. That's how all people reads books, sites and all kind of pages and windows. And that's why most common alignment of all areas on the sites and windows is left alignment, because it's easy to use(it's about first suggested bad position of tags area)
That's why in preview windows buttons placed at the bottom:

user opens preview window and starts watch it from top to bottom
he moves his sight down from top to the image\video, watch it and make a decision for action\navigation
after that he again moves his sight down and press on already decided button in the buttons bar.
Easy and convenient.
That's works because user needs all these buttons only after watching at the image, so placing its before image is pointless.

It looks kind of this(arrows shows moves of the user's sight)

About preview window interface suggestion
Buttons size and positions

Navigation buttons (previous image, next image) are intuitive...

Maybe they are more intuitive on mac/linux, but how it will looks like on windows? Pleas show me if you can.

...and more prominent.

Absolutely not! they became smaller, shorter, and a bunch of unused blank space appears on the buttons bar, which becames even more not prominent if you open window in fullscreen, as it does almost all users, these little buttons will be still small, but blank space will be greatly increased. Moreover, in other languages same titles will take different width(shorter for asian languages, longer for russian), which means different size of these buttons in different language versions, that's not good.

Now look at the current buttons bar, it's multi sized, because all buttons fills whole space and well wisible with any size of the window, moreover, it fills all bar and there is no unused blank space at all. And all buttons have one size, it looks very beatiful compare with your suggested buttons bar where all buttons have different sizes only because of text on it.
Navigation buttons

Your suggestion to place both "previous" and "next" buttons alongside. I think it's a bad idea. Again think about user logic: "I want to go to the right image, I expect that button that moves me to the right next image will be at the right side of the window and if I want to go to the left image, I expect that button that moves me to the previous image will be at the left side of the window "
current navigation logic

suggested navigation logic

So it's very unclear to place "next" button in the left corner. Moreover when completely different but visually similar buttons placed so closely to each other there are big probability of misclick.
Moving "save as..." button

All save actions are separated from navigation, and placed together.

"Save as..." button placed at the end because it's not often used function, it's for special lmages mostly. Destination folder is not widely used function too(but very useful anyway), so placing all save actions together sounds logical. Kind of this:

Favourite folder functions
Many users not uses Favourites folder function(I'm too), and for them these buttons will be only dead weight, in current interface users who use this function just one time press "+" button and can use all wide functional of the favourite folder menu all time. So it's convinient for all. Moreover in the future in the "+" bar can be added new buttons, so "+" button is useful anyway. So I don't think that users would be happy if you deside to remove functions they use like destination of favourites folder and save to fav and close function. So this is obviously a bad idea.
"Save and close" actions

Removed "... and close" buttons, eliminating redundancy. We already have a close button in the window, also fix bug of 2 "close" buttons inside the window when image is already saved.

Oh you! I love Grabber because of "save and close" function, and not only me. This button saves many time for user because makes two main actions in one time, so you don't need to move mouse through whole screen and press two buttons(first "save" an then "X" in the corner)instead of one:
 moreover many users use it almost as frequently as normal "save" button. So hands off from this function >_<
If YOU personally don't use it, don't means that you can just remove it for all.
Also, redundancy exist in any interface and it's OK.

@MasterPetrik Hey :) I was surprised you hadn't popped up in this conversation yet. I was basically waiting for your debut. I hope you can respect my opinion below, as I really enjoy this design discussion in general. Also, please ignore that my username is probably going to change a few times over the next few days x.x
Anyway, I firstly want to say thank you for putting so much effort into this interface discussion. I think some of your points are valid, and some are either an opinion or may be dependent on what your OS is. I don't really want to get into the details of it all, but I'll mention a few.
I have to say that I like the suggested design(s) above more than the current interface. Especially the buttons. I like that there is so much blank space. It feels cleaner to me. It's very browser-like having the forward/back buttons side by side, which I think everyone is used to. Rather than worrying about a miss click, might I suggest that it enables the user to quickly switch between images rather than having to drag the mouse across the screen. As for whether they should be on top or bottom, I personally think this is an opinion. I like them being on top, but I completely understand how you would want them on the bottom as well. When I was a Windows user, I hated that the menu bar was at the top of the screen and whenever I use Windows, I definitely prefer the task bar to be on the bottom of the screen. I'd like to take this opportunity to point out that on Linux and Windows, those kind of bars can be moved to the top, bottom, or even sides depending on user preference. It's also very common in programs to be able to customize your menus (especially in Adobe apps). I don't think it's unreasonable to have this ability in Grabber either. Not saying to do this, just saying, it's a compromise that would surely satisfy both opinions.
As for the button redundancy, I like removing it. Of course, I know this has been discussed before at length, so I don't expect that buttons will be removed or added any time soon. I will say in favor of this, though, that the fraction of time saved by clicking save and close, in my opinion, does not warrant its existence. I'd rather click save, then close and have less buttons. Less buttons = less crowded and to me, less crowded is better. If you really want to save time, might I suggest doing a batch download rather than saving images one at a time.
You mentioned a concern that this design appeal may favor Mac over Windows. If I'm not mistaken, I believe that @dyskette is not a Windows or Mac user. Observably, I think we're getting a Linux perspective, which could potentially be worlds apart from what either of us are used to. My first guess was Windows, but I'm pretty sure that's Linux.
Anyway, like I said, I don't want to bicker on tiny things, but I am very interested in improving the individual image view window. I know some people have expressed a desire to have less options, but to me, what may make sense in this case is to have an options menu that allows you to customize the window. So you could toggle tags, extra info, buttons on top/bottom.
I don't really expect to hear an agreements from anybody, but I hope you've at least considered what I had to say.

@Bariable Thanks for you feedback, I'm really appreciate it.
Btw, I can identify you only by avatar now but as I remember, you are Barry Anders

I have to say that I like the suggested design(s) above more than the current interface. Especially the buttons. I like that there is so much blank space. It feels cleaner to me. It's very browser-like having the forward/back buttons side by side, which I think everyone is used to.

But it's about browser similarity. And browser-like interface (buttons bar at the top, "<" and ">" alongside) is typical for search windows(llike tabs in grabber, it's very browser-like), windows with grid(file managers and results window in grabber) and other same pages(like downloads page in Grabber) but Browser's interface isn't supposted to be image viewer at all, So this interface in preview shouldn't looks like browser interface. In browser "<" and ">" buttons NOT means previous/next item, they means undo/redo your actions in the window, and then it's fully logical to place them alongside. In all programms these buttons placed nearby, snd that's good. But look at the "<" and ">" buttons in preview window, they moves you to the previous\next image in the grid, so this is completely same functions, that do "<" and ">" buttons in all media players, music players and most imageviewers preview windows, so in Preview windows it's pretty native. And in all these programms buttons bar placed at the bottom and center-aligned and buttons mostly stay in order like
[previous item] - [some actions with this item] - [next item]
In all these probramms "<" and ">" buttons are separated, and for preview it's ligical, I guess.
For example here is the preview window of default Windows image viewer:

So try to think about this window not like about browser window, but like media player window, considering that Grabber shows video too. Than I think you may better understand my position.

think some of your points are valid, and some are either an opinion or may be dependent on what your OS is.

True. As @dyskette use Linux, I don't know which suggested changes are linux-only and which are global, so I only can imagine how suggested interface will looks on Windows, and I can only tell about windows interface. I think it's wrong to base global GUI changes on linux GUI changes since most of the users use windows version and some users also use MAC, so first of all it's need to see how it can look in another OS too. Maybe things that looks good in Linux will be look bad in Windows etc. So I don't think that it's a good idea to bring GUI examples from other linux programms.


[#75]:clean repository

I just put the code associated with abstraction/SCOTS in a dedicated folder in both src and test.

Codecov Report

Merging #82 (69375b1) into master (1c5fe52) will decrease coverage by 6.87%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master      #82      +/-   ##
==========================================
- Coverage   71.34%   64.47%   -6.88%
==========================================
  Files          20       20
  Lines        1183     1306     +123
==========================================
- Hits          844      842       -2
- Misses        339      464     +125

Impacted Files
Coverage Δ

src/Abstraction/abstraction.jl
83.33% <ø> (ø)

src/Abstraction/automaton.jl
93.33% <ø> (ø)

src/Abstraction/controller.jl
91.89% <ø> (ø)

src/Abstraction/controlsystem.jl
98.14% <ø> (ø)

src/Abstraction/domain.jl
82.00% <ø> (ø)

src/Abstraction/grid.jl
100.00% <ø> (ø)

src/Abstraction/plotting.jl
0.00% <0.00%> (ø)

src/Abstraction/polyhedron.jl
100.00% <ø> (ø)

src/Abstraction/rectangle.jl
25.00% <ø> (ø)

src/Abstraction/sorted_vector_set.jl
88.46% <ø> (ø)

... and 4 more

Continue to review full report at Codecov.

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

Codecov Report

Merging #82 (69375b1) into master (1c5fe52) will decrease coverage by 6.87%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master      #82      +/-   ##
==========================================
- Coverage   71.34%   64.47%   -6.88%
==========================================
  Files          20       20
  Lines        1183     1306     +123
==========================================
- Hits          844      842       -2
- Misses        339      464     +125

Impacted Files
Coverage Δ

src/Abstraction/abstraction.jl
83.33% <ø> (ø)

src/Abstraction/automaton.jl
93.33% <ø> (ø)

src/Abstraction/controller.jl
91.89% <ø> (ø)

src/Abstraction/controlsystem.jl
98.14% <ø> (ø)

src/Abstraction/domain.jl
82.00% <ø> (ø)

src/Abstraction/grid.jl
100.00% <ø> (ø)

src/Abstraction/plotting.jl
0.00% <0.00%> (ø)

src/Abstraction/polyhedron.jl
100.00% <ø> (ø)

src/Abstraction/rectangle.jl
25.00% <ø> (ø)

src/Abstraction/sorted_vector_set.jl
88.46% <ø> (ø)

... and 4 more

Continue to review full report at Codecov.

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


Namespace the root_path variable

Signed-off-by: Mihai Petracovici<EMAIL_ADDRESS>Description
Namespaces the root_path variable so that it does not conflict with other cookbook run_state variables.
Issues Resolved
#68
Check List

[x] All tests pass. See TESTING.md for details.
[x] New functionality includes testing.
[x] New functionality has been documented in the README if applicable.

Looks like the tests are running into this bug now which was fixed in the ruby_rbenv cookbook:  sous-chefs/ruby_rbenv#282

@petracvv I just reran the jobs and they pass now. I believe an upstream bug with chef was finally resolved that wear causing these issues.

          1 Error

:no_entry_sign:
Please include a CHANGELOG entry.

          1 Warning

:warning:
This Pull Request is probably missing tests.

  Generated by :no_entry_sign: Danger

@petracvv Can you get a Changelog entry for this and we can get it merged and shipped today
Thanks!

OK. I added one with a minor version bump in the changelog file. Feel free to edit that if that is not the version you were aiming for


Shaderlab support #include macro and optimize glsl related syntax

Please check if the PR fulfills these requirements

[x] The commit message follows our guidelines
[x] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)

Support include macro

...
VertexShader = vert;
FragmentShader = frag;

#include <test_common>

BlendState = blendState;
...

Add a custom shader segment registration interface for use by include macros

shaderLab.registerShaderFragment("test_common", commonSource);

#include <test_common>

Improved support for the glsl syntax standard

What is the current behavior? (You can also link to an open issue here)
What is the new behavior (if this is a feature change)?
Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)
Other information:

shaderInfo.diagnostics = context.diagnostics and shaderInfo.ast = ast; will delete later?


Re-use window command loses all integrated terminals (code -r /path/to/some-folder)

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.77.1
OS Version: Windows 10/macOS

Steps to Reproduce:

Open vscode in a new workspace (within a directory/folder)
Open the integrated terminal
Use the vscode command-line utility to reuse the same window with a new directory/folder/workspace by issuing the command: >code -r /path/to/some-folder
Notice that the whole instance of vscode reloads causing the terminal to close (it's actually intermittent. Sometimes it doesn't close the terminal but most of the time it does)

The documentation says that 'code -r' should reuse the same window to load a file or folder. But in the case of a folder, it seems to load a new instance of vscode, and this causes the terminal window to close (most of the time), wiping out anything that was in there (for example, I might have 4 split terminals going with information and now they're all gone). I have a feature request #179290 that I submitted to be able load a new directory/folder/workspace without reloading the whole instance of vscode, but the more I thought about it, the more it seems like a defect. 'code -r /some-folder' shouldn't reload the whole instance (or at the least, it shouldn't wipe out the terminals). The documentation says is should "force to open a file or folder in an already opened window". This seems like an intermitted issue, because sometimes it doesn't close the terminal but most of the time it does

The window is reused but a window reload is still required.

The described behavior is how it is expected to work. If you disagree, please explain what is expected and what is not in more detail. See also our issue reporting guidelines.
Happy Coding!


Rewrite __Pyx_sst_abs using only preprocessor macros, and add a case for 64-bit MSVC

Comparing sizeof(Py_ssize_t) to different sizes at compile time results in warnings or errors when the C++ compiler tries to find a function matching abs(value) (Per the standard library spec, no functions match if ssize_t is a typedef of long long). Luckily, pyport.h provides some SIZEOF macros we can use at preprocess time. __Pyx_sst_abs is now conditionally defined to a much shorter expression.
64-bit MSVC is one case where ssize_t is a long long. Instead of falling back to ((value<0) ? -value : value)), I added a check for 64-bit MSVC that calls the MS-specific function _abs64(long long)
This change also includes the change given by PR #402, improved with a check against the available C++ version as std::abs is only available on C++11.
Have only tested this with 64-bit Python 2.7, 64-bit MSVC 2008. Let's see if Travis passes it.

Thanks!

I'm getting issues with this on my Linux/{gcc, clang} system:
/home/mic/git/openage/openage/util/fslike_cpp.cpp:1573:16: error: use of undeclared identifier 'std'
    if (likely(__Pyx_sst_abs(size) <= 1)) {
           ^
/home/mic/git/openage/openage/util/fslike_cpp.cpp:302:34: note: expanded from macro '__Pyx_sst_abs'
    #define __Pyx_sst_abs(value) std::abs(value)
                             ^
/home/mic/git/openage/openage/util/fslike_cpp.cpp:441:43: note: expanded from macro 'likely'
  #define likely(x)   __builtin_expect(!!(x), 1)
                                          ^

It would appear that it is necessary to explicitly #include <cstdint>.


Filenames in examples directory shouldn't include "#" character.

"#" character is non standard for file names - can cause issues in certain contexts (URL encoding, different OS's, languages, etc.)

Thanks, will avoid using "#" when creating names for files.


Question: Formula Support?

Is there a formula support? ahm, I have a set that needs to interpolate new data like excel or google spreadsheets
Object manipulation is too hard ;c

There is not.  Adding it isn't too hard if you have a formula lib that you can plug into it.  I've never looked into it myself.  I use the grid to read data out of a database mostly, but I see a lot of people using it to display excel data, which it can do.  Sorry I can't help with that.


add TriplesMap to vocabulary

Hi @joostaafjes,
Thanks for your PR.
However, please PR on the develop branch.
Also, the TriplesMap class definition should be part of the Rr class, since it's defined in the R2RML vocabulary.
I guess we could add all (R2)RML terms to the vocabulary classes.
Out of curiosity, why did you need this added?


[PWA] rename components and move app specific code to /src

Related to #1400
Finished the first two lines in this checklist.

@pierreneter thanks so much for tackling this! This will take a significant amount of testing/review to be sure everything is working properly. I will start testing this out as soon as I have time.
Once we've approved the changes, we can resolve the conflicts and get this merged.
cc @bebraw @hulkish

Ok started testing this out locally...
The npm run build script runs fine, however when running npm run lint I get a bunch of these errors from the lint:links method:
should respond with HTTP status 200
404 https://github.com/webpack/webpack.js.org/edit/master/src/content/support/index.md at build/support/index.html:19:31179 ...

which seems to be caused by links picking up the .md extension when they shouldn't. I'll keep testing more and see if I can dig anything else up.

@skipjack This error occurred because I have moved the content and in src folder.
https://github.com/webpack/webpack.js.org/edit/master/src/content/support/index.md //after merged
https://github.com/webpack/webpack.js.org/edit/master/content/support/index.md //now

We should move it inwards or not?
I want to take the next steps but still waiting for this PR to be merged.
If these two steps are not necessary then we should discuss whether to merge it or not to avoid large file conflicts.

@pierreneter ah you're totally right, the edit link failures are to be expected.

We should move it inwards or not?

No it's fine as is, this is to be expected in scenarios like this.

I want to take the next steps but still waiting for this PR to be merged.
If these two steps are not necessary then we should discuss whether to merge it or not to avoid large file conflicts.

Can carefully resolve all the conflicts? From there I'll do one more round of testing and then make it a priority to get this merged.

All done @skipjack. Please check it soon, thank you.

all done @skipjack

Aside from the lint:social errors and edit link errors everything seems to run perfectly. I'd like to give @bebraw another day or two to review before merging but I'll hold off on merging other PRs until we hear from him so you don't need to keep rebasing.

@pierreneter did a final review, pushed some fixes, and will merge shortly.

@skipjack thanks!

@pierreneter had to fix one thing in #1538 but aside from that everything seems 👍  (at least no "the site blew up" issues popped up so far 😆 ).
Thanks again for your work on this, you may want to sync up with @hulkish in #1400 to discuss next steps. Note that I did check the first two items there off and added references to these PRs. It seems the other items there won't be as big overhauls but please feel free to ping me if I can help in anyway. I'm finding the PWA items, performance improvements, and lighthouse testing all very interesting.


Project fork counts don't match actuals [JS]

There appears to be a bug in the fork indexer. It appears to affect all projects.
This query runs on three projects:

rotki: should be around 500, currently returns 36
Blockscout: should be over 2000, currently returns 58
ipfs: should be over 1500, currently returns 165 (note this project is one of the ones also affected by #500)

SELECT
    p.id,
    p.slug,
    et.name,
    SUM(e.amount) AS total_events,
    MIN(e.time) AS first_event_time,
    MAX(e.time) AS last_event_time
FROM event e
JOIN event_type et ON e."typeId" = et.id
JOIN artifact a ON e."toId" = a.id
JOIN project_artifacts_artifact paa ON a.id = paa."artifactId"
JOIN project p ON paa."projectId" = p.id
WHERE
    p."slug" IN ('rotki', 'blockscout', 'ipfs')
    AND et.name = 'FORKED'
GROUP BY
    p.id,
    p.slug,
    et.name;

Here is the result:

@ccerv1 I forgot to document parts of this, but definitely some of this is just a bug/collector issue. So counting the FORKED won't ever work entirely because private forks don't show up in the collector's data that it retrieves (perhaps it's in the public github data on BigQuery). That being said, I do record an event FORK_AGGREGATE_STATS that is supposed to get the aggregate stats for the forks every day. I'm realizing that if things are slow this may not get run as consistently as I'd hope.

Ahh... good to know!
So the workaround would be to just grab the most recent value and subtract it from the value at the start of the date range. Let me try that out and see how it looks!

@ryscheng I started this .. it needs to grab the last node (most recent date)
query Project ($projectId: Int!, $typeIds: [Int!]) {
  events_daily_to_project_aggregate(where: {projectId: {_eq: $projectId}, typeId: {_in: $typeIds}}) {
    nodes {
      amount,
      bucketDaily
    }
  }
}

query MyQuery($artifactIds: [Int!], $typeId: Int!) {
  events_daily_to_artifact(
    where: {typeId: {_eq: $typeId}, artifactId: {_in: $artifactIds}}
    limit: 1
    order_by: {bucketDaily: desc}
  ) {
    typeId
    bucketDaily
    artifactId
    amount
  }
}

with typeId=22 for FORK_AGGREGATE_STATS

@ryscheng this didn't quite work (it only grabbed the last artifact : date tuple).
This seems to work for now:
query MyQuery($projectId: Int!, $typeId: Int!) {
  events_daily_to_project_aggregate(
    where: {typeId: {_eq: $typeId}, projectId: {_eq: $projectId}}
  ) {
    aggregate {
      max {
        amount
      }
    }
  }
}

This appears to resolve the issue, so closing while Reuven works on #500


Fix inline comments causing install error

Environment

pipenv, version 10.1.0
Python 3.6.4 (Homebrew)
macOS High Sierra, version 10.13.3

Steps to reproduce

Create a simple Pipfile with inline comments followed by a whole-line comment within packages:

[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]

# Django related packages
django = ">=2.0"
pillow = "*"  # necessary for django ImageField
# OAuth / Security related packages
django-oauth-toolkit = "*"

[requires]

python_version = "3.6"

Run pipenv install rules

Expected behaviour
rules package is installed, and added to Pipfile
Resulting behaviour
Fatal error with message:
$ pipenv install rules
Creating a virtualenv for this project…
Using /usr/local/bin/python3.6m to create virtualenv…
⠋Running virtualenv with interpreter /usr/local/bin/python3.6m
Using base prefix '/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/serialx/.local/share/virtualenvs/api-k66jWLAd/bin/python3.6
Also creating executable in /Users/serialx/.local/share/virtualenvs/api-k66jWLAd/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /Users/serialx/.local/share/virtualenvs/api-k66jWLAd
Installing rules…
Collecting rules
Installing collected packages: rules
Successfully installed rules-1.3

Adding rules to Pipfile's [packages]…
Traceback (most recent call last):
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/bin/pipenv", line 11, in <module>
    load_entry_point('pipenv==10.1.0', 'console_scripts', 'pipenv')()
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/lib/python3.6/site-packages/pipenv/cli.py", line 197, in install
    selective_upgrade=selective_upgrade
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/lib/python3.6/site-packages/pipenv/core.py", line 1875, in do_install
    project.add_package_to_pipfile(package_name, dev)
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/lib/python3.6/site-packages/pipenv/project.py", line 507, in add_package_to_pipfile
    p = self._pipfile
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/lib/python3.6/site-packages/pipenv/project.py", line 292, in _pipfile
    p_section[norm_key] = p_section.pop(key)
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/lib/python3.6/site-packages/pipenv/patched/prettytoml/elements/table.py", line 114, in pop
    v = self[key]
  File "/usr/local/Cellar/pipenv/10.1.0/libexec/lib/python3.6/site-packages/pipenv/patched/prettytoml/elements/abstracttable.py", line 58, in __getitem__
    raise KeyError
KeyError

Possible solution to this error
I've debugged the code and found the root cause is when using pop() method in prettytoml package. For prettytoml to delete an element, it finds the starting point and finds the nearest NewlineElement and deletes the whole section from starting point to the newline element. The problem is that newlines with preceding comment token is unified into a single CommentElement entity. Thus prettytoml mistakenly deletes the next line of the comment. In which, this case it would be django-oauth-toolkit = "*".
I've propose a simple patch to also find CommentElement when trying to find the following newline element.
~The side effect of this patch is that, since all comment line metadata is deleted, the newly contructed Pipfile has comments in the wrong lines:~ The comment related code-path seems to be unrelated to this patch.
[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]

# Django related packages
django = ">=2.0"# necessary for django ImageField
# OAuth / Security related packages
pillow = "*"
django-oauth-toolkit = "*"
rules = "*"

[requires]

python_version = "3.6"

Actually, having one more look at the patch side-effect, unpatched pipenv 10.1.0 already breaks all the comments in the Pipfile. So I think this patch is not causing the comment side-effect.

comments shouldn't be a problem.

But currently they are? I read something else about this

@kennethreitz By removing all the comments in the reproduction example, pipenv install runs fine. I've pretty much debugged the whole code including prettytoml, and the comment parsing and element deleting(pop) of prettytoml is the definite problem here.

BTW, taking a look at the libraries like prettytoml... It's been abandoned for like three years. I think we should avoid using this and look for alternatives.

TOML hasn't changed :)
I made some heavy modifications to it.

I did some debugging and came up with some interesting discoveries. So I put a couple of prints around p_section[norm_key] = p_section.pop(key), like this:
print(key, p_section)
p_section[norm_key] = p_section.pop(key)
print(key, p_section)

and got this output:
django {'django': '>=2.0', 'pillow': '*', 'django-oauth-toolkit': '*'}
django {'django': '>=2.0', 'pillow': '*', 'django-oauth-toolkit': '*'}
pillow {'pillow': '*', 'django-oauth-toolkit': '*', 'django': '>=2.0'}
pillow {'django': '>=2.0', 'pillow': '*'}
django-oauth-toolkit {'django': '>=2.0', 'pillow': '*'}

So for some reason the prettytoml removes django-oauth-toolkit when popping pillow. I haven’t looked into the implementation of pop, but wants to record this finding first.

I’ve opened #1535 to detail the problem. I’m going to close this because the fix is unlikely to be correct.


DOC: Enable Tracing in Langsmith

Issue with current documentation:
We don't want to store the LangSmith tracing credentials in the environment.
Is there any other way to enable tracing without setting the credentials in the environment?
Is there an option to dynamically configure the LangSmith tracing configurations?
Idea or request for content:
No response

Would the doc "Trace without setting environment variables" address your question? https://docs.smith.langchain.com/how_to_guides/tracing/trace_without_env_vars

LMK if you need more info!


Renamed nuspec and corrected version

I renamed the nuspec file to match the new project name. I also changed the project version to maintain compliance with Semantic Versioning (http://semver.org/).

@samuelneff, could you please merge this?


Unable to import dlib. Does dlib need a GPU compulsorily?

I'm using a Intel Pentium B960 Processor.
I'm unable to import dlib.
I think there's an issue of GPU and CUDA.
Can you please tell me how can I proceed further?
Anaconda Promt:

import dlib
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\shubh\Anaconda3\envs\ET\lib\site-packages\dlib_init_.py", line 19, in
from _dlib_pybind11 import *
ImportError: DLL load failed while importing _dlib_pybind11: A dynamic link library (DLL) initialization routine failed.

No that's not necessary.

So how should I proceed with working on the code then if I'm unable to import dlib?

The main branch doesn't use dlib, instead uses a tensorflow model for the facial landmarks, you can use that.


Glossy: Add article modifier for a/an

It would be great to have a modifier to allow the common handling of articles depending on short/long form.
For example:

"a radio frequency (RF)" vs "an RF" (because the latter is spelled with a vowel sound: "ar-ef")
"an untranslatable string (UTS)" vs "a UTS" (because the latter is spelled without a vowel sound: "ju-tee-ess")

Also, the combination with the :cap modifier to capitalize the A/An should be forseen.
Suggestion 🅰
Add two modifiers :a-an and :an-a that add "a" or "an" in front of the word depending on first or subsequent usage like so:

@rf:a-an would get prefixed with "a " on first and "an " on subsequent usage
@uts:an-a would get prefixed with "an " on first and "a " on subsequent usage

Concise, but also limited.
Suggestion 🅱
Add a single modifier :a to prepend the article if used as @rf:a or @uts:a. The default would be (for english):

for short form: use "an" if short form starts with any of "AEFHILMNORSX", otherwise use "a"
for long form: use "an" if long form starts with any of "aeiou", otherwise use "a"

In addition, the articles could be customized for the respective long/short form in the glossary dict:
#let glossary = (
  rf: (
    short: "RF",
    long: "radio frequency",
    articles: (short: "an", long: "a"),
  )
  uts: (
    short: "UTS",
    long: "untranslatable string",
    articles: (short: "a", long: "an"),
  )
)

Verbose but cleaner, and allows customization for other languages and edge cases too.
I think I prefer suggestion 🅱.
If you want help, I could submit a PR on this.

I also prefer suggestion B. It's the simpler user interface, which is always going to be my first choice.
I intentionally left articles out of glossy because I always found it was easy enough for me to just write them manually, like:
[
  an @rf:short
  a @rf:long
]

However, this implies I always know whether the short or long form will be used. So, I'm completely open to implementing this.
I like the suggestion and will work on implementation in the next few days.

Quick update. Created branch issue-12, and added a __determine_article(word) utility, with test. I'm pretty happy with this as a start.
Next up, to add support for the :a (and I think an alias :an) modifier to check the data, then default to this new function. Plus make sure :cap works as expected, and additionally panic when :a/:an is ever combined with :pl.
Changes here: https://github.com/swaits/typst-collection/compare/main...issue-12

Alrighty... I think I have this in decent shape. Ended up refactoring __gls() a good bit because it was a mess.
I'll let it bake here a bit before packaging it up into a release.
Diff again, if interested: https://github.com/swaits/typst-collection/compare/main...issue-12

Works like a charm, thanks a lot @swaits!

This is merged upstream. Should be live now.


APIs V1登录错误

TS+ Version: v#.#.#
PHP Version:
Database Driver & Version:

Description:

(1/1) ErrorException
Undefined variable: loginrecord
in AuthController.php (line 81)
at HandleExceptions->handleError(8, 'Undefined variable: loginrecord', 'D:\plus\htdocs\thinksns-plus\app\Http\Controllers\APIs\V1\AuthController.php', 81, array('request' => object(Request), 'phone' => *.0, 'password' => '123456', 'user' => object(User), 'deviceCode' => 'Win7', 'token' => object(AuthToken)))
in AuthController.php (line 81)
Steps To Reproduce:

plus.dev/web/login
登录注册
Fixed step:
DB::transaction(function () use ($token, $user)

[ ] fixed.

Thanks, has been repaired.


Rename directory and package structure for more signers.

/test pull-tekton-chains-integration-tests

/lgtm

/approve