Firebase.deleteNode strange behavior

Hello,
I am facing a strange behavior with the Firebase.deleteNode function. Firebase_Arduino_WiFiNINA.h library version 1.1.4
I want to delete a node at a certain path in a firebase realtime database , and created the following function.
void deleteFBNode(String nodePath)
{
       Serial.println ("Delete Update Node Received ...");

       Serial.println (" Deleting at:" + nodePath);

        if ( Firebase.deleteNode(firebaseData,nodePath))
           {Serial.println ("Successfully deleted node at:");
             Serial.println (nodePath);}
       else
         {Serial.println ("Error deleteing data at:");
          Serial.println (nodePath);
          Serial.println(firebaseData.errorReason());}

}
if i call this function from the void setup () section , it works well and deletes the node.
while if i call it from the void loop() section based on a trigger condition, it doesn't delete the node and it returns a "Successfully deleted node at:" ... the path provided.
the same nodePath value is passed to the function , and i tested it with passing a constant string value as a nodePath value.
Appreciate any input on this matter.
Regards

As I reply your email, this is not the issue as you use any function in loop without problem.
Delete is just a simple function as get function, no thing is special as it use HTTP delete request.
You should debug by yourself first and if you can't find solution, you may need to create test example code which clean and clear and keep minimum that can reproduce the issue and post here.

This is the test example that works without problem

#include "Firebase_Arduino_WiFiNINA.h"

#define FIREBASE_HOST "esp8266-firebase-project.firebaseio.com"
#define FIREBASE_AUTH "chup24XmepsCrvshSiGRE2AkLr3YPNLCjAe5unFD"
#define WIFI_SSID "@100"
#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"

//Define Firebase data object
FirebaseData firebaseData;

unsigned long prevMillis = 0;
int count = 0;

void setup()
{

  Serial.begin(9600);
  delay(100);
  Serial.println();

  Serial.print("Connecting to Wi-Fi");
  int status = WL_IDLE_STATUS;
  while (status != WL_CONNECTED)
  {
    status = WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
    Serial.print(".");
    delay(300);
  }
  Serial.println();
  Serial.print("Connected with IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();

  //Provide the autntication data
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH, WIFI_SSID, WIFI_PASSWORD);
  Firebase.reconnectWiFi(true);

}

void loop()
{

  if (millis() - prevMillis > 20) {
    prevMillis = millis();

    if (Firebase.setInt(firebaseData, "/test/int", count))
    {
      Serial.print("Set data ");
      Serial.print(count);
      Serial.println(" ok");
    } else {
      Serial.println("Set data failed, " + firebaseData.errorReason());
    }
    if (count >= 9)
    {
      count = 0;
      if (Firebase.deleteNode(firebaseData, "/tesst/int"))
      {
        Serial.println("Delete data ok");
      } else {
        Serial.println("Delete data failed, " + firebaseData.errorReason());
      }
    }

    count++;
  }
}

Serial printing result

Connecting to Wi-Fi.
Connected with IP: <IP_ADDRESS>

Set data 0 ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok

This is the test example that works without problem

#include "Firebase_Arduino_WiFiNINA.h"

#define FIREBASE_HOST "xxxxxxxxxxxxxxxxxxxxxxx"
#define FIREBASE_AUTH "xxxxxxxxxxxxxxxxxxxxxxxxxx"
#define WIFI_SSID "xxxxxxxxxxxxxxxxxx"
#define WIFI_PASSWORD "xxxxxxxxxxxxxxx"

//Define Firebase data object
FirebaseData firebaseData;

unsigned long prevMillis = 0;
int count = 0;

void setup()
{

  Serial.begin(9600);
  delay(100);
  Serial.println();

  Serial.print("Connecting to Wi-Fi");
  int status = WL_IDLE_STATUS;
  while (status != WL_CONNECTED)
  {
    status = WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
    Serial.print(".");
    delay(300);
  }
  Serial.println();
  Serial.print("Connected with IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();

  //Provide the autntication data
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH, WIFI_SSID, WIFI_PASSWORD);
  Firebase.reconnectWiFi(true);

}

void loop()
{

  if (millis() - prevMillis > 20) {
    prevMillis = millis();

    if (Firebase.setInt(firebaseData, "/test/int", count))
    {
      Serial.print("Set data ");
      Serial.print(count);
      Serial.println(" ok");
    } else {
      Serial.println("Set data failed, " + firebaseData.errorReason());
    }
    if (count >= 9)
    {
      count = 0;
      if (Firebase.deleteNode(firebaseData, "/tesst/int"))
      {
        Serial.println("Delete data ok");
      } else {
        Serial.println("Delete data failed, " + firebaseData.errorReason());
      }
    }

    count++;
  }
}

Serial printing result

Connecting to Wi-Fi.
Connected with IP: <IP_ADDRESS>

Set data 0 ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok
Set data 1 ok
Set data 2 ok
Set data 3 ok
Set data 4 ok
Set data 5 ok
Set data 6 ok
Set data 7 ok
Set data 8 ok
Set data 9 ok
Delete data ok


build_graph() does not return

I tried to use hiddenlayer on this network architecture search coding for the following search architecture, however the code could not exit and is inside build_graph() forever.

I used this hl.build_graph(graph(train_inputs), torch.zeros([1, 3, 32, 32]).cuda()) instead and hiddenlayer gave me the following error:
Traceback (most recent call last):
  File "/home/phung/PycharmProjects/beginner_tutorial/gdas.py", line 793, in <module>
    ltrain = train_NN(forward_pass_only=0)
  File "/home/phung/PycharmProjects/beginner_tutorial/gdas.py", line 429, in train_NN
    hl.build_graph(graph(train_inputs), torch.zeros([1, 3, 32, 32]).cuda())
  File "/usr/lib/python3.9/site-packages/hiddenlayer/graph.py", line 148, in build_graph
    raise ValueError("`model` input param must be a PyTorch, TensorFlow, or Keras-with-TensorFlow-backend model.")
ValueError: `model` input param must be a PyTorch, TensorFlow, or Keras-with-TensorFlow-backend model.

I think within the graph() you should not pass the train_inputs. Try without giving the train_inputs, i.e, try this instead,
hl.build_graph(graph(), torch.zeros([1, 3, 32, 32]).cuda())

I think within the graph() you should not pass the train_inputs. Try without giving the train_inputs, i.e, try this instead,
hl.build_graph(graph(), torch.zeros([1, 3, 32, 32]).cuda())


BREAKING CHANGE: update to livewire 3, laravel 11, php 8.3.

add artisan commmand papiforms:seed command to seed database

:tada: This PR is included in version 1.40.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Error in read.dcf(file.path(pkg_path, "DESCRIPTION")) :

installing via 'install.libs.R' to C:/Users/topnet/Documents/.R/lockbox/.staging/stringi
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
*** arch - i386
*** arch - x64

DONE (stringi)
Error in read.dcf(file.path(pkg_path, "DESCRIPTION")) :

Thanks @datalee ! To be honest, we have not developed with Windows in mind, although we can incorporate that into the Q3 roadmap.
That being said, the above errors stems from an inability to install the stringi package. Does the below work for you in a vanilla R session?
install.packages("stringi")

yes,it works.


Default approvers

The following statement (default roles) from this page is incorrect:
"You can require approval for activation of an eligible assignment. The approver doesn't have to have any roles. When you use this option, you must select at least one approver. We recommend that you select at least two approvers. There are no default approvers."
This can be demonstrated when modifying a role's settings within PIM. In the below example, I am selecting Exchange Administrator role settings:

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

ID: 791cb6b6-4733-1c1d-75c5-9318049163af
Version Independent ID: 4752b0bc-ab61-69e3-972f-80d6be2baa55
Content: Configure Microsoft Entra role settings in PIM - Microsoft Entra
Content Source: articles/active-directory/privileged-identity-management/pim-how-to-change-default-settings.md
Service: active-directory
Sub-service: pim
GitHub Login: @barclayn
Microsoft Alias: barclayn

@b-col
Thanks for your feedback! We will investigate and update as appropriate.

@b-col
Thanks for bringing this to our attention.
I'm going to assign this to the document author so they can take a look at it accordingly.
@barclayn
Can you please check and add your comments on this doc update request as applicable.

@b-col thank you for pointing this out. I have updated the article. #please-close


Removing groups changes users current group

When removing a group that is a user's current_group_id, change it.
The {before,after}_destroy hooks work differently in rails 5.2
The user-group association is now removed before the cleanup.
So using this association to lookup users will always look at no users, since those records are deleted.
Removing this dependency then just focuses on users who have a stale current_group.
Which is the basic premise of this task
so now, user's default_group are properly updated.
Added the third test case around groups to be super sure this is working

strange tests failure - feels like it should have been failing in the past.
the update is to delete the user from the widget test - because that user is not significant in the scheme of seeing when a group is removed.


chore: css cleanup

Hello! I stumbled upon your LinkedIn post about this project today, and thought I'd suggest a few simple visual style updates. Namely:

Removing unused styles from Home.module.css
Add max-width and center-align the main container
Make small changes to colors and link style

Hope you don't mind, and keep up the great work!

🔥 Thanks for the contribution, I'm absolutely not a visual expert so any help here is appreciated!
If you want, I've noticed the site is unusable on mobile. For some reason you cant scroll left or right and the text is all cut off. Would love some help remediating this. If not all good 😄

Hey no problem. I did notice the mobile usability concerns but didn't want to impose too much change on your project. I could take a stab at addressing that, and suggest a few other visual niceties along with it.

Hey no problem. I did notice the mobile usability concerns but didn't want to impose too much change on your project. I could take a stab at addressing that, and suggest a few other visual niceties along with it.

You wont offend me at all, thanks for the help! 😄

