Prohibit updating spec.databaseInstance

Updating spec.databaseInstance does not migrate existing data to a new instance and can break resource access unexpectedly. This prohibits such update.

/hold i understand why you are doing this but i was literally talking about how we could move form a single shared db to per service dbs if we needed too for scaleing reasons by doing a db dump/restores and updating the db reference.
so before we block this i want to at least discuss if we should

Maybe we want to do something similar to what we did in the infra-operator to ipset where we added an immutable [1] parameter. if true on the old spec, the webhook [2] blocks updating the CR spec, except of the immutable parameter. This forces an additional step to allow changes and sends a  "be careful" signal. Depending of the service operator/CR this immutable parameter could default to true/false.
[1] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_types.go#L48
[2] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_webhook.go#L102

/hold i understand why you are doing this but i was literally talking about how we could move form a single shared db to per service dbs if we needed too for scaleing reasons by doing a db dump/restores and updating the db reference.
so before we block this i want to at least discuss if we should

I understand that possible scenario to migrate database but if we don't have specific timeline to implement that support we should forbid this update. With current implementations, in case a user updates databaseInstance then it switches the database without data migration and it does not remove the existing database in the old instance properly. I'm more concerned about the potential problems caused by unexpected changes.
Anyway I'll bring this to the sync discussionsa this week.

Maybe we want to do something similar to what we did in the infra-operator to ipset where we added an immutable [1] parameter. if true on the old spec, the webhook [2] blocks updating the CR spec, except of the immutable parameter. This forces an additional step to allow changes and sends a "be careful" signal. Depending of the service operator/CR this immutable parameter could default to true/false.
[1] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_types.go#L48 [2] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_webhook.go#L102

That's an option, I think. One thing we probably have to consider here is that we have to control whether a specific key should be immutable or not. We can probably add a dict option like debug and use it.

Maybe we want to do something similar to what we did in the infra-operator to ipset where we added an immutable [1] parameter. if true on the old spec, the webhook [2] blocks updating the CR spec, except of the immutable parameter. This forces an additional step to allow changes and sends a "be careful" signal. Depending of the service operator/CR this immutable parameter could default to true/false.
[1] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_types.go#L48 [2] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_webhook.go#L102

That's an option, I think. One thing we probably have to consider here is that we have to control whether a specific key should be immutable or not. We can probably add a dict option like debug and use it.

I have a bad feeling about the UX of having a separate map defining what field is settable and when. But I have no good suggestion how to force an extra round-trip for the use to make sure the DB change is intentional.

Maybe we want to do something similar to what we did in the infra-operator to ipset where we added an immutable [1] parameter. if true on the old spec, the webhook [2] blocks updating the CR spec, except of the immutable parameter. This forces an additional step to allow changes and sends a "be careful" signal. Depending of the service operator/CR this immutable parameter could default to true/false.
[1] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_types.go#L48 [2] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_webhook.go#L102

That's an option, I think. One thing we probably have to consider here is that we have to control whether a specific key should be immutable or not. We can probably add a dict option like debug and use it.

do we have to be that specific on a per field via the CRD? why not just have a single immutable parameter. if that set all fields which should not be possible to change get blocked by the webhook. if for some reason one of those need to be changed the immutable param needs to set to false. in that case you could change any of them, but you have to do that additional step.

Yeah, that feels a bit easier UX. I said above:

Maybe(?) we can have a single "advanced-mode" flag for the whole CRD. That is defaulted to false, and prevents any dangerous operation. That would allow us not to duplicate fields directly.

Maybe we want to do something similar to what we did in the infra-operator to ipset where we added an immutable [1] parameter. if true on the old spec, the webhook [2] blocks updating the CR spec, except of the immutable parameter. This forces an additional step to allow changes and sends a "be careful" signal. Depending of the service operator/CR this immutable parameter could default to true/false.
[1] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_types.go#L48 [2] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_webhook.go#L102

That's an option, I think. One thing we probably have to consider here is that we have to control whether a specific key should be immutable or not. We can probably add a dict option like debug and use it.

do we have to be that specific on a per field via the CRD? why not just have a single immutable parameter. if that set all fields which should not be possible to change get blocked by the webhook. if for some reason one of those need to be changed the immutable param needs to set to false. in that case you could change any of them, but you have to do that additional step.

Yeah, that feels a bit easier UX. I said above:

Maybe(?) we can have a single "advanced-mode" flag for the whole CRD. That is defaulted to false, and prevents any dangerous operation. That would allow us not to duplicate fields directly.

right, could not connect the "advanced-mode" word with immutable on quick scanning your updates. we should just have the same param name across the operators. we used Immutable https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_types.go#L46-L48  , but we only just introduced it, so can be changed if we agree on something else. I just realized, I missed a description there ...

OK I agree that we can make it a single parameter. Probably we want to name it disableValidation instead of advancedMode. The implication of advanced mode is quite vague and I'd prefer using more specific name, unless we have any other use cases we want to enable by that flag.

Maybe we want to do something similar to what we did in the infra-operator to ipset where we added an immutable [1] parameter. if true on the old spec, the webhook [2] blocks updating the CR spec, except of the immutable parameter. This forces an additional step to allow changes and sends a "be careful" signal. Depending of the service operator/CR this immutable parameter could default to true/false.
[1] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_types.go#L48 [2] https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_webhook.go#L102

That's an option, I think. One thing we probably have to consider here is that we have to control whether a specific key should be immutable or not. We can probably add a dict option like debug and use it.

do we have to be that specific on a per field via the CRD? why not just have a single immutable parameter. if that set all fields which should not be possible to change get blocked by the webhook. if for some reason one of those need to be changed the immutable param needs to set to false. in that case you could change any of them, but you have to do that additional step.

Yeah, that feels a bit easier UX. I said above:

Maybe(?) we can have a single "advanced-mode" flag for the whole CRD. That is defaulted to false, and prevents any dangerous operation. That would allow us not to duplicate fields directly.

right, could not connect the "advanced-mode" word with immutable on quick scanning your updates. we should just have the same param name across the operators. we used Immutable https://github.com/openstack-k8s-operators/infra-operator/blob/main/apis/network/v1beta1/ipset_types.go#L46-L48 , but we only just introduced it, so can be changed if we agree on something else. I just realized, I missed a description there ...

I guess the naming should reflect the effect of the flag. If we only control immutability with it then sure we should call it Immutable. But I'm wondering that there might be other situations where we want to disable complex validations. E.g. we have a validation webhook check in nova that you should not deploy metadata in cell0. So disabling such complex validation would not be an immutability change but more like an advanced operation that we only allow if you are super sure about it. (Note that the nova example might be a wrong one as I don't see why somebody want to ever deploy metadata on cell0, but similar complex rule might exists elsewhere).

i dont partcallay like disableValidation as we are not going to disabel all validation.
im -1 on having a flag to disable all validation. this is also not really a validation
a validation would simply be checking that the db instance exists and possibly that the table exists.
maintenance mode or similar i think would be better capture that you are only performing a day two operation such as relocating the db. in mantance mode we could do something like scale down to 0 API instance until you set it to false so  the workflow would be:

enable maintance mode (scale down placement to prevent new requests)
dump the db
restore it to and different db server
update the reference to the new instance and unset maintance mode

in 1 we would scale down the API so that no new requests can happen
2/3 would eventually be automated
4 would restore api access with the container pointing at the new db.
any attempt to update the db outside of maintance mode would be blocked.

just to be clear if we add a maintenance mode option I'm ok with relaxing validation slightly during mantaince mode as long as we reseert it when exiting it.

I can compromise on "maintenanceMode" over "advancedMode" or "sureIKnowWhatI'mDoingMode" (OK, I'm kidding on the latter), but "maintenanceMode" still feels a bit too specific to one given process.

just to be clear if we add a maintenance mode option I'm ok with relaxing validation slightly during mantaince mode as long as we reseert it when exiting it.

Ohh that is a very good point. We need to be careful if this mode allows persisting a value that otherwise would be rejected not because of the fact that it is a change but because of the specific new value itself, then we cannot re-enable the strict mode any more.

I'd still disagree with the raw maintenanceMode because the aim of maintenance is not clear. We should probably name it databaseMaintenanceMode though that does not make much difference from the original proposal to have specific flag to make databaseInstance immutable ...

Just adding my 2 cents in here. But I feel like if we need a maintenance mode, we might be making things a bit too complicated. Like you just discussed in the later comments, it introduces more complexity that we need to handle somewhere.
If we wanted some kind of migration facility, wouldn't it make more sense to provide some interface for that during the reconcileUpdate workflow? Since we expect to be handling schema updates and such during that update workflow, adding some migration workflow there would probably be easier? Rather than having some bespoke maintenance mode?
Also, does seperate DB's for each service mean we're going to run a mysql pod per service? That feels a bit heavy, and I'm not sure I understand what we're going to gain at the scale 90% of our users are at. Maybe in the like the top 5% of large deployments there would be some performance benefit.

I'd still disagree with the raw maintenanceMode because the aim of maintenance is not clear. We should probably name it databaseMaintenanceMode though that does not make much difference from the original proposal to have specific flag to make databaseInstance mutable ...

the thing is will it only be the database, or is some other parameter coming next. Placement is simple and does not have a lot of params, but for other services there are probably more parameters which per default should not change after the initial create.

Just updated the PR to clear some of the earlier comments. We still have to agree with the overall design but I kind of feel we are unsure about the plan to support any day 2 operators and if we take the position to "avoid prohibiting anything we can later allow" then we'd probably abandon the whole work (at least I'm making here), just hoping users would not do anything unsupported.

Updated the PR to clear some of the earlier comments. We still have to agree with the overall design but I kind of feel we are unsure about the plan to support any day 2 operators. If we take the position to "avoid prohibiting anything we can later allow" then I'd probably abandon the whole my these validations works, just hoping users would not do anything unsupported.

I'm just concerned that we will have users accidentally changing this and ending up in a mess. We need to consider the type of support cases that are going to come up, and what the actual recovery procedure will look like. My concern would be that if this particular issue come up, then it will automatically become an escalation and the recovery of it would be messy.

my original thought was in the future we would just automatically copy the db if you updated the DB instance for what its worth
I didn't think we would need to have any flag to enable that.
the reason i suggested maintenanceMode and not something like databaseMaintenanceMode
is I don't want to see a pattern of MantianceMode propagated in the operators
so if we had a flag at all I wanted to have one that was very generic.
I'm still not really sold on the idea that we need this to be imuatbale and would prefer to trust our users to understand that if the change the database reference it will print to a different db.

