Azure OpenAI’s content management policy

翻译的时候日志显示遇到问题
“To make the murder look like an accident, so as not to attract any attention. They almost succeeded. There were fifty-one
traffic accidents that killed five people in the city that day. But a scout hidden within the ETO provided an intelligence report
confirming that the ETO had orchestrated the attempt on your life. And what’s most frightening is this: The order came from
Trisolaris itself, conveyed to Evans through the sophons. To this date, that is the only assassination they’ve ever ordered.”
The response was filtered due to the prompt triggering Azure OpenAI’s content management policy. Please modify your prompt and retry. To learn more about our content filtering policies please read our documentation:
微软的接口似乎会审查内容，是否可以对于被审查的内容翻译的时候采取备选方案，比如优先有微软的，如果失败改用原生 open ai 或其他免费接口。
谢谢

我也遇到类似的问题，例如 fluent python 中的一段
Here’s the plan: when someone uses a feature you don’t understand, simply shoot them. This is easier than learning something new, and before too long the only
living coders will be writing in an easily understood, tiny subset of Python 0.9.6 <wink>.

对于无法通过审查的内容，是否可以直接跳过？

可以，我们研究一下。

或者告知一下跳过的代码在哪 我自己先改改

是不是改这里

改好了

ctrl+c 有的时候没反应 是不是程序单线程连azure 比较卡 没功夫响应


NA values

training and inference both are successfully done but when I use a webcam to check output it either shows "nine" or N/A.

same issue here


RHEL Support

Is RHEL support for on-premises / hybrid Kubernetes clusters planned?

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

ID: ec4d8022-4515-b83d-4588-518e3830f2a3
Version Independent ID: c78e0650-4575-2b89-b41f-7e17abc2e17e
Content: Configure Hybrid Kubernetes clusters with Azure Monitor for containers - Azure Monitor
Content Source: articles/azure-monitor/insights/container-insights-hybrid-setup.md
Service: azure-monitor
GitHub Login: @MGoedtel
Microsoft Alias: magoedte

@sean-nixon Thank you for your query, we will further look into this and get back to you at the earliest

Hello @sean-nixon, sorry for the delay. I am following up on your question with the Kubernetes feature owner and will have an update soon.

Yes, we do support K8s monitoring on RHEL nodes in on-prem/hybrid k8s infrastructure. You need to enable monitoring through helm chart. Here is the documentation. https://github.com/helm/charts/tree/master/incubator/azuremonitor-containers

We will now close this issue. If there are further questions regarding this matter, please reply and we will gladly continue the discussion.

@femsulu Shouldn't the Azure documentation be updated to reflect that if that's the case?

Good point, @sean-nixon, adding @MGoedtel, content owner, to review and confirm if this is the right place to make this update.


VSCode crashes when trying to view about menu, moving a folder or trying to commit to source control with Ctrl + Enter

VSCode Version: latest/stable | 17299e41 installed from snap store
OS Version: Manjaro Linux 4.19.133-1-MANJARO

Steps to Reproduce:

Click on the about menu

OR

Move a folder in the explorer, either via drag and drop or cut/paste

OR

Stage changes in the source control menu
Add commit message
Commit with Ctrl + Enter

All three actions end in a crash of VSCode

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

/duplicate of #100940


💕

now user will be redirected to home page if not authorized
changes some user interface and design

faster and improved UI


ghcid FILE fails after stack build

I have to use ghcid -c 'stack ghci' in stack projects as ghcid PATH fails once you've done a build:
$ stack new a simple
$ cd a
$ ghcid src/Main.hs  # succeeds
$ stack build
$ ghcid src/Main.hs
Loading stack exec --test -- -fno-code src/Main.hs ...
Executable named -fno-code not found on path: ...
Command "stack exec --test -- -fno-code src/Main.hs" exited unexpectedly
$ rm -rf .stack-work
$ ghcid src/Main.hs # succeeds again

Thanks for the report, yep, that looks pretty broken. I'll take a look shortly.

Very nasty bug due to a single word missing - but when the word is ghci and the project is ghcid that matters a lot! Fixed and released as 0.6.4.

Much better. Thanks for this awesome tool!


3 Parallel stepper movement for delta robot

My application is trying to get the esp32 to run 3 stepper motors to move the arm of a parallel delta robot. The distance,speed and accel are received through usb serial communication. I need the esp32 to control 3 motors using the step dir pins.
I tried running three separate motors as an array and moving them using position parameters, but I noticed that each motor starts with a delay to the other motors since they are sequentially triggered.
Is it possible to run the fastaccelstepper motors using a background service? Something on the lines of creating a service and moving the                 stepper[num]->keepRunning(); as a background task.
How else can synchronized movement be done using FastAccelStepper?
I was earlier running my 3 steppers using the ESP-FlexyStepper library, but i was facing jitter issues and high motor vibrations with NEMA 23 motors with higher torque. The motor movements using FastAccelStepper are more stable, even at higher speeds, but, the non-synchronized movement is causing jerks.
Is this possible to do with this library if I move the motor movement to a background task, where the steps to move are received as  a call to the background task, and it runs independently of the core 1 loop() activites?

Yes, but I have not tested this configuration. The FastAcelStepper API calls can be called from a background task. This task shall not have the maximum possible priority, because the cyclic internal background task is running at that priority.

in addition please read: https://github.com/gin66/FastAccelStepper#usage-for-multi-axis-applications

I tried, normally just running the motors as is in the fastaccelstepper library
`
void setMotorPosition(int num, float pos_mm) {
if (stepper[num]) {
int pos_steps = static_cast(pos_mm * STEPS_PER_MM);
stepper[num]->moveTo(pos_steps);
}
}
void setMotorSpeedInMMPerSec(int num, float speed_mm_s) {
if (stepper[num]) {
float speed_steps_s = speed_mm_s * STEPS_PER_MM;
stepper[num]->setSpeedInHz(speed_steps_s);
}
}
void setMotorAcceleration(int num, float accel_mm_s2) {
if (stepper[num]) {
float accel_steps_s2 = accel_mm_s2 * STEPS_PER_MM;
stepper[num]->setAcceleration(accel_steps_s2);
}
}`
I call these functions for every point that is executed in a trajectory plan for pick and place.
The motors seem to be running in sync and following the trajectory properly.
But over time the motors seem to be giving an offset. Overtime I ran it for 1 hr at a fixed acceleration and for half hour at a higher fixed acceleration, the motor seems to be missing its repeatability of its position overtime.
For the same motion run in a loop for an hour, the motors that are moving more seem to be running extra steps or losing steps over time. This does not happen for a fixed motion moving at slower speeds, but for certain faster motions where the direction changes frequently, the motors seems to be losing steps and there seems to be an incremental offset in its position.

The slider run by the motor starts at the extreme left marker, and after around 15minutes of same motion the final position is as shown currently, and if run longer the offset keeps growing higher.
Do you know what could be the issue here?

Deviations can be caused by:

mechanical slippage
bug in the library
delay in the direction signal path
using auto enable

In order to get down to the root cause, the esp32 has a good device to count the generated pulses from the uC taking into consideration step and direction. Please attach a pulse counter to one of the steppers with deviation. This can be done with stepper-> attachToPulseCounter(7);. Now the position of the motor and the pulse counter should be synchronized. Unfortunately that pulse counter is limited to -16384…16384 with wrap around. So best to check at a known position (ideally in standstill) the value of the attached pulse counter. It should be always the same. The pulse counter can be read with readPulseCounter()ˋ

btw: which library version do you use ? latest is 0.30.6

I am installing from the arduino ide. The library version is 0.30.0. Would that be a problem? Can i zip the latest version and add it to the arduino library path?
I will try getting to the root cause using a pulseCounter as you have mentioned. Ill try to see for my current motion if it is generating the same counter for that motion.

I tried using the pulse counter, the pulse count at the final static position is the same after n cycles.
[INFO] [1701240530.657223]: Pulse Count 48:
[INFO] [1701240536.661793]: Pulse Count 48:
[INFO] [1701240542.592957]: Pulse Count 48:
[INFO] [1701240548.560703]: Pulse Count 48:
[INFO] [1701240554.500934]: Pulse Count 48:
[INFO] [1701240560.399634]: Pulse Count 48:
[INFO] [1701240566.350601]: Pulse Count 48:
[INFO] [1701240572.313526]: Pulse Count 48:
[INFO] [1701240578.257484]: Pulse Count 48:
[INFO] [1701240584.214447]: Pulse Count 48:
[INFO] [1701240590.182404]: Pulse Count 48:

Which means the pulse is properly being generated by the ESP right?
Could this be a direction change issue?
The mechanical couplers are extremely tight, The slider as seen in the image above is overshooting the final position marked in blue using markers. Thus could this be a deceleration issue where it isnt able to stop in the needed position due to momentum? It is moving at a fairly high RPM towards the end. The 12 points generated for the 3 motors are as follows - Buffer published as data: 0 POINT:   positions: [0.10524031426575722, 0.10524031426575725, 0.14906670474891437] velocities: [0.0, 0.0, 0.0] accelerations: [0.08585606383134377, 0.08585606383134362, -0.6089329615276501] effort: [0.0] time_from_start:    secs: 0   nsecs:         0 Count :  0 buffer :  data: 0 total points :  12 Sleeping for 0.0 time before next point POINT:   positions: [0.11967084015636975, 0.11967084015636975, 0.046718396722194244] velocities: [0.04977847229444247, 0.04977847229444237, -0.3530531357007181] accelerations: [-0.08585606383134377, -0.08585606383134362, 0.6089329615276501] effort: [0.0] time_from_start:    secs: 0   nsecs: 579789826 Count :  1 buffer :  data: 0 total points :  12 Sleeping for 0.5797898260000001 time before next point POINT:   positions: [0.11967084015636975, 0.11967084015636975, 0.046718396722194244] velocities: [0.0, 0.0, 0.0] accelerations: [0.0, 0.0, 0.0] effort: [0.0] time_from_start:    secs: 1   nsecs: 159579652 Count :  2 buffer :  data: 0 total points :  12 Sleeping for 0.5797898260000001 time before next point POINT:   positions: [0.17211403014298315, 0.17211403014298315, 0.10824403160871277] velocities: [0.0, 0.0, 0.0] accelerations: [3.6203292092413437, 3.6203292092413437, 4.247320827616291] effort: [0.0] time_from_start:    secs: 1   nsecs: 169579652 Count :  3 buffer :  data: 0 total points :  12 Sleeping for 0.009999999999999787 time before next point POINT:   positions: [0.22455722012959656, 0.22455722012959656, 0.1697696664952313] velocities: [0.6162168652906697, 0.6162168652906697, 0.7229372178631082] accelerations: [-3.6203292092413437, -3.6203292092413437, -4.247320827616291] effort: [0.0] time_from_start:    secs: 1   nsecs: 329789826 Count :  4 buffer :  data: 0 total points :  12 Sleeping for 0.16021017400000015 time before next point POINT:   positions: [0.22455722012959656, 0.22455722012959656, 0.1697696664952313] velocities: [0.0, 0.0, 0.0] accelerations: [0.0, 0.0, 0.0] effort: [0.0] time_from_start:    secs: 1   nsecs: 500000000 Count :  5 buffer :  data: 0 total points :  12 Sleeping for 0.17021017399999994 time before next point POINT:   positions: [0.17211403014298315, 0.17211403014298315, 0.10824403160871277] velocities: [0.0, 0.0, 0.0] accelerations: [-3.6248887021784806, -3.6248887021784806, -4.252669962514255] effort: [0.0] time_from_start:    secs: 1   nsecs: 510000000 Count :  6 buffer :  data: 0 total points :  12 Sleeping for 0.010000000000000009 time before next point POINT:   positions: [0.11967084015636975, 0.11967084015636975, 0.046718396722194244] velocities: [-0.6166047792365456, -0.6166047792365456, -0.7233923132111876] accelerations: [3.6248887021784806, 3.6248887021784806, 4.252669962514255] effort: [0.0] time_from_start:    secs: 1   nsecs: 670103093 Count :  7 buffer :  data: 0 total points :  12 Sleeping for 0.16010309300000003 time before next point POINT:   positions: [0.11967084015636975, 0.11967084015636975, 0.046718396722194244] velocities: [0.0, 0.0, 0.0] accelerations: [0.0, 0.0, 0.0] effort: [0.0] time_from_start:    secs: 1   nsecs: 840206186 Count :  8 buffer :  data: 0 total points :  12 Sleeping for 0.17010309300000004 time before next point POINT:   positions: [0.10528658305684085, 0.10528658305684085, 0.14917511813699919] velocities: [0.0, 0.0, 0.0] accelerations: [-0.08554917929052752, -0.08554917929052752, 0.6093528757993242] effort: [0.0] time_from_start:    secs: 1   nsecs: 850206186 Count :  9 buffer :  data: 0 total points :  12 Sleeping for 0.010000000000000009 time before next point POINT:   positions: [0.09090232595731196, 0.09090232595731196, 0.2516318395518041] velocities: [-0.04960970448548632, -0.04960970448548632, 0.353361848079505] accelerations: [0.08554917929052752, 0.08554917929052752, -0.6093528757993242] effort: [0.0] time_from_start:    secs: 2   nsecs: 420103093 Count :  10 buffer :  data: 0 total points :  12 Sleeping for 0.5698969069999997 time before next point POINT:   positions: [0.09090232595731196, 0.09090232595731196, 0.2516318395518041] velocities: [0.0, 0.0, 0.0] accelerations: [0.0, 0.0, 0.0] effort: [0.0] time_from_start:    secs: 3   nsecs:         0 Count :  11 buffer :  data: 0 total points :  12 Sleeping for 0.5798969070000002 time before next point
The max speed is 0.616mm/s, which is around is around 500RPM for our setup stepper motor. This is not that high a speed for it to be overshooting or stopping.