I spend a couple of hours working on layout and other visual style changes. I didn't touch any app logic, but got a little carried away with some changes which might potentially cause merge conflicts (e.g. external CSS files, etc). Let me give you a preview in a bit. Please don't worry. I won't break anything for you.


Resampling in HistoricalSignal.forecast off by 1 if outside available forecast data

I'm back again with some more (from a user perspective) unexpected behaviour :relaxed:
Take any HistoricalSignal that includes separate forecast information, e.g. one of the solcast datasets.
>>> start = datetime.datetime.now()
>>> s = vessim.signal.HistoricalSignal.from_dataset("solcast2022_germany", params={"start_time": start})
>>> # The following works fine, it returns as much of the forecast as available, which is less than 70 minutes, but that is ok.
>>> s.forecast(start, start + datetime.timedelta(minutes=70), column="Berlin")
>>> # The following raises an exception even before checking for resample_method.
>>> s.forecast(start, start + datetime.timedelta(minutes=70), frequency="10min", column="Berlin")
Traceback (most recent call last):
    [...]
    if not np.array_equal(new_times, times[new_times_indices]) and resample_method != "bfill":
IndexError: index 13 is out of bounds for axis 0 with size 13
>>> # Same if resample_method is specified, naturally.
>>> s.forecast(start, start + datetime.timedelta(minutes=70), frequency="10min", resample_method="bfill", column="Berlin")
Traceback (most recent call last):
    [...]
    if not np.array_equal(new_times, times[new_times_indices]) and resample_method != "bfill":
IndexError: index 13 is out of bounds for axis 0 with size 13

The IndexError thus happens if a forecast of length longer than the one available is requested and frequency is specified. (Ok, the frequency also needs to be such that the resampled forecast would exceed the original in length - i.e. a frequency of 1h would work in the above, because it will just output one data point for the next hour and skip the next. But those frequency values that work are rather uncommon.)
This can probably also happen without separate forecast data, just using the actual signal. It is just easier to trigger it here, as the length of the forecasts available is usually more limited.
If one looks into the new_times_indices, one notices that this is because the highest indices will be off by 1, because np.searchsorted rightly says the elements would be at an index later than the highest element available.
For example
# For
x.forecast(start, start + datetime.timedelta(minutes=7000), frequency="1h", resample_method="bfill", column="Berlin")
# one gets `new_times_indices` of
[11 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13]

One could easily mask the confusing IndexError, for instance by dropping any indices that are above the length of the times array (here: 13).

s.forecast(start, start + datetime.timedelta(minutes=70), column="Berlin") works as described in the docstring: "If frequency is not specified, all existing data in the window will be returned."

Agreed.

s.forecast(start, start + datetime.timedelta(minutes=70), frequency="10min", column="Berlin") should result in an error because there is no available data at start + 70 minutes (only 60min forecast)

As a user I'd find it a bit confusing that I would get an error when I specify frequency, but it runs fine if I don't.
At the very least the docstring is not clear on this matter.
Other than the missing documentation regarding the inconsistency with the normal behaviour, I think it would be fine to return a custom error as well, yes.
So if I read correctly that your preferred solution would be to raise a custom Exception in the cases that IndexError is raised now (except when resample_method="ffil"). As I said, I think that is an ok solution, too, but then in my opinion you should then also add a way to programmatically get the length of the available forecast.
Either through a new method that can be called with (start_time, end_time) before making a call to forecast, or with a custom Exception class that includes a max_end_time attribute or similar, so that if a call to forecast fails, it can be repeated with the correct end_time.
Otherwise, it would be impossible to guarantee correct usage of HistoricalSignal.forecast in code, having no access to the underlying data. (I.e. if I built a component on top of a user-specified HistoricalSignal, I won't be able to tell what end_time is safe so that forecast does not fail.)

I will try to fix this in a few days.

Thank you :) Just as a side note: This issue is not urgent for me. I'm still using vessim 0.6.0, so I've built a workaround for this anyway.


Possible to add a count-down timer to Pass (i.e. not challenge) by default?

Hello!
Really enjoyed having an elegantly simple digital version of this game.   There were moments though when the game seemed to stall- and player's didn't realize they had to pass to allow the game to continue.
Would it be possible to add a count-down timer by default, so if no action is input by other players, there's an automatic pass or (no challenge).    It can be a simple 10-sec countdown, or if more user control is desired, perhaps the host can pre-determine this clock at the start of the game?
much appreciated!

a fan

+1 to the above, It would also be nice instead of "Waiting for other players" if it listed who was left to act incase someone doesn't notice the prompt your friends could remind them to Challenge or Pass


MZ Browser 6 detected as Chrome 40

The browser version is not correctly defined.
Device: Mobile
Platform: AndroidOS 6.0
Founded Browser: Chrome 40.0.2214.89
Real Browser: MZ Browser 6.9
User Agent: Mozilla/5.0 (Linux; U; Android 6.0; zh-CN; MZ-PRO 6 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 MZBrowser/6.9.511-2018012510 UWS/<IP_ADDRESS> Mobile Safari/537.36

You're probably better to bring this up on the Mobile-Detect repo 👍


glGetInteger throwing GL_INVALID_ENUM

Don't know if it's just me making a mistake or just my machine, but with LWJGL 3.0.0 GL11.glGetInteger(GL20.GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS) seems to trigger a GL_INVALID_ENUM error when called, despite that pair being used fairly often to query the number of available texture units.

Cannot reproduce. Could you please try it in a debug context and post the error output here?
glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE);
// ... (create window) ...
glfwMakeContextCurrent(window);
GL.createCapabilities();
debugProc = GLUtil.setupDebugMessageCallback();

Updated to the latest nightly build, debug output is:

(Sun Sep 06 09:57:29 CDT 2015)(Render Thread)> [LWJGL] OpenGL debug message
(Sun Sep 06 09:57:29 CDT 2015)(Render Thread)> 	ID: 0xC80
(Sun Sep 06 09:57:29 CDT 2015)(Render Thread)> 	Source: API
(Sun Sep 06 09:57:29 CDT 2015)(Render Thread)> 	Type: ERROR
(Sun Sep 06 09:57:29 CDT 2015)(Render Thread)> 	Severity: HIGH
(Sun Sep 06 09:57:29 CDT 2015)(Render Thread)> 	Message: Using glGetIntegerv in a Core context with parameter  and enum '0x8871' which was removed from Core OpenGL (GL_INVALID_ENUM)
A forward-compatible 3.2 core context is being used, and the error can be stopped either by allowing a backwards-compatible context or by calling GL.createCapabilities() at any point before the error in versions before 3.0.0b build 9.
It seems that GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS is disabled in 3.2+, is there any way of me verifying this? Googling seems to reveal nothing on the subject, and I don't see how I'd get the maximum number of texture units correctly without it.

0x8871 is MAX_TEXTURE_COORDS, not MAX_COMBINED_TEXTURE_IMAGE_UNITS.

Are you using value instead of the constant name? MAX_COMBINED_TEXTURE_IMAGE_UNITS is equal to 0x8B4D when I printed it out.

Well, I've at least figured out what it was -- My Eclipse now only saves files from the project that is being run when that project is run, rather than saving all open files -- Which means that because I run more than 1 project with referenced source directories between them when I deleted GL_MAX_TEXTURE_COORDS  it didn't save and kept triggering the error, leading me to believe that it was GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS instead of GL_MAX_TEXTURE_COORDS. It makes sense now that GL_MAX_TEXTURE_COORDS was removed because it is for the fixed pipeline and should no longer be used. Anyways, thanks for all the help, I'm glad I got this dealt with.


Audio through SSH

This is so cool!  Are you able to play audio via SSH?  I'm running the docker container on a Linux box, and accessing it via Terminal with SSH on macOS Ventura.

I didn't try getting audio to work through SSH yet! I know you can get sound from Docker to the host by mounting /dev/snd.
If you're willing to get your hands dirty, you could try to (totally untested):

Install pulseaudio on macOS (looks like it's available on Homebrew and MacPorts)
While connecting through SSH, setup localhost:4713 on Linux to forward to localhost:4713 on macOS
Start Carbonyl with PULSE_SERVER=localhost and --net=hostdocker run -e PULSESERVER=localhost --net=host -ti fathyb/carbonyl https://youtube.com


Add helm charts for weave-gitops

Helm charts for minimum installation for weave-gitops.

Context: https://docs.google.com/document/d/1dr6cNUViTrr25LWae-m1dZO0KHYUF_GP3HT3bQeIckg/edit#

@palemtnrider Would you mind taking a look at this? I don't have enough context to review

Sure thing.

@palemtnrider thanks for taking a look!
This chart and values ARE the result of running wego gitops install. :)
I'll take a look at the install failure. Sadly, I seem to be getting some other error with kube proxy locally right now. :/ So I'll try to reproduce this.

Okay, so my env is working now...
I installed the helm charts and I see no error so far:

I tried running that command:
➜  weave-gitops git:(helm_chart) ✗ ./bin/wego app add . --app-config-url NONE
Adding application:

Name: weave-gitops
URL<EMAIL_ADDRESS>Path: ./
Branch: main
Type: kustomize

◎ Checking cluster status
✔ Wego installed
✚ Generating Source manifest
✚ Generating GitOps automation manifests
✚ Generating Application spec manifest
► Applying manifests to the cluster

So.... ?

we will need to generate the templates dynamically based on the output from wego gitops install.

Automated generation of charts after wego changes will be done in a later PR (@Skarlso it is part of this task to have a make command, or whatever they have going on, to easily generate new charts). This is just the bare minimum to get us started as the existence of this chart blocks everything else.
As for the failure: could be a flake? could be @Skarlso has things existing on his cluster already?

@Callisto13 nope, cluster is completely new and literally just created with kind create cluster and updated kind and refreshed registry. ¯_(ツ)_/¯
In any case, slight change of plan, this chart will now be generated and thus will not have any values in it to have automation around this scenario.

