Add k8s resource to monitor workspace metrics

Description

Adds PodMonitor to allow prometheus to monitor the workspace metrics
This is part for https://github.com/gitpod-io/gitpod/pull/9815
No sure how to test

@iQQBot When it should be merged?

This doesn't matter much, we can always add them manually in the production environment, this PR needs to be reviewed by someone, I'm not sure if I'm doing it right @akosyakov

Hey @iQQBot @akosyakov
I tested this change by spinning up a preview environment in gitpod-io/gitpod wit the command werft run github -f -a withObservabilityBranch="pd/ws-metrics", that spins up a full preview using this PR as a reference for the observability stack 🙂
One thing that I immediately notice is that each workspace generates 296 metrics

If we approve that as it is, I'm 100% sure that it will break our Prometheus instances due to lack of resources. Since we spin up around 30k containers per day(12k regular/18k prebuilds), we'll have ~9M new timeseries per day, which is quite a lot 😬.

For reference on how much that costs in the wild, I'm using an estimation using AWS Managed Prometheus pricing calculator. This volume would cost around 17K USD per month. (It is not 100% precise because amount of labels and label values vary)

With that in mind, would it be reasonable to explore approaches to reduce that amount? Here are a few that comes to mind:

Do we need to scrape metrics from prebuilds? Could we add another label matcher for workspace_type?
Do we need all those 296 metrics? Could we work on an allowlist?

Do we need to scrape metrics from prebuilds? Could we add another label matcher for workspace_type?

We don't need to scrape metrics from the prebuild workspace

Do we need all those 296 metrics?

Good point, most of the data here is demo and we can remove it later, Currently we only care about the metrics reported by the IDE, so prebuild does not collect metrics

We could have some common prefix for allow list supervisor_*?

@ArthurSens How much did we allow to spend? Asking to know how many metrics we can have?

We could have some common prefix for allow list supervisor_*?

Yeah definitely :), could we do it gitpod_supervisor_ just to be consistent with the OpenMetrics metrics specification? (We already follow for other metrics)

Can we do allow list for gitpod_*?  then, the thing is that supervisor is aggregator, real metric can be like gitpod_jb_backend_used_memory

Can we do allow list for gitpod_*? then, the thing is that supervisor is aggregator, real metric can be like gitpod_jb_backend_used_memory

Yeah that would be perfect, let me look it up the right config

I will try

@ArthurSens In regards to costs if you will scrape not from each workspace pod but only from node how much we will safe?

Hi, @ArthurSens I already do some changes in this PR, but when I try to test, even with the clean build, it looks like not use my branch --- PodMonitor is not created...
I'm not sure what's going on, can you give me some help?
https://werft.gitpod-dev.com/job/gitpod-build-as-test-podmonitor.5/raw

Hi @ArthurSens could you please have a look again?

I tested this change by spinning up a preview environment in gitpod-io/gitpod wit the command werft run github -f -a withObservabilityBranch="pd/ws-metrics", that spins up a full preview using this PR as a reference for the observability stack 🙂

Hey 👋, I've just run the same command mentioned here and I could see the podmonitor in the preview environment 🤔
Are you sure it didn't work out for you?
From the preview, I've noticed that we managed to reduce the amount of metrics successfully!
These two metrics show the difference between metrics pre and post metric relabeling, showing that we dropped everything:

What is not clear to me is if we expected to see metrics with the gitpod_* prefix already. Were those metrics implemented already? If yes, that means that our configuration is wrong and we're removing more metrics than we'd like to 😬

Hey 👋, I've just run the same command mentioned here and I could see the podmonitor in the preview environment 🤔
Are you sure it didn't work out for you?

I made changes later and it works, before it may be invalid due to compilation failure

These two metrics show the difference between metrics pre and post metric relabeling, showing that we dropped everything:
What is not clear to me is if we expected to see metrics with the gitpod_* prefix already. Were those metrics implemented already? If yes, that means that our configuration is wrong and we're removing more metrics than we'd like to 😬

I'm not quite sure what's being expressed here, we've asked for all metrics to start with gitpod_*, and currently there are only two metrics available, which will only be reported if the Jetbrains IDE is enabled

Can be merged?

Yeah thinking again I believe it is pretty much safe to merge, it shouldn't break anything nor increase costs too much.
My only concern is that I couldn't find metrics about jetbrains during my testing, but this can be iterated further in the future. (Good chances that I did something wrong with my tests as well)


how to fix this error?

python3 main.py
File "main.py", line 50
print(colors.OKGREEN + f"[*] Starting Scan on {self.username}" + colors.ENDC)
^
SyntaxError: invalid syntax

Hi there!
Please make sure you are using a Python version that is greater than or equal to 3.6.
This is due to the use of “f-strings” in the script.
Thank you!


False positive for libinjection (941100)

Description
I am running FrankenPHP (Caddy) in Docker (compose file) with these Coraza settings. When I send a text like:

This website is clearly not a large enterprise, so my server is small. I have only 10GBs of RAM on it, and that includes some extra RAM that was bought to accommodate this table, that at the time was around 8GBs. I obviously was not checking the size regularly, but when I started getting eternal loads on the website in the beginning of November, relatively soon I deduced, that that table might have been the problem. Because nothing else made much sense.

Well, there is a possibility that it was older version of Crowdsec hanging for some reason (which I got 2 on my test environment accidentally), but since my Database library is throwing errors when there are still deadlocks after 5 times, and the hang-ups were coinciding with spikes of those errors, especially during daily backups, the size was the most obvious culprit. And even if not - it needed to be solved anyway.

I get error like
{"level":"error","ts":1735223896.7160676,"logger":"http.handlers.waf","msg":"[client \"<IP_ADDRESS>\"] Coraza: Access denied (phase 2). XSS Attack Detected via libinjection [file<EMAIL_ADDRESS>[line \"4454\"] [id \"941100\"] [rev \"\"] [msg \"XSS Attack Detected via libinjection\"] [data \"Matched Data: XSS data found within ARGS:postForm[text]:
This website is clearly not a large enterprise, so my server is small. I have only 10GBs of RAM on it, and that includes some extra RAM that\"] [severity \"critical\"] [ver \"OWASP_CRS/4.0.0-rc1\"] [maturity \"0\"] [accuracy \"0\"] [tag \"application-multi\"] [tag \"language-multi\"] [tag \"platform-multi\"] [tag \"attack-xss\"] [tag \"paranoia-level/1\"] [tag \"OWASP_CRS\"] [tag \"capec/1000/152/242\"] [hostname \"\"] [uri \"/api/talks/posts/965/edit\"] [unique_id \"eSNFFDFiGpUQjuJg\"]\n"}

Which does not even make much sense to me, to be honest, since it highlights wrong portion of text. I mean I can replace the first
 content with anything else (and it was something different originally), but then it still fails highlighting the very beginning of the HTML content.
Some more experiments helped identify that it complains specifically about
Database

And I am not sure it should. I mean, I am not sure how exactly is this a libinjection. It may be Coraza's issue, though, especially since it's picking up OWASP_CRS/4.0.0-rc1 for some reason, but my gut feeling suggests that this is still a false positive from the rule, rather than Coraza's issue, so starting here for now.
Unfortunately not able to replicate this on Sandbox even with nightly, but hopefully above is enough to reproduce this. If not, let me know what else may be required.
Confirmation
[x ] I have removed any personal data (email addresses, IP addresses,
passwords, domain names) from any logs posted.

Thanks @Simbiat. I'll have to play around with this one a bit.

Can you give me an example request? I haven't had any luck yet.

 I have only 10GBs of RAM on it, and that includes some extra RAM that was bought to accommodate this table, that at the time was around 8GBs. I obviously was not checking the size regularly, but when I started getting eternal loads on the website in the beginning of November, relatively soon I deduced, that that table might have been the problem. Because nothing else made much sense.

Well, there is a possibility that it was older version of Crowdsec hanging for some reason (which I got 2 on my test environment accidentally), but since my Database library is throwing errors when there are still deadlocks after 5 times, and the hang-ups were coinciding with spikes of those errors, especially during daily backups, the size was the most obvious culprit. And even if not - it needed to be solved anyway.
\r\n------WebKitFormBoundaryfBlChWkaqFFYLPSA--\r\n' \
  --insecure

I haven't had any luck recreating the issue, neither with main nor with v4.0.0-rc1. What you could try is to add the capture action to 941100 and then log TX.0. According to the documentation, that should give you something. Maybe more helpful could be to crank up debug logging with SecDebugLogLevel and look at the output  for that rule. Ideally, you would see the libinjection shortcode for the found match, then we could use that to figure out what it found.

log.zip
This is what I get. I specifically started it the server from scratch, and then ran the POST just once. I get it both on test and PROD environments.

I've checked the input with libinjection directly and it doesn't produce a match. At the moment, it looks like this might be a Coraza issue. @M4tteoP, could you take a look?

I ran your example request against v4.0.0-rc2, which contains the FP reported by you in #3964. Still no luck.

I forced to use Caddy's module from @main which forced to use latest ruleset (and probably not only) - issue still persists.

@M4tteoP, @jptosso, @jcchavezs?

Yes! Sorry for the delay, I will take a look by the end of the day

Here are my findings so far.
I tried to reduce as much as possible the payload and write a reproducer that calls directly the go libinjection library:
package main

import (
	"fmt"

	"github.com/corazawaf/libinjection-go"
)

func main() {
	payloads := []string{
		`=<a href="data">`,         // Matched also by ModSec v2
		`=href=data`,               // Matched also by ModSec v2
		`=<a href="https://data">`, // NOT Matched by ModSec v2
		`<a href="https://github.com/Simbiat/database">`, // NOT Matched by ModSec v2
	}
	for _, payload := range payloads {
		fmt.Printf("testing %q, result: %v\n", payload, libinjection.IsXSS(payload))
	}
}

Results:
testing "=", result: true
testing "= href=data", result: true
testing "=", result: true
testing "", result: true

All these payloads are matched by go-libinjection (and consequently by default Coraza which comes with it).
Some of them, are also matched by Modsec (tested against apache sandbx). For example =:
▶ curl -H "x-backend: apache" -H 'x-format-output: txt-matched-rules-extended' -H "x-crs-paranoia-level:1" 'sandbox.coreruleset.org/' -H "Content-Type:application/x-www-form-urlencoded" --data '='
This payload has been tested against the OWASP ModSecurity Core Rule Set
web application firewall. The test was executed using the apache engine and CRS version nightly.

The payload is being detected by triggering the following rules:

941100 PL1 XSS Attack Detected via libinjection
949110 PL1 Inbound Anomaly Score Exceeded (Total Score: 5)
980170 PL1 Anomaly Scores: (Inbound Scores: blocking=5, detection=5, per_pl=5-0-0-0, threshold=5) - (Outbound Scores: blocking=0, detection=0, per_pl=0-0-0-0, threshold=4) - (SQLI=0, XSS=5, RFI=0, LFI=0, RCE=0, PHPI=0, HTTP=0, SESS=0, COMBINED_SCORE=5)

CRS therefore detects this payload starting with paranoia level 1.

The match starts to not happen anymore against modsec when the string data is anticipated by something, in this case, https:// .
▶ curl -H "x-backend: apache" -H 'x-format-output: txt-matched-rules-extended' -H "x-crs-paranoia-level:1" 'sandbox.coreruleset.org/' -H "Content-Type:application/x-www-form-urlencoded" --data '='
This payload has been tested against the OWASP ModSecurity Core Rule Set
web application firewall. The test was executed using the apache engine and CRS version nightly.

