[SPARK-41234][SQL][PYTHON] Add array_insert function

What changes were proposed in this pull request?
This PR implements the array_insert function, similar to the snowflake implementation here. The main difference of course being that spark arrays are 1-indexed, while snowflake arrays are 0-indexed, hence the definition of array_insert will differ by one index for positive numbers.
Arguments
arr: Array of anytype of elements in which the element has to be appended.
pos: name of Numeric type column indicating position of insertion (starting index 1).
item: Value for insertion into arr. The type of element has to match with the type of elements array is holding.
select array_insert(array(1, 2, 3), 3, 4);

array_insert(array(1, 2, 3), 3, 4)

[1, 2, 3, 4]

Support in other frameworks
MySQL
Snowflake
SQL Notebook
Why are the changes needed?
Implementation of an existing snowflake function that is not yet in spark. Use cases include adding arbitrary elements to a list at a given index.
Does this PR introduce any user-facing change?
No changes to existing APIs; addition of a new array_insert function that can be accessed via Scala Spark and PySpark
How was this patch tested?
Tests at CollectionExpressionSuite (scala implementation class), DataFrameFunctionsSuite, SQLExpressionSuite)

cc @zhengruifeng FYI

Can one of the admins verify this patch?

Please let me know when this one ready to review :)

Please let me know when this one ready to review :)

Will do! Thank you for your quick replies on this. I'm just trying to work out what doCodeGen works, after which, it will be ready soon!

@LuciferYang for quick feedback I'd be grateful for an overarching review of the method, and some assistance on the following questions:

Core behaviour: one interesting property of snowflake's array_insert function is that it will let you extend the array further than (numElements + 1) if you specify a far away index. For example, array_insert([1,2,3], 10, 4) will print [1,2,3,null,null,null,null,null,null,4). It would worry me a bit if an array could grow to astronomical sizes through some kind of mistake (e.g. are we happy with taking a risk of the 'pos' column containing a value of 2,000,000,000?), so I've returned a null if the provided array 'pos' index is out of bounds. Let me know if the snowflake behaviour should be exactly reproduced instead.
I've used the scala library 'patch' function to implement the behaviour, which prioritises minimal code over performance. Please let me know if this should be changed.
I'm not too clear on how to implicitly cast the provided 'item' parameter yet (i.e. I provide an array of LongType and try to insert an IntegerType.). I think the array type should probably not change though (e.g. if I provide a LongType array but a StringType item for insertion, it doesn't feel right to cast the whole Array to a StringType).

A bit busy today, I may have to wait until evening to review

Core behaviour: one interesting property of snowflake's array_insert function is that it will let you extend the array further than (numElements + 1) if you specify a far away index. For example, array_insert([1,2,3], 10, 4) will print [1,2,3,null,null,null,null,null,null,4]. It would worry me a bit if an array could grow to astronomical sizes through some kind of mistake (e.g. are we happy with taking a risk of the 'pos' column containing a value of 2,000,000,000?), so I've returned a null if the provided array 'pos' index is out of bounds. Let me know if the snowflake behaviour should be exactly reproduced instead.

Personally, I think we do not need to exactly match Snowflake, and if it is out of bounds, is it more appropriate to throw an exception?

I'd be keen to maintain consistency; in this case, ElementAt with out of bounds indices return a null. With that said, I'd happy to change ElementAt in a separate PR if that's of interest?

@LuciferYang @zhengruifeng @HyukjinKwon Think this one is more or less ready to review fully; I've tried to follow the comments & guidance given on the array_append PR. The main question I'd appreciate guidance on is what happens in the following two edge cases:

Input item parameter is null: this has been discussed already in array_append, where the decision was to return a null result if the input item parameter is null, but let me know if it should be different for this function
Index out of bounds: if the user tries to put an item into the array at an index that is larger than the (new) array size, this PR returns a result of null. Alternatives here are to (a) perform an array_append (or prepend, if index is negative) (b) implement the snowflake behaviour of filling the array with nulls up to the index (see existing discussion on this PR) or (c) no-op

Thanks all for the input so far, I hope the code is sufficient in it's current form

@Daniel-Davies  Sorry for the late reply.
On Input item parameter is null:
The issue of NULL handling was controversial, and we spend some time to discuss with some SQL experts and decided to adopt snowflake's method of NULL handling which is more reasonable compared with existing SparkSQL's method, that is:
1, if the array is NULL, returns NULL;
2, if the array is NOT NULL and the element is NULL, insert this NULL into the array;
+--------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(1,2,3), 0, 4) |
|--------------------------------------------|
| [                                          |
|   4,                                       |
|   1,                                       |
|   2,                                       |
|   3                                        |
| ]                                          |
+--------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.139s
+--------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(1,2,3), 2, 4) |
|--------------------------------------------|
| [                                          |
|   1,                                       |
|   2,                                       |
|   4,                                       |
|   3                                        |
| ]                                          |
+--------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.116s
+-----------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(1,2,3), 2, NULL) |
|-----------------------------------------------|
| [                                             |
|   1,                                          |
|   2,                                          |
|   undefined,                                  |
|   3                                           |
| ]                                             |
+-----------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.130s
+--------------------------+
| ARRAY_INSERT(NULL, 2, 1) |
|--------------------------|
| NULL                     |
+--------------------------+
1 Row(s) produced. Time Elapsed: 0.106s
+-----------------------------+
| ARRAY_INSERT(NULL, 2, NULL) |
|-----------------------------|
| NULL                        |
+-----------------------------+
1 Row(s) produced. Time Elapsed: 0.113s

On Index out of bounds:  I think we should choose option b, filling with nulls
+---------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(1,2,3), 10, 1) |
|---------------------------------------------|
| [                                           |
|   1,                                        |
|   2,                                        |
|   3,                                        |
|   undefined,                                |
|   undefined,                                |
|   undefined,                                |
|   undefined,                                |
|   undefined,                                |
|   undefined,                                |
|   undefined,                                |
|   1                                         |
| ]                                           |
+---------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.116s
+----------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(1,2,3), -10, 1) |
|----------------------------------------------|
| [                                            |
|   1,                                         |
|   undefined,                                 |
|   undefined,                                 |
|   undefined,                                 |
|   undefined,                                 |
|   undefined,                                 |
|   undefined,                                 |
|   undefined,                                 |
|   1,                                         |
|   2,                                         |
|   3                                          |
| ]                                            |
+----------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.111s
+------------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(1,2,3), 10, NULL) |
|------------------------------------------------|
| [                                              |
|   1,                                           |
|   2,                                           |
|   3,                                           |
|   undefined,                                   |
|   undefined,                                   |
|   undefined,                                   |
|   undefined,                                   |
|   undefined,                                   |
|   undefined,                                   |
|   undefined,                                   |
|   undefined                                    |
| ]                                              |
+------------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.109s
+-------------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(1,2,3), -10, NULL) |
|-------------------------------------------------|
| [                                               |
|   undefined,                                    |
|   undefined,                                    |
|   undefined,                                    |
|   undefined,                                    |
|   undefined,                                    |
|   undefined,                                    |
|   undefined,                                    |
|   undefined,                                    |
|   1,                                            |
|   2,                                            |
|   3                                             |
| ]                                               |
+-------------------------------------------------+

also cc @beliefer

@Daniel-Davies could you resolve the conflict?

@zhengruifeng Great direction provided by your message above, thank you. Thank you very much also for consulting with experts to resolve the conflict of ideas. I'll implement the behaviour you've stated. Is the discussion public anywhere? I'd love to know some of the reasoning, if at all possible.
@LuciferYang certainly.

@Daniel-Davies

@Daniel-Davies Could you add the syntax, arguments, examples and the list of the mainstream database supports array_insert ? refer https://github.com/apache/spark/pull/38865

Thanks @zhengruifeng! Updated the logic to implement the above discussion.
@beliefer updated description as requested.
The changes should now be ready for review. I have left one question about the SQL tests in a code comment.

@Daniel-Davies Don't worry. Thanks for working on it!

@Daniel-Davies Don't worry. Thanks for working on it!
BTW, the scala linter seems failed

Hey @zhengruifeng - should be fixed now; I've updated both nullSafeEval and doGenCode, let me know if the method here is more understandable than previously

Merged into master and branch-3.4, thank you @Daniel-Davies so much for working on it!


Add deprecation notice to README pointing readers to gofrs/uuid