@palemtnrider Also, the --debug and --dry-run are there to just verify that the helm chart generation works. If there would be any errors in the yaml or the values or anything like that, the helm install would fail. It's not testing if the actual installation works, or not. It's just testing the that helm charts are okay. Testing if the installation works should be handled separately.

@palemtnrider Also, the --debug and --dry-run are there to just verify that the helm chart generation works. If there would be any errors in the yaml or the values or anything like that, the helm install would fail. It's not testing if the actual installation works, or not. It's just testing the that helm charts are okay. Testing if the installation works should be handled separately.
Thanks for the additional context.  I suspected that and was surprised when the --dry-run passed but it failed to install do to the name missing on the chart. I guess that was a valid chart but not actually valid kubernetes manifests.  Is there any harm in running with --debug and no --dry-run?  I think the chart we generate should installing into k8s successfully.


[CMake] NFC. Updates based on post-merge feedback

This patch addresses feedback from @gottesmm in PR5034.

Ensure LLVM_CMAKE_DIR is always set so it can be used
Use LLVM_CMAKE_DIR instead of searching the module paths
Label parameters of cmake_parse_arguments in comments

@swift-ci please smoke test and merge


Updated Url

Acceptance Criteria

Include here all things that this PR should solve
Fixed #174

Security Checklist

[x] Make sure you do not include new dependencies in the project unless strictly necessary and do not include dev-dependencies as production ones. More dependencies increase the possibility of one of them being hijacked and affecting us.

Hi @PrajwalBorkar thanks for the new PR.
The linter is failing because there is a space at the beginning of the line you changed.


Fix tSNE plot for 1 trial

If user runs example and then does osprey plot examples/config-1.yaml it will fail, because by default osprey works runs only 1 trial and then tSNE cannot be evaluated.

fixed in #134


Fix global audio syncing and seeking issues

Fixes

Fixes #653 by @sarayourfriend
Closes #632 by @sarayourfriend — All audio tracks on the page buffer immediately so there's no longer a delay between playing them... do we need to prevent audio from loading until the "play" button is hit on it or it is seeked? Probably so.
Description

Switches to using a global ref for the currently active audio track and swapping between multiple audio elements (one per track on the page, aside from the global track).
Some notes/key concepts:

We derive all state from the state of the audio object, whether the global "active audio" or the local audio. This means our state is updated when the local audio object emits the corresponding events. The only exception to this is the current time. I originally implemented this to always update the currentTime ref (which is used for displaying the play progress on the waveform) using the timeupdate event exclusively. But to achieve a smooth animation, when a track is playing, we'll update the currentTime ref in a requestAnimationFrame loop. timeupdate is still used to update the current time when the audio is not playing (for example if it is seeked while it is paused or ended). Otherwise the timeupdate event is ignored when the track is playing.
The GlobalAudioTrack and AudioTrack components share much of the same logic. At a glance it does appear that some of this stuff could be abstracted and I did spend a short amount of time thinking about how to do this. However, most of the "simple" ideas for how to do this, were thwarted by various issues with syncing global and local state selectively. The current implementation works, and while there is some duplicated code, most of it is subtly different. The approaching deadline for the audio release means spending time on refactoring this PR right now is pretty low value. If we decide to spend more time on this in the future, it could alleviate the maintainability burden of these two components, as long as we're sure their implementations won't diverge in the future. Given the already existing subtle differences between the two, I'd make a pretty confident bet that trying to abstract these behaviors into a shared utility would present difficulties in the future.
The local audio track has to be careful not to use the Audio object on the server. I tried to minimize the amount of code that was shifted into the onMounted hook, mostly because putting everything in there seems like an organizational misstep. If we did move everything in there, however, we could probably get rid of a lot of the optional chaining on the localAudio variable, but it seems like a small victory that could cause delays in mounting the component that are easily avoided (thanks to ergonomic features like optional chaining).
I tried to add explanatory comments to any logic that was non-obvious or could be implemented in different ways but needed to be done the way I did. If there's anything else that warrants explanation, let me know and I am happy to add more comments.

Testing Instructions

Checkout this branch and run pnpm dev.
Visit an audio result page like http://localhost:8443/search/audio?q=birds and play around with seeking, playing, pausing, replaying tracks, both with and without the global audio player. Also make sure to test navigation between the search results and single result pages.
Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[Not possible yet] I added or updated tests for the changes I made (if applicable).
[x] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@zackkrida the issue was pretty easy to fix, but did require some complicated changes to the initialization logic in VAudioTrack. However, as a side effect of this, I was able to delay loading audio until playback or seeking happens 👍
All page transitions should now be working as smoothly as reasonably possible. Hopefully I haven't made any incorrect assumptions about how the search results are stored and what's presented on the page!


Be able to add context menus after installation too

I'm experienced deleted vscode's context menus suddenly after update Windows 10 21H2.
I had to re-install.
I am solved this problem, however, reinstalling it was time-consuming.
So I want you to be able to add context menus after installation.
This means that users who did not choose the setting to add a context menu during installation can easily configure it.
Since it is possible that VSCode is not the cause of this issue, i have changed the type of this Issue to Feature Request.

Previously requested at #33125 but ultimately closed as out-of-scope.

Thanks @gjsjohnmurray. Closing it as a duplicate.


Get console input to work in IDEs

This annoying change, or something similar, seems to be necessary in order to allow for debugging within the IDEs on Windows.  The jline line reader is not quite right and is replaced with the standard Java Scanner when arranged.

Just making sure you're on your toes toes.  This is part of getting the client/server version to work.


Move ArchiveResult from detail index.json history to database model

Summary
When this PR is ready, archivebox will be able to:

Save ArchiveResults to the database
Load ArchiveResults from the filesystem if nothing is found in the database (to ease migration)
Use ArchiveResults to answer questions about available extractors output per snapshot

Related issues
https://github.com/pirate/ArchiveBox/issues/513
Changes these areas

[ ] Bugfixes
[ ] Feature behavior
[ ] Command line interface
[ ] Configuration options
[X] Internal architecture
[ ] Snapshot data layout on disk

Current state: functional.
It creates ArchiveResult objects based on the index.json detail for every archive.
It saves new ArchiveResult objects when an extractor finish.
The icons displayed in index are calculated based on the ArchiveResults for the Snapshot
Missing:

Remove ArchiveResult schema from the extractor process. Use the ArchiveResult model instead.
Add WARC to the list of icons. This requires specific logic.
Remove N+1 bottlenecks.
Handle the case where there are several ArchiveResult objects for a Snapshot with the same extractor.

@pirate Ready for review.

This is great so far, sorry I took so long to review it. You don't have to change all the things I asked about in the comments, they're just things I want to understand the reasoning for.

Thanks for the review! I will fix all of those details today (they are all small details).

@pirate implemented all of the fixes. After you approve it, I will rebase-merge it.

@pirate Added two changes you requested. I think this is ready for review.

Replace charfield with jsonfield
Re-add icons, even if the related extractors were not used

I also bumped the django version to 3.1


WIP: Decoding scripts using conformer LM.

Decoding code for https://github.com/k2-fsa/icefall/pull/54
Still working in progress. Hope to get some results this week.

Here is the progress so far:
(1) Generate masked_src, src, tgt, src_key_padding_mask, and weight for the conformer lm model from
an nbest object
(2) Able to load the pre-trained conformer lm model into decode.py
Will add another option to decode.py to use conformer lm for rescoring.

Here is an example of generating the inputs for conformer lm from an nbest object.
Assume we have two utterances: utterance 0 has two paths and utterance 1 has 3 paths:
    # utterance 0
    path00 = k2.linear_fsa([1, 2, 0, 3, 0, 5])
    path01 = k2.linear_fsa([1, 0, 5, 0])

    # utterance 1
    path10 = k2.linear_fsa([9, 8, 0, 3, 0, 2])
    path11 = k2.linear_fsa([9, 8, 0, 0, 3, 2])
    path12 = k2.linear_fsa([9, 0, 8, 4, 0, 2, 3])

    shape = k2.RaggedShape("[[x x] [x x x]]")

The resulting inputs for conformer lm are:
(Assume bos_id=10, eos_id=20, blank_id=0, unmasked_weight=0.25.
For each pair of paths in an utterance, when one is used as a src, the other is used as a tgt.
)
masked src
 tensor([[10,  1,  2,  3,  5, 20,  0],
        [10,  1,  0,  0,  5, 20,  0],
        [10,  1,  0,  0,  5, 20,  0],
        [10,  1,  5, 20,  0,  0,  0],
        [10,  9,  8,  3,  2, 20,  0],
        [10,  9,  8,  3,  2, 20,  0],
        [10,  9,  8,  0,  2,  0, 20],
        [10,  9,  8,  3,  2, 20,  0],
        [10,  9,  8,  3,  2, 20,  0],
        [10,  9,  8,  0,  2,  0, 20],
        [10,  9,  8,  0,  2,  0, 20],
        [10,  9,  8,  0,  2,  0, 20],
        [10,  9,  8,  4,  2,  3, 20]], dtype=torch.int32)

src
 tensor([[10,  1,  2,  3,  5, 20,  0],
        [10,  1,  0,  0,  5, 20,  0],
        [10,  1,  2,  3,  5, 20,  0],
        [10,  1,  5, 20,  0,  0,  0],
        [10,  9,  8,  3,  2, 20,  0],
        [10,  9,  8,  3,  2, 20,  0],
        [10,  9,  8,  4,  2,  3, 20],
        [10,  9,  8,  3,  2, 20,  0],
        [10,  9,  8,  3,  2, 20,  0],
        [10,  9,  8,  4,  2,  3, 20],
        [10,  9,  8,  3,  2,  0, 20],
        [10,  9,  8,  3,  2,  0, 20],
        [10,  9,  8,  4,  2,  3, 20]], dtype=torch.int32)