No rules matched.

I believe that this is a divergent behavior between libinjection and the golang ported version libinjection-go. Indeed, I'm not able to reproduce this by running Coraza with https://github.com/corazawaf/coraza-wasilibs which overrides the XSS operator using the C library

I guess I need to raise a bug in https://github.com/corazawaf/coraza-caddy, correct?

It is not a Caddy connector specific issue, but rather a libinjection-go one, so it would be great to have an issue raised at https://github.com/corazawaf/libinjection-go, and eventually at main Coraza repo. Thanks for sharing this issue!

Done https://github.com/corazawaf/libinjection-go/issues/46
Should I create an issue in corazawaf/coraza and link it to libinjection-go one, and then another one in corazawaf/coraza-caddy and link it to corazawaf/coraza or is that excessive? 😅

This will be correctly be the whole fixing path 😅 But I would stick with just an issue in corazawaf/coraza. If my investigation is correct, all the connectors using the default libinjection-go are affected. Thanks again!

Thanks @M4tteoP! I'll close this issue.


Filtered builds prev/next page links point to unfiltered builds

668214cd7255a0e6c14b92ca4f9d6fd2a1a1937c enables us to filter the build list view by passing URL query like ?status=error&repo=Cumulus
When the results get split into pages, the link buttons to previous and next page set the page params (e.g. ?page=2) but do not preserve the other params.

Entering URL as e.g. status=error&repo=Cumulus&page=2 works as expected. Only issue is setting the prev/next button links.


Scrollbar padding/margin on right side of panes

fixes https://github.com/EventBooking/VenueOps.Sales/issues/32


Remove annoying getters & setters

The getters and setters we currently use in the Ecosystem are only there because of the ⚥Sheep type which should demonstrate the forwarding of fields. We could get rid of all of them by overloading getproperty (and setproperty!) for ⚥Sheep instead:
function Base.getproperty(s::⚥Sheep, x::Symbol)
    if x == :sex || x == :sheep
        getfield(s,x)
    else
        getfield(s.sheep,x)
    end
end

closed in favour of #61


Support for ChatGLM3 plz

Project Homepage: https://github.com/THUDM/ChatGLM3
ChatGLM3 has become the best Chinese model among models with parameters less than 10b.
Please add support for ChatGLM3, thank you.

@Pevernow  thanks for the suggestion. We will add into the list of models that were requested and work with product team to prioritize it correspondingly.
June


Python list negative indexing not working

See this thread:
This doesn't work:
self.summon("archer")
decoy = self.built[-1]
self.say(decoy)

But this does:
self.summon("archer")
indices = [0]
decoy = self.built[indices[-1]]
self.say(decoy)

Perhaps indices has the right Python runtime stuff added to it and self.built doesn't?

Works now, maybe Esper did it!


Update readme template's badge too

This is a follow up of https://github.com/ruby/debug/pull/52.

Thanks.


Made Hulu clone

@Rayman-Sodhi pls accept my pr

Good Job!

@Rayman-Sodhi this is for the SWOC right ?

yes

@Rayman-Sodhi how do we get the points in the google sheet of SWOC that we have contributed in it ??

we update  it  in sheet.I have update ur points


Machines that would effect time and weather break in rftools dimens.

So the server im playing on has everyone in there own empty void world so they can be force unloaded of they cause lag. Anway using draconic evos celestial manipulartor to change time or weather results in the time snaping back to where it was same with weather. Thinking this was an issue with draconic evo i tried using forestry to stop rain and that didnt work either.  I also tried evilcrafts weather manipulator and it also has no effect. The dimention is a normal dimention. In 1.12 void terrain normal weather and daylight cycles.

Simular to #104  but also with weather

RFTools Dimensions can use their own weather plus time control (when they differ from the overworld). Other machines cannot affect that.


Add Railjet::EventBus

Take a look at Issue #13

Hey @zlw I was going to ask you how is it going on that area?
I was "down" (lumbago :cry) for some weeks and now I am back. I'll have a look to your code this week;) Thanks for you patience

Closing because EventBus was extracted to a separate gem https://github.com/nedap/railjet-bus


Consistent interop cmdline args

Go now supports --use_test_ca=true cmdline (https://github.com/grpc/grpc-go/pull/406) argument, so all the interop tests can be called with same cmdline args now.

LGTM


Allow decompress processor to automatically detect compression type

There are cases where the compression of input data is unknown (including possibly not compressed). One use case is user uploaded binary data where the underlying source can have various compression types.
The decompress processor could have an option to automatically detect and decompress the input. Either a new compression algorithm type, a new option, or the default behavior if no algorithm is given.

I noticed that DetectContentType might be able to help with this.

Another use case I though of (which I am also dealing with) is content servers that, are, err....let's just say special. I have cases with (A) have no Content-Encoding header, no file extension, and one which has a .gz extension but is actually serving bzip files!


[Windows] Update Start.ps1 download link in doc

Replace the download link of Start.ps1 with release asset link.
Signed-off-by: Rui Cao<EMAIL_ADDRESS>

/skip-all


Improving docs for bundling props

My second Stack accepts following args
constructor(scope: sst.App, id: string, props?: sst.StackProps)
But seems like sst.StackProps does not accept api prop, it throws a TS error
Argument of type '{ api: sst.Api; }' is not assignable to parameter of type 'StackProps'.
Object literal may only specify known properties, and 'api' does not exist in type 'StackProps'.ts(2345)

@pabacham hey I am getting this too, how did you solve it?

Note that you don't have to pass it through StackProps. You can pass it directly to the constructor. Here's an example in TypeScript - https://docs.serverless-stack.com/advanced/cross-stack-references

@fwang Something like this
interface StorageStackProps extends sst.StackProps {
  table: sst.Table;
}

Yup, right on!


Doc addition to tf.gather describing validate_indices option behavior

See Issue #3638 . This helps people debugging their code, as otherwise they may assume tf.gather throws an error when invalid indices are present (it currently does so only when executed on CPU).

Can one of the admins verify this patch?

Jenkins, test this please.

@Fenugreek Thank you for the fix!


feat: dataset update accepts binary value

Codecov Report
Attention: Patch coverage is 0% with 23 lines in your changes missing coverage. Please review.

Project coverage is 80.03%. Comparing base (2502cdb) to head (296cd8f).

Files
Patch %
Lines

rust/lance/src/io/exec/planner.rs
0.00%
23 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2579      +/-   ##
==========================================
- Coverage   80.10%   80.03%   -0.07%
==========================================
  Files         211      211
  Lines       61038    61060      +22
  Branches    61038    61060      +22
==========================================
- Hits        48894    48870      -24
- Misses       9219     9244      +25
- Partials     2925     2946      +21

Flag
Coverage Δ

unittests
80.03% <0.00%> (-0.07%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[Bug Report]: output.library.type = 'module' not outputting ESM correctly

System Info
System:
OS: Linux 5.10 Ubuntu 20.04 LTS (Focal Fossa)
CPU: (12) x64 Intel(R) Core(TM) i7-10810U CPU @ 1.10GHz
Memory: 1.63 GB / 15.51 GB
Container: Yes
Shell: 5.0.17 - /bin/bash
Binaries:
Node: 16.13.0 - ~/.nvm/versions/node/v16.13.0/bin/node
Yarn: 1.22.15 - ~/.nvm/versions/node/v16.13.0/bin/yarn
npm: 8.1.0 - ~/.nvm/versions/node/v16.13.0/bin/npm
npmPackages:
@rspack/cli: 0.1.1 => 0.1.1
Details
The output.library.target = 'module' does not output ESM modules, support for this is mentioned in the documentation: https://www.rspack.dev/config/output.html#outputlibrarytype
In Webpack this worked when an experiment was enabled: https://webpack.js.org/configuration/output/#module-definition-systems
# ./rspack.config.js
const path = require('path');

module.exports = {
  entry: {
    add: './src/add.js',
  },
  target: 'es2020',
  output: {
    filename: '[name].bundle.mjs',
    path: path.resolve(__dirname, 'dist'),
    library: {
      type: 'module',
    },
  },
};

# ./src/add.js
export const add = (a, b) => a + b

This gives output of
# ./dist/add.bundle.mjs
!function(){var e={380:function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"add",{enumerable:!0,get:function(){return n}});let n=(e,r)=>e+r}},r={};!function t(n){var o=r[n];if(void 0!==o)return o.exports;var u=r[n]={exports:{}};return e[n](u,u.exports,t),u.exports}("380")}();
//# sourceMappingURL=add.bundle.mjs.map

I would expect it to output something along the lines of the original source using export
# expected
const add = (a, b) => a + b

export { add }

Reproduce link
https://github.com/thebreiflabb/rspack-es-module-error-repro
Reproduce Steps
pnpm install
pnpm build
pnpm test

The test fails because the outputted dist/add.bundle.mjs does not export { add }

sorry we are not supportting esm output yet

When is esm output supported? We need esm and system. What can be done to support this?

This will be easier to land after https://github.com/webpack/webpack/issues/17121 and by extension https://github.com/webpack/webpack/issues/2933 lands in webpack.

esm output is supported, please check it in @0.1.19 version

Awesome, it works with the new version when enabling experiments.outputModule = true, thank you!


[Help]: RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR

Problem Overview
Hello, I changed the Amohion code, added features, and added the corresponding encoder. The input feature dimension is 1583, and the output feature dimension is 384. The encoder is as follows:
class EmotionEncoder(nn.Module):
    def __init__(self, cfg):
        super(EmotionEncoder, self).__init__()
        self.input_dim = cfg.input_emotion_feature_dim  # 1583
        self.output_dim = cfg.output_emotion_feature_dim  # 384
        self.embedding = nn.Embedding(self.input_dim, self.output_dim, padding_idx=None,)

    def forward(self, x)
        x = x.to(torch.long)
        embedded = self.embedding(x)
        print('embedded.shape:',embedded.shape) #torch.Size([64, 136, 384])
        return embedded

Then the error is as follows. I checked and it seems that there is a problem with embedded id.

