Enhancement/no more global

This PR scopes the instance of express to the export function so global state is not preserved if multiple instances are required. It also replaces the route Router with an instance of express allowing a views dir to be set on the specific route. Express template partials is called per route so partials can also be scoped to journey

@easternbloc @bendiggle @JoeChapman @gxxm @danielepolencic


Possibility to reduce access rights from admin to reader for the api call v1/assess/admission/rule (HTTP POST)

Summary
I would like to request a change to the access control for the HTTP POST call to the /v1/assess/admission/rule endpoint, allowing it to be accessible with reader permissions rather than requiring admin rights.
Problem Description
Currently, the /v1/assess/admission/rule API endpoint requires admin permissions to function. This poses a security concern when implementing CI/CD pipelines to verify if an image conforms to the set admission rules. For these pipelines, adding an API key with admin rights increases the risk of unintended changes to platform configurations, as the key has access to a broad range of API calls.
Proposed Solution
Allow the /v1/assess/admission/rule endpoint to accept API calls from a reader role instead of requiring admin permissions. This adjustment would enable CI/CD pipelines to perform image validation without risking unnecessary exposure of high-privilege credentials.
Use Case
In a typical CI/CD pipeline, the goal is to verify whether an image meets the platform's admission rules. With reduced permissions:

It becomes safer to distribute API keys to multiple pipelines.
There is less risk of misusing API keys since they would be restricted to read-only operations rather than administrative actions.

Benefits

Improved Security: Reduces the exposure of high-privilege API keys in CI/CD environments.
Enhanced Usability: Makes it easier to integrate admission rule checks into pipelines without needing excessive permissions.
Minimized Risk: Prevents accidental or unauthorized changes to platform configurations.

Thank you for considering this feature request! Please let me know if further clarification or details are needed.

The following steps should work for your needs

UI -> Settings -> Users, API Keys & Roles -> Roles. Create a custom role with Admission Control view/modify and other permissions you need.
UI -> Settings -> API Keys. Create an api key with the global role as the role created in step1
Use the api key created in step 2 in CI/CD

The following steps should work for your needs

UI -> Settings -> Users, API Keys & Roles -> Roles. Create a custom role with Admission Control view/modify and other permissions you need.
UI -> Settings -> API Keys. Create an api key with the global role as the role created in step1
Use the api key created in step 2 in CI/CD

Ah thank you! I didn't think of this before. This works great. :)


_if issues with empty strings

Hey Mathias,
it's me once again. I have an issue with the _if in combination with empty strings in data. When I have a inline section like

{{employee.quote}}

and employee.quote is an empty string (""), the section is still rendered. I tracked down the issue and would say its due to two things:
1st: isFalse( value ) does not consider empty strings to be false. I would say it should. So I recommend add this check to line 129, like:
if ( value === '' || value === undefined || value === false || string === "false" ) {

2nd: validateIf( inlineValues, values ) returns true when value is in values. It does not check if resolved value is true or false. I think it is better to check this, so my recommendation is to change line 235 to:
if ( ! hasValue( value, values ) && isFalse( resolveName( value, values ) ) ) return true;

or
if ( ! hasValue( value, values ) ) return isFalse( resolveName( value, values ) );

What do you think?

Those changes sound good to me. Care to create a PR? If not, I'll put it in.

Go ahead and put the changes in. There is already a PR with another idea I came up with today. Thanks!

Fixed that in #52


boundaries of nested splits

Should I be able to do the circles to torus map with nested splits?

module torustest where

data S1 = base
        | loop  [ (i=0) -> base
                   , (i=1) -> base]

data Torus = ptT
           | pathOneT  [ (i=0) -> ptT, (i=1) -> ptT ]
           | pathTwoT  [ (i=0) -> ptT, (i=1) -> ptT ]
           | squareT  [ (i=0) -> pathOneT {Torus} @ j
                           , (i=1) -> pathOneT {Torus} @ j
                           , (j=0) -> pathTwoT {Torus} @ i
                           , (j=1) -> pathTwoT {Torus} @ i ]

c2t' : S1 -> S1 -> Torus = split
  base -> split@(S1 -> Torus) with
            base -> ptT
            loop @ x -> pathTwoT{Torus} @ x
  loop @ y -> split@(S1 -> Torus) with
                base -> pathOneT{Torus} @ y
                loop @ x -> squareT{Torus} @ x @ y

I get this error, which seems like it doesn't know that the boundaries of the anonymous functions are the same?

Type checking failed: Faces in branch for "loop" don't match:
got
[ (y = 0) -> torustest_L20_C17 0, (y = 1) -> torustest_L20_C17 1 ]
but expected
[ (y = 0) -> torustest_L17_C13, (y = 1) -> torustest_L17_C13 ]

This happened in both pi4s3 and pi4s3_dimclosures.

This is the expected behavior. When comparing splits in the conversion checker we only look at the name+location and in this case the computation rule for paths isn't even triggered as the boundary of the second split isn't known. So you have to do what you did before by introducing auxiliary definitions annotated with the types. I'm not sure if we can get this to work without either more annotations or type inference, so in conclusion I don't think that the nested splits are really useful for HITs in cubicaltt and I would just make auxiliary definitions (or switch to cubical Agda...).


Refine restrictions on Tag class

[x] restrict Tag length @chia-yh
[ ] restrict number of Tag instances @huanghao1998

@huanghao1998 any updates on this?

@huanghao1998 any updates on this?

Yes, could you help me to check if I implemented correctly. #172
Thanks


Implement bytemuck::Zeroable and bytemuck::Pod for every color type

I'm working on an experimental creative framework for Rust and I wanted to use one of palette types in a uniform buffer. This can be easily done through unsafe code but I think it is much cleaner to use the bytemuck crate which provide the Zeroable and Pod traits to convert types from and to raw bytes.
This pull request implements those traits for the color types defined in this crate.
Changes
I did the whole pull request in a single commit, implementing the traits for the following types.

Rgb<S, T> where T is Pod/Zeroable

Luma<S, T> where T is Pod/Zeroable

Hsl<S, T> where T is Pod/Zeroable

Hsluv<Wp, T> where T is Pod/Zeroable

Hsv<S, T> where T is Pod/Zeroable

Hwb<S, T> where T is Pod/Zeroable

Lab<Wp, T> where T is Pod/Zeroable

Lch<Wp, T> where T is Pod/Zeroable

Lchuv<Wp, T> where T is Pod/Zeroable

Xyz<Wp, T> where T is Pod/Zeroable

Yxy<Wp, T> where T is Pod/Zeroable

Alpha<C, T> where C and T are Zeroable

Alpha<C<T>, T> where C<T> is a color that is Pod and T is Pod
eg. Alpha<Rgb<T>, T> is Pod if T is Pod

I also implemented Zeroable and Pod for the Packed<C> rgba struct. This required to make it implement Copy regardless of whether C was Copy.
Note
I really expect this change to be used with the Rgba / Rgb types, but I made the change for every color type for consistency.

I think this is a good idea. Better interoperability is always nice!
For the Alpha implementations, you could require the Pixel trait to be implemented, so some variant of impl<C, T> Pod for Alpha<C, T> where C: Pod, T: Pod, Self: Pixel. It requires safe casting to an array/slice, so Alpha only implements Pixel for when the component type is homogeneous. The odd cases where this doesn't apply will have to make specific, hand crafted implementations anyway.
Also, don't forget PreAlpha, which works like Alpha, but pre-multiplied.

I did exactly that :) I wasn't aware of that Pixel<T> trait.

Great! Pixel kind of fulfills the same purpose, except that it's not as general purpose and not as easy to compose into larger structures. That's why I think it's good to have both. But in a case where you just need to go between, say, &[f32] and &[LinSrgb<f32>] the Pixel trait will have the small benefit that it's more type safe.

Ah, I tried the "update branch" button and it made a merge from master. Completely unnecessary, but oh well. I think this PR is good as it is, so I'll just queue a merge to master. Thank you!
bors r+


D3D8 backend

why does DXVK's d3d8 require d3d9 to function ? Why isn't it like d8vk ? It worked fine without d3d9.

In dxvk d3d8 is implemented through the d3d9 parts since they have alot of similarities and so can share a lot of the same code. Same goes for d3d10 which is implemented through d3d11 in dxvk.
Back in the d8vk times this was also the case, but for a time the d3d9 code was instead statically compiled in the d3d8 dll instead of dynamically linked via a external file. It might seem like a long time because there never was another stable release after 1.0, but bleeding edge code wise d8vk kept the two file separately through most of its life.
The reason that was reversed originally was there were some games on Windows when doing testing there, that didn't work properly the statically linked d3d9 (I don't know the reason at hand) so it was reverted again. Since then it has just been kept as two files like it was originally.

iam using global windows method (chaging d3d8 in windows dir) it works fine with d8vk; but with dxvk it requires both the original d3d8 and d3d9 changed which is not a optimal way.

It might not be optimal but for the most common use case of dxvk of using all or nothing it works fine.

would it be possible to compile dxvk d3d8 to be a single dll ?

chaging d3d8 in windows dir

That is a terrible idea. Just drop d3d8.dll and d3d9.dll in the folder where the exe of your game sits and it should work fine.

would it be possible to compile dxvk d3d8 to be a single dll ?

It's possible but we're not gonna offer builds that do that. Windows is not really a supported platform for DXVK anyways.


Fix overlapping viewcontrollers

quick fix to the gesture handlers, fixes the issue mentioned

I have test it, but it doesn't very well.
When the left menu showed, I swipe from the edge of the ViewController, the right view will show again.
But I should just hide left menu only.

This is a hack, that at the very least doesn't cause the app to crash. Without this the view controllers overlap.
Sent from Outlook Mobile
On Sun, Mar 6, 2016 at 10:49 PM -0800, "PlutoY"<EMAIL_ADDRESS>wrote:
I have test it, but it doesn't very well.
When the left menu showed, I swipe from the edge of the ViewController, the right view will show again.
But I should just hide left menu only.
—
Reply to this email directly or view it on GitHub.


Allow for value to be set to null and a placeholder to be set.

This allows for a user to set a placeholder on the input when a moola input is cleared.

This PR also resolves issue #6.

Did you actually test this? When I use it I do not get any errors.


Separate FromDBStore and CommonStore

Previously, Store (renamed to FromDBStore) and CommonStore
interfaces shared the same file (storage.go). In order to improve
readability, we have moved CommonStore into its own file. Each
...Store interface clearly shows the databases it connects to.
In the future, we can implement a ...Store interface for toDB
and if we need to connect only to information_schema, we could
implment an IschemaStore interface.

I'm closing this once since it seems out of date

Nice. Thanks

On 28. Dec 2017, at 12:17, boekkooi-fresh<EMAIL_ADDRESS>wrote:
I'm closing this once since it seems out of date
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/hellofresh/klepto/pull/25#issuecomment-354272967, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGNb9gABNHmIYOB6zu9CEwWnzDVAiIRks5tE3i3gaJpZM4QnVf5.