tgt
 tensor([[ 1,  2,  3,  5, 20,  0,  0],
        [ 1,  2,  3,  5, 20,  0,  0],
        [ 1,  0,  0,  5, 20,  0,  0],
        [ 1,  5, 20,  0,  0,  0,  0],
        [ 9,  8,  3,  2, 20,  0,  0],
        [ 9,  8,  3,  2, 20,  0,  0],
        [ 9,  8,  3,  2,  0, 20,  0],
        [ 9,  8,  3,  2, 20,  0,  0],
        [ 9,  8,  3,  2, 20,  0,  0],
        [ 9,  8,  3,  2,  0, 20,  0],
        [ 9,  8,  4,  2,  3, 20,  0],
        [ 9,  8,  4,  2,  3, 20,  0],
        [ 9,  8,  4,  2,  3, 20,  0]], dtype=torch.int32)

src_key_padding_mask
 tensor([[False, False, False, False, False, False,  True],
        [False, False, False, False, False, False,  True],
        [False, False, False, False, False, False,  True],
        [False, False, False, False,  True,  True,  True],
        [False, False, False, False, False, False,  True],
        [False, False, False, False, False, False,  True],
        [False, False, False, False, False, False, False],
        [False, False, False, False, False, False,  True],
        [False, False, False, False, False, False,  True],
        [False, False, False, False, False, False, False],
        [False, False, False, False, False, False, False],
        [False, False, False, False, False, False, False],
        [False, False, False, False, False, False, False]])

weight
 tensor([[0.2500, 0.2500, 0.2500, 0.2500, 0.2500, 0.0000, 0.0000],
        [0.2500, 1.0000, 1.0000, 0.2500, 0.2500, 0.0000, 0.0000],
        [0.2500, 1.0000, 1.0000, 0.2500, 0.2500, 0.0000, 0.0000],
        [0.2500, 0.2500, 0.2500, 0.0000, 0.0000, 0.0000, 0.0000],
        [0.2500, 0.2500, 0.2500, 0.2500, 0.2500, 0.0000, 0.0000],
        [0.2500, 0.2500, 0.2500, 0.2500, 0.2500, 0.0000, 0.0000],
        [0.2500, 0.2500, 1.0000, 0.2500, 1.0000, 0.2500, 0.0000],
        [0.2500, 0.2500, 0.2500, 0.2500, 0.2500, 0.0000, 0.0000],
        [0.2500, 0.2500, 0.2500, 0.2500, 0.2500, 0.0000, 0.0000],
        [0.2500, 0.2500, 1.0000, 0.2500, 1.0000, 0.2500, 0.0000],
        [0.2500, 0.2500, 1.0000, 0.2500, 1.0000, 0.2500, 0.0000],
        [0.2500, 0.2500, 1.0000, 0.2500, 1.0000, 0.2500, 0.0000],
        [0.2500, 0.2500, 0.2500, 0.2500, 0.2500, 0.2500, 0.0000]])

For the weights, here, we only actually care about the weights in the masked regions, so those 0.25's can be set to 0.  They were introduced for training purposes (the task is nontrivial only because we randomize the symbols in the non-masked regions, with some small probability).

Thanks, will change it.

I am able to use a masked conformer lm model to rescore a Nbest object and combine the resulting score with
attention score and acoustic score.
Will do some tests to see how it affects the WER.

By the way, the conformer_ctc/decode.py and icefall/decode.py become increasingly complicated and
more difficult to understand now.  I think we need another refactoring for the decoding scripts.


[feature] - Collapsible code block

Hi All,
Confluence supports collapsible code block through Code Block Macro.
Sphinx support collapsible code block through 'sphinx_toolbox.collapse' extension.
The sytancs follows:
.. collapse:: A long code block

    .. code-block:: python

        print("Not really")

Thank you for considering this feature

@andormarkus, while there should be a way to achieve this, it will most likely not be included in the Sphinx Confluence Builder extension. This is solely due to the goal on only supporting Sphinx embedded extensions and the extensive testing required each release for all supported Sphinx revisions and Atlassian Confluence Cloud/Server LTS revisions (i.e. to reduce maintenance and testing effort).
That being said, I have been preparing a Sphinx extension on the side to provide "extra" support for the Confluence builder extension. The goal is to support more popular third-party Sphinx extensions out there to work with this extension (e.g. to support out-of-box Sphinx mermaid support with this extension). Ideally this would not add any major burdens on the Sphinx Confluence Builder extension, and still providing an easy way for users to use more extended capabilities. Unknown on any timelines at this time, but it would most likely be done alongside a v1.6 release of this extension.

Well... decided to add support directly in this extension. Hopefully it can make people's life easier and not be too big of an issue to maintain. Support for various sphinx-toolbox nodes have been added in #522; currently on the development branch and should be available next release (v1.7+).

Wow, thank you so much

v1.7 is now available on PyPI -- marking as closed.

Hello :wave:
Sorry to reopen this old issue but I have a suggestion regarding this topic.
First, thanks alot @jdknight ! This is a great tool, and thanks to you, with a few tricks, I could manage to move most of my company's documentation to markdown managed with git repos (and there was a lot). It's now fully deployed on confluence using CICD. This is waaay better.
About this, as I wanted to keep the possibility to generate collapsible code blocks (and not code blocks IN a collapsible), I did a little monkey-patch to the visit_literal_block() function.
classes = node.get('classes', None):
[...]
if 'collapse' in classes:
    self.body.append(self._build_ac_param(node, 'collapse', true))

Using :class: option is very handy because it won't raise any error as it's supported by sphinx natively and will just be ignored for other generator (html for example).
Not sure if this is out of scope, but I thought it might be helpful to someone trying to tackle this exact same issue in a semi-elegant manner.


[OTHER] Performance are very poor on Qt Application

Hello, I am building an application (hopefully will be an enhanced photoboot, another one) with this setup:

RPi 4 B (8GB)
Raspberry Pi Touch Display
Raspberry Pi Camera Module 3 (Tested also with Camera Module 2 with the same results)
Waveshare SIM7600E-H 4G HAT
HDMI Display (1600x1900, in "Production" will be used a 1366x768 monitor and the windows are both fullscreen on the two monitors)
Raspberry Pi OS (update to yesterday)

While project is growing (with a slideshow of pictures), the performances of the QGlPicamera2 are very poor.
It appears very laggy and drops a lot of frames here a video.
I tried to check on (almost all) examples and reduced the size, but without any improvement, maybe I am missing something.
Here there is demo of the project, where I removed firebase and modem (managed with QSerial) connections and reduced to not attach the SVG or other resources like fonts. Secondary screen and modem are not required for the demo.
from libcamera import controls
from picamera2 import Picamera2
from picamera2.previews.qt import QGlPicamera2
from PyQt5.QtCore import pyqtSignal, QObject, QSize, Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QDesktopWidget, QHBoxLayout, QLabel, QMainWindow, QVBoxLayout, QWidget

import sys

