Problem with ICN2037BP driver chip

Hi
I'm working with ESP32 and 32*64 P5 panel with ICN2037BP chip. I'm trying to write simple HELLO message but it is not displayed properly. Same code works with FM6124 chip.

This is my code:

#define R1_PIN  25
#define G1_PIN  26
#define B1_PIN  27
#define R2_PIN  14
#define G2_PIN  12
#define B2_PIN  13

#define A_PIN   23
#define B_PIN   19
#define C_PIN   5
#define D_PIN   33 // Connected to GND on panel (21 if exist)
#define E_PIN   -1 // Connected to GND on panel

#define LAT_PIN 4
#define OE_PIN  15
#define CLK_PIN 18

const int panelResX = 64;      // Number of pixels wide of each INDIVIDUAL panel module.
const int panelResY = 32;     // Number of pixels tall of each INDIVIDUAL panel module.
const int panel_chain = 1;      // Total number of panels chained one to another

MatrixPanel_I2S_DMA *dma_display = nullptr;

uint16_t myBLACK = dma_display->color565(0, 0, 0);
uint16_t myWHITE = dma_display->color565(255, 255, 255);
uint16_t myRED = dma_display->color565(255, 0, 0);
uint16_t myGREEN = dma_display->color565(0, 255, 0);
uint16_t myBLUE = dma_display->color565(0, 0, 255);

void displaySetup() {

  HUB75_I2S_CFG::i2s_pins _pins = {
    R1_PIN, G1_PIN, B1_PIN, R2_PIN, G2_PIN, B2_PIN,
    A_PIN, B_PIN, C_PIN, D_PIN, E_PIN,
    LAT_PIN, OE_PIN, CLK_PIN
  };

  HUB75_I2S_CFG mxconfig(
    panelResX,   // module width
    panelResY,   // module height
    panel_chain,    // Chain length
    _pins
  );

  mxconfig.clkphase = false;

  dma_display = new MatrixPanel_I2S_DMA(mxconfig);
  dma_display->begin();
}

void setup() {

  Serial.begin(115200);

  displaySetup();

  dma_display->clearScreen();
  dma_display->fillScreen(myBLACK);
  dma_display->setTextWrap(false);

  dma_display->setTextSize(2);     // size 2 == 16 pixels high
  dma_display->setTextColor(myGREEN);
  dma_display->setCursor(0, 8);
  dma_display->print("Hello");

}

void loop() {

}

I found a solution with in 1/8 Scan Panel Demonstration. I changed the code, it's working like a virtual 2nd panel. Everything is OK for now.

This is my code:
`
#include "ESP32-HUB75-MatrixPanel-I2S-DMA.h"
#include "ESP32-VirtualMatrixPanel-I2S-DMA.h"
#define R1_PIN  25
#define G1_PIN  26
#define B1_PIN  27
#define R2_PIN  14
#define G2_PIN  12
#define B2_PIN  13
#define A_PIN   23
#define B_PIN   19
#define C_PIN   5
#define D_PIN   33 // Connected to GND on panel (21 if exist)
#define E_PIN   -1 // Connected to GND on panel
#define LAT_PIN 4
#define OE_PIN  15
#define CLK_PIN 18
// Panel configuration
#define PANEL_RES_X 64 // Number of pixels wide of each INDIVIDUAL panel module.
#define PANEL_RES_Y 32 // Number of pixels tall of each INDIVIDUAL panel module.
#define NUM_ROWS 1 // Number of rows of chained INDIVIDUAL PANELS
#define NUM_COLS 2 // Number of INDIVIDUAL PANELS per ROW
// ^^^ NOTE: DEFAULT EXAMPLE SETUP IS FOR A CHAIN OF TWO x 1/8 SCAN PANELS
// Change this to your needs, for details on VirtualPanel pls read the PDF!
#define SERPENT true
#define TOPDOWN false
// placeholder for the matrix object
MatrixPanel_I2S_DMA *dma_display = nullptr;
// placeholder for the virtual display object
VirtualMatrixPanel  *OneEightMatrixDisplay = nullptr;
uint16_t myBLACK = OneEightMatrixDisplay->color565(0, 0, 0);
uint16_t myWHITE = OneEightMatrixDisplay->color565(255, 255, 255);
uint16_t myRED = OneEightMatrixDisplay->color565(255, 0, 0);
uint16_t myGREEN = OneEightMatrixDisplay->color565(0, 255, 0);
uint16_t myBLUE = OneEightMatrixDisplay->color565(0, 0, 255);
/******************************************************************************

Setup!
******************************************************************************/
void setup()
{
delay(250);

Serial.begin(115200);
Serial.println(""); Serial.println(""); Serial.println("");
Serial.println("*****************************************************");
Serial.println("*         1/8 Scan Panel Demonstration              *");
Serial.println("*****************************************************");

 // 62x32 1/8 Scan Panels don't have a D and E pin!

 HUB75_I2S_CFG::i2s_pins _pins = {
  R1_PIN, G1_PIN, B1_PIN, R2_PIN, G2_PIN, B2_PIN,
  A_PIN, B_PIN, C_PIN, D_PIN, E_PIN,
  LAT_PIN, OE_PIN, CLK_PIN
 };

HUB75_I2S_CFG mxconfig(
            PANEL_RES_X*2,              // DO NOT CHANGE THIS
            PANEL_RES_Y/2,              // DO NOT CHANGE THIS
            NUM_ROWS*NUM_COLS           // DO NOT CHANGE THIS
             ,_pins            // Uncomment to enable custom pins
);

mxconfig.clkphase = false; // Change this if you see pixels showing up shifted wrongly by one column the left or right.

//mxconfig.driver   = HUB75_I2S_CFG::FM6126A;     // in case that we use panels based on FM6126A chip, we can set it here before creating MatrixPanel_I2S_DMA object

// OK, now we can create our matrix object
dma_display = new MatrixPanel_I2S_DMA(mxconfig);

// let's adjust default brightness to about 75%
dma_display->setBrightness8(96);    // range is 0-255, 0 - 0%, 255 - 100%

// Allocate memory and start DMA display
if( not dma_display->begin() )
  Serial.println("****** !KABOOM! I2S memory allocation failed ***********");

dma_display->clearScreen();
delay(500);

// create OneEightMatrixDisplaylay object based on our newly created dma_display object
OneEightMatrixDisplay = new VirtualMatrixPanel((*dma_display), NUM_ROWS, NUM_COLS, PANEL_RES_X, PANEL_RES_Y, SERPENT, TOPDOWN);

// THE IMPORTANT BIT BELOW!
OneEightMatrixDisplay->setPhysicalPanelScanRate(ONE_EIGHT_32);
OneEightMatrixDisplay->clearScreen();
OneEightMatrixDisplay->fillScreen(myBLACK);
OneEightMatrixDisplay->setTextWrap(false);

OneEightMatrixDisplay->setTextSize(2); // size 2 == 16 pixels high
OneEightMatrixDisplay->setTextColor(myGREEN);
OneEightMatrixDisplay->setCursor(65, 8);
OneEightMatrixDisplay->print("Hello");

}
void loop() {
}  `