--
[image: logo]
http://www.facebook.com/hellofreshde http://twitter.com/HelloFreshde
http://instagram.com/hellofreshde/ http://blog.hellofresh.de/
https://app.adjust.com/ayje08?campaign=Hellofresh&deep_link=hellofresh%3A%2F%2F&post_deep_link=https%3A%2F%2Fwww.hellofresh.com%2Fapp%2F%3Futm_medium%3Demail%26utm_source%3Demail_signature&fallback=https%3A%2F%2Fwww.hellofresh.com%2Fapp%2F%3Futm_medium%3Demail%26utm_source%3Demail_signature
HelloFresh App –Download Now!
https://app.adjust.com/ayje08?campaign=Hellofresh&deep_link=hellofresh%3A%2F%2F&post_deep_link=https%3A%2F%2Fwww.hellofresh.com%2Fapp%2F%3Futm_medium%3Demail%26utm_source%3Demail_signature&fallback=https%3A%2F%2Fwww.hellofresh.com%2Fapp%2F%3Futm_medium%3Demail%26utm_source%3Demail_signature
We're active in:
US https://www.hellofresh.com/?utm_medium=email&utm_source=email_signature
|  DE
https://www.hellofresh.de/?utm_medium=email&utm_source=email_signature |
UK
https://www.hellofresh.co.uk/?utm_medium=email&utm_source=email_signature
|  NL
https://www.hellofresh.nl/?utm_medium=email&utm_source=email_signature |
AU
https://www.hellofresh.com.au/?utm_medium=email&utm_source=email_signature
|  BE
https://www.hellofresh.be/?utm_medium=email&utm_source=email_signature |
AT https://www.hellofresh.at/?utm_medium=email&utm_source=email_signature
|  CH
https://www.hellofresh.ch/?utm_medium=email&utm_source=email_signature |
CA https://www.hellofresh.ca/?utm_medium=email&utm_source=email_signature
| LU
https://www.hellofresh.lu/?utm_medium=email&utm_source=email_signature
www.HelloFreshGroup.com
http://www.hellofreshgroup.com/?utm_medium=email&utm_source=email_signature
We are hiring around the world – Click here to join us
https://www.hellofresh.com/jobs/?utm_medium=email&utm_source=email_signature
--
https://www.hellofresh.com/jobs/?utm_medium=email&utm_source=email_signature
HelloFresh SE, Berlin (Sitz der Gesellschaft) | Vorstände: Dominik S.
Richter (Vorsitzender), Thomas W. Griesel, Christian Gärtner, Tobias
Hartmann | Vorsitzender des Aufsichtsrats: Jeffrey Lieberman | Eingetragen
beim Amtsgericht Charlottenburg, HRB 182382 B | USt-Id Nr.: DE 302210417
CONFIDENTIALITY NOTICE: This message (including any attachments) is
confidential and may be privileged. It may be read, copied and used only by
the intended recipient. If you have received it in error please contact the
sender (by return e-mail) immediately and delete this message. Any
unauthorized use or dissemination of this message in whole or in parts is
strictly prohibited.


Websockets transport doesn't handle PING (IDFGH-4478)

Environment

IDF master (b0150615dff529662772a60dcb57d5b559f480e2)

Problem Description
The Websockets transport in tcp_transport/transport_ws.c doesn't handle a websockets PING opcode received by a server, instead returning it to the user as if it were normal data.  Some users like esp_websocket_client do handle it (here), but others like esp-mqtt do not.
In the case of MQTT connected to a Mosquitto server via ws:// or wss://, this leads to the server timing out and disconnecting every 300 seconds / 5 minutes:
(Note that this log also includes MQTT pings, which work fine and are unrelated; the problem is at the 304972 timestamp, followed by the server disconnecting at 315101).
D (247492) RANDOM: getrandom returns 4
D (247494) MQTT_CLIENT: Sent PING successful
D (247495) MQTT_CLIENT: PING sent
D (247542) TRANSPORT_WS: Opcode: 2, mask: 0, len: 2

D (247542) TRANSPORT_WS: Actual data to receive (2) are longer than ws buffer (1)
D (247544) MQTT_CLIENT: mqtt_message_receive: first byte: 0xd0
D (247550) MQTT_CLIENT: mqtt_message_receive: read "remaining length" byte: 0x0
D (247557) MQTT_CLIENT: mqtt_message_receive: total message length: 2 (already read: 2)
D (247565) MQTT_CLIENT: mqtt_message_receive: transport_read():2 2
D (247571) MQTT_CLIENT: msg_type=13, msg_id=0
D (247575) MQTT_CLIENT: MQTT_MSG_TYPE_PINGRESP
D (304972) TRANSPORT_WS: Opcode: 9, mask: 0, len: 0

D (307976) RANDOM: getrandom(buf=0x3ffd87fe, buflen=4, flags=0)
D (307976) RANDOM: getrandom returns 4
D (307979) MQTT_CLIENT: Sent PING successful
D (307979) MQTT_CLIENT: PING sent
D (307984) TRANSPORT_WS: Opcode: 2, mask: 0, len: 2

D (307987) TRANSPORT_WS: Actual data to receive (2) are longer than ws buffer (1)
D (307995) MQTT_CLIENT: mqtt_message_receive: first byte: 0xd0
D (308001) MQTT_CLIENT: mqtt_message_receive: read "remaining length" byte: 0x0
D (308008) MQTT_CLIENT: mqtt_message_receive: total message length: 2 (already read: 2)
D (308016) MQTT_CLIENT: mqtt_message_receive: transport_read():2 2
D (308023) MQTT_CLIENT: msg_type=13, msg_id=0
D (308027) MQTT_CLIENT: MQTT_MSG_TYPE_PINGRESP
E (315101) TRANSPORT_WS: Error read data
E (315101) MQTT_CLIENT: mqtt_message_receive: transport_read() error: errno=128
E (315112) mqtt: error
E (315115) MQTT_CLIENT: mqtt_process_receive: mqtt_message_receive() returned -1
D (315124) MQTT_CLIENT: Reconnect after 10000 ms
W (315138) mqtt: disconnected

The following patch to transport_ws.c allows the Websockets transport to respond to PING automatically with a PONG.  This isn't the cleanest way to handle it (for example it uses a static buffer for ping payload data) but it fixes the problem:
commit 8a3d818697b5be873293e16ffcee618986f76528 (HEAD -> master)
Author: Jim Paris<EMAIL_ADDRESS>Date:   Mon Dec 21 14:45:45 2020 -0500

    websockets: respond to PING in ws_read

    Without this, clients that directly use tcp_transport (like esp-mqtt)
    fail to respond to the websockets PING, leading the server to close
    the connection.