I have a slider where a single revolution of the shaft results in 70mm movement of the slider. 1 revolution is 1600 steps. Iv noticed that the steps conversion is not exactly accurate.  The 3 markings are 100mm, 200mm and 300mm. Im giving the same steps using the conversion 100*(1600/70) & 200*(1600/70) ...
https://github.com/gin66/FastAccelStepper/assets/44861370/361c7c4f-3fab-40e9-a959-131c0fe9f7c1

Yes the load is asymmetric, as you see When the slider moves down it has lesser load compared to when the slider moves up.
Should i be adding some delay during the direction changes? what should that value be?

Could you please try a stepper without load/mechanics? If the stepper maintains correct position, then the whole chain of sw/esp32/stepper controller/stepper works well. What remains is mechanics

This would be a possible use case for an attached pulse counter and works with polling. You can even use it to generate an interrupt using pcnt_isr_handler_add(). Setting the pulse counter values still are the for this use.
And yes, in the main thread you will not get a trigger for every pulse, which at high speed would not work anyway.
Perhaps you can attach an interrupt to the step pin. Not sure, if this breaks the mcpwm/pcnt function of the pin,

I think this makes sense, I just don't know where to start ;-)
Do you have any example usecase anywhere, which could serve as a first step? I guess using an interrupt on an output doesn't work, or?

I haven’t tried, but I was able to connect the mcpwm output and the pcnt input to the same processor pin/pad. So perhaps the pin interrupt can be added, too !?

Interesting. Will try
Am Mi., 6. Dez. 2023 um 16:02 Uhr schrieb gin66 @.***>:

I haven’t tried, but I was able to connect the mcpwm output and the pcnt
input to the same processor pin/pad. So perhaps the pin interrupt can be
added, too !?
—
Reply to this email directly, view it on GitHub
https://github.com/gin66/FastAccelStepper/issues/207#issuecomment-1843066750,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABBE5OA6P6KNAWYDGEO6LW3YICCINAVCNFSM6AAAAAA7MBTNKGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNBTGA3DMNZVGA
.
 I have checked the deviation is mostly due to kickback load from the other two motors and the final positions are quite accurate. The path planning that we do is executed quite synchronously and runs well with the library. I am only facing sync issues when I run the homing function to reset the sliders to their default position. What I am getting is erratic behaviour at times as if the esp32 is skipping certain lines of code - This is proper homing motion that works generally
https://github.com/gin66/FastAccelStepper/assets/13079443/076cef1c-589f-46d3-ad0d-ea8f6a9156aa
But it works after a few tries, it keeps bugging out randomly with async execution or runs without stopping -
https://github.com/gin66/FastAccelStepper/assets/13079443/0309c1ec-7fa9-454b-81ce-0cd36d8bc8e3
https://github.com/gin66/FastAccelStepper/assets/13079443/34617102-d167-4b8d-b806-cc308633a74d
The code logic is same for all three, the motor runs to the top until limit switch is triggered. Then all three motors are moved to
the same fixed position in steps. It seems sometimes the esp is sending a few commands but since all three are running in the same core it might be prioritizing one or the other or missing program lines for individual motors. But after proper homing if i send a motion plan, it executes for all three motors synchronously and works perfect. The code logic for moving the 3 motors a fixed distance is as follows
//Serial.println("Homing Done");
  for (int num = 0; num < MOTOR_COUNT; num++) {
    set_point(num, HOME_POS, SPEED_IN_MM_S, ACCEL_IN_MM_S);
  }
where set_point calls a function which has- > - stepper[num]->moveTo(pos_steps);stepper[num]->setSpeedInHz(speed_steps_s);stepper[num]->setAcceleration(accel_steps_s2);

Difficult to support you on this topic. Just from the one liner, the moveTo should be after speed/acceleration setting.
Which „lines of code“ do you assume to be skipped by esp32 ?

and please check the return values from moveTo, setAcceleration and setSpeed. This may help to narrow down on possible problems.

Okay ill try changing the moveTo after speed and accel. Ill display and check the return values when they bug out and check them.

This is the current homing code run from setup
FastAccelStepperEngine engine = FastAccelStepperEngine();
FastAccelStepper *stepper[MOTOR_COUNT];

void setMotorPosition(int num, float pos_mm) {
    if (stepper[num]) {
        float pos_steps = static_cast<float>(pos_mm * STEPS_PER_MM);
        stepper[num]->moveTo(pos_steps);
    }
}

void setMotorSpeedInMMPerSec(int num, float speed_mm_s) {
    if (stepper[num]) {
        float speed_steps_s = speed_mm_s * STEPS_PER_MM;
        stepper[num]->setSpeedInHz(speed_steps_s);
    }
}

void setMotorAcceleration(int num, float accel_mm_s2) {
    if (stepper[num]) {
        float accel_steps_s2 = accel_mm_s2 * STEPS_PER_MM;
        stepper[num]->setAcceleration(accel_steps_s2);
    }
}
void set_point(int num, float pos, float velo, float accel) {
    setMotorSpeedInMMPerSec(num, velo);
    setMotorAcceleration(num, accel);
    setMotorPosition(num, pos);
}
bool checkHoming() {
    for (int num = 0; num < MOTOR_COUNT; num++) {
        if (digitalRead(MOTOR_LIMIT_PINS[num]) == LOW) { // Assuming LOW when triggered
            stepper[num]->stopMove();
            stepper[num]->setCurrentPosition(0); // Set current position as home
        }

    }
    if (digitalRead(MOTOR_LIMIT_PINS[0]) == HIGH || digitalRead(MOTOR_LIMIT_PINS[1]) == HIGH || digitalRead(MOTOR_LIMIT_PINS[2]) == HIGH){
      // Homing is still in progress
      return false;
    }
    return true; // All motors are homed
}

void motorHoming() {
  delay(1000);
  // Homing Functions
  startHoming();
  // Loop to execute each step and check for completion
  // checkHoming();
  nh.loginfo("Running homing Check");
  while (!checkHoming()) {
      // add a small delay to avoid overwhelming the CPU
    //   delay(10);
  }
  nh.loginfo("Checking homing done");
  // Confirm all the points are homed and started as a service to run in background

  delay(100);
}
void setup()
{
  nh.initNode();
  while (!nh.connected())
  {
    nh.spinOnce();
    delay(100);
  }
  nh.advertise(status_pub);
  nh.advertise(buffer_pub);
  nh.subscribe(traj_sub);
  nh.negotiateTopics();
  // Serial.begin(115200);
  // Serial.println("Setting motor start");

  // FastAccelStepper Initialize
  engine.init();
  for (int num = 0; num < MOTOR_COUNT; num++) {
    // Input for Limit Pins
      pinMode(MOTOR_LIMIT_PINS[num], INPUT_PULLUP);
      stepper[num] = engine.stepperConnectToPin(MOTOR_PUL_PINS[num]);
      if (stepper[num]) {
          stepper[num]->setDirectionPin(MOTOR_DIR_PINS[num]);
          // You might also need to set enable pin if you have one
            setMotorSpeedInMMPerSec(num, SPEED_IN_MM_S);
            setMotorAcceleration(num, ACCEL_IN_MM_S);

      }
  }
  //Atach one motor to pulse counter
  stepper[0]-> attachToPulseCounter(7);

  // Home and be ready for input

  delay(3500);
  // Serial.println("Homing");
  motorHoming();

  delay(1000);
  // Serial.println("Homing Done");

  for (int num = 0; num < MOTOR_COUNT; num++) {
    set_point(num, HOME_POS, SPEED_IN_MM_S, ACCEL_IN_MM_S);
  }

  delay(2000);
  nh.loginfo("Ready for Trjectory now!!");

}

After the homing, the set_point behaves erratically. I printed the currentPosition of each motors before and after execution, it shows constant values, which means the library is sending proper values to the drives right?

startHoming() is not there. Anyway, the checkHoming() will not work as expected. The scheme in that function could be - among others - like this:

check if the switch is LOW, then call stopMove(). This is a non-blocking call, which stops the motor with deceleration, which will take a while.
then wait until all three switches are LOW
if this has achieved, wait for all motor reports on isRunning() being stopped
Now call setCurrentPosition(0) for each motor

Or forceStopAndNewPosition(0) is used instead
Or int32_t home = getCurrentPosition() is used to record the home position for each motor once (!), then call stopMove() and when all motors are stopped, zero the home position by setCurrentPosition(getCurrentPosition()-home) with each motor‘s own home position. eventually add a moveTo(0)

Just have revisited your code. Your stopMove(), serCurrentPosition() should be ok, if you call it only once per motor.