Thank you for this workaround @kucukkose. I have a chain of two 64x64 outdoor 1/16 scan panels driven by the ICN2037BP chips (https://aliexpress.com/item/1005002233901619.html). Using the workaround described in this issue I kind of got them working, but not quite: the rows 16..23 were swapped with the rows 8..15, and the rows 40..47 were swapped with the rows 48..55.
As I needed a quick solution, I have made a dirty patch to VirtualMatrixPanel::getCoords() method, adding this line:
if ((virt_y & 8) != ((virt_y & 16) >> 1)) { virt_y = (virt_y & 0b11000) ^ 0b11000 + (virt_y & 0b11100111); }
But that's of course mega ugly, so I'd love to hear @mrfaptastic suggestion on how to integrate this properly. Add a new PANEL_SCAN_RATE for this type of panels? And thanks a lot for the great library, it really rocks!

But that's of course mega ugly, so I'd love to hear @mrfaptastic suggestion on how to integrate this properly. Add a new PANEL_SCAN_RATE for this type of panels? And thanks a lot for the great library, it really rocks!

Thank you for the kind words. To be honest, the whole VirtualMatrixPanel is a bit of a hack, especially for these non-standard scan-rate panels.
I've copy-pasted your code as a 'FOUR_SCAN_64PX_HIGH' option.

@mrfaptastic thanks for a super speedy response! The fix is a little bit more complex than that: for these 64px high panels to work we need to apply my code, but then we also need to apply all of your code from FOUR_SCAN_32PX_HIGH section (including x coordinate transformation and further y transformation too). So I guess a proper way would be to nest the ifs as follows:
...
    else if ((panel_scan_rate == FOUR_SCAN_32PX_HIGH) || (panel_scan_rate == FOUR_SCAN_64PX_HIGH))
    {

       if (panel_scan_rate == FOUR_SCAN_64PX_HIGH)
          {
	      // https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-DMA/issues/345#issuecomment-1510401192
	      if ((virt_y & 8) != ((virt_y & 16) >> 1)) { virt_y = (virt_y & 0b11000) ^ 0b11000 + (virt_y & 0b11100111); }
          }

        /* Convert Real World 'VirtualMatrixPanel' co-ordinates (i.e. Real World pixel you're looking at
           on the panel or chain of panels, per the chaining configuration) to a 1/8 panels
           double 'stretched' and 'squished' coordinates which is what needs to be sent from the
           DMA buffer.
           Note: Look at the FourScanPanel example code and you'll see that the DMA buffer is setup
           as if the panel is 2 * W and 0.5 * H !
        */

        if ((virt_y & 8) == 0)
        {
            coords.x += ((coords.x / panelResX) + 1) * panelResX; // 1st, 3rd 'block' of 8 rows of pixels, offset by panel width in DMA buffer
        }
        else
        {
            coords.x += (coords.x / panelResX) * panelResX; // 2nd, 4th 'block' of 8 rows of pixels, offset by panel width in DMA buffer
        }

        // http://cpp.sh/4ak5u
        // Real number of DMA y rows is half reality
        // coords.y = (y / 16)*8 + (y & 0b00000111);
        coords.y = (virt_y >> 4) * 8 + (virt_y & 0b00000111);
    }
...

BTW the http://cpp.sh/4ak5u link appear to be dead, so can be removed from the code for clarity.

Ah ok. Thanks for this feedback! Can you raise a pull request and I'll integrate?

Hi for all, I use code from kucukkose on P6 (3535) 8S 32x32 led panel with TC5020AP IC led driver and the result is like on attached image.
With
dma_display->setCursor(0,0);   dma_display->print("Hello");
text start on x=0 and y=9.
When I try with
dma_display->setCursor(0,10);   dma_display->print("Hello");
the result is like on second image.
I try also with second solution from kucukkose with 1/8 Scan Panel Demonstration but a lot of error is here:
OneEightMatrixDisplay = new VirtualMatrixPanel((*dma_display), NUM_ROWS, NUM_COLS, PANEL_RES_X, PANEL_RES_Y, SERPENT, TOPDOWN);
with candidate expects 6 arguments, 7 provided explanation and
error: 'ONE_EIGHT_32' was not declared in this scope
I try with some lib modification but without result.
Can somebody with more experience advice for solution?
Thanks and best regards.

KUCUKKOSE, I have the same problem on my P6 8S 32x32 led panel with TC5020AP IC led driver. I try your advice and code from Nov 24 2022 but I have a problem with lib. Can you please share full code with used lib?
When I try to use your code 2 problems appear:
OneEightMatrixDisplay = new VirtualMatrixPanel((*dma_display), NUM_ROWS, NUM_COLS, PANEL_RES_X, PANEL_RES_Y, SERPENT, TOPDOWN);
and
OneEightMatrixDisplay->setPhysicalPanelScanRate(ONE_EIGHT_32);
with explanations "candidate expects 6 arguments, 7 provided" and "error: 'ONE_EIGHT_32' was not declared in this scope".
Thanks, regards

@rigorka Did you try to chain Your outdoor panels in more than one row scheme? like 2x2 or more? I cannot run more than one row with FOUR_SCAN_64PX_HIGH option.

@primus192 - can you post an example of the sketch code and also pictures of the test pattern to show the issue?

I think it is better to discuss it here
https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-DMA/issues/468#issuecomment-1624820750


Ensure EC keys with a private key but without a public key can be created

In 1.1.1 and earlier it was possible to create EC_KEYs that did not have the public key in it. We need to ensure that this continues to work in 3.0.
Fixes #12612

Rebased to resolve a conflict with master. Please take a look!

Rebased to resolve a conflict with master. Please take a look!

Fix up pushed addressing the no-deprecated build failure (due to the recent EC_KEY deprecation on master). I have no clue about the cmp test failure that occurred. It's difficult to see how that is related to these changes, so lets see if it happens again.

Fix up pushed addressing the no-deprecated build failure (due to the recent EC_KEY deprecation on master). I have no clue about the cmp test failure that occurred. It's difficult to see how that is related to these changes, so lets see if it happens again.

I think the cmp test failure is just intermittent thing due to the test parallelization - IMO it's some other test stepping on the cmp_test toes.

I think the cmp test failure is just intermittent thing due to the test parallelization - IMO it's some other test stepping on the cmp_test toes.

I think the cmp test failure is just intermittent thing due to the test parallelization - IMO it's some other test stepping on the cmp_test toes.

The competing cmp tests are probably test_cmp_hdr and test_cmp_status.  This diff should fix that:
diff --git a/test/recipes/65-test_cmp_hdr.t b/test/recipes/65-test_cmp_hdr.t
index e013a6d820..9acb784d7e 100644
--- a/test/recipes/65-test_cmp_hdr.t
+++ b/test/recipes/65-test_cmp_hdr.t
@@ -12,7 +12,7 @@ use strict;
 use OpenSSL::Test qw/:DEFAULT data_file/;
 use OpenSSL::Test::Utils;

-setup("test_cmp_lib");
+setup("test_cmp_hdr");

 plan skip_all => "This test is not supported in a no-cmp build"
     if disabled("cmp");
diff --git a/test/recipes/65-test_cmp_status.t b/test/recipes/65-test_cmp_status.t
index 6a0a0c06b6..23f833f695 100644
--- a/test/recipes/65-test_cmp_status.t
+++ b/test/recipes/65-test_cmp_status.t
@@ -12,7 +12,7 @@ use strict;
 use OpenSSL::Test qw/:DEFAULT data_file/;
 use OpenSSL::Test::Utils;

-setup("test_cmp_lib");
+setup("test_cmp_status");

 plan skip_all => "This test is not supported in a no-cmp build"
     if disabled("cmp");

I think the cmp test failure is just intermittent thing due to the test parallelization - IMO it's some other test stepping on the cmp_test toes.

The competing cmp tests are probably test_cmp_hdr and test_cmp_status.  This diff should fix that:
diff --git a/test/recipes/65-test_cmp_hdr.t b/test/recipes/65-test_cmp_hdr.t
index e013a6d820..9acb784d7e 100644
--- a/test/recipes/65-test_cmp_hdr.t
+++ b/test/recipes/65-test_cmp_hdr.t
@@ -12,7 +12,7 @@ use strict;
 use OpenSSL::Test qw/:DEFAULT data_file/;
 use OpenSSL::Test::Utils;

-setup("test_cmp_lib");
+setup("test_cmp_hdr");

 plan skip_all => "This test is not supported in a no-cmp build"
     if disabled("cmp");
diff --git a/test/recipes/65-test_cmp_status.t b/test/recipes/65-test_cmp_status.t
index 6a0a0c06b6..23f833f695 100644
--- a/test/recipes/65-test_cmp_status.t
+++ b/test/recipes/65-test_cmp_status.t
@@ -12,7 +12,7 @@ use strict;
 use OpenSSL::Test qw/:DEFAULT data_file/;
 use OpenSSL::Test::Utils;

-setup("test_cmp_lib");
+setup("test_cmp_status");

 plan skip_all => "This test is not supported in a no-cmp build"
     if disabled("cmp");

Ping?

Ping?

This pull request is ready to merge

This pull request is ready to merge

Pushed. Thanks.


Add ErrorCode enum with error codes

[@FroMage] Insted of using numbers and luck all over the code.
[Migrated from ceylon/ceylon-spec#1132]

I've pushed the start of this. We can convert the rest of the codes later.

What's the status on this? I added a new error code in ExpressionVisitor, and I agree it wasn't straightforward to chose which value to use. I suppose all the existing error codes are referenced in ideQuickFixManager, but I can't really explain why values sometimes jump from 10 to 10, then 100 to 100, then 1000 to 1000, then suddenly from 13000 to 20000 :/

If you find your code, add an entry to the enum I made and use that one. @gavinking will only be coerced into fixing his mess.

At first I added my code to that enum, then it felt weird to see it was the only error that was using this enum, so I reverted my change :/. Of course, if everyone is okay with using this enum (including Gavin), we could start migrating codes there.


production build still want to load files from localhost

I upgraded my vue application and integrated vuex and vue router. Everything looks fine but after running npm run build i get a error:

This happens only on my <router-view /> template and not where i just include a component.
If I try to change the publicPath settings in the vue.config.js to /dist/ the build looks fine but i can't work anymore with npm run dev because it tries now to load everything from http//localhost:8080/dist/
Overall i can just open my created app-legacy.js file and change http//localhost:8080 to /dist/and it works but i think this isn't a good solution.

@aquafun haven't incorporated vue-router into this yet. Do you happen to have a repro repo by chance?

I solved it by publicPath: production ? "/dist/" : "/",
it is generally a better practice to do it like this.

Good to hear! Difficult for me to recall, but I think that change was made because depending on where you're serving assets, that public path also needs to change. For us in non-spa world, it was making more sense to serve our assets not in /dist/ because it avoids them being overwritten on build. But good to note. You're in a bit of a difference case, since you're going the SPA route with vue-router


Scoring with score reels chime lag issue.

When using score_reels and score_reel_groups with chimes defined, the chime pulse lags behind the score reel pulse the amount of the repeat_pulse_time. So for example, score 500 points, the first reel pulse happens then after the repeat time the second reel pulse happens simultaneously with the first chime pulse, then 3rd reel with 2nd chime, etc until the end where there the last chime happens by itself.  Log snippet showing this in action.
2022-02-05 09:57:13,866 : INFO : EventManager : Event: ======'player_score'====== Args={'value': 500, 'prev_value': 0, 'change': 500, 'player_num': 1}
2022-02-05 09:57:13,917 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-02-05 09:57:13,917 : INFO : SwitchController : <<<<<<< 's_player_1_100' inactive >>>>>>>
2022-02-05 09:57:13,954 : INFO : SwitchController : <<<<<<< 's_left_flipper' inactive >>>>>>>
2022-02-05 09:57:14,090 : INFO : EventManager : Event: ======'reel_score_player_1_100_advance'====== Args={}
2022-02-05 09:57:14,090 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-02-05 09:57:14,090 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)
2022-02-05 09:57:14,296 : INFO : EventManager : Event: ======'reel_score_player_1_100_advance'====== Args={}
2022-02-05 09:57:14,296 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-02-05 09:57:14,296 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)
2022-02-05 09:57:14,502 : INFO : EventManager : Event: ======'reel_score_player_1_100_advance'====== Args={}
2022-02-05 09:57:14,503 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-02-05 09:57:14,503 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)
2022-02-05 09:57:14,710 : INFO : EventManager : Event: ======'reel_score_player_1_100_advance'====== Args={}
2022-02-05 09:57:14,710 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-02-05 09:57:14,710 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)
2022-02-05 09:57:14,914 : INFO : EventManager : Event: ======'reel_score_player_1_100_advance'====== Args={}
2022-02-05 09:57:14,914 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)
The delay happens also with just a single pulse event such as scoring 100 pts.  The delay is very noticeable in the gameplay, with a delay between playfield object being hit and the chime sounding
Can be seen in the Quidditch homebrew thread on pinside, this post has video https://pinside.com/pinball/forum/topic/my-homebrew-lots-of-questions/page/2#post-5458864
Attached a minimal setup with score reels to show the effect.  basically around step 10-14 from tutorial with score reel stuff added.
MPF Minimal Score Reels.zip

Looking at this briefly, the reel_[x]_advance event happens after the score reel coil finishes pulsing.  So you see it pulse, and then in the next time wave, it shows the advance event.  That advance event instantly pulses the coil.
So to time it up, it would need to ready the pulse for the change instead of the advance event for when to pulse the coil.  So those two coils pulse in parallel (drive reel and chime).

Not sure if this is due to PSU power management or some logic error. I did not check the code yet. Guess that would be the first thing to find out.

I ran this simplified config borgdog provided and was able to replicate the same delay.  So I wouldn't think PSU if virtual is doing it as well.  The chime is happening right after the advance event, but the advance event is 1/4 second behind the actual driving of the coil.
I played around with the hw_confirm_time and repeat_pulse_time.  But some configurations broke it so it would never reset to let me start a game, and others modified the time, but it would still be wrong (but different amounts of time between repulses.
2022-04-11 15:08:37,995 : INFO : EventManager : Event: ======'player_score'====== Args={'value': 500, 'prev_value': 0, 'change': 500, 'player_num': 1, 'source': 'base'}
2022-04-11 15:08:37,998 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-11 15:08:38,226 : INFO : EventManager : Event: ======'reel_score_player_1_100_advance'====== Args={}
2022-04-11 15:08:38,226 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-11 15:08:38,227 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)