class CameraWidget(QWidget):
    def __init__(self):
        super().__init__()

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        self.picam2 = Picamera2()
        # Adjust the preview size to match the sensor aspect ratio.
        preview_width = 800
        preview_height = self.picam2.sensor_resolution[1] * 800 // self.picam2.sensor_resolution[0]
        preview_height -= preview_height % 2
        preview_size = (preview_width, preview_height)
        # We also want a full FoV raw mode, this gives us the 2x2 binned mode.
        raw_size = tuple([v // 2 for v in self.picam2.camera_properties['PixelArraySize']])
        self.preview_config = self.picam2.create_preview_configuration(main={"size": preview_size})
        self.capture_config = self.picam2.create_still_configuration()
        if 'AfMode' in self.picam2.camera_controls:
            self.picam2.set_controls({"AfMode": controls.AfModeEnum.Auto})
        else:
            print("Attached camera does not support autofocus")

        self.picam2.configure(self.preview_config)
        self.picam2.start()

        cameraView = QGlPicamera2(
            self.picam2,
            width=preview_size[0],
            height=preview_size[1],
            keep_ar=False
        )

        layout.addWidget(cameraView)

        self.setLayout(layout)

class SlideshowWindowSignals(QObject):
    closed = pyqtSignal()

class SlideshowWindowView(QWidget):
    def __init__(self):
        super().__init__()
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        # layout.addWidget(CoverWidget())
        layout.addWidget(CameraWidget())

        self.setLayout(layout)

class SlideshowWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # Setup the window
        self.setWindowTitle("Slideshow Window")
        palette = self.palette()
        palette.setColor(self.backgroundRole(), Qt.black)
        self.setPalette(palette)
        self.setAutoFillBackground(True)
        desktop = QDesktopWidget()
        screen = desktop.screen(0)
        screen_geometry = screen.geometry()
        if screen_geometry.width() > 1366 or screen_geometry.height() > 768:
            self.setFixedSize(QSize(1366, 768))
        else:
            self.setGeometry(screen_geometry)
            self.showFullScreen()
        # Setup signals
        self.signals = SlideshowWindowSignals()
        # Setup the view
        self.setCentralWidget(SlideshowWindowView())

    def keyPressEvent(self, e):
        if e.key() == Qt.Key_F5:
            self.close()

    def close(self):
        super().close()
        self.signals.closed.emit()

class NotificationsArea(QWidget):
    def __init__(self):
        super().__init__()
        # Pick the default font for the icons
        font = QFont("tabler-icons", 30)
        # Build layout
        layout = QHBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(8)
        # Configuration Icon
        self.iconConfig = QLabel("A", self)
        self.iconConfig.setFont(font)
        self.iconConfig.setAlignment(Qt.AlignCenter)
        p2 = self.iconConfig.palette()
        p2.setColor(self.iconConfig.foregroundRole(), Qt.white)
        self.iconConfig.setPalette(p2)
        layout.addWidget(self.iconConfig)
        # Sync Icon
        self.iconSync = QLabel("B", self)
        self.iconSync.setFont(font)
        self.iconSync.setAlignment(Qt.AlignCenter)
        p2 = self.iconSync.palette()
        p2.setColor(self.iconSync.foregroundRole(), Qt.white)
        self.iconSync.setPalette(p2)
        self.iconSync.hide()
        layout.addWidget(self.iconSync)
        # Signal Strenght Icon
        self.iconCellSignalQuality = QLabel("C", self)
        self.iconCellSignalQuality.setFont(font)
        self.iconCellSignalQuality.setAlignment(Qt.AlignCenter)
        p2 = self.iconCellSignalQuality.palette()
        p2.setColor(self.iconCellSignalQuality.foregroundRole(), Qt.white)
        self.iconCellSignalQuality.setPalette(p2)
        layout.addWidget(self.iconCellSignalQuality)
        # Set the element layout
        self.setLayout(layout)

class Toolbar(QWidget):
    def __init__(self):
        super().__init__()
        # Build layout
        layout = QHBoxLayout()
        # Icon and title
        title = QLabel("My Application")
        palette = title.palette()
        palette.setColor(title.foregroundRole(), Qt.white)
        title.setPalette(palette)
        font = QFont("Work Sans Regular", 30)
        title.setFont(font)
        layout.addWidget(title)
        # Add a filler to split the widgets
        layout.addStretch()
        # Notifications area
        layout.addWidget(
            NotificationsArea()
        )
        # Set the element layout
        self.setLayout(layout)

class MainWindowView(QWidget):
    def __init__(self):
        super().__init__()

        # Initialize the view
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(4)
        toolbar = Toolbar()
        layout.addWidget(toolbar)

        layout.addStretch()

        self.setLayout(layout)

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # Initialize window
        self.setWindowTitle("Control Window")
        palette = self.palette()
        palette.setColor(self.backgroundRole(), Qt.black)
        self.setPalette(palette)
        self.setAutoFillBackground(True)
        desktop = QDesktopWidget()
        screen = desktop.screen(1)
        screen_geometry = screen.geometry()
        if screen_geometry.width() > 800 or screen_geometry.height() > 480:
            self.setFixedSize(QSize(800, 480))
        else:
            self.setGeometry(screen_geometry)
            self.showFullScreen()

        # Initialize Slideshow window
        self.slideshow = SlideshowWindow()
        self.slideshow.signals.closed.connect(self.close)

        # Set the main widget
        self.setCentralWidget(
            MainWindowView()
        )

    def keyPressEvent(self, e):
        if e.key() == Qt.Key_F5:
            self.close()

    def close(self):
        if self.slideshow.isVisible():
            self.slideshow.close()
        super().close()

    def show(self):
        super().show()
        self.slideshow.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    exitCode = app.exec_()

    sys.exit(exitCode)

This the output log:
[0:01:33.805355788] [1422]  INFO Camera camera_manager.cpp:299 libcamera v0.0.4+22-923f5d70
[0:01:33.951072920] [1425]  INFO RPI raspberrypi.cpp:1476 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media4 and ISP device /dev/media2
[0:01:33.963356333] [1422]  INFO Camera camera.cpp:1028 configuring streams: (0) 800x450-XBGR8888
[0:01:33.963809804] [1425]  INFO RPI raspberrypi.cpp:851 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 1536x864-SBGGR10_1X10 - Selected unicam format: 1536x864-pBAA
[0:01:54.590277504] [1425] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
[0:02:12.565979952] [1425] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
[0:02:23.036807858] [1425] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
[0:02:23.278268622] [1425] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output

Hi, I think the problem is that when you call picam2.start() it creates an event loop because there isn't one running, and then the QGlPicamera2 widget creates another one.  Simply move picam2.start() to just below the creation of the widget. I guess we could help there by detecting that something bad is happening and provoking an error, so we'll look into that.
To get a smoother framerate, maybe consider pegging the max framerate to, say, 30fps, and possibly increase the buffer_count slightly too, depending on how it seems to run.

I refactored the code a little bit to move the start() after the widget initialization.
Now the frame rate is good for the preview.
Errors appears half of the time.
Many time appears during the call switch_mode_and_capture_array(), it says “camera not started properly” and the app crashes.

Obviously including an error message or the console output would be helpful here.
If I had to take a guess, then maybe you're running out of CMA memory? You can alleviate this by finding the line dtoverlay=vc4-kms-v3d and replacing it by dtoverlay=vc4-kms-v3d,cma-384 or even dtoverlay=vc4-kms-v3d,cma-512 (do not add any extra spaces or capitalisation). The reboot. You can check how much CMA you have with grep Cma /proc/meminfo.

I checked the CMA Memory and it is already set to 512 (more than 300 are free)
pi@raspberrypi:~ $ grep Cma /proc/meminfo
CmaTotal:         524288 kB
CmaFree:          350268 kB

The cycle is controlled by timers and act this way:

Normally the finder is not shown, the QGlPicamera2
Once the user hit a button a QTimer starts the countdown
While the timer runs the related label is updated
At Countdown 0 an AF Cycle is performed (if supported by the camera)
The picture is took with switch_mode_and_capture_array

In the attached log, it happens with the second picture, the first works great.
This is the error I get into the console:
# The finder is not shown
[0:07:06.940145902] [2150] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
[0:07:08.060265816] [2150] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
[0:07:12.604154357] [2150] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
[0:07:14.524267140] [2150] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
[0:07:15.580132619] [2150] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
[0:07:15.774217508] [2150] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
[0:07:19.676165010] [2150] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
# Finder is shown and the countdown start (triggered by a QTimer()
Countdown: 7
Countdown: 6
Countdown: 5
Countdown: 4
Countdown: 3
[0:07:28.252144241] [2150] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
Countdown: 2
Countdown: 1
[0:07:29.948140924] [2150] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
Countdown: 0
[0:07:31.324132512] [2150] ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output
AF cycle succeeded in 10 frames
[0:07:31.683598010] [2133]  INFO Camera camera.cpp:1028 configuring streams: (0) 4608x2592-BGR888
[0:07:31.688701403] [2150]  INFO RPI raspberrypi.cpp:851 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 4608x2592-SBGGR10_1X10 - Selected unicam format: 4608x2592-pBAA
[0:07:31.927757035] [2150] ERROR V4L2 v4l2_videodevice.cpp:1906 /dev/video1[20:cap]: Failed to start streaming: Errore di input/output
Camera did not start properly.
Traceback (most recent call last):
  File "/home/pi/wedding-buddy-photobootd/slideshow_window/finder_widget.py", line 64, in onCameraDone
    image = self.picam2.wait(job)
  File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 1152, in wait
    return job.get_result()
  File "/usr/lib/python3/dist-packages/picamera2/job.py", line 77, in get_result
    return self._future.result()
  File "/usr/lib/python3.9/concurrent/futures/_base.py", line 433, in result
    return self.__get_result()
  File "/usr/lib/python3.9/concurrent/futures/_base.py", line 389, in __get_result
    raise self._exception
  File "/usr/lib/python3/dist-packages/picamera2/job.py", line 47, in execute
    done, result = self._functions[0]()
  File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 1212, in switch_mode_
    self.start_()
  File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 1003, in start_
    raise RuntimeError("Camera did not start properly.")
RuntimeError: Camera did not start properly.
Annullato

This is the complete log of te first picture I try to take:
[0:23:28.083819063] [2596]  INFO Camera camera_manager.cpp:299 libcamera v0.0.4+22-923f5d70
[0:23:28.219569727] [2610]  INFO RPI raspberrypi.cpp:1476 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media1 and ISP device /dev/media2
[0:23:28.257486882] [2596]  INFO Camera camera.cpp:1028 configuring streams: (0) 800x450-XBGR8888 (1) 2304x1296-SBGGR10_CSI2P
[0:23:28.264959107] [2610]  INFO RPI raspberrypi.cpp:851 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 2304x1296-SBGGR10_1X10 - Selected unicam format: 2304x1296-pBAA
Multithreading with maximum 4 threads
[Modem thing omitted]
Countdown: 7
Countdown: 6
Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1
Countdown: 0
AF cycle succeeded in 18 frames
[0:23:54.653770794] [2596]  INFO Camera camera.cpp:1028 configuring streams: (0) 4608x2592-BGR888
[0:23:54.658432473] [2610]  INFO RPI raspberrypi.cpp:851 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 4608x2592-SBGGR10_1X10 - Selected unicam format: 4608x2592-pBAA
[0:23:55.278493062] [2596]  INFO Camera camera.cpp:1028 configuring streams: (0) 800x450-XBGR8888 (1) 2304x1296-SBGGR10_CSI2P
[0:23:55.290454048] [2610]  INFO RPI raspberrypi.cpp:851 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 2304x1296-SBGGR10_1X10 - Selected unicam format: 2304x1296-pBAA
[0:23:55.398715031] [2610] ERROR V4L2 v4l2_videodevice.cpp:1906 /dev/video1[20:cap]: Failed to start streaming: Errore di input/output
Camera did not start properly.
Traceback (most recent call last):
  File "/home/pi/wedding-buddy-photobootd/slideshow_window/finder_widget.py", line 64, in onCameraDone
    image = self.picam2.wait(job)
  File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 1152, in wait
    return job.get_result()
  File "/usr/lib/python3/dist-packages/picamera2/job.py", line 77, in get_result
    return self._future.result()
  File "/usr/lib/python3.9/concurrent/futures/_base.py", line 433, in result
    return self.__get_result()
  File "/usr/lib/python3.9/concurrent/futures/_base.py", line 389, in __get_result
    raise self._exception
  File "/usr/lib/python3/dist-packages/picamera2/job.py", line 47, in execute
    done, result = self._functions[0]()
  File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 1372, in capture_array_and_switch_back_
    self.switch_mode_(preview_config)
  File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 1212, in switch_mode_
    self.start_()
  File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 1003, in start_
    raise RuntimeError("Camera did not start properly.")
RuntimeError: Camera did not start properly.
Annullato

Hi again, well that all looks very bad. Do you have the touch screen connected? It sounds like there are problems communicating with the camera, which can sometimes be caused by other devices.

Yes, the 7inch touchscreen from raspberry.
Also a 4G hat and an hdmi monitor in hdmi0.

Just tested without the 7in touchscreen display.
It seems to work great 5/5 pictures taken without any error, also no ERROR V4L2 v4l2_device.cpp:352 'imx708': Unable to set controls: Errore di input/output was shown.
I there is anythng I can do to help, it will be a pleasure for me to help this project!

It is using vc4-kms-v3d. I will check on the forum, thanks.

I think I can close because the errors are a separate issue.


Some tweaks for backtick strings

getRawLiteral(): barf if currentSourceFile is missing, since if
it is, then the following getSourceTextOfNodeFromSourceFile will
return a bogus "".

One || -> ?? change.

backtickQuoteEscapedCharsRegExp: escape the usual control
characters except for a simple LF.  This code does get used to
generate backtick strings when rawText is not given, and not
escaping things like TAB characters can get mangled by editor
settings.  Worse, not escaping a CRLF and putting it verbatim in sthe
string source will interpret it as LF, so add a special case for
escaping these as \r\n.
Added test.

Related to #44313 and #40625.

@rbuckton, I added a test.  The only place I saw this code used is when printing types, so that's what the test is using.  (And the use of CRLF is to stress that this was actually broken before this change.)

Do we not normalize CRLF in template literal types? If so, that seems like a big disparity with template literal expressions (but perhaps unavoidable?).

[...] and the \r\n in the code turns into a literal CRLF which leads to broken output. [...]

How does this break the output? Do we not handle CRLF when parsing template literal types?

Do we not normalize CRLF in template literal types?

I'm not sure what normalization you're talking about...  The actual type has \r\n, and since there's no rawText for literals in types, then this code gets the CRLF and creates a (broken) rawText.

[...] and the \r\n in the code turns into a literal CRLF which leads to broken output. [...]

How does this break the output? Do we not handle CRLF when parsing template literal types?

The original type has \r\n, and the resulting dts line is:
declare const f: (hdr: string, val: number) => `${string}:	${number}
`;

so the CRLF from the type leads to a declaration with just a LF.


Use release

Hi,
Can you use release for download last version ?
Not good practice push zip file on git project :D

This is done on purpose, the program is not perfectly written and i have had occasions where, if donwloaded and installed from within a temp download folder, it would copy the entire C drive to itself. To prevent this i packed it all into a RAR where there is little chance to unpack this in a temp folder. This also goes for temp folders that windows uses if it had been a ZIP that was opened with the build in extractor from windows explorer (which also could be mistaken for a normal folder and thus not get unpacked before  installing).
In short: this is done so people dont break there computer


Write ODISSEI abstract

Reviews play a pivotal role as crucial sources of information for potential buyers and valuable feedback for reviewed entities. Acknowledging the significance of providing helpful reviews, companies have increasingly recognized their efficacy as a marketing tool. Extensive research across interdisciplinary domains, spanning philosophy to artificial intelligence, has investigated various factors contributing to the prediction of helpful reviews.
This study focuses on analyzing the Amazon Product Reviews dataset with the objective of creating a valuable resource for new users by effectively highlighting the strengths associated with different aspects of a product. To accomplish this goal, we employ a review segmentation approach, dividing each review into discrete chunks, typically sentences, wherein each chunk represents a specific aspect of the product. Furthermore, we assign a numerical rank to each chunk, reflecting its relative importance within the overall review.
To consolidate diverse perspectives on each aspect, we adopt abstract argumentation frameworks (AFs). These frameworks provide a semantic representation that not only presents the strengths and weaknesses of each aspect but also elucidates the underlying reasoning employed in the system's decision-making process. By leveraging AFs, we facilitate an enhanced understanding of product aspects, enabling users to make informed decisions based on comprehensive and well-supported evaluations.


Issue with running LongReadSum

Hi WGLab developers,
I received the following error when running the tool:
Total number of bases is not consistent.
ERROR:root:Completed with errors.
It is weird because these are new/different samples that I am processing when I ran into the error, but I have previously ran the tool with no issues before (same nucleic acid type, sequencer, and input data type). My command was: python ~/tools/LongReadSum fq -i pass.ND1.fastq -o read_summary.
Thank you for the help,
Raj

Hi, can you let us know which version you are using, and possibly an example file so I can try to reproduce the error?

Hello,
How can I check the version number?
Also because this is private data, I am unable to provide an example file.
Thanks,
Raj

It's recommended to download the latest release version: https://github.com/WGLab/LongReadSum/releases/tag/v1.2.0
If you installed via docker, please pull the latest release image specifying the version number:
docker pull genomicslab/longreadsum:v1.2.0
I will look into how this error may have occurred.

Okay, I reinstalled it by cloning the GitHub repo and running make.
Let me know if there is any other information I can provide you to help investigate the cause of this.
Much appreciated

Okay I fixed a possible issue. Please pull the latest commit from the main branch,  run make, and see if the issue is resolved.

Hope you had a great weekend Jonathan,
This fixed the issue. I was able to run it and get an output.
Thank you so much for your promptness on this matter!
Cheers,
Raj

Hi Raj, no problem, happy to hear!


[typo] bookmark should be hijack

The code in fern-bookmark.vim follows MIT license texted in LICENSE. Contributors need to agree that any modifications sent in this repository follow the license.

Thanks. Fixed.


add to prometheus

hi,
i currently play with your repo. i would like a counter in your example and expose it to prometheus/grafana. also how can you define an alarm (hipchat msg or email) in prometheus when the counter reaches 100 for example?
i changed your code as follows.
i send a request to http://localhost:8080/hello and watch http://localhost:8080/metrics i see the counter incrementing... but cannot see the counter in the prometheus ui on localhost:9090. any idea?
package main

import (
	"fmt"
	"math/rand"
	"net/http"
	"os"
	"time"

	"github.com/gorilla/handlers"
	"github.com/gorilla/mux"
	"github.com/prometheus/client_golang/prometheus"
	promhttp "github.com/prometheus/client_golang/prometheus/promhttp"
	"github.com/sirupsen/logrus"
)

var (
	// Counter vector to which we can attach labels. That creates many key-value
	// label combinations. So in our case we count requests by status code separetly.
	counter = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name: "hello_requests_total",
			Help: "Total number of /hello requests.",
		},
		[]string{"status"},
	)
)