and perhaps check the lines to your switches, so that you do not have electrical noise on the wires preventing reliable detection of high or low by the esp32

Hey thank you so much for your quick response!
It seems it is an issue with the currentPosition(0)  not getting properly update after the stopMove() execution.
I updated the checkHoming function as below -
    for (int num = 0; num < MOTOR_COUNT; num++) {
        if (digitalRead(MOTOR_LIMIT_PINS[num]) == LOW) { // Assuming LOW when triggered
            // stepper[num]->forceStopAndNewPosition(0);
            stepper[num]->stopMove();
            // stepper[num]->setCurrentPosition(0); // Set current position as home
        }
        // else {
        //     return false; // Homing is still in progress
        // }
    }
    if (digitalRead(MOTOR_LIMIT_PINS[0]) == HIGH || digitalRead(MOTOR_LIMIT_PINS[1]) == HIGH || digitalRead(MOTOR_LIMIT_PINS[2]) == HIGH){
      // Homing is still in progress
      return false;
    }
    delay(100);
    while(!areMotorsAtTarget()){
      delay(10);

    }
    stepper[0]->setCurrentPosition(0); // Set current position as home
    stepper[1]->setCurrentPosition(0); // Set current position as home
    stepper[2]->setCurrentPosition(0); // Set current position as home

    return true; // All motors are homed

This works properly for the most part. Except during some cases the motors reach the home position and touch the limit switch, but the motor seems to spin internally for sometime before the next moveTo is triggered. Does the areMotorsAtTarget() take some time after the motors have actually stopped or is it instantaneous after the motor execution command is completed from the esp?

Hii I have been able to fix the above issues, had to add a delay during the motor LOW check, because it was maybe overwhelming the cpu and was not registering the last limit switch value in time.
I am sometimes facing synchronization issues with the motors, they seem to be running out of sync during homing. The distance travelled by all the three motors is not exactly the same.
I ran a test for the set_point(num, HOME_POS, SPEED_IN_MM_S, ACCEL_IN_MM_S); after homing, each of the motors seem to be travelling different distances at random times.
Could EMF or the esp load change the way in which these motors are being triggered?
I am having two issues

I ran the homing functions with different accelerations, same velocity and same position.  I am running the motors to 88mm distance.
When i run with 100mm/sec^2 acceleration - It stops halfway at 56mm

When i run with 1000 - 2000 mm/sec^2 acceleration -  it travels to 80mm

When i run with 5000mm/s^2 and above till 100kmm/s^2 - it travels to 85mm

The motors are not getting triggered in sync at times, it could be changes in the code setup, that might be taking up more cpu in the esp thereby affecting synchronized motor running.

For the same execution of 88mm, one motor is moving to 87mm, two are  moving to 82, thereby tilting the original position of the end-effector by a small difference.

what i doubt is that since it is not synchronised, the load of the motor running first might be affecting the movement of the motors moving even few thousand ms later and thus they end up in different positions. The first motor moves 87mm which is correct the other two motors are moving just a tad later and their positions are smaller.
https://github.com/gin66/FastAccelStepper/assets/44861370/b0632f37-9ba9-460c-9a82-da813068889c

Hi. perhaps you start with a different approach: solve the problem with one motor without any load. As soon as this works, extend to three motors. If this is successful attach the load. In the moment it appears to me, that you try to debug a complex setup and you cannot be sure, that all is working properly: there could be plenty of reasons for your problems and eventually more than one: stepper driver power supply, stepper driver control settings, lost steps, friction, mechanical slippage, EMC on your endpoint switches, application code and/or even FastAccelStepper.
You ask me: Does the areMotorsAtTarget() take some time after the motors have actually stopped or is it instantaneous after the motor execution command is completed from the esp?. But this function is in your application code and you have not shown that code.
In order to get here focused on FastAccelStepper: if you believe, there is an issue, please isolate the issue on a simple setup and code base, which can be understood and reproduced from someone not at your setup. All else will likely not be successful endeavors.

Hi i  understand, ill try and isolate and test if time permits.
The function i meant I had to remove, ill had to cut functions from the display because the code IP is currently private - this is the function
  return !stepper[0]->isRunning() && !stepper[1]->isRunning() && !stepper[2]->isRunning();
}

is stepper->isRunning() based purely on when the last motion command is executed? because i assume - its difficult to estimate purely from the software when the hardware has finished execution.

stale


My usecase

Hello!
Here's my usecase for flow, and I need help with it.
I have a code like below, and I want to add poper types for functions that are exptored from this module (and for helpers object).
The code is:
// @flow
import * as utils from "./utils";
import toCamelCase from "./toCamelCase";

const map = {
  root: "/",

  login: "/login",
  logout: "/logout",

  workspace: "/workspaces/:workspace_id",
  import: "/workspaces/:workspace_id/import",
  assets: "/workspaces/:workspace_id/assets",
  asset: "/workspaces/:workspace_id/assets/:id",
  preferences: "/workspaces/:workspace_id/user/preferences",
  files: "/workspaces/:workspace_id/files"
};

export type RouteName = $Keys<typeof map>;

// buildHelpers provides a useful helpers that are intended to
// be used instead of the direct routes invocation.
const buildHelpers = (routeName: RouteName) => ({
  [toCamelCase(`${routeName}_pattern`)]: utils.routeByName(routeName),
  [toCamelCase(`${routeName}_path`)]: (params: *) =>
    utils.generatePath(routeName, params),
  [toCamelCase(`match_${routeName}_path`)]: (path: string) =>
    utils.matchPath(routeName, path),
  [toCamelCase(`match_${routeName}_sub_path`)]: (path: string) =>
    utils.matchSubPath(routeName, path)
});

const helpers = {};

Object.keys(map).forEach(key => {
  const newHelpers = buildHelpers(key);
  Object.assign(helpers, newHelpers);
});

export default helpers;

Expected types would look like this (for each entry in map):
workspacePattern: "/workspaces/:workspace_id" // or just string
workspacePath: (params: *) => string
matchWorkspacePath: (path: string) => MatchType
matchWorkspaceSubPath: (path: string) => MatchType

How can I achieve this?

FYI: I've just changed the way code is organized as a worksaround. But this particular sample is interesting just as a usecase example.

@MOZGIII from what I can tell the design is flawed in quite a few ways.  If you want a normalized object and you want to tranform keys etc then flow isnt going to be able to type it.
An alternative would be to instead use Flow to describe a transformation and use a layered object.
If you were to do that then you would be able to type this much more naturally and create code which is far easier to read.

Note: I had a pretty hard time understanding specifically what you were trying to accomplish here and didn't feel like taking the time to really break it down.  This seems to do something along the lines of what you were tyring to do.

// @flow
import * as utils from './utils';
import toCamelCase from './toCamelCase';

const map = {
  root: '/',

  login: '/login',
  logout: '/logout',

  workspace: '/workspaces/:workspace_id',
  import: '/workspaces/:workspace_id/import',
  assets: '/workspaces/:workspace_id/assets',
  asset: '/workspaces/:workspace_id/assets/:id',
  preferences: '/workspaces/:workspace_id/user/preferences',
  files: '/workspaces/:workspace_id/files',
};

export type RouteNames = $Keys<typeof map>;

type RouteMap<T> = {|
  pattern: $ElementType<typeof map, T>,
  path: (params: *) => string,
  matchPath: (path: string) => any,
  matchSub: (path: string) => any,
|};

type TransformRoutesMap = <T>(T) => RouteMap<T>;

export type RoutesMapped = $ObjMapi<typeof map, TransformRoutesMap>;

const helpers: RoutesMapped = Object.keys(map).reduce(
  (p: $Shape<RoutesMapped>, c: string) => ({
    ...p,
    [c]: {
      pattern: c,
      path: (params: mixed): string => utils.generatePath(routeName, params),
      matchPath: (path: string): string => utils.matchPath(routeName, path),
      matchSub: (path: string): string => utils.matchSubPath(routeName, path),
    },
  }),
  ({}: $Shape<RoutesMapped>),
);

const workspace = helpers.workspace;

// $Works
(workspace.pattern: '/workspaces/:workspace_id');

// $Works
(workspace: RouteMap<'workspace'>);

// $ExpectError
(workspace: RouteMap<'assets'>);

export default helpers;


Add Estonian language analyzer

Relates: #4341
This commit adds support for the Estonian language in the
LanguageAnalyzer.

ported to master b1aea02519fc32f9e4b5c4385e9a60dd5e100d3e


Typo "<instancename>if"→"<instancename> if"

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/manage-the-database-engine-services?view=sql-server-ver15

@hyoshioka0128 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Looks good. Thanks @hyoshioka0128


Issues in CIS 1.5 Self Assessment Guide

In this section - https://rancher.com/docs/rancher/v2.x/en/security/benchmark-2.3.5/#4-1-3-ensure-that-the-proxy-kubeconfig-file-permissions-are-set-to-644-or-more-restrictive-scored

Tests 4.1.3, 4.1.4, 4.1.5 and 4.1.6 - The Result and the Remediation are incorrect

@sowmyav27 Could you provide some details why the result and remediation are incorrect for these tests?

@paraglade The test 4.1.3 - 4.1.6 - are for kubeconfig files and not for configuration files . As per the CIS benchmark 1.5 document:
4.1.3 - Description: If kube-proxy is running, and if it is using a file-based kubeconfig file, ensure that the proxy kubeconfig file has permissions of 644 or more restrictive.

@maggieliu @sowmyav27
For those tests the result and remediation are as follows:
Result: Not Applicable
Remediation: RKE doesn’t require or maintain a configuration file for the * service. All configuration is passed in as arguments at container run time.
Since RKE does not use a config files is this not an acceptable reason for skipping these tests?

@paraglade As per @leodotcloud 's comments on this
root@localhost:~# ls -ltr /etc/kubernetes/ssl/ | grep kubecfg
-rw------- 1 root root  517 Mar 16 09:19 kubecfg-kube-apiserver-proxy-client.yaml
-rw------- 1 root root  465 Mar 16 09:19 kubecfg-kube-scheduler.yaml
-rw------- 1 root root  445 Mar 16 09:19 kubecfg-kube-node.yaml
-rw------- 1 root root  533 Mar 16 09:19 kubecfg-kube-apiserver-requestheader-ca.yaml
-rw------- 1 root root  449 Mar 16 09:19 kubecfg-kube-proxy.yaml
-rw------- 1 root root  501 Mar 16 09:19 kubecfg-kube-controller-manager.yaml
root@localhost:~#
These are the kubecfg files used by various components. Few of the tests have been marked incorrectly thinking they are related to config files.


I want to know which datasets the pretrained model has trained on?

The same as DaSiamRPN: VID + youtube + coco + ImageNet-Det.


Has LS deprecated JS "with" statement thus discarded it altogether?

There were some arguments I found here.