This change adds a deprecation notice to the README to point users to the fork
now maintained by The Gofrs (github.com/gofrs/uuid.
It also suggest that they make use of v2.0.0 or newer.
Fixes #84
Signed-off-by: Tim Heckman<EMAIL_ADDRESS>

Coverage decreased (-0.008%) to 97.516% when pulling<PHONE_NUMBER>9a4abf2d6fd3d07ae6e5fe34eb7cdf on theckman:deprecation_notice into 36e9d2ebbde5e3f13ab2e25625fd453271d6522e on satori:master.


Support empty string with EmailStr validation

Hello,
I configured the following field:
representative_email: EmailStr = None
When passing an empty string "" as value, I get the following error:
Email address is not valid (error_type=ValueError track=EmailStr)
How can I configure va validator to support those values a I can't change the incoming format?

You should be able to use a validator function and return none instead of an empty string.
On mobile so I can't give a more complete answer, but feel free to ask again if you're still not sure.

Hello,
I tried it with the following code but it doesn't seem to work:
`from pydantic import BaseModel, validator, EmailStr
class Demo(BaseModel):
e: EmailStr: None
@validator('e', pre=True, always=False)
def validate_e(cls, val):
    if val == "":
        return None
    return val

Demo()
Demo(e=None)
Demo(e="")
`
The traceback is the following one:
Traceback (most recent call last):
  File "test.py", line 14, in <module>
    Demo(e="")
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pydantic/main.py", line 153, in __init__
    self.__setstate__(self._process_values(data))
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pydantic/main.py", line 297, in _process_values
    raise ValidationError(errors)
pydantic.exceptions.ValidationError: error validating input
e:
  expected string or bytes-like object (error_type=TypeError track=EmailStr)

In case the validator alway parameter is set to True, the traceback is:
Traceback (most recent call last):
  File "test.py", line 12, in <module>
    Demo()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pydantic/main.py", line 153, in __init__
    self.__setstate__(self._process_values(data))
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pydantic/main.py", line 297, in _process_values
    raise ValidationError(errors)
pydantic.exceptions.ValidationError: error validating input
e:
  expected string or bytes-like object (error_type=TypeError track=EmailStr)

What am I doing wrong?

Maybe you need optional[emailstr]

For anyone curious on a working solution here:
class EmailEmptyAllowedStr(EmailStr):
    @classmethod
    def validate(cls, value: str) -> str:
        if value == "":
            return value
        return super().validate(value)

I've also made this generic solution for using with ints, Literal or other types as well:
PydanticField = TypeVar("PydanticField")

class EmptyStrToNone(Generic[PydanticField]):
    @classmethod
    def __get_validators__(cls):
        yield cls.validate

    @classmethod
    def validate(cls, v: PydanticField, field: ModelField) -> Optional[PydanticField]:
        if v == "":
            return None
        return v

Then you can use as:
LiteralExample = Literal["A", "B"]

class Example(BaseModel):
    literal_example: Optional[EmptyStrToNone[LiteralExample]]
    int_example: Optional[EmptyStrToNone[int]]

this worked for me Union[AnyHttpUrl, constr(max_length=0)] and could be applied to EmailStr

this worked for me Union[AnyHttpUrl, constr(max_length=0)] and could be applied to EmailStr

Note: this actually works the same as Union[AnyHttpUrl, str], though I'm not sure if it is a bug:
In [30]: class A(pydantic.BaseModel):
    ...:     s: Union[pydantic.AnyHttpUrl, constr(max_length=0)]

In [31]: A(s="")
Out[31]: A(s='')

In [32]: A(s="https://google.com/")
Out[32]: A(s=AnyHttpUrl('https://google.com/', scheme='https', host='google.com', tld='com', host_type='domain', path='/'))

In [33]: A(s="not-a-url")
Out[33]: A(s='not-a-url')

You can also try Union[_EmailStr, Literal[""]]

You can also try Union[EmailStr, Literal[""]]

Thanks. This worked for me when I ran into Optional[EmailStr] functioning differently than I expected.

I've also made this generic solution for using with ints, Literal or other types as well:
PydanticField = TypeVar("PydanticField")

class EmptyStrToNone(Generic[PydanticField]):
    @classmethod
    def __get_validators__(cls):
        yield cls.validate

    @classmethod
    def validate(cls, v: PydanticField, field: ModelField) -> Optional[PydanticField]:
        if v == "":
            return None
        return v

Then you can use as:
LiteralExample = Literal["A", "B"]

class Example(BaseModel):
    literal_example: Optional[EmptyStrToNone[LiteralExample]]
    int_example: Optional[EmptyStrToNone[int]]

This is not checking the "internal type" at all. 😞
>>>class A(BaseModel):
    a: EmptyStrToNone[int]

>>>A(a='asd')
A(a='asd')


VSIX Files Adding To /tmp Each Hour VSCode is Open.

Issue Type: Bug

VSCode Version: Code - Insiders 1.36.0-insider (c089daa858f34631f5f827ff8a0313bf1e2ded6d, 2019-06-07T05:15:26.964Z)

OS Version: Linux x64 5.1.15.a-1-hardened

Steps to Reproduce:

Open Visual Studio Code.
Monitor /tmp folder for created vsix files.

Does this issue occur when all extensions are disabled?: No
I am already aware of:
https://github.com/Microsoft/vscode/issues/53110
and
https://github.com/microsoft/vscode/issues/54925
both of which are closed with no apparent resolution after about 1 year so far.
In other words don't close this, or re-open 53110, or let me know if this issue should be posted to vscode-cpptools instead ("why" below).
Each hour that vscode is open, a vsix is downloaded and is never removed from /tmp.
I unzipped 2 of the 20+ vsix files and it looks to be related to the c/cpp extension. This is the "why" it MAY need to be posted to their repository instead of here.
Given that Archlinux mounts /tmp as tmpfs, that is taking up memory, and it adds up over hours.
I do NOT believe it's related to https://github.com/microsoft/vscode-cpptools/issues/3093 since I'm online and it has no problems installing and I have no problems when using it.
I usually only update if a changelog looks appealing to me or applicable to an issue I have.
extensions.autoCheckUpdates is set to "enabled".
Wouldn't this ONLY check for a version online and NOT download the updated extension?
Extensions: Auto Update is set to "disabled".
So it shouldn't even be downloading the extension automatically.
Expectations:

A vsix would NOT be downloaded unless an install has been requested.
A vsix would be cleaned up either:
A. After an install completes
B. When VSCode is closing
A vsix file would go by a filename of <extension repository name>-<extension version>.vsix rather than what appears to be a random filename like tmp-<17 random letters/numbers>.vsix

System Info

Item
Value

CPUs
Intel(R) Core(TM) i3-4130 CPU @ 3.40GHz (4 x 2574)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwareoop_rasterization: disabled_offprotected_video_decode: unavailable_offrasterization: disabled_softwareskia_deferred_display_list: disabled_offskia_renderer: disabled_offsurface_synchronization: enabled_onvideo_decode: unavailable_offviz_display_compositor: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
1, 1, 1

Memory (System)
7.25GB (2.50GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (19)

Extension
Author (truncated)
Version

html-snippets
abu
0.2.1

Doxygen
bbe
1.0.0

arm
dan
0.3.0

xml
Dot
2.4.0

vscode-solution-explorer
fer
0.3.1

ilspy-vscode
ics
0.7.5

vscode-nuget-package-manager
jmr
1.1.6

cortex-debug
mar
0.3.0

cortex-debug-dp-stm32f1
mar
1.0.0

cortex-debug-dp-stm32f4
mar
1.0.0

mssql
ms-
1.5.0

cpptools
ms-
0.23.1

csharp
ms-
1.20.0

debugger-for-chrome
msj
4.11.3

view-in-browser
qin
0.0.5

msbuild-project-tools
tin
0.2.54

debug
web
0.23.1

riscv
zhw
0.0.4

linkerscript
Zix
1.0.0

@vindicatorr VSIX files are downloaded to /tmp folder from Marketplace and will be deleted after installing. Fix for #53110 does this.
Can you please let us know which vsixs are those? Can you reproduce this issue by disabling all extensions? Is it possible that one of the installed extensions is doing this?

I'll just copy/paste what I had already filled in for the bug template:
"Does this issue occur when all extensions are disabled?: No"
"I unzipped 2 of the 20+ vsix files and it looks to be related to the c/cpp extension"
I've attached one of the vsix files (had to add .zip to be uploaded here):
tmp-3523lOiS2uBxUhQ.vsix.zip

I remember there is beta feature in C++ extension that makes it to download the VSIX.
I can confirm that when VS Code installs extension from Marketplace, it downloads the VSIX into temp location and deletes it after installing.
Can you please file issue against C++ extension asking them if they are deleting the VSIX after downloading.


LibreOffice appimages

I've suggested libreoffice package appimages as a means of having portable apps and maybe you can add some useful information to the bug report.
https://bugs.documentfoundation.org/show_bug.cgi?id=97269

Hi @philipzae thanks for opening the ticket. Might be worth mentioning that the script to generate the AppImage is really easy and is available here:
https://github.com/probonopd/AppImages/blob/master/recipes/libreoffice/Recipe
So they could basically just take it and integrate it into their workflow.

Thanks @philipzae for working with TDF and suggesting an AppImage. Closing this as it was favorably discussed in the ESC call.


Support HTTP Caching

Add support for http://tools.ietf.org/html/rfc7234 in the http client code.  I'm not sure where the best place to plug in caching would be, but it seems like somewhere in the pipeline model, this would make sense to plugin in an http cache component.

Am interested in this having done a lot of HTTP caching RFC-reading and cursing at Apache HC lately; I'm guessing sharing between channels is probably desirable, e.g. for connection-pooling?

@madgnome happy to pick up the branch you were working on if you don't have any capacity? Seems like a good approach

It's on my list now. Coming soon... :)


Consider generating idiomatic enum value names

Idiomatic protocol buffer definitions for enums is to prefix the enum value names with the name of the enum.  This is because in protocol buffers, the enum value names are in the same namespace as the enum itself (which means you aren't allowed to have two different values named GOOD even if they are in different enums.  And therefore this is common and idiomatic in protocol buffers:
enum ResultCode {
    RESULT_CODE_GOOD = 0;
    RESULT_CODE_BAD = 1;
    RESULT_CODE_UGLY = 2;
}

Rust doesn't suffer from this unfortunate design and so if you were to code the same thing in idiomatic Rust, it would look like this:
enum ResultCode {
    Good = 0,
    Bad = 1,
    Ugly = 2,
}

Not like this:
enum ResultCode {
    ResultCodeGood = 0,
    ResultCodeBad = 1,
    ResultCodeUgly = 2,
}

And you'll find that all of the newer "official" protocol buffer generators do this (take C# for example).
They will detect if the enum value names are prefixed with the enum's name and strip it off if so.
I've already written this behavior for Prost, controlled by config and will send a PR in case you're interested.  Currently it defaults to existing behavior, but I think you might want to consider making idiomatic Rust the default behavior.  For those who don't prefix their protobuf enum value names, well they won't notice either way, and for those that do, they'll probably appreciate the improvement to their code.

Rather than having an option to control this, maybe we should just do this by default in a new major version of prost.

This was by @warrenfalk in a87d216f1190cebce507ebd1bdb48fe91e652c0b.


Change repo name to something useful

having a repo called 'typescript' is not beneficial, the KPI // conversion rate of this alpha repo being found and used is inadequate of its quality content inside.

goodpoint, I didn't want to confuse people by calling it juno or juno-network, as that name should be reserved for the SDK. I'm curious if folks have suggestions as how to not confuse devs.

what do you think of juno-ts?

@pyramation I am good with juno-ts

renamed!


chore(deps): update janus plugins

Description
Updates some of the Janus IDP plugins.
Which issue(s) does this PR fix

Fixes #?

PR acceptance criteria
Please make sure that the following steps are complete:

[ ] GitHub Actions are completed and successful
[ ] Unit Tests are updated and passing
[ ] E2E Tests are updated and passing
[ ] Documentation is updated if necessary (requirement for new features)
[ ] Add a screenshot if the change is UX/UI related

How to test changes / Special notes to the reviewer

Tested ocm and ocm-backend, works.

@PatAKnight  said "Everything seems to be working, send it captain"


Add partitioned array creation routines

Partitioned raster?
It must be possible to easily create partitioned arrays with

constant value
random value
...

@OliverSchmitz Any ideas related to creation of arrays can be put here.

@OliverSchmitz Any ideas related to creation of arrays can be put here.


Not supported Winver 22H2 19045.2251

Hey, I was search for this build in the issues, can't seem to find it. Did I miss something or someone could attach the right .ini here ? Thank you!!

Duplicate of https://github.com/stascorp/rdpwrap/issues/2043

Duplicate of https://github.com/stascorp/rdpwrap/issues/1992


Updated usage of FasterCSV to CSV (for Ruby 2)

I was trying to use the perf generator tool to test an issue with C&U and I found that it didn't work on the newer Ruby, so here's the fix.

:+1: What is the best way to test? (I assume no integration tests - not asking for them either)
If there is a bug here, will it simply blow up on an appliance?

   I tested that this tool works locally by
actually using it to generate data.
On Apr 6, 2015 7:24 PM, "Keenan Brock"<EMAIL_ADDRESS>wrote:

[image: :+1:] What is the best way to test? (I assume no integration
tests - not asking for them either)
If there is a bug here, will it simply blow up on an appliance?
—
Reply to this email directly or view it on GitHub
https://github.com/ManageIQ/manageiq/pull/2402#issuecomment-90283010.

removed test. it isn't actually a test. (add again if you want)


Make sample and test apps open in Visual Studio 2017

fixes #2327
These apps require Visual Studio 2017 because they use PackageReference

:shipit:


Disallow pigepeeking back-to-back

Require that the user must wait for another user to pigepeek.
On the rare chance that the bot pigepeeks, the user can also pigepeek back.
Probably can just implement this by looking at the previous message's author

**ignore: **

On the rare chance that the bot pigepeeks, the user can also pigepeek back.

Already implemented.


Unable to start docker service mae-consumer

Describe the bug
Unable to start docker service from image 'linkedin/datahub-mae-consumer:v0.8.4'
Running docker logs for the service result in this error:
***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 2 of constructor in com.linkedin.metadata.kafka.MetadataAuditEventsProcessor required a bean of type 'com.linkedin.metadata.usage.UsageService' that could not be found.

Action:

Consider defining a bean of type 'com.linkedin.metadata.usage.UsageService' in your configuration.

2021/06/30 05:06:35 Command exited with error: exit status 1

To Reproduce
Steps to reproduce the behavior:

Pull all datahub images of v0.8.4
Run docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.consumers.yml -f docker-compose.tools.yml up -d in docker folder
The service docker-mae-consumer fails to start

Expected behavior

Should be able to start the mae-consumer service

Desktop (please complete the following information):

OS: MacOS
DataHub Version 0.8.4

Able to start after pulling new commit. Thanks


[Question] Is there a possibility to use with another module (rather than raspimjpeg)

Hi, I would like to ask if it is theortically possible to modify the program to use with another camera module? (i.e. VEYE-MIPI-290/327)
The camera module us using the natural connector however based on another driver.
Thank you so much in advance!

The software that interfaces with the camera is  raspimjpeg (source code https://github.com/roberttidey/userland   under host_applications/linux/apps/raspicam )
This uses the MMAL interface layer provided by userland and which is used by the standard raspberry applications like raspivid etc. and exploits the power of the GPU.
If your camera driver supports using MMAL then it could be fairly straightforward. If it does not then the job becomes much harder.

Hello again!  I have been working on the raspimjpeg codes since for a week now. Unfortunately I was not able to modify the source code in the way that to use another camera as input. I would like to ask a few more questions on this matter, if you don't mind.

Where exactly the raspimjpeg connects/picks the camera source? I have tried to change the mmal_component_t variables but I have ended with an error "undefined reference to {function}"
Thank you for your response, I appreciated!
Source code of he camera module can be found in the following link : https://github.com/veyeimaging/raspberrypi/tree/master/veye_raspcam/source

The raspimjpeg module creates a camera object in the routine start_all in RaspiMCam.c
status = mmal_component_create(MMAL_COMPONENT_DEFAULT_CAMERA, &camera);
The standard raspberry camera allows two to be connected to a compute module but only one for standard raspberry pi so there is some code to pick one if more than one is present.
It then uses the camera object to configure it and to set up various processing chains in MMAL supported by the GPU.
You might want to look also at userland\interface\mmal\util\mmal_default_components.h  where there are different definitions of the MMAL_COMPONENT_DEFAULT_CAMERA


Add flash switch

The flash switch will switch BOOT pins on the back to accompany the programmer. In theory I could flash my own programmer to use the GPIO pins but the switches are cheap and SMT and I don't want to bit off more than I can chew with the already sort of stingy programmers.

Ended up just going with a few MOSFETs and a short 2p configuration


Remove fake xmap resources, remove gmap

xmap can now handle real devices, so there's no point in maintaining the
simulated codepaths. Also, remove single-dimensional gmap as it will
have to be superseeded by a more xmap-friendly alternative.

xmap can now handle real devices, so there's no point in maintaining the simulated codepaths

Would it still be useful to have simulated devices so that even when you don't have physical devices available you can test executing your code (backed by vectorization but using the same syntax as if you used physical devices)? In addition to testing and exploring the scheduling API, I can imagine that being useful for demos, especially if we connected it to some kind of visualiziation. (If so, we can always add that kind of thing later, and adding it later might help us avoid friction now!)

Yeah I'm removing it mostly because I suspect that it might remove some friction in implementing new xmap features (e.g. it is quite annoying to have to handle those fake resources in the xmap translation rule). But on the other hand I am split about removing them too, mainly because the code necessary to handle sequential iteration might look similar to that.
For visualizations can't you just get XLA to simulate 500 CPU devices?


Pre-commit and bundlesize

Guys, I see potential in that library, so I thought about adding basics thinks, but very useful during future development.
Do you mind if I will add pre-commit and bundlesize?

@sztadii yeah absolutely! Feel free to add those.

Great, today it should be there :)


Optimize validate_message_batch

Right now rai::validate_message_batch requires a vector, but it could accept an iterator and build up the verification.
This needs to have a different batch verification implementation exposed, @PlasmaPower suggested looking at https://github.com/dalek-cryptography/ed25519-dalek/blob/master/src/ed25519.rs#L978

The current implementation that we use is here: https://github.com/floodyberry/ed25519-donna/blob/master/ed25519-donna-batchverify.h#L204
However, it's significantly more complicated (as it internally uses batches of 4 and falls back on individual verification), and less commented.

Also, commit referenced links in case they change:
https://github.com/dalek-cryptography/ed25519-dalek/blob/5e156e5a7a7060e424d83ea3cf09567ac93fde4c/src/ed25519.rs#L978
https://github.com/floodyberry/ed25519-donna/blob/8757bd4cd209cb032853ece0ce413f122eef212c/ed25519-donna-batchverify.h#L204


Is there some page to formally introduce expression ##vso[task.setvariable variable=name]value?

Is there some page to formally introduce expression ##vso[task.setvariable variable=name]value?
I googled and didn't find any.

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

ID: 77c58a78-a567-e99a-9eb7-62dddd1b90b6
Version Independent ID: 680a79bc-11de-39fc-43e3-e07dc762db18
Content: Expressions - Azure Pipelines
Content Source: docs/pipelines/process/expressions.md
Product: devops
Technology: devops-cicd-process
GitHub Login: @juliakm
Microsoft Alias: jukullam

@kind03 Thanks for your question. While we look into possible changes for the article, consider these resources:

Azure DevOps Services
Azure DevOps on Stack Overflow

@kind03 We are working on a new article now. In the meantime, you can find documentation here:

Use output variables from tasks
SetVariable
Use the output variable from a job in a condition in a subsequent job


Travis testing out of date

There is a Travis file that purports to run the unit tests. However, it is against an obsolete version of Ubuntu and an obsolete version of Python.
This should be brought up-to-date and ideally made into a GitHub action to ensure all changes are tested before the Pull-Request is accepted.

Agree.

Moved


Expose bind port

Fixes #26 by making the Memberlist BindPort configurable via the SIDECAR_BIND_PORT environment variable.
Note that we are setting the Memberlist AdvertisePort to the same value.

This looks good. Thanks!


Implement keyboard camera control

Currently doesn't have support for detecting prolonged key presses, but should be rather easy to add.
Also not sure if currently yaw is responsible for what left/right buttons are expected to control, it seems to be spinning the model rather than "going around it" horizontally.

I'd like to hold this until keydown works, since it's unintuitive at the moment.
I may poke at this myself, but no promises – feel free to investigate further if you've got time.


replaced hard-coded /auth/login/github/ LOGIN_URL by custom login vie…

replaced hard-coded /auth/login/github/ LOGIN_URL by custom login view url pattern name - #30 issue

Thank you for your contribution! :)

BTW, what is your nick on Steemit?

I'm a new Steemit user, still waiting for activation :) My nick is the same as on the github - ptrojanowski


update outdated docs

Description & motivation
Documentation contains an example of  the outdated parameter name

thanks so much for catching and providing a fix for this, @uncletoxa  !
i think PR #2435 has addressed these same issues. i will go ahead and close. please don't hesitate to reopen if there's still something remaining.


⚠ Bofrost.be has degraded performance

In 9088e6f, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 903 ms

Resolved: Bofrost.be performance has improved in 8187968.


Add some recs to Hermosillo file :surfer:

[x] Add more places to eat

[x] Add more places to visit

:fast_forward: :b: :ab: :o: :sos:


Add it to awesome-mcp-servers

Considering adding your tool to:
https://github.com/punkpeye/awesome-mcp-servers/
You can create a PR directly from README.md.
Just a suggestion!

Thank you for the nudge! Have raised https://github.com/punkpeye/awesome-mcp-servers/pull/113, will continue tracking there.


I am unable to pass the parameters of parameter group from a variable to module. Is there a specific format that I need to use to pass the "name & value" of db_parameter_group

@antonbabenko @khosrow https://github.com/terraform-aws-modules/terraform-aws-rds/blob/7d1ad3627e860afa8d99d9e732af289f5a1983dc/modules/db_parameter_group/main.tf#L11

@phanindra2407 How are you passing your parameters?
I have a working setup with the following variables passed to the module:
module "db" {
    source = "terraform-aws-modules/rds/aws"
    engine            = "postgres"
    engine_version    = "9.6.3"
    family = "postgres9.6"
    # some stuff removed here for brevity

    parameters = [
        {
            name = "client_encoding",
            value = "utf8"
        }
    ]
}

Below is the way I am trying to code.
module "db" {
source = "terraform-aws-modules/rds/aws"
engine            = "postgres"
engine_version    = "9.6.3"
family = "postgres9.6"
parameters = ["${var.db_parameters}"]
}
##Passing varibales ##
variable "db_parameters" {
type = "list"
default = [
{
name = "log_connections"
value = 1
}
{
name = "pg.audit"
value = "pg_audit"
}
]
}
I will need to modify these parameters frequently. so cannot hardcode them in the module.

I think the code which @khosrow is writing is correct but the error can be is that you pass incorrect parameters (check AWS RDS documentation for details). This is what I got when I run your code:
* aws_db_parameter_group.this: Error modifying DB Parameter Group: InvalidParameterValue: Could not find parameter with name: pg.audit
	status code: 400, request id: c8a64a1a-aaa6-42a8-99ff-fd04747658ee

If you could update examples/complete/postgres with the failing code which should be actually working then we can have another look. Closing for now.


Add autoEventAck?: boolean to AppOptions

Description
Related to #361, I would like to introduce a new option to AppOptions in the next minor version or Bolt 2.
I would love to get you all's suggestions for better naming but it is a flag to turn on/off the automatic Events API request acknowledgment. It allows developers to customize the behavior here: https://github.com/slackapi/bolt/blob/%40slack/bolt%401.5.0/src/App.ts#L474-L475
If we go with a name like autoEventAck, the default value is supposed to be true. If a developer set it as false, the app.event listener has ack function and it's expected to call it for sure.
This is necessary to run Bolt apps safely on FaaS (Function-as-a-Service). Without this, Events API handlers may unexpectedly be terminated even while they're still running.
What type of issue is this? (place an x in one of the [ ])

[ ] bug
[x] enhancement (feature request)
[ ] question
[ ] documentation related
[ ] testing related
[x] discussion

Requirements (place an x in each of the [ ])

[x] I've read and understood the Contributing guidelines and have done my best effort to follow them.
[x] I've read and agree to the Code of Conduct.
[x] I've searched for any related issues and avoided creating a duplicate issue.

Bug Report
Filling out the following details about bugs will help us solve your issue sooner.
Reproducible in:
package version:
node version:
OS version(s):
Steps to reproduce:

Expected result:
What you expected to happen
Actual result:
What actually happened
Attachments:
Logs, screenshots, screencast, sample project, funny gif, etc.

@aoberoi @stevengill @shaydewael
Could you check the followings?

[ ] Do you agree with this idea?
[ ] If so, do you have better names for the flag in mind?

My biggest concern is introducing an option for this behavior makes sample code, middleware, and documentation less portable. If some apps have the option set to the opposite of the default, they have to be very careful to comb through all their code to modify .event() listenerse (and middleware which operate on events) to do the right thing. In documentation, we'll have to add caveats about this in many places.
I think the optionality will fragment our audience and increase our effort. Is that worth it? If we had to pick only one way to do it, would you pick that all listeners should have to call ack(), or would you pick that none of them do?
Why can't the FaaS implementation send responses after the event is fully processed (which it can in v2)? Even the .action() listeners who call ack() shouldn't actually send the response until the event is fully processed. This alternate behavior can be full encapsulated in a Receiver implementation.

@aoberoi
Thanks for your prompt response! I agree there is a downside you pointed out.

Why can't the FaaS implementation send responses after the event is fully processed (which it can in v2)?

This is also an option. One thing I need to mention here is that if a Receiver awaits for the completion of listeners, it may result in a 3-second timeout.
If we go with your idea, we may should mention the possibility of the ack timeouts and also encourage developers to consider some ways to handle async executions (e.g., Promises for class app hosting, queues/function-invocations for FaaS) in Bolt documents.
Thanks for the great suggestion. Now, I'm happy to go with changing the ack() behavior in v2 to await for listener completion.

PR #444 is going to add a new flag to enable developers to customize the behavior of ack() to await for the listener's completion. The option will be a solution for the issue described here.

Is this issue a duplicate of #361? Or can it also be closed because we've converged on a solution and the discussion is done?

We don't have anything further to discuss but in my opinion, we can close this issue when we merge #444 - we're almost fixing this but still in progress.

As mentioned in the version 2.0.0, #444 has been merged and the option called processBeforeResponse is available for FaaS users.
https://github.com/slackapi/bolt/releases/tag/%40slack%2Fbolt%402.0.0

Let me reopen this issue. I noticed that processBeforeReponse option doesn't work as expected. I will come up with a pull request addressing the issue.

I'd prefer to close this issue, and create a new issue to track the bug in the intended behavior. The feature is implemented, but we're now investigating a reported issue with the implementation.

Agreed. The issue for the bug is #462 (for reference)


Added options for cloud section in devops page

198
This PR fixes the following issues:
#add other option in cloud section of devops page

Added the Microsoft Azure , Google cloud platform (GCP) and Heroku cloud , Oracle Cloud , IBM cloud in cloud section of devops page

Check List (Check all the boxes which are applicable)

[x] My code follows the code style of this project.
[x] All new and existing tests passed.
[x] This PR does not contain plagiarized content.
[x] The title of my pull request is a short description of the requested changes.

@Akshay9607 yes

okay , i'll do that now

Done, you can review and merge now.


DataLayer use data_param instead of memory_data_param

Can I use data_param instead of memory_data_param to define DataSource in DataLayer? If not, how to apply different size images as training dataset?

You can only use memory_data_param or cos_data_param to specify the input layers.
The data layers have simple resize function, but I don't think it handles encoded images (say JPEG) with variable sizes.
I would pre-processe the images (resize, rotate, etc) before feeding them to Caffe.


Add kjnodes.toml for testnet-15

Description

All previous genesis validators should name their PRs "Update {validator_alias}.toml for tesntet-15" and provide links to previous PRs merged.

Not applicable. New genesis validator.
If this is an UPDATE for a previous genesis validator

Checks are made against your net_address. If this has changed since the previous testnet, make sure you provide links of previous prs merged from your previous git username.
Thanks in advance!

Not applicable. New genesis validator.
Checklist before merging

[x] Only one toml is added in this PR
[x] The file being added is indeed a .toml file
[x] The toml being added is to the correct folder, and only to the correct folder
[x] The eth_hot_key and eth_cold_key are present
[x] The email, discord, elements telegram, and twitter fields are present and valid

This PR has commission_rate = "0.05" and max_commission_rate_change = "0.01" as described in documentation.

This validator was not recognised as a previous validator and has update in the title. Please read the description.

@bengtlofgren, the commit and PR are titled "Add".
There is no guidance in description of how the naming should be for a new validator (only updates).

Opened #2364 in place of this, as I do not see a re-open button (as mentioned in the announcement).


Modbus TCP Server trigger on write

(X) help wanted => you read all information and watched relevant YouTube tutorials, but you need more help

I have a modbus device (heating controller) that periodically pushes out new data to a Modbus TCP Server -- I set it up to connect to the node-red-contrib-modbus Server and that basically works fine. Now I would like to act upon data received by the node-red tcp-modbus server, By I can't seem to get it to do anything every time a new value is written.
I don't want to poll the server -- I want it to react immediately a new holding register value is written by the external modbus device.
Is there a way to get the server node to start pushing out msgs/flows upon every WRITE?

I would say you could do this with the Flex Server.

I would like to do something similar to obstler42 but I am not getting any output from the "Modbus-Flex Server" or the Modbus-Server when a successful right happens. I have a debug node on each of the 5 outputs.


Request to increase memory limit for dropbox-sdk-python project

Details

Read the Docs project URL: https://readthedocs.org/projects/dropbox-sdk-python
Build URL (if applicable): https://readthedocs.org/projects/dropbox-sdk-python/builds/8263925/
Read the Docs username (if applicable): dropboxapi

Expected Result
The documentation build for the dropbox-sdk-python library builds successfully.
Actual Result
The documentation build for the dropbox-sdk-python library failed with:

Command killed due to excessive memory consumption

That may be due to a large number of objects and routes for the Dropbox API.
Can the memory limit be increased for this package?
(Alternatively, if there is a way to optimize this on our side, or perhaps run the build locally so readthedocs doesn't have to, we'd be happy to look into that. Please share any such documentation if so.)
Thank you!

Some things you can try are https://docs.readthedocs.io/en/latest/guides/build-using-too-many-resources.html

@greg-db after trying what Santos suggested, please if you still have issues let me know and I will increase the limits for this project. Thanks!

I guess that a problem could be that all the objects live in only one single huge file: https://dropbox-sdk-python.readthedocs.io/en/latest/moduledoc.html
Actually, that page almost kills my browser just to render it. I suppose that something similar happens with Sphinx. Maybe splitting into a page per module is a good idea.

It looks like splitting out the docs into multiple pages was sufficient. The latest build succeeded. Thanks all!

@greg-db nice! Docs are easier to follow/read/surf now from my point of view and my browser doesn't get stuck when opening any page.


[BUG]

After editing the config and starting the bot, it only shows "Playing Starting Bot watching:<IP_ADDRESS>:11111"
I have a random IP in the status here just for reference.

Random IP? How often does this refresh?

Static IP, with a 30 second refresh.

Disregard. I had the query port as 20716 instead of 27016.

Are you using main branch, or the PR from #6?

Main branch. Release 1.0.4

Thanks for reporting, glad it wasn't an issue, but let me know if you have any issues.

No problem. Sorry to bother you with my mistake. I do like this bot as it's simple and lightweight. Much better than others I have tried.

Thank you, friend. Just let me know if I can make it better, or fix anything. Best wishes.

One thing I would like to point out is that you don't need a separate instance running for additional servers. Just add a comma after the ] under server information and add the second server into it.

Can you give me a better example with json?

{
"_serverInformation": [
{
"botName": "Chernarus",
"botAddress": "<IP_ADDRESS>:27016",
"discordBotToken": "ODk0MjUxOTQzNDA3NTM0MDgx.YVnTBQ.n8olHssYgiML4Ep-tha_7rqr0gE"
},
{
"botName": "Namalsk",
"botAddress": "<IP_ADDRESS>:27019",
"discordBotToken": "ODM0NjQyMjcxNjk2NTg0NzA0.YID3MA.3mXtWpgTxpUnVYZZblG7KVJpd0E"
},
{
"botName": "Chernarus",
"botAddress": "<IP_ADDRESS>:27017",
"discordBotToken": "NDYwMzExODE4ODYzMzc4NDMy.Wy8oyQ.-_QWq_boxIEWe7OGk7h-DtPcVeI"
}
],
"_updateTime": 30,
"_steamAPIKey": "0A116C726838A620FE79C4DB02D7C8B6",
"_isDebug": false,
"_userConfigNameAsLabel": false
}

That's my exact code and all 3 report just fine

Remove API key, and discord token

So, are you saying you want to put one in, give a number and it does the ports after the first?

Nice catch. I didn't even think of it. I'm used to sharing among friends not publicly.

You probably invalidated your discord tokens since discord can see that.

Basically, for each one, put the proper information in for the name, IP, port, and discord token. You'll have to create a discord bot for each as normal, but one bot running for all servers.

I'll see what happens with the bots. If they are invalidated, then I can create new ones for it.

You just have to get the new keys from the dev portal.

But what do you want the bot to do?

Ok. I'm fairly new to discord bots so thanks for that info that it will regenerate. That is what I meant about seeing what happens with the bots, meaning the discord bot. Your bot is working just fine. I remember seeing somewhere that you mentioned you have to create a new folder for each server and thought this might be easier for people to get up and running.

New folders? No, it's just additional servers. Where did you see this?

In the comments of this video. https://www.youtube.com/watch?v=wBOa834FKoc

Idk where I said that there, but all that's needed to add more dayz servers is to add to the config.

I assumed that was you in the video and replying to the comments. Sorry for the misunderstanding. I know I had tried another bot and attempted adding a server the same way, but it wouldn't run like that. So I tried a second folder and they kept crashing. That's when I found yours.

Not my video, but is my bot. I'm GravityWolf everywhere.


Escaped apostrophes in string

The syntax highlighting doesn't recognize escaped apostrophes within a string.
This is a valid mvt:assignment
<mvt:assign name="g.foo" value="'This is foo\'s string'" />

But the color-highlighting changes

Thanks for letting me know!
I have pushed the update (https://github.com/mghweb/Miva-Template-Language/releases/tag/1.5.3)


SP5: implement SignalConst to improve performance for massive datasets

Issue: I displayed 11 charts with 7 milion points each. Every chart has shared x axis and locked y left axis. When I zoom charts, performance is increasing but when I zoom too much it's starting to decrease and memory usage starts to grow.
Reproducing:
Here is example code:
MainWindow.xaml.cs
namespace WpfApp2
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            ShowCharts();
        }

        private void ShowCharts()
        {
            var list = new List<WpfPlotGL>();

            for (int i = 0; i < 11; i++)
            {
                var values = Generate.RandomWalk(7016960);

                var floatvalues = new float[values.Length];

                for (var j = 0; j < values.Length; j++)
                    floatvalues[j] = (float)values[j];

                var plot = new WpfPlotGL();
                plot.Plot.Add.Signal(floatvalues, 256);
                list.Add(plot);
            }

            foreach (var chart in list)
            {
                chart.Height = 200;

                int controlNumber = 0;

                while (controlNumber < list.Count)
                {
                    int i = controlNumber;
                    if (chart != list[i])
                    {
                        chart.Plot.RenderManager.AxisLimitsChanged += (s, e) => { ApplyLayoutToOtherPlot(chart, list[i]); };
                    }
                    controlNumber++;
                }

                LockedVertical rule = new LockedVertical(chart.Plot.Axes.Left);
                chart.Plot.Axes.Rules.Clear();
                chart.Plot.Axes.Rules.Add(rule);
                chart.Refresh();
                this.charts.Children.Add(chart);
            }
        }

        private void ApplyLayoutToOtherPlot(IPlotControl source, IPlotControl dest)
        {
            AxisLimits axesBefore = dest.Plot.Axes.GetLimits();
            dest.Plot.Axes.SetLimitsX(source.Plot.Axes.GetLimits());
            AxisLimits axesAfter = dest.Plot.Axes.GetLimits();
            if (axesBefore != axesAfter)
            {
                dest.Refresh();
            }
        }
    }
}