Correct, in the code every chime that is configured has a handler for the associated advance event.  Presumably there is a delay or a check that takes time in the code, which delays the advance event from posting until that period of time after the coil fires.
There is a ton of nuance here.  I added a chime event that fires right after the coil pulses, that removes the 200ms delay that you can see in the logs above.  But now the first (and only first) chime fires 40ms early, all others are within 1ms.
Additionally when you get rolling over to the next number both are firing at the same time, even though the pulse for the carry over number is delayed (albeit only ~50ms).
2022-04-11 17:08:07,222 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)
2022-04-11 17:08:07,222 : INFO : coil.c_chime_1000 : Pulsing Driver for 20ms (1.0 pulse_power)
2022-04-11 17:08:07,222 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-11 17:08:07,270 : INFO : coil.c_player_1_1000 : Pulsing Driver for 10ms (1.0 pulse_power)

I have no intention of every using chimes in my machine, so if this is an acceptable end result, I can clean up the code and push up a PR for review and feedback.  Basically it will check if you have chimes in your config and if so fire a reel_XX_chime event.  This all happens before the hardwareswitch method checks, and then it would fire the advance event after it confirms.

To elaborate on the 1000 issue: if you look at the four lines above, you can see at .222ms it chimes both 100 and 1000.  At the same time it pulses the 100.  So the 100 reel and chime are in sync.  But the 1000 chime goes off, and then .048 seconds later at .270 the 1000 coil actually rotates.
As for the first time the chime and coil fire, you can see below.  I removed all the noise and paired them up.  But you can see the very first chime happens immediately after a score is updated, but it takes about 40ms for the reel to trigger.  I saw that very consistently.  But then after the initial everything is perfectly synced up (at least close enough for human ears and eyes).
2022-04-11 17:08:05,674 : INFO : EventManager : Event: ======'player_score'====== Args={'value': 500, 'prev_value': 0, 'change': 500, 'player_num': 1, 'source': 'base'}
2022-04-11 17:08:05,681 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)
2022-04-11 17:08:05,720 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)

2022-04-11 17:08:05,728 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)
2022-04-11 17:08:05,729 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)

2022-04-11 17:08:05,767 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-11 17:08:05,767 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)

2022-04-11 17:08:05,787 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)
2022-04-11 17:08:05,793 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)

2022-04-11 17:08:05,829 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-11 17:08:05,830 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)

As for power issues, its a hunch Jan had, and he might not be wrong.  But I would imagine that these are pretty low power coils and unless your YAML has it very restricted in your PSU setup, I would think it could do both.  As the above the Quidditch is doing them both at the same time, just delayed by one cycle.

40ms would be far less noticeable than the 250ms or so that it currently does, and since the chime is the one firing first it may not really be noticed at all.
You appear to have a really short repeat_pulse_time there, does everything still hold with something like a 100ms repeat_pulse_time?
If that still behaves the same with a 100ms-150ms repeat_pulse_time, then I would be good with that.

Here is the log based on your original config that was supplied with the updated code (Thanks!).  You can see everything paired up that it goes off as expected.  Only thing is the ** lines half way through where the 1000 chime and 1000 coil don't perfectly align.  That's a bigger thing to straighten out and basically rewrite the logic.  So I would say for now that is a necessary evil, but the main chime and reel line up at this point.
2022-04-12 10:15:16,240 : INFO : EventManager : Event: ======'player_score'====== Args={'value': 500, 'prev_value': 0, 'change': 500, 'player_num': 1, 'source': 'base'}
2022-04-12 10:15:16,246 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)
2022-04-12 10:15:16,246 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)

2022-04-12 10:15:16,464 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-12 10:15:16,465 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)

2022-04-12 10:15:16,680 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-12 10:15:16,681 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)

2022-04-12 10:15:16,895 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-12 10:15:16,895 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)

2022-04-12 10:15:17,111 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-12 10:15:17,111 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)

2022-04-12 10:15:17,600 : INFO : EventManager : Event: ======'player_score'====== Args={'value': 1000, 'prev_value': 500, 'change': 500, 'player_num': 1, 'source': 'base'}
2022-04-12 10:15:17,607 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)
**2022-04-12 10:15:17,607 : INFO : coil.c_chime_1000 : Pulsing Driver for 20ms (1.0 pulse_power)**
2022-04-12 10:15:17,607 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
**2022-04-12 10:15:17,653 : INFO : coil.c_player_1_1000 : Pulsing Driver for 10ms (1.0 pulse_power)**

2022-04-12 10:15:17,824 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-12 10:15:17,824 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)

2022-04-12 10:15:18,025 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-12 10:15:18,025 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)

2022-04-12 10:15:18,229 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-12 10:15:18,230 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)

2022-04-12 10:15:18,414 : INFO : coil.c_player_1_100 : Pulsing Driver for 10ms (1.0 pulse_power)
2022-04-12 10:15:18,421 : INFO : coil.c_chime_100 : Pulsing Driver for 20ms (1.0 pulse_power)

@jabdoa2 Do you have a preference on the solution? There are three options that I have:

move the advance up before the hardware check. This keeps all code the same, but will fire the advance before it's "actually" advanced
add a new event for chime right after the reel coil pulse, and leave advance where it is. This means there are two events posted, even if a chime isn't used.
Get really fancy with number two to check a reel_group to see if chimes are configured and fire the chime event conditionally. Advance would still fire so it doesn't break any user events queued from that. It would be a bigger lift to bring that object over to reference the config, but is probably the cleanest implemented option.

@atummons thanks for your analysis. I would go with 2 as it sounds as clean as possible. Maybe we could add a _will_advance event? In other areas we had similar ordering issues and our usual way is to post will_xxx when we made the decision to do something. Then xxxing when we actually start the process (same as our current event here; we got thing without "ing" in a few cases where we added it in retrospectively). Often event handlers can also delay this event (i.e. ball device eject). Finally, we post xxxed after something happened. I would apply the same general structure here as well.

Issue addressed in PR #1634

@toomanybrians you completed this PR a while back, so this issue can be closed when you get to it.


Dependency Loading Bug

Currently in 4.2.4 RequestLink it calls requestInstantiate on all dependencies. This in turn will fulfill when all the dependencies have been driven to the LINK state. But just because the dependencies are in the link state does not mean that their dependencies in turn are. Thus third-level dependencies can be skipped out.
Let me know if that describes the issue in enough detail.

@guybedford Can you take a look at commit 3dd0c66c34aa20c7454283a53482280aa5a3bef5 and see if that looks right to you?

@dherman this looks great to me on first read. Will work on updating this implementation next week with some luck.

@guybedford are we good here? if yes, let's close this issue.

@caridy thanks for following up. Yes this is still a bug unfortunately, see the last point in https://github.com/whatwg/loader/issues/40, which is a critical bug wrt to circular references:
4.2.4 Circular references still don't have a stop condition here. Some type of extra state is needed, perhaps an INSTANTIATE_ALL that fits in after instantiate, which then gets marked as LINK within instantiateAll before hitting the circular references.

ok, we will track the circular references issue here: https://github.com/whatwg/loader/issues/40


Strimzi Performance Testing

but I think the proposal should pick one strategy, which is what the author believe it's the best approach, and describe the others in the rejected alternative section, with motivations. That way, you can really think through pros and cons, and take a position. We would also need more details on the output and its format.

Yeah, that's what I was thinking when I ended this writing... :D I did not know what to pick because everything seems to have some cons and pros....and letting more people to decide is better (as for this initial draft...), Basically I was 50/50 on having:

integrate it into a strimzi-kafka-operator repo
having a dedicated repo
--
So hearing some input from you would be good to consider all the consequences

I agree with @fvaleri about having the performance tests side-by-side with system tests. The main problem in having the separate repo is dependency on particular component/operator. So in the repository with performance tests you would need to include operators, OAuth, bridge, possibly Drain cleaner (in case that you would like to see how many Kafka/ZK Pods it will handle when the Node will be drained), but you will be limited with the fact that you will not be able to run performance tests for the PRs, RCs etc.
So in case that you would like to go with the 2nd approach, you will need to keep in mind that you will use the SNAPSHOT versions (most probably) and only when the PRs are merged. Having first approach, you can easily trigger it for each PR and you'll see how much the performance went down after the changes.
I know that I said that having separate PR for performance tests would be clearer, but I thought about it more and now I see that it would not be maybe that beneficial.
Also, I think you can have another module for the performance tests inside the strimzi-kafka-operator repository, which can take the things from systemtest module and add more needed for the performance tests (or add it to test-frame into separate module just for the performance testing, which would be FMPOV also beneficial). The performance tests could be then triggered using profile or just by specifying the package (as we anyway do for the systemtest module).

I agree with @fvaleri about having the performance tests side-by-side with system tests. The main problem in having the separate repo is dependency on particular component/operator. So in the repository with performance tests you would need to include operators, OAuth, bridge, possibly Drain cleaner (in case that you would like to see how many Kafka/ZK Pods it will handle when the Node will be drained), but you will be limited with the fact that you will not be able to run performance tests for the PRs, RCs etc - that means in case of API change or whatever, you would need to "bump" the dependency.
So in case that you would like to go with the 2nd approach, you will need to keep in mind that you will use the SNAPSHOT versions (most probably) and only when the PRs are merged. Having first approach, you can easily trigger it for each PR and you'll see how much the performance went down after the changes.
I know that I said that having separate PR for performance tests would be clearer, but I thought about it more and now I see that it would not be maybe that beneficial.
Also, I think you can have another module for the performance tests inside the strimzi-kafka-operator repository, which can take the things from systemtest module and add more needed for the performance tests (or add it to test-frame into separate module just for the performance testing, which would be FMPOV also beneficial). The performance tests could be then triggered using profile or just by specifying the package (as we anyway do for the systemtest module).

Yeah agree, during this weekend or the following week I would re-design a proposal and write more insights on how we want to do that (or at least point on implementation possibles). Thanks

Update, there are a few leftovers but I think it's kinda of ready WDYT @fvaleri @im-konge? Also, there are some questions which I have but... Moreover, maybe I am overcomplicating some things in the design so feel free to be a critic :D


nan values issue a warning

I got the following line of code, as in the documentation

m1 = cube.moment(order=1)

It raised the following warning.
/Users/mariastone/opt/anaconda3/lib/python3.8/site-packages/spectral_cube/_moments.py:168: RuntimeWarning: invalid value encountered in true_divide
return (np.nansum(data * pix_cen, axis=axis) /
My cube is masked, so that the masked pixels have the value of NAN.
Just letting you know about this.
Best regards,
Maria

Thanks for the note! You'll get this warning when a spectrum is fully masked and the divide encounters a NaN/NaN.


Improve Formatting of command-ine output

Clearly, the current way of outputting the questions to the command line is very poor. Improve it. Beautify the output.
Suggestion: Look into PyInquirer, click.

This issue is currently in the process of being solved.
Commit: 757015de6ce911028fbbbf8f42833fc5b2df5fe1

This issue is currently in the process of being solved.
Commit: 757015de6ce911028fbbbf8f42833fc5b2df5fe1


feat(behavior_path_planner) ignore pull over goal near lane start

Signed-off-by: kosuke55<EMAIL_ADDRESS>Description

When the goal is set near lane start, the path is generated close to the drivable area edge. This causes distortion by obstacle_avoidacne_planner.
https://user-images.githubusercontent.com/39142679/212821006-ae1b0bcb-8fe3-474d-b9f5-a4b84dd16f1c.mp4
In this PR, ignore the goal candidates near the start of pull over target lanes to fix that.
Related links

launcher

https://github.com/tier4/autoware_launch/pull/699
https://github.com/autowarefoundation/autoware_launch/pull/166

tier iv internal link

https://star4.slack.com/archives/CEV8XMJBV/p1673861071218589
https://tier4.atlassian.net/browse/T4PB-25149

Tests performed

psim
ignore_distance_from_lane_start: 10.0
https://user-images.githubusercontent.com/39142679/212820712-c1e5b4c7-3353-4794-862f-4fd666947d0c.mp4
ignore_distance_from_lane_start: 15.0

ignore_distance_from_lane_start: 20.0

Notes for reviewers

Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.
[ ] The PR has been properly tested.
[ ] The PR has been reviewed by the code owners.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.
[ ] The PR is ready for merge.

After all checkboxes are checked, anyone who has write access can merge the PR.


Provide some configurations for enabling/disabling some marked features

Sometimes you do not want to parse and convert all markdown into html.
Maybe someone do not want links,etc. to be parsed. node-discount does it this way.
Kind regards

This is a good idea. Something I've considered for a while: https://github.com/chjj/marked/pull/5
I want to do it in a way that allows marked to be more hackable instead of adding options. I'll leave this open for now.


Add useful toString() implementation to provider related types

In order to facilitate debugging.

@bot-gradle test and merge

OK, I've already triggered a build for you.


Add tests for TabCompletion for various input types

Add tests for TabCompletion for various input types
Related code coverage report:
https://codecov.io/gh/PowerShell/PowerShell/tree/9e41c647a9407e05d86f4971a6bd25719a7130d0/src/System.Management.Automation/engine/CommandCompletion
Environment data

> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.0.0-beta
PSEdition                      Core
GitCommitId                    v6.0.0-beta.3
OS                             Microsoft Windows 10.0.16204
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

Summary of missing areas
CommandCompletion.cs

[x] negatives cases/error handling (if some of these can't be hit, consider converting to asserts)
[ ] in debugger
[x] nested runspace/remote runspace
[x] getting next result including wrap around
[x] user overridden tabexpansion
[ ] legacy tabexpansion
[x] remove PSv2 code PSv2CompletionCompleter is for tab completion in a remote session that is from win8+ to win7, so it needs to be kept.
[x] adding/handling quotes

CompletionAnalysis.cs

[ ] cursor position (you have some of these covered, not sure if all)
[ ] constrained language mode
[ ] filename after redirection
[ ] line continuation
[ ] DSC resource

CompletionCompleters.cs

[ ] fully qualified cmdlet
[ ] remove workflow code
[ ] complete module name
[ ] import-dscresource
[ ] positional parameter

CompletionResult.cs

[ ] s_nullInstance
[ ] Exceptions

ExtensibleCompletion.cs

[ ] Exceptions
[ ] Register-ArgumentCompleter with CommandName = [string]::empty

PseudoParameterBinder.cs

[ ] remove workflow related code
[ ] examine the code to see to find out specific missing areas

@daxian-dbw is the PSv2CompletionCompleter targeting PSv2?

Yes, it's for tab completion in a remote session from PSv3+ to PSv2.

Since we've formally deprecated v2, I'm wondering if we should keep this.  cc @joeyaiello

I think the remaining items can be pushed to MQ


docs: GitHub org change updates

Issue being fixed or feature implemented

Clean up some more places where we refer to dashevo
What was done?

Updated dashevo to dashpay for a number of links/badges.
How Has This Been Tested?

Previewed updated files to check badges
Breaking Changes

N/A
Checklist:

[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have added or updated relevant unit/integration/functional/e2e tests
[ ] I have made corresponding changes to the documentation

For repository code-owners and collaborators only

[ ] I have assigned this pull request to a milestone

@shumkov Seems I have lost my write access with the repo move so I won't be able to merge atm :man_shrugging:

@thephez I will bring it back a bit later when I get back my phone ))


[BugFix][Calling] Permission view settings button overlap UI bug fixed

Purpose

Fixes the UI overlap bug on permission view in setup screen

Does this introduce a breaking change?

[ ] Yes
[x] No

Pull Request Type
What kind of change does this Pull Request introduce?

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Documentation content changes
[ ] Other... Please describe:

Pull request checklist
This PR has considered:

[ ] Color Theming
[ ] iOS supported versions (all major versions greater than or equal current target deployment version)
[ ] VoiceOver and Keyboard Accessibility
[ ] Internationalization and Right to Left layouts
[ ] Size classes and window sizes (iPhone vs iPad, notched devices, multitasking, different window sizes, etc)
[ ] View Data Injection
[ ] Demo App UI/UX update

How to Test

Open...
Click on...

What to Check

Before
After

Other Information

Tested on iphone 14 pro max.
Looks good. Does this match the figma as well?


Add data hashing functions

Resolves #271

This is missing pubKeyHash and that should be it I believe. However, The PubKey export seems to have been removed from plutus-ledger-api....

New UPLC built-in

If it's a UPLC built in, we should add it separately. We could probably use it in dataHash and plift the result, but I like the pure haskell approach better


My prior code work appears to have disappeared for mutiple exercises .... ?!?

In reviewing my prior work (see screen scrape below), I note that the code I had used to complete the assignments has been deleted?!?  So, if I want to review my earlier efforts, I am finding that I have to actually redo the assignments.  Is this by design?  Is there  a way to restore the coding I have completed for the first part of the FCC HTML section?!?
-Eric Garcia
(screen scrape of work I'd finished:)
Challenges Completed Last Updated Solution
Learn how Free Code Camp Works Jun 18, 2016 View this challenge
Create a GitHub Account and Join our Chat Rooms Jun 18, 2016 View this challenge
Configure your Code Portfolio Jun 18, 2016 Jul 12, 2016 View this challenge
Join a Free Code Camp Group in Your City Jun 18, 2016 Jul 12, 2016 View this challenge
Learn What to Do If You Get Stuck Jun 18, 2016 Jul 12, 2016 View this challenge
Say Hello to HTML Elements Jun 18, 2016 Jul 12, 2016 View solution
Headline with the h2 Element Jun 18, 2016 Jul 12, 2016 View solution
Inform with the Paragraph Element Jun 18, 2016 View solution
Uncomment HTML Jun 18, 2016 View solution

Hey Eric,
Can you help us with the date prior to which the challenges are not appearing on your portfolio?
I can see that the challenges that you mention above are visible on your portfolio.
https://www.freecodecamp.com/egnosis
If you recently cleared your cache and cookies then its possible that you may not see the code you submitted only in case you visit from the map page.
However if you visit the challenge via the View Solution link then you should be able to see the code.
Your solutions are never deleted from your profile.


Can't cleanup worker memory 2 GB after rendering the 1,5m pdf file

Attach (recommended) or Link to PDF file here:

file https://sambazmusic.files.wordpress.com/2017/08/give-and-take.pdf
Configuration:

Web browser and its version: Chrome 73.0.3683.103 (Official Build) (64-bit)
Operating system and its version: win 10
PDF.js version: Stable (v2.0.943)
Is a browser extension: not

Steps to reproduce the problem:

render pages one by one threw url
we perform page.cleanup(); after each iteration.
3 On destroy we perform
_pdfDoc._transport.commonObjs.clear();
_pdfDoc._transport.fontLoader.clear();
_pdfDoc._transport.loadingTask.destroy();
_pdfDoc._transport.pageCache = [];
_pdfDoc.destroy();

What is the expected behavior?
Want to clean worker memory after rendering or by destroy
What went wrong? (add screenshot)
Link to a viewer (if hosted on a site other than mozilla.github.io/pdf.js or as Firefox/Chrome extension):

Thanks a lot!

Attach (recommended) or Link to PDF file here:

This information is required, in order for the issue to be actionable/valid.

PDF.js version: all

Please make sure to always provide actual version numbers when reporting an issue, since "all" isn't that helpful in general.

wand to clean worker memory after rendering or by destroy

You'll need to provide the code you're using, since this isn't nearly enough information as-is.

            var defer = $q.defer();
            previousPromise.then(function () {

                params.page.cleanupAfterRender = true;
                params.page.render(params.renderContext)
                .then(function () {
                    // Returns a promise, on resolving it will return text contents of the page
                    return params.page.getTextContent();
                })
                .then(function (textContent) {
                    var canvasPosition = angular.element(params.canvas).position();
                    var textLayerDiv = document.createElement('div');

                    textLayerDiv.setAttribute('class', 'text-layer');
                    params.pdfPage.appendChild(textLayerDiv);

                    // Assign CSS to the text-layer element
                    angular.element(textLayerDiv).css({
                        left: canvasPosition.left + 'px',
                        top: canvasPosition.top + 'px',
                        height: params.canvas.height + 'px',
                        width: params.canvas.width + 'px'
                    });

                    // Pass the data to the method for rendering of text over the pdf canvas.
                    _pdfjs.renderTextLayer({
                        textContent: textContent,
                        container: textLayerDiv,
                        viewport: params.renderContext.viewport,
                        textDivs: []
                    });

                    params.page.cleanup();

                    defer.resolve();
                })
                .catch(function (err) {
                    LogSvc.error('Failed to add page to container. ', err);
                });
            })
            .catch(function () {
                // Need to prevent possibly unhandled rejection after close pdf
                // if page rendering still in progress
            });

Can you reproduce this issue when opening the PDF file, either by drag-and-drop or using the "Open File" on the toolbar) with the latest version of the default viewer?
I've just tried that, and cannot spot any huge increases in memory usage when looking at the Task Manager. However, there's been a few recent patches (thus not included in version 2.0.943) that should have improved memory usage during (some) image decoding, which could be a possible explanation here.
If you can only reproduce this in a custom implementation, and not in the  default viewer, please see https://github.com/mozilla/pdf.js/blob/master/.github/CONTRIBUTING.md (emphasis mine):

If you are developing a custom solution, first check the examples at https://github.com/mozilla/pdf.js#learning and search existing issues. If this does not help, please prepare a short well-documented example that demonstrates the problem and make it accessible online on your website, JS Bin, GitHub, etc. before opening a new issue or contacting us on the IRC channel -- keep in mind that just code snippets won't help us troubleshoot the problem.

Ok, understood. But do you have any method to clear worker? Or it is cleared by itself?

But do you have any method to clear worker? Or it is cleared by itself?

With the exception of various font data, which will never reaches gigabytes in practice, the worker doesn't really cache all that much data long term (i.e. after a page has been parsed).
Hence I'd like to challenge the assumption that it's the worker holding onto all of this memory; anyway clearing out various main- and worker-thread caches is done with the PDFDocumentProxy.cleanup method: https://github.com/mozilla/pdf.js/blob/74561f58b55fc5570c1d273d1eb53ed0f1725464/src/display/api.js#L766-L771
Without PRs such as #10595 and #10644 though, it's probably the main-thread that's holding onto more data than it should. Furthermore, it's difficult to tell from just the code-snippet in https://github.com/mozilla/pdf.js/issues/10730#issuecomment-482526724, but if you're rendering all of the document at once it may simply be the <canvas> elements that's taking up memory; please refer to https://github.com/mozilla/pdf.js/wiki/Frequently-Asked-Questions#allthepages

Closing since this is answered. If there is an actual bug after your investigation, please create a new issue specifically for that and clearly outline where the problem is with steps to reproduce. Thanks.


Is this plugin still being maintained?

Yes. Working to get a next release out, and build a team of collaborators/maintainers to keep it going long term. I won't as actively involved.

@kenwheeler Thanks for confirming Ken!


[NEW PROJECT] Packers and Movers Website

Closes #1684
Description
I have added the project in the Projects section.
Type of change
Checklist:

[x] I have made this from my own
[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] My changes generate no new warnings
[x] The title of my pull request is a short description of the requested changes.

ATTACH SCREEN-SHOTS / DEPLOYMENT LINK

@TusharKesarwani @zugzwang03 Please review this PR.

@TusharKesarwani Please merge this PR.

@TusharKesarwani

@TusharKesarwani Please merge this PR.


Few tweaks to roy example and re-trigger RTD build

As the title says. RTD build and deployment failed, and we want to debug. Also improving a bit the chemiscope output for the ROY example

:books: Documentation preview :books:: https://software-cookbook--27.org.readthedocs.build/en/27/

This should now run fine, if you can rebase on top of master!


Add imagecontentsourcepolicy so that we can mirror images

What does this PR do?
This PR adds imagecontentsourcepolicy for helping with mirroring images. It also uses https://quay.io/repository/wto/web-terminal-operator-index which we can pushed mapped images to
What issues does this PR fix or reference?
Is it tested? How?

tested on OpenShift 4.5.7 and mirroring seems to work as expected


how to see all fonts together

Describe the feature you'd like to request
it is time consuming to see fonts one by one in font preview
is it possible to see all fonts previews in one page together without clicking navigatiion links?
Describe the solution you'd like
see all fonts previews in one page together
Describe alternatives you've considered
No response
Additional context
No response

This type of interface is already being implemented in the new website with #552. You can see the preview here.


fine-tune other datasets on VQA tasks

How should I fine-tune other datasets on VQA tasks？I need detailed guidance

i dont think that they will answer any time soon

@MemoryOldTime @MohamedLahmeri01
I have the same question. Did you succeed?

@curious-ai-developer  still no


Special characters as variable names

Title says it all :)