diff --git a/components/tcp_transport/transport_ws.c b/components/tcp_transport/transport_ws.c
index 344491d6b8fb..dacb4eb03e0e 100644
--- a/components/tcp_transport/transport_ws.c
+++ b/components/tcp_transport/transport_ws.c
@@ -395,14 +395,52 @@ static int ws_read(esp_transport_handle_t t, char *buffer, int len, int timeout_
     int rlen = 0;
     transport_ws_t *ws = esp_transport_get_context_data(t);

+next_header:
     // If message exceeds buffer len then subsequent reads will skip reading header and read whatever is left of the payload
     if (ws->frame_state.bytes_remaining <= 0) {
-        if ( (rlen = ws_read_header(t, buffer, len, timeout_ms)) <= 0) {
+
+        // ws_read_header doesn't differentiate between "0 byte
+        // payload" and "timeout"; both return 0.  Reset the opcode so
+        // that we don't mistake a timeout for a 0-byte PING.
+        ws->frame_state.opcode = 0xff;
+
+        if ( (rlen = ws_read_header(t, buffer, len, timeout_ms)) < 0) {
             // If something when wrong then we prepare for reading a new header
             ws->frame_state.bytes_remaining = 0;
             return rlen;
         }
+
+        // timeout, or non-PING empty packet
+        if (rlen == 0 && ws->frame_state.opcode != WS_OPCODE_PING)
+            return 0;
+
+        // PING received; read payload and send a PONG
+        if (ws->frame_state.opcode == WS_OPCODE_PING) {
+            int plen = ws->frame_state.payload_len;
+            ESP_LOGW(TAG, "got PING with %d bytes payload", plen);
+            if (plen > 125) {
+                ESP_LOGE(TAG, "PING payload too big (%d)", plen);
+                ws->frame_state.bytes_remaining = 0;
+                return 0;
+            }
+            static char payload[125];
+            rlen = ws_read_payload(t, payload, plen, timeout_ms);
+            if (rlen != plen) {
+                ESP_LOGE(TAG, "PING payload read failed (%d)", rlen);
+                return 0;
+            }
+            rlen = _ws_write(t, WS_OPCODE_PONG | WS_FIN, 0, payload,
+                             plen, timeout_ms);
+            if (rlen != plen) {
+                ESP_LOGE(TAG, "PONG send failed (%d)", rlen);
+                return 0;
+            }
+
+            // PONG sent -- now read next header
+            goto next_header;
+        }
     }
+
     if (ws->frame_state.payload_len) {
         if ( (rlen = ws_read_payload(t, buffer, len, timeout_ms)) <= 0) {
             ESP_LOGE(TAG, "Error reading payload data");

Thanks for reporting, we will look into.


Avoid duplicating path string in ExpandFilePath

Changing signature of ExpandFilePath() to avoid extra string copies/allocations

Changing API will affect programs using tinygltf, so I don't want to merge this change unless this change give significant performance improvement(but looks no)

I understand this affects the API and might break some existing code. On our end, we use a custom set of FSCallbacks, and our ExpandFilePath() doesn't do anything. But with the actual signature, we still need to return an extra copy of the input argument.
We're in a context where we really need to minimize allocations and string copies as much as we can, so I thought this would be a welcome change. I understand if you don't want to break the current API though..
Thanks!


Update SSDPBridgeLocator.cs

it was not adding any bridges to the list

My change was not merged, can you please check SSDPBridgeLocator.cs line 110?
if (bridges.Where(x => x.IpAddress == ip).Any())

It was merged, looks ok now right?
https://github.com/Q42/Q42.HueApi/blob/master/src/Q42.HueApi.NET/SSDPBridgeLocator.cs#L110
If the IP is NOT in the list?

yes, it's fine


HeroCard unable to render D. M. YYYY date properly

Screenshots
When Title or Subtitle in HeroCard starts with date in European format (D. M. YYYY):

It gets evaluated with Markdown as ordered list and produces wrong HTML:

Version

webchat-stable
Bot Framework emulator

Describe the bug
When Title or Subtitle in HeroCard begins with date in the form of D. M. YYYY it's recognized as Markdown ordered list and rendered completely out of place (see screenshots).
To Reproduce
Steps to reproduce the behavior:

Connect your bot to proper channel registration

Start Bot Framework Emulator or deploy web chat to a website

Make sure your regional settings are European D. M. YYYY

Generate a Hero Card and set Title and/or Subtitle to today's date
var reply = stepContext.Context.Activity.CreateReply();
var card = new HeroCard
{
    Title = string.Format(DateTime.Now.ToShortDateString()),
    Subtitle = DateTime.Now.ToShortDateString(),
};

reply.Attachments.Add(card.ToAttachment());
await stepContext.Context.SendActivityAsync(reply);

Send it to user

See incorrect display in Web Chat

Expected behavior
Date should be displayed properly, not as an ordered list.
Additional context
Workaround: Prepend date with invisible character
[Bug]

I just discussed this with @compulim. Let me summarize!
TLDR: We researched different paths to make in regards to how to solve this issue, and I think we're ready to pull in @cwhitten
According to the DL schema, Activities DO have the textFormat parameter that can define whether to use rich text or plain text. However, this should only be applied to the text of the activity, and does not affect the attachment. While we could consider applying textFormat to the attachment, I think it's safer to assume that a user may want to differentiate between the activity's text and the attachment's texts' formatting.
According to Adaptive Cards, we don't have a way to indicate plain text or markdown for a card.
The Teams schema similarly default to rich text for the card's text, but non-formatted rich text (which I equate to plain text) for subtitle and title. Since we want to consider how other teams handle attachments, we should keep this in mind moving forward.
The paths:

Leave everything as is right now. Wait for https://github.com/microsoft/BotFramework-WebChat/issues/1259 to be implemented, which is the transfer of cards away from Adaptive Cards, and and build cards to render the text field as Markdown. This would continue to break @msimecek :( but it matches the decision Teams has made with Hero Cards.
Revert the previous fix of rendering Hero Cards with Markdown, and render all 3 (text, title, subtitle) and plain text in 4.5

Eventually after #1259 is implemented Hero Cards would be built to only use plain text.

In #1259, add a defaultStyleOptions param where the user can indicate whether Hero Cards (and others') text field should be rendered in Markdown or Plain text. This would give the user the most flexibility.

There's also a bit of mix and match available with these options. I'll report back when the team has discussed it more. :) Please feel free to add thoughts.

We'd like to chat with the Adaptive Cards team about addressing this upstream of WebChat.

Assigning to @Kaiqb for visibility.

Assigning to @Kaiqb for visibility.


Feature: According to the socket push data to achieve incremental document update

I'm using lexical as our document component. Documents carry large amounts of data, and we support collaborative editing of documents. So, we think we can capitalize on the ability of reconcile, maximizing the performance of reducing the data network transfer overhead and lexical redraw.

Let's think about it in two parts

In terms of data storage, neither html string storage nor json structure obtained by editor.getEditorState() can be used.

The above two storage methods will store data in a complete data structure, which is not suitable for partial transmission when incremental push. So what we want to save is the following structure. store the list structure with the key in the _nodeMap to the server so that it can be stored incrementally and also contains the key information to reduce dom updates when they need to be updated.
const obj = [...editor?.getEditorState()._nodeMap.entries()].reduce((obj, [key, value]) => (obj[key] = value, obj), {})
setEditorContentJSON(JSON.stringify(obj))

We can do this when partial data is pushed through the socket.

     const editorState = editor?.getEditorState()
      const nodeMap = editorState?._nodeMap
// First declare the default map data to be updated
      const dirtyMap = new Map()

// 先将当前 state 的所有 map 进行获取并且设置
      nodeMap?.forEach((value) => {
        value && dirtyMap.set(value.__key, value)
      })

// Obtain and set all maps of the current state
      dirtyArr.forEach((value) => {
        value && dirtyMap.set(value.__key, value)
      })

// Finally, all data is mounted to the corresponding prototype method by type.
              Object.entries(editorState).forEach(([key, value]) => {
                switch (value.__type) {
                  case 'root':
                    dirtyMap.set(key,Object.assign($createRootNode(),value))
                    break;
                  case 'paragraph':
                    dirtyMap.set(key,Object.assign($createParagraphNode(),value))
                    break;
                  case 'text':
                    dirtyMap.set(key,Object.assign($createTextNode(),value))
                    break;
                }
              })

// Then the map is generated to generate the state of the letter, and the set is updated
              const newState = new EditorState(dirtyMap)
              editor?.setEditorState(newState)
// TODO: The problem here is that EditorState isn't exposed in the source code, so it needs to be

Thank you so much for reading this:
My English is not good, the above are all used Google Translate, if the sentence is not smooth, please forgive me.
The above solution is temporarily decided based on the capability of lexical supply. Of course, lexical supply will provide the function of local update as well as the function of shard data storage.
If there are other solutions, please reply in time to improve our documentation performance and code robustness.

Commented on in PR #3458

Exposing the internal implementation would mean that we can't change it without causing a major breaking version change. The details of the EditorState are intended to be private and thus why we don't expose them. You can use editorState.read() to get the contents using the public API.


FIX: Block old failures from polluting the event loop like some sort of zombie

FYI, @wen-hu @ambarb @cmazzoli this corrects the bug that you have encountered. It will be deployed before the start of the upcoming cycle.

Current coverage is 82.63% (diff: 100%)

Merging #630 into master will increase coverage by 0.02%

@@             master       #630   diff @@
==========================================
  Files            20         20
  Lines          4399       4406     +7
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits           3634       3641     +7
  Misses          765        765
  Partials          0          0

Powered by Codecov. Last update 340a7a2...5dae391

3.5 tests pass; 3.4 tests are slow / probably hanging on conda.

I had in my head the done callback doing
loop.call_soon_threadsafe(self._complete_status_object, ret, pardon)

and the changes that would require.  However I do not see any advantage to that over this (1 less task in the case of failure?) other than 'good code is code I write'.

As written, there are separate tasks for failed status and p_event.set. The former is added to _failed_status_tasks. Wouldn't refactoring it into one task make it impossible to capture the failed_status_task?

I think we want to capture all tasks we throw on, doing both the set and the fail in the same task saves book keeping ?

That makes sense. New commit pushed refactors in that way. Now we track _status_tasks instead of _failed_status_tasks, and the _failed_status method can be scrapped, with that logic incorporated directly in _status_object_completed.

:+1: Will merge once it goes green.


adds support for v prefix in release tags

Fixes the issue where we could not use the v prefix for release tags.  semver 2.0 removed support for the v prefix.  Still the v prefix is commonly used and expected on release tags in git repos.
The solution here is to allow for the v prefix on the release tag, but to remove the prefix before setting the version variable in the version package. This way the reported version is sans the v.. but the displayed version includes the v in git hub.
Signed-off-by: Mike Brown<EMAIL_ADDRESS>

LGTM


refactor(connector): remove JsonParser from production code (#17016)

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?

Checklist

[ ] I have written necessary rustdoc comments
[ ] I have added necessary unit tests and integration tests
[ ] I have added test labels as necessary. See details.
[ ] I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features #7934).
[ ] My PR contains breaking changes. (If it deprecates some features, please create a tracking issue to remove them in the future).
[ ] All checks passed in ./risedev check (or alias, ./risedev c)
[ ] My PR changes performance-critical code. (Please run macro/micro-benchmarks and show the results.)

[ ] My PR contains critical fixes that are necessary to be merged into the latest release. (Please check out the details)

Documentation

[ ] My PR needs documentation updates. (Please use the Release note section below to summarize the impact on users)

Release note
If this PR includes changes that directly affect users or other significant modifications relevant to the community, kindly draft a release note to provide a concise summary of these changes. Please prioritize highlighting the impact these changes will have on users.

#17146  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @BugenZhao and the rest of your teammates on  Graphite


use a download button within the map to choose what to export

In the current implementation the end_user doesn't know what is exported and in which order. He may not need all the informations at once

In majority of the cases an end user/reporting agency needs nearly all the information to prepare a report as mentioned in the GPG. So, It would be easier to have only one Botton to download all the results. what do you think?

with the graphs and the extra legend I think there is not enough space for the button in the map
closing it as wontfix


Certificates with multiple accounts

Have you considered implementing a multi-account solution to increment the quantity of emitted certificates per week that Let's Encrypt allows (50 per week)?

You may check https://github.com/jxskiss/ssl-cert-server, which is similar to this project and has support wildcard certificates recently.


sync to live

OPS Build status updates of commit 01058ce:
:clock10: Preparing: average preparing time is 42 sec(s)

OPS Build status updates of commit 01058ce:
:clock10: Incremental building: average incremental building time is 18 sec(s)

OPS Build status updates of commit 01058ce:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

windows-iotcore/connect-your-device/InternetConnectionSharing.md
:white_check_mark:Succeeded

windows-iotcore/learn-about-hardware/HardwareCompatList.md
:white_check_mark:Succeeded

windows-iotcore/manage-your-device/WindowsDebugger.md
:white_check_mark:Succeeded

windows-iotcore/windows-server.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Provide a proper strategy for dates using chrono

Generating dates is not actually trivial and since this crate already has two examples to generate dates, how about an example with a strategy using chrono to actually generate real dates?

I ran into this issue, and my current solution to generating dates is to use proptest-arbitrary-interop with chrono's arbitrary feature:
use proptest_arbitrary_interop::arb;

prop_compose! {
    fn my_strategy()(
        created_at in arb::<DateTime<FixedOffset>>(),
    ) -> ... { ... }
}

However, my particular use case required RFC3339 datetimes, so I ended up having to add a filter:
prop_compose! {
    fn my_strategy()(
        created_at in arb::<DateTime<FixedOffset>>().prop_filter("Ability to parse from RFC3339 format", |datetime| {
            DateTime::parse_from_rfc3339(&datetime.to_rfc3339()).is_ok()
        }),
    ) -> ... { ... }
}

I'd be interested in a filter-less solution.


Signed images

Is your feature request related to a problem? Please describe.
Images published by cert-manager are not signed, which means we cannot validate whether or not the images are published by cert-manager.
Describe the solution you'd like
I'd like cert-manager to sign the images they publish using Docker Content Trust.
Describe alternatives you've considered
A consideration is to pull and sign the images ourselves, but this may give a false sense of security; we'd be signing images we don't know are legit. That's like trusting a phishing website because it has an SSL certificate.
Additional context
https://docs.docker.com/engine/security/trust/content_trust/
/kind feature

This is something we're interested in doing, but isn't a big priority right now. I don't think it's something that'll be particularly easy for the community to assist with as it involves some infrastructure on the Jetstack side of things to manage signing keys etc.


Release 0.5.2

This release is a hotfix off 0.5.1 to address a breaking change in a new docutils release.
This will be released from the rel-0.5.2 branch, which won't ever make it back into master itself.

-> git diff --stat 0.5.1 rel-0.5.2
 docs/changelog.rst | 9 +++++++++
 package-lock.json  | 2 +-
 package.json       | 2 +-
 setup.py           | 1 +
 4 files changed, 12 insertions(+), 2 deletions(-)

This release is out:

https://pypi.org/project/sphinx-rtd-theme/0.5.2/
https://github.com/readthedocs/sphinx_rtd_theme/releases/tag/0.5.2

This PR has been updated to now be the changes from 0.5.2 being merged back into master so we don't lose them. 👍


prepare 1.0.27 release

This release contains improved documentation and a few API improvements.

@Byron Thank you for all the effort you have put in to clearing over 9 months of PR backlog. I very much approve this release!

Thanks :)!
I just realized that I am not a crate owner here and thus can't perform the publish. Also CC @joshtriplett in case this isn't intended.
In the meantime, I'd appreciate if somebody with permissions can perform the release to crates.io. Thanks again.

Does the publish process create the tag or does that need to be done as an additional step?

It's an additional step. The whole process is also outlined in the maintenance document.

@Byron Owner invitation sent. Teams repo doesn't automatically manage that yet.

Thanks a lot! That worked and allowed me to finish the release :).


NoSuchFieldError

i implemented the sample code, but got the following error:
java.lang.NoSuchFieldError: com.borax12.materialdaterangepicker.R$id.tabHost at com.borax12.materialdaterangepicker.time.TimePickerDialog.onCreateView(TimePickerDialog.java:281)

It's a problem if you're also using the com.wdullaer:materialdatetimepicker library.
Did you by any chance find a workaround?

Ah, thanks. I will try to find a workaround.

Did you update this on jcenter repo? I still have the same problem using the two libraries. Thanks.

I can see a version 1.3 here, but when I try and compile with 1.3 in android studio, it cannot find it.
Any help?

@csbenz did you try clearing /invalidating cache and then syncing the project again ?

@borax12 Didn't work either. But I saw you updated the readme and it noe works with 1.5.
Thank you!

Always there for my users
On Mon, Jan 25, 2016, 10:06 PM Christopher Benz<EMAIL_ADDRESS>wrote:

@borax12 https://github.com/borax12 Didn't work either. But I saw you
updated the readme and it noe works with 1.5.
Thank you!
—
Reply to this email directly or view it on GitHub
https://github.com/borax12/MaterialDateRangePicker/issues/8#issuecomment-174573158
.


lwm2m client needs to keep reconnect the server

currently in the lwm2m client sample, once the server is not available or reset, the client will quit.
we need to design more robust mechanism to keep it retrying registration till it get success.
we have two ideas to achieve it:

when the lwm2m_step() failed, call the lwm2m_close() and clean up, then restart the lwm2m initiation procedure.
modify the state machine in the lwm2m_step(), so it re-enter the STATE_REGISTER_REQUIRED status, so the stack will retry the registration procedure.

Any feedback is appreciated here! thanks..

Hi,
Per design, solution 1. is the way to go.
By modifying lwm2m_step(), the client application would never know a problem occurred.
Regards

@dnav Even on the solution (1), should the lib user really use lwm2m_close() for error recovery?

Can the lib user just not change the lwm2mH->state( in lwm2mclient.c ) as below and let the client continue?

lwm2mH->state = STATE_REGISTER_REQUIRED/STATE_BOOTSTRAP_REQUIRED;

Or does the lib user also need to iterate the serverList( lwm2mH->serverList ) as well and explicitly change the status of the server as well?

for (targetP = lwm2mH->serverList ; targetP != NULL ; targetP = targetP->next) {
    targetP->status = STATE_REGISTER_REQUIRED/STATE_BOOTSTRAP_REQUIRED;
}

Should we close this issue ?

I close this issue but feel free to reopen if needed.

@sbernard31, @rettichschnidi - shouldn't the demo examples be robust enough to handle a situation like this or will that lead to much more complicated examples? Maybe a list of improvements the user needs to make go from demo example to robust application should be provided in the readme?

No strong opinion but if team prefer, I can reopen and flag this as improvement ?  :)

I reopen this way we will not forgot to discuss about this.


WebGLTileLayer setOpacity() method not working

Describe the bug
The merging of #12965 introduced an issue with WebGL layer opacity - as a minimum the setOpacity() method is not working as expected.
To Reproduce
Compare the action of the Imagery Opacity slider in
https://codesandbox.io/s/disable-image-smoothing-webg-float32-forked-eo9cm (6.9.1-dev.1636909254707)
with
https://codesandbox.io/s/disable-image-smoothing-webg-float32-forked-gmk9r (6.9.1-dev.1636919037674))
Expected behavior
Layer opacity should be updateable.

Here is an example that shows layer.setOpacity() working with WebGL tile layers: https://codesandbox.io/s/layer-opacity-webgl-mg0sn.  I also confirmed that things work with a WebGL tile layer on top of a Canvas tile layer.
@mike-000 - Can you put together a simpler example that demonstrates the problem?

Yes, the failing example contains numerous patches to demonstrate a different problem.  It seems the patch to the HTMLCanvasElement prototype was not compatible with the #12965 changes.  When I remove that setting opacity works (but without it I cannot verify the pixel values).


Added .admonition to the CSS

FIxes #461
Now generic admonitions are styled too.
Proof of concept
Broken version

Fixed version

Can you please revert d366a20

@Blendify Thanks for the quick review.
Now reverted. I don't understand though - the repository contained the compiled files; don't they need to be updated too?

Yes, but for code reviews, it does not work well. It works better if one of us updates it every so often.

Thanks. I guess that means it's not possible to do a pip install -e on the GitHub repository then for a working copy - I'll have to wait until the next release.

Someone with direct commit rights can update the CSS soon.
We recently changed how we decided to do this so we are still working some
stuff out.
Aaron Carlisle
Picture taker | Bit cruncher | Pixel pusher | Document writer |
Project administrator for the Blender 3D Documentation Project
On Fri, Sep 15, 2017 at 3:20 AM, Daniele Procida<EMAIL_ADDRESS>wrote:

Thanks. I guess that means it's not possible to do a pip install -e on
the GitHub repository then for a working copy - I'll have to wait until the
next release.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/rtfd/sphinx_rtd_theme/pull/462#issuecomment-329702892,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AOeua8boHrhZuHgkYHQdoe8__EyE1ce1ks5siiUugaJpZM4PXx8o
.


Great library — keep it up

Hi @AntonKueltz
This is not a bug report. I was wandering around GitHub looking for ECC libraries to learn it and implement by myself.  They have tons of dependencies, tons of unreadable "optimized" code.
Thanks for such a great tool! fastecdsa is one of the best in this regard. Please keep it up. In particular, Python is very helpful due to built-in bigint support.

Thanks for the kind words, glad you’re finding the project useful!


Missing File Extensions

Hi,
Not sure if this is by design or if I'm doing something wrong but none of my uploaded images have file extensions once saved. Any ideas?
If I force it to open it opens the image fine so it's saving all the data just giving it a name without an extension

Thanks

Hi,
It's by design in the protocol. Metadata is not part of the specification and is up to the server and client to negotiate. You need to provide filename/extension as metadata and use that when reading the file.
Here is an example of the filename and content type being sent as metadata:
https://github.com/tusdotnet/tusdotnet/blob/master/Source/TestSites/AspNetCore_netcoreapp2.2_TestApp/wwwroot/index.html#L90
And here is how you would use it:
https://github.com/tusdotnet/tusdotnet/blob/master/Source/TestSites/AspNetCore_netcoreapp2.2_TestApp/Middleware/SimpleDownloadMiddleware.cs#L46

Hi,
It's a bit strange to have files saved without their extension and then to only add the extension when reading the file. Not possible to give the file an extension when saving based on the metadata? Having files and meta data in different places is weird but if that's how the protocol is setup I'll use it as such.
Thank you

Once again, metadata such as file extension is not part of the protocol and must be negotiated between the server and the client. Since metadata can be whatever there is no way for tusdotnet to know what the extension is and name the file accordingly.
What are you trying to achieve? There is nothing preventing you from renaming the file on disk on e.g. OnFileCompleteAsync using the metadata provided by your clients.

Oh I see so just the transfer protocol doesn't include metadata but once you have the file you can do what you want. Got it. Thanks!

Hi I was able to change the name of the uploaded file. I just called the File.Copy onFileCompleteAsync, but my problem is when deleting the old file, it throws exception that the file is still being used.
try
{
            File.Copy(sourceFile, test);
            File.Delete(sourceFile);
        }
        catch (Exception ex)
        {

            throw;
        }

@ronkristoff That the file is being used usually indicates that you did not dispose of the file stream after using it. Also why would you copy potentially gigabytes of data instead of just renaming the file or at the very least move it?
This is a very old issue and a better solution is probably to use a custom id provider to change the id to contain the extension to avoid mucking about with the file afterwards.

Hi @smatsson, I want to try to change the id to contain the extension using custom id provider. Can you please explain more detail how to obtain this? I had difficult time with how to get the content type file, because the metadata on custom id provider is just a raw string. Thank you

@ronkristoff That the file is being used usually indicates that you did not dispose of the file stream after using it. Also why would you copy potentially gigabytes of data instead of just renaming the file or at the very least move it?
This is a very old issue and a better solution is probably to use a custom id provider to change the id to contain the extension to avoid mucking about with the file afterwards.


Fix basic checks

A few recent PRs broke basic CI checks, this commits address linter and docs update issues.
Signed-off-by: Artem Barger<EMAIL_ADDRESS>

I do not understand this
 --- docs/source/commands/ledgerutil.md	2023-01-13 12:00:11.990578077 +0000
+++ /tmp/ledgerutil_preamble.md.vikqb	2023-01-13 12:04:14.292436188 +0000
@@ -144,8 +144,8 @@
  -f, --firstDiffs=10        Maximum number of differences to record in
                             first_diffs_by_height.json. Requesting a report
                             with many differences may result in a large amount
-                             of memory usage. Defaults to 10. If set to 0,
-                             will not produce first_diffs_by_height.json.
+                             of memory usage. Defaults to 10. If set to 0, will
+                             not produce first_diffs_by_height.json.

Args:
  <snapshotPath1>  First ledger snapshot directory.
@@ -169,8 +169,8 @@
  <snapshotDiffsPath>  Path to json file containing list of target records to
                       search for in transactions. This is typically output from
make: *** [Makefile:121: check-help-docs] Error 2
                       ledgerutil compare.
-  [<blockStorePath>]   Path to file system of target peer, used to access
-                       block store. Defaults to '/var/hyperledger/production'.
+  [<blockStorePath>]   Path to file system of target peer, used to access block
+                       store. Defaults to '/var/hyperledger/production'.
                       IMPORTANT: If the configuration for target peer's file
                       system path was changed, the new path MUST be provided.

The command line help docs are out of date and need to be regenerated
Error: Process completed with exit code 2.

Running locally, I do not see these problems.

@C0rWin I'm not seeing any issues on latest main, opened a test PR - https://github.com/hyperledger/fabric/pull/3921

@C0rWin I'm not seeing any issues on latest main, opened a test PR - #3921

Well, this is very strange, I do really see why I'm keep getting this errors 🤔

@Mergifyio backport release-2.5

Thanks @C0rWin , the auto-backport had some conflicts, would you be able to create a release-2.5 PR for this as well?

Thanks @C0rWin , the auto-backport had some conflicts, would you be able to create a release-2.5 PR for this as well?

yes sure


Hidden charts don't render when un-hidden

If I have a chart's container hidden, then make it un-hidden, the chart does not render.
See this JSBin: http://jsbin.com/yofibum/edit?html,css,js,output
Removing the 'hidden' class via jquery/javascript does not render the chart. If you remove the hidden class in the html and cause a re-render via jsbin, the chart renders correctly.
Expected Behavior
Hidden classes shouldn't affect chart rendering.
Current Behavior
Hidden classes prevent chart rendering.
Possible Solution
Not sure best solution, but perhaps a workaround is that on unhide, I could update chart rendering. Maybe something similar to recommendations for responsiveness.
Steps to Reproduce (for bugs)
See this JSBin: http://jsbin.com/yofibum/edit?html,css,js,output

Add a hidden css class where the result is display: none
Remove the class via jquery/javascript
Weep

My solution was to copy out of one of your demo pages your redraw code:
    let redrawCharts = function(){
        d3Selection.selectAll('.bar-chart').remove();
        createRaceBarChart();
    };

    $('.js-nav-reports-button').on('click', function () {
        redrawCharts();
    });

This did the job for me, but it might be nice to have this documented.

Hi @bratter, that might be a bit too sophisticated for me, I'm just kinda hacking away at the code here. I ultimately have a child-like understanding of what I'm doing.

Also, I just wanted to say, thank you so much. This is such a highly polished and design centric graph library. If you guys made this easier to approach for noobs/hackers, I think you could get pretty significant adoption. Right now your docs assume a pretty decent level of sophistication, and I think (as noted by my other PR), that making stupid simple examples that people like me could pick up and implement within 20 minutes (or less) would really increase your audience. That may be less than desired, considering the issues that people might bring up, but who doesn't want their library to get used?

Yeah, the EB team have done quite a good job, haven't they? That's why I started to contribute (a little)  to this project.
Your easiest solution to this specific problem would just be set a specific width for the chart. All you'd need to do is replace the containerWidth variable in the .width(containerWidth) line with a number like you've done for height a couple of lines below.

Thanks @hisnameisjimmy and @bratter!
It is one of our favorite moments when we discover that people is having a good time using our library!
@hisnameisjimmy, we would really love to make Britecharts easier to approach, it is one of our main goals, along with allowing D3 developers to write structured charts. We agree our demos need some work, and that we need a better tutorial to get people started and have Britecharts installed without problems. We will work on it, promised!
@bratter, thanks a lot for chiming in and helping other users with their issues, it helps us a lot and feels great to have a community around Britechartrs!


Prefer system TMPDIR over project directory?

Currently, mycosnp-nf defaults --tmpdir to "$projectDir/tmp", which in cloud settings might be on a space limited partition.
I realize I can just do --tmpdir $TMPDIR , but would you consider setting the default to the system wide environment variable and falling back on the project directory in the event TMPDIR is not set?
Cheers,
Robert

Totally understand. I was thinking to reuse TMPDIR if it exists, otherwise use $projectDir. Something like:
tmpdir  = System.getenv("TMPDIR") ? "${TMPDIR}" : "$projectDir/tmp"

I've ran into this issue before and I am running into this issue currently where the cloud environment errors because java tools can't access a tmp directory. Previously I have created a tmp directory in the base of the repository, mycosnp-nf/tmp/, which resolves the issue. Would that be a useful PR request? I am currently having the issue when Nextflow tower as it directly pulls from the github repository.


var/run/sshd must be owned by root and not group or world-writable.

Hi
I'm running OS X 10.10.4, Kitematic 0.7.6 and installed docker-oracle-xe-11g
But this is log when i was trying start it.
Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.

/var/run/sshd must be owned by root and not group or world-writable.

How can i fix that?
There is no sshd in /var/run

There are quite a few images for docker-oracle-xe-11g - Can you post a link to the one you used?

@FrenchBen , It's alexeiled / docker-oracle-xe-11g

Hi, any updates on this issue? I'm facing the same.

@VilhoRaatikka Looking at the error, it seems to be related to the image itself - Not much we can do on our end.
Feel free to fork the repo and make the appropriate changes to get it up and working:
https://github.com/alexei-led/docker-oracle-xe-11g


extract scripts when importing

A new option, -x --extract, which would extract scripts to separate files. Affected are any commands that export (and import) scripts, such as frodo script and frodo idm (e.g. onCreate scripts). The export result could look like this:

my-script-name.script.js
my-script-name.meta.json

Where my-script-name.meta.json would refer to a .script.js file for relevant fields.
Use case is being more easily able to edit scripts locally.
It would require some kind of abstraction to handle scripts in every possible file. Next to this, files with multiple scripts should be handled. Furthermore, different languages should be taken into account (groovy, js).
Is this something you would be interested in? I will be able to make a PR.

Duplicate of #52


ScriptGoogleMaps: Error thrown in beforeUnmount hook

🐛 The bug
Environment
nuxt: 3.12.3
@nuxt/scripts: 0.8.3
node: v22.4.0
Reproduction

Use the ScriptGoogleMaps component as demonstrated in the official documentation:

ScriptGoogleMaps Demo

Follow the setup instructions and ensure the component is implemented according to the demo.

Navigate to another page and observe the console for errors when the component is unmounted.

Describe the bug
In the beforeUnmount hook of the ScriptGoogleMaps component, there is an attempt to call marker.setMap(null) on marker elements. However, this method does not exist on the marker object.
The type of mapMarker is:
mapMarkers: Map (Ref)
    Key: "FL54SOqWoQ"
    Value: Promise

Upon unmounting the component, the following error is thrown:
Unhandled error during execution of beforeUnmount hook: Uncaught (in promise) TypeError: marker.setMap is not a function
🛠 To reproduce
https://stackblitz.com/edit/nuxt-starter-fsbb83?file=pages%2Findex.vue
🌈 Expected behavior
In the beforeUnmount hook, the component should properly clean up marker elements without throwing an error.
ℹ Additional context
No response

Thanks for the detailed issue, this should be fixed in v0.8.4.


OpenThread Fixes and Updates

This PR refactors the libopenthread platform to embrace an async design. The prior implementation included some potentially sync/yielding code within callbacks. Now, these callbacks (radio, alarm, etc) set flags that are then polled during the "libopenthread work" of the the openthread main loop.
Additionally, the 15.4 raw driver merged recently and corresponding changes caused OpenThread to no longer transmit/receive. This was due to OpenThread requesting to sleep the radio (i.e. turn it off), but failed to power the radio on again before requesting to tx/rx. This is now fixed in this PR.
The openthread_hello and tutorial openthread apps were updated respectively.

Looks good.

+1 to @bradjc's comment and overall approval otherwise.


With updates, can GDNative Rust break certain codes?

I am planning to use gdnative-rust, however I have some questions:

Is it in its stable form?
Can it break something after a new update within my own code?

The gdnative crate follows Semantic Versioning:

No. The current version is 0.9. Major version zero (0.y.z) is for initial development, and the public API should not be considered stable. However, we do follow the common "house rule" that breaking changes in the 0.y.z range increment the minor version (y). It is stated in README that we still expect non-trivial breaking changes in the API in the coming releases. You may refer to issues with the breaking-change label to see what these expected changes might be.
Yes. Following the previous point, an update from 0.9.0 to 0.10 would be breaking, while an update from 0.9.0 to 0.9.1 would not. Note that this assumes that you are not relying on anything that is not part of the public API, like hidden items, unspecified behavior, bugs, and so on.

I see, thanks mate

Closing since the question is answered.


Poor performance when weaving many branches together

Sometimes in HEP the memory access pattern is inherently bad. For example we have jagged branches for electron and muon related quantities: Lorentz Vectors, isolation flags etc.
Let's say the e_mask is quality cut, and people want to extract isolation cuts for electrons that passed the e_mask:
function get_Isos(e_mask, m_mask, evt)
    v_l_passIso = Vector{Bool}[]

    v_e_passIso_HighPtCaloOnly = evt.v_e_passIso_HighPtCaloOnly
    v_e_passIso_TightTrackOnly_VarRad = evt.v_e_passIso_TightTrackOnly_VarRad
    v_e_passIso_TightTrackOnly_FixedRad = evt.v_e_passIso_TightTrackOnly_FixedRad
    v_e_passIso_Tight_VarRad = evt.v_e_passIso_Tight_VarRad
    #.... 12 more

    @inbounds for (i,f) in enumerate(e_mask)
        f || continue
        push!(
            v_l_passIso,
            Bool[
                v_e_passIso_HighPtCaloOnly[i],
                v_e_passIso_TightTrackOnly_VarRad[i],
                v_e_passIso_TightTrackOnly_FixedRad[i],
                v_e_passIso_Tight_VarRad[i],
                v_e_passIso_Loose_VarRad[i],
            ],
        )
    end
	# one more for loop for muons

	return v_l_passIso

which results in

Each of those piles is actually just the v_e_passIso_HighPtCaloOnly = evt.v_e_passIso_HighPtCaloOnly line.
This is probably horrible no matter what language you use, but I'm wondering if we should explore https://github.com/JuliaArrays/ArraysOfArrays.jl/ to see if we can cut down allocations of making concrete vectors (or vector of vectors) since in many cases they just get teared apart manually in the looper.

Using ArrayOfArrays.jl should definitely help to reduce the number of memory allocations a lot.

Why is v_l_passIso be a vector of boolean vectors, instead of a vector of NamedTuples?

because it's used like this later:
    #isolation cut, require all 4 of them to be true
    if all((
        v_l_passIso[pr1[1]][1],
        v_l_passIso[pr1[2]][1],
        v_l_passIso[W_id[1]][1],
        v_l_passIso[W_id[2]][1],
    ))
    else
        return false, wgt
    end

and
    if (abs(v_l_pid[fifth_l]) == 11)
        !v_l_passIso[fifth_l][4] && return false, wgt
    end
    if (abs(v_l_pid[fifth_l]) == 13)
        !v_l_passIso[fifth_l][3] && return false, wgt
    end

I guess one option would be to user a static array or tuple, since the length of the elements of v_l_passIso is fixed. An ArraysOfArrays.VectorOrVectors would work too, of course.

length of the elements of v_l_passIso is

it is not, it only contains flats for leptons that passed e_mask, the inner most vector is of length 16, not worth StaticArray probably.

index 86d8909..e26ff74 100644
--- a/src/root.jl
+++ b/src/root.jl
@@ -215,11 +215,16 @@ function interped_data(rawdata, rawoffsets, ::Type{T}, ::Type{J}) where {T, J<:J
-        @views [
-                ntoh.(reinterpret(
-                                  T, rawdata[ (rawoffsets[i]+jagg_offset+1):rawoffsets[i+1] ]
-                                 )) for i in 1:(length(rawoffsets) - 1)
-               ]
+        _size = sizeof(eltype(T))
+        data = UInt8[]
+        offset = Int32[0] # god damn 0-based index
+        @views @inbounds for i in 1:(length(rawoffsets) - 1)
+            rg = (rawoffsets[i]+jagg_offset+1) : rawoffsets[i+1]
+            append!(data, rawdata[rg])
+            push!(offset, last(offset) + length(rg))
+        end
+        real_data = ntoh.(reinterpret(T, data))
+        VectorOfVectors(real_data, offset .÷ _size .+ 1)
     end

here's the number AFTER applying this diff:
# 1st run
 17.403734 seconds (72.69 M allocations: 6.877 GiB, 9.20% gc time, 3.31% compilation time)
# 2nd run
3.135352 seconds (34.34 M allocations: 2.249 GiB, 12.11% gc time)
# 3rd run
2.990273 seconds (34.34 M allocations: 2.249 GiB, 9.52% gc time)

BEFORE this diff:
# 1st run
32.069656 seconds (213.86 M allocations: 11.560 GiB, 21.16% gc time, 1.26% compilation time)

# 2nd run
3.976044 seconds (27.73 M allocations: 1.779 GiB, 21.24% gc time)

# 3rd run
  3.725007 seconds (27.73 M allocations: 1.779 GiB, 13.36% gc time)

@oschulz definitely helpful at asymptotic limit!

hmmm, I tried a Ref{}() hack and it seems to be working, will make a PR now and we can discuss technical details there

Using view(rawdata, rg) instead of rawdata[rg] could save allocations, since views stack-allocated now.

Ah, sorry, overlooked the @views

Maybe try this version:
function interped_data(rawdata, rawoffsets, ::Type{T}, ::Type{J}) where {T, J<:JaggType}
    # ...
        _size = Base.SignedMultiplicativeInverse{Int}(sizeof(eltype(T))
        data = UInt8[]
        elem_ptr = sizehint!(Vector{Int}(), length(eachindex(rawoffsets)))
        push!(elem_ptr,  0)
        # Can we sizehint! data too?
        @inbounds for i in eachindex(rawoffsets)[1:end-1]
            rg = (rawoffsets[i]+jagg_offset+1) : rawoffsets[i+1]
            append!(data, view(rawdata, rg))
            push!(elem_ptr, last(elem_ptr) + div(length(rg), _size))
        end
        real_data = ntoh.(reinterpret(T, data))
        elem_ptr .+= firstindex(real_data)
        VectorOfVectors(real_data, elem_ptr)
    #...
end

Can we sizehint! data too?

maybe something smart like last(offset) \div sizeof(eltype(T)

no visible difference

Hm, I'm not sure where these allocs are coming from, but it shouldn't be from within interped_data, since it only does a small, fixed number of allocations. What does main_looper do? And can you benchmark just the data reading phase?

see https://github.com/tamasgal/UnROOT.jl/pull/65#issuecomment-886273580
for minimal reproduction of the mysterious allocation

I'll try to have  go at it ...

I have reduced the minimal reproduction:

julia> using ArraysOfArrays

julia> const V = [rand(Float32, rand(0:4)) for _ = 1:10^5];

julia> const Vov = VectorOfVectors{Float32}()
0-element VectorOfVectors{Float32, Vector{Float32}, Vector{Int64}, Vector{Tuple{}}}

julia> foreach(V) do i
           push!(Vov, i)
       end

julia> @benchmark begin
           for i in $V
               length(i)
           end
       end
BenchmarkTools.Trial: 10000 samples with 1 evaluation.
 Range (min … max):  39.792 μs … 451.658 μs  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     39.992 μs               ┊ GC (median):    0.00%
 Time  (mean ± σ):   42.311 μs ±   6.787 μs  ┊ GC (mean ± σ):  0.00% ± 0.00%

  █    ▁  ▇                                                    ▁
  ██▁▁▁█▆███▇▆▅▆▇▇▆▇▆▆▆▆▆▆▆▆▅▄▅▄▄▇▇▇▇▇▇█▇▄▄▄▆▆▆▆▆▆▆▇▅▅▆▆▆▅▆▄▅▅ █
  39.8 μs       Histogram: log(frequency) by time      64.5 μs <

 Memory estimate: 0 bytes, allocs estimate: 0.

julia> @benchmark begin
           for i in $Vov
               length(i)
           end
       end
BenchmarkTools.Trial: 10000 samples with 1 evaluation.
 Range (min … max):  418.988 μs … 934.615 μs  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     443.001 μs               ┊ GC (median):    0.00%
 Time  (mean ± σ):   443.705 μs ±  30.802 μs  ┊ GC (mean ± σ):  0.00% ± 0.00%

julia> Vov == V
true

I don't think this is the issue - VectorOfVectors has to do a little bit more work to check bounds and create the views than getindex for a vector of separate vectors. But it's still very little time, and without bounds checking the difference is actually just about a factor two:
julia> using ArraysOfArrays, BenchmarkTools

julia> V = [rand(Float32, rand(0:4)) for _ = 1:10^5];

julia> Vov = VectorOfVectors(V)

julia> @benchmark begin
           @inbounds for i in eachindex($V)
               length($V[i])
           end
       end
BenchmarkTools.Trial: 10000 samples with 1 evaluation.
 Range (min … max):  34.919 μs … 132.067 μs  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     38.391 μs               ┊ GC (median):    0.00%
 Time  (mean ± σ):   40.404 μs ±   7.572 μs  ┊ GC (mean ± σ):  0.00% ± 0.00%

  ▄▁▅▆█▄▃▄▃ ▄  ▂ ▂▂▃                                           ▁
  █████████▄█▄▄█▄███▅▅▆▇▇█▇▆▆▄▅▅▆▅▄▅▄▅▅▄▄▅▅▅▆▄▅▆▄▄▆▅▄▄▆▅▂▄▄▄▃▄ █
  34.9 μs       Histogram: log(frequency) by time      79.2 μs <

 Memory estimate: 0 bytes, allocs estimate: 0.

julia> @benchmark begin
           @inbounds for i in eachindex($Vov)
               length($Vov[i])
           end
       end
BenchmarkTools.Trial: 10000 samples with 1 evaluation.
 Range (min … max):  77.848 μs … 226.026 μs  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     87.407 μs               ┊ GC (median):    0.00%
 Time  (mean ± σ):   92.920 μs ±  16.003 μs  ┊ GC (mean ± σ):  0.00% ± 0.00%

  ▁ ▄▅ ▇█ ▅▄ ▂  ▃▂▄▁ ▁   ▂  ▁   ▁                              ▂
  █▅██▆█████▇█▆▇████████▇██▆█▇▇████▆▇▆▆▆▆▇▇▆▅▆▆▆▆▅▅▅▅▆▅▅▅▆▆▃▅▆ █
  77.8 μs       Histogram: log(frequency) by time       165 μs <

 Memory estimate: 0 bytes, allocs estimate: 0.

So that's about 1 ns for each element access (view creation plus length()) for VectorOfVectors (with @inbounds), and there are no memory allocations.

some new observation:
julia> const t1 = LazyTree(ROOTFile("/home/akako/Downloads/doublemu.root"), "t", [r"^Muon_(pt|eta|phi|mass)$","MET_pt"]);

julia> @time begin
           for idx in 1:10^4:length(t1.Muon_pt)
               t1.Muon_pt[idx]
           end
       end
  0.000530 seconds (3.56 k allocations: 406.859 KiB)

julia> @time begin
           for idx in 1:10^3:length(t1.Muon_pt)
               t1.Muon_pt[idx]
           end
       end
  0.001023 seconds (8.01 k allocations: 546.172 KiB)

julia> @time begin
           for idx in 1:10^2:length(t1.Muon_pt)
               t1.Muon_pt[idx]
           end
       end
  0.005169 seconds (51.95 k allocations: 1.884 MiB)

julia> @time begin
           for idx in 1:10:length(t1.Muon_pt)
               t1.Muon_pt[idx]
           end
       end
  0.014718 seconds (494.29 k allocations: 15.714 MiB)

julia> @time begin
           for idx in 1:1:length(t1.Muon_pt)
               t1.Muon_pt[idx]
           end
       end
  0.194961 seconds (4.89 M allocations: 150.909 MiB, 44.43% gc time)

notice how the allocation is not linear, initially, it seems to me cache is working properly.

@oschulz I think I found a "real" minimal reproducing example

julia> const Vov = VectorOfVectors{Float32}()
0-element VectorOfVectors{Float32, Vector{Float32}, Vector{Int64}, Vector{Tuple{}}}

julia> const V = [rand(Float32, rand(0:4)) for _ = 1:10^5];

julia> foreach(V) do i
           push!(Vov, i)
       end

julia> struct A
           v::VectorOfVectors{Float32}
       end

julia> struct B
           v::Vector{Vector{Float32}}
       end

julia> const _a = A(Vov);

julia> const _b = B(V);

julia> function f(stru, idx)
           @inbounds stru.v[idx]
       end
f (generic function with 1 method)

# warm run
julia> @time begin
           for i = 1:10^5
               f(_a, i)
           end
       end
  0.005362 seconds (199.49 k allocations: 6.096 MiB)

# warm run
julia> @time begin
           for i = 1:10^5
               f(_b, i)
           end
       end
  0.000216 seconds

That one's easy to explain, your struct A doesn't allow for type-stability since VectorOfVectors{Float32} isa UnionAll (because VectorOfVectors has several type parameters). Try this version:
using ArraysOfArrays, BenchmarkTools

const V = [rand(Float32, rand(0:4)) for _ = 1:10^5];

const Vov = VectorOfVectors(V)

struct Foo{VV<:AbstractVector{<:AbstractVector{<:Real}}}
    v::VV
end

const _a = Foo(Vov);

const _b = Foo(V);

function f(stru, idx)
    @inbounds stru.v[idx]
end

julia> @benchmark f($_a, 123)
BenchmarkTools.Trial: 10000 samples with 1000 evaluations.
 Range (min … max):  1.977 ns … 42.563 ns  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     2.307 ns              ┊ GC (median):    0.00%
 Time  (mean ± σ):   2.337 ns ±  0.692 ns  ┊ GC (mean ± σ):  0.00% ± 0.00%

                      ▇    ▅▁                 █▃    █▆     ▁
  ▆▅▂▂▁▂▁▁▁▃▄▂▂▁▄▇▂▂▁▆█▄▅█▃██▃▃▁▃▇▄▅▃▂▂▂▆▇▂▂▁▃██▃▃▁▃██▃▃▁▁▆█ ▄
  1.98 ns        Histogram: frequency by time        2.54 ns <

 Memory estimate: 0 bytes, allocs estimate: 0.

julia> @benchmark f($_b, 123)
BenchmarkTools.Trial: 10000 samples with 1000 evaluations.
 Range (min … max):  1.108 ns … 29.334 ns  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     1.219 ns              ┊ GC (median):    0.00%
 Time  (mean ± σ):   1.215 ns ±  0.492 ns  ┊ GC (mean ± σ):  0.00% ± 0.00%

                                         ▅█▅▁▇▄
  ▂▅▇▆▆▄▅▃▂▂▁▁▁▁▁▁▁▁▁▃▄▃▄▄▄▃▂▂▃▆▅▃▅▅▄▂▂▂▅███████▄▃▂▂▃▂▂▂▂▂▁▁ ▃
  1.11 ns        Histogram: frequency by time        1.27 ns <

 Memory estimate: 0 bytes, allocs estimate: 0.

Well spotted @oschulz. I think JET.jl should reveal such things quite easily.

but it doesn't solve all the problem
julia> struct C
           v::VectorOfVectors{Float32, Vector{Float32}, Vector{Int64}, Vector{Tuple{}}}
       end

julia> @benchmark begin
           for i = 1:10^5
               f(_c, i)
           end
       end
BenchmarkTools.Trial: 10000 samples with 1 evaluation.
 Range (min … max):  89.424 μs … 547.878 μs  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     89.486 μs               ┊ GC (median):    0.00%
 Time  (mean ± σ):   94.538 μs ±  14.213 μs  ┊ GC (mean ± σ):  0.00% ± 0.00%

  █   ▂ ▅▃       ▁  ▁  ▁                                       ▁
  █▆█▅█▃██▅█▇▆█▇██▇▇█▆▆█▆▆█▆▆▅▅▅▅▅▇▇▆▆▇▇▅▅▆▅▂▃▅▄▄▄▅▃▄▅▅▅▄▃▃▃▃▂ █
  89.4 μs       Histogram: log(frequency) by time       153 μs <

 Memory estimate: 0 bytes, allocs estimate: 0.

julia> @benchmark begin
           for i = 1:10^5
               f(_b, i)
           end
       end
BenchmarkTools.Trial: 10000 samples with 1 evaluation.
 Range (min … max):  39.804 μs … 117.688 μs  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     39.957 μs               ┊ GC (median):    0.00%
 Time  (mean ± σ):   41.774 μs ±   6.077 μs  ┊ GC (mean ± σ):  0.00% ± 0.00%

  █  ▂ ▄▂          ▁  ▁                                        ▁
  ██▇█▇███▇▅▇▅█▄█▇▅█▅▅█▃▄▅▇▇▇▇▇▆▅▃▆▆▆▆▆▆▅▅▆▆▅▅▅▄▅▅▃▄▄▁▄▃▁▃▅▅▅▇ █
  39.8 μs       Histogram: log(frequency) by time      74.4 μs <

 Memory estimate: 0 bytes, allocs estimate: 0.

``

But this is just 1 ns vs. 0.5 ns for the access to the element vectors. Compared to an actual operation that does something real-life on those element vectors, that time difference should be negligible.
I don't think ArraysOfArrays causes the allocations, as long as things are type-stable around it.

I am wondering if this is somehow related to runtime dispatch deeper in the rabbit hole, but the difference is still quite "small".

I tried the ultimate solution which is just to add another type to track buffer type and it seems to be working:
now:
julia> @time begin
           for evt in t1
               length(evt.Muon_pt)
           end
       end
  0.154825 seconds (26.07 k allocations: 177.184 MiB, 15.19% gc time, 3.46% compilation time)

julia> @time begin
           for evt in t1
               length(evt.Muon_pt)
           end
       end
  0.026082 seconds (12.45 k allocations: 1.470 MiB)

master:
julia> @time begin
           for evt in t1
               length(evt.Muon_pt)
           end
       end
  3.676705 seconds (26.81 M allocations: 1.196 GiB, 15.58% gc time, 25.18% compilation time)

julia> @time begin
           for evt in t1
               length(evt.Muon_pt)
           end
       end
  0.021609 seconds (5.90 k allocations: 767.688 KiB)

Ha! Indeed 😆 That looks promising.

@all-contributors please add @oschulz ideas

Very nice @Moelf !
I hope I can find some time in the future to contribute more directly. I'm happy with UpROOT.jl as a stopgap, but being able to deal with ROOT files without installing a whole Python stack is very attractive. :-) Also, we should be able to outperform uproot a bit, esp. on ROOT files with small buffer sizes.

we already do ;)  I believe our lazy iteration is within 2x concrete Numba loop over allocated arrays, which means we're probably a lot faster than chunked uproot code


[FIX] DataView: show correct type info (supporting arrays)

The implementation for added typeinfo mixes currentElement and currentElement.data.
In DVHelper._addKeyTypeInfo is a check for Array.isArray(element), which returns always false cause the provided element is an object with options - this is the condition in the DataView to get to the point where DVHelper._addKeyTypeInfo is called. Furthermore the functions checks the length of either the element itself or element.data dependent on the type, which is inconsistent.
With this fix it is possible to provide (nested) arrays that can be expanded/collapsed (if wanted). The array could contain sections (objects with an options entry) itself to enable more detailed nested views. If collapsed, the number of elements is shown. In case of an object, it will either show ellipsis if the object contains data.

View of an (expanded) array object

Collapsed array view

View for an (expanded) object

Collapsed object view

Hi @SeeSharpSoft,
Thank you for your contribution :+1: We found a little bug in the rendering of the section title and we will fix it.


MAX button behaviour

Problem: Let's say user has only CELO in their account. When they tap the MAX button to send all balance, they won't have any funds to pay the transaction fees and it will be reverted.
To avoid this, when user taps the MAX button we should leave the estimated gas price amount to make the transaction.
So MAX = Total balance - Estimated Gas Amount
AC: User that has only Celo in their account, can send all of their balance minus transaction fee using the MAX button in the send flow.

A bit more context and reproduction steps for the issue can be found in #1648.


Implement streaming Tree reader

This adds a new API to trees for iterating over entries.
This also gives the ability to detect errors.
It looks like the bufio.Scanner API, but instead of scanner.Bytes()
or scanner.Text(), you call scanner.TreeEntry().

Thanks!


Return an iterator over all valid Vf2 mappings

Building on top of #368, this PR refactors Vf2 algorithm and implements a vf2_mapping function that returns a custom python class that acts as a python iterator that lazily evaluates all valid Vf2 mappings. The "trick" that allows the lazily evaluation is to take ownership of a copy of the graphs. We can do this (with minimal overhead) since we were already creating new graphs in case of id_order=False or nodes_removed=True.  At the same time, it adjusts Vf2ppSorter to handle graphs with non-contiguous node ids.
TODO

[ ] More tests

Pull Request Test Coverage Report for Build 993470420

315 of 353 (89.24%)  changed or added relevant lines in 1 file are covered.
3 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-1.3%) to 96.221%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/isomorphism.rs
315
353
89.24%

Files with Coverage Reduction
New Missed Lines
%

src/isomorphism.rs
3
92.89%

Totals

Change from base Build 972471342:
-1.3%

Covered Lines:
5755

Relevant Lines:
5981

💛  - Coveralls


FastBoot: XMLHttpRequest is not defined

I am seeing a XMLHttpRequest is not defined error from my queries in the fastboot render. Is any additional configuration necessary to get glimmer-apollo working in Fastboot, other than having ember-fetch installed?
I am currently running:

ember v3.27.5
ember-cli-fastboot v3.2.0-beta.2 (also tested on v2.2.3)
ember-fetch v8.1.1
glimmer-apollo v0.3.0

I can provide additional info if needed, thanks!

Humm, yeah. I think what you need to do is set which fetch apollo should use.
Having ember-fetch installed, you can import:
import fetch from 'fetch';

then in your apollo HTTP link, you can pass the fetch:
  const httpLink = createHttpLink({
    uri: '/api/graphql',
    credentials: 'include',
    fetch
  });

Let me know if that works. We should update the docs to include this setup.

@josemarluedke yes, looks like that works, thank you!


Access to bucket with templates.

Seems like access to https://turbine-quickstart.s3.amazonaws.com/quickstart-turbine-airflow/templates/turbine-master.template is forbidden.
https://prnt.sc/pwzax2

Ooops. This looks like a deployment problem.

Should be working now.


Recipe 'javascriptcoregtk' failed at the build step 'configure'

Hi,
Facing the below issue, while trying to build gstreamer using cerbero in aws ubuntu 14.04
checking pkg-config is at least version 0.16... yes
checking for GLIB - version >= 2.36.0... Package glib-2.0 was not found in the p                                                                                kg-config search path.
Perhaps you should add the directory containing `glib-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'glib-2.0' found
Package gmodule-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gmodule-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gmodule-2.0' found
Package gobject-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gobject-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gobject-2.0' found
Package gthread-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gthread-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gthread-2.0' found
Package gio-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gio-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gio-2.0' found
no
*** Could not run GLIB test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GLIB is incorrectly installed.
configure: error: You need the GLib dev tools in your path

Recipe 'javascriptcoregtk' failed at the build step 'configure'
Select an action to proceed:
[0] Enter the shell
[1] Rebuild the recipe from scratch
[2] Rebuild starting from the failed step
[3] Skip recipe
[4] Abort

Did bootstrap run successfully? And doesn't EC2 provide something newer (16.04, perhaps)?

See <file:///usr/share/doc/gcc-5/README.Bugs> for instructions.
GNUmakefile:71871: recipe for target 'Source/JavaScriptCore/parser/libjavascriptcoregtk_3_0_la-Parser.lo' failed
make: *** [Source/JavaScriptCore/parser/libjavascriptcoregtk_3_0_la-Parser.lo] Error 1

Recipe 'javascriptcoregtk' failed at the build step 'compile'
Select an action to proceed:
[0] Enter the shell
[1] Rebuild the recipe from scratch
[2] Rebuild starting from the failed step
[3] Skip recipe
[4] Abort

Just as a sanity check, please make sure it didn't get killed because of running out of memory (output of dmesg will let you know if the OOM killer was called)

This was resolved Arun by increasing the RAM size. Now the different error-

This was resolved Arun by increasing the RAM size. Now the different error-
/usr/local/lib/python2.7/config/libpython2.7.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Makefile:599: recipe for target 'libxml2mod.la' failed
make[4]: *** [libxml2mod.la] Error 1
make[4]: Leaving directory '/root/cerbero/build/sources/linux_x86_64/libxml2-2.9.4/python'
Makefile:708: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/root/cerbero/build/sources/linux_x86_64/libxml2-2.9.4/python'
Makefile:527: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/root/cerbero/build/sources/linux_x86_64/libxml2-2.9.4/python'
Makefile:1215: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/root/cerbero/build/sources/linux_x86_64/libxml2-2.9.4'
Makefile:735: recipe for target 'all' failed
make: *** [all] Error 2

Recipe 'libxml2' failed at the build step 'compile'
Select an action to proceed:
[0] Enter the shell
[1] Rebuild the recipe from scratch
[2] Rebuild starting from the failed step
[3] Skip recipe
[4] Abort
Recipe 'libxml2' failed at the build step 'compile'
Select an action to proceed:
[0] Enter the shell
[1] Rebuild the recipe from scratch
[2] Rebuild starting from the failed step
[3] Skip recipe
[4] Abort
4
***** Error running 'package' command:

Sorry, not sure what might be happening there


Don't force mixed precision as no in examples

Currently all examples have a default of mixed_precision="no" when defining the Accelerator, which overrides whatever the user has in their config. This is a bit annoying, so this PR switches to None so that:

the user can still force any mixed precision they want with --mixed_precision
but otherwise the default value is read in the Accelerate config.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Inconsistence in /wallet-api/auth/create

Version tested: v1.0.2401181053-SNAPSHOT
I think /wallet-api/auth/create endpoint could be more specific and consistent in the failed response messages.
Take a look at these four scenarios. They all demonstrate the API call with some missing field. However, the answers vary from one call to another.
Scenario 1. type field omitted.
Request
curl -X 'POST' \
  'http://localhost:4545/wallet-api/auth/create' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "Max Mustermann",
  "email"<EMAIL_ADDRESS>  "password": "password"}'

Response
{"exception":"true","status":"Bad Request","code":"400","message":"Polymorphic serializer was not found for missing class discriminator ('null')\nJSON input: {\"name\":\"Max Mustermann\",\"email\":\"user@email.com\",\"password\":\"password\"}"}

Scenario 2. password field omitted
Request
curl -X 'POST' \
  'http://localhost:4545/wallet-api/auth/create' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "Max Mustermann",
  "email"<EMAIL_ADDRESS>  "_password": "password",
  "type": "email"
}'

Response
{"exception":"true","status":"Bad Request","code":"400","message":"Field 'password' is required for type with serial name 'email', but it was missing at path: $"}

Scenario 3. email field omitted
Request
curl -X 'POST' \
  'http://localhost:4545/wallet-api/auth/create' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "Max Mustermann",
  "_email"<EMAIL_ADDRESS>  "password": "password",
  "type": "email"
}'

Response
{"exception":"true","status":"Bad Request","code":"400","message":"Field 'email' is required for type with serial name 'email', but it was missing at path: $"}

Scenario 4. name field omitted
Request
curl -X 'POST' \
  'http://localhost:4545/wallet-api/auth/create' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "_name": "Max Mustermann",
  "email"<EMAIL_ADDRESS>  "password": "password",
  "type": "email"
}'

Response
{"exception":"true","status":"Internal Server Error","code":"500","message":"Could not register user"}

Not stale, as explained in #72

should be fixed with this pr : #597


Update version to v0.13.0 dev

Codecov Report

Merging #1693 (beb9c63) into master (9d3d10b) will decrease coverage by 22.83%.
The diff coverage is 37.33%.

@@             Coverage Diff             @@
##           master    #1693       +/-   ##
===========================================
- Coverage   63.31%   40.48%   -22.84%
===========================================
  Files         170      107       -63
  Lines       14250    13322      -928
===========================================
- Hits         9023     5393     -3630
- Misses       4292     7452     +3160
+ Partials      935      477      -458

Flag
Coverage Δ

kind-e2e-tests
?

unit-tests
40.48% <37.33%> (-0.80%)
:arrow_down:

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


Bump volcanic forcing to 2022

More critical for updated observational calibrations, so move to v1.3 milestone

Actually now implemented in v1.2


Architecture Question: Ability to process concurrent requests

Question: does Presidio have the ability to process concurrent requests? And if so, is any configuration required?
Background Information
To give a bit of context, I'm currently parsing through a JSON document and want to send requests concurrently to the API endpoint for analysis/redaction. I have not been able to get Presidio to run requests concurrently and was wondering if there was any way to do so.
From the documentation, the only information I could find about support for concurrency/parallelism is with the scheduler, saying that parallelism for scheduled jobs is not supported: https://microsoft.github.io/presidio/tutorial_scheduler.html.

Hi @zoubinirani ,
How did you deploy Presidio? Using Docker, python or Kubernetes?
In theory each call to the Presidio API is consecutive, but you can achieve parallelism using a Kubernetes deployment.

Hi @zoubinirani ,
How did you deploy Presidio? Using Docker or Kubernetes?
In theory each call to the Presidio API is consecutive, but you can achieve parallelism using a Kubernetes deployment.

Thank you @omri374 for your quick response.
I've deployed using docker but am open to trying/testing k8 if the concurrency increase is significant.
A few follow-up questions:

By consecutive do you mean that each call to the Presidio API is synchronous (i.e. Presidio will not start the next call before finishing the previous call)?
Based on your response to https://github.com/microsoft/presidio/issues/244#issuecomment-566533112, it looks like Presidio performs faster when it has (1) less requests with more text vs. (2) more requests with less text. Do you recommend the approach of less requests with more text? As well, is there a maximum request length?
Is the only way to increase the number of concurrent jobs in Presidio by scaling the number of instances? i.e.:

k8: scaling the number of pods
docker: adding more nodes and placing them behind a load balancer

Maybe I can add a bit of more information for @zoubinirani

By consecutive do you mean that each call to the Presidio API is synchronous (i.e. Presidio will not start the next call before finishing the previous call)?

https://github.com/microsoft/presidio/blob/7935adf03c80a0ba5d53c6affb7d7c78198affaa/presidio-analyzer/presidio_analyzer/app.py#L80
As you can see this takes a thread pool, which executes RPC handlers

Based on your response to #244 (comment), it looks like Presidio performs faster when it has (1) less requests with more text vs. (2) more requests with less text. Do you recommend the approach of less requests with more text? As well, is there a maximum request length?

More requests obviously would have more network overhead. Maybe do minibatch of requests to reduce overhead.

Thanks @rahulraina7 . This helps a lot.
Closing issue.


Fix horizontal scrollbar showing up in parameter window in firefox

Closes #72

@noornoorie When using  Firefox there still is a horizontal scroll bar but when using Chrome there is not. Could you please check what the reason is and  fix it?

Originally posted by @MareenGeestmann in #56

This doesn't fix the issue (horizontal).

@paulpestov it seems to be working on my system (firefox version 116.0.3)


Fix dark mode and other issues

Various fixes:

Dark Mode

Some buttons and items staying white even in dark mode
Add toggle for users that want a theme that doesn't match system settings

Add loading placeholder for image when navigating Recent Podcasts
Fix width overflow on phones
Add support to close menu list on mobile if clicking outside of menu open button

Thank you Steven!!


Support secrets for servicemonitor in app-template

Details
Describe the solution you'd like:
I would like to set these options for the serviceMonitor object:
BasicAuth
bearerTokenFile
bearerTokenSecret

Anything else you would like to add:
This allows us to access things like the homeassistant api which needs a bearerTokenFile for auth.

Additional Information:

Hi! Sorry it took me a while to get back to you on this. I was just starting work to try and implement this, but as far as I am able to tell from the docs, these fields are not supported on the serviceMonitor resource? (https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#basicauth)

hmm how did the old chart work in that case?
https://github.com/k8s-at-home/charts/blob/master/charts/stable/home-assistant/templates/servicemonitor.yaml

Ooohhh, it's on the endpoints... I was looking in the wrong place. I'll take a look at adding back support for this 👍


Appsync async lambda invocation funtionality in GEN2

Describe the feature you'd like to request
AWS AppSync now supports long running events with asynchronous Lambda function invocations. it is great to have this feature available in GEN2. Please see the the official announcement.
https://aws.amazon.com/about-aws/whats-new/2024/05/aws-appsync-events-asynchronous-lambda-function-invocations/
Describe the solution you'd like
Currently, users could only invoke Lambda functions synchronously from AppSync, which meant that the GraphQL API would wait for the Lambda function to complete before returning a response. With the recent support of event mode in appsync it will be great to have this functionality in GEN2 as well.
Describe alternatives you've considered
We can still invoke the lambda function asynchronously using the lambda invocation type "Event" but need to handle the logic ourself instead of passing the mode event  directly from the client side.
Something like this
 await lambda
      .invoke({
        FunctionName: context.functionName,
        InvocationType: "Event",
        Payload: JSON.stringify({
          arguments: {
            content: "submitted async from lambda",
            invokeType: "lambda",
            filePaths: event.arguments.filePaths,
          },
        }),
      })
      .promise();

    return {
      message: "Lambda function submitted"
    };

Additional context
No response
Is this something that you'd be interested in working on?

[ ] 👋 I may be able to implement this feature request

Would this feature include a breaking change?

[ ] ⚠ This feature might incur a breaking change

Hey @anni1236012, Thanks for requesting this. We will mark it as a feature request for the team to evaluate further.

Hi @kfinley-rbi, Could you please check the version of the @aws-amplify/data-schema library in the package-lock.json file and let us know which version it is ?

Hi @AnilMaktala, thank you for the pointer.
That was the issue. Our yarn.lock file had duplicates of @aws-amplify/data-schema.
Using "@aws-amplify/data-schema" "^1.7.0 and "@aws-amplify/data-schema-types" "^1.2.0" async() is working as expected.
Thank you!


unreachableStrategy should be part of pod scheduling policy

currently it's defined as a top-level pod field and instead should be a field defined in the pod-scheduling-policy type.

https://phabricator.mesosphere.com/D297


Controller proxy factory

Refactored the creation of the Java client ControllerProxy.

Reviewed 11 of 11 files at r1.
Review status: all files reviewed at latest revision, 12 unresolved discussions.

java-client/src/main/java/com/canoo/dolphin/client/ClientContext.java, line 44 [r1] (raw file):
please explain why this method is deprecated. If there's a replacement then also mention it

java-client/src/main/java/com/canoo/dolphin/client/ControllerInitalizationException.java, line 1 [r1] (raw file):
missing file header

java-client/src/main/java/com/canoo/dolphin/client/ControllerInitalizationException.java, line 6 [r1] (raw file):
I'd prefer if there was a root DolphinPlatformException instead of just using RuntimeException.  Also, all exceptions are serializable so please add a serialVersionUID field.

java-client/src/main/java/com/canoo/dolphin/client/impl/ClientBeanManagerImpl.java, line 24 [r1] (raw file):
please explain why it's deprecated and if there's an alternative for this class

java-client/src/main/java/com/canoo/dolphin/client/impl/ClientContextImpl.java, line 74 [r1] (raw file):
hmm this ControllerProxyFactory contract is too big. It returns a CompletableFuture that wraps a ControllerProxy. The previous code required usage of internal DP beans (such as platformBeanRepository.getInternalAttributesBean()). I'm afraid this design will force every implementation of the factory to use the bean in one way or another, leading to duplicate code or usage of a base abstract controller factory class.
I envisioned the factory to be a replacement for invoking new ControllerProxyImpl(...). The basic idea of this factory is to decouple ClientControllerImpl from ControllerProxyImpl.

java-client/src/main/java/com/canoo/dolphin/client/impl/ControllerProxyFactory.java, line 1 [r1] (raw file):
missing file header. There's bound to be a Maven plugin that takes care of this task (Apache RAT comes to mind). Or switch to Gradle and apply the license plugin ;-)

java-client/src/main/java/com/canoo/dolphin/client/impl/ControllerProxyFactory.java, line 12 [r1] (raw file):
see comment on ClientContextImpl.. This method should return ControllerProxy<T>.

java-client/src/main/java/com/canoo/dolphin/client/impl/ControllerProxyFactoryImpl.java, line 19 [r1] (raw file):
please validate inputs. check file header

java-client/src/main/java/com/canoo/dolphin/client/impl/DolphinCommandHandler.java, line 11 [r1] (raw file):
please check inputs, file header.
What's the reasoning for creating a top-level class for this code? This used to be hidden inside ClientContextImpl. Please follow the same approach of base interface + default class impl if this type may be superclassed by developers for providing tweaks in their app configuration.

java-client/src/main/java/com/canoo/dolphin/client/impl/DolphinCommandHandler.java, line 19 [r1] (raw file):
why is this method synchronized? the only state hold by this class is the clientDolphin field. It makes no sense to synchronize here.

java-client/src/test/java/com/canoo/dolphin/client/impl/TestDolphinCommandHandler.java, line 22 [r1] (raw file):
please follow naming conventions and attach Testor Tests as a suffix

java-client/src/test/java/com/canoo/dolphin/client/impl/TestDolphinCommandHandler.java, line 47 [r1] (raw file):
I'd declare the method to throw Exception avoiding the try/catch block

Comments from the review on Reviewable.io

Review status: 7 of 15 files reviewed at latest revision, 12 unresolved discussions.

java-client/src/main/java/com/canoo/dolphin/client/ClientContext.java, line 44 [r1] (raw file):
The ClientBeanManager extends the BeanManager and therefore provides methods like create() and remove(). Currently Michael and I think that we don't need this methods on the client. The ClientBeanManager class is deprecated since some time. I know that you are currently using methods and that's the point why we don't remove it. But maybe we find a better way to handle the needs on the client. Therefore the API of ClientBeanManager can change completely in a future version.

java-client/src/main/java/com/canoo/dolphin/client/ControllerInitalizationException.java, line 1 [r1] (raw file):
Done

java-client/src/main/java/com/canoo/dolphin/client/ControllerInitalizationException.java, line 6 [r1] (raw file):
added UID to all exceptions. Let's think about a general exception hierarchy in an additional issue: https://github.com/canoo/dolphin-platform/issues/107

java-client/src/main/java/com/canoo/dolphin/client/impl/ClientBeanManagerImpl.java, line 24 [r1] (raw file):
See my first comment.

java-client/src/main/java/com/canoo/dolphin/client/impl/ClientContextImpl.java, line 74 [r1] (raw file):
I avoided this in the first try because this will end in the usage of an additional Executor. I commit a refactoring now that uses a factory that directly returns a ControllerProxy. By doing so the ClientContextImpl will use an Executor internally.

java-client/src/main/java/com/canoo/dolphin/client/impl/ControllerProxyFactory.java, line 1 [r1] (raw file):
Header added. i create an issue to find a Maven Plugin: https://github.com/canoo/dolphin-platform/issues/108

java-client/src/main/java/com/canoo/dolphin/client/impl/ControllerProxyFactoryImpl.java, line 19 [r1] (raw file):
Done

java-client/src/main/java/com/canoo/dolphin/client/impl/DolphinCommandHandler.java, line 11 [r1] (raw file):
Based on the factory calling a Dolphin command was needed in serval points. That's why I externalized the functionality in a separate class. Since all classes that use the functionality are private classes (all *Impl) I don't think that we need an interface here.
Added Header & NullChecks

java-client/src/main/java/com/canoo/dolphin/client/impl/DolphinCommandHandler.java, line 19 [r1] (raw file):
I think I just copied it from the ClientContext. You are right.

java-client/src/test/java/com/canoo/dolphin/client/impl/TestDolphinCommandHandler.java, line 22 [r1] (raw file):
I think we should discuss this. Michael used Test as a prefix in all classes in the client. That's why I did it this way. I'm fine with any naming convention. For now I won't change it but we should define a naming convention and then refactor all tests.

java-client/src/test/java/com/canoo/dolphin/client/impl/TestDolphinCommandHandler.java, line 47 [r1] (raw file):
Done

Comments from the review on Reviewable.io

@aalmiray does the last version fit to your needs?

Reviewed 10 of 10 files at r2.
Review status: all files reviewed at latest revision, 2 unresolved discussions.

java-client/src/main/java/com/canoo/dolphin/client/ClientContext.java, line 44 [r1] (raw file):
thanks for the explanation :-) it should be in the javadoc too

Comments from the review on Reviewable.io

Review status: 13 of 16 files reviewed at latest revision, 1 unresolved discussion.

java-client/src/main/java/com/canoo/dolphin/client/impl/ControllerProxyFactory.java, line 12 [r1] (raw file):
Done.

Comments from the review on Reviewable.io