You can use:
``with x {``

anyway.
with is not even in ES5 strict so I don't think anyone would miss it.
OTOH LiveScript's prefix (explicit cascade) and infix (prototype cloneport) withs are both extremely handy.


[Bitwarden] Add password history and improve generation

Description
History
The password history is an important feature, which bitwarden has on the browser, mobile, and others. It's important to implement this feature with some security, given we're dealing with sensitive data, so feel free to analyze the security of the implementation.
If bitwarden ever implements password history on their CLI, this implementation should be changed to use that.
Implementation details:

History is written on an external file using Node APIs;
Content is encrypted using the aes-256 algorithm, and saved alongside the random initialization vector that was used (this is a safe practice, more info here);
The encryption is done using the client_secret, which the user specifies on the extension settings;
The name of the history file is a hash of the client_id, which means that, if you change your account, a new file will be create, but if you go back to the previous one, and didn't erase the files, the password history will still be there;
You are able to clear your history with an action;
Some keywords (like today, yesterday, passphrase, etc) can be used to search passwords on the list.

🎥  Demonstration
https://user-images.githubusercontent.com/7235666/162644451-f978166b-314c-4ea9-b668-d3b41c7916c6.mp4

Generator bug fixing
The first iteration of the password generation has a bug. When you changed the options, it generated a new password, and if you didn't wait for it to finish, and changed another option, it would ignore it and the result would be incorrect. In this PR, the previous action is aborted when you trigger a new one, using an AbortController.

🎥 Demonstration
https://user-images.githubusercontent.com/7235666/162644727-039282bd-0be1-4747-9393-929e56dc7149.mp4

Checklist

[X] I read the extension guidelines
[X] I read the documentation about publishing
[X] I ran npm run build and tested this distribution build in Raycast
[X] I checked that files in the assets folder are used by the extension itself
[X] I checked that assets used by the README are placed outside of the metadata folder

I agree @pomdtr - the password history implementation is not a necessary feature. Also, if added, it creates the potential for new attack vectors. IMO, this extension does not need to be a 1-1 replacement for all Bitwarden platforms, and wrapping the CLI/API features is plenty to support the most common use cases.
@jomifepe I definitely appreciate your effort to build a working implementation, but given the danger and complexity, I don't believe it should be included in this extension until Bitwarden supports it natively via their CLI and/or API. Also, in the future, I'd recommend opening separate PRs with the bug fix (password generation) and the feature addition (password history). As feedback on your implementation, I would only recommend against reusing the client secret as your AES encryption key, as it's stored within the extension's localStorage, and potentially accessible to the filesystem (although it definitely shouldn't be).

@pomdtr @PSalant726 Thank you for the feedback. I totally understand the concerns, I was also hesitant to develop it, because I don't want to be responsible for a possible breach of security for bitwarden users. Although, I believe it's an important feature to have to avoid losing passwords. I'm also confident in the implementation, as I'm using the same algorithm as bitwarden (aes-256-cbc), and I'm not storing any sensitive key (without encryption) in the disk.
@PSalant726 Answering the localStorage recommendation. The client_secret is being retrieved directly from the built-in getPreferenceValues method. I believe this is the correct way, and raycast seems to take care of the isolation of the process.
Because I'm no security expert, I completely understand, and I'm gonna remove the password history code from the PR and change it to be a fix on the generator.

Thanks for your comprehension @jomifepe ❤
I'm confident that your implementation is right, but I mainly want to avoid overcomplexifing the extension code to be able maintain it in my free time. As soon as this feature is implemented in the bitwarden cli, we will revisit this.

I chose to open a new pull request, here it is.
Thank you for your time in this one 🙂

Thanks for your comprehension @jomifepe ❤
I'm confident that your implementation is right, but I mainly want to avoid overcomplexifing the extension code to be able maintain it in my free time. As soon as this feature is implemented in the bitwarden cli, we will revisit this.


[docs][joy] Add a messages template

[ ] I have followed (at least) the PR section of the contributing guide.

https://github.com/mui/material-ui/assets/7228039/0dc9cfec-3d37-4798-ba45-97a593433aef

This looks great.

@sernstberger Thanks again for your hard work! I will review the PR this week.

All the fix from my perspective is in https://github.com/mui/material-ui/pull/37546/commits/1498f020ac00294472d3820f946179cacd36b1dd. Mainly, replace the height calculation logic with pure CSS and the rest is adjusting spacing.

👍 Great job as always!

Thanks! These are a lot of fun!

This is so awesome @sernstberger !! Keep up the excellent work!

I have added missing headers in 461bd123dbd7080d1801f85e7cc827f45b7e2ef0


error: failed to run custom build command for openssl-sys v0.9.93

error: failed to run custom build command for openssl-sys v0.9.93
Caused by:
process didn't exit successfully: C:\Users\test\AppData\Local\Temp\cargo-installELSpmq\release\build\openssl-sys-02f6151aa28f62f8\build-script-main (exit code: 101)
--- stdout
cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_MSVC_OPENSSL_NO_VENDOR
X86_64_PC_WINDOWS_MSVC_OPENSSL_NO_VENDOR unset
cargo:rerun-if-env-changed=OPENSSL_NO_VENDOR
OPENSSL_NO_VENDOR unset
running "perl" "./Configure" "--prefix=C:\Users\test\AppData\Local\Temp\cargo-installELSpmq\release\build\openssl-sys-bdc1df515b081b96\out\openssl-build\install" "--openssldir=SYS$MANAGER:[OPENSSL]" "no-dso" "no-shared" "no-ssl3" "no-tests" "no-comp" "no-zlib" "no-zlib-dynamic" "--libdir=lib" "no-md2" "no-rc5" "no-weak-ssl-ciphers" "no-camellia" "no-idea" "no-seed" "no-capieng" "no-asm" "VC-WIN64A"
--- stderr
thread 'main' panicked at '
Error configuring OpenSSL build:
Command: "perl" "./Configure" "--prefix=C:\Users\test\AppData\Local\Temp\cargo-installELSpmq\release\build\openssl-sys-bdc1df515b081b96\out\openssl-build\install" "--openssldir=SYS$MANAGER:[OPENSSL]" "no-dso" "no-shared" "no-ssl3" "no-tests" "no-comp" "no-zlib" "no-zlib-dynamic" "--libdir=lib" "no-md2" "no-rc5" "no-weak-ssl-ciphers" "no-camellia" "no-idea" "no-seed" "no-capieng" "no-asm" "VC-WIN64A"
Failed to execute: program not found
  ', C:\Users\test\.cargo\registry\src\index.crates.io-6f17d22bba15001f\openssl-src-300.1.5+3.1.3\src\lib.rs:577:9

note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: failed to compile microbin v2.0.4, intermediate artifacts can be found at C:\Users\test\AppData\Local\Temp\cargo-installELSpmq.
To reuse those artifacts with a future compilation, set the environment variable CARGO_TARGET_DIR to that path.

I have the same error as yours. May I know if you've fixed this?


just has inconsistent naming for enable/disable scripts

I see at least three styles of enable/disable scripts in just --list:

disable-updates ⬌ enable-updates
disable-broadcom-wl ⬌ use-broadcom-wl
use-stock-gamepads ⬌ use-ublue-gamepads

Worth standardizing? Feel free to close if not!

This is related to: https://github.com/orgs/ublue-os/discussions/202
Basically we need someone to propose/reorg the justfiles to make sense since they kinda grew organically. And perhaps we need to add a little file with conventions to use or something like that.

I should in theory have some more freetime soon now in December so i will start having a look at reorging just, maybe shrink it down to toggles where we can.

after a brief discussion on discord, i will have a look at mocking together a bash script that will check if gum is installed and then either use gum or a basic bash dialog/prompt for toggles, that should at least get us started on cleaning up some of the just commands.
Currently the fallback might look something like this

i have a working concept now which works, bit unsure if a helper script for just and configs actually fit in ublue-os/config
invalid choices gets the output piped to STDERR and user gets asked again to pick an option, valid choices gets echoed to STDOUT and then exits, this should at least help us merge many commands into just toggle commands.

Proposal for standardized naming scheme

Toggles to be named toggle-thing
Recipes installing/uninstalling/configuring things to be named setup-thing or configure-thing which then provides options for what the user wants to do, to avoid complexity we can also just split setup- and configure- to do their own thing.
Recipes that only do 1 thing to be named thing like ujust update

Naming scheme sounds good to me!

I will wait for more responses until after December 29th before i start working on this in ublue-os/config.
I will open a PR draft on the 29th so changes can be discussed there while i work on it.
once config is done i will start branching out to the other repos (bazzite, bluefin, kinoite, etc) and take a look (unless someone pings me and tells me they will take care of it themselves)
Think that will be my plan forward regarding this at least.


Getting token payload into custom user provider

Hi there,
Firstly, thanks for this useful bundle.
My question is essentially about getting the token payload passed into my custom user provider, more specifically the loadUserByUsername method. I'm using a custom provider as I'm fetching a user that's uniquely defined by two fields ie. username + company.
My issue is that one of those fields is getting passed in the token payload, so ideally i could extract it from the passed in payload. I can see that the JWTUserProvider accepts something like this, but as far as I can see there's currently no way to work this logic into a custom provider.
Would you have any advice or suggestions?
Thanks,
Aleks

Hey,
Fortunately, this should be unlocked in the next minor version thanks to #344.
I would like to release it by the end of this month.
Maybe could you try it and confirm it fits your need?
Checking out the master branch of this bundle and maving your custom user provider implements UserProviderWithPayloadSupportsInterface should do the job (btw, I plan to rename it to something like PayloadAwareUserProviderInterface in the meantime).
Anyway, I'll keep you informed here when it's released.

Awesome, thanks for that @chalasr (and also big thanks to @sroze for implementing).

Closing then :)

@chalasr is there any chance of releasing this feature? this would allow us to remove custom JWTTokenAuthenticator and have custom UserProvider only.
great bundle btw, keep up the good work!


Hide internal tenant MiqGroups from API users

The tenant groups are internal only. We don't show these groups on the ui. Follow-up on #10410
@miq-bot add_label api, bug, darga/no, tenancy
@miq-bot assign @abellotti

@isimulk could you rebase/update/repush, expect_query_result was eliminated in a PR.
/cc @imtayadeway

@abellotti @isimluk I think it's OK - it should still be there. The PR in question merged a couple of instances of that method's use into a bigger expectation, but AFAIK expect_query_result is still intact

Thanks @imtayadeway was thinking of it's caller in the other PR.

LGTM!!


Add a layer for parliamentary constituencies

See https://github.com/acteng/atip-data-prep/pull/15 for background on this layer. It gives us MP wards for #285.
Demo at https://acteng.github.io/atip/hover_helper/browse.html
https://github.com/acteng/atip/assets/1664407/5c6e0f59-87f5-4a37-8c13-5ac387918133
The bulk of this PR is refactoring to handle hoverable/clickable layers and tooltips less manually. I'm not finished improving UX there, some later steps can be:

Adjusting the cursor to emphasize clickable objects
Reconsidering the ordering of contextual layers. Should the intervention data loaded be on top of things like these boundaries?
Adding an on-click handler for the intervention data. What should it do though -- probably emphasize everything in that scheme?

Rebased to fix merge conflict

This looks great, I LOVE how responsive it is. Many thanks for driving forward on this Dustin, inspections will be stoked I imagine.

@Pete-Y-CS, feedback addressed, please take another look


Example for custom Price Bucket using setPriceGranularity doesn't set custom price

Here:
http://prebid.org/dev-docs/examples/custom-price-bucket-using-setpricegranularity.html
it sets:
pbjs.setPriceGranularity("low");
Also the setPriceGranularity seems to be deprecated now.

Price granularity example is now here: http://prebid.org/dev-docs/examples/custom-price-buckets.html
And updated info here: http://prebid.org/dev-docs/publisher-api-reference.html#setConfig-Price-Granularity


Postgres timestamp field (intentionally?) unsupported?

https://github.com/goldcaddy77/warthog/blob/ef79436357bacc32deec1f02f40f21e051bd0860/src/schema/TypeORMConverter.ts#L94
Here the 'timestamp' type is ignored, which causes
Error: convertToGraphQLType: Unexpected type: timestamp

when I use DateField
Not sure why it is commented out though?

Good catch. Will fix right away.

Also not sure if primitive arrays are supported? :thinking:

Primitive arrays should work. Why do you think they might not?

@IniZio : https://github.com/goldcaddy77/warthog/pull/191 to fix timestamp.   Please open a new issue if you find something with primitive arrays


FileNotFoundError when running Speaker Diarization task in SUPERB

Hi,
I followed the instructions to simulate Libri2Mix Data for Diarization here https://github.com/s3prl/s3prl/blob/master/s3prl/downstream/README.md, but then running training command would throw an error:
Traceback (most recent call last):
  File "run_downstream.py", line 202, in <module>
    main()
  File "run_downstream.py", line 198, in main
    eval(f'runner.{args.mode}')()
  File "/home/pyp/s3prl/s3prl/downstream/runner.py", line 202, in train
    dataloader = self.downstream.model.get_dataloader('train')
  File "/home/pyp/s3prl/s3prl/downstream/diarization/expert.py", line 87, in get_dataloader
    dataset = DiarizationDataset(
  File "/home/pyp/s3prl/s3prl/downstream/diarization/dataset.py", line 94, in __init__
    self.data = KaldiData(self.data_dir)
  File "/home/pyp/s3prl/s3prl/downstream/diarization/dataset.py", line 245, in __init__
    self.utt2spk = self._load_utt2spk(os.path.join(self.data_dir, "utt2spk"))
  File "/home/pyp/s3prl/s3prl/downstream/diarization/dataset.py", line 331, in _load_utt2spk
    lines = [line.strip().split(None, 1) for line in open(utt2spk_file)]
FileNotFoundError: [Errno 2] No such file or directory: '/app/data/Libri2Mix/train/utt2spk'

I think I might need to change the dirs in ./downstream/diarization/config.yaml
train_dir: /app/data/Libri2Mix/train
dev_dir: /app/data/Libri2Mix/dev
test_dir: /app/data/Libri2Mix/test

But I don't know what them should be, because I couldn't find folder with name "Libri2Mix/train/utt2spk" anywhere in the generated data. The folder of the generated data looks like:
    Libri2Mix
    ├──Libri2Mix/
         ├──wav16k/
              ├──max/
                  ├──dev/
                  ├──metadata/
                  ├──test/
                  ├──train-100/
                  ├──train-360/
    LibriSpeech
    wham_noise

Thank you!

Hey @jasonppy ,
Thanks you very much for pointing out. This is indeed a documentation bug after a recent PR.
For the original value you can follow this link. I will fix this ASAP.

Solved, Thx!

Hi @jasonppy. I ran into a similar bug. Would you be able to help me with this?

Hi @jasonppy. I ran into a similar bug. Would you be able to help me with this?

change the below entries at `downstream/diarization/config.yaml' to the following
loaderrc:
    ......
    train_dir: ./downstream/diarization/data/train
    dev_dir: ./downstream/diarization/data/dev
    test_dir: ./downstream/diarization/data/test


Doesn't export for Node.JS

moment-business.js does not export moment

Yup, intentionally. It's a plugin, so it modifies the original library.
You only need to require it in a single time in your entire node app. From then on, you can just require moment and access the API.
In other words, you might have...
// plugins.js

// Load up moment business!
require('moment-business');

// some-file.js
var moment = require('moment');

moment.weekDays(...);

Does that make sense, @JoeChapman ?

Cheers @jmeas

:beers:

@jmeas I' m a newbie in this area. I' m getting very confused on how to use this library in browser html and js. What should I use to call the function subtractWeekDays after in including the js files in

@xgdgsc , there is a bug that is attaching it to none on the window. I'll open a new issue and track fixing it there.


[Issue-244] fix: bug import custom Evm rpc

🚀 Deployed on https://pr-245--papaya-melba-f5c160.netlify.app


Stop dropdown opening after removing tag

Hi,
Every time I remove a tag by clicking the X, the dropdown opens. This is opposite behaviour to v3. Can this be reverted to how it used to work, or made an option?
I can override this in the open event in my code, but it causes the dropdown to flash quickly each time.

This is a duplicate of https://github.com/select2/select2/issues/3209#issuecomment-149663474.


How to obtain account key balance tokens?

I want to get? but I find not anywhere

Please check OpenAI documentation.

OpenAI documentation is not found. It seems that the api is not open

https://platform.openai.com/docs/introduction/overview


Generic hash base type (Suggestion)

In Typescript and javascript  all variables are hashes.  There isn't necessarily a specific hash object.  But the hash is a non generic type that returns type any and there is no way of have a typed hash without creating your own object which of course then adds overhead.  It would be nice to have a base type in typescript that can be used generically that would cast the return of a [] statement on a variable with the type specific in the generic declaration of the variable.
An example would be the following.
var hash: Hash<string> = {}; var value = hash['somekey'];
The value would have the implicit type of string based on the declaration of the hash and wouldn't require additional casting of the value coming back from the object.

How would this differ from:
interface Hash<T> {
  [key: string]: T;
}

const hash: Hash<string> = {};
hash['somekey'] = 'foo';

Didn't realize you could declare that in an interface.  Would still be nice to have it as a base type i guess but i could very easily make that myself.

Trying that out this does bring up a slight irregularity in the error reporting behavior.  I would have declared
the hash to be this instead. interface Hash<T> {   [key: string|number]: T; }
But the compiler tells me it has to be a string or number but it can't be a string "or" number in the syntactical sense.

But the compiler tells me it has to be a string or number but it can't be a string "or" number in the syntactical sense.

Because you can't... indexes have to be string or number not the intersection of the two.  At runtime they are technically always string, but number is allowed to make it easier to model Array and its related types.

OK I read up on the union symbol.  I had seen it and used in other code and assumed that | meant or.  I realize now that it isn't the same thing.  That makes sense.  Thanks for the clarification.


Possible exception in loading/parsing metadata.

I encountered the error below in Android N several times not 100% occurence.
The version 7.0.11.
Does any one know something about this?
java.lang.RuntimeException: cannot load/parse metadata: /com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC
at com.android.i18n.phonenumbers.MultiFileMetadataSourceImpl.loadMetadataFromFile(MultiFileMetadataSourceImpl.java:128)
at com.android.i18n.phonenumbers.MultiFileMetadataSourceImpl.getMetadataForRegion(MultiFileMetadataSourceImpl.java:80)
at com.android.i18n.phonenumbers.PhoneNumberUtil.getMetadataForRegion(PhoneNumberUtil.java:1985)
at com.android.i18n.phonenumbers.PhoneNumberUtil.getRegionCodeForNumberFromRegionList(PhoneNumberUtil.java:2082)
at com.android.i18n.phonenumbers.PhoneNumberUtil.getRegionCodeForNumber(PhoneNumberUtil.java:2072)
at com.android.i18n.phonenumbers.PhoneNumberUtil.getNumberType(PhoneNumberUtil.java:1911)
at com.android.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder.getDescriptionForNumber(PhoneNumberOfflineGeocoder.java:262)
...
Caused by: java.util.zip.ZipException: invalid block type
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:170)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2316)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2329)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2800)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:802)
at java.io.ObjectInputStream.(ObjectInputStream.java:302)
at com.android.i18n.phonenumbers.MultiFileMetadataSourceImpl.loadMetadataFromFile(MultiFileMetadataSourceImpl.java:110)
... 96 more

Thanks for reporting @Mortimer2013!
Looking at the stack trace it's being thrown here: https://github.com/googlei18n/libphonenumber/blob/libphonenumber-7.0.11/java/libphonenumber/src/com/google/i18n/phonenumbers/MultiFileMetadataSourceImpl.java#L128
The IOException is happening when constructing the ObjectInputStream in line 110. We don't want to recover from it so we throw the RuntimeException, that much is working as intended.
I don't know why the in = new ObjectInputStream(source); call is resulting in a ZipException only sometimes. My guess is it's transient, dependent on the system load. Hopefully with the recent refactoring we killed this issue if it was a threading problem in the library.
Do you have other ideas? Anything else we can do to fix this in the library?

Please also report with the relevant product, they could have an issue on their side (e.g. something overwriting the stream while another thread tries to access it).

HI keghani
I don't think it is caused by multi-thread process, the data will only to load in first used,it would not to be loaded by  multi-thread. is it ?

Multiple threads could attempt to read simultaneously before the data has been loaded (and after, though this is less likely to cause problems).
Since this is not an issue in the current library we can't fix it. I'll close the issue and I would suggest that the app look into debugging this (e.g. start by logging more information when this error occurs) to see how to fix it on the app side. The library is working as intended when it does not recover from an IOException.


Extend metrics library

This is a general rewrite of pkg/metrics library, but it a fully backwards
compatible way. Goals and key components are described in doc.go, so I would
suggest starting the review there :)
For usage examples see #2604 (defining health metrics group, migrating some custom metrics & collectors to the new interface).
Fixes: #2376

I'm closing this PR in favour of #2606 - it's the same PR but opened from a branch inside the repo, so that I can easily stack follow-up PRs.


Implement local command arci::Speak

arci::Speak can be implemented as a local command.
We can use bellow commands depends on the OS.

MacOS: say
Linux: espeak (not default but easy to use)
Windows: I don't know!

(I'm working on this: https://github.com/openrr/openrr/compare/main...issue-119)

(I'm working on this: https://github.com/openrr/openrr/compare/main...issue-119)


Make blasr_libcpp pass sanity check

Turns out that this package didn't have a CMakeLists.txt as excepted.


fix: cli release

adds missing files to the npm package

Pull Request Test Coverage Report for Build 452

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 448:
0.0%

Covered Lines:
128

Relevant Lines:
128

💛  - Coveralls


Support to clone CDRModels

In the ChocoConsistencyCheck, it requires to check whether the CDRModel is a clone. If this is the case, get Constraints from the clone model instead of using the Constraints from the parameters.


Can't change Momoapp

As the title said, I couldn't change any parameter including image, display name, process, and execution.

I am currently addressing this issue in tandem with #9 as they appear to be very closely related. I have closed this issue to prevent redundancy. If this later appears to be not the case, I will address this issue's specifics and resolution in this thread for future users to refer to.


feat(web): adds 'Object' type for scrollTarget prop of ReactiveList

This PR documents the feature added in appbaseio/reactivesearch#1199 .

@felubra Thanks for the PR! Can you port this over here

Thanks!


Create Character Count from training text

Character frequency report
Source: https://github.com/cmroughan/kraken_generated-data/blob/master/tools/count_chars.py
USAGE: count_chars.py <txt_file> | sort -n -r > <txt_file>.charcount

Fixes #221 IINM

@bertsky I copied the script from another repo and added an external sort as a quick hack to get the char count. Please feel free to modify as needed.

Please make a description of input data and needed output, so those of us how did not have a look at the file can create a new script under Apache license.

We cannot use GPL code in tesstrain with Apache license.

I don't think this short script meets the threshold of originality, though. After all, it just counts characters of files in Python. My above suggestions already changed most of the script's lines to make it more useful and makefile-workable. Just apply them and strip the Kraken reference. (I am not contesting Kraken's originality, only that single file's.)

Also, it would help to offer a rule for the makefile already.
Besides, in 314e799 I proposed a similar functionality (only using shell means, i.e. grep -o . | sort | uniq -c | sort -rn) – it does not show codepoint names via unicodedata.name, but apart from that should be the same).

Or abandon this PR and just merge #260.

Here is my python solution without need of extra tools. I did not implement reading form stdin as I do not see it usage in "make training"....
Usage: python3 count_chars.py data/foo/all-gt
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
import unicodedata
from collections import Counter, OrderedDict

def show_char_frequency(string):
    string = string.replace(" ", "")
    dic = OrderedDict(Counter(string).most_common())
    for char in dic:
        print(f"{char}\t{dic[char]}\t{unicodedata.name(char)}")

def read_file(filename):
    with open(filename, encoding="utf-8", mode="rt") as fd:
        text_lines = fd.read().strip().split("\n")
    return " ".join(text_lines)

def main():
    if len(sys.argv) < 2:
        print(f"USAGE: {sys.argv[0]} <txt_file>")
        return 1

    filename = sys.argv[1]
    string = read_file(filename)
    show_char_frequency(string)
    return 0

if __name__ == "__main__":
    main()

Commit 29d394b7253c9f933a7fdf57f553d305576f9a5d merged the modifications (based on the original code) which were made in this pull request.


@vitest/ui should render scrollviews in virtual scroll containers

Clear and concise description of the problem
When e.g. generating thousands of test in a describe block, the UI is heavily lagging due to so many list entries
Suggested solution
Use a virtual scroll-container
Alternative
No response
Additional context
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

Maybe we can use https://github.com/Akryum/vue-virtual-scroller/tree/next/packages/vue-virtual-scroller ?

Maybe this would be enough https://vueuse.org/core/usevirtuallist/#usevirtuallist

I was not aware of that composable :rocket:
I may be interested in creating a PR for that and learn how to use this composable :slightly_smiling_face:
Just don't know when I find time in next few days, maybe today or the next few days

@edimitchel I updated the title and issue description to reflect what we found out


[Bug] Edit resources with NULL values

Contact Details
No response
What happened?
The issue seems related to this one
I can't edit resources with NULL values that I desire to keep as NULL. String types are completed with empty string ('') instead of remaining null.
Bug prevalence
Everytime I edit a string field and try to empty
AdminJS dependencies version
    "adminjs": "^6.8.7",
    "@adminjs/bundler": "^2.0.0",
    "@adminjs/design-system": "^3.1.8",
    "@adminjs/express": "^5.1.0",
    "@adminjs/sequelize": "^3.0.0",

What browsers do you see the problem on?
No response
Relevant log output
No response
Relevant code that's giving you issues
https://github.com/SoftwareBrothers/adminjs/blob/7fc4ca404e37ff89934744bca88154f5743f59be/src/frontend/components/property-type/default-type/edit.tsx#L46
const TextEdit: FC<CombinedProps> = (props) => {
  const { property, record, onChange } = props
  const propValue = record.params?.[property.path] ?? ''

You can use a before hook to convert empty strings in request.payload to null.

@dziraf yes, but why won't there be a general fix for it?
do you ever wanna set empty string in database instead of null?

The only solution currently is a custom component, look at this PR i had made for inspiration https://github.com/SoftwareBrothers/adminjs/pull/1356


Customize readme

Just added some content to the readme file and asked git to not include my PyCharm config files in the repo.

Self approving to end the hackathon with a clean repo.


How to use mixins?

I'm noticed that: Object.getOwnPropertyNames is unsupported. ( as well as Object.create() ) in TStoLua in case I wanna use mixins like this:
https://www.typescriptlang.org/docs/handbook/mixins.html
I need to use a multiple inheritance in my TS code. Is there any correct way of doing this without using composition or other hacks?

The main method as described on that typescript website seems to work fine:
Here's it working on our playground: Playgorund link
No hacks required


TypeSpec updates for SDK generation

The RemovedPath validation error is wrong, it's there: https://github.com/Azure/azure-rest-api-specs/pull/24973/files#diff-b3d1f9e6f1415cdbe882d472fff17abc01be1d4cf5fce7bb87ad5977868fad3eL50
I think what happened is that @Zach-King2 had to change how endpoint prefixes were done in TypeSpec, so the fully resolved path is correct, but the validator isn't doing that. I'll open a bug.


Move scipy.stats imports to runtime

Summary
The scipy.stats submodule is a relatively slow import and takes up
roughly 12% of our total import time. This is disproportionately large
compared to its use in the random operator generator functions and
probability distribution circuit library classes which are not critical to
any of the core functionality or performance
critical. This commit shifts the module level import to be a runtime
import to avoid this import cost, while this does add runtime overhead
(and an initial cost on the first execution) that is worth the tradeoff
to remove it from the default import path.
Details and comments
Related #5100

For comparison, here is a visualization of import time. Terra today without this PR:

After this PR is applied:


refactor (user custom): Proposal for enhancing user customization experience

I proposed user custom isolation in #885, but changed many parts because it was an override using opts in lazy.nvim.
In #888, it was pointed out that the default definition might be read after the user definition if the lazy.nvim method is passed to opts.
In addition, it was pointed out that it would be possible to consider a configuration that can be overridden without making major changes to the current configuration, so we considered it again and implemented it.
At that time, I created a new branch, so I will throw a PR again.
Closing the previous PR.

@Jint-lzxy
Thank you for your review.
Addressed each issue.
Details are in each comment.

https://github.com/ayamir/nvimdots/pull/931/commits/f5ab67b6e0b7edeafb65733f09f507b67d3a82b8 did several comprehensive housekeeping and bug fixes, which includes the following changes:

Added two recently modified plugins: glance and symbols-outline;
Simplified some parts of the code and tried to follow naming conventions;
Added several comments for code blocks with high cognitive complexity;
Provided several "presets" (i.e., examples for each user config file)

In order to make the file structure similar to below keymap, I included lsp in user/keymap/completion.lua and gitsigns configuration in user/keymap/ui.lua, but luacheck is commented out by default because it does not pass.
Do you have a better solution?

This is resolved by providing user default values (a.k.a., "presets"). I also deleted gitsigns-related mappings b/c users can directly override them in the corresponding config file :D

Seems user dir should be added to .gitignore.

Two changes

f5ab67b
f5ab67b Changes in no longer add user/configs to package.path. (I think it's a workaround for a potential bug with conflicting names)
This makes config=require(user.configs.foo.bar) very cumbersome if the user wants to use a structure similar to lua/modules/plugins.lua.
To solve this I added a custom loader as the lowest priority loader.
This is a loader that searches user_configs_dir/configs if require(foo.bar) does not exist in package.path.
d73dc25
Added disabled_plugins to settings based on this review.
This allows users to disable plugins by simply writing the name of the plugin.

@Jint-lzxy

A nasty implementation is used here: This snippet attempts to obtain the name of the file containing  (debug.getinfo(2, ...)) and obtain the corresponding module name of the user config through a series of grepping (since we propose using the same file name as the original configuration to overwrite base config)- This might have some potential side effects I haven't figured out yet, so it requires some testing.

This implementation is a bit problematic.
lsp.lua sets up two plugins, mason and mason-lspconfig, but only references user/completion/lsp.lua.
This also applies to null-ls.lua.

3583e26
f5ab67b Changes in no longer add user/configs to package.path. (I think it's a workaround for a potential bug with conflicting names)

Yeah that's exactly the reason.

This makes config=require(user.configs.foo.bar) very cumbersome if the user wants to use a structure similar to lua/modules/plugins.lua.
To solve this I added a custom loader as the lowest priority loader.
This is a loader that searches user_configs_dir/configs if require(foo.bar) does not exist in package.path.

Maybe we can address this from another perspective? That is, only append user_config_dir to package.path when really needed (e.g., inside M.load_plugin). Since using bare io utils in the main event loop conflicts with libuv's design (i.e., asynchronous I/O). It is also feasible to directly use luv's API tho, but this is uniquely exposed to Neovim changes, both breaking and non-breaking.

5722cf1
Support override lsp setting.
Use tbl_deep_extend to replace the corresponding value to make it easier to understand what the user is doing.

IMO we can leave those directories (lsp servers, dap clients, null-ls sources) as-is (or place them under the user directory) cause they're not subject to change. The thing is, if there are breaking changes, users must fix their config regardless of what we offer upstream - so introducing merge conflicts here sounds reasonable for me.

IMO, it's easy to add an argument to bypass just using the given plugin name, but is there any other way?
or divide the file

Divide them into separate components makes sense to me :)

Accidentally closed by hitting wrong button. Re-opening. Sorry.

Maybe we can address this from another perspective? That is, only append user_config_dir to package.path when really needed (e.g., inside M.load_plugin). Since using bare io utils in the main event loop conflicts with libuv's design (i.e., asynchronous I/O). It is also feasible to directly use luv's API tho, but this is uniquely exposed to Neovim changes, both breaking and non-breaking.

The easiest way is to create a wrapper around require and let it resolve the path.
For example
M.load_config = function(modname)
    return require("user.configs." .. modname)
end

Divide them into separate components makes sense to me :)

Work to divide.

IMO we can leave those directories (lsp servers, dap clients, null-ls sources) as-is (or place them under the user directory) cause they're not subject to change. The thing is, if there are breaking changes, users must fix their config regardless of what we offer upstream - so introducing merge conflicts here sounds reasonable for me.

IMO, user custom settings and default settings should be completely separated.
To make it easier to debug with starting neovim without user if neovim doesn't start due to breaking changes as pointed out.
I think the most recent big change is probably the successor to null-ls, but I think you'll notice it because it won't be reflected even if the user expands the settings.
After that, I would encourage you to look at the release notes.

This is a minor issue considering the impact on others.
Let's write user.configs explicitly.

Ah I just realized that the user dir's hierarchy doesn't necessary have to follow our base config - this would make customization even more troublesome for users. So from this point of view, I think this is probably not too much typing for users? E.g.:
config = require("completion.cmp")
------
config = require("user.configs.cmp")

We can also take a step further - to include lua/user in our rtp. This way users only have to type:
config = require("configs.cmp")

IMO, user custom settings and default settings should be completely separated. To make it easier to debug with starting neovim without user if neovim doesn't start due to breaking changes.

Agreed. Then perhaps we can move them directly to the user subdirectory - i.e., as presets? Since "dispersing" server configs can bring a lot of problems, especially when recursively merging server specs.

Ah I just realized that the user dir's hierarchy doesn't necessary have to follow our base config - this would make customization even more troublesome for users. So from this point of view, I think this is probably not too much typing for users?

Yes, that's right.
Overrides for default installed plugins only need to be included in lua/user/configs, you don't need to imitate the structure if you add your own.

We can also take a step further - to include lua/user in our rtp. This way users only have to type:

From what I've just checked, including lua/user in rtp seems like the best way to go.

Then perhaps we can move them directly to the user subdirectory - i.e., as presets? Since "dispersing" server configs can bring a lot of problems, especially when recursively merging server specs.

You mean cpmpletion/servers and dap/clients, right?
As you said before, I think it's fine to include it in user if it allows for merge conflicts.
Because function mason_lsp_handler will start with default settings if there is no LSP setting. (neovim will start even if there is no setting for user.)
Or keep the current structure (you might create a new directory called lua/presets/{servers,dap,...}), and if you want to change the settings, you copy lua/modules/configs/servers to lua/user/servers or lua/user/configs/servers
or lua/user/configs/completion/servers and edit it.
After that, lsp.lua will read lua/user first. (Do not merge.)
In other words, it's a way to use it as a preset and a fallback.

In other words, it's a way to use it as a preset and a fallback.

Yeah I also agree that we can completely separate user custom settings and default settings. As you mentioned (if I understood this correctly), we should only provide two options: overwrite or just fallback, as merging specs here can be a source of trouble. This also makes it more difficult for us to debug possible issues that may arise.

If there are settings such as LSP under lua/user, read them, otherwise use presets.

we might create a new directory called lua/presets/{servers,dap,...}

How about keeping the current structure or creating lua/presets to aggregate?

How about keeping the current structure or creating lua/presets to aggregate?

IMO keeping current structure is more than enough. Because we also need to consider backward compatibility - some users may have already added their configs to the original directory (completion/servers/*...).

Added the following changes:

Separated mason-lspconfig and mason configuration from lsp.lua. (mason-lspconfig.lua and mason.lua, respectively)
Separated mason-null-ls from null-ls. (mason-null-ls.lua)
For mason_{lsp,dap}_handler if lua/user/{lsp-servers,dap-clients}t exists, prefer user settings
Assuming that the user does not match the structure under user/configs with the structure under modules/configs, the directory under user is referenced.
I added lsp- and dap- to the prefix for clarity.
Add lua/user to rtp
Added a conditional branch that just removes the keymap if the [<modes>|<keymap>]="" or false syntax is given

Maybe we need to rewrite Wiki:Usage before merging this? A new release is also necessary IMO.

Yeah, i need it.
Because the method of user custom has changed greatly.
Also, setting up an LSP server is different from setting up a plugin, so I think I have to explain.

also i think it would nice to add a custom/user debugging issue template, so we can debug user's settings apart from our original one.

@misumisumi please check if there's any misunderstanding in the new issue template.
@Jint-lzxy there seem to have a syntax error in the new template, but I got no time to debug it right now. could u help me debug it?
e93e52c
cd3456a
45cebdf
74e79cf

@misumisumi please check if there's any misunderstanding in the new issue template.
0ec555d

@CharlesChiuGit I fixed several trivial formatting issues and added some comments. Now the folder structure section aligns pretty well :)

LGTM!

@Jint-lzxy
I would appreciate it if you could reply to my review about load_plugins.

@Jint-lzxy @CharlesChiuGit
I think that bug_report.yml needs a check item to check if it has been started without user.
Also, if user is the cause, it is necessary to direct to custom-config.yml.

I would appreciate it if you could reply to my review about load_plugins.

Oh sorry I missed that review, there are too many replies flying around this thread. May I ask which review you're referring to?

Please review the lua/modules/utils/init.lua just above.

I think that bug_report.yml needs a check item to check if it has been started without user.
Also, if user is the cause, it is necessary to direct to custom-config.yml.

https://github.com/ayamir/nvimdots/pull/931/commits/72b99e12e0e2a9ef1ef6711e7836b49694a252b4

Please review the lua/modules/utils/init.lua just above.

This looks pretty good to me lol

This looks pretty good to me lol

Do you mean that it's better to delete it?

Do you mean that it's better to delete it?

I reviewed this version of utils/init.lua (which is marked as changed since your last review) and don't think we need to change anything. Have u pushed ur changes to GitHub?

No, I didn't change anything.
I got it.
thank you.

@CharlesChiuGit I fixed several trivial formatting issues and added some comments. Now the folder structure section aligns pretty well :)

LGTM!

Are we still waiting for the new wiki to complete?

Are we still waiting for the new wiki to complete?

Yeah we're still waiting for that

@Jint-lzxy @CharlesChiuGit
Started a discussion about updating the wiki.

Can we merge it now?

The code has been reviewed and the wiki has been edited, so it should be fine.


Fix breakpoint element protocol to allow continue commands

There is an issue where the first breakpoint is not set to "current" and it's not possible to use continue commands.
Confirmed that this happens with Xdebug 2.7.0 (PHP version >= 7.1)
The reason is that the protocol for the breakpoint element should be using "https" instead of "http"
This PR fix this.

May I fork and test this?

May I fork and test this?

Sure!

Btw, I see there is some issue with the build of this PR.
P.S. Haven't tested it yet

Btw, I see there is some issue with the build of this PR.
P.S. Haven't tested it yet

Sorry, I didn't got what do you mean by "there is some issue with the build of this PR".

For this plugin there is a CI tool used for testing Pull Requests in krder to not break thr functionality of thr plugin.
Here you can see the details:
https://travis-ci.org/martomo/SublimeTextXdebug
I think it maybe due to some configuration on the Build and not your Pull Request, but nevertheless I wanted to make sure that you have seen it and can confirm is due to that

Confirm it works as expected.

I've merged your fixes into my fork:
https://github.com/ryanpcmcquen/SublimeTextXdebugPlus
Which I am attempting to get into Package Control:
https://github.com/wbond/package_control_channel/pull/7658

@gepeixoto Thanks for contributing, instead of replacing of http with https I've decided to keep support for older Xdebug versions by checking for both http and https in a4ae19696f48ec4e8f88d95e00ee231b73afa2b3.


Weird TTF_Init/Quit/WasInit behaviour

Unlike SDL_mixer or SDL_image, SDL_ttf's init and quit functions behave sort of strangely. Specifically, if you call TTF_Init multiple times, it increments the value of TTF_initialized (and thus TTF_WasInit, which just returns that value) each time (note that status is always set to 0 before the following lines are run):
https://github.com/libsdl-org/SDL_ttf/blob/813740a16eaffbb1d2d8240649cb02b454c4e535/SDL_ttf.c#L1524-L1532
In other words, if you call TTF_Init three times in a row, TTF_WasInit will return 3. This wouldn't be too big a headache except for the fact that TTF_Quit uses a similar logic, decrementing TTF_initialized every time it's called but only actually de-initializing FreeType if TTF_initialized is 1 when the the function is called:
https://github.com/libsdl-org/SDL_ttf/blob/813740a16eaffbb1d2d8240649cb02b454c4e535/SDL_ttf.c#L3686-L3693
Thus, someone can call TTF_Init twice in a row and then call TTF_Quit once without actually quitting the library as expected. Worse, if TTF_Quit is somehow called before TTF_Init, TTF_initialized will become negative and will never quit no matter how may times it's called.
For most C programs this is a non-issue since you can easily guarantee that TTF_Init and TTF_Quit are only called once, and in that order, but for SDL2 bindings in interpreted languages (e.g. Python) there's no telling what users will do with wrapper classes or multiple imports.
An easy fix would be replacing the above chunk of TTF_Init with
 if (!TTF_initialized) {
     FT_Error error = FT_Init_FreeType(&library);
     if (error) {
         TTF_SetFTError("Couldn't init FreeType engine", error);
         status = -1;
     }
     TTF_initialized = 1;
 }

and replacing TTF_Quit with:
 void TTF_Quit(void)
 {
     if (TTF_initialized) {
         FT_Done_FreeType(library);
         TTF_initialized = 0;
     }
 }

Thanks in advance for looking at this!

@slouken do we need this TTF_initialized counter or should we simplify it ?

Yes, each call to init should have a matching quit call. This allows different parts of an application to work (e.g. a plugin uses SDL_ttf and the main game uses SDL_ttf independently). That's the way SDL works, and if SDL_image and SDL_mixer don't work that way, that's a bug.
We should probably protect against someone calling the quit function when it hasn't been initialized, but again, that's a bug in the application.

ok thanks ! this makes sense and SDL_ttf is ok. Also protected if the quit function is called without been initialized (though no error logged)
let's close this


Fabric error - Incorrect JDK

Hi, I noticed that when using this installer for the latest game version (1.20.6 at the time of writing), the game launches with a Fabric modloader error. This can be solved by downloading JDK 21 from Oracle's website and manually pointing the Minecraft install to it. Is this something that can be automated by this installer? I was confused at first and it took me some time to figure out what went wrong. Bundling the JDK in the .minecraft folder or under the launcher install runtime folder would probably be best instead of installing it.
Also, thanks for making this! Kinda shocked it only has 3 watchers and 6 stars.

This is because of a hack workaround I did where MC 1.17 and older of the pack wouldn't work in environments older than Java 17, so I hardcoded it to 17. This hasn't been an issue in a while, so this workaround should be removed.


[EventRequest] Codeunit 6620 Copy Document Mgt. - CopyPurchDoc

We would like to request the following publisher:
PROCEDURE CopyPurchDoc@22(FromDocType@1005 : Option;FromDocNo@1004 : Code[20];VAR ToPurchHeader@1017 : Record 38);
VAR
  ...
BEGIN
    ...

    ToPurchLine.LOCKTABLE;

    IF CreateToHeader THEN BEGIN
      ///// START
      CopyPurchDocOnBeforeInsertToPurchHeader(VAR ToPurchHeader, FromPurchHeader, MoveNegLines);
      ///// END
      INSERT(TRUE);
      ToPurchLine.SETRANGE("Document Type","Document Type");
      ToPurchLine.SETRANGE("Document No.","No.");
    END ELSE BEGIN

Many thanks.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Unable to connect to localhost port 4567 (Connection refused)

When I try to run debug_bridge after the previous steps for the simulation part, this error occurs:

Unable to connect to localhost port 4567 (Connection refused)

When running source tcl_files/run_memdpi.tcl on modelsim SE 10.2c on Linux Mint Sarah:
source tcl_files/run_memdpi.tcl
# vsim +nowarnTRAN +nowarnTSCALE +nowarnTFMPC +MEMLOAD=PRELOAD -L pulpino_lib -L apb_gpio_lib -L axi_slice_dc_lib -L apb_event_unit_lib -L axi_node_lib -L riscv_lib -L apb_pulpino_lib -L axi_mem_if_DP_lib -L apb_fll_if_lib -L axi_slice_lib -L apb_uart_lib -L apb_spi_master_lib -L apb_timer_lib -L axi2apb_lib -L axi_spi_slave_lib -L apb_i2c_lib -L adv_dbg_if_lib -L axi_spi_master_lib -L core2axi_lib -L apb_node_lib -L apb2per_lib {-voptargs=+acc -suppress 2103} -quiet -t ps -gTEST=MEM_DPI tb
# ** Warning: (vsim-7032) The 32-bit glibc RPM does not appear to be installed on this machine.  Calls to gcc may fail.
#
# ** Warning: (vsim-7032) The 32-bit glibc RPM does not appear to be installed on this machine.  Calls to gcc may fail.
#
# ** Note: (vsim-3812) Design is being optimized...
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast__1)".
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast__2)".
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast__3)".
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast__4)".
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast__5)".
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast__6)".
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast__7)".
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast__8)".
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast__9)".
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast__10)".
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast__11)".
# ** Note: (vopt-143) Recognized 1 FSM in module "sleep_unit(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "spi_master_rx(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "i2c_eeprom_model(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in architecture body "uart_receiver(rtl)".
# ** Note: (vopt-143) Recognized 1 FSM in architecture body "uart_transmitter(rtl)".
# ** Note: (vopt-143) Recognized 2 FSMs in architecture body "apb_uart(rtl)".
# ** Note: (vopt-143) Recognized 1 FSM in module "i2c_master_bit_ctrl(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "axi_BR_allocator(fast)".
# ** Note: (vopt-143) Recognized 2 FSMs in module "spi_slave_axi_plug(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "spi_slave_controller(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "core2axi(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "adbg_tap_top(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "axi_write_only_ctrl(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "axi_write_only_ctrl(fast__1)".
# ** Note: (vopt-143) Recognized 2 FSMs in module "apb_spi_master(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "axi_address_decoder_AW(fast)".
# ** Note: (vopt-143) Recognized 2 FSMs in module "riscv_prefetch_buffer(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "axi_BW_allocator(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "apb_fll_if(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "riscv_alu_div(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "i2c_master_byte_ctrl(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "generic_fifo(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "adbg_axi_module(fast)".
# ** Note: (vopt-143) Recognized 2 FSMs in module "riscv_debug_unit(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "adbg_axi_biu(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "adbg_or1k_module(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "spi_master_controller(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "riscv_mult(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "riscv_load_store_unit(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "riscv_controller(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "axi2apb32(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "axi_read_only_ctrl(fast)".
# ** Note: (vopt-143) Recognized 1 FSM in module "axi_read_only_ctrl(fast__1)".
# ** Warning: (vsim-3770) Failed to find user specified function 'mem_init' in DPI C/C++ source files.
#    Time: 0 ps  Iteration: 0  Instance: /tb File: /mnt/sda5/Dropbox/EE/Mestrado/Tese/pulpino/vsim/..//tb/tb.sv
# ** Warning: (vsim-3770) Failed to find user specified function 'mem_poll' in DPI C/C++ source files.
#    Time: 0 ps  Iteration: 0  Instance: /tb File: /mnt/sda5/Dropbox/EE/Mestrado/Tese/pulpino/vsim/..//tb/tb.sv
# ** Warning: (vsim-3770) Failed to find user specified function 'mem_push' in DPI C/C++ source files.
#    Time: 0 ps  Iteration: 0  Instance: /tb File: /mnt/sda5/Dropbox/EE/Mestrado/Tese/pulpino/vsim/..//tb/tb.sv
# ** Warning: (vsim-3770) Failed to find user specified function 'mem_push' in DPI C/C++ source files.
#    Time: 0 ps  Iteration: 0  Instance: /tb File: /mnt/sda5/Dropbox/EE/Mestrado/Tese/pulpino/vsim/..//tb/tb.sv

Can someone please help me ASAP?
Thank you

Your warnings seem to indicate that you had issues when compiling the DPI module called mem_dpi, which is required for the gdb connection. You should first get rid of these warnings, you probably have an issue with your modelsim version.

You should confirm that the port of Modelsim is the same as the debug_bridge connection port.
a. use command ： netstat -apt | grep vsim
b. change ‘’main.cpp‘’ file 【unsigned int portNumber =4567;】to 【unsigned int portNumber = post of vsim;】

I have the same problem with those warnings ，And eventually I found a problem with the “make vcompile” script "vcompile_tb.sh"，and solved DPI compilation problems.

@GSpinach if you don't want to taunt people with the same problems you ought not to post messages like "haha I got it resolved but I won't tell you how!"... :/ What's your solution?

@haugoug do you have any suggestions what I could try to fix that? There is nothing obviously wrong in vcompile_tb.sh AFAICT. I am currently using Questasim 10.6c_1.

Explicitly setting the DPI compulter via dpicpppath seems to help with the warnings https://github.com/pulp-platform/pulpino/issues/110#issuecomment-326100024

Sorry, no idea, I've never used pulpino.


xmrig: 2.5.2 -> 2.5.3

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools.
This update was made based on information from https://repology.org/metapackage/xmrig/versions.
These checks were done:

built on NixOS
Warning: no binary found that responded to help or version flags. (This warning appears even if the package isn't expected to have binaries.)
found 2.5.3 with grep in /nix/store/csidwxna34qv298smf6sflwaj93xr9p0-xmrig-2.5.3
directory tree listing: https://gist.github.com/5aaeee0849eb7acb740cae01310a19f9

cc @fpletz for review

Success on x86_64-darwin (full log)
Attempted: xmrig
Partial log (click to expand)
[100%] Built target xmrig
installing
install: creating directory '/nix/store/bfaxn74gnsk50knif65llxsg79wkia43-xmrig-2.5.3'
install: creating directory '/nix/store/bfaxn74gnsk50knif65llxsg79wkia43-xmrig-2.5.3/bin'
'xmrig' -> '/nix/store/bfaxn74gnsk50knif65llxsg79wkia43-xmrig-2.5.3/bin/xmrig'
post-installation fixup
strip is /nix/store/kdff2gim6417493yha769kh00n63lnrw-cctools-binutils-darwin/bin/strip
stripping (with command strip and flags -S) in /nix/store/bfaxn74gnsk50knif65llxsg79wkia43-xmrig-2.5.3/bin
patching script interpreter paths in /nix/store/bfaxn74gnsk50knif65llxsg79wkia43-xmrig-2.5.3
/nix/store/bfaxn74gnsk50knif65llxsg79wkia43-xmrig-2.5.3

Success on aarch64-linux (full log)
Attempted: xmrig
Partial log (click to expand)
install: creating directory '/nix/store/283k8q7v5fd0cbdn8lh98z1mxa6rnn4f-xmrig-2.5.3/bin'
'xmrig' -> '/nix/store/283k8q7v5fd0cbdn8lh98z1mxa6rnn4f-xmrig-2.5.3/bin/xmrig'
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/283k8q7v5fd0cbdn8lh98z1mxa6rnn4f-xmrig-2.5.3
shrinking /nix/store/283k8q7v5fd0cbdn8lh98z1mxa6rnn4f-xmrig-2.5.3/bin/xmrig
strip is /nix/store/j7d4mr0ikv974ig7yzhknpsq288js4bs-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/283k8q7v5fd0cbdn8lh98z1mxa6rnn4f-xmrig-2.5.3/bin
patching script interpreter paths in /nix/store/283k8q7v5fd0cbdn8lh98z1mxa6rnn4f-xmrig-2.5.3
checking for references to /build in /nix/store/283k8q7v5fd0cbdn8lh98z1mxa6rnn4f-xmrig-2.5.3...
/nix/store/283k8q7v5fd0cbdn8lh98z1mxa6rnn4f-xmrig-2.5.3

Success on x86_64-linux (full log)
Attempted: xmrig
Partial log (click to expand)
these paths will be fetched (0.21 MiB download, 0.59 MiB unpacked):
  /nix/store/csidwxna34qv298smf6sflwaj93xr9p0-xmrig-2.5.3
copying path '/nix/store/csidwxna34qv298smf6sflwaj93xr9p0-xmrig-2.5.3' from 'https://cache.nixos.org'...
/nix/store/csidwxna34qv298smf6sflwaj93xr9p0-xmrig-2.5.3


[minecraft:interact] Example code shows old format

The format of mincraft:interact component changed quite a lot, in 1.12 (If I recall correctly).
However, not all entities in the vanilla behavior pack were updated, which means some entities are still showing the old (and much worse) version.
In your document, your example actually shows this wrong code. I believe it might have been copied from the old cow entity.
Later on the page, you show correct example from cow.
The old interaction component style is considered completely outdated, bad practice, and won't even work on new format version. Please update this example to reflect new style.

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

ID: a4b51382-166e-b788-0518-3a2380f2951e
Version Independent ID: f5e8a1dd-7026-f121-5cf6-5b7e5bbc4d91
Content: Entity Documentation - minecraft:interact
Content Source: creator/Reference/Content/EntityReference/Examples/EntityComponents/minecraftComponent_interact.md
Product: gaming
GitHub Login: @v-jeffreykim
Microsoft Alias: v-jeffreykim

Updated cow code, merged to Main.


fix dtype of one-hot indicators in vqvae.py

tf.one_hot defaults to tf.float32 if no dtype is provided. This prevents VectorQuantizerEMA from running if its dtype is specified as tf.float64 at init time (since the EMA tries to subtract a tf.float32 - the one hot indicator tensor - from a tf.float64). This is easily fixed by passing a dtype argument to tf.one_hot.

@googlebot I signed it!

Thanks @ialong ! Please add a test with f64 to make sure we don't regress on this.

@tomhennigan  I have added the f64 case to the EMA test (testEmaUpdating) as that is the only use case where things would crash (indeed without this patch those tests would fail for f64). Is that good enough?


Add healthcheck - 4

[Auto generated]
Number: [#4]

hive-claim-manager-server(MynWw)[PR 4]: Closing issue for PR: Add healthcheck.
PR was closed.


Upgrade to remove triangle reference duplication

Right now there are two triangle references per triangle: one with a forward sense in its scene (volume) and another for the reverse sense in its scene (another volume).
We may be able to avoid the need to duplicate these references by storing the forward and reverse sense scenes on the GeometryData object -- it should be available to us as part of the intersection arguments. The remaining need is to know what scene the ray is being fired on. This information can be stored on the RTCDRay if needed, but it may also be available as part of the intersection arguments. TBD.

Doesn't look like the scene information is part of the RTCIntersectionArgs struct:
struct RTCIntersectFunctionNArguments
{
int* valid;
void* geometryUserPtr;
unsigned int primID;
struct RTCRayQueryContext* context;
struct RTCRayHitN* rayhit;
unsigned int N;
unsigned int geomID;
};

so it will need to go on the ray.


ClientThread and other additions

Added the ClientThread object. It's a thread running constantly in the background, that permits to post scores and get the leaderboard without pausing the main thread (i.e your game loop). Its usage is the same as a normal Client, and you'll find more information in its documentation
Added a .gitignore using a python generic template.
Added a test script for development purposes.

Looks good! I am merging this PR. Thanks for contributing to ScoreUnlocked :)


Jenkins Pipeline S3 Upload: missing file

Please see full details at https://stackoverflow.com/questions/48771407/jenkins-pipeline-s3-upload-missing-file

Hi, great catch. There indeed is a corner case where this fails when the pattern matches exactly one file. I will add a fix a release it with the next version coming this weekend.

Great @hoegertn such a quick response with an already covered issue...I'll be expecting the next release to add it to our Jenkins setup. Hope you can notify me when it's available.

Should be released

It's released and fixed indeed! Thanks a lot for such a fast timing.


Add gems/pending to gemnasium evaluation

Closing as gems-pending is it's own gem now with it's own gemnasium reference.