Do a replacement dict after the string creation.


WIP: JS style promise

This is a WIP (so everything is in a single file). I've been working on it on and off. I want to make a proposal, show some PoC and maybe have some feedback.
I find myself often annoyed by sql->execSqlAsync(). I It forces one to write both handlers for the success and failure case. And it causes the parameters to be at the end of the parameters list. Which may not even be on the same screen as the SQL query.
auto sql = app().getDbClient();
db->execSqlAsync("SELECT some_val FROM some_table WHERE some_val = ?;"
 [](...){ // Theses two callback may be tens of lines long
    do_more_stuff();
 },
 [](...){
 },
 the_parameters_are_here // The parameter is at the end, where the SQL queries may not be on the same screen
);

I understand these are limits imposed by C++ templates. Therefor I propose a JS style future pattern. Using some template magic
auto sql = app().getDbClient();
db->execSqlFuture("SELECT some_val FROM some*table WHERE some_val = ?;", the_parameters_are_here)
  ->then([](...){
    do_more_stuff();
  })
  .except([](...){
  });

Performance wise, it is slightly slower than the current callback. Making a JS style future makes an extra heap allocation and it stores the results if the results are available before the callback is assigned. It also does it's own lifetime management, which I think is suboptimal. Tho I'm not sure if I can improve on it.
Further changes are needed:

[ ] For now required C++17. Drop it to C++14
[ ] Make binding the future to a callback easier
[ ] Generalize it to also handle HTTP callbacks
[ ] Document the API and changes
[ ] Write tests
[ ] Make it thread-safe. Preferably lock free
[ ] Cheaper lifetime management
[ ] Fix coding style
[ ] Better naming of functions and types

C++20's corotuein is arguably a better solution. But that's not wildly available yet. Let me know if this is a feature you'll want in Drogon. I'll put more time into it if there's interest.%

@marty1885 Thanks so much for your patch. And a patch for corotuein is also welcome, I think we can make a corotuein branch for it.

Thanks for the feedback. Updates will come later. It's difficult to get the semantics and syntax right,
I'll look into coroteins when I get GCC11.

I'm postponing this feature until I got corotuein working. Corotuein should be faster. And I can't find a good solution to emulate std::optional in C++14.

I'm postponing this feature until I got corotuein working. Corotuein should be faster. And I can't find a good solution to emulate std::optional in C++14.

Close in favor of #693


setup basic Docker environment

If you haven't used Docker before, then you've got some learning to do. Have fun.
have a .dockerdev folder with Dockerfile
and a docker-compose.yml definition
In short, another developer should be able to fire up and run all the code with hardly any installing and certainly no configuration.

Error with docker pre-checks - "computer doesn't have VT-X/AMD-v enabled" despite enabling virtualisation in the BIOS.

Hmmmm, I was hoping that Docker would be as happy on Windows as on the Mac, but I may be wrong. Stick at it if you bear it because it'll be useful for other projects.

Can't use the Docker desktop because the version of windows on my laptop is to old. The legacy version of docker - docker toolbox is failing still despite virualisation failing and Hyper-V not enabled. I use anaconda a lot previously. Is it considered an alternative and is Docker necessary?


[On Hold] CMOS-12, CMOS-52, CMOS-92: Rework cbmultimanager inclusion process

Previously we would get the private cbmultimanager repo by performing a Git SSH bind mount in the Dockerfile. This had a couple serious issues: you needed to have a local SSH agent running, it requires BuildKit (though that's less of an issue these days), and the only version you could build was master.
This commit switches the process to doing something akin to the config-svc build process: the cbmultimanager source is cloned by the Makefile, then handed over to Docker which builds it from the local clone. This also means the version to use can be specified as a Makefile parameter.
In future we may switch this to use the manifests system used by other CB products - hopefully the Dockerfile change would make this easier by doing some of the groundwork in advance.

Triggered a nightly run at https://github.com/couchbaselabs/observability/actions/runs/1426488701 - native builds will likely fail due to https://issues.couchbase.com/browse/CMOS-134 but good as a sanity-check.

Closing in favour of #256.


Fix JdbcIO PreCommit mysql breaking change

Fixes https://github.com/apache/beam/actions/workflows/beam_PreCommit_Java_JDBC_IO_Direct.yml?query=event%3Aschedule
context: https://github.com/apache/beam/pull/30024#issuecomment-1920157165
Please add a meaningful description for your change here

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

R: @Polber
CC: @lostluck this one is also currently failing on release branch. But it is just a test issue so not a release blocker

R: @damccorm


feature: support pcre2

https://github.com/openresty/lua-nginx-module/pull/2221

I have merge this PR through cmdline.


New version: Mozilla.Firefox.DeveloperEdition version 129.0 (129.0b1)

Created by 🥟 Dumplings in workflow run #6466.

Log
Updated: 128.0b9 → 129.0b1
Submitting WinGet manifests
Creating manifests
Uploading manifests and making commits
Creating a pull request

Microsoft Reviewers: Open in CodeFlow

/azp run

/azp run


Cannot run PHPUnit tests - lack of info?

Describe the bug
Cannot run PHPUnit tests.
Database already exists
I think the main problem here is the lack of info in the docs
Steps to reproduce
Install new laravel project & tenancy package
Expected behavior
Should be able to run tests.
I've read https://sponsors.tenancyforlaravel.com/frictionless-testing-setup as well and using the setup
Your setup

Laravel version: 8.30.1
stancl/tenancy version: 3.4.1

Testing env
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=project

TenantTestCase & TestCase files identical with https://sponsors.tenancyforlaravel.com/frictionless-testing-setup
Example test
<?php

namespace Tests\Feature;

use App\Models\User;
use Tests\TenantTestCase;

class ExampleTest extends TenantTestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->assertCount(0, User::all());
        User::factory()->create();
        $this->assertCount(1, User::all());
    }
}

Error
Tenant cannot be created. Reason: Database test_tenantid already exists.

@stancl Can you update the docs and/or provide a simple (working) test example? Behind a paywall, if you prefer.
No offense (I appreciate your work), but is it kinda ironic that in the docs, where you compare your package against others, you highlight "Very high testability" - while the package cannot run tests out of the box / no docs for working tests setup?
I'm not saying the package is not testable, but a working example would be appreciated.

How does the described setup not work? The boilerplate uses exactly the described setup and there are no issues with it.

Database test_tenantid already exists

Are you cleaning up your databases? In boilerplate tests we don't use pre-made databases, we create databases as needed in the tests. With random names.

@cecilymiller can you share your TestCase and TenantTestCase file, im fighting kinda similar problem, maybe we can solve it together.

Did you customize your tenant logic in any way or are you using a fresh install?
Your error is:

Database test_tenantid already exists

The docs mention using test_tenant as the DB name prefix. If the error in your case is test_tenantid then it means that you're creating a tenant with an id of 'id'. Why? Can you post your CreateTenantAction class?

@stancl Thanks for getting back!
I don't have CreateTenantAction class - in the docs, it says

So in your case, call Tenant::create() and anything else that your app needs

You can see my createTenant method above.
I did pass in a tenant ID and that caused the existed DB error, so now the error is gone but it never cleans up the DB so it creates a new DB on each test. The previous DB would be good to delete.
Below is numbered list of Qs to keep questions/answers more organized.

Should I do the DB deletion on my own? - If so, can you share an example

Do you use MySQL, sqlite, or something else?

Do you use custom DB settings to run it faster, perhaps? E.g is SQLite with :memory: DB ideal?

I know DB driver/settings vary a lot between projects but examples would be highly appreciated