the reason i suggested maintenanceMode and not something like databaseMaintenanceMode is I don't want to see a pattern of MantianceMode propagated in the operators
so if we had a flag at all I wanted to have one that was very generic.

I understand your points but this requires that we consider all of the maintenance tasks we support in all services, so that we understand what should be allowed in maintenance mode, which would too much expand scope of this work.

would prefer to trust our users to understand that if the change the database reference it will print to a different db.

While maintaining TripleO, we've seen several unfortunate cases where deployments were messed up by wrong edit in  templates. Users might understand the impact of each edit(Note some users sometimes had no idea about the changes they were making in their product, for real) but sometimes but preventing any unintentional edit is merely impossible. Imagine the case where user do oc edit openstackcontrolplane/openstack and unintentionally modified databasInstance: openstack to databaseInstance: openstac.

Imagine the case where user do oc edit openstackcontrolplane/openstack and unintentionally modified databasInstance: openstack to databaseInstance: openstac while editing the spec by editor.

Giving it another thought then this might not cause much serious result as it fails at an earlier point unless there is a DB instance with openstack deployed ... So we don't probably have to consider unintentional edit really.
Though I still feel guarding it is very beneficial for users as well as us. You know how many users changed AZ of existing compute nodes after they created instance on these hosts. Such "unsupported" operation can't be really blocked unless we prohibit these strictly at validation.

changed AZ of existing compute nodes after they created instance on these hosts. S
as an aside that specific example is a bug in the nova API i know how to fix that but we just have not yet
we missed blocking it in one specific edgecase. we do block that in most case except one specific case.

Adding immutability control flags look overcomplicating the API (CRD) design. There are better examples to follow, like immutability control over the ReplicaSet specs. The controller/validation logic should be taking care of it, not asked to be controlled by users

Adding immutability control flags look overcomplicating the API (CRD) design. There are better examples to follow, like immutability control over the ReplicaSet specs. The controller/validation logic should be taking care of it, not asked to be controlled by users.
Neither we need disableValidation flags in CRD, becase for that, the way to go is deploy w/o webhooks

not sure if I get this correct, but this won't work in our case. this would mean if there is a required change for any immutable parameter you'd have to recreate (delete/create) it, or do I get your point wrong?


feat: add missing types

Brief Information
Add missing types
This pull request is in the type of:

[ ] bug fixing
[ ] new feature
[x] others

What does this PR do?

Expose useful types, so it can be imported via echarts
Fixed issues

#19003
Details
Before: What was the problem?

In order to import types that not publicly expose via echarts, the current behaviour is something like this
import { SelectChangedPayload } from 'echarts/types/src/util/types'

After: How does it behave after the fixing?

After the change, users could import type in a correct way:
import { SelectChangedPayload } from 'echarts'

Document Info
One of the following should be checked.

[x] This PR doesn't relate to document changes
[ ] The document should be updated later
[ ] The document changes have been made in apache/echarts-doc#xxx

Misc
ZRender Changes

[ ] This PR depends on ZRender changes (ecomfe/zrender#xxx).

Related test cases or examples to use the new APIs
N.A.
Others
Merging options

[ ] Please squash the commits into a single one when merging.

Other information

Great to see this, thanks!
I found a couple more issues with types: https://github.com/apache/echarts/issues/19003#issuecomment-1713679305


Community template repository

Dear all,
Classeur is a really cool writing environment. Wow :)
One thing I thought of that would be really cool is a community template repository.
Imagine an open repository where everyone can add templates for Markdown invoices, contracts, etc.
These could then be made accessible in Classeur.
What do you think?
~ Robert

Hi @orschiro
Sounds like a great idea, thanks!
Will have to think about the infrastructure and the integration with the app.

@benweet that's great news!
Looking forward to a first prototype to test and contribute to. :)
~ Robert


Why linked channels are only used when whispering?

Does anyone know why in uMurmur linked channels are only used when whispering?
It seems not to be the case for the official Murmur server. As far as I can see the initial implementation of linked channels in uMurmur was also different. The audio was sent to linked channels even for Normal talking, but the commit 477a4a1 changed this.
Is there anyone who witnessed this and remembers why this was done?

You have just saved me a lot of time and effort @unterwulf  with your remark!
I have spent the better half of the day trying to figure out why my umurmur installation (on a Synology NAS device) was not working correctly when it came to the Linked Channels configuration and behavior!
Thank you!

It's a misinterpretation of the Murmur imlementation. Should be fixed with #152.


If a controller has a param it's not send to the child routes

@Controller('api/cache/:env')
export class CacheController {
  @Get('')
  public async get(req: Request, res: Response) {
    req.params.env // this is undefined
  }

You need use the @ClassOptions({mergeParams: true}) option. That is a requirement for working with nested express routes.

I saw that and adding it worked.  But as I'm not using nested routes it seems a bit surprising as a new user coming to the api.  I would think the controller's method would always have access to the params of the controller.

I personally never used that option either and only learned about it from others. Under the hood Overnight does merge nested routes. The controller uses a express.Router() object and the methods are done with router.get() router.post() etc. So in a way you could think of it as nesting routes the same way you would with express.


Think about rewriting the language using a incremental compiler.

first write a subest of brisk that translates directly to wasm. then add in a heap and stack. then add in first class functions, then add in strings, then add in closures and so on.

Language Spec Ideas Below

Built In Functions

[ ] Memory

[ ] Load
[ ] Store
[ ] Copy
[ ] Fill
[ ] Grow
[ ] Size

[  ] i32, i64, f32, f64

[ ] add
[ ] sub
[ ] mul
[ ] ...etc

[ ] Global

[ ] return

Create Some way for calling raw wasm.

Data Storage

Optimization

Brisk Compiler ir

Brisk Linker

Brisk Compiler

Brisk Cli

General Specs

File Types
Brisk programs are marked with the file extension .br, brisk uses toml for all cli related processes, such as incremental build data, your program description file, and anything else.


Add double precision option

:)

One small thing: I like to keep defines as short as possible while still being unambiguous, so DVECTOR_DOUBLE would be preferrable.

Done.

I was considering that sinf etc. may not be necessary in C99, but there are a number of integer literals, which are treated as doubles by math.h unless cast to something else. dvector does cast to DVTYPE in many places, but the logic is not completely clear to me. Any thoughts on this?

dvector does cast to DVTYPE in many places

It doesn't, not explicitly anyway. The way it's made is so that any integer literals are automatically promoted to DVTYPE according to C's type promotion rules. (Maybe C++ is different, you're more familiar with it than myself.)
Example (Lines 417-420):
VDEF quat quatAxisAngle (vec3 a, DVTYPE r) {
    DVTYPE s = DVSIN(r/2);
    return QUAT(a.x*s, a.y*s, a.z*s, DVCOS(r/2));
}

Both integer literals are of the form r/2, causing implicit conversion rules to result in promotion to DVTYPE because r is DVTYPE. As such, using the type-generic macro in place of DVSIN should work just fine.
The reason why I'd like to avoid type generic macros anyway is that they require the header tgmath.h, and having as few includes - even standard headers - is generally a good thing cause sadly not all C implementations fully comply to the standard (and dirty ones will just use math.h's sin instead of the macro, thus causing double precision to be utilized unnecessarily).

Understood. Better to play it safe.


GH-701: Support ConsumerRecords (@Klistener)

Resolves https://github.com/spring-projects/spring-kafka/issues/701
Support passing the entire ConsumerRecords<?, ?> object to the listener.
Record filtering is not applied in this case.

Merged as https://github.com/spring-projects/spring-kafka/commit/91e0f62908f2270647df16818e18b19d0e08f19e


Lombok should not enable annotation processing

Short description
It's impossible to compile an annotation processor since it requires annotation processing to be disabled.
This kind of help doesn't help:
https://github.com/mplushnikov/lombok-intellij-plugin/blob/master/src/main/java/de/plushnikov/intellij/plugin/activity/LombokBuildManagerListener.java#L21
Expected behavior
Lombok plugin should not interfere with annotation processor settings.
Version information

IDEA Version: 2022.1.3 .
Lombok Plugin Version:  221.5921.22

Additional information
https://youtrack.jetbrains.com/issue/IDEA-267953/LombokBuildManagerListener-must-not-enable-annotation-processing-automatically-on-every-build

fixed


Provide design for generating convience methods from Cadl

Simple convenience method generation
This issue tracks the work to define the output of the DPG generator for convenience methods generated on a DPG client from Cadl.
Scope of issue
Provide design for basic synchronous REST operations with simple models, e.g. flat models with primitive property types.
This will cover the following cases:
HTTP Method:

[ ] Create (POST)
[ ] Read (GET)
[ ] Delete (DELETE)

Parameters:

[ ] Input/Output model (Create)
[ ] Output model (Get, ambiguous method call)
[ ] No input or output model (Delete, ambiguous method call)

Convenience method definition

Method signature
Parameter checking
Diagnostic scope
Input model conversion to RequestContent
Creation of RequestContext from CancellationToken
Call to protocol method
Response conversion to output model

Example
The example uses petstore.cadl as input.
Implementation
Implementation work tracked in https://github.com/Azure/autorest.csharp/issues/2335
Full scope of convenience method design (out of scope for this issue)

[ ] Specify subset of operations to generate convenience methods for
[ ] Generate all models
[ ] Generate convenience APIs for PATCH operations (models may be different) - e.g. Update
[ ] Provide design for convenience methods for Paging and LRO

Is it a valid case that a convience method takes json (requestContent) as input and returns a model?
It is a kind of partial support of model in API.

Design

Method signature - Create method signature according to rules described in Create convenience method signature
Parameter checking - Models are service parameters and should not be validated according to the .NET guidelines on parameter validation
Diagnostic scope - Do/do not create a diagnostic scope according to the following rules discussed in greater detail here:

Do not create a diagnostic scope if the convenience method has the same name as the protocol method
Do create a diagnostic scope if the convenience method has a different name from the protocol method.

Input model conversion to RequestContent
Creation of RequestContext from CancellationToken
Call to protocol method
Response conversion to output model

Is it a valid case that a convience method takes json (requestContent) as input and returns a model?

@lirenhe, it is not a valid case that I am aware of. What motivates this question (what real world scenario are you thinking of)?

When I investigated Go DPG with a 3rd party library for documentDB, https://github.com/a8m/documentdb, I found they are using the similar approach:
Some of the APIs are protocal methods directly:  https://github.com/a8m/documentdb/blob/5b41ba0aaeb1e362da52ea4c20fafe97dd1e314b/client.go#L40
Other methods contain the model but they only provide the model for the response:  https://github.com/a8m/document db#readdatabase
Do we have users who prefer the input is json format but they want models as the output.
I don't have a real scenario now and probably this is not a valid case, but do we have any user study for this pattern?