MainWindow.xaml
<Window x:Class="WpfApp2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="2*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="2*"/>
            <RowDefinition Height="2*"/>
        </Grid.RowDefinitions>

        <ScrollViewer Grid.Column="0" Grid.Row="0" Grid.RowSpan="2">
            <StackPanel x:Name="charts">

            </StackPanel>
        </ScrollViewer>
    </Grid>
</Window>

System Details
ScottPlot Version: 5.0.14-beta
Operating System: Windows 11
Application Type: WPF
.NET Version: .NET 7.0

the problem doesn't seem to occure when i used double array as chart values
but when i use float[] the performance is getting worse in this scenario

the problem doesn't occur when I use double[] but performance suffers when I use float[]

Thank you for this detail! This may be the clue that helps solve this issue. There may be a performance related bug in the file that manages signal plot data using generic types:
https://github.com/ScottPlot/ScottPlot/blob/3c709c48f469d825c94aea66ece6c149eb077aac/src/ScottPlot5/ScottPlot5/DataSources/SignalSourceGenericArray.cs#L1-L67

Following-up, I'm finding similar performance between float[] and double[] so I don't think that's the issue.
I think the issue is that nested loop that sets up all those events... I'll see if I can figure out a better way

Following-up again, I think this is just what happens when you render 10 signal plots with 7 million points each. Signal plots are pretty good for performance, but this use case is really pushing it.
The solution here is to use the SignalConst plot type. It's in ScottPlot 4 but I haven't put it in ScottPlot 5 yet. I'll modify this issue to track progress on this front, and I suspect that the performance gain will resolve this issue 🤞