I tried this to clean up the DB but no luck so far. It says the DB does not exists
protected function tearDown(): void
    {
        DB::table('test_tenant' . tenant('id'))->delete();
    }

The error is interesting cuz the name matches with the table that is created.

You can see my createTenant method above

It specifies a tenant id, and as the docs say, databases are created based on the tenant id. So when you're getting an error saying that the database already exists, it means this.

If you want. Or you can use sqlite w/ .gitignore, tmpfs docker containers, or you can have pre-made databases.
Up to you
See the tmpfs example

@stancl and where can I find this tmpfs example?

search in the issues and discussions for that, it was discussed I believe

@stancl Any chance to update the docs to cover cleaning the database?
Now I handle the database deletion on my own but when running close to 100 tests, it throws failed to open stream: Too many open files, I'm using :memory: env variable, but it still uses files on SQLite, it seems.
I follow the sponsored docs on the testing setup. But on top of that, I have this tearDown method in TenantTestCase class
protected function tearDown(): void
{
    parent::tearDown(); // TODO: Change the autogenerated stub

    (new SQLiteDatabaseManager)->deleteDatabase($this->tenant);
}

As far as I understood, it is possible to use :memory: sqlite, right?

You can't use :memory:, I think that's mentioned in the docs

@stancl Hmm, yes you're right. On my current setup, the tenant connection uses a file but the central used the memory DB - interestingly enough, it works fine. However, is there something I should be aware of? For example, issues when using :memory: for central DB, but file for tenants?


Update Nginx in Docker

Stable from 1.14.0 to 1.14.1
Mainline from 1.15.5 to 1.15.6
http://nginx.org/en/security_advisories.html

anyone know what's up with the CI failure?

Restarted CI, the prior run failed to fetch the submodules. It got past that step now, let’s see.

CI passed


lib/domains/eg/edu/moe/cairo7.txt

I hope I did right steps
cairo7.txt

my school online page:
https://egyptschools.info/school/مدرسة-اي-تك-للتكنولوجيا-التطبيقية-itech/

@RehabOsman177720 Regrettably, there were too many abused subdomains of moe.edu.eg. We had to pause adding subdomains of this domain in this repository.
Please apply for free educational license with an official document which proves that you are a student. You can do it using "OFFICIAL DOCUMENT" tab at https://www.jetbrains.com/shop/eform/students.
I have to close the request without merging.
Thank you for the understanding!

Not fair to do that, if some people did bad things that's not mean all people will do it, I joined your student's plan 1 year ago and you approved my email, now after I used your editors every day for all last year It became a routine and it will be so hard to use any other editors.
I hope u can understand my problem.
attached is your confirmation email from 1 year and screen for my educational info


:z.{count} doesn't work as described

To Reproduce

Run gvim --clean
Copy this text to the buffer:

1
2
3
4
5
6
7

Set the cursor on 4 (line 4).
Execute :z.4. lines 3, 4 and 5 are displayed. Press Enter. The cursor is moved to line 5.

Expected behavior
According to the table at :help :z, the first displayed line for the . mark should be the line that's 1/2 scr back (from the current line), and the last displayed line should be 1/2 scr fwd from it. Also, the cursor should be moved 1/2 scr fwd. Thus, lines  2, 3, 4, 5 and 6 should be displayed, and the cursor should be moved to line 6.
Environment (please complete the following information):

Vim version 8.2.1980
OS: Windows 10 Home 1803
Terminal: GUI.

There's perhaps another reason for the display of lines 3, 4 and 5 to be wrong: this contradicts the statement If there is a [count], that's how many lines you'll see at help :z -- the count is 4, and the number of lines displayed is 3.
On the other hand, the display of lines 2, 3, 4, 5 and 6 which I expected to be correct is wrong either, for the same reason.
Then again, displaying exactly 4 lines say, lines 3, 4, 5 and 6 would contradict the data for the first line for the . marker in the table at :help :z -- line 3 is not 1/2 scr back ((1/2)*4=2, not 1) from line 4.
Environment:

Vim version 8.2.2072
OS: Windows 10 Home 1803
Terminal: GUI.


Possible to exclude Ant Pattern in dependency-check-maven?

Hello!
Using the dependency-check-cli, it is possible to exclude files from being scanned using the exclude arg. However, using dependency-check-maven, odc.excludes is designed specifically to exclude certain artifacts (rather than Ant matching files/directories). This is problematic when trying to ignore .wars, .jars, .ears, etc. produced in the "target" folder when running an aggregate scan. I realize there is scanDir, but I am looking for something opposite, like ignoreAntPath. Is there something analogous to exclude in dependency-check-maven?
Thanks for all your work!

I do not see how you would run into trouble with these? Can you share more info on how these problematic archives hit you?

Why would you need to configure the maven plugin to scan the target directory? The maven plugin gathers the necessary information from the build itself - scanning the target directory should not be necassary.


add LRU cache

Purpose
closes #21
Content

[x] add Cache module containing an LRUCache struct, get! function, and enforce_size! function
[x] add tests for Cache module
[x] use LRUCache in FileReader and DataHandling

There's also some comments/TODO sprinkled around the code that need to be updated.

I think that this a useful data structure, so I would say that we should expose this to other packages that want to use it (eg Coupler, Atmos, ..).
We could rename the Cache module to DataStructures and add some documentation to the docs.
What do you think?

That sounds good to me! I'll rename it and update the docs

Also, please add an entry to the NEWS file :)

@Sbozzolo Thanks for all the feedback, hopefully everything looks good now :)


[WIP] Enable new master to join an existing quorum

For testing only. Will rebase once https://github.com/Alluxio/alluxio/pull/12053 is merged.

Merged build finished. Test PASSed.

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

Merged build finished. Test FAILed.

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


Using bit-dependent trig functions to deal with different underlying …

…types of CGFloat on 32 and 64 bit

LGTM


Remove duplicated code (conflict solved and PR review)

merged conflicts of #202
fixed some spaces
fixed some changed behaviors introduced in the origina PR
includes fixes of #221 #225 to have Travis working

I think version should be bumped to 0.6 since deprecated keywords are removed.
@bulkan if you create a milestone 0.6 I've some other ideas for new features, we can discuss them on RF slack.
Thanks!
Luca

Hey @lucagiove thanks for the PR.
It's been at least 7 years since I've used RF. I've moved onto different technologies.
My point is I don't have the time or interest in joining the RF slack team to discuss about RF.
What I can do is merge this for you and push a new release to PyPI.
If you want I can add you as a collaborator ?

Hi @bulkan thanks for your reply, I see your point.
I would be glad to be a collaborator and help maintaining this library that by the way is quite used.
Thanks!


{ARM} Fix live test

Description

Fix live test

Test
Error Message
Reason

test_subscription_level_deployment_ts
The storage account named armbuilddemo1801 is already taken.
Caused by fixed resource name

test_resource_group_deployment
Query 'properties.provisioningState' doesn't yield expected value 'Canceled', instead the actual value is 'Running'
Service status updates are not stable

test_management_group_deployment
Query 'properties.provisioningState' doesn't yield expected value 'Canceled', instead the actual value is 'Running'
Service status updates are not stable

test_create_template_specs
Query 'artifacts[0].path' doesn't yield expected value 'artifacts\createResourceGroup.json', instead the actual value is 'artifacts/createResourceGroup.json'
Path matching error caused by the change of operating system separator

test_update_template_specs
Query 'artifacts[0].path' doesn't yield expected value 'artifacts\createResourceGroup.json', instead the actual value is 'artifacts/createResourceGroup.json'
Path matching error caused by the change of operating system separator

test_export_template_spec
AssertionError: False is not true
Path matching error caused by the change of operating system separator

test_subscription_level_deployment_old_command
Query '[0].name' doesn't yield expected value 'azure-cli-subscription_level_deploymentdvlqd53kz6wht32dt65u3', instead the actual value is 'policy_definition_deploy'
The data obtained by the list operation is uncertain due to the parallel running test

Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change.
[Component Name 2] az command b: Add some customer-facing feature.

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

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

[x] I adhere to the Command Guidelines.

ARM


Trigger "at now" doesn't work