The methods are internal, so it might not matter initially, but I think long term the To and From methods should take ServiceVersion parameter. I can imagine serialization having to work slightly differently depending on which service version is called.

Separately, we should think (long term) what we want the methods do. I am not thrilled about using the JSON serializer. We should generate writing code using Utf8JsonWriter only, and reading code should using JsonElement only. Also, I would love to optimize Utf8JsonContent. e.g. can it pool the buffer? Can it write directly to the output stream?

Approved in the 07/21 design discussion, with follow-up issues filed.


fix(nuxt): compatibility with ^3.0.0-rc.9

Notes: https://github.com/nuxt/framework/releases/tag/v3.0.0-rc.9

Update compatibility range to include RC constraint (it is a breaking change of nuxt rc.9)

Upgrades nuxt/kit to rc.9 to hide deprecation error. Using a caret range ensures the kit gets updated always for backward compatibility.

Codecov Report

Merging #1623 (289ac58) into v2 (f9843eb) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 289ac58 differs from pull request most recent head f5063b9. Consider uploading reports for the commit f5063b9 to get more accurate results

@@           Coverage Diff           @@
##               v2    #1623   +/-   ##
=======================================
  Coverage   96.89%   96.89%
=======================================
  Files          12       12
  Lines        3159     3159
  Branches      229      229
=======================================
  Hits         3061     3061
  Misses         95       95
  Partials        3        3

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


KAFKA-6752: Enable unclean leader election metric

@junrao pls take a look when you get a chance

merged to trunk and 1.1.


Add Pricing info

Add Pricing info [2813884]
Submitted by tlianza on 1-5-2012 0:00:00
1 votes on UserVoice prior to migration
Your service matches exactly what I'm looking for, but I'm unclear if it's a business I can rely on, or a project that's for fun. If the former, what is the pricing/terms? If the latter, is the code open source by chance?
Response
by Andries Louw Wolthuizen on 15-7-2012 0:00:00
The image proxy is free for use to anyone, and we offer it as-is, it’s just basic image resizing, available to anyone, easy to use. We try to keep everyone as happy as we can.
We, as a company, make websites, web applications and mobile applications, so the image proxy is used by us and our customers a lot. By making it freely available, we gain some experience with different user cases, and our customers appreciate it too! It’s a service towards our customers, and relations of our customers. We partner with other companies in our industry, and they see the image proxy as a timesaving solution in their projects too. It’s saving us traffic (through compression), and offloading our main servers, because customers don’t have to use poor self-written scripts for image resizing, instead, they can direct it to images.weserv.nl, which is dedicated to the task. Operating costs of the image proxy are very low for us, the traffic is already paid for (we operate our own gigabit uplinks). We intend to keep the service running for many years to come.
Try it for yourself, if you experience problems or if it doesn’t meet expectations, mail us.
If you’re however interested in running the source code yourself, and use the service internally, please e-mail me on postmaster at weserv dot nl. The code isn’t open source, as in, open for everyone, but we do let company’s run it internally, which is evaluated on a case-by-case basis. The whole system is written in PHP, uses an file-based caching system, and on top of that utilizes normal HTTP reverse proxy’s to perform well under excessive load.
I hope to have answered your question.
Comments
Comment by Andries Louw Wolthuizen (Webmaster, Images.weserv.nl - Image cache & resize proxy) on 1-5-2012 17:23:00
The image proxy is free for use to anyone, and we offer it as-is, it’s just basic image resizing, available to anyone, easy to use. We try to keep everyone as happy as we can.
We, as a company, make websites, web applications and mobile applications, so the image proxy is used by us and our customers a lot. By making it freely available, we gain some experience with different user cases, and our customers appreciate it too! It’s a service towards our customers, and relations of our customers. We partner with other companies in our industry, and they see the image proxy as a timesaving solution in their projects too. It’s saving us traffic (through compression), and offloading our main servers, because customers don’t have to use poor self-written scripts for image resizing, instead, they can direct it to images.weserv.nl, which is dedicated to the task. Operating costs of the image proxy are very low for us, the traffic is already paid for (we operate our own gigabit uplinks). We intend to keep the service running for many years to come.
Try it for yourself, if you experience problems or if it doesn’t meet expectations, mail us.
If you're however interested in running the source code yourself, and use the service internally, please e-mail me on postmaster at weserv dot nl. The code isn't open source, as in, open for everyone, but we do let company's run it internally, which is evaluated on a case-by-case basis. The whole system is written in PHP, uses an file-based caching system, and on top of that utilizes normal HTTP reverse proxy's to perform well under excessive load.
I hope to have answered your question.
Comment by Anonymous on 23-8-2015 1:47:00
thanks
Original UserVoice Submission

I am a bit confused about these comments.
Are you talking about https://github.com/weserv/images or is this issue a different thing?:

The code isn’t open source

Really?  In other answers you say different things:
https://images.weserv.nl/faq/#is-the-code-open-source

The whole system is written in PHP

C++ 92.5%
Perl 3.7%
CMake 2.3%
Dockerfile 1.2%
Other 0.3%

Where is the PHP stuff?

Sorry and thanks, that explains it all.


Add GPU Euler-Maruyama SDE solver

using DiffEqGPU, SimpleDiffEq, Test, StaticArrays, StochasticDiffEq, BenchmarkTools

# dX_t = u dt + dW_t
f(u, p, t) = u
g(u, p, t) = u
u0 = @SVector [0.5f0]

tspan = (0.0f0, 1.0f0)
prob = SDEProblem(f, g, u0, tspan)

Convergence Test (Red: 0.5*exp(t), dt = 1e-3, trajectories = 1000)

We are doing good in benchmarks even on a relatively smaller problem with fewer time-steps (Laptop GPU + CPU):
using DiffEqGPU, StaticArrays, StochasticDiffEq, BenchmarkTools

# dX_t = u dt + dW_t
f(u, p, t) = u
g(u, p, t) = u
u0 = @SVector [0.5f0]

tspan = (0.0f0, 1.0f0)
prob = SDEProblem(f, g, u0, tspan)

prob_func = (prob, i, repeat) -> prob
monteprob = EnsembleProblem(prob)