following-up, I have SignalConst working and here's the performance for a single plot with 7M points
| WpfPlot | WpfPlotGL
---|---|---
Signal | 21 FPS | 19 FPS
SignalConst | 34 FPS | 35 FPS
Interesting findings!

The OpenGL control isn't offering much improvement. It causes issues on some platforms (like ARM) so I recommend using the plain WpfPlot instead.
Signal Const is a little faster, but not much. I'm starting to think this is an event handling and/or WPF performance limitation...

Okay I think I've reached a stopping point. I'm pretty sure the limitation is a WPF events/rendering issue. If you can make the other plots update in a non-blocking way (on a timer running off the UI thread?) or something creative like that, I bet your app will be fast again.
In the meantime, here's a simple alternative that gets around this issue... it basically uses the MouseUp event instead of AxisLimitsChanged to limit how often update occur

using System.Collections.Generic;
using System.Linq;
using System.Windows;
using ScottPlot;
using ScottPlot.WPF;

namespace Sandbox.WPF;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        ShowCharts();
    }

    private void ShowCharts()
    {
        List<WpfPlot> wpfPlotList = new();

        for (int i = 0; i < 11; i++)
        {
            double[] doubles = Generate.RandomWalk(7_016_960);
            float[] floats = doubles.Select(x => (float)x).ToArray();

            var plot = new WpfPlot();
            plot.Plot.Add.Signal(doubles, 256);
            wpfPlotList.Add(plot);
        }

        for (int sourceIndex = 0; sourceIndex < wpfPlotList.Count; sourceIndex++)
        {
            var sourceChart = wpfPlotList[sourceIndex];
            sourceChart.Height = 200;

            for (int targetIndex = 0; targetIndex < wpfPlotList.Count; targetIndex++)
            {
                if (sourceIndex == targetIndex)
                    continue;
                var targetChart = wpfPlotList[targetIndex];
                sourceChart.MouseUp += (s, e) =>
                {
                    ApplyLayoutToOtherPlot(sourceChart, targetChart);
                };
            }

            var rule = new ScottPlot.AxisRules.LockedVertical(sourceChart.Plot.Axes.Left);
            sourceChart.Plot.Axes.Rules.Clear();
            sourceChart.Plot.Axes.Rules.Add(rule);
            sourceChart.Refresh();

            charts.Children.Add(sourceChart);
        }
    }

    private void ApplyLayoutToOtherPlot(IPlotControl source, IPlotControl target)
    {
        AxisLimits axesBefore = target.Plot.Axes.GetLimits();
        target.Plot.Axes.SetLimitsX(source.Plot.Axes.GetLimits());
        AxisLimits axesAfter = target.Plot.Axes.GetLimits();
        if (axesBefore != axesAfter)
        {
            target.Refresh();
        }
    }
}