Traceback (most recent call last):
  File "/home/sxs/workspace/code/Amphion/bins/svc/train.py", line 120, in <module>
    main()
  File "/home/sxs/workspace/code/Amphion/bins/svc/train.py", line 116, in main
    trainer.train_loop()
  File "/home/sxs/workspace/code/Amphion/models/base/new_trainer.py", line 257, in train_loop
    train_loss = self._train_epoch()
  File "/home/sxs/workspace/code/Amphion/models/base/new_trainer.py", line 373, in _train_epoch
    loss = self._train_step(batch)
  File "/home/sxs/workspace/code/Amphion/models/base/new_trainer.py", line 429, in _train_step
    return self._forward_step(batch)
  File "/home/sxs/workspace/code/Amphion/models/svc/diffusion/diffusion_trainer.py", line 132, in _forward_step
    y_pred = self.acoustic_mapper(noisy_mel, timesteps, conditioner)
  File "/home/sxs/anaconda3/envs/amphion/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/sxs/workspace/code/Amphion/models/svc/diffusion/diffusion_wrapper.py", line 144, in forward
    h = self.neural_network(x, t, c)
  File "/home/sxs/anaconda3/envs/amphion/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/sxs/workspace/code/Amphion/modules/diffusion/bidilconv/bidilated_conv.py", line 107, in forward
    h = self.input(x)
  File "/home/sxs/anaconda3/envs/amphion/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/sxs/anaconda3/envs/amphion/lib/python3.9/site-packages/torch/nn/modules/container.py", line 217, in forward
    input = module(input)
  File "/home/sxs/anaconda3/envs/amphion/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/sxs/anaconda3/envs/amphion/lib/python3.9/site-packages/torch/nn/modules/conv.py", line 313, in forward
    return self._conv_forward(input, self.weight, self.bias)
  File "/home/sxs/anaconda3/envs/amphion/lib/python3.9/site-packages/torch/nn/modules/conv.py", line 309, in _conv_forward
    return F.conv1d(input, weight, bias, self.stride,
RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR

Screenshots
Amphion/modules/diffusion/bidilconv/bidilated_conv.py：

Hi @mysxs, thanks for considering Amphion as your codebase!
I also met the RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR error. However, usually the error is raised by a wrong input value for Embedding layer or CrossEntroyLoss (see here). I recommend you check the range of x of your EmotionEncoder, to see whether there is some vocab ids which not ranges from (0, 1582).
By the way, for nn.Embedding, the first parameter should be the number of vocabulary instead of the input dim (now it is 1583 in your code)?
The best way to debug for cuDNN error is to use CPU to run your code again. This is because on GPU, the traceback report is not reliable and the bug position can not be accurately found.

Hi @mysxs, thanks for considering Amphion as your codebase!
I also met the RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR error. However, usually the error is raised by a wrong input value for Embedding layer or CrossEntroyLoss (see here). I recommend you check the range of x of your EmotionEncoder, to see whether there is some vocab ids which not ranges from (0, 1582).
By the way, for nn.Embedding, the first parameter should be the number of vocabulary instead of the input dim (now it is 1583 in your code)?
The best way to debug for cuDNN error is to use CPU to run your code again. This is because on GPU, the traceback report is not reliable and the bug position can not be accurately found.

谢谢同学，问题解决了，你们真肝，好及时回复问题，辛苦了！


udpate install doc to 1.6, test=develop

udpate install doc to 1.6

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Update to SDK v5.0.1

Yup, tested it on a physical device and a couple different SDK levels in the emulator. I'll go ahead and get it merged. Thanks!


Update sbt-typelevel, ... to 0.5.4

About this PR
📦 Updates

org.typelevel:sbt-typelevel
org.typelevel:sbt-typelevel-github-actions
org.typelevel:sbt-typelevel-site

from 0.4.22 to 0.5.4
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.typelevel" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.typelevel" }
}]

labels: sbt-plugin-update, early-semver-major, semver-spec-minor, version-scheme:early-semver, commit-count:n:2

Superseded by #194.


Large where-query right-hand operand (for Google access token)

With the latest Objection.js version, I'm using await M.query().where('googleTokenId', googleToken) and it returns [], however my database does have a data row whose googleTokenId is equals googleToken (created previously by Objection). I've compared googleToken as of row insertion and as of row search and they yield the same value (a long encoded string representing a Google access token).
So is there some limitation on what can be compared, maybe due to Knex?

There's no limitation. Could you show me how to reproduce this? What's the data type of the googleTokenId in the database? What's the type of the googleToken variable in JavaScript? How large is the token?

@koskimas Thanks for the reply. The database column googleTokenId is varchar(5000) and the actual Google token is 1226 characters long. Objection is 2.2.17.

What database and node driver are you using?

I'm using PostgreSQL 13.4 and NodeJS driver<EMAIL_ADDRESS>

Here's a test case that runs just fine on all databases. I'm not able to reproduce this
const crypto = require('crypto');
const { expect } = require('chai');
const { Model } = require('../../../');

module.exports = (session) => {
  describe(`long string column`, () => {
    let knex = session.knex;
    let Person;
    let longName = crypto.randomBytes(1000).toString('hex');

    before(() => {
      return knex.schema.dropTableIfExists('Person').createTable('Person', (table) => {
        table.increments('id').primary();
        table.string('name', 5000);
      });
    });

    after(() => {
      return knex.schema.dropTableIfExists('Person');
    });

    before(() => {
      Person = class Person extends Model {
        static get tableName() {
          return 'Person';
        }
      };

      Person.knex(knex);
    });

    before(() => {
      return Person.query().insert({
        id: 1,
        name: longName,
      });
    });

    it('should be able to filter using a very long string value', async () => {
      const person = await Person.query().findOne('name', longName);
      expect(person.name).to.equal(longName);
    });
  });
};


Date range picker witout dialog

Could you move your awesome daterangepicker component to separately component please.
I want to use it without v-dialog

It was like this until version 2.6.2, so I'm using that version in order to use it without dialog. The dialog should be optional in my opinion.

I agree it should be separate but I also considered how most people wanted to use it. While making v3, I first addressed the most common use case.
I am now working on refactoring things into separate components. Will keep you updated.


Async/await with mysql2 not disposing of db connection after querying

Environment
Knex version: 2.2.0
Database + version: Ver 8.0.30-0ubuntu<IP_ADDRESS> for Linux on x86_64 ((Ubuntu))
OS: Ubuntu 20.04
Node verson: 18.7.0
Bug
Explain what kind of behaviour you are getting and how you think it should do
If I use promise version (either async/await or .then()) of knex query, the node script hangs and does not dispose of mysql connection resulting in max_connection number reaching the limit in mysql if there are many concurrent user running and rerunning the script. Checking show processlist; in mysql show all the connections made by the script in sleep state while the script hangs. After I kill the script, the connection is closed, as well.
This is a problem in my Nextjs app which queries the database and also does not close connections after. If i stop the app and run npm start again, the open connections to the db are closed.
I would expect the connections to clear after query is made so that max connections limit number in mysql is not reached.
Error message
There is no error message, my script just hangs. In Nextjs app, the error appears only after max_connections limit is reached and API returns status 500.
This is a simplified example, but I have the same problem on Nextjs API.
const knex = require('knex');

const db = knex({
  client: 'mysql2',
  connection: {
    host: 'localhost',
    user: 'user',
    password: 'password',
    database: 'database',
  },
});

(async () => {
  try {
    await db.from('table').select('*');
  } catch (e) {
    console.log(e);
  } finally {
    console.log('done');
  }
})();

@azivkovi what was your solution here or was it user error? I am interested to know as I think I might be seeing similar behavior.

@why-el knex.destroy(); after script is done executing and you don't need the db connection anymore. In my example above, you would put it in the finally block.


Update health-checks.md

Looks like the formatting for ```shell isn't outputting correctly on the page.

Page preview:
https://deploy-preview-25088--kubernetes-io-master-staging.netlify.app/docs/reference/using-api/health-checks/

/approve

Thanks @jjasghar .
/lgtm


Type mappings

Codecov Report

Merging #28 (35c9756) into main (f8790fd) will decrease coverage by 3.10%.
The diff coverage is 77.77%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main      #28      +/-   ##
==========================================
- Coverage   90.95%   87.86%   -3.10%
==========================================
  Files           8        9       +1
  Lines         553      577      +24
==========================================
+ Hits          503      507       +4
- Misses         34       53      +19
- Partials       16       17       +1

Flag
Coverage Δ

tests
87.86% <77.77%> (-3.10%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files
Coverage Δ

headers.go
100.00% <100.00%> (ø)

internal/handlers/handlers.go
92.85% <ø> (-0.17%)
:arrow_down:

publish.go
83.33% <100.00%> (+3.33%)
:arrow_up:

connection.go
88.67% <15.00%> (-2.98%)
:arrow_down:

connection_options.go
84.11% <84.11%> (ø)


Regularization

Hi!
I was wondering if there is any way to specify a regularization term to the solver.
Thanks in advance.

Not an expert and ask just for curiosity, I usually add up the regularization to the matrix: A = vcat(A, α * I(size(A,2))) , is this a bad idea?

That's an excellent way to add Tikhonov regularization.
For 1-norm (ℓ₁) regularization, it becomes the LASSO problem that requires different algorithms.
My favorite is POGM with restart:
https://github.com/JeffFessler/MIRT.jl/blob/master/src/algorithm/general/pogm_restart.jl
http://doi.org/10.1007/s10957-018-1287-4
@MatFi I think we can close this issue because you have addressed it.
@boborbt Please reopen if these answers did not address the kind of regularization you had in mind.


Hey, looking for a complete example.

Hey, I was trying to use your class together with https://github.com/vitalyvb/usbd-dfu-example. To make a complete example of bootloader + app&runtime class.
Do you have any example I could look at?

Hi, I've just added an example in https://github.com/jedrzejboczar/usbd-dfu-rt/commit/6139d2f6f0894cf2a31ec275fb38e72748c8f831. This is specifically for STM32F072 as this one is convenient enough to have a builtin DFU-capable bootloader. I've tested it on some hardware and everything seems to work fine, but I haven't tested it extensively so I wouldn't be surprised if there were some minor bugs. Hopefully the example is readable, but if something is missing feel free to ask.

Thanks a lot.
I am trying to prepare some examples of your runtime and the other dfu bootloader to be shared in the fwupd.org project, so peripheral vendors working with rust would have out of the box examples to work with fwupd.
I have your runtime already working mostly with fwupd.
I needed to circumvent part of fwupd because your runtime does not implement GETSTATUS, but I will try to send you a PR with the GETSTATUS support.

👏 for the example!! :)

Fixed in https://github.com/jedrzejboczar/usbd-dfu-rt/commit/6139d2f6f0894cf2a31ec275fb38e72748c8f831


feat(github-actions-plugin): default links to GitHub host in app config if defined

Signed-off-by: Phil Kuang<EMAIL_ADDRESS>Closes #4790
Hey, I just made a Pull Request!

:heavy_check_mark: Checklist

[ ] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)

Tugboat has finished building the preview for this pull request!
Link:

https://pr4819-n8jqyshahok30h1xorfvbjqbebvxrz06.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/6041380cfcb22d0a376877d0

Tugboat has finished building the preview for this pull request!
Link:

https://pr4819-n8jqyshahok30h1xorfvbjqbebvxrz06.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/6041380cfcb22d0a376877d0

Tugboat has finished building the preview for this pull request!
Link:

https://pr4819-n8jqyshahok30h1xorfvbjqbebvxrz06.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/6041380cfcb22d0a376877d0


Enhanced analyzer for sd card protocol replies and application commands.

With this enhancement the protocol analyzer successfully decodes sd card replies and is aware of sd card application commands.

Can you take a look at this PR again and fix the indentation/code style? Indentation in the original code base is indentation with tabs, but any new code in your patch uses spaces instead.


Be more robust parsing CPU list from engine API

Duplicate of https://github.com/oVirt/ovirt-ansible-hosted-engine-setup/pull/267


Returning Boolean values from functions

Challenge [Returning Boolean Values from Functions]
solutions:
My code:

function isLess(a, b) {
  // Fix this code
  return a < b;
}

// Change these values to test
isLess(10, 15);

@sureshp1994 I can pass the challenge with your code. Can you reset and retry? And also clear your cookies if that doesn't work.


The default export of a module has or is using the dedicated name "PropsType".

Vue version
latest
Link to minimal reproduction

Steps to reproduce
interface PropsType {
  last?: boolean;
 }

 const props = defineProps<PropsType>();

What is expected?
success
What is actually happening?
interface PropsType {
  last?: boolean;
 }

 const props = defineProps<PropsType>();

System Info
No response
Any additional comments?
No response

This error probably not related to vue
Closed due to no reproduction.


RandomSubset overload without subset size parameter

I saw #409 by @MkazemAkhgary and looking into RandomSubset implementation I noted that case user wants to shuffle a sequence entirely, one can use RandomSubset operator, but it forces user evaluate a lazy sequence twice, for example.
// lazy sequence, that may be expensive
var source = Enumerable.Range(1, 10);

// first iteration to get the length of sequence
var size = source.Count();

// second iteration (there is a ToArray() inside RandomSubset to avoid change original source)
var shuffle = source.RandomSubset(size);

I propose the new Shuffle operator:
IEnumerable<T> Shuffle<T>(IEnumerable<T> sequence)

This have the following advantages:

semantically correct (user wants shuffle sequence entirely, not a subset)
avoid unnecessary computations (iterates source once)
less code for user write

@atifaziz?

I think this is useful. About the naming, what do other languages/toolkits/libraries have for equivalent functionality?

@leandromoh Makes sense. If there was a Shuffle in MoreLINQ then RandomSubset would have been called PartialShuffle but it's a bit late in the day for that. I think Shuffle is a good name because a RandomSubset overload without the subset size parameter will look weird since there won't be any sub-setting. Question then is if we want to have RandomSubset as an alias for PartialShuffle or leave it as-is. I'd rather mark the former obsolete if it's going to be an alias but not drop it for 3.0. This can be discussed separately. Meanwhile, Shuffle is a good compromise.

what do other languages/toolkits/libraries have for equivalent functionality

I think shuffle is a safe bet.

Good. I will submit a PR.


net/haproxy: HAProxy config peers fails to declare the local peer

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

[X] I have read the contributing guide lines at https://github.com/opnsense/plugins/blob/master/CONTRIBUTING.md
[X] I have searched the existing issues, open and closed, and I'm convinced that mine is new.
[X] The title contains the plugin to which this issue belongs

Describe the bug
Service: HAProxy:Settings:Peers
There is the concept of:

Peer 1 (this host)
Peer 2 (remote host)

This is used to propagate entries of any data-types in stick-tables between several HAProxy instances over TCP connections.
The issue is, on HA sync from primary/master to the backup firewall, the Peer 1 and Peer 2 data is synced exactly as it is entered in the primary firewall resulting in an unworkable configuration on the backup firewall.
To Reproduce
Create a HAProxy peer setup with a pair of HA OPNsense firewalls, sync the primary to the backup with the HAProxy settings set to sync via HA and see that exactly the same Peer 1 and Peer 2 is created in the backup firewall.
Expected behavior
Either:
Do NOT sync the peer data at all (less desireable)

or, better yet
During the HA sync script, transpose the Peer 1 and Peer 2 data, that is:
Write the Primary firewall Peer 1 data as entered into the HA backup Peer 2
Write the Primary firewall Peer 2 data as entered into the HA backup Peer 1

Screenshots

Relevant log files
none
Environment
OPNsense 22.7.2 (amd64, OpenSSL).
Intel(R) Atom(TM) CPU C2758 @ 2.40GHz (8 cores, 8 threads)

resulting in an unworkable configuration on the backup firewall

Could you please elaborate more on this? How exactly is this an unworkable configuration? Do you get any error messages or unexpected behaviour?
AFAICT, this is exactly how peers should be configured:
http://cbonte.github.io/haproxy-dconv/2.4/configuration.html#3.5

Thanks for your answer. I'll try and elaborate more.
The issue is when you are running a HA pair of OPNsense firewalls setup as a primary/master and backup/slave.
Consider this simple example, I'm omitting a lot of detail that is not relevant for what I'm trying to explain, so no mention WAN interfaces, etc, just LAN and HAProxy.
Primary/master firewall LAN: <IP_ADDRESS> and firewall name: fw1.localdomain
Backup/slave firewall LAN: <IP_ADDRESS> and firewall name: fw2.localdomain
High Availability Settings
Inside the primary firewall, you setup HA sync and all that good stuff for a pair of HA firewalls, I'm not detailing how you do any of that, other than to say under:
System: High Availability: Settings
HAProxy Load Balancer is ticked to sync the HAProxy settings from the primary/master firewall to the backup/slave firewall
HAProxy Settings
Inside the primary firewall, you setup HAProxy peers.
Services: HAProxy: Settings
Now, you setup Peer 1 (this host)
Peer name (FQDN): fw1.localdomain
Listen address (IP): <IP_ADDRESS>
TCP port: 1024
Now, you setup Peer 2 (remote host)
Peer name (FQDN): fw2.localdomain
Listen address (IP): <IP_ADDRESS>
TCP port: 1024
Here comes the issue.
You then do System: High Availability: Settings Synchronize config to backup.
If you then logon to the backup firewall <IP_ADDRESS>, HAProxy has set:
https://<IP_ADDRESS>/ui/haproxy#general-peers
Peer 1 (this host)
Peer name (FQDN): fw1.localdomain
Listen address (IP): <IP_ADDRESS>
TCP port: 1024
Peer 2 (remote host)
Peer name (FQDN): fw2.localdomain
Listen address (IP): <IP_ADDRESS>
TCP port: 1024
This is the issue. The backup/slave firewall should actually be:
Peer 1 (this host)
Peer name (FQDN): fw2.localdomain
Listen address (IP): <IP_ADDRESS>
TCP port: 1024
Peer 2 (remote host)
Peer name (FQDN): fw1.localdomain
Listen address (IP): <IP_ADDRESS>
TCP port: 1024

I don't manually set the HAProxy backup firewall as shown above, then, the backup firewall HAproxy doesn't seem to listen on <IP_ADDRESS> TCP port 1024, I cannot see any incoming TCP states from <IP_ADDRESS> to the backup firewall <IP_ADDRESS> TCP dst 1024.

More work after reading and re-reading http://cbonte.github.io/haproxy-dconv/2.4/configuration.html#3.5
Primary firewall HAProxy Config Export:
peers opnsense-haproxy-peers
peer fw1.localdomain <IP_ADDRESS>:1024
peer fw2.localdomain <IP_ADDRESS>:1024
But, on reading HAProxy documentation, don't we need to:
"It is strongly recommended to have the exact same peers declaration on all
peers and to only rely on the "-L" command line argument or the "localpeer"
global configuration setting to change the local peer name. This makes it
easier to maintain coherent configuration files across all peers.:
So, shouldn't it look like this?
Primary fw:
peers opnsense-haproxy-peers
peer fw1.localdomain <IP_ADDRESS>:1024 -L
peer fw2.localdomain <IP_ADDRESS>:1024
Backup fw:
peers opnsense-haproxy-peers
peer fw1.localdomain <IP_ADDRESS>:1024
peer fw2.localdomain <IP_ADDRESS>:1024 -L
or, using the "localpeer" global configuration setting http://cbonte.github.io/haproxy-dconv/2.4/configuration.html#localpeer
Primary fw:
Add a global declare option, pulling the system name of the firewall:
global
localpeer fw1.localdomain
peers opnsense-haproxy-peers
peer fw1.localdomain <IP_ADDRESS>:1024
peer fw2.localdomain <IP_ADDRESS>:1024
Backup fw:
global
localpeer fw2.localdomain
peers opnsense-haproxy-peers
peer fw1.localdomain <IP_ADDRESS>:1024
peer fw2.localdomain <IP_ADDRESS>:1024

Tried passing in the Services: HAProxy: Settings, Global Parameters, Custom options:
localpeer "$HOST"
This would be perfect, as this will pull the environment variable of HOST which would then be able to be sync'd to the backup firewall. However, the GUI didn't allow this:
[NOTICE] (37245) : haproxy version is 2.4.18-1d80f18
[NOTICE] (37245) : path to executable is /usr/local/sbin/haproxy
[ALERT] (37245) : parsing [/usr/local/etc/haproxy.conf.staging:26] : 'localpeer' expects a name as an argument.
[ALERT] (37245) : Error(s) found in configuration file : /usr/local/etc/haproxy.conf.staging
[ALERT] (37245) : Fatal errors found in configuration.
According the HAProxy documentation, passing an environment variable in the global config section is valid.
http://cbonte.github.io/haproxy-dconv/2.4/configuration.html#2.3

Any update please?
I don't think this is a support issue, but a code issue.

I'm just volunteering here, so I ask to you to be patient.

Of course. No problem.

HAPROXY needs to declare the local peer.
Primary fw:
Add a global declare option, pulling the system name of the firewall:
global
localpeer "$HOST"    (where $HOST is fw1.localdomain which in my example is the system name of the firewall)
peers opnsense-haproxy-peers
peer fw1.localdomain <IP_ADDRESS>:1024
peer fw2.localdomain <IP_ADDRESS>:1024
Backup fw:
global
localpeer "$HOST"    (where $HOST is fw2.localdomain which in my example is the system name of the firewall)
peers opnsense-haproxy-peers
peer fw1.localdomain <IP_ADDRESS>:1024
peer fw2.localdomain <IP_ADDRESS>:1024

Any chance this issue can be looked at?
This is not a support issue, but, a coding issue for the plugin.

Thanks for providing detailed information and example configuration.
This should be fixed in https://github.com/opnsense/plugins/pull/3156/commits/247ce7f3b49da722923bb6a4ebaf6e2297778f86. The name of the peer is now automatically compared to the system hostname and if it matches, then the peer is configured as local peer.
You may try to test it:
opnsense-patch -c plugins 247ce7f3

(The patch may fail to apply, because there are other changes in this branch.)


[SPARK-45394][PYTHON][CONNECT] Add retries for artifact API. Improve error handling (follow-up to [SPARK-45093]).

What changes were proposed in this pull request?
Add retries to add_artifact api in client
Slightly change control flow within artifact.py so that client-side errors (e.g. FileNotFound) are properly thrown. (Previously we attempted to add logs in https://github.com/apache/spark/pull/42949, but that was imperfect solution, this should be much better).
Why are the changes needed?
Improves user experience
Does this PR introduce any user-facing change?
Improve error handling, adds retries.
How was this patch tested?
Added test coverage for add_artifact when there is no artifact.
Was this patch authored or co-authored using generative AI tooling?
NO

cc @HyukjinKwon, @grundprinzip, PTAL
cc @allisonwang-db  ---  thank you for leaving feedback under original Pr: https://github.com/apache/spark/pull/42949. I think this is much better version than it was back then.

Merged to master.


fix(ElementList): Provide a better error message

WARNING: This is against branch 1
fix(ElementList): Provide a better error message when a class doesn't exist that's defined against an ElementList or ElementList subclass.

Seems reasonable. It might be worth adding a unit test for it?

I think throwing an exception that didn't used to be there would be a breaking change, and we've already moved to a new major version of this module for SS4 support. To avoid this you could add a config static like check_valid_element_types which a dev could enable to then add this functionality. What do you think?

If it's still convention to do the following for bugs that shouldn't halt execution, perhaps the following?
user_error($messageHere, E_USER_WARNING)

Yeah that might be OK. What do you think @pitchandtone?

Sounds fine to me, there's enough precedence to use user_error elsewhere.


macOS: exec application and choose application window when using media controls

Describe the bug
There is an exec application that is open every time I open spotify_player on macOS.

When I cmd+tab into that app I get the following message in the terminal:

And when I use the media controls from my keyboard this window opens, the control works but I always have to close this annoying window:

Is this expected?
To Reproduce

Install spotify_player using home brew (brew install spotify_player)
Authenticate
enable media control by setting enable_media_control = true in the ~/.config/spotify_player/app.toml
Start the application with spotify_player
verify the presence of the exec application
start playing a song
use the media controls to pause
verify the presence of a window asking "Where is use_default?"

Expected behaviour
No presence of the exec application and no windows when using the media controls.
Log and backtrace
2024-11-25T18:57:09.138979Z ERROR librespot_connect::spirc: ContextError: Error { kind: NotFound, error: StatusCode(404) }
2024-11-25T18:57:09.139029Z  INFO librespot_connect::spirc: No more tracks left in queue
2024-11-25T18:57:09.190636Z ERROR librespot_connect::spirc: ContextError: Error { kind: NotFound, error: StatusCode(404) }
2024-11-25T18:57:10.772865Z  INFO client_request{request=GetUserSavedTracks}: spotify_player::client: Successfully handled the client request, took: 3110ms
2024-11-25T18:57:12.673477Z  INFO spotify_player::client::handlers: Current context ID (None) is different from the expected ID (Some(Playlist(PlaylistId("37i9dQZF1DZ06evO00jzcA")))), update the context state
2024-11-25T18:57:12.673736Z  INFO client_request{request=GetContext(Playlist(PlaylistId("37i9dQZF1DZ06evO00jzcA")))}: spotify_player::client: Get playlist context: spotify:playlist:37i9dQZF1DZ06evO00jzcA
2024-11-25T18:57:12.836410Z  INFO client_request{request=GetContext(Playlist(PlaylistId("37i9dQZF1DZ06evO00jzcA")))}: spotify_player::client: Successfully handled the client request, took: 162ms
2024-11-25T18:57:48.932394Z  INFO spotify_player::media_control: Got a media control event: Toggle
2024-11-25T18:57:49.035371Z  INFO client_request{request=Player(ResumePause)}: spotify_player::client: Successfully handled the client request, took: 102ms
2024-11-25T18:57:51.506707Z  INFO spotify_player::media_control: Got a media control event: Next
2024-11-25T18:57:51.596969Z  INFO librespot_connect::spirc: Not playing next track because there are no more tracks left in queue.
2024-11-25T18:57:51.612626Z  INFO client_request{request=Player(NextTrack)}: spotify_player::client: Successfully handled the client request, took: 105ms
2024-11-25T18:57:53.741228Z  INFO librespot_playback::player: Loading <I Was Made For Lovin' You> with Spotify URI <spotify:track:07q0QVgO56EorrSGHC48y3>
2024-11-25T18:57:53.807040Z  INFO client_request{request=Player(StartPlayback(Context(Playlist(PlaylistId("37i9dQZF1DZ06evO00jzcA")), Some(Uri("spotify:track:07q0QVgO56EorrSGHC48y3"))), None))}: spotify_player::client: Successfully handled the client request, took: 291ms
2024-11-25T18:57:54.003611Z  INFO librespot_playback::player: <I Was Made For Lovin' You> (271240 ms) loaded
2024-11-25T18:57:54.004188Z  INFO spotify_player::streaming: Got a new player event: Changed { track_id: TrackId("07q0QVgO56EorrSGHC48y3") }
2024-11-25T18:57:54.004275Z  INFO spotify_player::streaming: Got a new player event: Playing { track_id: TrackId("07q0QVgO56EorrSGHC48y3"), position_ms: 0 }
2024-11-25T18:57:54.187577Z  INFO librespot_connect::spirc: Resolved 50 tracks from <"spotify:playlist:37i9dQZF1DZ06evO00jzcA">
2024-11-25T18:57:56.919858Z  INFO client_request{request=GetCurrentUserQueue}: spotify_player::client: Successfully handled the client request, took: 163ms
2024-11-25T18:58:06.052689Z ERROR spotify_player::client: Encountered an error when updating the playback state: http error: request: error sending request for url (https://api.spotify.com/v1/me/player)
2024-11-25T19:01:55.107408Z  INFO librespot_playback::player: Loading <Rock And Roll All Nite> with Spotify URI <spotify:track:6KTv0Z8BmVqM7DPxbGzpVC>
2024-11-25T19:01:55.297794Z  INFO librespot_playback::player: <Rock And Roll All Nite> (168840 ms) loaded
2024-11-25T19:02:24.679655Z  INFO spotify_player::streaming: Got a new player event: EndOfTrack { track_id: TrackId("07q0QVgO56EorrSGHC48y3") }
2024-11-25T19:02:24.679855Z  INFO spotify_player::streaming: Got a new player event: Changed { track_id: TrackId("6KTv0Z8BmVqM7DPxbGzpVC") }
2024-11-25T19:02:24.680080Z  INFO spotify_player::streaming: Got a new player event: Playing { track_id: TrackId("6KTv0Z8BmVqM7DPxbGzpVC"), position_ms: 0 }
2024-11-25T19:02:26.475525Z  INFO client_request{request=GetCurrentUserQueue}: spotify_player::client: Successfully handled the client request, took: 203ms
2024-11-25T19:02:38.102062Z ERROR spotify_player::client: Encountered an error when updating the playback state: Application 'com.apple.Finder' can only be set once.

Screenshots
See screenshots in the description.
Environment

OS: macOS
Application version: spotify_player 0.20.1

This app only appears when the media control is enabled. I updated the steps to reproduce with that


Don't require Unix in order to use mock sockets

I found this little thing in our fork 😄.

See https://github.com/anmonteiro/gluten/pull/74 which is a prerequisite for this.

Thank you


Add Background Images to Portfolio Sections

Include background images for at least five portfolio sections or projects. These should enhance the visual presentation of the portfolio.

Background images have been added to five portfolio sections. Each section now has a visually appealing background to complement the content.


Facebook playable black screen

We've uploaded the playable to Facebook Ads Manager and it has no errors, but black screen.
Cocos Creator ver.3.8.2(Also tried in 3.6.0)
All the other versions work perfect(Unity, Iron Source, and etc.), facebook also works perfectly fine locally and in facebook playable preview tool.
And even empty project with just the background doesn't work.
Thank you in advance.

Also, we tried to investigate the problem and find that the code stuck in System.import. Maybe it helps with solving the problem.

@roleplaydiary when you mentioned System.import, do you mean the one in the export js file? and if that's the case what was the alternative to that?

I also have a black screen in ads manager

Does anyone have a solution to this problem? I have the same problem in ads manager.

@roleplaydiary Did you manage to solve this? I have the exact same problem

Good news everyone!
I've found a solution for this issue, it stills looks like a workaround and is not heavily tested but works for me.
In your FB build you have a number of 'indexN.js' files in a js folder. You need to find one with __adapter_init_js() function definition (it is usually index5.js).
By default this function looks like (beautified version)
function __adapter_init_js() {
        const r = System.__proto__.createScript;
        System.__proto__.createScript = function(e) {
            var t = __adapter_get_script(e.replace(__adapter_get_base_url(), ""));
            return t ? (t = new Blob([t], {
                type: "text/javascript"
            }), r.call(this, URL.createObjectURL(t))) : (console.error(e + " 找不到资源"), r.call(this, e))
        }
    }

You need to replace it with function of just script creation and launch a load event on that element
function __adapter_init_js() {
        System.__proto__.createScript = function(e) {
            var t = __adapter_get_script(e.replace(__adapter_get_base_url(), ""));
            var s = document.createElement("script");
            s.async = !0,
            s.crossOrigin = "anonymous";
            s.text = t;
            setTimeout(() => {
                s.dispatchEvent(new Event("load"));
            });
            return s;
        }
    }

A bit of reflection on the issue: it looks like Fb just blocks scripts that are dynamically added to the document with src property, but they works fine when added with text on innerHTML property. The problem is that you can't get 'load' event emitted when you add script with innerHTML. So that's what I do in this solution - just add scripts with text property and emit 'load' after

@Kodedyukh Your solution works great! Thanks!

@Kodedyukh thanks

@Kodedyukh The solution works only if Spine is not used.

@Kodedyukh The solution won't work on 3.8.x if Spine is used.

Did u find solution for Spine?

@Kodedyukh The solution won't work on 3.8.x if Spine is used.

Did u find solution for Spine?

No. I downgraded my project to 3.7.4.


Not able to install the Bazel for intellj

Can you please suggest the appropriate version

Yes, please!  I desparately need this for CLion 2021.1
My company basically blocks software that has newer versions.  I can't downgrade my CLion.

Which version is compatible, can you let me know if you are aware

You can find the compatibility matrix for any plugin on Jetbrains' website: https://plugins.jetbrains.com/plugin/8609-bazel/versions/stable

@Kernald  can you let me know if you know any compatible version of bazel plugin for

See #2406
You can see compatibilities with product version names at https://plugins.jetbrains.com/plugin/8609-bazel/versions


Add ability to fetch all cached values (Unmanaged)

Given that getValue does not actually cause network traffic, we could return the cache, allowing recipients to configure the environment on system start up.

I've been watching my devices for a couple of days now and it seems like I almost never get battery updates. In fact, only one device ever says anything about its battery - about once a day.
I'm excited for the getValue option so I can regularly poll the information which isn't updated (specifically battery)

Hey,
There will be 2 new methods.
GetCache: should be used to restore last known values, on start up (still deciding if this should be for the entire network, or a specific device)
PollValue: which will actually ask the device for an update.
So after these 2, you will have.
GetValue: as it is now (the cached value)
SetValue: as it is now
GetCache: All cached Values (for system start ups)
PollValue: Forces the value to be refreshed from the device.

Seems like for a battery device the PollValue would be quite show to respond, right? It wouldn't be until the next time it wakes up.
GetCache should be great.

PollValue would be quite show to respond, right?

For battery operated devices, Correct!
The idea for PollValue is for those values that are critical to be accurate after a start up or recovering from system down time, where the cached value maybe too out of date.
GetCache:                             Non-Critical
PollValue (Single property): Critical
The Cache is obviously kept upto date whilst the driver is running (and devices are sending updates)

@crxporter
Would something like this work?
This would be the result of calling GetValueDB (no longer called GetCache)
GetValueDB accepts an optional list of node IDs -  params:[34,5,2]
if not provided will return for EVERY node - which may be overkill for a large number of nodes, but the choice is there.
This new method, can be used at start up.
where as PollValue (Single Node & Value ID) can be used to force an update on critical values, after a start up

Im thinking  I should  rename currentValue to response so it takes on the same format seen when using GetValue for a single ValueID

Whatever happens I"ll need to write a function node to deal with it - since I doubt the best option is to send everything as "VALUE_UPDATE" as I'm watching for now.
Initial states (getting the VALUE_DB) will be great as long as I have the node number, endpoint, command class, and current value. Bonus points if we can include the node name and node location in there.
I imagine the object something like:
[{"nodeName": "Porch", "nodeLocation": "Front", "valueId":{"big":"object"}, "currentValue": false}]

Wait I just saw it.
Your layout looks great, just if you can add the nodeName and nodeLocation?

Adding the Node Name and location will be fine.
The object component will be an array of nodes (each with id, name, location)
each node element will also have an array of values (each having a currenValue, and the valueId)

Sounds great - I've just added a status catcher to my controller node, I'll probably run GetValueDB after each "All Nodes Ready!" to be sure the rest of NR knows what's what.

Nice!
The result of GetValueDB....
You can use the split node to split the object into separate  messages for better processing.
you can then attach the split node to a switch node, and branch off based on nodeId
All the building blocks are there, I will hopefully get an update out in a couple of days.

Just tested.
The split node connected to a switch node, should work well.

55 values on node 9? What is that thing?

Rings Keypad.
quite a few config params

So I guess that's not that much. My Aeotec 6 in 1  motion sensor has 79... Probably my most. I had a yale lock once with probably over 500 - it had spaces for 256 user codes and a couple settings per code. Not to mention the state stuff.
I didn't keep that device, it took like 15 minutes to interview that thing alone.

Crikey!!
Hence the ability to filter to specific nodes on the GetValueDB method 😅

@crxporter,
3.4.0 is out!
Deprecation Warnings

Added a PollValue method to the Unmanaged class
Added a GetValueDB method to the Driver class
Added a GetNodeNeighbors method to the Controller class
The neighbors property for each node in NODE_LIST is now set for removal. (4.0.0)
Added Ability to adjust how frequently the values and metadata should be written to disk.
Added Ability to set a custom location for device config files
Node property sections no longer auto expanded in the UI (this can be changed)
Bump Z-Wave JS

PollValue example.
This will cause the normal VALUE_UPDATED event
let MyValueID = {...}
let Message = {
    payload:{
        class: "Unmanaged",
        operation: "PollValue",
        node: 5
        params: [MyValueID]
    }
}
return Message;

GetValueDB example.
let Message = {
   payload:{
       class: "Driver",
       operation: "GetValueDB",
       params: [3,7,24] /* Specifying specific node ID's is Optional (but recommended to begin with) */
   }
}
return Message;

as always - I'll leave open until  you have had a chance to use the new method(s).
the method you are likely interested in is GetValueDB (for node-red boot ups)
Have fun

This is so cool. I need to build a startup function - but all of the information is there and will be easy enough to work with.
It's ok that I get excited about massive JSON arrays, right? That's not weird?

It's ok that I get excited about massive JSON arrays, right? That's not weird?

absolutley fine, kind of what I am like with flow groups 🤣
I'm glad it works for you, although  just remember, its from a cache, so if your system has been down for quite sometime, it maybe to far out of date for your liking.
But then thats where PollValue comes in, to forcibly refresh selective values.

Works great. Feel free to close this.

Wanted to come back and say this is seriously an awesome thing to have. I've set things so whenever I get a green light "All Nodes Ready!" then I can pull the DB and push data to all of my homekit nodes all over the place.
My function is basic but gets the job done. And it should only run once every few weeks so there's not much need to make it all optamized and pretty.
const inValues = msg.payload.values;
const Name = msg.payload.nodeName;

let outputs = [];

inValues.forEach(value => {
    if (value.valueId.commandClass === 128 && value.valueId.property == "isLow") {
        outputs.push({
            "topic": Name,
            "payload": {
                StatusLowBattery: + value.currentValue,
                ChargingState: 2
            }
        })
    }
    if (value.valueId.commandClass === 128 && value.valueId.property == "level") {
        outputs.push({
            "topic": Name,
            "payload": {
                BatteryLevel: value.currentValue,
                ChargingState: 2
            }
        })
    }
    if (value.valueId.commandClass === 113 && value.valueId.propertyKey == "Door state") {
        let doorState = 23-value.currentValue;
        if (isNaN(doorState)) {
            doorState = 0;
        }
        outputs.push({
            "topic": Name,
            "payload": {
                ContactSensorState: doorState
            }
        })
    }
    if (value.valueId.commandClass === 113 && value.valueId.propertyKey == "Motion sensor status") {
        outputs.push({
            "topic": Name,
            "payload": {
                MotionDetected: Boolean(value.currentValue)
            }
        })
    }
    if (value.valueId.commandClass === 113 && value.valueId.propertyKey == "Sensor status") {
        if (value.valueId.property == "CO Alarm") {
            outputs.push({
                "topic": Name,
                "payload": {
                    CarbonMonoxideDetected: value.currentValue ? 1 : 0
                }
            })
        }
        if (value.valueId.property == "Smoke Alarm") {
            outputs.push({
                "topic": Name,
                "payload": {
                    SmokeDetected: value.currentValue ? 1 : 0
                }
            })
        }

    }
    if (value.valueId.commandClass === 49 && value.valueId.property == "Air temperature") {
        outputs.push({
            "topic": Name,
            "payload": {
                CurrentTemperature: value.currentValue
            }
        })
    }
    if (value.valueId.commandClass === 49 && value.valueId.property == "Humidity") {
        outputs.push({
            "topic": Name,
            "payload": {
                CurrentRelativeHumidity: value.currentValue
            }
        })
    }
    if (value.valueId.commandClass === 49 && value.valueId.property == "Illuminance") {
        outputs.push({
            "topic": Name,
            "payload": {
                CurrentAmbientLightLevel: value.currentValue
            }
        })
    }
});

return [outputs];

Nice!
Easy to add other entries later down the line as well.
Are you filtering to specific nodes on the GetValueDB call - I was curious how such a big payload would behave.

Before this function I'm splitting the msg.payload.object array into individual messages per device. So this function gets hit with one message per device.
Then as you see it matches the values based on the if statements and spits out a whole bunch of outputs. After sending the GetValueDB I get all the properly formatted stuff within maybe 2 seconds?
I have 3 of these functions though, one for on/off switches, one for dimmers, and one for sensors. I'm using the location property to sort so I don't send every device to all 3 functions. The switch and dimmer ones set up my global context storage for each device.
Yes I'm pulling the entire DB, not filtering. It doesn't seem like a struggle for the pi 4, especially since it'll run so infrequently.

If you wanna see the whole thing:
[{"id":"c76203e0.6e5858","type":"status","z":"65c335e0.d71ce4","name":"","scope":["c4162781.92a34"],"x":140,"y":400,"wires":[["f88b1f2b.ed12d"]]},{"id":"31e96468.0d4d7c","type":"split","z":"65c335e0.d71ce4","name":"Split","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":330,"y":460,"wires":[["776153aa.4c97fc"]]},{"id":"28dbecc1.f11fac","type":"change","z":"65c335e0.d71ce4","name":"Move","rules":[{"t":"move","p":"payload.object","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":190,"y":460,"wires":[["31e96468.0d4d7c"]]},{"id":"776153aa.4c97fc","type":"switch","z":"65c335e0.d71ce4","name":"Sort","property":"payload.nodeLocation","propertyType":"msg","rules":[{"t":"eq","v":"Dimmer","vt":"str"},{"t":"cont","v":"Switch","vt":"str"},{"t":"cont","v":"Sensor","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":190,"y":540,"wires":[["2abdc0d7.a1f798"],["e4d9c749.77e528"],["61531e4.e3881e"]],"outputLabels":["Dimmers","Switches",""]},{"id":"2abdc0d7.a1f798","type":"function","z":"65c335e0.d71ce4","name":"Dimmers initiate","func":"const inValues = msg.payload.values;\nconst Name = msg.payload.nodeName;\nconst zwnode = msg.payload.nodeId;\n\nlet endpoint;\nlet Brightness;\nlet zwClass = 38;\nlet onLevel;\nlet onLevelClass;\nlet minBright = 1;\n\ninValues.forEach(value => {\n    if (value.valueId.commandClass === zwClass && value.valueId.property == \"currentValue\") {\n        endpoint = value.valueId.endpoint;\n        Brightness = value.currentValue;\n    }\n    if (value.valueId.commandClass == 112) {\n        if (value.valueId.property == 18 || value.valueId.property == 32) {\n            onLevelClass = value.valueId.property;\n        }\n    }\n    if (value.valueId.commandClass == 112) {\n        if (value.valueId.property == 10 && value.valueId.propertyName == \"Minimum Brightness\") {\n            minBright = value.currentValue;\n        }\n    }\n});\n\nlet Dimmer = Name + endpoint;\n\nconst dimmerState = {\n    \"On\": Boolean(Brightness),\n    \"Brightness\": Brightness,\n    \"zwnode\": zwnode,\n    \"endpoint\": endpoint,\n    \"class\": zwClass,\n    \"onLevelClass\": onLevelClass,\n    \"minBright\" : minBright\n}\n\nglobal.set(Dimmer, dimmerState)\n\nconst newMsg = {\n    payload: {\n        \"On\": dimmerState.On\n    },\n    topic: Dimmer\n};\n\nif (dimmerState.On) {\n    newMsg.payload.Brightness = dimmerState.Brightness;\n}\n\nreturn newMsg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":380,"y":520,"wires":[["8dfc0fe6.4330c8"]]},{"id":"e4d9c749.77e528","type":"function","z":"65c335e0.d71ce4","name":"Switches initiate","func":"const inValues = msg.payload.values;\nconst Name = msg.payload.nodeName;\nconst zwnode = msg.payload.nodeId;\n\nlet endpoint;\nlet On;\nlet zwClass = 37;\n\ninValues.forEach(value => {\n    if (value.valueId.commandClass === zwClass && value.valueId.property == \"currentValue\") {\n        endpoint = value.valueId.endpoint;\n        On = value.currentValue;\n    }\n});\n\nlet Switch = Name + endpoint;\n\nconst switchState = {\n    \"On\": On,\n    \"zwnode\": zwnode,\n    \"endpoint\": endpoint,\n    \"class\": zwClass,\n}\n\nglobal.set(Switch, switchState)\n\nconst newMsg = {\n    payload: {\n        \"On\": switchState.On\n    },\n    topic: Switch\n};\n\nreturn newMsg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":380,"y":560,"wires":[["846a1f9.6d6cee"]]},{"id":"61531e4.e3881e","type":"function","z":"65c335e0.d71ce4","name":"Sensors initiate","func":"const inValues = msg.payload.values;\nconst Name = msg.payload.nodeName;\n\nlet outputs = [];\n\ninValues.forEach(value => {\n    if (value.valueId.commandClass === 128 && value.valueId.property == \"isLow\") {\n        outputs.push({\n            \"topic\": Name,\n            \"payload\": {\n                StatusLowBattery: + value.currentValue,\n                ChargingState: 2\n            }\n        })\n    }\n    if (value.valueId.commandClass === 128 && value.valueId.property == \"level\") {\n        outputs.push({\n            \"topic\": Name,\n            \"payload\": {\n                BatteryLevel: value.currentValue,\n                ChargingState: 2\n            }\n        })\n    }\n    if (value.valueId.commandClass === 113 && value.valueId.propertyKey == \"Door state\") {\n        let doorState = 23-value.currentValue;\n        if (isNaN(doorState)) {\n            doorState = 0;\n        }\n        outputs.push({\n            \"topic\": Name,\n            \"payload\": {\n                ContactSensorState: doorState\n            }\n        })\n    }\n    if (value.valueId.commandClass === 113 && value.valueId.propertyKey == \"Motion sensor status\") {\n        outputs.push({\n            \"topic\": Name,\n            \"payload\": {\n                MotionDetected: Boolean(value.currentValue)\n            }\n        })\n    }\n    if (value.valueId.commandClass === 113 && value.valueId.propertyKey == \"Sensor status\") {\n        if (value.valueId.property == \"CO Alarm\") {\n            outputs.push({\n                \"topic\": Name,\n                \"payload\": {\n                    CarbonMonoxideDetected: value.currentValue ? 1 : 0\n                }\n            })\n        }\n        if (value.valueId.property == \"Smoke Alarm\") {\n            outputs.push({\n                \"topic\": Name,\n                \"payload\": {\n                    SmokeDetected: value.currentValue ? 1 : 0\n                }\n            })\n        }\n        \n    }\n    if (value.valueId.commandClass === 49 && value.valueId.property == \"Air temperature\") {\n        outputs.push({\n            \"topic\": Name,\n            \"payload\": {\n                CurrentTemperature: value.currentValue\n            }\n        })\n    }\n    if (value.valueId.commandClass === 49 && value.valueId.property == \"Humidity\") {\n        outputs.push({\n            \"topic\": Name,\n            \"payload\": {\n                CurrentRelativeHumidity: value.currentValue\n            }\n        })\n    }\n    if (value.valueId.commandClass === 49 && value.valueId.property == \"Illuminance\") {\n        outputs.push({\n            \"topic\": Name,\n            \"payload\": {\n                CurrentAmbientLightLevel: value.currentValue\n            }\n        })\n    }\n});\n\nreturn [outputs];","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":300,"y":700,"wires":[["989e455.c5098b8"]]},{"id":"4e7ad117.fbe7d8","type":"link out","z":"65c335e0.d71ce4","name":"Door","links":["23ec89f1.7b13c6","13d54137.1b977f"],"x":670,"y":600,"wires":[],"l":true},{"id":"38487add.6c4bee","type":"link out","z":"65c335e0.d71ce4","name":"Motion","links":["d2b64b32.7ef778","a8f21129.18733","ef79915b.09d888","77765b56.4c0094"],"x":680,"y":560,"wires":[],"l":true},{"id":"de772036.9de7e","type":"link out","z":"65c335e0.d71ce4","name":"Temp","links":["c6d9055e.19a218"],"x":670,"y":640,"wires":[],"l":true},{"id":"3b937160.eb745e","type":"link out","z":"65c335e0.d71ce4","name":"Humidity","links":["63f3a0a6.d13c68"],"x":680,"y":680,"wires":[],"l":true},{"id":"79d7f8d8.ca1bb","type":"link out","z":"65c335e0.d71ce4","name":"Light","links":["7205045e.a74474"],"x":670,"y":720,"wires":[],"l":true},{"id":"87bd940b.04aea8","type":"link out","z":"65c335e0.d71ce4","name":"Battery","links":["aea2b5d.62b99c8"],"x":680,"y":760,"wires":[],"l":true},{"id":"8960042b.842a78","type":"link out","z":"65c335e0.d71ce4","name":"Smoke","links":["1ecf2ab7.ae934d"],"x":680,"y":800,"wires":[],"l":true},{"id":"5ee9c17b.513178","type":"link out","z":"65c335e0.d71ce4","name":"CO","links":["517361b6.27cad8"],"x":670,"y":840,"wires":[],"l":true},{"id":"989e455.c5098b8","type":"switch","z":"65c335e0.d71ce4","name":"","property":"payload","propertyType":"msg","rules":[{"t":"hask","v":"MotionDetected","vt":"str"},{"t":"hask","v":"ContactSensorState","vt":"str"},{"t":"hask","v":"CurrentTemperature","vt":"str"},{"t":"hask","v":"CurrentRelativeHumidity","vt":"str"},{"t":"hask","v":"CurrentAmbientLightLevel","vt":"str"},{"t":"hask","v":"ChargingState","vt":"str"},{"t":"hask","v":"SmokeDetected","vt":"str"},{"t":"hask","v":"CarbonMonoxideDetected","vt":"str"}],"checkall":"true","repair":false,"outputs":8,"x":470,"y":700,"wires":[["38487add.6c4bee"],["4e7ad117.fbe7d8"],["de772036.9de7e"],["3b937160.eb745e"],["79d7f8d8.ca1bb"],["87bd940b.04aea8"],["8960042b.842a78"],["5ee9c17b.513178"]]},{"id":"8dfc0fe6.4330c8","type":"link out","z":"65c335e0.d71ce4","name":"Dimmers initiate","links":["60ac2727.8fec2"],"x":535,"y":520,"wires":[]},{"id":"846a1f9.6d6cee","type":"link out","z":"65c335e0.d71ce4","name":"Switches initiate","links":["1118b4a3.f68dcb","c9773d67.7d53f"],"x":535,"y":560,"wires":[]},{"id":"f88b1f2b.ed12d","type":"switch","z":"65c335e0.d71ce4","name":"Ready","property":"status.text","propertyType":"msg","rules":[{"t":"eq","v":"All Nodes Ready!","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":290,"y":400,"wires":[["a027a9ef.96ccb"]]},{"id":"a027a9ef.96ccb","type":"change","z":"65c335e0.d71ce4","name":"Get DB","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload","pt":"msg","to":"{\"class\":\"Driver\",\"operation\":\"GetValueDB\",\"params\":[]}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":400,"wires":[["a0bc4ead.f6d5f8"]]},{"id":"5935956a.74874c","type":"link in","z":"65c335e0.d71ce4","name":"Value DB","links":["7902b802.cafbd8"],"x":95,"y":460,"wires":[["28dbecc1.f11fac"]]},{"id":"a0bc4ead.f6d5f8","type":"link out","z":"65c335e0.d71ce4","name":"Z-wave","links":["5ce2ebb.4955694"],"x":575,"y":400,"wires":[]},{"id":"93398c9d.fe96c","type":"inject","z":"65c335e0.d71ce4","name":"Get DB","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":270,"y":340,"wires":[["a027a9ef.96ccb"]]}]

Haha!
Very nice! - Link nodes are Awesome!
Have been rocking the groups!


see list of open windows under Window file menu

It would be nice to see a list of open windows here to quickly move from one sketch/project to another.

yeah we should definitely add this!


multithreading

add multiple threads support
standard multithreaded implementation
http://doc.qt.io/qt-5/qtnetwork-threadedfortuneserver-example.html
alternatively investigate if we could process middlewares after request is received in a thread pool
http://doc.qt.io/qt-5/qtconcurrent.html
benchmark both and avoid mutexes, use signals and events instead

http://www.bogotobogo.com/Qt/Qt5_QTcpServer_QThreadPool_Multithreaded_Client_Server.php

To avoid more complexity for the user we recommend using QtConcurrent as shown in examples sqlite_nonblocking and postgres_nonblocking
in the future plan is to have all blocking operations (file, database) wrapped in threaded implementations


fix: add missing filetypes

Based on the script: https://github.com/nvim-tree/nvim-web-devicons/pull/433#issuecomment-2044188895

Nice! Might be worth adding to required checks on CI.

Nice! Might be worth adding to required checks on CI.

Yes please!

Dumb question 1:
Could we generate these mappings at runtime, rather than compile time? Users may have installed other filetypes.
The mapping would still need to exist, for unconventional mappings like ["commit"] = "commit_editmsg",
It looks like we could use vim.fn.getcompletion("", "filetype", false) at startup.

Dumb question 2:
edit: never mind, I didn't read the doc

Could we generate these mappings at runtime, rather than compile time? Users may have installed other filetypes.

Or let users add new filetypes on the config file so if they have more filetypes they know they have to also include it.

Or let users add new filetypes on the config file so if they have more filetypes they know they have to also include it.

Yes, that is necessary and we have many cases.
I'm happy whichever way you go.

Looking good, I created a branch to test: #534
It removed asm to test.
The script doesn't fail when a file type is missing:
: ; make filetypes
./scripts/filetypes.sh
Please add "asm" to filetypes Lua table.
: ; echo $?
0
: ; scripts/filetypes.sh
Please add "asm" to filetypes Lua table.
: ; echo $?
0
: ;

It's going to need to return non-zero (1 will do) when a type is missing, so that CI can fail.

It looks like $VIMRUNTIME is not set in CI; we're going to need to set it as per https://github.com/nvim-tree/nvim-tree.lua/blob/5ad87620ec9d1190d15c88171a3f0122bc16b0fe/.github/workflows/ci.yml#L91
I've instrumented the script to show what's present: https://github.com/nvim-tree/nvim-web-devicons/actions/runs/12539821919/job/34966371519?pr=535
It looks like we can use /home/runner/nvim-stable/share/nvim/runtime


[Enhancement] Completely hide GM Rolls for hidden tokens

Would be awesome if a secret roll (for an invisible/hidden token) produced no sound and "GM privately rolled some dice" message in chat. Sometimes (frequently?) you don't even want players to know that you're rolling. :D

There is already another module that does this...
https://foundryvtt.com/packages/actually-private-rolls
Though it doesn't say it is compatible with v12.  It may just work though.

I can confirm that the Hide GM Rolls module supports this functionality, and works with v12


Added paragraph for Pause Forging documentation

@yurikoinaba are you able to see why is failing the pipeline? (I have not enough rights)

@paolocappelletti Yes, it's bc the file names were changed but not updated in sidebars.js cc @alsala

Thanks @yurikoinaba , I have fixed it


Question: Mesh-based alternative

Will you allow an alternative using meshes and deform/bend them in curve/spline space as SplineMesh (https://assetstore.unity.com/packages/tools/modeling/splinemesh-104989) can?
Would allow nice platform design like this: https://twitter.com/AnderssonKev/status/1543284924555448320

Hmm, I will leave this open as there's definitely some good inspiration to take from this asset and if anyone wants to suggest a method to achieve it I'm all ears, but eyeballing those videos I think this would be non-trivial to implement.
I see this plugin initially as being helpful for prototyping or game jams, while splinemesh looks more like a final production output. That's not to say I shouldn't aim high ^^.


How to declare a variable/return value to be polymorphic?

Suppose I have a polymorphic type like this:
type Identity<T> = T => T

I want to use this type to declare a variable or return type as the polymorphic version of Identity. E.g.:
const id : Identity = x => x;

The above however gives an error: Application of polymorphic type needs <list of 1 argument>. (Can use * for inferrable ones).
Trying to apply the polymorphic type doesn't give the desired result:
const id : <T>Identity<T> = x => x; //doesn't compile
const id : Identity<*> = x => x; //compiles, but then the resulting function isn't generic:
var x : string = id('asdf');
var y : number = id(3);
/*
 4: var x : string = id('asdf');
                    ^ number. This type is incompatible with
4: var x : string = id('asdf');
           ^ string
5: var y : number = id(3);
                    ^ string. This type is incompatible with
5: var y : number = id(3);
           ^ number
*/

How am I supposed to type this? Or is it impossible to declare a variable to be of a polymorphic type?

type Identity = <T>(T) => T;

const id : Identity = x => x;

gives
3: const id : Identity = x => x;
                         ^ function. This type is incompatible with
1: type Identity = <T>(T) => T;
                   ^ function type
This parameter is incompatible:
3: const id : Identity = x => x;
                              ^ T. This type is incompatible with
3: const id : Identity = x => x;
                         ^ some incompatible instantiation of `T`

Even explicitly typing id doesn't work:
const id : Identity = <T>(x : T) => x;

in this case: https://flow.org/try/#0C4TwDgpgBAkgJlAvFAPAFQHwAo0EokZRoDcAUAMYD2AdgM7BQCWcAXLAsutgB5t58Eo3MqSzMsARlxtqAVwC2AIwgAnXGTFwsAcgBmlStulR6KxtQDm6oA
type Id = <T>(T) => T;
const id: Id = <T>(x: T): T => x;

(id(1): number);
(id('foo'): string);

Ahh, the addition of @madbence seems to work. However, this doesn't quite cover the entire story yet: this only works if you have full control over the Id type. How would you do this if the Id type is already provided? (In my case, I'm dealing with a polymorphic React$ComponentType, which I'd rather not re-type myself).

This might help: https://github.com/facebook/flow/issues/4644#issuecomment-324252464

I'm seeing the same error here:
https://flow.org/try/#0MYewdgzgLgBAJgUwGYBsoEYYF4ZIK5jBQCW4APACoB8AFBAlCWAOYBcMFMAPjAG4jE4AGnjIAhnjQBJJAFUwiJMTAI47CgEp2AKhgBvAFAxjMAE4M8psDHqNlzbFhwFFy1TAD8opBOlyFyG5wMOy2TMwA3AYAvlGgkLCKaABM2LgERKRglLRh9urcfALC3r5QMvKuKmocWhz6RibmUJbWeSyOzgFK1Z6lkuX+Ve6hDOFRsQYG8dAwxBAAQmKm6OwARiAgKAhi1jhJGDQugdUiPij0GnHgs-NLpsnrm9u7aQfJR91BZ2IXCFcGIA
// This one returns `*` to work around this bug in the compiler.
const deflt1 = function<T>(setting: T | void, defaultIfUndefined: T): * {
    return setting === undefined ? defaultIfUndefined : setting;
};
const deflt2 = function<T>(setting: T | void, defaultIfUndefined: T): T {
    return setting === undefined ? defaultIfUndefined : setting;
};

const isBar1: boolean = deflt1(undefined, false); // Happy here.
const isBar2: boolean = deflt2(undefined, false); // Same error as OP here.

This seems to work:
type Id<T> = <T: *>(T) => T;
const id: Id<*> = (x) => x;

(id(1): number);
(id('foo'): string);

// $ExpectError
(id(null): string); // error

The type-at-pos doesn't seem to return anything, but the types are still checked correctly.

@jcready Your still relies on the author being able to change the definition of Id (i.e. without the <T: *> it doesn't work). That doesn't work for the general case, since in a real-world codebase many types are imported from 3rd parties. I'm looking for a solution that works with any polymorphic type, regardless of it's implementation.
The main problem seems to be that you can only declare functions to be polymorphic, but not arbitrary types. e.g, <T>(T) => T is allowed, but not <T>MyType<T> (even if MyType itself is a function type).

Duplicate of #5022

Closing since not every type can be polymorphic. For component types, we recently introduced component type (https://flow.org/en/docs/react/component-types/) which can be polymorphic.


Compatibility with cassandra 2.1.13

I've based these changes on #121 and resolved the conflicts in the process.
I've also bumped up the cassandra version to 2.1.13.

I'd like to test this out. Can you point me to the source branch? You may need to re-do the PR, because source branch shows up as "unknown repo".

Incremental repairs & better 2.1 support are quite useful. Any chance for this not not end up as https://github.com/spotify/cassandra-reaper/pull/121?


Create model

In this PR the following was done:

[ ] Create and run the necessary migration files for User, Comment, Post, and Like tables.

Thank you 😀


Fix for TF Lite verifier and arg_min_max op on Big Endian machine

This PR consists of 2 fixes.
The first fix is in verifier.cc, as discussed in https://github.com/tensorflow/tensorflow/issues/44852.
The second fix is for retrieving axis_value data in arg_min_max.cc. Since the axis could be of type int64, it will cause an issue when retrieving it as int32 on Big Endian machines - It only retrieves the first 4 bytes which are the most significant bytes on Big Endian machines. Retrieve it as int64 at first and then convert it to int32 will be safer and more consistent.

Could you please review this PR @wangtz ? Thank you.

Hi @talumbau , I just pushed the fix for test case lsh_projection_test as you suggested. I use the macro defined(__s390x__) instead of __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ just to be safe, as I only tested it on s390x so I am not sure whether other Big Endian machines will have the same hash output. This could be generalized once tested on other architectures. Please let me know if you have other suggestions or questions, thank you.

Make a new commit for nnapi_delegate_test.cc as it has part of the exact same test content as lsh_prejoection_test, fix it with the same approach.


Add poi highlevel tests

Could it be an advantage to change the macro df_snapshot_test in such way that the folder where the CSV snapshot is saved can be modified?
I.E.: df_snapshot_test(name, folder="snapshot", expr::Expr)
This might help the clutter in the snapshot folder as well. With this the snapshot can be sorted in subfolders like e.g. "poi".

I moved the  macro df_snapshot_test into runtests.jl since the macro might come handy in other tests then the highlevel_test.jl as well.
The macro was changed back to df_snapshot_test(name, expr::Expr) because the name is basically the folder.


Docs refer to primitive wrapper objects like Boolean but use primitives

The docs refer to Boolean return types and parameters and link to the MDN docs on the Boolean object wrapper. Every case actually appears to deal with primitive boolean types though, not the object-wrapped Boolean version. The docs should likely refer to "boolean" (lowercase) and link to the JavaScript primitive doc on MDN.

This appears to apply to all primitive types:

String should be string in nearly all cases
Number should be number in nearly all cases
Boolean should be boolean

Closing in favor of atom/atom.io#4.


small bug in documentation

On http://vertx.io/docs/vertx-jdbc-client/java/ there is a link called "common sql interface" pointing to http://foobar. Unfortunately it cannot be resolved.

Already fixed: https://github.com/vert-x3/vertx-web-site/issues/147


Rename default branch to main

I don't have permissions to do it myself @agjohnson

I updated master -> main in the GH repo settings. Not really sure if there are changes required after this though.

Yes. Everyone who has a fork of the repo needs to update their local fork. Here are the commands for anyone who needs them.
git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a


Chore/emotionless

Try out this version of the Leather — download extension builds.

This PR refactors the wallet to:

use CSS objects for base CSS so we can load them into Panda
gets rid of our dependancy on emotion in the APP

We will need to QA carefully as we are removing the stacks UI base CSS but it looks mostly OK:
https://github.com/leather-wallet/extension/assets/2938440/be8c1945-abc6-47bb-bc3f-c36e5cacdfe0
I updated the test-app also and it is missing some stuff inherited from Stacks UI (fonts etc. ) but I believe thats OK for now and we can schedule some improvements there if/when we see fit.
https://github.com/leather-wallet/extension/assets/2938440/54be1228-4cb7-41fb-8132-b938ab642a7b

Can you link an issue to your PRs or add the , closes #... to a commit?

Can you link an issue to your PRs or add the , closes #... to a commit?

I linked the issue, thanks! Once things are ready for review I'll rebase and change the commit messages. Just working on this in phases and trying to keep work somewhat independent

Nice refactor Pete! This'll also help us remove the dependency on babel too.
One observation:
On linking issues in the commit itself, this is make a useful generated release log

Thanks, I know its good practice to do that, I just seemed to be making so many commits I didn't. I'll rebase this onto one commit with an issue linked.
I will fix the issue in the screenshot too before merging, thanks!


hci_uart not acknowledging data correctly / losing packets

Hi, Zephyr community,
Problem
I am experiencing issues when trying to create an embedded application for the hci_uart FW controller running on NRF52810. The issue is that I'm trying to send 10 packets to the controller, but I only get 10 acknowledgements back very rarely. The number, in fact, varies depending on how how many/how long packets I send. For this example, In most cases, the number of ACKs I get is 9.
The way I'm doing this is such that the host assumes that the controller has 3 buffers (in fact it has 8). So I first fill 3 buffers, and then wait for an acknowledgement before sending the next one.
I have tried various ways of changing data length or number of packets, connection parameter settings, and much more. I'm beginning to run out of ideas. It could be something obvious I might not be aware of. Hope you can help.
With regards,
James
Additional notes

This problem does NOT occour when I when I only enqueue 1 packet instead of 3
If I send longer packets, even more data gets lost
I have tried this with DLE and 2M PHY
The two communicating devices are right next to each other
Host RTS is always 0
Host CTS is always 0
UART speed is 1M
The controller is configured to have 8 RX/TX buffers
NRF Sniffer shows that only 9 packets do indeed get sent out
The other device on the receiving end also receives 9 packets
There is around 20 us pause between two sequential UART writes.
I have tried this on both Zephyr 2.3.99 and 1.14

To Reproduce
Steps to reproduce the behavior:

Send 3x data packets
Wait for ACK
Send 1 data packet
Wait for ACK
...
Wait for ACK
Send last data packet
Wait for ACK (3x)

Expected behavior
I do indeed get 10 acknowledgements back.
Attachments
I have attached some files that will help get a clearer picture:

NRF sniffer log
hci_uart controller configuration file
uC UART output/input log
Oscilloscope image (where you can indeed see 10 data packets and 9 ACKs)

@jjamesson
Could you please provide the following information:

hci_uart is running on an nRF52810, is this a dev kit or a custom board?
Where are you running the Host, i.e. the HCI "client"?
Are you using a debugger chip via USB or do you have a physical connection TX <-> RX and RX <-> TX between 2 ICs directly?
You seem to be disabling hardware flow control, can you confirm that? If you are doing that then data may be lost.

Hi, @carlescufi ,
Thanks for reaching back. The answers to your questions are the following:

The Nrf52810 is running on a custom board
The host is an STM32 Cortex-M4 chip running on the same board. I am currently developing a custom FW for the host.
The two IC-s are situated on the same board, and have a physical UART direct connection between them.
Not intentionally, although I find it weird, that if I drive RTS high on the host, the controller doesnt abide to that and still sends me data. Also, CTS is never high. Although I have configured CONFIG_BT_HCI_ACL_FLOW_CONTROL=y in the controllers conf file. Am I missing something?
Correct.

With regards,
James

@jjamesson hardware flow control for uart is enabled in DTS. CONFIG_BT_HCI_ACL_FLOW_CONTROL is just an information to the hci that flow control is enabled.
overlay should contain something like to enable flow control:
&uart1 {
	hw-flow-control; /* if not defined in DTS */
        rts-pin = <5>; /* if not defined in DTS */
	cts-pin = <7>; /* if not defined in DTS */
};

BT_HCI_ACL_FLOW_CONTROL is not UART hardware flow control. It is flow control in receiving data packets and sending them from the controller to the host.

Thank you for all the replies and helping me clear out the meaning of BT_HCI_ACL_FLOW_CONTROL. Especially for @nordic-krch for even pointing out a solution. This helped me solve the problem.
With regards,
James


Modified notebook chicago_taxi_fare_prediction according to notebook template

Error from regrression test:
While doing model.deploy getting "error 400- model server never became ready." error.
When I checked logs it is "ERROR:root:Failed to load model: Could not load the model: /tmp/model/0001/model.joblib. basic_string::resize."
In this notebook, local sklearn model is saved in model.joblib file. joblib is causing issue here, I changed it to model.pkl. Now its working fine
Modified notebook chicago_taxi_fare_prediction according to notebook template

[X] Use the notebook template as a starting point.
[X] Follow the style and grammar rules outlined in the above notebook template.
[X] Verify the notebook runs successfully in Colab since the automated tests cannot guarantee this even when it passes.
[X] Passes all the required automated checks. You can locally test for formatting and linting with these instructions.
[ ] You have consulted with a tech writer to see if tech writer review is necessary. If so, the notebook has been reviewed by a tech writer, and they have approved it.
[X] This notebook has been added to the CODEOWNERS file under the Official Notebooks section, pointing to the author or the author's team.
[X] The Jupyter notebook cleans up any artifacts it has created (datasets, ML models, endpoints, etc) so as not to eat up unnecessary resources.

all comments resolved