dt = Float32(1//2^(10))

@benchmark sol = solve(monteprob,EM(),EnsembleCPUArray(), dt = dt, trajectories = 10_000, adaptive = false, save_everystep = false)
# 338.686 ms

@benchmark sol = solve(monteprob,EM(),EnsembleThreads(), dt = dt, trajectories = 10_000, adaptive = false, save_everystep = false)
# 139.268 ms

@benchmark @CUDA.sync sol = solve(monteprob,EM(),EnsembleGPUArray(), dt = dt, trajectories = 10_000, adaptive = false, save_everystep = false)
# 330.102 ms

@benchmark @CUDA.sync sol = solve(monteprob,GPUEM(),EnsembleGPUKernel(), dt = dt, trajectories = 10_000, adaptive = false)
# 76.011 ms

Speed-up:

EnsembleCPUArray: 4.5x
EnsembleThreads:  ~2x
EnsembleGPUArray:  4x

@ChrisRackauckas


Readme need to update for run the test at unit-test-cloud-functions

I try to run the test by using readme on https://github.com/firebase/quickstart-testing/tree/master/unit-test-cloud-functions. It returns an error.
I am using ubuntu 20.04
firebase emulators:exec --project=fakeproject' npm run test'

error: missing required argument 'script'

need to update to
firebase emulators:exec --project=fakeproject 'npm run test'

Fixed by #58


GUI Tab to download user created Wallpapers

So on some site with free host of files there could be user hosted images like .bmp and one for preview with all layers merged so it can be shown in the GUI of app.
I gues it is a must since there are not much parallax images out there in internet. And most of it directs to android apps or sizes.
I see it just like KDE backgrounds from users.

Someone already mentioned this on our Discord and I think this is a very good idea. I'm going to implement it in the future.


Add WC fix

From #126 - make sure Developer role has WC roles in basic & master branches

Added in 13d8656


Validate Input & Select Type

Validate Input & Select Type
User Story
AS AN employee with access to sensitive data
I WANT to randomly generate a password that meets certain criteria
SO THAT I can create a strong password that provides greater security
Acceptance Criteria
WHEN I answer each prompt
THEN my input should be validated and at least one character type should be selected

Made it so that if no character options are selected, the password generated defaults to lowercase characters.


no support for MSI (Plessey) barcodes

lib does not support https://en.wikipedia.org/wiki/MSI_Barcode
specification is open, AFAIK there are no license restrictions

suggested fix : https://github.com/WhyNotHugo/python-barcode/pull/191
fails some tests, however I am not familiar at all with those so some assistance would be appreciated

Left a comment on the PR in regards to variations of MSI.


  I used 'drupal_build_composer_project: true' and can't find the drupal codebase anywhere in my local filesystem.  I can vagrant ssh in and see it in the vm.  Site works fine.

@brentratliff - I wonder if it might be NFS issues. See https://github.com/geerlingguy/drupal-vm/issues/1210 and https://github.com/mitchellh/vagrant/issues/8359
It might just be that VirtualBox 5.1.16 is causing the issue. Try downloading 5.1.14, and installing that older version. That may be it.
Another alternative is to switch the vagrant synced folder type to rsync. That works for me (though there are some other annoyances inherent with that type).

@brentratliff - It's definitely not you :)
Please either downgrade to VirtualBox 5.1.14, or upgrade to the 5.1.17 preview release. This should be resolved once 5.1.18 comes out!

Thanks for the quick reply. 5.1.18 fixed it and another issue that caused 5 local sync attempt failures previously.  The good news is that maybe I'm not crazy after all.

@brentratliff - Excellent! Glad they could release 5.1.18 so quickly. I'm building new base box versions with guest additions for 5.1.18 now.


[Bug] Part of the name still appears with "Hide Note Titlebar" on Mobile

Describe the bug

Does not disappear the page name entirely after activating "Hide Note Titlebar". It only happens on Mobile.
To Reproduce
With the Styles Settings plugin installed, search for "🪠 Feature Toggles" in Prism Theme and enable Hide Note Titlebar.
Expected behavior
It's just a line with nothing written, like on a computer.
Screenshots
https://user-images.githubusercontent.com/85803620/168470466-06bbaae6-797a-46e8-9d44-d74b4d05f386.mp4
Setup Information

Device Type: Smartphone Android
Operating System: Android 11 | LineageOS 18.1
Prism version: v2.1.1
Color Schemes Used: Mocha
Obsidian Version: 1.2.0

This should now be addressed in Version 2.3.0.


Disable file preview

Is there a way to disable file preview in the component? It works great with an image, but with any other file, I just get a big block that says that the preview is not supported.

Hi! You could try using the 1.1.9 release, which does not have file preview.
I might push an update that minimizes the box when there is no preview, I can't confirm when I can do that though.
If you can work with the source code, feel free to make a pull request that adds this!

Thank you for the quick response!


Sometimes it works sometimes it loads like below. Any suggestions would be appreciated.
I am creating a portfolio page and loading content from Firebase. The page doesn't render until I have retrieved the data so I know it's not adding children late. Below you will find the Congifs, JSX, Styles used and a screenshot.

Configs:
const settings = {
	accessibility: true,
	autoplay: true,
	autoplaySpeed: 5000,
	arrows: true,
	dots: true,
	infinite: true,
	speed: 500,
	slidesToShow: 1,
	slidesToScroll: 1,
}

JSX:

	<Slider {...settings}>
		{images && images.map((image, index) => {
			return (
				<div key={`headerImage_${index}`} style={styles.headerImageContainer}>
					<img src={image.url} alt={`headerImage_${index}`} style={styles.headerImage} />

			)
		})}
	</Slider>

Styles (Radium):
headerSliderContainer: {
	width: '100%',
	paddingLeft: layout.outerGutter,
	paddingRight: layout.outerGutter,

	'@media (max-width: 1000px)': {
		paddingLeft: layout.outerGutter / 2,
		paddingRight: layout.outerGutter / 2,
	},
	'@media (max-width: 800px)': {
		paddingLeft: layout.outerGutter / 3,
		paddingRight: layout.outerGutter / 3,
	},
},
headerImageContainer: {
	width: '100%',
},
headerImage: {
	width: '100%',
	height: 500,
	objectFit: 'cover',
	objectPosition: 'center'
},

It's most probably the problem to be solved with CSS. If you can create a codesandbox demo for the same, maybe I can help more.

It seemed my issue was related to https://github.com/akiran/react-slick/issues/809 and resolved by https://github.com/akiran/react-slick/issues/809#issuecomment-344969721

This looks like an actual problem. I'll be working on it, please follow #809 for updates.

Thank you @laveesingh I will also try to replicate my setup with codebox today to help assist.

Demo: https://codesandbox.io/s/m3v7yp6o78
Info:
It looks like the primary cause of the weird render is a delay on rendering. In my setup I am waiting until I have loaded data to display the page. In this demo I simulate that with a timeout in componentDidMount. If you don't see it oddly render try refreshing a few times.
Let me know if I can provide better information here.


Numeric Validation Renders Over Number Toggle

Validations render over the number toggle for numeric values in Safari.  In Chrome and FF, there's a space created for the validation and the toggle is to the right of it.

Expected behaviour
Validation not to render over the number toggle.
Actual behaviour
Validation renders over the number toggle.
Gist/Plunker/Demo
Schema Form Demo
Select Basic JSON Schema Type
@json-schema-form/angular-schema-form-lead

@ashram99 did you have any luck determining why it was happening?

@Anthropic no luck yet.  We've punted this, since it doesn't hamper functionality, but the UI is undesirable,


feat(variance): Computed styles, and configurable CSSType narrowing [GM-233]

Overview

This adds a few new APIs to variance to increase quality of life.
Props with Theme Computations
Certain styles do not have clear scalar values, cases where this occurs are largely secondary color properties - like borders, outlines, and box shadows.  While the first two examples have escape hatches through outlineColor and borderColor something like box shadow does not.  Requiring you to import tokens and template them directly to add colors.
Current Usage
import { theme } from '@codecademy/gamut-styles';

const Card = styled.div(system.css({
  boxShadow: `0px 0px 0px 4px ${theme.colors.navy}`
})

The biggest problem here is that theme values are not guaranteed to exist between applications, pulling in tokens take that may not have references or represent the current theme present areas where regressions are increasingly possible.
To fix this adding the ability to pass a function of theme - to any system property when using them within a variant and css function gives you the ability to use theme values that are guaranteed to be valid by context.
Computational CSS
const Card = styled.div(system.css({
  boxShadow: ({ colors }) => `0px 0px 0px 4px ${colors.navy}`
})

Custom Scale Types
Currently for anything that does not explicity exist on our theme we do not have many options for custom typings for properties.  Using the object syntax presents the same issues as CSS - exhaustive lists of possible values.  This normally is a very good thing as it forces intentionality within props - however many properties do not work with scales and are necessarily open ended.  These properties use pure CSSType (with slight modifications) for their prop signature - which depending on the property can be restrictive or entirely too permissible.
Technically Correct:
<Box width="1020102#" />

To add a secondary level of typesafety between complete string anarchy and endless scale definitions, we can add the ability to define scalar templates with template literal types.
import { variance, createScale } from '@codecademy/variance';

const Box = styled.div(variance.create({
  width: {
    property: 'width',
    scale: createScale<`${number}${'%' | 'px' |  'rem'}`>()
  }
})

Now our props can have an extra layer of typesafety closer to standard CSS validation and highlighting but at the compile level!
// Nope.jpg ❌
<Box width="100$" />

// Yep.png ✅
<Box width="100%" />

How does this work?
While object keys need to be exhaustive and definite, array constituents do not.  By asserting the type of an empty array typescript can infer what a possible item might be through Array[number].  This lets use define huge sets of possible options without a JS equivalent.
  const customScale = createScale<`${number}${'%' | 'px' |  'rem'}`>()  // []
  type ScaleValues = typeof customScale[number] // `${number}${'%' | 'px' |  'rem'}`

Disclaimer
There are a few properties this might work for initially, however width is not one of them.  This is very limited to extremely small sets of possible combinations - while template literals are very powerful they do not work well with complex computations and require limited possible definitions.  Contrived versions like with would not work as we need to support complex CSS math syntaxes like calc(100% - 2rem).

PR Checklist

[x] Related to designs:
[x] Related to JIRA ticket: GM-233
[x] I have run this code to verify it works
[x] This PR includes unit tests for the code change

📬Published Alpha Packages:@codecademy/gamut-icons@4.14.5-alpha.054d6e.0@codecademy/gamut-illustrations@0.17.1-alpha.054d6e.0@codecademy/gamut-kit@0.4.1-alpha.054d6e.0@codecademy/gamut-labs@18.3.1-alpha.054d6e.0@codecademy/gamut-patterns@0.3.1-alpha.054d6e.0@codecademy/gamut-styles@10.2.1-alpha.054d6e.0@codecademy/gamut-tests@2.4.4-alpha.054d6e.0@codecademy/gamut@33.2.1-alpha.054d6e.0@codecademy/konamimojisplosion@0.2.35-alpha.054d6e.0@codecademy/markdown-overrides@0.5.47-alpha.054d6e.0@codecademy/styleguide@40.1.1-alpha.054d6e.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://60b0ff756b255d14408a2493--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-icons@5.1.1-alpha.0abea0.0@codecademy/gamut-illustrations@0.17.3-alpha.0abea0.0@codecademy/gamut-kit@0.4.13-alpha.0abea0.0@codecademy/gamut-labs@19.0.6-alpha.0abea0.0@codecademy/gamut-patterns@0.3.3-alpha.0abea0.0@codecademy/gamut-styles@11.0.1-alpha.0abea0.0@codecademy/gamut-tests@2.4.6-alpha.0abea0.0@codecademy/gamut@34.0.3-alpha.0abea0.0@codecademy/konamimojisplosion@0.2.37-alpha.0abea0.0@codecademy/markdown-overrides@0.5.49-alpha.0abea0.0@codecademy/styleguide@41.2.5-alpha.0abea0.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://60c03196e0fb563fec0f5c6b--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-icons@5.1.3-alpha.838302.0@codecademy/gamut-illustrations@0.17.5-alpha.838302.0@codecademy/gamut-kit@0.4.23-alpha.838302.0@codecademy/gamut-labs@19.5.1-alpha.838302.0@codecademy/gamut-patterns@0.3.5-alpha.838302.0@codecademy/gamut-styles@11.2.1-alpha.838302.0@codecademy/gamut-tests@2.4.8-alpha.838302.0@codecademy/gamut@34.6.1-alpha.838302.0@codecademy/konamimojisplosion@0.2.39-alpha.838302.0@codecademy/markdown-overrides@0.5.51-alpha.838302.0@codecademy/styleguide@41.7.7-alpha.838302.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://60c77a9f952130008ed04f85--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-icons@5.2.1-alpha.7313f0.0@codecademy/gamut-illustrations@0.17.6-alpha.7313f0.0@codecademy/gamut-kit@0.4.26-alpha.7313f0.0@codecademy/gamut-labs@19.6.1-alpha.7313f0.0@codecademy/gamut-patterns@0.4.1-alpha.7313f0.0@codecademy/gamut-styles@11.3.1-alpha.7313f0.0@codecademy/gamut-tests@2.4.9-alpha.7313f0.0@codecademy/gamut@34.7.1-alpha.7313f0.0@codecademy/konamimojisplosion@0.2.40-alpha.7313f0.0@codecademy/markdown-overrides@0.5.52-alpha.7313f0.0@codecademy/styleguide@41.7.11-alpha.7313f0.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://60c8e95843befa32f7527440--gamut-preview.netlify.appDeploy Logs

🚀 Styleguide deploy preview ready!https://60ca68020e863a00d77db81f--gamut-preview.netlify.appDeploy Logs

🚀 Styleguide deploy preview ready!https://60ca6af8f1b662098e289c2b--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-icons@5.3.1-alpha.eaa240.0@codecademy/gamut-illustrations@0.17.8-alpha.eaa240.0@codecademy/gamut-kit@0.4.32-alpha.eaa240.0@codecademy/gamut-labs@19.9.1-alpha.eaa240.0@codecademy/gamut-patterns@0.4.3-alpha.eaa240.0@codecademy/gamut-styles@11.4.1-alpha.eaa240.0@codecademy/gamut-tests@2.4.11-alpha.eaa240.0@codecademy/gamut@34.9.1-alpha.eaa240.0@codecademy/konamimojisplosion@0.2.42-alpha.eaa240.0@codecademy/markdown-overrides@0.5.54-alpha.eaa240.0@codecademy/styleguide@41.10.1-alpha.eaa240.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://60ca6f429f31080a5fdc5c9c--gamut-preview.netlify.appDeploy Logs


Fix failures when SoapFault Detail is an object.

I don't know if this is the right approach but it is an approach :-D Let me know if you'd like it implemented in a different way.

Thanks, switched it to use $this->toJson so encoding errors can be ignored but otherwise the approach is fine IMO


deprecate Obsidian icon

Description
md.obsidian custom icon can be removed due to:

app logo re-design.
app includes their own themed icon which is overwritten by this custom icon.

This change reverts md.obsidian icon addition originally added from https://github.com/LawnchairLauncher/lawnicons/pull/734/commits/78bf188b5cf603380c735c8a33234f36dab4b216

Type of change

:x: Bug fix (non-breaking change which fixes an issue)
:x: Icon addition (non-breaking change that adds/modifies Lawnicons's icons)
:heavy_check_mark: General change (non-breaking change that doesn't fit the above categories, such as copyediting)

Icons addition information

Icons updated

Obsidian (md.obsidian)

I think the icon can stay until someone redesigns it. Better to have an icon for an app than not in my opinion

I think the icon can stay until someone redesigns it. Better to have an icon for an app than not in my opinion

I agree, however now the app includes its own adaptive icon unlike previously.
From my understanding this icon is overwriting the app's one which was recently themed by the dev.
The objective of this PR is to let this new adaptive icon plus it's new logo design be shown instead of the custom one.
On the other hand if this may negatively affect older android versions feel free to close it.

I'm not a mod/admin/owner or anything, but here's my two cents. I believe the purpose of Lawnicons is to create an unified and consistent icon pack with it's own rules. If an app developer creates their own adaptive icon, that won't necessarily mean it will fit this icon pack, and it will break the consistent look.
Therefore, I would suggest to keep this icon until someone designs a new version (one created specifically to fit this icon pack).

I'll be closing this PR. As stated by @RaduBratan, Lawnicons isn't meant to apps that don't yet have an adaptive icon. If I'm not wrong, many apps have adaptive icons but we still have an icon for them in Lawnicons. Thanks for your interest to contribute!


Azure CLI Task throws an error and doesnt do work but task completes succesfully

Hi, when using the Azure CLI task i am getting the below error:
==============================================================================
Task : Azure CLI
Description : Run Azure CLI commands against an Azure subscription in a PowerShell Core/Shell script when running on Linux agent or PowerShell/Powershell Core/Batch script when running on Windows agent.
Version : 2.0.4
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/azure-cli
(node:8400) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'cleanUp' of undefined
This doesnt execute my script but does complete successfully.

@alexatnext Thanks for reporting the issue. We will start working on this soon.

@alexatnext  can you please send debug logs. You should set System.Debug variable with its value true in release definition.

Hello,
I could however i have diagnosed the issue to being when 'scriptType' variable is not set in yaml, is this sufficient information to reproduce? Therefore this is kind of user error, although i would still say the task should error if it doesnt have all required parameters?
Thanks,
Alex


1.17 Server requires Java 16 - Synology NAS

We have been running your server using Docker on our Synology NAS, great work!
However, now that 1.17 is available, I get an error on start-up saying that the server needs classfile version 60 and our current version of Java only supports 52. I assume I need to get Java 16 running on my Synology NAS? Any ideas how to do that? The Synology Java app only supports Java 8 as far as I can tell.
Or can I use a different environment variable to get 1.17 running with Java 8?
thanks!

Just coming to say having the same issues with 1.17 following to understand the fix/workaround

Make sure you have pulled the latest image. It was updated to Java 16 several weeks ago.

I did a complete pull of images a few hours ago and tested using the JAVA15 version.. which version should we use?

Use the latest tag or java16. Java 15 is not supported by the 1.17 server.

OK Gotcha... perfect I will get my userguide changed over on my site.

I've been working on it and I'm close, but I still can't get it to work.  The native Synology support is only for Java8. I managed to get Java16 installed using rednoahs' java_installer package. now I can run the 1.17 minecraft server from the command line by typing the command
java -jar minecraft_server.1.17.jar --nogui
However when I try to run the itz latest container on docker I still get

and then

It obviously is still trying to run it using the Java 8 files. I have been monkeying around with the JAVA and JAVA_HOME environment variables but I still can't get it to work.
Any ideas?

The native Synology support is only for Java8. I managed to get Java16 installed using rednoahs' java_installer package.

To be blunt, you're on the wrong path. The itzg/minecraft-server includes Java 16 itself, so it makes no difference if you even have Java installed on your Synology.
If you're running java from the Synology command-line then that's not an issue to report here against this Docker image.

Appreciate the bluntness. I hadnt realized that Java16 was already included in the Docker image.
I started from scratched, pulled the image with the latest tag again, created a new container, and I could see the env variables got set the right way this time. It is running!
thanks again


enable missing_assert_message lint

Enabled the missing_assert_message lint

[x] I have followed the instructions in the PR template

@lucasmerlin could you have a look at it?


Root disk size should be listed in GB at listServiceOffering

Description
When listing service offerings it is expected to list their Root disk size in GB (see documentation [1]); however, it is returned in Bytes.
Additionally, during deployment of a VM or creation of a Service Offering the root disk size is always passed as a value in GB [2].
This PR aims to fix this by converting the root disk size at the ServiceOffering response from Bytes to GB.
[1] http://cloudstack.apache.org/api/apidocs-4.15/apis/listServiceOfferings.html
[2] https://cloudstack.apache.org/api/apidocs-4.15/apis/deployVirtualMachine.html

Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[x] Bug fix (non-breaking change which fixes an issue)
[ ] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)

Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale

[ ] Major
[X] Minor

Bug Severity

[ ] BLOCKER
[ ] Critical
[ ] Major
[ ] Minor
[X] Trivial

Screenshots (if appropriate):
N/A
How Has This Been Tested?

List Service offerings via CloudMonkey (or any other way of calling API). Example: list serviceofferings filter=rootdisksize.
1. Currently
list serviceofferings filter=rootdisksize
rootdisksize
3.221225472e+10
3.221225472e+10
3.221225472e+10
3.221225472e+10
1.073741824e+11

2. With the fix
list serviceofferings filter=rootdisksize
rootdisksize
30
30
30
30
100

@GabrielBrascher this will require change in UI as well. Somewhere here, https://github.com/apache/cloudstack/blob/4.15/ui/src/components/view/DetailsTab.vue#L36-L40

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: :heavy_check_mark: centos7 :heavy_check_mark: centos8 :heavy_check_mark: debian. SL-JID 187

@blueorangutan test

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

@blueorangutan ui

@GabrielBrascher a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.

UI build: :heavy_check_mark:
Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/5085 (SL-JID-224)

It looks like the UI change has been successfully applied.
See http://qa.cloudstack.cloud:8080/client/pr/5085/#/computeoffering/7becb40b-315a-413f-a89a-5a8b8c6b01b0

One can compare with how it was (e.g. at this PR http://qa.cloudstack.cloud:8080/client/pr/5080/#/computeoffering/7becb40b-315a-413f-a89a-5a8b8c6b01b0)


fix(curriculum): binary search tree min/max height

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] All the files I changed are in the same world language (for example: only English changes, or only Chinese changes, etc.)
[x] My changes do not use shortened URLs or affiliate links.

Closes #34725

Hi @Fordco
Thanks a lot for the PR. Can you please remove the changes to the lockfiles. You can reach out to the Contributors Chat room for help. The folks there are amazing and will help with this.
Thanks a lot and happy contributing!

@Fordco Could you provide a solution to this challenge to show the correctness of tests?

@Fordco Could you provide a solution to this challenge to show the correctness of tests?

We used a solution posted by hk-skit in the forum.
https://www.freecodecamp.org/forum/t/data-structures-find-the-minimum-and-maximum-height-of-a-binary-search-tree/215822
Here is the solution:
var displayTree = (tree) => console.log(JSON.stringify(tree, null, 2));
function Node(value) {
this.value = value;
this.left = null;
this.right = null;
}
function BinarySearchTree() {
this.root = null;
// change code below this line
// change code above this line
this.findMinHeight = function(root = this.root) {
// empty tree.
if(root === null) {
return -1;
}
// leaf node.
if(root.left === null && root.right === null) {
return 0;
}
if(root.left === null){
return this.findMinHeight(root.right) + 1;
}
if(root.right === null){
return this.findMinHeight(root.left) + 1;
}
const lHeight = this.findMinHeight(root.left);
const rHeight = this.findMinHeight(root.right);
return Math.min(lHeight, rHeight) + 1;
};
this.findMaxHeight = function(root = this.root) {
// empty tree.
if(root === null) {
return -1;
}
// leaf node.
if(root.left === null && root.right === null) {
return 0;
}
if(root.left === null){
return this.findMaxHeight(root.right) + 1;
}
if(root.right === null){
return this.findMaxHeight(root.left) + 1;
}
const lHeight = this.findMaxHeight(root.left);
const rHeight = this.findMaxHeight(root.right);
return Math.max(lHeight, rHeight) + 1;
};
this.isBalanced = function(root = this.root) {
    if(root === null) {
        return true;
    }

    if(root.left === null && root.right === null){
        return true;
    }

    if(root.left === null) {
        return this.findMaxHeight(root.right) <= 0;
    }

    if(root.right === null) {
         return this.findMaxHeight(root.left) <= 0;
    }

    const lHeight = this.findMaxHeight(root.left);
    const rHeight = this.findMaxHeight(root.right);
    if(Math.abs(lHeight - rHeight) > 1){
        return false;
    }
    return this.isBalanced(root.left) && this.isBalanced(root.right);
};

}

place it in a solution section in the challenge file.

Is that what you meant by challenge file @ValeraS ?

Find in the committed file lines:

```js
// solution required
```

and replace // solution required to the solution.

Find in the committed file lines:

```js
// solution required

```
and replace `// solution required` to the solution.

We update the pull request to include the solution. Thanks for your help!

Hi @ValeraS  and @raisedadead
I was wondering if anything else needs to be done for this PR to be merged?

@Fordco It just needs to be reviewed thoroughly and we still have many ahead of yours.  Don't worry, we will eventually get to yours.

Thanks, just checking if there was anything else needed on my end.

@thecodingaviator
The last test case is wrong. That is why the currently provided solution fails the last test.

@thecodingaviator
The last test case is wrong. That is why the currently provided solution fails the last test.

This pr will fix the incorrect final test case. A previous valid solution was used to verify that the change made will correct the test case so all test cases pass when a correct solution is submitted.

Ah, alright

Is there anything I need to do to resolve the conflicts on the branch?

Yeah, please go ahead and fix the merge conflict

@Fordco There still seem to be some merge conflicts on my end, can you see them?

@thecodingaviator Yes I saw them, sorry about that. I just fixed them now. I think I accidentally requested a review from Quincy Larson in the process, that wasn't intentional.

Actually @thecodingaviator  @RandellDawson  I think I messed something up when I tried to fix the merge conflict. I only wanted to merge one commit from my branch, not 1,454.

@Fordco did you rebase the branch before pushing? That's the most likely error

@Fordco What I'd suggest you do is pull a fresh copy of the latest master branch, make your changes on that fresh copy and push it here

Great, I'll try that now.

@Fordco We're trying something here too

@thecodingaviator  So should I still try what you suggested or should I wait?

@Fordco Wait just a bit.  @thecodingaviator and I are discussing the best fix.  We will let you know soon.

@RandellDawson  Will do. Sorry for causing trouble.

@Fordco Now, please check if the changes you wanted to have been made

@Fordco I believe I resolved everything.  Definitely review it one last time, before we merge it, to make sure this is how you want the PR.
FYI - It added Quincy because of all those other files you accidentally added.
I was also able to clean up the git history to be a single commit.

@thecodingaviator @RandellDawson  Thanks for the help! Sorry again.
Yes, the PR now looks correct and includes the changes I wanted made.

@Fordco Go over this once would help: https://gist.github.com/thecodingaviator/db4c142a6f21d1c1a19d53fc7c11d5c5

Thanks @thecodingaviator

Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 📝

@Fordco Please open a PR to fix the guide article for this challenge

@thecodingaviator I can do that. Is this the guide article you mean? guide/english/certifications/coding-interview-prep/data-structures/find-the-minimum-and-maximum-height-of-a-binary-search-tree/index.md
What would you like me to contribute to it?

Change the solution given in that file so that it contains the correct solution to this challenge

We made a PR adding the solution to the guide article, #35938.


Make clang compile without warnings.

Rule out accidental usage of integer-only ::abs.
Correct static, override and protected annotations.

@wally-the-cartographer merge

Merge requested by authorized user gaschler. Merge queue now has a length of 1.


no refresh spinner in Feed except as you are pulling down

the pull action still shows a spinner. no hack needed. bounces back up right after pull is over

Yea but it only shows while you are pulling. If the refresh took 5 seconds to complete, the user would be left with impression that the refresh is done at that it finished immediately.

i'd lean toward just going with that

I was just looking at the different places we have pull to refresh UI and what happens in each case. Might be worth reviewing together to make sure it's right. In many cases we're just calling refreshMessages which, based on our conversations yesterday, i'm still not sure is correct/needed.

This is an easy fix to allow the user (and us, for debugging and understand how the app is performing) to actually know when a refresh is complete. Why wouldn't we want that?

i was under the impression the opposite, that that was the only thing ever needed in a - please force a refresh - scenario.
longer term, i'm with you. shorter term, i've seen the dismay of releases where endless refresh spinners stick there and we aren't certain why. we'll need to spend time here investigating.
on top of that, you'll need to update refreshmessages to return an empty 'done refreshing' event or i'm not sure how else you'll get it.
or you could put a middle ground hack where it times out the ui refresh after so long if it doesn't get a message, but that's a hack so what's the point also.
final point in slack


Downloading stuck when compressing file

Steps:

Go https://twitter.com/imasml_official
Click "Media batch download"
Check everything expect "dry run“
Fill in  (blank) < ID <<PHONE_NUMBER>37028097, limit = 100
Starts

What happened: after downloaded 100 tweets, it is stuck and never generate zip file.

It doesn't seem to be very reproducible, though. I can currently reproduce it reliably on my main account, but not with a different twitter account in a separate profile.
But that second account get stuck at this point:


Plugged.prototype.getCSRF fails

plug.dj has updated their website.
This has caused var idx = body.indexOf("_csrf") + 7; to be incorrect.
At a minimum it needs to be updated to var idx = body.indexOf("_csrf") + 9; to work currently.
Slightly more robust method would be to work out the space between var _csrf and the start of the csrf
        var idx = body.indexOf("_csrf");
        var idx = idx + body.indexOf('\"', idx) - idx + 1;

The best solution would be to make use of https://plug.dj/_/mobile/init which has the csrf and other variables in JSON format.

Hey Nodle,
thanks for your input! I will apply the hotfix asap.
To the link, that's great information! It makes the whole startup a tad faster on slower connections too.
Plugged is currently in the transition to 3.0.0 but sadly university is keeping me plenty busy so it's still an ongoing process. will make sure that 3.0.0 will use the /init route then!
greetings
Sooyou


drud/ddev webhook integrations are mostly broken

Is there an existing issue for this?

[X] I have searched the existing issues

Run a Diagnostic and Paste Link Here
No response
Expected Behavior
Webhooks and commit statuses should be working.
After the move to ddev/ddev we don't have

Integration with gitpod
Integration with any of the buildkite builds
(?) Proper CircleCI integration
Proper readthedocs.io integration.

Actual Behavior
No updates from gitpod, etc.
Steps To Reproduce
No response
Anything else?
No response

For a look at the integrations we had on drud/ddev see https://github.com/ddev/ddev/pull/4647

These are all fixed


fix: database is not encrypted

Current version of op-sqlcipher is not encrypted at all (if you open file in plain text editor you can see data).
This is only draft as I am in the middle of investigation why it doesn't work, also I am testing this only on iOS for now.
What I found so far:

There needs to be some flags during compiling process so I added them https://github.com/sqlcipher/sqlcipher#compiling - Not needed, output is same anyway according to git diff
I added OpenSSL which is needed to handle encryption
I added these flags to podspec GCC_PREPROCESSOR_DEFINITIONS otherwise Cipher part is not compiled into final app and key is ignored

DB file seems to be encrypted now 🎉
I will continue to report here as I move on with debugging.

Mistake seems to be in JS, there was missing key for db open in queryLargeDatabase and that's reason why it fails. Now it seems to work for iOS.

iOS seems to be working 🎉
moving to Android

Android will be bit more complicated than I expected. Other than flags you need to also OpenSSL as well, but there is no gradle package for that so I will have to include whole source of openssl using git submodules or something.
Other simpler solution could be to use something like this https://plugins.gradle.org/plugin/com.oldguy.gradle.sqlcipher-openssl-build where is both SQLite Cipher + OpenSSL
Not sure which solution I should pick.
Maybe it worth to mention here that there is also Cocoapod package for SQLite Cipher so maybe we can just use third party packages and not include sqlite source at all? https://cocoapods.org/pods/SQLCipher

Awesome! Thanks for taking a look!
Interesting, I didn't know one needed OpenSSL in the dependencies, I thought the amalgamation would include the sources already. But good that you figured it out.
As for Android, let me check, maybe openSSL can already be linked in CMakeLists.

Just committed a the correct compilation for Android. Downloaded the DB and it is encrypted. I will merge your changes and publish a new version so you can test.


[core] - Move core-rest-pipeline and packages that depend on it to core-tracing Preview 12

Because core-rest-pipeline 1.1.0 is in beta, and packages still depend on 1.0.x core-rest-pipeline, we're unable to upgrade them to core-tracing preview 12 without a hotfix to core-rest-pipeline.
We already upgraded all the core-http based packages to core-tracing preview 12. This issue tracks upgrading the rest of them. It's blocked; however, pending GA of core-rest-pipeline 1.1.0
If we move core-tracing to 1.0.0 this issue will track moving the rest of the packages to that version.

Closed via #15923


docs(ComponentCard): prevent label prop as select

Fixes #567

It is a hack but I think its good enough as its for the documentation. Thanks! 😊


How to get curret time of deleteOldOtps

event to try resend, i need to get current time expired

You can get something like these
$identifier = Str::random(12);
        Otp::generate($identifier);
        $expires = Otp::expiredAt($identifier);

Thanks for creating an issue!.

You can get something like these
$identifier = Str::random(12);
        Otp::generate($identifier);
        $expires = Otp::expiredAt($identifier);

Thanks for creating an issue!.


Should.js for the browser

I would like to use Mocha BDD and run specs in the browser. Would be nice to have a build of should.js that doesn't rely on Node's stuff.

the design of should is pretty specific to modern js implementations that support accessors etc, my co-worker guillermo is almost done a nice option though using expect(foo).to.equal(bar) etc, so it's similar

Safari 5.1 -- everything works OK for me.
> a = {true: false, if: true, while: true}
Object
> a.while
true

:+1: to this issue.

Alternatively, you could use Object.defineProperty to define those few keyword properites, e.g.:
Object.defineProperty(Assertion.prototype, 'true', { get: function() {
  this.assert(
      true === this.obj
    , 'expected ' + this.inspect + ' to be true'
    , 'expected ' + this.inspect + ' not to be true');
  return this;
}});

I think there might still be a problem with instanceof() method, but it could be renamed to instanceOf(). I know it's meant to resemble the operator, but I guess it's also not a bad idea to make it consistent with lengthOf().

Object.defineProperty isn't available in all browsers

For me supporting relatively modern browsers would be enough. However, I've just tested it and even though I can define a property called 'true' with Object.defineProperty in some older version of JavaScriptCore (Safari's engine), it will still throw a SyntaxError when I try to use it in a test (something.should.be.true).
Still, this makes should.js run in older browsers (they will parse the JS without problems). The test itself must use alternative syntax though (something.should.equal(true)). The only problem is that chaining would require some alternative word instead of with, maybe having or that.has.
Actually, I'm working on making should.js work in PhantomJS which uses JavaScriptCore and I encountered another weirdness:
'test'.should.equal('test')

Results in:
AssertionError: expected { '0': 't', '1': 'e', '2': 's', '3': 't' } to equal 'test'

This seems to affect primitive types only. The lame fix I came up with is:
Object.defineProperty(Object.prototype, 'should', {
  set: function() {},
  get: function() {
    // TODO: who knows why this is needed in JavaScriptCore
    // if not applied, "test" becomes { '0': 't', '1': 'e', '2': 's', '3': 't' }
    // and 123 becomes {}
    if (this instanceof String || this instanceof Number || this instanceof Boolean) {
      return new assert.Assertion(this.constructor(this));
    }
    return new assert.Assertion(this);
  },
  configurable: true
});

If you are interested in merging those hacks, I can make a pull request.

Having some free time I've made those modifications that make should.js work on JavaScriptCore:

a workaround for a weird behavior of converting primitives to objects in JavaScriptCore
made keyword properties compatible with older browsers

I tried to modify as little code as possible. Nothing should be broken, all the tests pass. It should be easy to load it in a browser now using RequireJS.

one advantage of "expect(x).to.eql(4)" over x.should.eql(4) is that it can
handle the case where x is null (as should cannot bind null or undefined
^n^ )
On Wed, Nov 30, 2011 at 5:11 PM, Juliusz Gonera <
<EMAIL_ADDRESS>
wrote:

Having some free time I've made those modifications that make should.js
work on JavaScriptCore:

a workaround for a weird behavior of converting primitives to objects
in JavaScriptCore
made keyword properties compatible with older browsers

I tried to modify as little code as possible. Nothing should be broken,
all the tests pass. It should be easy to load it in a browser now using
RequireJS.

Reply to this email directly or view it on GitHub:
https://github.com/visionmedia/should.js/issues/26#issuecomment-2962695

True, but you can also check should.exist(x) first. Anyway, I would like to be able to use both. BTW, is the "expect" version/patch of this library available somewhere already?

yeah, that's a slight advantage, though it will break on null/undefined anyway, so it's essentially the same just not a nice message :) it's worth it IMO

Shoot. Without should.js working in the browser it's not a very viable alternative to Jasmine (if you're testing client code).

should.js isnt a requirement at all, you can use any assertion lib you want

I guess we're talking about mocha now ;)
I think it would be nice if should.js worked in browsers too. I don't know how the browser version of mocha works, but how about making both of them AMD-compatible?
Also, would you mind if I made a pull request of those two commits I mentioned (I mixed up names/urls in the previous message but I fixed it)?

meh I'm not a fan of AMD, nor do I want to restrict their use to AMD. It wouldn't be difficult to make should work browsers, but with the current style of the lib it would be restricted to modern browsers

As I said, I'm in favor of making it work only in modern browsers. As for AMD, many libraries detect it and work both with and without it (e.g. jQuery), also without much additional work.

Modern browsers would be better than no browsers. I really like should and would love to use it in the browser.
Speaking of AMD, its only a couple lines of code to optionally register as AMD like jQuery, backbone, and underscore do. Probably a separate issue though.

yeah im sure someone could have a generic AMD wrapper script thingy, as for making should work in the browser, we could add the little script i use in jade and some others, or @guille created https://github.com/learnboost/browserbuild we could run it through that and see how it goes

I went ahead and made an assert implementation that works for both node.js and browser. Its at https://github.com/logicalparadox/chai/. Has a should interface which is completely API compatible, or your can use expect() if you want your tests to run on both sides.

FWIW, here's my implementation
https://gist.github.com/ad4ced5c2ecd5fb50eb2

I have docs et all but they're in the hard drive with the backup from my laptop that was in the fire, I'll recover it soon

Check if the value is truthy:  this.obj == true
should this be:  !!this.obj == true
?
On Thu, Dec 15, 2011 at 6:02 PM, Guillermo Rauch
<EMAIL_ADDRESS>wrote:

I have docs et all but they're in the hard drive with the backup from my laptop that was in the fire, I'll recover it soon

Reply to this email directly or view it on GitHub:
https://github.com/visionmedia/should.js/issues/26#issuecomment-3166248

+1 for having should.js work at least in modern browsers. In the mean time, I'm going to use @guille gist.

I'm using it too but having troubles with the html reporter, it just says "Script error" whenever an assertion throws. I'm not sure if that's the normal behavior though. @visionmedia any idea?

c4milo with mocha + chai? not sure what we're talking about

ops, yes, mocha + chai.

hmm could be chai

@c4milo please post up your specs on chai issues and we can see whats going on

@logicalparadox https://github.com/logicalparadox/chai/issues/4

closing this since we have chai

le chai


[release-1.24] Service LB seems redirecting traffic to other nodes, even externalTrafficPolicy is Local

Backport:

#6633

Validated on 77dbe648
$ k3s -v
k3s version v1.24.10+k3s-77dbe648 (77dbe648)
go version go1.19.5

Environment Details

Infrastructure

[ ] Cloud
[ ] Hosted

Node(s) CPU architecture, OS, and Version:

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu

Cluster Configuration:

1 server, 1 agent

Config.yaml:

$ cat config.yaml
write-kubeconfig-mode: 644
debug: true
token: puravida
cluster-init: true
disable:
  - traefik
  - local-storage

Additional files

apiVersion: v1
kind: Namespace
metadata:
  name: front-nginx

---
apiVersion: v1
kind: Service
metadata:
  namespace: front-nginx
  name: nginx
spec:
  type: LoadBalancer
  selector:
    app: nginx
  externalTrafficPolicy: Local
  ports:
    - protocol: TCP
      port: 80
      appProtocol: http

---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: front-nginx
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.23.2-alpine
          ports:
            - containerPort: 80

Testing Steps

Copy config.yaml

$ sudo mkdir -p /etc/rancher/k3s && sudo cp config.yaml /etc/rancher/k3s

Install k3s and join the agent node
Ensure cluster is up then apply the yaml
Ensure pod are running

Validation Results:

$ kubectl get nodes
NAME               STATUS   ROLES                       AGE   VERSION
ip-172-31-36-177   Ready    control-plane,etcd,master   19m   v1.24.10+k3s-77dbe648
ip-172-31-40-199   Ready    <none>                      12m   v1.24.10+k3s-77dbe648

$ kubectl get pod -A -o wide
NAMESPACE     NAME                              READY   STATUS    RESTARTS   AGE   IP          NODE               NOMINATED NODE   READINESS GATES
front-nginx   nginx-7986788845-22wh6            1/1     Running   0          11m   <IP_ADDRESS>   ip-<AGENT>   <none>           <none>
kube-system   coredns-7b5bbc6644-pzwdp          1/1     Running   0          19m   <IP_ADDRESS>   ip-<SERVER>   <none>           <none>
kube-system   metrics-server-667586758d-hnwrr   1/1     Running   0          19m   <IP_ADDRESS>   ip-<SERVER>   <none>           <none>
kube-system   svclb-nginx-72a92347-mhnwn        1/1     Running   0          11m   <IP_ADDRESS>   ip-<AGENT>   <none>           <none>
kube-system   svclb-nginx-72a92347-r4jvj        1/1     Running   0          11m   <IP_ADDRESS>   ip-<SERVER>   <none>           <none>

Curl server

$ curl http://<IP_ADDRESS>
curl: (7) Failed to connect to <IP_ADDRESS> port 80 after 0 ms: Connection refused

Curl Agent
$ curl http://<IP_ADDRESS>
<!DOCTYPE html>

<title>Welcome to nginx!</title>

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.

For online documentation and support please refer to
nginx.org.

Commercial support is available at
nginx.com.

Thank you for using nginx.


AJAX

Please describe the changes this pull request makes and why it should be merged:
Adds an Click Event Handler to load sub websites with AJAX
Status:

[X] Code changes have been tested
[X] Code changes work without errors

Content of the pull request:

[X] This pull request changes the Website

[X] This pull request includes breaking changes for the Dashboard
[ ] This pull request includes new page(s) for the website

[ ] This pull request only includes non-code changes, like changes to templates, README, etc.

@maltesermailo Sometimes some routes like leaderboards or profile are not rendered and a lot of error logs are printed.
See: https://i.imgur.com/IM2gZgl.png
I'm not an AJAX expert, but I think the problem is because handlebars variables doesn't get reloaded after loading an AJAX request 🙄


[Question] Scaler Metric Extensibility

Hi,
I'm in a situation where I have to monitor around 100 queues and scale a specific pod type accordingly. The queues are set up with AWS SQS but that is not too important. They are separated since SQS doesnt allow a filtered subscribe. Single queues can be considered hot queues for a time, but which queues are hot or cold changes frequently.
If one of the queues holds many a specific amount of messages, I need to scale the environment, even if all other queues are e.g. at 0. So I have to come up with a generic solution that aggregates the "load situation". This should clearly be part of my application. But how can I report this data back to KEDA?
I could probably set up a metric on Prometheus but yet I am not using it and this doesn't seem to be a straight forward solution. The simplest approach for me would be to provide an HTTP endpoint that exposes the current load information that KEDA frequently pulls. If I think about it briefly, it looks like a simple solution that makes KEDA very universally applicable, but maybe I am missing a few aspects.
What could be a solution to feed my "custom data" back to KEDA?

If I understand correctly, you have 100s of SQS queues but a deployment may contain pods that listen to a group of those queues?  And what you are hoping for is a way to feed KEDA with some custom metric that could be prometheus query or could just be some API signature which would be used to create the custom metric adapter and scale the pods?
The simplest way that KEDA would "just work" would be if each SQS queue was associated a single pod / deployment.  Then the ScaledObject could map to that queue (#138) and each pod could scale only if its coorelated queues had work.
We also plan to enable prometheus support to drive more custom scaling (#156 ) which could also be an option.
I'm interested to see what thoughts are though as I wonder if there's some other extensible way we could let you define your specific event metric outside of prometheus.  You could write your own custom metrics adapter on kubernetes but ideally even keda could make that "easier"

This somewhat feels like what we are changing on Promitor as well - https://github.com/tomkerkhove/promitor/issues/513
We used to have a 1-on-1 mapping from resource to metric, in Keda's case scaling action, where it would be easier to manage if you could have an n-to-1 mapping instead.
In the case of Azure Storage Queue we have the following as of today:
apiVersion: keda.k8s.io/v1alpha1
kind: ScaledObject
metadata:
  name: azure-queue-scaledobject
  namespace: default
  labels:
    deploymentName: azurequeue-function
spec:
  scaleTargetRef:
    deploymentName: azurequeue-function
  triggers:
  - type: azure-queue
    metadata:
      # Required
      queueName: functionsqueue
      # Optional
      connection: STORAGE_CONNECTIONSTRING_ENV_NAME # default AzureWebJobsStorage
      queueLength: "5" # default 5

based on sample
What I think @Renader is looking for is something similar to:
apiVersion: keda.k8s.io/v1alpha1
kind: ScaledObject
metadata:
  name: azure-queue-scaledobject
  namespace: default
  labels:
    deploymentName: azurequeue-function
spec:
  scaleTargetRef:
    deploymentName: azurequeue-function
  triggers:
  - type: azure-queue
    metadata:
      # Required
      queueNames:
      - functionsqueue-1
      - functionsqueue-2
      - functionsqueue-3
      - functionsqueue-4
      - functionsqueue-5
      # Optional
      connection: STORAGE_CONNECTIONSTRING_ENV_NAME # default AzureWebJobsStorage
      queueLength: "5" # default 5

Where the setup is the same, but applicable for more queues. We could go even further and use functionsqueue-* but that's more complex.
Another approach would be to define a trigger for every queue but that's a lot of duplication.
That said, you could argue that it has to be a custom metric indeed but would less ideal if this is your own custom metric and have to set up & manage Prometheus for this.
That's just my 2 cents on the topic and what I've learned on the Promitor side.

@tomkerkhove yes you are right - a queueNames  would fulfill my need.
@jeffhollan, the scenario is little bit different, it is not one deployment for per queue but one deployment for all that needs to scale for what ever the hottest/longest queue is. This is due to unique resource usage on the nodes. The pods get scheduled with an specific antiAffinity... But yeah, that is my implementation detail that I don't expect KEDA to solve. But it would be if KEDA delivers building blocks with which I could map my scenario.
This would probably also serve my need as I then could implement a custom scaler that interacts directly with SQS or my deployment and do the use-case-specific logic.
https://github.com/kedacore/keda/issues/184

This helps.  So if breaking this down:

Best case: we allow you to listen to multiple queues / event sources for a single ScaledObject and KEDA will optimize for the event source that requires the most scaling
Also ok, but not best: Allow a dynamic custom scaler where you could write the above logic in your own custom logic

Let me know if that's accurate and we can chat about it in our sync on Thursday

Yes, exactly for my use case, that would be the best approach.  Of course, I don't need Keda to do all the work for me. The main thing is that I can do it somehow. Thank you very much so far!

Any update on this?
I would really love to see multiple queue names support for ScaledObject (in my case for RabbitMq).

@UNOPARATOR @AmithGanesh is working on the implementation of this proposal. It will allow you to specify multiple triggers in one ScaledObject.

I believe this issue might be resolved with the current v2 release, but it is lacking the relevant documentation.
This comment from issue #476 provides a hopefully working sample.
But I would love to see an official documentation about how to use multiple trigger properly before trying (although from the comment link I found, it seems pretty straight-forward). ;)

We most definitely welcome PRs for docs on https://github.com/kedacore/keda-docs but if you need help; feel free to start a conversation.

It's indeed the RabbitMQ scaler! That's awesome, I'm looking forward to the next release 🎉


Needed to maintain listing in k6 Extensions Registry

We've recently updated the requirements for maintaining an extension within the listing on our site. As such, please address the following items to maintain your listing within the registry:

add the xk6 topic to your repository metadata
add an examples directory containing k6 test scripts making use of your extension

For more information on these and other listing requirements, please take a look at the registry requirements.

Sure, will do it this week


docs: correct a typo

The CI pipeline is failed but I have no idea why.

https://github.com/vitest-dev/vitest/discussions/307

Thanks for the PR, it was fixed by #305


plugin install after iOS not build

hello.
I'm Test Push Notification,
This Plugin installed after Xcode Error
This Error only iOS,
Android OS is Not Error.
Error Code:
Automatic signing is unable to resolve an issue with the "TestPush" target's entitlements file. Remove the entitlements or switch to manual signing and resolve the issue by downloading a provisioning profile from the developer website.
Provisioning profile "iOS Team Provisioning Profile: *" doesn't include the aps-environment entitlement.
Code signing is required for product type 'Application' in SDK 'iOS 10.2'
I wonder if there was the same problem here.
Thank you :)

App Settings -> Capabilities and flip the switch for Push Notifications to On.
solved :)

@ironelder thank you much, OneSignal didn't seem to mention needing to do this for their target.

https://documentation.onesignal.com/docs/phonegap-sdk-setup


can't download songs anymore

C:\Users\Desktop\Music\new>spotdl  https://open.spotify.com/track/7JYsArznYOjX2jsrT3UEnL?si=0_hVk2C0SwqXNwl9snaVrQ
Fetching Song...
Skipping OOOUUU (https://open.spotify.com/track/7JYsArznYOjX2jsrT3UEnL?si=0_hVk2C0SwqXNwl9snaVrQ) as no match could be found on youtube
0%|                                                                                |ETA: ?, ~min/song
This is the error I've been receiving since update, for all songs

This was an issue in v3.1.3, we released a patch for it (v3.1.4) day before, are you user you are up to date?

i updated to v3.1.4 still getting an error
C:\Users\Maxino\Desktop\Music\new>spotdl https://open.spotify.com/playlist/37i9dQZF1DZ06evO12tsHe?si=wO-2-Q9YQ2SmhMJvn6-NEg
Fetching Playlist...
Traceback (most recent call last):
File "c:\users\maxino\appdata\local\programs\python\python38-32\lib\runpy.py", line 194, in _run_module_as_main
return run_code(code, main_globals, None,
File "c:\users\maxino\appdata\local\programs\python\python38-32\lib\runpy.py", line 87, in run_code
exec(code, run_globals)
File "C:\Users\Maxino\AppData\Local\Programs\Python\Python38-32\Scripts\spotdl.exe_main.py", line 7, in
File "c:\users\maxino\appdata\local\programs\python\python38-32\lib\site-packages\spotdl_main.py", line 116, in console_entry_point
downloader.download_multiple_songs(songObjList)
File "c:\users\maxino\appdata\local\programs\python\python38-32\lib\site-packages\spotdl\download\downloader.py", line 288, in download_multiple_songs
self.downloadTracker.load_song_list(songObjList)
File "", line 2, in load_song_list
File "c:\users\maxino\appdata\local\programs\python\python38-32\lib\multiprocessing\managers.py", line 850, in _callmethod
raise convert_to_error(kind, result)
TypeError: remove: path should be string, bytes or os.PathLike, not NoneType
0%|

#929


Crates generated with svd2rust 0.17.0 cause warnings on stable

Here's what I'm getting when compiling with 1.42.0:
warning: lint `legacy_directory_ownership` has been removed: `converted into hard error, see https://github.com/rust-lang/rust/issues/37872`
 --> src/lib.rs:5:9
  |
5 | #![deny(legacy_directory_ownership)]
  |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(renamed_and_removed_lints)]` on by default

warning: lint `plugin_as_library` has been removed: `plugins have been deprecated and retired`
  --> src/lib.rs:12:9
   |
12 | #![deny(plugin_as_library)]
   |         ^^^^^^^^^^^^^^^^^

warning: lint `safe_extern_statics` has been removed: `converted into hard error, see https://github.com/rust-lang/rust/issues/36247`
  --> src/lib.rs:14:9
   |
14 | #![deny(safe_extern_statics)]
   |         ^^^^^^^^^^^^^^^^^^^

warning: unknown lint: `unions_with_drop_fields`
  --> src/lib.rs:16:9
   |
16 | #![deny(unions_with_drop_fields)]
   |         ^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(unknown_lints)]` on by default

Fixed by #421, duplicate of #415
Probably should a release a some point...

Oh, sorry, I only checked the open issues for duplicates. Didn't think to check the closed ones.

No worries, thanks for the report.


Error on cover generation when test_model

Hi!
I have been exporting models using the followings versions:
format version | model 0.5.3
bioimageio.spec | <IP_ADDRESS>
bioimageio.core | 0.6.9

The thing is that everything passes and goes well, still I'm getting the following message saying that the cover was not generated.
computing SHA256 of new_test_input.npy (result: 7cff2c8b82991fc6abe4b50efeb29158
computing SHA256 of aux_new_test_output.npy (result: dec8621fe80946372970dd5ed5f
computing SHA256 of finetuned_bioimageio_torchscript_model.pt (result: 3a7238212
2024-10-18 13:30:15.266 | Level 30 | bioimageio.spec._internal.field_warning:issue_warning:149 - documentation: No '# Validation' (sub)section found in documentation.md.
2024-10-18 13:30:15.271 | Level 30 | bioimageio.spec._internal.field_warning:issue_warning:149 - covers: Failed to generate cover image(s): Failed to construct cover image from shape (1, 2, 256, 256)
computing SHA256 of new_test_output.npy (result: d463c88c0135ab74a6015f58d55669a
2024-10-18 13:30:15.377 | Level 30 | bioimageio.spec._internal.field_warning:issue_warning:149 - documentation: No '# Validation' (sub)section found in documentation.md.
2024-10-18 13:30:15.381 | Level 30 | bioimageio.spec._internal.field_warning:issue_warning:149 - covers: Failed to generate cover image(s): Failed to construct cover image from shape (1, 2, 256, 256)
2024-10-18 13:30:15.381 | INFO     | bioimageio.core._resource_tests:_test_model_inference:147 - starting 'Reproduce test outputs from test inputs (torchscript)'
2024-10-18 13:30:15.585 | INFO     | bioimageio.core._resource_tests:_test_model_inference_parametrized:242 - Testing inference with 6 different input tensor sizes

Here is an image with all the output:

Due to that error, the cover is not generated and not in the final ZIP. In the documentation it doesn't say that is optional, so I guess that is mandatory. Still, it doesn't crash and it passes the validation on the uploader.
Shouldn't this complain or crash? Or is the cover no longer mandatory?

I was surprised the other day myself tbh, but the cover is optional.
I suppose for publishing on bioimage.io we do consider it mandatory though... I will improve the validation reports and distinguish between what is technically required to use a model and what metadata should be there... (a cover (and other metadata) is not mandatory for all use cases, but practially mandatory for sharing)
The automatic cover generation is merely a convenience function and does not cover all cases.
your 2 channel data for example is not RGB, nor grayscale, so it is unclear how it should be rendered...
I suppose we could default to some LUT.. Feel free to make a PR improving the cover generation ;-)


Flet Hot Reload is no longer returned

Description
I have a Flet app with code distributed in several folders (like view, dialogs, ...). I want to use hot reload not to start the app after each code change in the subfolders.
For this I use the following command
flet run --web --port 8550 --directory --recursive main.py

Describe the results you received:
Unfortunately with the "--directory --recursive" parameter this call is no longer returned. After minutes I have to cancel the command with STRG+C
Describe the results you expected:
I would expect my Flet app to start and update automatically when there is a change in my codebase.
Flet version (pip show flet):
Version: 0.21.2

Operating system:
Linux with Python 3.11 in Conda virtual env

I am seeing the same issue.
I noticed that it does work with the --directory switch. Unfortunately, that only works for the main.js script directory and not the subdirectories.
Flet version 0.22.1
OS version Linux 6.6.25-01713-g2f237acc8e50 x86_64

This is working for me. With both --recursive and --directory and also with single --recursive.


android kotlin version updated from 1.5.10 to 1.7.10

This was causing an issue while compiling any flutter app for wearos.
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.5.20 and higher.
The following dependencies do not satisfy the required version:
project ':wear' -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.10

We have two approvals, and this actually resolves the issue with the gradle version, which is absolutely essential. Can we finally merge this? We need to update the package.

I released the wear_plus plugin which contains the necessary fixes

Could you have a look into it please? @slightfoot