RC0 build is freakingly slow to build

From Beta 11 to RC0 the build time has been changed from 4 second to 14 seconds...
I do know that you removed gulp, but what has changed that so drastically increased the build time?

Running `ionic build android' for a simple tabs starter project is taking ~5 minutes for me.

Hello! Thanks for opening an issue with us! I am seeing 11 second builds with ionic serve on RC0. ionic build, ionic run and ionic emulate takes longer because we run NGC on production builds to do AoT compiling. Also, we are constantly working on getting our dev build times as fast as possible and hope to have it much faster in the future. Ill keep this issue open to track out progress.

Thank you for the feedback but could you let me know why this has increased so much.
ionic serve watches used to take 1~1.5 seconds for typescript or html.
Now the same command takes 6~8 seconds for typescript, and 12~20 seconds for html.
And my project is not a big project, as per the hardware, it is very top end.

As @jgw96 mentioned, the major factor here is Angular's Ahead of Time compiling. It's just not that fast. However, that's only necessary for production builds, so we are looking into speeding up the dev build.
Stand by

Thank you for the info, I did not understood the problem.
Now I am eagerly waiting for the new building tools!
Continue your great work!

Yes the real issue here is ngc, which is what does the Ahead of Time compiling for production builds. We're working with the Angular team and they're well aware of the issues and there's work to be done yet with optimizing ngc. The builds will speed up, but what you're seeing right now is we're putting the speed into production app by compiling the template during a build step, rather than doing it all runtime in the within the client side app. Going to close this since we'll be continually working to speed things up, thanks.

To speed up ionic run android, Could ngc be only run when the --release flag is set and use JIT in all the other cases?


[Feature] allowlist of URL patterns

Expanding on https://github.com/lycheeverse/lychee/issues/452#issuecomment-1016220435, we just had a case where an URL was (by accident) generated as a full URL, something like
file://localhost/home/me/project/public/thing/index.html

This was caught by Lychee locally, but not on CI, not sure yet what's different.
In general, my proposal is to:

treat all URLs without a hostname as if they're on the --base (and treat it as an offline link), as suggested in #452
allow users to specify which URL patterns they allow / expect, so they can keep control of for example outgoing links, etc.

This would allow for catching simple errors link this, but also allow for checking what external links are used (don't link to shady sites), sort of link "link hygiene").

This was caught by Lychee locally, but not on CI, not sure yet what's different.

Did you set a base in any of the two environments?
Did you run lychee from the same base directory?
You can try passing --verbose to see if the link gets detected.
Added some comments to https://github.com/lycheeverse/lychee/issues/452.
About your second point, I like the idea in general. I wonder how often this is needed, though and how to prioritize this.
We could have a --block <pattern> option, which immediately exits with an error if a link matching pattern is encountered. Similarly we could support --allow with the opposite effect. However, could both occur at the same time? How would these be handled? Would the order matter?

Did you set a base in any of the two environments?

I did, it's hacking around the missing --root argument like shown in https://github.com/lycheeverse/lychee/issues/452#issuecomment-1016220435. Don't worry about that part, it's probably PEBKAC. :smile: I just wanted to give some context to the feature suggestion.

However, could both occur at the same time? How would these be handled? Would the order matter?

IMO, the simplest way is to have a single list with both allow and deny patterns (since they're patterns, they can be negated, think .gitignore). The order in the list is then significant, first match wins and allows the user to set it up in any way they see fit. The question is only if the list is "allow" or "deny" by default, which is more a question what the users are likely to want to do more.

We have a .lycheeignore already for excluding patterns. Initially I thought about adding support for tags like DENY to this file, but I think it's a bad idea, because these tags could be part of a real pattern. Alternatively we could have a [deny] and an [allow] section in lychee.conf. My fear is that people would be confused about what comes first.
Don't want to add .lycheedeny or another file to the mix to be honest. It would be hard to keep track of special files. Other ideas?

If we go with a single list, I would vote for allow because --deny !foo bar can be confusing whereas --allow foo !bar is easier to parse for me.

Before adding anything, though, I would like to know if this is a common enough use-case that warrants a new option.

Sure, this might be a niche option indeed, but it does make sense to me since you might short-circuit some / all external HTTP requests because they're disallowed by your setup. It's like a difference between XML being valid, syntax vs semantics. Just because the link points to a thing which exists doesn't mean I want it in my docs. IMO it fits nicely with the tool goals, at least IIUC.

Alternatively we could have a [deny] and an [allow] section in lychee.conf. My fear is that people would be confused about what comes first.

Apache solved this with saying which rules are evaluated first with Order: Allow, Deny or vice versa. I'm not a big fan and IIRC it's deprecated now.

Don't want to add .lycheedeny or another file to the mix to be honest.

Agreed, from my POV most (all?) config should be passable via the command line because I might want to override something in the config file (for example, commit config for prod and dev, need an override on CI / test).
Since allow and deny are the same thing from a different POV (meaning, allow http://localhost is the same as deny all except http://localhost, I still think a unified list is a way to go, especially since then the user is able to solve really complex use cases just by reordering the items in the list (first match wins) and it reduces the number of things the user needs to understand.
Maybe your idea of adding tags to the existing file is the way to go, it's just a matter of finding tokens / syntax which can be safely used.

As a temporary workaround, you could pass --dump and grep the output for the forbidden patterns. grep's exit code would indicate if there were any disallowed URIs.

@mre that's actually a really nice idea! :100:


[Profile] 이용내역 화면을 개발하라.

⛓ Related Issues

close #64

📋 작업 내용

[x] 리워드 이용내역 화면 개발

Codecov Report

Merging #89 (c378add) into main (37ee309) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main       #89   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files          120       124    +4
  Lines         1388      1424   +36
  Branches       138       143    +5
=========================================
+ Hits          1388      1424   +36

Impacted Files
Coverage Δ

src/components/layout/SettingHeader.tsx
100.00% <ø> (ø)

src/components/profile/ProfileDetail.tsx
100.00% <100.00%> (ø)

src/components/reward-history/NotHistory.tsx
100.00% <100.00%> (ø)

src/components/reward-history/RewardItem.tsx
100.00% <100.00%> (ø)

src/components/reward-history/index.tsx
100.00% <100.00%> (ø)

src/fixtures/index.ts
100.00% <100.00%> (ø)

src/fixtures/reward.ts
100.00% <100.00%> (ø)


What are some good ways to optimize css delivery?

https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery
Are there any additional options and/or other libraries that will work well with extract text webpack plugin that will allow me to inline some of the generated CSS?

An explanation on how to get this done would be much appreciated, there's not much information on google about this

It looks like resolved by penthouse npm package. No Webpack intergration found.
But see al list of critical path packages.

Can you push this question to Stack Overflow? Thanks.

@bebraw I've opened up a related question on StackOverflow. Would you be able to take a look?


Read images as binaries. Fixes #1674

Images are binaries and should be read as such.
The FileIterWrapper helper reads more than binaries, so we must set the B flag on the open function, not the IterWrapper when reading images.
Fixes #1674 and possibly #1633

Awesome, TY! <3


Openmpi not compiling with all GCC versions

Currently Loaded Modulefiles:
  1) ci              3) mpfr/3.1.2      5) gcc/4.8.4       7) torque/2.5.13
  2) gmp/5.1.3       4) mpc/1.0.1       6) gcc/4.9.2
REPO_DIR is
/repo/generic/sl6/x86_64/openmpi/1.8.8
SRC_DIR is
/repo/src/openmpi/1.8.8
WORKSPACE is
/var/lib/jenkins/workspace/OpenMPI/ARCH/x86_64/GCC_VERSION/4.8.4/OS/sl6/SITE/generic/VERSION/1.8.8
SOFT_DIR is
/apprepo/generic/sl6/x86_64/openmpi/1.8.8
continuing from previous builds, using source at  /repo/src/openmpi/1.8.8/openmpi-1.8.8.tar.gz
GCC Version being used
/apprepo/generic/sl6/x86_64/gcc/4.9.2/bin/gfortran
/apprepo/generic/sl6/x86_64/gcc/4.9.2/bin/gcc
/apprepo/generic/sl6/x86_64/gcc/4.9.2/bin/g++
Configuring the build

This is our problem. After compiling with gcc-4.9.2, even when we load up gcc-4.8.4,
4.9 is still the default. So we have to unload the current gcc version for the next build, just after  make install on build.sh

Added
module unload gcc/$GCC_VERSION
at the end on build.sh to unload the current gcc compiler to make way for the next one.
Hope it works.

GCC Version being used
/apprepo/generic/sl6/x86_64/gcc/4.9.2/bin/gfortran
/apprepo/generic/sl6/x86_64/gcc/4.9.2/bin/gcc
/apprepo/generic/sl6/x86_64/gcc/4.9.2/bin/g++

and
Currently Loaded Modulefiles:
  1) ci              3) mpfr/3.1.2      5) gcc/4.8.4       7) torque/2.5.13
  2) gmp/5.1.3       4) mpc/1.0.1       6) gcc/4.9.2

Im not sure if the module unload gcc/$GCC_VERSION is not working or what, but gcc/4.9.2 is not unloaded at the end of make.
So I'm trying compiling just for 4.8.4 to see whats happening.

Okay so I had to change the order of loading modules
toruqe/2.5.13 loads gcc/4.9.2, so if I want a different gcc I have to load it last.
module load torque/2.5.13
module load gcc/$GCC_VERSION

this should work.

you need to have the torque module load the GCC that it was actually built with. So, if torque was built with 4.9.2, it should that. This will then propagate to OpenMPI

Okay -- is there a good reason you need the same version of OpenMPI built with different versions of gcc? I remember Andy talking to the openmpi guys and they seemed to think that was a non issue -- even saying that you can swap between an icc compiled and a gcc compiled version...

so it GCC 4.9.2 and 5.2.0

is there a good reason you need the same version of OpenMPI built with different versions of gcc?
We don't need it, but if we used OpenMPI built with one version of GCC, and then we try to mpicc or mpirun another app with that using a different GCC, I don't think that'll work.

So building openmpi with the gcc versions used for building torque worked.
Closing this issue.


Simulation mode set via string - unexpected behaviour when setting simulate without data

When I create a global simulation_options object and define values using a string, such as 'long_response' as in the docs, I cannot set only the simulate parameter, without the data one.
More specifically, this will NOT work (no data parameter):
const simulation_options = {
  long_response: {
    simulate: true
    }
  }
}

this works (some default data parameter that gets merged with the default data):
const simulation_options = {
  long_response: {
    simulate: true,
    data: {}
    }
  }
}

and this also works (we don't run a simulation at all):
const simulation_options = {
  long_response: {
    simulate: false
    }
  }
}

I expect this to work by using the default data:
const simulation_options = {
  long_response: {
    simulate: true
    }
  }
}

And I also expect certain precedence (e.g. maybe I have defined default data in the simulation_options and expect this to be inherited into the 'long_response', see #2911
P.S. I know I have opened 4-5 issues today on this, and sorry for inundating you, but I am developing a large, custom online experiment and need to take care of a lot of details - using the simulation mode is a blessing!

P.S. I know I have opened 4-5 issues today on this, and sorry for inundating you, but I am developing a large, custom online experiment and need to take care of a lot of details - using the simulation mode is a blessing!

This is great. Thanks for reporting all of these. I'm probably not going to be able to work actively on it for a couple weeks, but I will see if I can squeeze in some fixes.

No worries at all. I have found workarounds for myself. I will try to share a version of my code in the Discussions once the full setup is complete as I really think my code showcases a lot of the strengths of the simulation mode as it is currently set up -- super turbo scalable!

I have found workarounds for myself.

@nikbpetrov Great to hear you were able to work around the quirks. As always, I'm curious whether #2858 works as intended. If you could devote some time for testing it against #2911 and #2912, that would be great! Otherwise, I'll look into this soon. Thanks!

Hey @nikbpetrov,
I'm having a hard time reproducing this one.
I added a test case in https://github.com/jspsych/jsPsych/commit/b6d4b182789698c1d88ac95e096f5feff7545172
Does the test case match the configuration that you are having trouble with?
I did push some fixes for other issues on this branch already, so I suppose it is possible that those fixed this if the bug was due to some convoluted handling of the simulation_options.

After some more investigation I think the other changes I made did resolve this issue, because nested values are now getting merged properly. Feel free to reopen if I missed something.


Adding dynamic calender

Hey I made dynamic calender Project Which Is Very Good!
This Project is very Helpfull,
I Make This Project With the help of HTML, CSS & JavaScript,
The CSS & JavaScript Code are Available in very well mannered! & Easy to understand!

https://user-images.githubusercontent.com/88212870/167541976-372d9e92-d6c1-4044-8ace-89babdeed6c5.mov
Pls. assign it to lvl-3

Add readme with demo video

Add readme with demo video

Done!


STANDALONE: Make a standalone app

Description
Use the Electron forge to make web settings interface as standalone app. It make less pain user to launch the application.
Inside settings show which link user should copy & paste inside the OBS
List of functionality requirements

[ ] Configure the electron forge

[ ] Configure the build process on electron
[ ] Make a first release with standalone app

Make server as well


docs: Added the flame_svg section

Description
Added the flame_svg documentation
Checklist

[x] The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
[x] I have followed the Contributor Guide when preparing my PR.
[-] I have updated/added tests for ALL new/updated/fixed functionality.
[x] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
[x] I have updated/added relevant examples in examples or docs.

Breaking change

[ ] Yes, this PR is a breaking change.
[x] No, this PR is not a breaking change.

Related Issues
Closes #1964

Gonna fix all asap, sry!


Check has('patch-x.y.z') more strictly

Close #10751
Since 9.0.0010, has('patch-X') returned 1.
The following patterns also returned 1:

patchX
patch0X
patch-9.0.0X
patch-9X0X0
patch-9_0_0

Also there was a potential issue that has('patch-10.0.0') will not
return 1, even after Vim 10 will be released in the future.
This PR fixes them.
As a side effect, has('patch-09.00.0') is now allowed.

But, there are still remaining issues:

Invalid patterns like patch-9X0X0 are still accepted.
patch-10.0.0 doesn't work in the future when Vim 10 is released.

I updated my patch.

But, there are still remaining issues:

Invalid patterns like patch-9X0X0 are still accepted.
patch-10.0.0 doesn't work in the future when Vim 10 is released.

I updated my patch.

Thanks.  I haven't checked,  but patch-9.0.0001 should work.
--
From "know your smileys":
[:-)	Frankenstein's monster
/// Bram Moolenaar -- @.*** -- http://www.Moolenaar.net   \
///                                                                      \
\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

Yes, the correct pattern like "patch-9.0.0001" works as expected regardless of this PR.


URL quoting regression when using find-links

Matching this Pants issue; https://github.com/pantsbuild/pants/issues/20474. Users both on Slack and GitHub are reporting regressions around URL-parts not being quoted as expected when Pex tries to download artifacts. @cburroughs helpfully bisected Pex directly and has isolated the issue to commit https://github.com/pantsbuild/pex/commit/45eea4bb274b65bc185e1ea8cfc67f507209aea0.
On my own, I've confirmed using pipx that 2.1.143 works fine, and 2.1.144 is broken which matches their conclusion:
pex3_2_1_144 lock create --interpreter-constraint $'CPython==3.10.*' --style=universal --pip-version=23.1.2 --resolver-version pip-2020-resolver --find-links=https://download.pytorch.org/whl/torch_stable.html  "torch==2.0.1+cpu" -o tmp/tmp.lock
pid 32047 -> /home/ts/.pex/venvs/41538e837189c28a1bce8019b533d7189996d251/5985ed09b49a653d6596b0e14d134c5456cf1a9f/bin/python -sE /home/ts/.pex/venvs/41538e837189c28a1bce8019b533d7189996d251/5985ed09b49a653d6596b0e14d134c5456cf1a9f/pex --disable-pip-version-check --no-python-version-warning --exists-action a --no-input --isolated -q --cache-dir /home/ts/.pex/pip/23.1.2/pip_cache --log /tmp/pex-pip-log.fkdel996/pip.log download --dest /home/ts/.pex/downloads/fingerprint_artifact.zv_s1ok7 --no-deps https://download.pytorch.org/whl/cpu/torch-2.0.1+cpu-cp310-cp310-win_amd64.whl --index-url https://pypi.org/simple --find-links https://download.pytorch.org/whl/torch_stable.html --retries 5 --timeout 15 exited with 1 and STDERR:
  ERROR: HTTP error 403 while getting https://download.pytorch.org/whl/cpu/torch-2.0.1+cpu-cp310-cp310-win_amd64.whl
ERROR: Could not install requirement torch==2.0.1+cpu from https://download.pytorch.org/whl/cpu/torch-2.0.1+cpu-cp310-cp310-win_amd64.whl because of HTTP error 403 Client Error: Forbidden for url: https://download.pytorch.org/whl/cpu/torch-2.0.1+cpu-cp310-cp310-win_amd64.whl for URL https://download.pytorch.org/whl/cpu/torch-2.0.1+cpu-cp310-cp310-win_amd64.whl

There were a few unquote changes in the linked commit, but I'm not sure if those are erroneous, if we should store the original URL as well, or if we should quote them somewhere later.

Thanks for narrowing down this issue @tgolsson and @cburroughs.


Create a view to post answer

Model : Answer
serializer: AnswerSerializer
also add error and success codes

claim


Bugfix/172 xdebug context blank

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

@rioastamal Thanks for contributing, I've added an exception for quote (and apostrophe) entities in 0b76fe7438bd01cf18469cafdb8032594252fc1b, as alternative to your proposed solution which would actually change &quot (") incorrectly as '(&apos) that resulted in different rendered output from Xdebug response.


Is this using the latest stable tensorflow version?

Looks like the plugin is using TFLite C API version 2.2 is this correct? The latest stable tensorflow version is 2.3.1, can you please update the .so files?

Please help me with that, I’m training my model on Tensorflow 2.3.0 and I’m getting errors because the library is 2.2

@left-brain You can get the tf 2.3.1 binaries from https://github.com/am15h/tflite_flutter_plugin/releases/tag/v0.5.0, I will update the install scripts as well.

It worked, thanks :)


chore: jsonfmt trafficmanager

Ran jsonfmt -w "specification/trafficmanager/**/*.json"

Automation for azure-sdk-for-python

Automation for azure-sdk-for-js

Automation for azure-sdk-for-java

Automation for azure-sdk-for-ruby

Automation for azure-sdk-for-go

Can one of the admins verify this patch?

Can't merge due to model validation failures.

@tjprescott the model validation errors in this one aren't ones I'd be comfortable fixing for someone else. Maybe it needs to get assigned to on of the admins that can override the build failure

@sergey-shandar can you merge this?


Coverage Exclusion Range

This PR adds the ability to specify a range to exclude from code coverage instrumentation, inside a module.
I found this to be useful for unstable code that I don't want to fuzz, but that is inside a module that I care about.
This works by adding a relative address range on the command line options, surrounded by '?'.
module.dll?0x23f67?0x4da60?

Hi Dario,
This is interesting, but seems a tad too specific. For example, instead of specifying an exclusion range, the user might wish to specify an inclusion range, they might want to specify multiple ranges etc. And in any case the user will have to extract the range offsets manually.
If by "unstable code" you mean code that results in new coverage that isn't related to the samples, then there are more generic solutions for this problem. For example Jackalope (my other fuzzer), when encountering new coverage, reruns the sample multiple times and filters out the coverage that wasn't seen on every run. This coverage is marked as seen, but if there is no coverage seen for every run with the sample, the sample isn't saved in the corpus. Some other fuzzers use a similar technique.


WDIO@7 compatible, bump deps, fix tests, fix lint errs

wdio-mochawesome-reporter was not compatible with WDIO v7 mainly due to locked dependencies.
These have been bumped, tests are fixed and linting warnings were resolved.
@fijijavis Please merge and release a new version, so others can actually use this library with current stable WDIO.
Resolves #71

Hello, anyone here could merge and release a new version, i like this but it is not incompatible with stable v7 WDIO. Thanks very much!

@fijijavis can you please merge?

Bump.
This fix would would very helpful to the community. Please merge!

@kondratk Hi, your help is needed here [(https://github.com/fijijavis/wdio-mochawesome-reporter/issues/68#issuecomment-1795595892)] to get this reporter updated


README: update badges

I checked the Quay download logs and see nobody's
pulling Quay etcd master images. We should drop it.
Instead add Godoc, Release, LICENSE badges.

lgtm


Add pagination

builtwithelm is going to be listed on elm-lang.org! In anticipation of an increase in the number of listed projects I'd like to paginate the list 5 projects at a time in order of most recently added, i.e. page one contains the latest through fifth-latest projects to join. Let's continue to load the entire JSON list at once at startup of the app. The main purpose of this change is to keep the page weight low due to all the large images.
I would prefer that someone who is new to Elm contribute this feature, and I'll offer personal guidance to anyone that needs it :smile:

I'd love to give this a shot. I'm building my first Elm app at the moment and I would love to have some assisted learning.

@Bipsy it's all yours! Are you a member of the elmlang slack? That's my preferred means of RT communication for Elm stuff.

@Bipsy any issues getting started on this?

@lukewestby
I was expecting a notification when you responded to my comment. My apologies. I just saw your response. I'll get started on it tonight.
On the Elm slack I'm Bipvanwinkle

@Bipsy no worries! Let me know if you need anything at all.

All set! #22


Unable to retrieve data into Grafana

Hi,
Thanks for the work on this exporter.
I have a issue when I try to use the dashboard Radarr V3 or Sonarr V3 in Grafana with Exportarr set up.
I can see the data on the url http://smetric:9707/metrics where smetric is the docker Exportarr configurated for my instance of Sonarr. I set the Data Source URL to http://smetric:9707/metrics but Grafana still return the HTML code of the homepage :
{
  "request": {
    "url": "api/datasources/proxy/3/api/v1/query?query=sonarr_history_total&time=1605645283",
    "method": "GET",
    "hideFromInspector": false
  },
  "response": "
Radarr Exporter

metrics
"
}

The problems seems to be related to the homepage of Exportarr which is located on http://smetric:9707
Do you have a idea to resolve this issue ?
Thanks

It doesn't seem like you are using prometheus to collect the metrics?  Grafana should be using the prometheus datasource to query these metrics.

I have the same issue, and i can confirm than i use Prometheus as monitoring option on grafana.
I'm on kubernetes, and i used your helm yaml file and still not able to query the data on grafana.

Sorry it's been awhile since i've had time to work on this project. Unfortunately I'm not sure what the issue is.

Grafana expects the metrics to exist in Prometheus first.
Make sure your Prometheus instance is able to pull in metrics.


Tags time-out in scipts: <server.list_plugins> and <server.list_plugin_names>

The output of /version on my server is: CraftBukkit version git-Spigot-e4d0c66-f3f2fe5 (MC: 1.13.2) (Implementing API version 1.13.2-R0.1-SNAPSHOT)
The output of /version denizen on my server is: Denizen version 1.0.3-SNAPSHOT (build 447-DEV)
(If relevant) A link to a paste of a script demonstrating the issue: https://one.denizenscript.com/haste/50468
The issue is:
The tags <server.list_plugins> and <server.list_plugin_names> both time-out when used in scripts, (generating "Tag filling timed out!" errors).
Weirdly, they both work fine when run from client as /ex narrate <server.list_plugins>.

As a workaround, you can either disable debug (via debug: false on the script container) or disable tag timing in the config (set the limit to 0).
Now as to why that would happen... probably Spigot made a borked thread lock again somewhere...

not an issue on Spigot 1.14.2 with Denizen DEV-807


Add flipt provider

Hello, I am new to OpenFeature.
I am thinking of adding Flipt provider.
It seems that there is not any provider implementation yet.
please let me know if there are instructions to follow (e.g. directory structure)

IMHO it is better to make this project a workspace and create one directory for each contrib. What do you think?

Yes, that's what we've done in other contribs repos. I can try and help from a tooling perspective.

@beeme1mr Do other contribs repos have an umbrella project for all the contribs? I am re-thinking if we should have a "root" crate as a workspace, or simply make each contrib (directory) individual.

@sheepduke most contribs repos publish under an OpenFeature project or org. I'm not sure how that would work in Rust but we should try and do something similar if possible.

completed via https://github.com/open-feature/rust-sdk-contrib/pull/8


Updates the GUID type to marshal as string.

Signed-off-by: Justin Terry (VM<EMAIL_ADDRESS>

We should take this over #305. @erfrimod - Can you review this please.

@jhowardmsft  - Once we take this we can moby/moby revendor


Make sure all the resources are namespaced

Fixes: https://github.com/scaleway/cert-manager-webhook-scaleway/issues/24

Hey, thanks for the fix, some of those resources are not namespaced, we could remove the namespace field for those

Indeed, it seems I went a bit overboard :-) I removed the namespaces from the ClusterRole and ClusterRoleBinding and APIService


Is it possible to associate custom test with TFS/MTM Test case?

I have created a VSIX based test adapter using visual studio test platform(vstest) API. It will read my custom test item(in xml) where my test information is there and it will enable the unit test explorer in visual studio to list my tests written in custom test file. (I referred the following blog to create the adapter
https://devblogs.microsoft.com/devops/writing-a-visual-studio-2012-unit-test-adapter/#)
I am able to get my custom tests discovered under Unit Test Explorer. But I am not able to associate those tests with TFS/MTM manual test cases. When I right click the test case, the "Associate to Test Case" option is disabled.
Is it possible to get that option enabled to associate with a manual TFS test case ?
NOTE: I am able to associate a .net based unit test method by this way. My VS version is 15.9.2

@nramprakash88 Association of test case is supported currently for only NUnit, xUnit and MSTest test adapters in VS to cater to customers who were using this flow earlier. We recommend users to declare the tests to run as part of the pipeline instead of defining a test case, associating it with a test method and then executing it.
@PBoraMSFT : fyi.


ci(lint): automatically sort package.json files

Proposed Changes
Instead of manually sorting stuff inside package.json files, I added something (sort-package-json) that will automatically sort package.json files on pre-commit when they are staged. Now all our package.json files will always stay ordered in the same way.
Potential Breaking Changes
None
Acceptance Criteria

[ ] The proposed changes are covered by unit tests
[ ] The potential breaking changes are clearly identified
[ ] README.md is adjusted to reflect the proposed changes (if relevant)

The ordering of some fields (for example license and author) seem to be something else than alphabetical, but at least its always ordered the same. Dependencies seem to have the proper alphabetical order thought


vim9script: "Lambda function body not supported yet" when a dictionary is returned from a lambda

Describe the bug
Vim throws an error when a dictionary is returned from a vim9script lambda.
To Reproduce

Run vim --clean -S test.vim, with

vim9script
def Test(): list<dict<number>>
    const test: list<number> = [1, 2, 3]
    return mapnew(test, (_, i) => {'x': i})
enddef
defcompile

Result: Lambda function body not supported yet

This used to work with the old lambda syntax:
function Test()
    const test = [1, 2, 3]
    return mapnew(test, {_, i -> {'x': i}})
endfunction
echo Test()

Environment
Vim version 8.2.2454

See :h vim9-curly for solution.


IPv4 to IPv6 address migration way

We need to provide a method to help enterprises realize the smooth migration of the large-scale Spring Cloud Alibaba microservice system IP address stack from IPv4 to IPv6. The specific method is to achieve migration through dual registration and double subscription. The specific migration steps of this solution are as follows:

First, upgrade the Spring Cloud Alibaba framework for all microservice applications in the system to enable them to have dual-stack address extraction and resolution functions.
Transform the IP address protocol stack of the host machine where some microservices in the system are located, so that it supports dual-stack IPv4 and IPv6 addresses at the same time.
The dual-stack address extraction module in the microservice application modified in step 2 extracts the dual-stack addresses in the application host, and registers the dual-stack addresses to the registration center through the service registration module.
Consumers subscribe to the dual-stack IPv4 and IPv6 addresses of a service in the registration center, and compare the address stack types supported by the host through the dual-stack address resolution module in the application. If the host only supports IPv4, use The provider’s IPv4 address initiates a service call; if only IPv6 is supported or dual-stack is supported at the same time, the provider’s IPv6 address is used to initiate a service call. If the call fails, it is best to use the IPv4 address to retry.
When all Spring Cloud microservices in the system have completed supporting the IPv6 address stack, gradually close the IPv4 address stack for all application hosts, thereby smoothly completing the migration of the large-scale microservice system from the IPv4 address stack to the IPv6 address stack .

IPv4地址向IPv6地址迁移方案
我们需要提供一种帮助企业实现大规模Spring Cloud Alibaba微服务系统IP地址栈从IPv4平滑迁移到IPv6的方法，具体方法就是双注册双订阅实现迁移，该方案的具体迁移步骤：

首先对所有的系统中的微服务应用进行Spring Cloud Alibaba框架升级，让其具备双栈地址提取和解析功能。
对系统中的部分微服务所在宿主机进行IP地址协议栈改造，让其同时支持双栈IPv4和IPv6地址。
经过步骤2改造的微服务应用中的双栈地址提取模块，提取应用宿主机中的双栈地址，并通过服务注册模块，将双栈地址都注册到注册中心。
消费者订阅注册中心中的某个服务的双栈IPv4和IPv6地址，通过应用中的双栈地址解析模块，比对宿主机所支持的地址栈类型，如果宿主机仅支持IPv4，则使用提供者的IPv4地址发起服务调用；如果仅支持IPv6或同时支持双栈，则用提供者的IPv6地址发起服务调用，调用失败最好能使用IPv4地址进行重试。
当系统中的所有Spring Cloud微服务都完成支持IPv6地址栈的支持后，逐步对所有应用宿主机关闭IPv4地址栈，从而平滑完成大规模微服务系统从IPv4地址栈到IPv6地址栈的迁移。

please assign to me

We finished it.


missing notAfter in certificaterequest status

Bugs should be filed for issues encountered whilst operating cert-manager.
You should first attempt to resolve your issues through the community support
channels, e.g. Slack, in order to rule out individual configuration errors.
Please provide as much detail as possible.

Describe the bug:
Previously, the certificate custom resource had a notAfter status field indicating the expiry date of the ssl certificate, but this is missing in the certificaterequest custom resource, and as far as I can see it's not in the type definition ( pkg/apis/certmanager/v1alpha2/types_certificaterequest.go ) either.
Was this field removed on purpose? If so, what would be the reason to do that?
Environment details::

Kubernetes version (e.g. v1.10.2): v1.14.8
Cloud-provider/provisioner (e.g. GKE, kops AWS, etc): GKE
cert-manager version (e.g. v0.4.0): v0.11.0
Install method (e.g. helm or static manifests): helm

/kind bug

The CertificateRequest resource has never had a NotAfter field in its status. Are you perhaps thinking about the Certificate resource? This exposes status.notAfter which is what you are looking for 😄


RFC: Moving out of utils.resetTestDB

I wanted to open this issue to discuss the utils.resetTestDB that I think we should stop (ab)using, for the following reasons:

It's heavy: the tool drops all the data then recreate the entire schema. On my local machine, that's almost 1 second.
In many places we use it in a beforeEach, so we're adding almost 1 second to each test
It's using sequelize.sync, recreating the DB from the models and ignoring the migrations (a big diff compared to other envs)
It's usually not necessary, the cases where you need an empty DB for your test are very marginal

I'd like more feedback from @opencollective/core-developers, I'm not sure why we're using that helper everywhere and may have missed some cases.

This is complicated because we have a mix of unit and integration tests.
See GQL mutation tests, for example, there are tests where we generate a query and verify mutations in the DB.

It's usually not necessary, the cases where you need an empty DB for your test are very marginal

I think the main idea behind clearing the DB is to guarantee tests are mutually exclusive and also, simplify tests.
I'm OK with removing the DB state of the equation and not resetting it, but I think this could generate a whole new set of problems like inter-test dependency.
If we're strictly looking for faster tests, perhaps we could try truncating tables?

a whole new set of problems like inter-test dependency

Do you have examples of how this could happen? Except when we count entries in the DB, I don't see many cases where a test would fail because of another one, nor how GQL mutations affect this: our tests run synchronously.

If we're strictly looking for faster tests, perhaps we could try truncating tables?

I'm also looking for simplification, and reproducibility: the fact that we create the database with .sync() in tests means that we may not be testing with the same structure as dev/prod, where the database is prepared through migrations.

Every test that requires a specific unique property of a model could be compromised.
For example, testing fees on top requires OpenCollective and its host to be created with a specific id.
If tests are strong, we'll just need to replace the suite/test DB seed function with a single initial seed for the whole testing script.
Another example is the use of a fixed mocked date by older tests.
That will probably require some refactor since we won't be able to create multiple collectives with the same slug.
Although our tests run synchronously, we can't guarantee the order they will run since we can add new files and tests that will mess with the same record in the DB.
I think this is doable, we just need to define clear rules on how to write tests so we don't end up writing tests that break other tests.

The most problematic thing is probably the fact that we rely on specific IDs for some hosts/collectives.
A good first step to me would be:

To only use utils.resetDB if necessary
If possible, use it in before (not in beforeEach)
To add a comment whenever we add a utils.resetDB to explain why it's necessary

Closing as the complexity/gain ratio doesn't seem great at the moment.


WIP: Add 'buf format'

This doesn't work, but putting this up as-is since I don't have time to finish right now. This adds a DocumentFormattingEditProvider that adds buf format to the extension.
A lot of the code here is referenced from Go's old goFormat.ts.

If we add support for stdin (described here), a lot of the comments about generating a random ID for temporary directories is a lesser concern - all that will be removed as soon as we have support for stdin.

Looks great - as long as you've verified this all works locally (i.e. formatting on save).
I can't stamp because I'm the original author, but feel free to approve on your end (as a formality on my behalf) and we can merge from there. After this lands, we can create an issue here that says to adapt the implementation to using stdin with that feature exists.


Matrix multiplication is the wrong way round

In matrix.py, I'm assuming in some parts that my matrices are row-major, when in reality they're meant to be column major, just like in OpenGL. This caused me to screw up in episode 4 by multiplying the modelview matrix by the perspective matrix instead of multiplying the perspective matrix by the modelview matrix like I should've been doing.
The fix is pretty trivial and I have it on my local machine, but I haven't had the chance to update everything and test it works with all episodes. Also I need to add a disclaimer in the description of episode 4 or whatever to avoid confusion.

Here we go, all cleared up. Just need to correct episode 4 now :smile: