Sonarqube configuration for Vnext build

Hello Team
I want to create sonarbuild (Vnext) for my TFS server, our sonar server is very old (4.5.2 and C# plugin is 3.3) so i dont thing so this will work for Vnext build ?
so for this I have to create my own sonar server, if i installed sonarqube 5.2 do i need to install Mysql server and what could be the minimum supported C# plugin i have to used and is there any other tool required apart from this ? (I am new to sonarqube :)  )
TFS server version is 2015 Update1
Regards
Dushyant

@dpadhya1990  - I recommend you install the LTS (long term support) version of SonarQube, which is now 5.6.1. I don't recommend you install 5.2, it's quite old and many features will not work with TFS Build.
By default, SonarQube uses an in-memory database for evaluation purposes. You have to install and configure a database of your own for any real work, otherwise you won't be able to upgrade from one version of SQ to the next. But the in-memory one is good enough to configure your builds etc. You can use MySQL, but you can also use the free SQL Server Express
After you install SQ, log in as admin and go to the update centre. The C# plugin is installed by default, you just need to update it to the latest version. We do not support any non official version of SonarQube / C# plugin, so if you encounter a problem we'll usually ask you to update to the latest.
See our blog for more articles related to this: https://blogs.msdn.microsoft.com/visualstudioalm/tag/sonarqube/
Also, on your build agent, make sure you install Java (the JRE, you don't need the whole JDK).

Hello bgavrilMS
Thanks for the reply, do i need to download sonar runner as well ?
Regards
Dushyant

No, the build task will take care of all of that for you. You only need to install the SQ server somewhere and make sure Java is installed on the build agent.

Hello bgavrilMS
Thanks for the help,
I had created sample sonar build in TFS (VNext version) for my test application, i had installed all the required component for this i have sonar server and java installed on my agent but till its showing error as no agent found could be found with the following capabilities: SonarQube, msbuild, java, visual studio, vstest but i think i had all the capabilities available in my agent ( i am not able to add screen shot here but i had posted same question TFS forum with screen shot : https://social.msdn.microsoft.com/Forums/en-US/42928578-1166-4d35-91b0-5099661830b7/tfs-vnext-build-for-sonar?forum=tfsbuild
please let me know if missed something in configuration
Regards
Dushyant

A couple of questions:

Are you sure you're building with the right agent? Maybe you're using a different agent queue.
2.Have you completed any build on this agent, for example one without the sonarqube tasks?

I don't think we've ever placed a "SonarQube" capability request on the tasks, we only ask for msbuild and java.

hello
Thanks for the reply
Yes i have created CI build here which ran successfully

Hello again
Build at least started i had made such silly mistake,  under general --> demands sonar was added as exits, i delete that and run build it worked. i think this was the thing which preventing build to start.

Makes sense. In general I avoid editing agent capabilities / demands. The SonarQube tasks rely solely on Java to run.

Hello bgavrilMS
Thanks a lot for your reply i am to generate dashboard and seems all working fine except in side unit test coverage instead of results its showing as hyphen ( - )
is there any configuration i have to do or any additional plugin is required ?
in build output i can see My unit test cases are passed. kindly adviced
Regards
Dushyant Padhya

You shouldn't need to do anything.
In your MSTest / VSTest build task - did you enable code coverage?

yes code coverage is enabled (marked as checked)  in VS test build task

I just ran a build and I confirm I cannot see the code coverage file as well. I logged a bug on the SonarQube Scanner that is owned by Sonar Source to track this: https://jira.sonarsource.com/browse/SONARMSBRU-262
Thanks for reporting!

Hi,
We have a on prem installation of TFS (TFS 2017) and I am attempting to integrate SonarQube analysis into our build steps. I have installed the SonarQube extension on the TFS server and added a service endpoint to point to a server where I have SonarQube Server installed and configured.
When I attempting to trigger a build, I am getting an error "No agents could be found with the following capabilities: msbuild, java, visualstudio". Does my build server need JRE to be installed to get the SonarQube build steps to work? SonarQube website says this:
**Installation
Make sure the .NET Framework v4.5.2+ is installed
Make sure the Java Runtime Environment 8 is installed
Install the extension from the marketplace**

@venky76v - if you go to the sonar extension in the marketplace there’s a support link.  You can ask questions about sonar and it’s extension there


Channelz++ Part 5: GetServerSockets Support

Build on #16758 and #16760
Tracking: #15988

****************************************************************

libgrpc.so

     VM SIZE                                                                   FILE SIZE
 ++++++++++++++ GROWING                                                     ++++++++++++++
  +0.2% +1.42Ki [None]                                                      +22.6Ki  +0.2%
      +0.2% +1.32Ki [Unmapped]                                                  +22.6Ki  +0.2%
      +3.1%     +32 [None]                                                            0  [ = ]
     +10.0%      +8 inproc_vtable                                                    +8 +10.0%
      +0.6%      +8 vtable                                                           +8  +0.6%
       +20%      +8 vtable for grpc_core::channelz::ServerNode                       +8   +20%
       +20%      +8 vtable for grpc_core::channelz::SocketNode                       +8   +20%
       +14%      +8 vtable for grpc_core::channelz::ChannelNode                      +8   +14%
       +20%      +8 vtable for grpc_core::channelz::SubchannelNode                   +8   +20%
       +14%      +8 vtable for grpc_core::channelz::ClientChannelNode                +8   +14%
       +20%      +8 vtable for grpc_core::channelz::BaseNode                         +8   +20%
   +29%    +735 src/core/lib/channel/channelz.cc                               +735   +29%
      [NEW]    +384 grpc_core::channelz::ServerNode::RenderServerSockets           +384  [NEW]
      +201%    +299 grpc_core::channelz::ServerNode::RenderJson                    +299  +201%
      [NEW]     +66 grpc_core::channelz::ServerNode::ServerNode                     +66  [NEW]
      [NEW]     +47 grpc_core::channelz::BaseNode::RenderServerSockets              +47  [NEW]
      +1.3%      +2 [Unmapped]                                                       +2  +1.3%
  +2.5%    +368 src/core/lib/surface/server.cc                                 +368  +2.5%
      [NEW]    +354 grpc_server_populate_listen_sockets                            +354  [NEW]
      +1.1%      +8 grpc_server_create                                               +8  +1.1%
      +1.6%      +6 [Unmapped]                                                       +6  +1.6%
  +3.1%     +80 src/core/lib/channel/channelz_registry.cc                       +80  +3.1%
      [NEW]     +69 grpc_channelz_get_server_sockets                                +69  [NEW]
      +7.2%     +11 [Unmapped]                                                      +11  +7.2%
  +3.4%     +48 src/core/lib/channel/connected_channel.cc                       +48  +3.4%
       +17%     +24 bind_transport                                                  +24   +17%
       +18%     +15 [Unmapped]                                                      +15   +18%
      [NEW]      +9 grpc_connected_channel_get_socket_uuid                           +9  [NEW]
  +0.1%     +16 src/core/ext/transport/chttp2/transport/chttp2_transport.cc     +16  +0.1%
      +1.6%     +11 [Unmapped]                                                      +11  +1.6%
      [NEW]      +5 get_socket_uuid                                                  +5  [NEW]
  +0.1%     +16 src/core/ext/transport/inproc/inproc_transport.cc               +16  +0.1%
      +5.6%     +13 [Unmapped]                                                      +13  +5.6%
      [NEW]      +3 get_socket_uuid                                                  +3  [NEW]
  +0.8%     +16 src/core/lib/transport/transport.cc                             +16  +0.8%
      +6.4%     +10 [Unmapped]                                                      +10  +6.4%
      [NEW]      +6 grpc_transport_get_socket_uuid                                   +6  [NEW]

  +0.2% +2.66Ki TOTAL                                                       +23.9Ki  +0.2%

****************************************************************

libgrpc++.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++

 -------------- SHRINK --------------
  [ = ]       0 [None]     -48  -0.0%

  [ = ]       0 TOTAL      -48  -0.0%

[trickle] No significant performance differences

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,964,948      Total (>)      1,964,792

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
 3,683,570       Core (>)      3,681,546

10,889,084      Total (>)     10,887,059

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE                                                                FILE SIZE
 ++++++++++++++ GROWING                                                  ++++++++++++++
  +0.2% +1.15Ki [None]                                                   +20.8Ki  +0.2%
      +0.2% +1.07Ki [Unmapped]                                               +20.7Ki  +0.2%
      +3.1%     +32 [None]                                                         0  [ = ]
       +20%      +8 vtable for grpc_core::channelz::ServerNode                    +8   +20%
       +20%      +8 vtable for grpc_core::channelz::SocketNode                    +8   +20%
       +14%      +8 vtable for grpc_core::channelz::ChannelNode                   +8   +14%
       +20%      +8 vtable for grpc_core::channelz::SubchannelNode                +8   +20%
       +14%      +8 vtable for grpc_core::channelz::ClientChannelNode             +8   +14%
       +20%      +8 vtable for grpc_core::channelz::BaseNode                      +8   +20%
   +17%    +447 src/core/lib/channel/channelz.cc                            +447   +17%
      [NEW]    +384 grpc_core::channelz::ServerNode::RenderServerSockets        +384  [NEW]
      [NEW]     +66 grpc_core::channelz::ServerNode::ServerNode                  +66  [NEW]
      [NEW]     +47 grpc_core::channelz::BaseNode::RenderServerSockets           +47  [NEW]
      +8.6%     +13 [Unmapped]                                                   +13  +8.6%
  +2.4%    +352 src/core/lib/surface/server.cc                              +352  +2.4%
      [NEW] +1.13Ki grpc_server_setup_transport_with_socket_uuid             +1.13Ki  [NEW]
      [NEW]    +334 grpc_server_populate_server_sockets                         +334  [NEW]
      +1.1%      +8 grpc_server_create                                            +8  +1.1%
      +0.5%      +2 [Unmapped]                                                    +2  +0.5%
  +3.1%     +80 src/core/lib/channel/channelz_registry.cc                    +80  +3.1%
      [NEW]     +69 grpc_channelz_get_server_sockets                             +69  [NEW]
      +7.2%     +11 [Unmapped]                                                   +11  +7.2%
  +0.6%     +16 src/core/ext/transport/chttp2/server/chttp2_server.cc        +16  +0.6%
      +3.4%     +16 on_handshake_done                                            +16  +3.4%

  +0.1% +2.02Ki TOTAL                                                    +21.7Ki  +0.2%

****************************************************************

libgrpc++.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++
  [ = ]       0 [None]      +8  +0.0%

  [ = ]       0 TOTAL       +8  +0.0%

The new code here (just the last commit) looks good.  I'll wait for the dependent PRs to be merged before approving.

[trickle] No significant performance differences

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,964,988      Total (>)      1,964,892

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
 3,683,754       Core (>)      3,682,198

10,889,276      Total (>)     10,887,721

[trickle] No significant performance differences

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,965,012      Total (>)      1,964,916

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
 3,685,586       Core (>)      3,682,198

10,891,099      Total (>)     10,887,716

[microbenchmarks] Performance differences noted:
Benchmark                                         cpu_time    real_time
------------------------------------------------  ----------  -----------
BM_HasClearGrpcStatus<ErrorWithHttpError>         +16%        +16%
BM_HasClearGrpcStatus<ErrorWithNestedGrpcStatus>  +5%         +5%
BM_MetadataRefUnrefExternal                       +12%        +12%

****************************************************************

libgrpc.so

     VM SIZE                                                                    FILE SIZE
 ++++++++++++++ GROWING                                                      ++++++++++++++
  +0.3% +2.08Ki [None]                                                       +34.2Ki  +0.4%
      +0.3% +1.95Ki [Unmapped]                                                   +34.1Ki  +0.4%
      [NEW]     +48 vtable for grpc_core::channelz::ListenSocketNode                 +48  [NEW]
      +3.1%     +32 [None]                                                             0  [ = ]
       +20%      +8 vtable for grpc_core::channelz::ServerNode                        +8   +20%
       +20%      +8 vtable for grpc_core::channelz::SocketNode                        +8   +20%
       +14%      +8 vtable for grpc_core::channelz::ChannelNode                       +8   +14%
       +20%      +8 vtable for grpc_core::channelz::SubchannelNode                    +8   +20%
       +14%      +8 vtable for grpc_core::channelz::ClientChannelNode                 +8   +14%
       +20%      +8 vtable for grpc_core::channelz::BaseNode                          +8   +20%
   +34%    +884 src/core/lib/channel/channelz.cc                                +884   +34%
      [NEW]    +384 grpc_core::channelz::ServerNode::RenderServerSockets            +384  [NEW]
      +190%    +283 grpc_core::channelz::ServerNode::RenderJson                     +283  +190%
      [NEW]     +75 grpc_core::channelz::ListenSocketNode::RenderJson                +75  [NEW]
      [NEW]     +66 grpc_core::channelz::ServerNode::ServerNode                      +66  [NEW]
      [NEW]     +47 grpc_core::channelz::BaseNode::RenderServerSockets               +47  [NEW]
      [NEW]     +30 grpc_core::channelz::ListenSocketNode::ListenSocketNode          +30  [NEW]
      [NEW]     +28 grpc_core::channelz::ListenSocketNode::~ListenSocketNode         +28  [NEW]
      [NEW]     +19 grpc_core::channelz::ListenSocketNode::~ListenSocketNode         +19  [NEW]
      +9.9%     +15 [Unmapped]                                                       +15  +9.9%
  +4.1%    +608 src/core/lib/surface/server.cc                                  +608  +4.1%
      [NEW] +1.13Ki grpc_server_setup_transport                                  +1.13Ki  [NEW]
      [NEW]    +334 grpc_server_populate_server_sockets                             +334  [NEW]
      [NEW]    +272 grpc_server_populate_listen_sockets                             +272  [NEW]
      [NEW]     +75 grpc_server_add_listener                                         +75  [NEW]
      +1.1%      +8 grpc_server_create                                                +8  +1.1%
  +8.5%    +205 src/core/ext/transport/chttp2/server/chttp2_server.cc           +205  +8.5%
       +13%    +125 grpc_chttp2_server_add_port                                     +125   +13%
       +32%     +72 tcp_server_shutdown_complete                                     +72   +32%
      +3.4%     +16 on_handshake_done                                                +16  +3.4%
  +3.1%     +80 src/core/lib/channel/channelz_registry.cc                        +80  +3.1%
      [NEW]     +69 grpc_channelz_get_server_sockets                                 +69  [NEW]
      +7.2%     +11 [Unmapped]                                                       +11  +7.2%

  +0.3% +3.81Ki TOTAL                                                        +36.0Ki  +0.4%

****************************************************************

libgrpc++.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++
  [ = ]       0 [None]      +8  +0.0%

  [ = ]       0 TOTAL       +8  +0.0%

[trickle] No significant performance differences

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,964,912      Total (>)      1,964,816

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
 3,684,926       Core (>)      3,681,546

10,890,448      Total (>)     10,887,064

[microbenchmarks] Performance differences noted:
Benchmark                                  cpu_time    real_time
-----------------------------------------  ----------  -----------
BM_ErrorGetMissingInt                      +12%        +12%
BM_ErrorGetStatusCode<SimpleError>         +6%         +6%
BM_HasClearGrpcStatus<ErrorWithHttpError>  +16%        +16%
BM_MetadataRefUnrefExternal                +25%        +25%

****************************************************************

libgrpc.so

     VM SIZE                                                                    FILE SIZE
 ++++++++++++++ GROWING                                                      ++++++++++++++
  +0.2% +1.72Ki [None]                                                       +32.8Ki  +0.4%
      +0.3% +1.71Ki [Unmapped]                                                   +32.8Ki  +0.4%
      [NEW]     +40 vtable for grpc_core::channelz::ListenSocketNode                 +40  [NEW]
   +29%    +837 src/core/lib/channel/channelz.cc                                +837   +29%
      [NEW]    +384 grpc_core::channelz::ServerNode::RenderServerSockets            +384  [NEW]
      +190%    +283 grpc_core::channelz::ServerNode::RenderJson                     +283  +190%
      [NEW]     +75 grpc_core::channelz::ListenSocketNode::RenderJson                +75  [NEW]
      [NEW]     +66 grpc_core::channelz::ServerNode::ServerNode                      +66  [NEW]
      [NEW]     +30 grpc_core::channelz::ListenSocketNode::ListenSocketNode          +30  [NEW]
      [NEW]     +28 grpc_core::channelz::ListenSocketNode::~ListenSocketNode         +28  [NEW]
      [NEW]     +19 grpc_core::channelz::ListenSocketNode::~ListenSocketNode         +19  [NEW]
     +10.0%     +15 [Unmapped]                                                       +15 +10.0%
  +4.1%    +608 src/core/lib/surface/server.cc                                  +608  +4.1%
      [NEW] +1.13Ki grpc_server_setup_transport                                  +1.13Ki  [NEW]
      [NEW]    +334 grpc_server_populate_server_sockets                             +334  [NEW]
      [NEW]    +272 grpc_server_populate_listen_sockets                             +272  [NEW]
      [NEW]     +75 grpc_server_add_listener                                         +75  [NEW]
  +8.5%    +205 src/core/ext/transport/chttp2/server/chttp2_server.cc           +205  +8.5%
       +13%    +125 grpc_chttp2_server_add_port                                     +125   +13%
       +32%     +72 tcp_server_shutdown_complete                                     +72   +32%
      +3.4%     +16 on_handshake_done                                                +16  +3.4%
  +3.1%     +80 src/core/lib/channel/channelz_registry.cc                        +80  +3.1%
      [NEW]     +65 grpc_channelz_get_server_sockets                                 +65  [NEW]
      +9.9%     +15 [Unmapped]                                                       +15  +9.9%

  +0.2% +3.41Ki TOTAL                                                        +34.5Ki  +0.3%

****************************************************************

libgrpc++.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++

 -------------- SHRINK --------------
  [ = ]       0 [None]     -16  -0.0%

  [ = ]       0 TOTAL      -16  -0.0%

[trickle] No significant performance differences

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,965,331      Total (<)      1,965,335

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
 3,685,906       Core (>)      3,682,710

10,891,423      Total (>)     10,888,236

[microbenchmarks] Performance differences noted:
Benchmark                    cpu_time    real_time
---------------------------  ----------  -----------
BM_ErrorGetMissingInt        +6%         +6%
BM_MetadataRefUnrefExternal  +27%        +27%

[trickle] No significant performance differences

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,965,914      Total (=)      1,965,914

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
 3,686,418       Core (>)      3,684,154

10,891,942      Total (>)     10,889,673

****************************************************************

libgrpc.so

     VM SIZE                                                                    FILE SIZE
 ++++++++++++++ GROWING                                                      ++++++++++++++
  +0.1% +1.10Ki [None]                                                       +13.9Ki  +0.1%
      +0.2% +1.06Ki [Unmapped]                                                   +13.9Ki  +0.1%
      [NEW]     +40 vtable for grpc_core::channelz::ListenSocketNode                 +40  [NEW]
   +13%    +437 src/core/lib/channel/channelz.cc                                +437   +13%
      +190%    +283 grpc_core::channelz::ServerNode::RenderJson                     +283  +190%
      [NEW]     +75 grpc_core::channelz::ListenSocketNode::RenderJson                +75  [NEW]
      [NEW]     +30 grpc_core::channelz::ListenSocketNode::ListenSocketNode          +30  [NEW]
      [NEW]     +28 grpc_core::channelz::ListenSocketNode::~ListenSocketNode         +28  [NEW]
      [NEW]     +19 grpc_core::channelz::ListenSocketNode::~ListenSocketNode         +19  [NEW]
      +1.2%      +2 [Unmapped]                                                        +2  +1.2%
  +1.8%    +272 src/core/lib/surface/server.cc                                  +272  +1.8%
      [NEW]    +272 grpc_server_populate_listen_sockets                             +272  [NEW]
      [NEW]     +75 grpc_server_add_listener                                         +75  [NEW]
  +7.8%    +189 src/core/ext/transport/chttp2/server/chttp2_server.cc           +189  +7.8%
       +13%    +125 grpc_chttp2_server_add_port                                     +125   +13%
       +32%     +72 tcp_server_shutdown_complete                                     +72   +32%

  +0.1% +1.98Ki TOTAL                                                        +14.8Ki  +0.1%

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[microbenchmarks] Performance differences noted:
Benchmark                    cpu_time    real_time
---------------------------  ----------  -----------
BM_ErrorGetIntFromNoError    -4%         -4%
BM_MetadataRefUnrefExternal  -4%         -4%

[trickle] No significant performance differences

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,965,914      Total (=)      1,965,914

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
 3,686,418       Core (>)      3,684,154

10,891,935      Total (>)     10,889,675

[microbenchmarks] Performance differences noted:
Benchmark                                         cpu_time    real_time
------------------------------------------------  ----------  -----------
BM_ErrorGetIntFromNoError                         -7%         -7%
BM_ErrorGetStatusCode<ErrorWithHttpError>         +8%         +8%
BM_ErrorGetStatusCode<ErrorWithNestedGrpcStatus>  +7%         +7%
BM_MetadataRefUnrefExternal                       -16%        -16%

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,965,914      Total (=)      1,965,914

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
10,891,936      Total (<)     10,891,942

 No significant differences in binary sizes

[microbenchmarks] No significant performance differences


Add cmd_pandora.py. Update README.

In the setup.py, I changed Biopython to biopython in install_requires. Now the installation with PyPi is successful (before it wasn't finding a matching distribution for biopython).
Because of https://test.pypi.org/help/#file-name-reuse, I upgraded the version from 2.0.0a1 to 2.0.0a2 (even if it would be better to avoid numbering for alpha, beta, gamma, and to keep the standard major + minor + patch numbering only, + alpha/beta/gamma with no numbering).
To upload the package on test.pypi (after having installed build and twine):

Change the name field in setup.py from PANDORA to CSB-PANDORA (https://test.pypi.org/help/#project-name)
python -m build
python3 -m twine upload -u <username> -p <password> --repository-url https://test.pypi.org/legacy/ dist/* --verbose


Cucumber extends confusion

In our [scenarios.md] (https://github.com/SERG-Delft/jpacman-framework/blame/master/doc/scenarios.md#L94) file we mention that scenario 2.5 extends 2.1.
Most students think the extends word is some sort of cucumber keyword and expect the feature to automatically get the steps from 2.1. This is however not the case. We actually expect them to put the relevant steps from 2.1 into 2.5. Any suggestions to make this terminology less confusing?

Expands upon?


Could not execute process probe-run --chip nRF52840_xxAA

I keep getting the same error, unable to find the exact root cause. Appreciate any suggestion to move forward !
cargo run --bin ble_bas_peripheral --features nrf52840
   Compiling nrf-softdevice-examples v0.1.0 (/Users/tomvictor/git/tom/embassy/ble/examples)
    Finished dev [unoptimized + debuginfo] target(s) in 0.25s
     Running `probe-run --chip nRF52840_xxAA /Users/tomvictor/git/tom/embassy/ble/target/thumbv7em-none-eabihf/debug/ble_bas_peripheral`
error: could not execute process `probe-run --chip nRF52840_xxAA /Users/tomvictor/git/tom/embassy/ble/target/thumbv7em-none-eabihf/debug/ble_bas_peripheral` (never executed)

Caused by:
  No such file or directory (os error 2)

Thanks

cargo install probe-run

actually the issue is the README tells you to install probe-rs, but the Cargo runner was still set to probe-run. I've fixed this in https://github.com/embassy-rs/nrf-softdevice/commit/182605bd9e5b90fa1a34534dd756a2fd674c1ab7 . Please update your git checkout and follow the instructions in the README, they should work now.

Thanks @Dirbaio  for the quick reply and the fix. I really appreciate your efforts.


add haproxy dockerfile

oracle#2633

Can you also test/confirm that logging is visible when running docker logs, i.e. that output for both stdout and stderr is sent to the console/foreground?

Yes, the logging is visible when running docker logs

I've just noticed that the file layout is not valid: you need to add a version directory, i.e. oraclelinux8/haproxy/1.8/Dockerfile so that the automation can create the right tags. You can create a symlink named latest to the latest available version to create that tag too.

You can enable Actions on your fork of this repo to test that the action at least picks up and builds the container image. It will push the result to your own profile, not here.

version 1.8 added for OL8 and version 2.4 added for OL9 to match the package installed


Balance component

Check the created Address component as a reference. Add it to the main page with an example.

Fixed on #12


Decide Technologies for Data Engineering

Select the technologies to be used for the Data Engineering part.
CLOUD STORAGE | MODEL STORAGE | ATTENDANCE RECORDS | VERSION CONTROL | REST API
Please use the Google Sheets Morphological Box previously provided

Done.
Storage: AWS S3
Model Storage: MLFlow or S3
Attendance Records: NoSQL (probably)
Version Control: GitHub, of course
API: REST API (forced)


[Question]: Demo ran failed in ROS2 Humble

Question
I tested three demo in the simulation, but all of them failed to run.Did I miss installing a package?
Terminal output:
$ python3 turret_mixed_profile_control.py
[INFO] [1730685437.354623507] [interbotix_robot_manipulation]: Initialized InterbotixRobotNode!
[INFO] [1730685437.419791908] [interbotix_robot_manipulation]:
	Robot Name: pxxls
	Robot Model: pxxls
[INFO] [1730685437.420147354] [interbotix_robot_manipulation]: Initialized InterbotixRobotXSCore!
Traceback (most recent call last):
  File "/home/ubuntu/ros2_interbotix_ws/src/interbotix_ros_turrets/interbotix_ros_xsturrets/interbotix_xsturret_control/demos/turret_mixed_profile_control.py", line 113, in <module>
    main()
  File "/home/ubuntu/ros2_interbotix_ws/src/interbotix_ros_turrets/interbotix_ros_xsturrets/interbotix_xsturret_control/demos/turret_mixed_profile_control.py", line 58, in main
    robot = InterbotixTurretXS(
  File "/home/ubuntu/ros2_interbotix_ws/install/interbotix_xs_modules/lib/python3.10/site-packages/interbotix_xs_modules/xs_robot/turret.py", line 107, in __init__
    self.turret = InterbotixTurretXSInterface(
  File "/home/ubuntu/ros2_interbotix_ws/install/interbotix_xs_modules/lib/python3.10/site-packages/interbotix_xs_modules/xs_robot/turret.py", line 185, in __init__
    rclpy.spin_until_future_complete(self.core, self.future_group_info)
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/__init__.py", line 248, in spin_until_future_complete
    executor.spin_until_future_complete(future, timeout_sec)
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 288, in spin_until_future_complete
    self.spin_once_until_future_complete(future, timeout_sec)
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 716, in spin_once_until_future_complete
    self.spin_once(timeout_sec)
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 705, in spin_once
    handler, entity, node = self.wait_for_ready_callbacks(timeout_sec=timeout_sec)
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 691, in wait_for_ready_callbacks
    return next(self._cb_iter)
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 492, in _wait_for_ready_callbacks
    subscriptions.extend(filter(self.can_execute, node.subscriptions))
AttributeError: 'InterbotixRobotXSCore' object has no attribute 'subscriptions'

Robot Model
pxxls
Operating System
Other (Describe in "Anything Else")
ROS Version
Other (Describe in "Anything Else")
Anything Else
No response

The repair and addition definitions are as follows：
/home/ubuntu/ros2_interbotix_ws/src/interbotix_ros_toolboxes/interbotix_xs_toolbox/interbotix_xs_modules/interbotix_xs_modules/xs_robot/core.py
from rclpy.callback_groups import ReentrantCallbackGroup
from rclpy.duration import Duration
from rclpy.logging import LoggingSeverity, set_logger_level
from sensor_msgs.msg import JointState
from trajectory_msgs.msg import JointTrajectory, JointTrajectoryPoint
from rclpy.subscription import Subscription
from rclpy.timer import Timer
from rclpy.waitable import Waitable
from rclpy.service import Service
from rclpy.client import Client
from rclpy.guard_condition import GuardCondition
class InterbotixRobotXSCore:
"""Class that interfaces with the xs_sdk node ROS interfaces."""
joint_states: Optional[JointState]
robot_node: InterbotixRobotNode
subscriptions: List[Subscription] = []
guards: List[GuardCondition] = []
timers: List[Timer] = []
clients: List[Client] = []
services: List[Service] = []
waitables: List[Waitable] = []

I ran into this as well, and had to make similar changes across other files and packages. I'll see if I can open some PRs in the next couple days.


ceph_release_num.ceph_release when clause causing warnings

When I use bluestore in ceph-ansible, I see warnings about when statements.   I'm running ansible RPM ansible-<IP_ADDRESS>-1.el7.noarch .   This article is providing a hint on how to fix it.
For example:
TASK [ceph-osd : check if bluestore is supported by the selected ceph version] ***
 [WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: ceph_release_num.{{ ceph_release }} <
ceph_release_num.luminous
skipping: [ip-172-31-38-188]

related BZ :
https://bugzilla.redhat.com/show_bug.cgi?id=1454688

Thanks Ben, closing this since it's tracked in BZ.


Typo in the first Note in "How retention works with Microsoft Teams" section

The first Note in the "How retention works with Microsoft Teams" section has an extra "a" in the first sentence.  It should read "and you delete a mailbox" instead of "and you a delete a mailbox".

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

ID: 147f081a-c235-3400-23c9-8b4de7c9bbbc
Version Independent ID: 0d8958fb-247e-c05b-999e-3cbd93e943c9
Content: Learn about retention for Teams - Microsoft 365 Compliance
Content Source: microsoft-365/compliance/retention-policies-teams.md
Service: o365-seccomp
GitHub Login: @cabailey
Microsoft Alias: cabailey

Thanks for flagging!  Getting this fixed today.


Maven repository

Could you please publish this to maven repository on your package there is no drunk listed
https://mvnrepository.com/artifact/com.github.jarlakxen

It would be amazing if you could cross compile for 2.11, 2.12 and 2.13

Builds have started failing now.

Reason: JFrog is sunsetting bintray. This is in effect since 1st May.
https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

+1
Please publish to maven


HTMLInputElement

https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement
I noticed there was no support for this type of element when I tried to get the label property of an input. If an input element has an associated label, in JavaScript, it can be accessed via the label property.
Curiously, label isn't documented on MDN, but does in fact work... needs investigating.

A bit too broad for pursuing at the moment.


Enforce Minimal Decision Priciple in PRCI

We have the Minimal Decision Principle.
We need it applied in PRCI. Clearly it is not applied if we take a look here:

The user, having chosen to make a TRANSPARENCY request is given a choice (again) of other requests. This information MUST be hidden.
The principle is violated in other places too. E.g. for the TRASNPARENCY demand it is reasonable to assume the user wants to set TRANSAPRENCY and not any of the subcategories, unless the user explictely wants to specify it. SO the interface MUST pre-select TRANSPARENCY and only offer the option to go into TRANSPARENCY.* specific choices.
Also it should be possible for Systems to configure a subset of demands they allow. So it is important not to show demands that are not supported (the checkboxes currently shown but disabled)

Also it should be possible for Systems to configure a subset of demands they allow. So it is important not to show demands that are not supported (the checkboxes currently shown but disabled)

This actually is included in the component already, via the "actions" attribute - see this storybook example

Great. Thanx


FIXXXXXX

@@               Coverage Report               @@
##              master LasseRafn-patch-    +/- ##
=================================================
- Coverage      83.49%           79.31%    -4.18%
  Complexity        41               41         0
=================================================
  Files              2                2         0
  Lines            109               87       -22
=================================================
- Hits            1170              774      -396
  Misses            18               18         0

Files with reduced coverage (1)

File
master
LasseRafn-patch-11
Change

src/Reader.php
83.49 %
79.31 %
-4.18 %


feat new props for select date

new feature:
new prop onDateSelect added
that triggered when the user select a date and will return the selected date
why:
this feature is so useful when we want a date even if it's selected
how:
I have written condition in day.js file that checks if touched date is selected or not and based on that condition
onDateSelect and onDateChange
would be called

Thanks


MyAccount Disable via UI in Sub Org Not Working

Describe the issue:
Even though MyAccount is disabled via the UI in a sub-organization, the functionality is not working as expected. The UI shows a successful disable message, but it doesn't update via the API, and there is no change in the toggle for B2B MyAccount settings.
How to reproduce:
Navigate to the sub-organization's.
Disable the B2B MyAccount option.
Observe the success message confirming the disable action.
Check the API response and verify that no update has occurred.
Check the B2B MyAccount settings toggle; it remains unchanged.
Expected behavior:
Disabling MyAccount via the UI should correctly update the API, and the toggle in the B2B MyAccount settings should reflect the change.
Environment information (Please complete the following information; remove  any unnecessary fields) :

Product Version: wso2is-7.0.1-SNAPSHOT

Optional Fields
Related issues:

Suggested labels:

Analysis
When the root organization "myaccount" is enabled and the sub-organization "myaccount" is disabled, during the application GET request from the FragmentApplicationMgtListener [1], the ApplicationEnabled property is overridden as true from the root organization, leading to an incorrect result in the API response.
[1] https://github.com/wso2-extensions/identity-organization-management/blob/3da1ad8bd2d265f13144d58041c6a0f65caa7e34/components/org.wso2.carbon.identity.organization.management.application/src/main/java/org/wso2/carbon/identity/organization/management/application/listener/FragmentApplicationMgtListener.java#L368.
Solution:
The Shared application's property should be inherited from the root organization. Hence the application enabled property should be inherited from the root organization and the UI element to enable/disable the application should be removed.

Fixed with: https://github.com/wso2/identity-apps/pull/6917


PTS and Galaxy S7

Cannot get into Constructor settings after initial install. Clicking the gear in the Pebble app to get to the settings shows a black screen on my Galaxy S7, hangs the phone and also disconnects my PTS.

Also, when I can get into the settings, the only thing that updates in real time is the background color. Nothing else updates in real time, so I can't be sure where anything is when I set their parameters. Once I get save, everything goes to where it's set, but I can't get into the settings again without deleting and reinstalling the watchface (see above comment).

My first guess is that you're unable to connect to the websocket server. Let's rule out other possibilities first.
Can you try this watchface and see if you get the same behavior. It also uses pebble-clay and liveconfig to handle settings.
Also try this one. It uses just pebble-clay.
Hopefully between those two we can narrow down the possibilities of what is wrong.

Thank you for the quick reply.
Hogwarts Pride worked just fine. I was able to pick the background and it changed instantly as I switched through them. I was also able to load the settings page after installing.
DSEG 2.0 loaded, and I was able to get into the settings, but when choosing the background color, it did not change on the watch until I hit Save.

Excellent. Both are expected behavior. DSEG 2.0 doesn't update until you hit save. You can uninstall those faces if you'd like.
Unfortunately that doesn't help us get closer to figuring out what's going on. It's possible that the config page is just too large for you phone; the way Clay works is it serves up what is called a data URI. Because of how many settings there are in Constructor the data URI is quite long.
Try some of these S7 suggestions related to issues with web browsing. It's been a while since I used an Android phone, but I do remember that sometimes a cache can get corrupted and cause app issues.

Would it help to know that at one point, it worked perfectly? I did receive a software update the other day and I didn't notice these issues until after that happened.
I will try the suggestions on that page and see what I can see. Thank you very much for your help and quick replies.

Just tried setup on another phone connected to my PTS. Did the same thing.

Another user reported the same problem. Pixel XL running Android Nougat 7.1.2 with a Pebble 2 (diorite).
@ylwsub68 Do you mind posting your Android version number?

Here are all my specs to have them all in one place. Let me know if you need anything else.
Samsung Galaxy S7 (SM-G930P)
Android version 7.0 (software version QE1)
Pebble Time Steel (firmware v4.3)

The other phone I tried it on was an LG V20, latest Android version.


AMP headers (continued)

It turns out that when the AMP doc says:

Although the W3 CORS spec allows the value of * to be returned in the response, for improved security, you should validate and echo the value of the "Origin" header.

What they mean is: you must validate and echo the value of the "Origin" header.
Currently the feature doesn't work. I don't see any reason for this change to be a problem for other setups, especially since I keep the fallback wildcard value. Hopefully this is the last missing part.

Looks good to me, thanks!


treewide: fix backwards smart apostrophes

Description of changes

According to the Unicode Standard, you should use U+2019 RIGHT SINGLE QUOTATION MARK for apostrophes. Before this change, some of the text in this repo would use U+2018 LEFT SINGLE QUOTATION MARKs instead.
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Oooooh, lol. Those typos are probably all mine. On my keyboard, both keys are directly next to each other. My font is usually too small to see the difference.

Thx

My font is usually too small to see the difference.

Yeah, most fonts make those two symbols look way too similar. I started using the Source Code Pro font so that I could see the difference more easily.


Composite module missing

Hi there!
I am trying the notebooks attached with the master release. Just upgraded geetools using pip but I keep getting a:
ImportError: cannot import name 'composite'
I can import all other modules fine. I saw that the module composite was added 3 days ago, maybe it isn't yet available on pip?
Thanks!

Hi @e5k! Yes, you are right, it's not available in pip yet. You can test it installing it directly from the repository:

pip uninstall geetools
navigate to where the cloned repository is
pip install .

That should work. Let me know.

Brilliant, thanks so much for the super fast answer! And thanks for all the tools too!

 And thank you for testing! It's great to know it's useful to someone else than me. =)

I know the feeling! Can I pick your brain on what I am trying to achieve?

On 13 Dec 2018, at 11:20 AM, Rodrigo E. Principe<EMAIL_ADDRESS>wrote:
You're welcome! And thank you for testing! It's great to know it's useful to someone else than me. =)
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/gee-community/gee_tools/issues/21#issuecomment-446828952, or mute the thread https://github.com/notifications/unsubscribe-auth/APkG7B8kbuNotmjI2RqzIp-py_kplp_Xks5u4cdtgaJpZM4ZQ1lX.


Program, project, script, code, file? Review code terminology for consistency.

Raised from a discussion with @microbit-mark.
It would be good to review the use of terminology for the user's code. It's easy enough to do by reviewing the strings file. We might be able to improve consistency.
Mark observed that "my program" is the default project name, which feels a little odd but the problem might be deeper.

Mark and Giles to discuss this.

This predated significant interface change. We finalised the strings long ago. We did make this one change: https://github.com/microbit-foundation/python-editor-v3/pull/541
Closing.


Error when canvas file is in the folder

I add word count goal to the folder. It works correctly. But if I add the canvas file to this folder and reload Obsidian, word count stops showing and this error shows up:
plugin:writing-goals:20432 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'contains')
    at GoalHelper.additionalFileTypes (plugin:writing-goals:20432:50)
    at GoalHelper.isValidFile (plugin:writing-goals:20429:98)
    at GoalHelper.getWordCountRecursive (plugin:writing-goals:20416:18)
    at GoalHelper.getWordCountRecursive (plugin:writing-goals:20423:44)
    at GoalHelper.createGoal (plugin:writing-goals:20340:87)
    at GoalHelper.updateGoalsFromSettings (plugin:writing-goals:20408:37)
    at async WritingGoals.loadNoteGoalData (plugin:writing-goals:22339:9)

I didn't add anything to the additional file types setting, so I expected canvas files to be ignored. Instead they are breaking something.

Also seeing this issue. Any resolution @anareaty ?

Could you try to explicitly put md into the field “Additional file types” under Writing goals settings?
I faced the same issue as here for canvas using the “Edit History” plugin that creates .edtz files in the same folder as updates file to maintain a local history.
Enabling this plugin, writing goals stopped up I manually remove any edtz file.
As a tentative, I explicitly put md as only file to check (without comma) and now canvas file and edtz seem to no longer interfere with Writing Goals.
Let me know if it works for you.

Is the developer looking here?? I'm getting a 'FAILED TO SHOW GOAL' error!!

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'dailyGoalCount')
at create_fragment$2 (plugin:writing-goals:4151:33)
at init (plugin:writing-goals:1018:34)
at new Simple_goal (plugin:writing-goals:4359:3)
at FileLabels.createSimpleGoal (plugin:writing-goals:4392:9)
at eval (plugin:writing-goals:4386:26)
at Array.forEach ()
at FileLabels.initFileLabels (plugin:writing-goals:4378:21)
at WritingGoals.loadNoteGoalData (plugin:writing-goals:22341:29)
at async GoalModal.onSubmit (plugin:writing-goals:20584:9)
create_fragment$2 @ plugin:writing-goals:4151
init @ plugin:writing-goals:1018
Simple_goal @ plugin:writing-goals:4359
createSimpleGoal @ plugin:writing-goals:4392
eval @ plugin:writing-goals:4386
initFileLabels @ plugin:writing-goals:4378
loadNoteGoalData @ plugin:writing-goals:22341

UPDATE: I found the issue! The HOMEPAGE plugin
When the Homepage plugin is enabled, the daily word goal plugin doesn't open and gives an error. You can disable the Homepage plugin, open the word goal window, and then reactivate the Homepage plugin. Thanks. @lynchjames  we love you and your plugin is amazing! Please don't leave us!! Thanks <3<3<3<3<3

I had this issue and adding just md does allow the plugin to work on folders with canvases, ignoring the canvas content.
I also found that putting md,canvas allowed it to work and count the canvas, but the word count for the canvas counts words in the JSON file for the canvas rather than parsing it to get the word count for just the content, which at least when I tested it gives 13 extra words per node.
It wouldn't be too hard to add support for counting words in canvas files by just parsing the JSON and adding up the word count for the text property of any object in the nodes array that has one. The Novel Word Count plugin added this behavior back in February for example.

Changes made in 0.10.4 to correctly count canvas content if you include canvas as an additional file type as @AustinBrrtt described.


Publish (text of, shortlinks to) accepted RFCs

Feature request: either rendered text of, or short-links to the rendered text of, accepted RFCs would be nice to have somewhere on rlo where the URLs can be shorter.
For example, rustc's diagnostics has some explanations that benefit from references out to an RFC; however, the current 'canonical' URLs for RFCs (the Github renderings) are longer than the prescribed 80-character limit, which is an error.
Perhaps something like doc.rust-lang.org/rfcs/NNNN, which either presents a rendering of the RFC formatted to be consistent with the rest of the Rust documentation, or which redirects to the Github rendering of the RFC?
Concretely, instead of requiring references to variable-length URLs like (the 102-character-long)
https://github.com/rust-lang/rfcs/blob/master/text/0558-require-parentheses-for-chained-comparisons.md

we consistently have 35 characters like
https://doc.rust-lang.org/rfcs/0558

I really like this idea. It would definitely make referencing the RFCs elsewhere easier, and I think make them more accessible to people. What sort of setup is needed to make this happen?


[Web] [Test] Flutter / CanvasKit Assertion failed on asynconiously loaded ListView, on subsequent tests

We currently working on automated integration tests. If I execute the below example via Web, I get the error:
Parent #18 has child #16. However, the child is attached to #17.
This does not happen, if I use the Material Navigator. Somehow the pages are not unloaded correctly.
I also had to remove the web history between tests, as VRouter is restoring the route once a new test starts, but that more seems to be a problem of flutter: html.window.history.replaceState({}, 'flutter', '');
Sorry that the example is quite long, but I could not simplify it further.
I think it does not properly dispose / pop the route, but I could be wrong. Maybe I need to delete further browser history, as the ListView structure is stored across the tests, maybe an optimizing feature of CanvasKit.
All in all a very weird bug, which I cannot find a workaround for.

Example
import 'dart:async';
import 'dart:html' as html;

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:vrouter/vrouter.dart';

const item0 = 'station0';
const item1 = 'station1';
var testCount = 0;

class HomeScreen extends StatelessWidget {
  const HomeScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Subpage'),
      ),
      body: const Text('Home'),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // Navigator.pushNamed(context, '/new');
          context.vRouter.to('/new', isReplacement: true);
        },
      ),
    );
  }
}

class NewScreen extends StatefulWidget {
  final int testCount;
  const NewScreen(this.testCount, {Key? key = const Key('new_screen')}) : super(key: key);

  @override
  State<NewScreen> createState() => _NewScreenState();
}

class _NewScreenState extends State<NewScreen> {
  bool isLoading = true;

  @override
  void initState() {
    Future.delayed(const Duration(seconds: 1)).then((value) {
      if (mounted) {
        setState(() {
          isLoading = false;
        });
      }
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    print('\x1B[35m Build new state in test $testCount \x1B[0m');

    final data = [item0];
    if (testCount == 0) {
      data.add(item1);
    }

    return Scaffold(
      appBar: AppBar(
        title: const Text('Subpage'),
      ),
      body: isLoading
          ? const CircularProgressIndicator()
          : ListView.builder(
              itemCount: data.length,
              itemBuilder: (context, index) {
                return Text(data[index]);
              },
            ),
    );
  }
}

Future<VRouter> vrouterApp(int testCount, StreamController urlStreamController) async {
  WidgetsFlutterBinding.ensureInitialized();

  final vRouterKey = GlobalKey<VRouterState>();

    return VRouter(
      key: vRouterKey,
      logs: VLogs.info,
      initialUrl: '/',
      routes: [
        VNester(
          path: null,
          widgetBuilder: (child) {
            urlStreamController.stream.distinct().listen((path) {
              print('\x1B[34m Route to path in test $testCount: $path \x1B[0m');
              vRouterKey.currentState?.to(path);
            });
            return child;
          },
          nestedRoutes: [
            VWidget(path: '/', widget: const HomeScreen()),
            VWidget(path: '/new', widget: NewScreen(testCount)),
          ],
        ),
        // With Material Navigator:
        // {'/': (context) {
        //   urlStreamController.stream.listen((path) {
        //     context.vRouter.to(path);
        //   });
        //   return const HomeScreen();
        // },
        // '/new': (context) => const NewScreen(),}
      ],
    );
}

void main() {
  IntegrationTestWidgetsFlutterBinding.ensureInitialized();

  group('end-to-end-test', () {
    testWidgets('Display two items', (WidgetTester tester) async {
      if (kIsWeb) {
        html.window.history.replaceState({}, 'flutter', '');
      }
      final urlStreamController = StreamController<String>.broadcast();

      await tester.pumpWidget(await vrouterApp(testCount, urlStreamController));
      await tester.pumpAndSettle();

      await tester.pump(const Duration(milliseconds: 1000));
      print('\x1B[34m Init routing in test $testCount: /new \x1B[0m');
      urlStreamController.add('/new');
      // await tester.tap(find.byType(FloatingActionButton));

      await waitFor(find.byType(NewScreen), tester);
      await waitFor(find.text('station0'), tester);
      await waitFor(find.text('station1'), tester);
      // await tester.pump(const Duration(milliseconds: 1000));

      resetDebugVals();
      testCount++;
    });

    testWidgets('Display one item', (WidgetTester tester) async {
      if (kIsWeb) {
        html.window.history.replaceState({}, 'flutter', '');
      }
      var urlStreamController = StreamController<String>.broadcast();

      await tester.pump(const Duration(milliseconds: 1000));
      await tester.pumpWidget(await vrouterApp(testCount, urlStreamController));
      await tester.pumpAndSettle();

      // await tester.pump(const Duration(milliseconds: 3000));
      print('\x1B[34m Init routing in test $testCount: /new \x1B[0m');
      urlStreamController.add('/new');
      // await tester.tap(find.byType(FloatingActionButton));

      await tester.pumpAndSettle();
      await waitFor(find.text('station0'), tester);
      // await tester.pump(const Duration(milliseconds: 1000));

      resetDebugVals();
      testCount++;
    });
  });
}

resetDebugVals() {
  debugPrint = debugPrintSynchronously;
  debugDefaultTargetPlatformOverride = null;
  debugDoublePrecision = null;
  debugBrightnessOverride = null;
}

Future<void> waitUntil(
    Future<bool> Function() condition, {
      Duration? timeout = const Duration(seconds: 15),
      Duration? pollInterval = const Duration(milliseconds: 500),
    }) async {
  return Future.microtask(
        () async {
      final completer = Completer<void>();
      var maxAttempts = (timeout!.inMilliseconds / pollInterval!.inMilliseconds).round();
      var attempts = 0;

      while (attempts < maxAttempts) {
        final result = await condition();
        if (result) {
          completer.complete();
          break;
        } else {
          await Future.delayed(pollInterval);
        }
      }
    },
  ).timeout(
    timeout!,
  );
}

Future<void> waitFor(Finder finder, WidgetTester tester) => waitUntil(
      () async {
    try {
      await tester.pumpAndSettle();
      expect(finder, findsOneWidget);
      return Future.value(true);
    } on TestFailure {
      return Future.value(false);
    }
  },
);

Logs
[VRouter: INFO] Successfully navigated to "/new" using VRouter.to
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════
The following assertion was thrown during a scheduler callback:
Assertion failed: "Parent #18 has child #16. However, the child is attached to #17."

When the exception was thrown, this was the stack:
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49  throw_
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/semantics/semantics.dart 1601:15           <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart 21:13      forEach
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/semantics/semantics.dart 1585:22           <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/semantics/semantics.dart 1615:14           updateSemantics
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 623:35            updateSemantics
packages/flutter_test/src/window.dart 380:24                                                                               updateSemantics
packages/flutter/src/semantics/semantics.dart 3056:22                                                                      sendSemanticsUpdate
packages/flutter/src/rendering/object.dart 1076:7                                                                          flushSemantics
packages/flutter/src/rendering/binding.dart 502:21                                                                         drawFrame
packages/flutter/src/widgets/binding.dart 883:13                                                                           drawFrame
packages/flutter/src/rendering/binding.dart 363:5                                                                          [_handlePersistentFrameCallback]
packages/flutter/src/scheduler/binding.dart 1145:15                                                                        [_invokeFrameCallback]
packages/flutter/src/scheduler/binding.dart 1082:9                                                                         handleDrawFrame
packages/flutter_test/src/binding.dart 1450:30                                                                             handleDrawFrame
packages/flutter/src/scheduler/binding.dart 996:5                                                                          [_handleDrawFrame]
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 1005:13           invoke
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 159:5             invokeOnDrawFrame
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine.dart 455:45                                <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1444:13                                          _rootRunUnary
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1335:19                                          runUnary
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1244:7                                           runUnaryGuarded
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1281:26                                          <fn>
════════════════════════════════════════════════════════════════════════════════════════════════════
00:07 +1: end-to-end-test Display one item [E]
  Test failed. See exception logs above.
  The test description was: Display one item

Consider enabling the flag chain-stack-traces to receive more detailed exceptions.
For example, 'dart test --chain-stack-traces'.
00:07 +1 -1: (tearDownAll)
00:07 +2 -1: Some tests failed.

Related: https://stackoverflow.com/a/49372243/5164462

Closing in favor of https://github.com/flutter/flutter/issues/97606. I now could shrink down the tests further to only work with flutter framework.

Thanks for digging!


Always opening 2 browser instances

This is my feature file to open browser
Feature: Launch Chrome browser
  Background:
    * def osName = karate.os.name
    * def projectPath = karate.properties['user.dir']
    * def downloadPath = projectPath+"/" + downloadPath
    * if (osName.toLowerCase().includes('window')){downloadPath=downloadPath.replace("/null","").replaceAll("/","\\")}
    * def session = { capabilities: { alwaysMatch: { browserName: 'chrome', 'goog:chromeOptions': { args: [ '--window-size=1920,1080','--remote-allow-origins=*'] , 'prefs':{'plugins.always_open_pdf_externally':true, 'download.default_directory': '#(downloadPath)'} } } } }
    * def driver = { type: 'chromedriver',executable: '#(projectPath)/src/test/resources/drivers/chromedriver', webDriverSession: 'session'}
    * def linuxDriver = projectPath+'/src/test/resources/drivers/chromedriver'
    * def windowsDriver = projectPath+'/src/test/resources/drivers/chromedriver.exe'
    * if(osName.toLowerCase().includes('linux')){ driver.executable = linuxDriver ;driver.webDriverSession = session } else{driver.executable = windowsDriver;driver.webDriverSession = session}
    * configure driver = driver
    * configure continueOnStepFailure = true

  @LaunchBrowser
  Scenario: Launch Chrome browser
    Given driver baseUrl
    * driver.maximize()
    * driver.timeout(180000)
    * def driver = driver
    * print ' ========= Url launched in Chrome ========= '
    * print driver.getOptions()

Hi, how are you running this feature file? Is it through the gutter or through a run configuration? Does this not happen when executing through a command line?

Hi suresh, wold be good to upload a small project to reproduce

As best as I can tell, this might have been happening if you were running via tag, which would run both the files in your main folder and in target/ - so effectively running the test twice. This should be resolved in 2.1.0, and as there has been no further update from the commenter, I have to use a best guess here and assume that was what was happening, so I am closing this now.


Entering port into "host" option triggers cryptic error

Greetings,
Although I found the fix already, I thought I'd put it here in case anyone copy/pastes a similar error into Google:
Problem
gems/eventmachine-<IP_ADDRESS>/lib/eventmachine.rb:681:in `connect_server': unable to resolve server address: Success (EventMachine::ConnectionError)

Cause
Entering things other than a host into the host option when calling EventMachine::MQTT::ClientConnection.connect. Example:
# Notice the ":1883"? That belongs in the 'port' option.
EventMachine::MQTT::ClientConnection.connect(host: "localhost:1883")

Solution
Make sure that the host option only has the host / IP. Do not enter port numbers or protocols.

Going to autoclose this one since it's just for reference purposes, unless someone knows a source code fix.


Checked map length to prevent errors

resolves #
Not sure if there is an existing logged issue for this, however:
Description
This is a fix to an error I get with my manifest.json using dbt-core 1.6.6 and snowflake-adapter 1.6.4. Possibly due to dynamic tables or quoted columns I couldn't quite work it out
  File "/dbterd/adapters/algos/test_relationship.py", line 170, in get_table_map
    if f'("{map[1].split(".")[-1]}")'.lower() in to_model.replace("'", '"').lower():
IndexError: list index out of range

Checklist

[x] I have read the contributing guide and understand what's expected of me
[x] I have run this code in development and it appears to resolve the stated issue
[x] This PR includes tests, or tests are not required/relevant for this PR
[x] I have opened an issue to add/update docs, or docs changes are not required/relevant for this PR

Hi @lvarley thanks for proactively flag it out and having the PR :100:
Could you help to give a sample for reproducing? Or may be a whole manifest.json file? Thanks a lot

I have a manifest.json that fails. As to why exactly I'm not sure. Happy to
share if you can provide an email to send to so it's not public
On Sun, 29 Oct 2023, 9:30 pm Dat Nguyen, @.***> wrote:

Hi @lvarley https://github.com/lvarley thanks for proactively flag it
out and having the PR 💯
Could you help to give a sample for reproducing? Or may be a whole
manifest.json file? Thanks a lot
—
Reply to this email directly, view it on GitHub
https://github.com/datnguye/dbterd/pull/58#issuecomment-1784059874, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AHXAQDFX5IOPNFACEAM77KDYBYV33AVCNFSM6AAAAAA6UWTGLOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBUGA2TSOBXGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

Thanks @lvarley I got your email of the attached manifest.json
I see the issue which is the root caused by the column quote (") in snowflake.
I have a comment on the change, could you help to make a change? I am happy to make it otherwise

Revert your current change
Change Line 87 and Line 96: remove double quote

).lower(),

to:
).replace("\"","").lower(),

For more context, in DBML syntax, it doesn't support to escape double quote, we can only ignore it though

Thanks


Updating grid wrap behavior for read more card block

Please always provide the GitHub issue(s) your PR is for, as well as test URLs where your change can be observed (before and after):
Fix #86
Test URLs:

Before: https://main--phoenix--aemsites.hlx.live/blog/how-to-prepare-for-an-unpredictable-job-market
After: https://issue-86--phoenix--aemsites.hlx.live/blog/how-to-prepare-for-an-unpredictable-job-market

LGTM


Cursor in wrong position when entering a digit at the start of the input

This issue occurs when a (US formatted) number consists of 7 digits and a user attempts to enter a digit at the start of the input. The cursor jumps back to the beginning of the string after entering the digit.
This obviously causes problems when quickly re-entering a number, as the number ends up incorrect.
Please can you fix this ASAP.
Thanks! :)

There was also an issue with backspace/deletes. Both issues fixed in v3.8.2.


Pivot away from Local Storage

Description
We use a combo of LocalStorage and React's built in context. Pivot to use context only or introduce Redux. LocalStorage is an older, slower implementation, and doesn't plug in well with React's lifecycle.
Technical Notes

https://react-redux.js.org/

Risks
Research UX around calculator persistent state.
Related Issues Or Discussions
[...Issues]

I have fixed 54, 59, 63, 64, 65, 66, 67, 70, 72, 73, 74, 75, 76 issues.
Report.docx


CNV-45435: Migrate all .spec.running usages to .spec.runStrategy

As a part of the deprecation of the VM's .spec.running field, we need the UI plugin to stop using it, and use the runStrategy API everywhere by default.

📝 Description

Add a brief description

🎥 Demo

Please add a video or an image of the behavior/changes

/ok-to-test

/ok-to-test

/ok-to-test

/hold
not ready yet - issues with templates

hi @metalice ,
could you please re-review ?
thanks


Rename and tighten type definitions

We had conflicting definitions of what a hyperedge is in different parts of code and documentation.
This PR defines a hyperedge as a 2-tuple of tuples (in-nodes, out-nodes). Documentation updated to reflect this.
There is now a TrackGraph.is_hyperedge that can be used to test whether an edge is a hyperedge (should be preferred over manual isinstance calls). This function will also yell if a tuple is neither a normal edge nor a hyperedge as defined above.
Renamed type definitions while at it as well to be shorter and more descriptive.

@tlambert03 In your opinion, should we consider this codecov complaint seriously? (I fixed the docs issue and otherwise we are ready to merge, I think)


BUG: ImportCall is an invalid AssignmentTargetType, should produce an Early ReferenceError

Test: https://github.com/tc39/test262/blob/master/test/language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-9-lhs-assignment-operator-assignment-expression.js
import('') += 1;

Is producing a SyntaxError; however, like:
(() => 1) += 1;

It should produce an Early ReferenceError.

I plan on submitting a fix for this shortly, just trying to work out how it can be done neatly, the "obvious" fix would be a bit messy.

@infinnie I think the 1=2 case was fixed by this commit https://github.com/Microsoft/ChakraCore/commit/13847da1662c5b603e1ae1f5b1bf978f21ed7b54 I guess that's not made it into the version of Edge you're using yet.

I believe that this is no longer an error per normative spec PR: https://github.com/tc39/ecma262/pull/1527

Closing per prior comment as spec changed to match existing behaviour.


how to sponsor

Hello guys,
I love your product!
This is good work. Really good work.
I've been searching for this exact thing for over 3 years.
Please tell me how I can sponsor.

Hi @rsgilbert. Thankyou for your interest in sponsoring the project.
Currently, the only option to support it is via Sponsor button on the right hand side of the repository.

Nevertheless, this is optional and best way to support the project is to use it. 😉
Thankyou again!

Update for future readers, you can now use Polar to sponsor the project.


refactor(cp): clean up code and fix #376

Fixes issue in #376. Simplifies the code, and slight perf win.
This fixes the semantics of cp(), which had deviated from unix cp a bit. If anyone is available to review, that would be good.
Goals of this PR:

improve performance
improve correctness

@ariporad can you take a look at this? Let me know what you think, or if there's any other perf improvements we can squeeze out.

@nfischer: One tiny nit, and could you please rebase off master? Otherwise LGTM.

@nfischer: Can you rebase of master? Otherwise LGTM!!!!

@ariporad I just re-pushed


Improve merging of docs on generation

Hopefully improves the running of documentation merger by leveraging the sorted nature of these entries, using an ordered merge
Still needs some work:

[x] Improve for constructors
[x] Improve for operators

Added sorting for operators and constructors, which does slightly change the existing docs, but now allows them to be sorted reliably, and therefore allows merger properly

Closes: https://github.com/godotengine/godot-proposals/issues/9125

Ran some benchmarking with the following:
diff --git a/main/main.cpp b/main/main.cpp
index 4c9c159f47..f87e02eb44 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -3257,10 +3257,18 @@ bool Main::start() {
                GLOBAL_DEF(PropertyInfo(Variant::INT, "dotnet/project/assembly_reload_attempts", PROPERTY_HINT_RANGE, "1,16,1,or_greater"), 3);
 #endif

+               OS::get_singleton()->benchmark_begin_measure("Documentation", "Total");
+
+               OS::get_singleton()->benchmark_begin_measure("Documentation", "Generation");
+
                Error err;
                DocTools doc;
                doc.generate(gen_flags);

+               OS::get_singleton()->benchmark_end_measure("Documentation", "Generation");
+
+               OS::get_singleton()->benchmark_begin_measure("Documentation", "Loading");
+
                DocTools docsrc;
                HashMap<String, String> doc_data_classes;
                HashSet<String> checked_paths;
@@ -3299,24 +3307,44 @@ bool Main::start() {
                ERR_FAIL_COND_V_MSG(err != OK, false, "Error loading classes from: " + index_path + ": " + itos(err));
                checked_paths.insert(index_path);

+               OS::get_singleton()->benchmark_end_measure("Documentation", "Loading");
+
+               OS::get_singleton()->benchmark_begin_measure("Documentation", "Merging");
+
                print_line("Merging docs...");
                doc.merge_from(docsrc);

+               OS::get_singleton()->benchmark_end_measure("Documentation", "Merging");
+
+               OS::get_singleton()->benchmark_begin_measure("Documentation", "Erasing");
+
                for (const String &E : checked_paths) {
                        print_line("Erasing old docs at: " + E);
                        err = DocTools::erase_classes(E);
                        ERR_FAIL_COND_V_MSG(err != OK, false, "Error erasing old docs at: " + E + ": " + itos(err));
                }

+               OS::get_singleton()->benchmark_end_measure("Documentation", "Erasing");
+
+               OS::get_singleton()->benchmark_begin_measure("Documentation", "Saving");
+
                print_line("Generating new docs...");
                err = doc.save_classes(index_path, doc_data_classes);
                ERR_FAIL_COND_V_MSG(err != OK, false, "Error saving new docs:" + itos(err));

+               OS::get_singleton()->benchmark_end_measure("Documentation", "Saving");
+
+               OS::get_singleton()->benchmark_begin_measure("Documentation", "Deleting");
+
                print_line("Deleting docs cache...");
                if (FileAccess::exists(EditorHelp::get_cache_full_path())) {
                        DirAccess::remove_file_or_error(EditorHelp::get_cache_full_path());
                }

+               OS::get_singleton()->benchmark_end_measure("Documentation", "Deleting");
+
+               OS::get_singleton()->benchmark_end_measure("Documentation", "Total");
+
                OS::get_singleton()->set_exit_code(EXIT_SUCCESS);
                return false;
        }

And for me it gave the following two cases:
[Documentation] (Without these changes)
- Generation: 635.507 msec.
- Loading: 382.480 msec.
- Merging: 27.354 msec.
- Erasing: 137.812 msec.
- Saving: 630.196 msec.
- Deleting: 0.716 msec.
- Total: 1814.084 msec.

[Documentation] (With these changes)
- Generation: 635.366 msec.
- Loading: 377.898 msec.
- Merging: 8.881 msec.
- Erasing: 139.279 msec.
- Saving: 634.273 msec.
- Deleting: 0.817 msec.
- Total: 1796.532 msec.

Which is marginal but is present, but the generation isn't slowed down by the additional sorting, so I'd say this is an improvement in any case just cleaner code

Great work! You love to see PRs with more lines removed than added that also speed performance :) I'll go through and review your changes in more detail when I get the chance.

Since the merging logic is non-trivial now, I might suggesting making a helper function or iterator that you can reuse for the different merge cases. For example, a merge_vectors method that takes a function pointer, which you might call like merge_vectors(to_properties, from_properties, &merge_property), where merge_property is a function that just handles merging two matched properties.
If you feel that overcomplicates things, I think repeating the iteration code is fine as well.

I'd say first group them into their own functions (as per above comment). Then, the unification would come natural at a later point, as it would be easier to envision and refactor with "all of the cards on the table".

The comparison isn't the same in the different cases, so it'd be more complicated
Also realized I need to fix some details of this, one moment

Fixed some of the code, getting late so will continue working tomorrow, should work now, but with some new changes, will elaborate on them tomorrow
Updated the benchmarks above

Wow, the new benchmarks show a bigger improvement and it seems like most of it is due to the saving somehow getting faster. It doesn't look like any of your code directly affects saving, unless somehow ensuring the docs are sorted makes saving faster. Maybe you your disk drive was less busy during the later tests or something?

There's going to be fluctuations especially with file access, will do some more rigorous benchmarking tomorrow, and some more tweaks to the ordering of constructors, it needs a little more fixing but it's almost ready again

So preliminary update (will work later today), will drop the operators and constructors for now, they're not difficult to fix as such but they require some discussion on how to handle the ordering etc. that I think it best left to a follow up PR, and they make up a vanishingly small portion of the documentation data (only built-in types have them, and only a few each)
Will push later today and do new benchmarking

Some different changes, will elaborate more later, but here are some basic benchmarking for comparison, the difference isn't major, but it's something, and I think the general code improvements are good in themselves as well
[Unchanged]
- Generation:   663.865 msec.   660.288 msec.   642.372 msec.      Avrg:   655.508 msec.
- Loading:      414.215 msec.   417.114 msec.   396.416 msec.      Avrg:   409.248 msec.
- Merging:       28.389 msec.    28.027 msec.    28.552 msec.      Avrg:    28.323 msec.
- Erasing:      147.778 msec.   144.207 msec.   136.605 msec.      Avrg:   142.863 msec.
- Saving:       678.956 msec.   699.290 msec.   681.661 msec.      Avrg:   686.636 msec.
- Deleting:       1.001 msec.     1.016 msec.     0.738 msec.      Avrg:     0.918 msec.
- Total:       1934.221 msec.  1949.956 msec.  1886.360 msec.      Avrg:  1923.512 msec.

[With initial]
- Generation:   632.953 msec.   647.692 msec.   645.188 msec.      Avrg:   641.944 msec.
- Loading:      394.408 msec.   407.362 msec.   401.538 msec.      Avrg:   401.103 msec.
- Merging:       28.209 msec.    27.638 msec.    27.739 msec.      Avrg:    27.862 msec.
- Erasing:      122.336 msec.   142.152 msec.   135.156 msec.      Avrg:   133.215 msec.
- Saving:       682.808 msec.   702.175 msec.   707.425 msec.      Avrg:   697.469 msec.
- Deleting:       0.762 msec.     0.848 msec.     0.775 msec.      Avrg:     0.795 msec.
- Total:       1861.495 msec.  1927.882 msec.  1917.837 msec.      Avrg:  1902.405 msec.

[With constructor/operator cleanup]
- Generation:   618.375 msec.   639.833 msec.   645.607 msec.      Avrg:   634.605 msec.
- Loading:      385.870 msec.   388.729 msec.   397.186 msec.      Avrg:   390.595 msec.
- Merging:       15.727 msec.    15.715 msec.    15.666 msec.      Avrg:    15.703 msec.
- Erasing:      141.252 msec.   134.104 msec.   138.175 msec.      Avrg:   137.844 msec.
- Saving:       705.065 msec.   690.901 msec.   683.012 msec.      Avrg:   692.993 msec.
- Deleting:       0.757 msec.     0.723 msec.     1.083 msec.      Avrg:     0.854 msec.
- Total:       1867.062 msec.  1870.022 msec.  1880.743 msec.      Avrg:  1872.609 msec.

[Without Constants]
- Generation:   647.417 msec.   652.177 msec.   648.856 msec.      Avrg:   649.483 msec.
- Loading:      404.471 msec.   397.803 msec.   398.155 msec.      Avrg:   400.143 msec.
- Merging:       16.087 msec.    16.225 msec.    16.278 msec.      Avrg:    16.197 msec.
- Erasing:      143.796 msec.   148.085 msec.   140.245 msec.      Avrg:   144.042 msec.
- Saving:       686.624 msec.   692.332 msec.   708.543 msec.      Avrg:   695.833 msec.
- Deleting:       1.060 msec.     1.100 msec.     1.157 msec.      Avrg:     1.106 msec.
- Total:       1899.472 msec.  1907.738 msec.  1913.250 msec.      Avrg:  1906.820 msec.

[All changes]
- Generation:   626.262 msec.   649.933 msec.   654.115 msec.      Avrg:   643.436 msec.
- Loading:      393.736 msec.   406.013 msec.   402.916 msec.      Avrg:   400.888 msec.
- Merging:       13.201 msec.    12.842 msec.    13.006 msec.      Avrg:    13.016 msec.
- Erasing:      140.544 msec.   143.606 msec.   146.294 msec.      Avrg:   143.481 msec.
- Saving:       728.345 msec.   693.062 msec.   693.980 msec.      Avrg:   705.128 msec.
- Deleting:       0.759 msec.     0.876 msec.     1.025 msec.      Avrg:     0.887 msec.
- Total:       1902.863 msec.  1906.348 msec.  1911.352 msec.      Avrg:  1906.845 msec.

So some observations and details:

Constructors are a bit weird (and possibly broken, for a future PR to work out), they only require that all the types match, in any order meaning that you can't have Color(float, Color) and Color(Color, float) as separate constructors with separate descriptions
Operators and constructors are vanishingly few, so no need to process them (at least not for now)
The results for merging or searching (the current solution) seem to be negligible in testing, so keeping this method, sorting the loaded values should be very cheap, as they are essentially sorted in most cases, but the savings on using a merge is likely still not significant enough compared with sorting, so both methods are essentially equivalent

In the end the improvements for performance seem negligible, though it might be more on some hardware, hard to say, but I think the code style improvements are significant here so IMO this change isn't without merit
Some changes I did:

Cleaned up the constructor and operator code, it was a bit inefficient, some of the changes:

Checking argument count before checking names match (kept the check for names in constructors, it's essentially pointless but someone might just add an incorrectly named constructor in the doc file and break things, all the generated constructors will always have the same name)
Removed the checks in operators for argument matching using the permutation method, as operators (currently) have at most one argument
Avoiding mutation checks and locking for the various vectors by loading the data beforehand
Fixed index types after upgrade to 64 bits (not going to matter, unless you have impossibly big data, but still good)

Made some other data improvements and changed the check for plain methods to just check for name order, to avoid accidentally invoking some other ordering

Ready for review now, might need some minor tinkering, but works well now, tested messing with documentation files and it doesn't break when you do things like reordering or deleting entries, the checks are all sufficient

Does Godot have a type to represent sorted arrays? It might be nice so it's easier to keep track of assumptions about whether or not an array has already been sorted or not.
If it doesn't, would it be worth putting in some assert statements to ensure the array is sorted when it is expected to be, at least in debug builds?

There isn't a dedicated type for that no, and we'd want to not copy memory around so it wouldn't really be helpful IMO, we are operating on the actual doc data which uses Vector, that'd be a bit more specific programming stuff than Godot really uses or needs

Realized it doesn't help to sort the loaded data for merge with the general purpose sort algorithm we use, it being sorted or mostly sorted doesn't change anything most likely, haven't studied the algorithm but it's likely a general purpose one with best/worst/average all being N log N, would be interesting to look at special purpose sorting algorithms in the future to help with these situations though, but not now

Will go over this one a final time this week and squash

It's been a few weeks since this was made, what's the current status and TL;DR on actual improvements?
IIUC the performance gain may not be that significantly, but is the code quality significantly better? If so, that should be fine.
Are the commits meant to be squashed?

I'd say that without a more dynamic sorting algorithm (which we might want to add in the future) the performance improvements are likely marginal, but I think the code quality is greatly improved, will go back over it and re familiarise myself with what this does specifically as it's been quite a while since I touched it

The performance remains very much unchanged, it only improves the merge step (about halves the time) but it is so minor that it doesn't matter, but the code is now easier to read in my opinion, future improvements could help with some of these parts I'm sure

Should I just add the benchmarks I used to the code? With possible modifications?

Your call, if you expect they'll be useful for further work in the future, they could be added behind a local define.

I'll add them if I end up working more on it in the future, for now I think this part isn't something that'll be critical to get good benchmarks on

Thanks!

Thank you!


Show/hide header programatically

Hi,
I would like to know if with this library it would be possible to control programmatically the visibility of the header, for example when a scrollview reaches the end then show it again.
Thanks

Also when the scrollview is at the very bottom I cannot see the header


Created readme branch

Description
Added some basic info and structure to README. Requesting feedback
Fixes # N/A
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Change status

[ ] Complete, tested, ready to review and merge
[ ] Complete, but not tested (may need new tests)
[x] Incomplete/work-in-progress, PR is for discussion/feedback

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ] N/A
[ ] N/A

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] My code has been reviewed by at least one peer
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] There are no merge conflicts

I think as we finish components of the app, it will become clearer what we need to add as well. But just wanted to make sure things like adding everyone's github links, etc. are okay as well. ill take a look at around some other readme(i?) to see what they include


Error: Cannot read property 'object' of undefined

Electron version: 0.37.2
Operating system: Windows 10

Trying to access the id property of a window from the renderer side, I am getting this error:
TypeError: Cannot read property 'object' of undefined
    at ObjectsRegistry.get (c:\GitDevelopment\monaco\.build\electron\resources\atom.asar\browser\objects-registry.js:44:28)
    at EventEmitter.<anonymous> (c:\GitDevelopment\monaco\.build\electron\resources\atom.asar\browser\rpc-server.js:337:31)
    at emitThree (events.js:97:13)
    at EventEmitter.emit (events.js:175:7)
    at EventEmitter.<anonymous> (c:\GitDevelopment\monaco\.build\electron\resources\atom.asar\browser\api\web-contents.js:144:25)
    at emitTwo (events.js:87:13)
    at EventEmitter.emit (events.js:172:7)
    at metaToValue (c:\GitDevelopment\monaco\.build\electron\resources\atom.asar\renderer\api\remote.js:170:13)
    at descriptor.get [as id] (c:\GitDevelopment\monaco\.build\electron\resources\atom.asar\renderer\api\remote.js:118:16)
    at new ElectronWindow (file:///C:/GitDevelopment/monaco/out/vs/workbench/electron-browser/window.js:25:32)

I got you, bud :wink:
https://github.com/atom/electron/pull/4847

Cool that is fast :+1:

This is a duplicate of #4733.

@zcbenz do you need help for a repro or are we good?

@bpasero It should have been fixed in v0.37.3/v0.36.12, but if you are still seeing it, a repo would be appreciated.

Ok I am waiting for a release with node.js 5.9.x to also verify the V8 crash :+1:

Looks good.


option to push completed layers even if the overall docker build fails

Example of the problem situation: CI dockerfile builds for 30 min, then step 15/20 fails, so the docker build fails, and all the 30 minutes of work is wasted. Subsequent builds will have to repeat the 30 min of work.
However, many layers of the image were successfully built. It would be great if those layers could be pushed to ECR, for example, so that the next build can reuse the work done already, and download the cached layers, and continue building from there.
Is this possible?

It is an interesting use case... but I don't see a way to support this in the plugin without complicating the code a lot and possibly breaking existing workflows. As I understand it, we would need to identify the image name of the last intermediate layer successfully built, tag it in some way so that it could be later referenced (like in a cache-from stanza) and then push it.
On the other hand, that could also be achieved by breaking up your Dockerfile so that each intermediate layer was its own image. Which is basically what multi-stage builds are :)
Closing for now as I don't think there is an issue or enhancement on this plugin necessary for that feature.


Added ManagedBy parameter

Added ManagedBy parameter description and example

Docs Build status updates of commit bc4b4f8:
:clock10: Full build: the average full build time is 14 min(s) 16 sec(s), this is based on the last 275 build(s) for this repository.

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

File
Status
Preview URL
Details

staffhub/staffhub-ps/staffhub/Get-StaffHubTeamsForTenant.md
:white_check_mark:Succeeded
View (staffhub-ps)

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

@YuriySamorodov - thanks for the update, just wanted to confirm where you got the new information. Thanks!

Docs Build status updates of commit 6ad0fc9:
:clock10: Full build: the average full build time is 14 min(s) 17 sec(s), this is based on the last 288 build(s) for this repository.

@kenwith -ManagedBy parameter has surfaced in Teams Module version 1.0.5-alpha

Docs Build status updates of commit 6ad0fc9:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

staffhub/staffhub-ps/staffhub/Get-StaffHubTeamsForTenant.md
:white_check_mark:Succeeded
View (staffhub-ps)

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


PHP error - Cannot modify header information

Hello LobbyOS developer community, :smile:
I got a PHP error while trying to install LobbyOS on my testing website:
http://suriyaakudo.bplaced.net/lobby/admin/install.php
Warning: Cannot modify header information - headers already sent by (output started at /users/suriyaakudo/www/lobby/includes/src/Lobby.php:141) in /users/suriyaakudo/www/lobby/includes/src/Lobby.php on line 142

Link: http://suriyaakudo.bplaced.net/lobby/
What's the problem :grey_question:
Yours,
Suriyaa Kudo :octocat:

It was a silly mistake. Remove ```php
echo $url;

It works! :smiley:
Thanks. :+1:


fill / stroke by layer?

Is there a way to override svg fill/stroke per layer? I thought layer.exporterOptions would do that.

Found this: https://github.com/Microsoft/maker.js/issues/248 ... Will play some more.

Apologies, I need to update the SVG export documentation with details. For stroke only, you can name the layer with one of 17 simple colors:
http://microsoft.github.io/maker.js/docs/advanced-drawing/#Layers
For full control you can add a layerOptions property to your exortOptions object. The layerOptions should be a map, with keys being your layer names, and values being the options object for that layer.
Each layer options object has these properties that you may set: fill, stroke (color), strokeWidth, and cssStyle (which can contain any CSS styling)

Documentation updated: http://microsoft.github.io/maker.js/docs/exporting/#SVG
Next, I suppose that people may also want to specify DOM order in their output of layers. There will need to be a property added someplace. Either an order number on each layer option object, or a new property layerOrder which would be an array of layer names in order.

I'm trying to use cssStyle but I think I didin't understand how to use it. I'm trying to use like this:
myLayerName: {           strokeWidth: 3,           stroke: '#9e9e9e',           fill: 'black',           cssStyle: {             fillOpacity: 0.5           }         }
Is that correct?

@StollToaldo no - CSSStyle is a string, so:
cssStyle: "fillOpacity: 0.5; otherProperty:otherValue; "

Thanks @danmarshall, but it still not working. Here is my code:
const svg = makerjs.exporter.toSVG(svgModels, {
      useSvgPathOnly: false,
      svgAttrs: {
        width: '100%',
        height: '440px'
      },

      layerOptions: {

        safe: {
          strokeWidth: 5,
          stroke: '#9e9e9e',
        },

        notSafe: {
          strokeWidth: 5,
          stroke: '#e06666',
          fill: 'black',
          cssStyle: 'fillOpacity: 0.5; '
        }

      }
     })

Am I doing something wrong? strokeWidth, stroke and fill are working fine.

@stolltoaldo my bad, there is a missing piece of code, I will release tonight. Your code is right. One last thing, after release, the style should be hyphenated instead of camelCase:
"fill-opacity: 0.5"

@StollToaldo 0.9.69 is published to npm. Can you try now?

@danmarshall , awesome, now it's working. I really appreciate your help.


incorporated feedback

@lholmquist @lance let me know what you think

@lholmquist fixed

👍  merge away

thank you @lholmquist merging.


Don't change saved token without asking to the user

When you click on a navitia-playground URL with a token or import an URL with a token (https://token@api.navitia.io/v1/coverage), the saved token is erased.
Proposition:

First time, save the token without asking. Save also if the saved token is empty.
Then, if we detect another token than the saved one, a save icon is added on the token field (as the bin icon on the parameters). Clicking on it erase the saved token with the new one.

What do you think?

Fixed by #212


pytz.exceptions.UnknownTimeZoneError

Hello! Thanks for your working! Sorry to bother you about the docker version problem.
Environment: Win10   Docker Desktop
Problem: Rasie the TimeZoneError , Changed the .env but it still doesn't work
Log:
First TIME:
rm: cannot remove '/tmp/.X99-lock': No such file or directory
Starting X virtual framebuffer (Xvfb) in background...
BROWSER: 'chrome'
HANDLE_DRIVER: True
Starting Bing Rewards Bot...
Traceback (most recent call last):
File "/app/main.py", line 135, in
TZ = timezone(os.environ.get("TZ", "America/New_York"))
File "/usr/local/lib/python3.10/dist-packages/pytz/init.py", line 188, in timezone
raise UnknownTimeZoneError(zone)
pytz.exceptions.UnknownTimeZoneError: "'America/New_York'"
I changed the .env   trying to keep it same as my windows os.
Still Raise:
rm: cannot remove '/tmp/.X99-lock': No such file or directory
Starting X virtual framebuffer (Xvfb) in background...
BROWSER: 'chrome'
HANDLE_DRIVER: True
Starting Bing Rewards Bot...
Traceback (most recent call last):
File "/app/main.py", line 135, in
TZ = timezone(os.environ.get("TZ", "America/New_York"))
File "/usr/local/lib/python3.10/dist-packages/pytz/init.py", line 188, in timezone
raise UnknownTimeZoneError(zone)
pytz.exceptions.UnknownTimeZoneError: "'Asia/Shanghai'"
Could you help me and thank you very much!

Deleting the single quotation marks in the .env file seems to solve this problem.
Hope can help others.


Any plans to finish this?

What you have is working well but what about Presets? Any plans to add those to the plugin in the near future?

@digitalbird01 Yes, I'm looking at adding more presets and descriptions. I'll look to revisiting the module early next year after the holiday's. I'm glad the module is working well for you.

I created a new branch for testing, see presetupdate. The branch includes more presets, 10 categories worth of presets in fact, a few additional buttons, and logging information. Feel free to check it out. Once I've confirmed no issues with the branch, I'll merge the branch, create a new release, and reach out to the Bitfocus team to have it included in their next build. No timeline on the inclusion at the moment.

@digitalbird01 The preset update has been released.


Support environment variables in provider configuration

To avoid saving credentials in the state file, it would be nice to have support for environment variables for e.g. username and password in the provider block.
Most other terraform providers support this.
https://registry.terraform.io/providers/airbytehq/airbyte/latest/docs

This is a fair ask. We will do this at some point. In the short term, a variable with sensitive = true that's imported from TF_VAR_{varName} is equivalent. https://developer.hashicorp.com/terraform/language/values/variables#environment-variables