func init() {
	prometheus.MustRegister(counter)
}

func main() {
	var log = logrus.New()
	// set the log output
	log.Out = os.Stdout
	// set the log level
	log.Level = logrus.DebugLevel
	// Routes consist of a path and a handler function.
	r := mux.NewRouter()
	// sample log.Info
	log.Info("http server is ready")
	// sample log.Debug
	log.Debug("i am only visible in debug mode\n")
	// exposes /hello endpoint with the helloHandler handler
	r.HandleFunc("/hello", helloHandler)
	// exposes /metrics endpoint with standard golang metrics used by prometheus
	r.Handle("/metrics", promhttp.Handler())
	// wrap a logger arount the mux router
	loggedRouter := handlers.LoggingHandler(os.Stdout, r)
	// wrap a prometheus instrument handler around the logger
	prometheusRouter := prometheus.InstrumentHandlerWithOpts(prometheus.SummaryOpts{}, loggedRouter)
	// Bind to a port and pass our loggedRouter in
	log.Fatal(http.ListenAndServe(":8080", prometheusRouter))

}

func doSomeWork() int {
	time.Sleep(time.Duration(rand.Intn(1000)) * time.Millisecond)

	statusCodes := [...]int{
		http.StatusOK,
		http.StatusBadRequest,
		http.StatusUnauthorized,
		http.StatusInternalServerError,
	}
	return statusCodes[rand.Intn(len(statusCodes))]
}

func helloHandler(w http.ResponseWriter, r *http.Request) {
	var status int

	defer func(begun time.Time) {
		// hello_requests_total{status="200"} 2385
		counter.With(prometheus.Labels{
			"status": fmt.Sprint(status),
		}).Inc()
	}(time.Now())

	status = doSomeWork()
	w.WriteHeader(status)
	w.Write([]byte("Hello, World!\n"))
}

the endpoint http://localhost:8080/metrics shows me the following:
# HELP hello_requests_total Total number of /hello requests.
 If you run it as you describe the "target" in the prometheus.yml will not exist.
this is due to the reason, that the docker-compose uses a docker network to make use of internal DNS, so the go-mux-example described in the compose file is actually a valid dns name inside of the compose network.
i don't think your setup will work, because docker is not intended to connect from inside the container to the outer host.
You could try with --net=host, but i would recommend that you either run mux in a container oder run the prometheus outside of the container to test your changes.
you can build a mux docker image with:
(assuming that you build it outside with GOOS=linux)
FROM golang:alpine
ADD .mux /mux
RUN chmod 0755 /mux
EXPORT 8080
CMD ["/mux"]
and then build it with
docker build -t mux:v1 .
after that you can change my image in the compose file with mux:v1 and everything should work fine or start them both inside of a container on your own.
tl:dr if your metrics are working in the /metrics endpoint you will have to take a hard look on prometheus in the /targets.
should look like this:

still seeing some issues:
my docker file:
FROM golang:1.9.2

RUN apt-get update && apt-get install -y git

RUN mkdir -p /home/go-mux-example
WORKDIR /home/go-mux-example

COPY main.go /home/go-mux-example
COPY handlers.go /home/go-mux-example

RUN go get -v github.com/gorilla/handlers
RUN go get -v github.com/gorilla/mux
RUN go get -v github.com/prometheus/client_golang/prometheus
RUN go get -v github.com/sirupsen/logrus

RUN chmod 0755 /home/go-mux-example
RUN CGO_ENABLED=0 GOOS=linux go build -o mux

EXPOSE 8080
CMD ["/home/go-mux-example/mux"]

docker compose:
version: "2"

services:

  prometheus-server:
    image: prom/prometheus
    ports:
      - 9090:9090
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml

  grafana:
    image: grafana/grafana
    ports:
      - 3000:3000
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=password
    links:
      - prometheus-server:prometheus

  go-mux-example:
    image: mux:v1
    ports:
      - 8080:8080

than start docker compose:
docker-compose up
here is what i see:
https://raw.githubusercontent.com/Arnold1/data/master/metrics.png
https://raw.githubusercontent.com/Arnold1/data/master/prometheus.png

do you know how to add alarms to prometheus which sends out an email and hipchat msg?

nice 👍
for the alerting part:
you have to have the alertmanager up and running:
https://prometheus.io/docs/alerting/configuration/#<email_config>
https://github.com/prometheus/alertmanager
and for the rules alerting the events you want to trigger:
https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
or else get yourself started with the maybe simpler alerting system from grafana itself and alert on charts.
http://docs.grafana.org/alerting/notifications/
if i have the time, i can add a basic email alerting setup with a local mailserver or webhook to demonstrate, but for now the alerting depends on what you want to do.
i would suggest you add the alertmanager to the compose file and play with it a little bit.
Feel free to close the issue, if this covers your questions.
all the best,
benjamin


Fixes #9 - Error: undefined method `[]' for true:TrueClass

PROBLEM
The instructions given for the Usage page doesn't work after Octopress Initial setup.
CAUSE
Configuring Octopress as described at Initial setup leads to a _config.yml which contains the two lines:
paginate: 10          # Posts per page on the blog index
paginate_path: "posts/:num"  # Directory base for pagination URLs eg. /posts/2/

these two keys conflict in some way with the configuration ones used by this plugin.
SOLUTION
I've added the subsection Remove Octopress pagination defaults in which is suggested to remove the two lines.
octopress/paginate#9

@parkr: this can be closed I believe.

Thank you!

I still have this problem...


It dosnt buy anything on shop

Somewhy It dosnt buy anything on my shop

The shop needs to be in the default shop position. Try and line up the "purchase" button with where the bot is trying to click in the bottom right. Or there might be a setting to return the shop to default position, but I'm not sure.

I have a problem with shop too..
When he back to b he try to buy something but dont buy anything.. just bought 1 boot and 1 doran in all the match

@Gouthar does the shop open in the default position?

I did not change the position, is all default

I can then only reiterate what I stated in issue #17.

The bot can only purchase items if the shop is in the default/original shop position. If the shop has moved, I would try and line up the "Purchase" button. The bot will attempt to click on an item and then click on "Purchase" to actually buy the item. Whenever you see the bot trying to buy something take note of where it thinks the "Purchase" button is and move the shop accordingly.


Timout exception

Hi
I have an issue when I create  my SqlTableDependency, I'm having a connection timeout exception when the app start.
It was working before, nothing changed, I just restart my local IIS Server.
Object is created inside my Application_Start() :
protected void Application_Start()
{
        AreaRegistration.RegisterAllAreas();
        RouteConfig.RegisterRoutes(RouteTable.Routes);

        var conStr = ConfigurationManager.ConnectionStrings[0].ConnectionString;

        var mapper = new ModelToTableMapper<Job>();
        mapper.AddMapping(model => model.Seq, "seq");
        mapper.AddMapping(model => model.User, "user");
        mapper.AddMapping(model => model.Whn, "whn");
        mapper.AddMapping(model => model.ReasonCode, "reasonCode");
        mapper.AddMapping(model => model.Src, "src");

        _dependency = new SqlTableDependency<Job>(conStr, "JobQueue", mapper: mapper);
        _dependency.OnChanged += _dependency_OnChanged;
        _dependency.OnError += _dependency_OnError;
        _dependency.OnStatusChanged += _dependency_OnStatusChanged;

        _dependency.Start();
}

Any idea ?

OK I may have found the issue...
The query instantiated by CheckIfUserHasPermissions() is taking a lot of time on my SQLServer and return no row :/
I setted executeUserPermissionCheck to false in the constructor and it's running well now.
The only thing I don't get is why it was working fine before with executeUserPermissionCheck to true ^^'
Cheers

Good.
Is all is solved, can you close this BUG?
Thanks


flake: Add legacyPackages Outputs

Add a legacyPackages output for exposing the build functions, since a lib wouldn't work correctly with system, and packages must be derivations.

Makes sense, thanks.


[articles/mixin.dd] Add concatenation, statements, types, expressions

Change genStruct eponymous template to enum template.
Add 5 sections: argument concatenation, declarations, statements, types, expressions. The examples added are all taken from the spec.
Add Comparison with C preprocessor heading.
Also tweak spec examples:
Split mixin statement spec examples into 2. Change for -> foreach and show mixin code reading a variable declared in current scope.
Move mixin variable declaration example to MixinDeclaration from statement.dd.
Update:
Add 'Domain Specific Languages' section with simple JS example.

@maxhaton Thanks, I changed the wording as suggested.
I also:

Added a section on 'Domain Specific Languages'.
Moved the 'Generating Declarations' heading to the top.


ValueError: Decoded Phred score is out of range [0, 62]

Have you had a chance to check out the docs?
https://docs.qiime2.org
There are many tutorials, walkthroughs, and guides available.
If you still need help, please visit:
https://forum.qiime2.org/c/user-support
environment : qiime2 2023.05 - docker-image
data:PACBIO sequel II
my command as follows:
qiime tools import           --type 'SampleData[SequencesWithQuality]'            --input-path ../input-path-list.tsv            --output-path ccs-data-demux.qza            --input-format SingleEndFastqManifestPhred33V2
qiime cutadapt trim-single --i-demultiplexed-sequences ../ccs-data-demux.qza --p-cores 4 --p-adapter RGYTACCTTGTTACGACTT --p-front AGRGTTYGATYMTGGCTCAG --o-trimmed-sequences ccs-data-cutadapt.qza --output-dir result
qiime deblur denoise-16S --i-demultiplexed-seqs ccs-data-cutadapt.qza --o-table deblur.table.qza --o-representative-sequences deblur.representative-sequences.qza --o-stats deblur.stat.qza --p-trim-length 10 --verbose