For example, the rule is "file:at now|path matches "/test/*" | cache". When I enable the rule, its state change to FINISHED without doing any actions.

Fixed by #2184.


[BUG] Code contains multiple always true / false comparisons

JSONReaderASCII and JSONReaderUTF8 contain multiple checks similar to c <= 0xFF, where c is a byte. These checks are always true because the maximum value of byte is 127 and 0xFF is 255. For example:

https://github.com/alibaba/fastjson2/blob/f3a464699e22ebc1523c0247db312564c1de00bc/core/src/main/java/com/alibaba/fastjson2/JSONReaderASCII.java#L164
https://github.com/alibaba/fastjson2/blob/f3a464699e22ebc1523c0247db312564c1de00bc/core/src/main/java/com/alibaba/fastjson2/JSONReaderUTF8.java#L601

JSONStreamReaderUTF16 and CSVReaderUTF16 check if values from a char[] are negative. This is always false because the minimum value of char is 0:

https://github.com/alibaba/fastjson2/blob/f3a464699e22ebc1523c0247db312564c1de00bc/core/src/main/java/com/alibaba/fastjson2/stream/JSONStreamReaderUTF16.java#L43
https://github.com/alibaba/fastjson2/blob/f3a464699e22ebc1523c0247db312564c1de00bc/core/src/main/java/com/alibaba/fastjson2/support/csv/CSVReaderUTF16.java#L94

StreamReader checks if a char is < 0. This is always false because the minimum value of char is 0:
https://github.com/alibaba/fastjson2/blob/f3a464699e22ebc1523c0247db312564c1de00bc/core/src/main/java/com/alibaba/fastjson2/stream/StreamReader.java#L144

I haven't investigated what the correct implementation for each of these would be because I am not familiar with the code base, you would have to do this yourself, sorry. Also I haven't checked whether this was already reported as separate bug reports where users experienced incorrect behavior due to this.
Maybe it would be good to investigate using Error Prone (see ComparisonOutOfRange rule) or SpotBugs. They might find these issues, and prevent similar issues in the future.

fixed, thank you for feedback on these issues!

https://github.com/alibaba/fastjson2/releases/tag/2.0.31
please use new version


[1584] When copying course fields, don't blank a field if the source was blank

Context
Previously, in the live rails version, if a field was empty in the course being copied, it would cause that field to be emptied in the new course.
In the C# version if the field was empty in the course being copied, then that field would be left alone.
The C# version was correct.
Changes proposed in this pull request

Move the logic for checking if a value is present out of view and into controller
Only set values on the destination course if present in the source course
Add a test to illustrate

Guidance to review

Test by copying from courses where only some data is available, but into courses that are otherwise complete (eg add something to an empty course and copy that to a published one).

Seems like the copy course features are in the spec/requests when I'd expect to find them using SitePrism in spec/features. I've avoided adding further specs because I think this should be refactored after this PR.

 Copying from one course to another shouldn't blank fields if they were blank in the copied course


morpheus-graphql-client: String to FilePath

I know they're synonyms but is it cool if I submit a PR to change these to be FilePath instead of String?
defineByDocumentFile :: FilePath -> (GQLQuery, String) -> Q [Dec]

defineByIntrospectionFile :: FilePath -> (GQLQuery, String) -> Q [Dec]

Yeap. You can. Same can be made with server too

@piq9117  so. i think we can close it

thanks!


Feature/dockerfile

This pull request adds file and information related to Docker based deployment of the front end.

@malex984: FYI


How do I change Gstreamer resolution profile - v4l2

My 4k v4l2 m.264 cameras are set at different resolutions. None at the 3840x2160 16fps res, as seen in profile 0 below.
I can go into gst-launch at the right resolution, if i set it.
But when i go into camera-capture, or my python code, even with settings prior. gstcamera does the code below.
[gstreamer] gstCamera -- found v4l2 device: vi-output, ar0821 32-0044 [gstreamer] v4l2-proplist, device.path=(string)/dev/video4, udev-probed=(boolean)false, device.api=(string)v4l2, v4l2.device.driver=(string)tegra-video, v4l2.device.card=(string)"vi-output\,\ ar0821\ 32-0044", v4l2.device.bus_info=(string)platform:tegra-capture-vi:5, v4l2.device.version=(uint)330344, v4l2.device.capabilities=(uint)2216689665, v4l2.device.device_caps=(uint)69206017; [gstreamer] gstCamera -- found v4l2 device: vi-output, ar0821 32-0043 [gstreamer] v4l2-proplist, device.path=(string)/dev/video3, udev-probed=(boolean)false, device.api=(string)v4l2, v4l2.device.driver=(string)tegra-video, v4l2.device.card=(string)"vi-output\,\ ar0821\ 32-0043", v4l2.device.bus_info=(string)platform:tegra-capture-vi:4, v4l2.device.version=(uint)330344, v4l2.device.capabilities=(uint)2216689665, v4l2.device.device_caps=(uint)69206017; [gstreamer] gstCamera -- found v4l2 device: vi-output, ar0821 31-0044 [gstreamer] v4l2-proplist, device.path=(string)/dev/video2, udev-probed=(boolean)false, device.api=(string)v4l2, v4l2.device.driver=(string)tegra-video, v4l2.device.card=(string)"vi-output\,\ ar0821\ 31-0044", v4l2.device.bus_info=(string)platform:tegra-capture-vi:3, v4l2.device.version=(uint)330344, v4l2.device.capabilities=(uint)2216689665, v4l2.device.device_caps=(uint)69206017; [gstreamer] gstCamera -- found v4l2 device: vi-output, ar0821 31-0043 [gstreamer] v4l2-proplist, device.path=(string)/dev/video1, udev-probed=(boolean)false, device.api=(string)v4l2, v4l2.device.driver=(string)tegra-video, v4l2.device.card=(string)"vi-output\,\ ar0821\ 31-0043", v4l2.device.bus_info=(string)platform:tegra-capture-vi:2, v4l2.device.version=(uint)330344, v4l2.device.capabilities=(uint)2216689665, v4l2.device.device_caps=(uint)69206017; [gstreamer] gstCamera -- found v4l2 device: vi-output, ar0821 30-0043 [gstreamer] v4l2-proplist, device.path=(string)/dev/video0, udev-probed=(boolean)false, device.api=(string)v4l2, v4l2.device.driver=(string)tegra-video, v4l2.device.card=(string)"vi-output\,\ ar0821\ 30-0043", v4l2.device.bus_info=(string)platform:tegra-capture-vi:0, v4l2.device.version=(uint)330344, v4l2.device.capabilities=(uint)2216689665, v4l2.device.device_caps=(uint)69206017; [gstreamer] gstCamera -- found 6 caps for v4l2 device /dev/video0 [gstreamer] [0] video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)16/1; [gstreamer] [1] video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)60/1; [gstreamer] [2] video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)60/1; [gstreamer] [3] video/x-raw, format=(string)NV16, width=(int)3840, height=(int)2160, framerate=(fraction)16/1; [gstreamer] [4] video/x-raw, format=(string)NV16, width=(int)1920, height=(int)1080, framerate=(fraction)60/1; [gstreamer] [5] video/x-raw, format=(string)NV16, width=(int)1280, height=(int)720, framerate=(fraction)60/1; [gstreamer] gstCamera -- selected device profile:  codec=raw format=uyvy width=1280 height=720 [gstreamer] gstCamera pipeline string: [gstreamer] v4l2src device=/dev/video0 do-timestamp=true ! video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720 ! appsink name=mysink sync=false [gstreamer] gstCamera successfully created device v4l2:///dev/video0
Nothing I try changes it.
This does not:
v4l2-ctl -d /dev/videoX --set-fmt-video=width=3840,height=2160,pixelformat=1
Help
Jetson Orin, R35, python3.8, linux debian arm64.

Hi @manicmojo, what is the command line or Python code that you are running to set the camera resolution with camera-capture, video-viewer/video-viewer.py, ect?    Can you try it with video-viewer.py --input-width=3840 --input-height=2160 /dev/videoX ?

The command line which gave the code i originally posted was simply camera-capture /dev/video0.
The code you suggests displays the screen in tat resolution 3840x2160. I have no problem displaying. But I cannot capture, or in my python code to run detectnet on get the video streams to be that resolution, or any other than it automatically comes up as.
Which, is weird as I have 6 of the same camera, some set in Gstreamer at 1920x1080 and some at 1280x720 all running in the same python program.
`v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'UYVY' (UYVY 4:2:2)
	Size: Discrete 1280x720
		Interval: Discrete 0.017s (60.000 fps)
	Size: Discrete 1920x1080
		Interval: Discrete 0.017s (60.000 fps)
	Size: Discrete 3840x2160
		Interval: Discrete 0.062s (16.000 fps)
[1]: 'NV16' (Y/CbCr 4:2:2)
	Size: Discrete 1280x720
		Interval: Discrete 0.017s (60.000 fps)
	Size: Discrete 1920x1080
		Interval: Discrete 0.017s (60.000 fps)
	Size: Discrete 3840x2160
		Interval: Discrete 0.062s (16.000 fps)

I tried using subprocess in my python code to no luck either.import subprocess
#Set gstcamera profile using v4l2-ctl
def set_gstcamera_profile(device, profile_number):
subprocess.run(f'v4l2-ctl -d {device} --set-selection=1 --selection-target=1 --set-profile={profile_number}', shell=True)
`
Related, but I couldn't find help in it:
https://developer.download.nvidia.com/embedded/L4T/r31_Release_v1.0/Docs/Accelerated_GStreamer_User_Guide.pdf?t=eyJscyI6ImdzZW8iLCJsc2QiOiJodHRwczovL3d3dy5nb29nbGUuY29tLyJ9
What really gets me is the [gstreamer] gstCamera -- found 6 caps for v4l2 device /dev/video and then selected device profile:
Please let me select GST!

I've learnt the cameras dont work at the 4k resolution with ARGUS API, but do work at 1920x1080, so the issue still persists as i need to set this..
$ gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080" ! nvvidconv ! "video/x-raw(memory:NVMM), format=(string)I420, width=(int)1920, height=(int)1080" ! nv3dsink sync=false
Works fine. Alas. Not within the program, even if i use similar v4l2 code to set it at the start..


RFC: Extend Operator Availability

RFC is in PR #37
rendered

Yes this makes total sense to me. I think we only added the if-statement restriction in order to be conservative, but it makes things more verbose and less intuitive.


We need a "d"

https://github.com/search?q=repo%3Alarastan%2Flarastan "Adress"&type=code
This is a misspelling.
Up for grabs! 🟢

@szepeviktor please see https://github.com/larastan/larastan/pull/2130 👍


bindCallback swallows error if it was thrown after the callback was executed, and the entire function is sycnhronous

RxJS version:
5.5.8
Code to reproduce:
same for node and browser
const fn = (datum, cb) => {
  cb(datum);
  throw new Error("callback error");
};

Rx.Observable.bindCallback(fn)(42)
  .subscribe(
    v => console.log(v),
    e => console.error(e),
    c => console.log("completed"),
  );

Expected behavior:
see 42 and then "callback error" in the console
Actual behavior:
console output:
42
completed

Additional information:
In the real world, I've captured this issue with ReactDOM.render method. If you run it with "bad" JSX it will call passed callback first and then throw an error.
I've tried to reproduce this case as a test, but it worked well in the test environment. So maybe there is something with test scheduler or production build

    it('should error if callback throws', () => {
      const expected = new Error('haha no callback for you');
      function callback(datum, cb) {
        cb(datum);
        throw expected;
      }
      const boundCallback = Observable.bindCallback(callback, null, rxTestScheduler);

      boundCallback(42)
        .subscribe((x: number) => {
          throw 'should not next';
        }, (err: any) => {
          expect(err).to.equal(expected);
        }, () => {
          throw 'should not complete';
        });

      rxTestScheduler.flush();
    });

I've updated the title of this issue, because it's specific to completely synchronous functions with callbacks.

In the short term, the fix for this is to pass a scheduler to the bindCallback function:  bindCallback(fn, asapScheduler) for example.

Closing this because it's addressed in #4089.


Set default values to a secure value - Image Templates

All default values should comply with a security baseline, e.g. NIST 800
The build-in policies of Azure can be used as a reference.
The task would be to scan over each of the following policies and make sure, that the module is per default complying to them.
The following policies are the NIST 800 ones:
\built-in-policies\policyDefinitions\VM Image Builder\PrivateLinkEnabled_Audit.json

The required property vnetConfig is already implemented via the subnetId parameter. As we don't want to enforce the parameter (yet) this issue can be closed.


[FEATURE REQ] Http Output Cache Middleware/Component

In what area(s)?
/area runtime
Describe the feature
It would be nice to add http output cache feature. Dapr already has state management. With a new component type users can define caching feature in front of some endpoints.
I am volunteer to implement that feature if it accepted.
I imagine some configuration with a component resource like:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: cachestore
  namespace: default
spec:
  type: cache.<DATABASE>
  version: v1
  metadata:
  - name: resource1
     value: /some/endpoint
  - name: cacheTTL
     value: 30m
scopes:
- my-app

or as a middleware:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: my-app-cache
  namespace: default
spec:
  type: middleware.http.cache
  version: v1
  metadata:
  - name: resource1
     value: /some/endpoint
  - name: cacheTTL
     value: 30m
scopes:
- my-app

@artursouza do you have any thoughts on this?

I like the idea of caching in Dapr. Also, I like the idea to make it generic and not per component implementation.
The middleware is a good approach.
Also, have you considered making this feature as a binding? Creating a new component type is a big deal but a binding can be a way to prove the concept. The problem would be that the binding would have dependency on another component.
If you write code for this, take it as a POC to keep your time investment relative small before we the idea is solid.

I like the idea of caching in Dapr. Also, I like the idea to make it generic and not per component implementation.
The middleware is a good approach.
Also, have you considered making this feature as a binding? Creating a new component type is a big deal but a binding can be a way to prove the concept. The problem would be that the binding would have dependency on another component.
If you write code for this, take it as a POC to keep your time investment relative small before we the idea is solid.

Thank you for answering this. I thought that middleware would be more eligible. As you said, it will have a dependency to another component (hence dapr needs to connect to an external cache store in a way).
Then I will make a POC by implementing middleware cache feature, I just need to think about how to connect external cache stores. Probably creating a binding for it might be useful.

I like the idea of caching in Dapr. Also, I like the idea to make it generic and not per component implementation.
The middleware is a good approach.
Also, have you considered making this feature as a binding? Creating a new component type is a big deal but a binding can be a way to prove the concept. The problem would be that the binding would have dependency on another component.
If you write code for this, take it as a POC to keep your time investment relative small before we the idea is solid.

Thank you for answering this. I thought that middleware would be more eligible. As you said, it will have a dependency to another component (hence dapr needs to connect to an external cache store in a way).
Then I will make a POC by implementing middleware cache feature, I just need to think about how to connect external cache stores. Probably creating a binding for it might be useful.

It will require some change in the runtime to allow a component to refer to another component.

@artursouza I think if #4167 get's accepted and implemented, then we could revisit this. Like you previously said, we'd need to add a way in the runtime to call the state store from the middleware but this should be doable. Middleware is actually a place where it makes a lot of sense to make components available. Longer term we should expect custom/pluggable middleware and these would be an extension of user code which would benefit from access to a Dapr client. Rather than actually using a Dapr Go client we could add an InternalClient which just maps the Dapr client methods onto direct function calls on the loaded components which is passed into middleware for use. Middleware is not actually activated until a Dapr API call is received so this would be after all components are initialized. WDYT?

Just mapping this out a little more. The main issue is how to get components into middleware (or other components) without breaking the current interfaces (as middleware is 3rd party we can't change that). So far my only thought is that we could maybe attach components to the context that is passed into middleware and other components but I'd have to prototype this to see if it'd even work. There is some circular dependency issues here that warrant some more thoughts.

Hey @mstrYoda, yh happy to chat tomorrow if you have time? If you are on the dapr discord I am user jjcollinge#1054 - you can ping me on there or if you'd rather have a voice/video call we can set one up on discord too, I'll be free after 11:00am GMT.

Hi again, I just try to make some PoC for the cache middleware. I wrote a pseudo code for caching.

I accessed the state store by defining a new function inside runtime.go. I saw that there is already an exposed method for pubsub (GetPubSub), a wrote similar function for state store:

And I tested it and it worked well for PoC:
dapr run --app-id testcacheapp --dapr-http-port 3500 --app-port 8080 -c config.yaml -d ./ go run main.go

curl http://localhost:3500/v1.0/invoke/testcacheapp/method/transactions -v

We might discuss the cache functionalities, for example:

do we support etags (cache-control headers etc)?
do we cache response headers?

do we return 304 or the same status code

do we set a flag that represents that data comes from cache

Also, what do you think about this approach? Is that an ok implementation?
@jjcollinge @artursouza

This is interesting and works well for HTTP. The next step would be to create clarity on how it would work with gRPC. Some SDKs communicate over gRPC primarily. If this feature is only over HTTP, it would limit its use.
At this stage, there is probably a challenge on how to make the middleware agnostic of protocol.

This looks good overall, although I have the following concerns/observations:

an HTTP request cache is many times something that doesn't need to be persisted in a database, but rather in-memory. Since requests do not inherently need to be stored centrally, it might be better to store the requests in-memory
Concerned over coupling together two components. If we accept the rational of the first point and use an in-memory store, than this is not a concern

Middle ground:
We default to the in-memory state store and allow overriding it. This makes it an explicit action to bind two components together and provides the default user experience.

This is interesting and works well for HTTP. The next step would be to create clarity on how it would work with gRPC. Some SDKs communicate over gRPC primarily. If this feature is only over HTTP, it would limit its use.
At this stage, there is probably a challenge on how to make the middleware agnostic of protocol.

I do not have any knowledge of grpc request flow but I will definitely take a look into that.

This looks good overall, although I have the following concerns/observations:

an HTTP request cache is often times something that doesn't need to be persisted in a database, but rather in-memory. Since requests do not inherently need to be stored centrally, it might be better to store the requests in-memory
Concerned over coupling together two components. If we accept the rational of the first point and use an in-memory store, than this is not a concern

Middle ground:
We default to the in-memory state store and allow overriding it. This makes it an explicit action to bind two components together and provides the default user experience.

Thank you for your thoughts.
1- If we cache in memory, we couldn't take advantage of shared cache for different pods. The same request handled by different pods will have a different cache in memory. This increases the overall memory usage. But it might be an option for users.
2- Currently I do not have any other solution without changing the internal structure of the current runtime and component codes. But like u said we can use in-memory cache by default and users can override it on demand.
If you guys find this implementation is fine I will prepare a pr for it.

ping @artursouza @jjcollinge @yaron2

Kindly reminder @artursouza @jjcollinge @yaron2 .
Can you check my last comments, I will prepare a PR for this development according to your responses 🙏


Removing URL fields results in an error.

We are receiving errors when we attempt to remove the URLs by passing an empty string to the profile_picture_url and linkedin_profile_url. As expected, the URL should be removed and NULL has to be set.

To ensure that the entered data is empty, I added a validator and set the value to none.


[AutoPR maps/resource-manager] Add maps/resource-manager/readme.typescript.md

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/4174

(message created by the CI based on PR content)


fix: pin KICS version to v1.5

What
Pins KICS version to 1.5
Why
Before we were using the master, which can break the build because it is not repeatable. We've already seen it break in product-edc

LGTM!

Fine for me. Side note: If we like, we could also pin a specific git sha's instead of a specific version 😉 Dependabot could handle this also already (example: https://github.com/florianrusch/vue3-quagga2/pull/16/files)
As this PR points to the main branch, please be aware of the problem I revealed in #112

build fails because the OpenTelemetry servers are apparently unreachable.

As this PR points to the main branch, please be aware of the problem I revealed in https://github.com/eclipse-tractusx/tractusx-edc/issues/112

should i have it target develop instead?

Change looks good to me and I'll merge it. I think other teams could have the same issues. Should we align on a general strategy (outside of this issue) about how to keep track of the latest KICS versions?
fyi: @the-tatanka

@paullatzelsperger can you please check, why your tests are failing? Seems like a container build issue:
ERROR: unable to select packages:
  openjdk11-jre-headless-11.0.18_p10-r0:
    breaks: world[openjdk11-jre-headless=11.0.17_p8-r3]

@paullatzelsperger can you please check, why your tests are failing? Seems like a container build issue:
ERROR: unable to select packages:
  openjdk11-jre-headless-11.0.18_p10-r0:
    breaks: world[openjdk11-jre-headless=11.0.17_p8-r3]

Could this be a transient error? i restarted CI to make sure

Change looks good to me and I'll merge it. I think other teams could have the same issues. Should we align on a general strategy (outside of this issue) about how to keep track of the latest KICS versions?
fyi: @the-tatanka

Well, one important thing is to always pin versions :)

Change looks good to me and I'll merge it. I think other teams could have the same issues. Should we align on a general strategy (outside of this issue) about how to keep track of the latest KICS versions?
fyi: @the-tatanka

I think if we pined it to a version dependabot will handle this already.

This PR ist not longer necessary or?

Well, one important thing is to always pin versions :)

In general, I agree.
Working with KICS for years, regarding the action, KICS colleagues often forget the release when there are updates.
Therefore the version on "master", then it is always up to date.
Which as we can see also sometimes leads to problems.

closing due to #113 and #114


refactor: import absolute paths and sortings

Description
This PR introduces a refactor to our import statements across the project. By transitioning to absolute paths, we streamline module resolution and improve the maintainability of our codebase. This change ensures that our imports are clear, consistent, and less prone to errors caused by complex relative path navigation.
Additionally, I've implemented linting enhancements that enforce a standard for import sorting and organization. This doesn't just lead to cleaner code; it also assists in reducing merge conflicts related to import lines and facilitates quicker code reviews.
Key improvements include:

Adoption of absolute paths for all internal module imports for better readability and maintenance
Implementation of linting rules for consistent import order and grouping.

Type of change

[x] DX improvements (non-breaking change which improves developer experience and code quality)

This a great change, tired of dealing with imports when rebasing :D

Exactly, huge burden


Update the python version and some other packages

With this pull request I updated the python version to 3.8 to use a new feature, and accordingly other packages. Removing the requirement on bokeh is needed to update the python version, and regarding sphinx I just let it follow the requirement of the other packages. For the other packages I just updated the versions. @aleberti could you please have a look? Thanks in advance.

As we discussed via Slack, if the environment installs fine, I guess there are no problems in merging.

Maybe about the lstchain version upgrade: does this affect us? We use lstchain here and there, so maybe we need to be sure it works as before (e.g. in create_dl3_index_files.py and maybe in io.py, where add_delta_t_key is used; I guess that at lower level, i.e. cleaning and muon analysis, nothing has been really changed, I hope, but we can check)

Thanks @aleberti, it is a good point. I looked into the changes on lstchain and it actually affects our pipeline, at least we need to modify create_dl3_index_files. But this is beyond the purpose of this pull request, so I will get the lstchain-related versions to the original ones.

The environment is created successfully, so I will merge it to the master branch.


"completions" command prevents completion of "compile"

Small usability issue I'v talked with @eed3si9n today about
in sbt if you type "comp" and hit tab, it shows you available completions where all except one ("completions") start with "compile".
Renaming "completions" to something like "showCompletions" will make completion mechanism to stop on "compile" which is a much widely used task as opposed to "completions"
can go to 1.0 as a braking change :)

You can try @MasseGuillaume's sbt-alias, or make up your own aliases by creating ~/.sbt/0.13/alias.sbt:
addCommandAlias("c", "compile")

I think you can also alias it in ~/.sbtrc as described in http://www.scala-sbt.org/0.13/docs/Best-Practices.html as such:
alias c = compile

sure, that's the first thing i thought about
it's not a problem for me as of now, but no workaround is better than any good workaround :)


clean empty folders

clean empty parent folders if not equal media, maybe ?

I could see this working by using the listdir method on the storage class. I wouldn't want this to be default behavior but perhaps toggle from a setting?


Feature/disable similar code check

Added suggested line in the .codeclimate.yml file to disable similar code check. This should improve our overall maintainability score.

Quick, easy, and follow-able!