when i run those programm, something error information as follows:
  File "/opt/conda/envs/qiime2-2023.5/lib/python3.8/site-packages/deblur/workflow.py", line 130, in trim_seqs
    for label, seq in input_seqs:
  File "/opt/conda/envs/qiime2-2023.5/lib/python3.8/site-packages/deblur/workflow.py", line 99, in sequence_generator
    for record in skbio.read(input_fp, format=format, **kw):
  File "/opt/conda/envs/qiime2-2023.5/lib/python3.8/site-packages/skbio/io/registry.py", line 506, in <genexpr>
    return (x for x in itertools.chain([next(gen)], gen))
  File "/opt/conda/envs/qiime2-2023.5/lib/python3.8/site-packages/skbio/io/registry.py", line 531, in _read_gen
    yield from reader(file, **kwargs)
  File "/opt/conda/envs/qiime2-2023.5/lib/python3.8/site-packages/skbio/io/registry.py", line 1008, in wrapped_reader
    yield from reader_function(fhs[-1], **kwargs)
  File "/opt/conda/envs/qiime2-2023.5/lib/python3.8/site-packages/skbio/io/format/fastq.py", line 351, in _fastq_to_generator
    phred_scores, seq_header = _parse_quality_scores(fh, len(seq),
  File "/opt/conda/envs/qiime2-2023.5/lib/python3.8/site-packages/skbio/io/format/fastq.py", line 522, in _parse_quality_scores
    _decode_qual_to_phred(chunk, variant=variant,
  File "/opt/conda/envs/qiime2-2023.5/lib/python3.8/site-packages/skbio/io/format/_base.py", line 34, in _decode_qual_to_phred
    raise ValueError("Decoded Phred score is out of range [%d, %d]."

this error information is ValueError: Decoded Phred score is out of range [0, 62],but data is correct when i import fastq data

Hello @linlin-coder, can you please post this under the "Technical Support" category on the QIIME 2 forum here. The QIIME 2 dev team and other moderators there will respond. Thank you.


@sarahscott => Move to artsy authentication, and improve login error messages

[x] Rough structure
[x] Second Look
[x] Tests

I've moved our authentication networking to work via Artsy_Authentication. Which makes 3/4 apps now.
I've de-singleton'd the ARUserManager
I've improved our error messaging. The flow is different now.

We try log them in, if it succeeds, continue.
Otherwise, try ping a known artsy route for checking if artsy is up
if that passes then the error message is likely legit.
if that fails, check if apple.com is up.

if that passes then Artsy is down
if that fails then the user is offline

Previously if there were any network issues, then it is assumed that Artsy is down, which was pretty true when I wrote the app login 4 years ago, but not true anymore.

Alrighty, this is good for review :+1:

:clap: :clap: :clap: merging


Modified to support Python 3 + added timeouts

Modified the calls to can_socket_open so that the can interface name passed as a string is always converted to ascii. This ensures that the code will run fine on Python 3, where all strings are unicode by default. This code should also work fine in Python 2.
can-if.c has also been modified to add can_socket_open_timeout, allowing an arbitrary can receive timeout to be specified. The python code has also been modified to use this function.
The binascii library has been used to replace some of the manual binary-to-hex operations that were present int the python code.

Thanks!


Liquidity confirmation screens are missing the sub headers

DEV:

DESIGN:
https://www.figma.com/file/6y4nvjfeVZwzwKcoXB0neq/Simplified-UI?node-id=555%3A3264

added closing

added closing


[NEW]: Spanish Soccer President accused of sexual assault and coercion launches NFT Collection

Date
2024-1-17
Description
Luis Rubiales is notorious for kissing a Spanish soccer player on the mouth after their victory in the Women's World Cup and just launched his own NFT collection. Pretty incredible colab
Links
https://www.espn.com/soccer/story/_/id/39327314/ex-spain-fa-boss-rubiales-launches-nft-support-equality
Agreement

[X] I irrevocably agree to release my contribution under the CC-BY 3.0 License

Attribution name
No response
Personal link
No response

Thanks: https://web3isgoinggreat.com/?id=luis-rubiales-nft


Fix lockfile

Current dependencies on/for this PR:

main

PR #114   👈

This stack of pull requests is managed by Graphite.


TypeError: Cannot set property 'isLevelEnabled' of undefined

Hi There,
It seems that this repository doesn't work anymore because of the "winston" plugin which has been changed , It could be great if you could fix these issues , at least update this plugin so that the plugin will  be useful again.
Tested with latest node  10.6.0 .
Thanks in advanced .

var gearmanode2 = require('gearmanode');
//gearmanode.Client.logger.transports.console.level = 'info';

var client = gearmanode2.client({servers:[{host: '<IP_ADDRESS>', port: 4730}]});

var job = client.submitJob('reverse', 'hello world!');
job.on('workData', function(data) {
    console.log('WORK_DATA >>> ' + data);
});

job.on('complete', function() {
    console.log('RESULT >>> ' + job.response);
    client.close();
});

[winston] Attempt to write logs with no transports %j
logger.js:202
Object {level: "info", message: "GearmaNode %s, running on Node.js %s [%s %s], with…", Symbol(level): "info", Symbol(splat): Array(5)}
logger.js:202
TypeError: Cannot set property 'isLevelEnabled' of undefined
gearmanode.js:41
at Object. (c:(!) Projects2018\GearmanNode\node_modules\gearmanode\lib\gearmanode.js:41:41)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object. (c:(!) Projects2018\GearmanNode\Client.js:1:81)
at Module._compile (internal/modules/cjs/loader.js:686:14)

@DavidRadan
If you want to fix this issue you can add to your project's dependencies:
  "dependencies": {
     // ...
    "winston": "^0.7.1",
     // ...
  }

Or do a npm install --save<EMAIL_ADDRESS>since it is the last version Gearmanode had compatibility with winston. That should solve your problem as it solved mine.

Hi aledefreitas ,
Many thanks for the solution but we decided to build our own solution based on node.js .
Regards,

I have lost couple hours with this, I think a < 3.0 will be great on the dependencies

I think it would be wise to use other open source "queue" solution as this solution seems to be outdated .
Building new solutions based on this technology can cause a huge headache in the future .
Regards,
David

@DavidRadan Actually, we have used this project for three years, it is so stable that we even no need to maintain. And it is not only a kind of "queue" solution, it enables you to do every thing distributed because of Gearman's protocol.

@DavidRadan
If you want to fix this issue you can add to your project's dependencies:
  "dependencies": {
    "winston": "^0.7.1",
  }

Or do a npm install --save<EMAIL_ADDRESS>since it is the last version Gearmanode had compatibility with winston. That should solve your problem as it solved mine.

super, thanks

@DavidRadan thank you for solution to :
nooby w evaluation of gearmanode and winston that failed outta box on strange winston fails to init or construct class instance.
"0.7.1" solved it for me

Sorry your solution is not working with winston anymore with newer nodejs. Is there any development?

"winston": "^0.7.1",
Thanks!!
Succes in Node.js v18.12.1

<EMAIL_ADDRESS>is too old.....
My node server code wants to use new API on winston, but if installing that way, gearmanode gonna get error..
There is<EMAIL_ADDRESS>


Clicking path at the top of stack trace is broken

Clicking this link...

Results in...

Fixed in f9fdd26665d13340d33bdea369b81d55eb241701


Create revoke-cleaner.pl

And this can help those who don't know how to clean the index of PKI manually ;)
KR dear friend ;)

By the way, it works brilliantly! 😉
So. You can change the description to add information about revoke-cleaner.pl if you want, dear friend.
Best Regards.

Hello, thanks for the PR. I would prefer not to add any other script to the repo.

Whatever  😂
BR


Add GitHub Actions for deploys from downstream repositories

The current setup assumes that the repository will be hosted by VIP in their origin repositories which currently don't support GitHub actions. However, a lot of setups rely on self-hosted downstream repositories pushing only release artifacts to the VIP upstream.
Add sample configuration and explain the required setup.

Duplicate of #234. This is already implemented in #235.


feat(server): integration controllers

Overview
What I've done
What I haven't done
How I tested
Screenshot
Which point I want you to review particularly
Memo

Closed by #240


Customized Dashboard

Is there any way to customize the dashboard based on my requirement?

Maybe make a PR?


Error on Case-Sensitive Request Renaming

I have checked the following:

[X] I use the newest version of bruno.
[X] I've searched existing issues and found nothing related to my issue.

Describe the bug
Environment

Environment : Windows 11 Business
Bruno version : 1.30.1

Description
When attempting to rename a request in the Bruno app by changing only a letter from uppercase to lowercase (and vice-versa), I encounter an error message.
Steps to Reproduce

Open the Bruno app.
Navigate to the requests section.
Select a request and attempt to rename it by changing one letter from uppercase to lowercase (e.g., "Orders" to "orders").
Observe the error message that appears.

Additional information
The error does not affect the functionality of the app, but it can be misleading for users.

.bru file to reproduce the bug
No response
Screenshots/Live demo link

Solved on 1.34.1, my bad


⚠ St. Lawrence Global Observatory CKAN has degraded performance

In 348e7da, St. Lawrence Global Observatory CKAN (https://catalogue.ogsl.ca/en/) experienced degraded performance:

HTTP code: 200
Response time: 9025 ms

Resolved: St. Lawrence Global Observatory CKAN performance has improved in 2739128 after 11 minutes.


Correcting entry in the RELEASE.md file

Description
Docs: corrected previous release notes entry (via PR #266, related to  issue #256)
Development notes
No code changes, just amending RELEASE.md
Checklist

[X] Read the contributing guidelines
[ ] ~Opened this PR as a 'Draft Pull Request' if it is work-in-progress~
[ ] ~Updated the documentation to reflect the code changes~
[X] Added a description of this change and added my name to the list of supporting contributions in the RELEASE.md file
[ ] ~Added tests to cover my changes~

Notice

[X] I acknowledge and agree that, by checking this box and clicking "Submit Pull Request":

I submit this contribution under the Apache 2.0 license and represent that I am entitled to do so on behalf of myself, my employer, or relevant third parties, as applicable.

I certify that (a) this contribution is my original creation and / or (b) to the extent it is not my original creation, I am authorised to submit this contribution on behalf of the original creator(s) or their licensees.

I certify that the use of this contribution as authorised by the Apache 2.0 license does not violate the intellectual property rights of anyone else.

Any chance of this been merged, its pretty trivial and no code or Kedro documentation changes involved

Can you fix the conflict before we merge? :)

Can you fix the conflict before we merge? :)

I keep fixing it - they will continue to occur if not merged quickly

@mzjp2 just fixed, it's being built now

Closing / Reopening the PR to re-trigger CI.

Thanks all for merging this :)


interpreting OFF pmp entries

I'm trying to understand this line in the PMP priority and matching logic section:
" If no PMP entry matches an S-mode or U-mode access, but at least one PMP entry is implemented, the access fails."
What is the expected behavior for an S/U access if the platform has PMP support and PMP registers, but they are all set to OFF?
I'd expect that access to succeed.  If this is the case, perhaps this line could be clarified to "... at least one PMP entry is enabled ..."  or something similar.
If the access is supposed to fail, then it would be good to explicitly add a line like: "In particular, if all PMP entries are OFF, an S-mode or U-mode access fails."

It's the latter option.  I claim this follows from a literal reading of the nominal text, but I'll add a commentary note to prevent any confusion.

That would be great, thanks.


Plugin maintenance

Hi, I know you've been pretty busy and I don't blame you if plugins are the last thing on your mind. A lot of people like Orchestrion and ask questions about it, and I'd guess a number of people contact you directly about it as well.
Would you mind if I took over development of OrchestrionPlugin for the foreseeable future? I feel like it would be in everyone's best interest for the time being. No hard feelings if not.

@lmcintyre yeah, that is probably for the best at this point, since I have no idea when/if I'd have time for proper dev work on this anymore.  Ideally I'd like to keep it and continue working on it, but realistically that hasn't happened and it's been stagnating for too long.
Please keep my name somewhere in the app/credits/etc as the original creator, but beyond that go ahead with whatever you want to do with it.
Point goat over here if he's wary of letting you contribute over the plugin repo version. (Hi goat!)
(Unrelated dev note - if penumbra ever gets further along, which at least it looks like it's finally gotten some attention just recently, it should make inclusion of actual orchestrion tracks pretty simple.  The main issue in the current plugin is that orch playback goes through a separate path that uses 3d positional sound, which doesn't work if you're not in a tiny enclosed space.  But swapping the actual asset path of a bgm track to an orch track at runtime will play the orch track through the normal bgm system and seemed to work fine.. I just never finished the RE work to do that in the existing system, and penumbra was going to make it all moot anyway so I never felt like following up.  That was the one big feature I always felt was silly that it was missing... especially given the plugin name >.> )

I wouldn't even think of removing you as the creator or removing your credits. I have had a few ideas lately so I will probably try to get some stuff done soon and put out an update. Just ask me whenever you want development back and I'll head on out.
Thank you!