There is no need to call encodeHeaders for png images

It looks like there is no need in calling "encodeHeader" for png images.
It was added by https://github.com/graphite-project/graphite-web/commit/08be1ba8a465554443af474a924dd8f668abdf72 this commit.
Function itself: https://github.com/graphite-project/graphite-web/blob/0.9.x/webapp/graphite/render/glyph.py#L407
From my point of view it draws this text outside of the canvas and it's useless for PNG rendering. I also wonder maybe there is a better way to do whatever it does for PNG images? Maybe it was a limitation of old cairo from 2011?

@tmm1 maybe you'll know why it was done like this?
This function calls 'save', do some stuff and then restore context. So it seems to be useless.

Also I even can't find any use of this for svg. Because you save context, do something, restore context. And restoring context erase all the changes. At least from what I saw and what I understand.

Just some proofs that it's not needed:
http://cairographics.org/documentation/pycairo/2/reference/context.html (http://www.cairographics.org/manual/cairo-cairo-t.html#cairo-save - original one from cairo itself)
Contexts can be pushed to a stack via Context.save(). They may then safely be changed, without loosing the current state. Use Context.restore() to restore to the saved state.

So actually whatever you do between save-resotre will be lost. So this function is useless, doing unnecessary mem copies a lot of times, then it draws some text outside of the canvas and then safely restores context to previous saved state. Whatever was the reason behind adding this function - it is WRONG and doing a lot of useless work.
@brutasse @obfuscurity can you please look at this closely? From my point of view you should remove encodeHeaders function or at least don't call it for png images if you are afraid of removing it (even though cairo docs says it shouldn't do anything meaningful).
I've also sent an email to Aman Gupta, and he said following things:
It is meant for svgs, basically puts some metadata in the generated svg xml that is not inside the frame. This can be used to manipulate the svg later on with framework like d3.

You should be able to compare the generated svg before and after that change to see the results.

So to be sure that it's useless you can just diff svgs with and without it. Also it proofs that even originally it's useless for png.


Add high-level (synchronous) BigQuery operations

Add new high-level (synchronous) convenience methods that encapsulate waiting for a job to complete. These should be similar to #query, except that polling should use jobs.get instead of jobs.getQueryResults. The naming of the new methods should be consistent with the pairing of #query (high-level) and #query_job (low-level). The following methods should be added:

[x] #copy
[x] #extract
[x] #load

Existing low-level methods with these names should be renamed with the _job suffix, for consistency as noted above.

I was originally thinking it would be ok for these methods to return Job subtypes, but in response to your comment on the PR, should they all simply return true if successful?

I do. I think the "high level" methods should return true, and the "low level" methods return the job object.

Closed by #1722, #1726, #1730.


Adding database support

As told in the issue #12 I will be adding database support.
Also closes #12

What is jooq ?

What is jooq ?

https://www.jooq.org
Basically it generates the database table into java

Codecov Report

Merging #15 (a1bc53a) into main (234df63) will not change coverage.
The diff coverage is 0.00%.


[FEAT]: Blog - Creating a Blog Post

Description

Develop an API endpoint that allows only a super admin to create a blog post.

Purpose

The purpose of the endpoint is for a super admin to be able to create a blog post.

The Blog Schema

Acceptance Criteria

The endpoint allows only a super admin to create a blog post.
A valid token with the super admin role is supplied to the Authorization header.
If no Authorization header is supplied or an invalid token is supplied, the error should return a status code of 401.
If the token does not have the admin role, the error should return a status code of 403.
Returns a 200 OK status code and the correct response body when the blog is created successfully.

Endpoints
Create Blog [POST] /api/v1/blogs

A valid token is supplied to the Authorization header

If no Authorization header is supplied or an invalid token is supplied, the error should return a status code of 401

Request Header { "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR..." }

A valid request body with correct validation is supplied:

The title field cannot be empty
The content field cannot be empty and should be rich text
The error should return a status code of 400 if the required fields are missing

Request Body
       {
           "title": "Blog Title",     // required
           "content": "<pFirst paragraph.</p<pSecond paragraph.</p",     // required, rich text
           "tags": ["tag1", "tag2", ...],    //optional
           "image_urls": ["Image URL 1", "Image URL 2", ...]    // optional, can be inserted in the content
       }

Successful Response
Status Code 201
   {
       "status_code": 201,
       "message": String,
       "data": {
             "blog_id": String,
             "title": String,
             "content": Text,
             "image_urls": [String],
             "tags": [String],
             "author": String,
             "created_at": Date
       }
   }

Error Responses
Status Code 400
   {
       "message": String,
       "status_code": 400
   }

Status Code 401
   {
       "message": String,
       "status_code": 401
   }

Status Code 403
   {
       "message": String,
       "status_code": 403
   }

Status Code 500
   {
       "message": String,
       "status_code": 500
   }

Testing

Unit tests

Test for valid authorization token in the header
Test for invalid authorization token
Test for authorization token expiry time
Test that the invalid requests body, e.g. test for each required field, returns the appropriate status codes and data
Test that the valid request body returns the valid status code and data

Hi @Oghenekevbe any update on this?
Besides, we have some new fields to the Blog schema now.

Hi @Oghenekevbe any update on this?
Besides, we have some new fields to the Blog schema now.

Still on it. Will make adjustments according to the new fields.
Thank you

Hi @Oghenekevbe any update on this?
Besides, we have some new fields to the Blog schema now.

Still on it. Will make adjustments according to the new fields. Thank you

Okay great. You will see the updates to the model on this PR: https://github.com/hngprojects/hng_boilerplate_python_fastapi_web/pull/137
I am working on the Blog Listing Endpoint, so I kinda depend on you for our endpoints to work as it should live, since it is from the Created blog posts, one can see all the blog posts, you grab.


deps: fixing dependabot

Asana Task/Github Issue:
Description

Testing Steps

Checklist

Please tick all that apply:

[ ] I have tested this change locally
[ ] I have tested this change locally in all supported browsers
[ ] This change will be visible to users
[ ] I have added automated tests that cover this change
[ ] I have ensured the change is gated by config
[ ] This change was covered by a ship review
[ ] This change was covered by a tech design
[ ] Any dependent config has been merged

#1123  👈
main

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

Join @shakyShane and the rest of your teammates on  Graphite


Refactor to scale with port size

We need to make the size of the canvas depend on the size of the window.
Done: When the canvas scales correctly

got this accomplished on the Cube page at least


Fix icon for full app display

The button for enabling the full app display (and probably other additional buttons in the top bar) shows the back arrow icon (see https://github.com/nimsandu/spicetify-bloom/issues/334#issuecomment-2049347536 for a screenshot), because it is overwritten by CSS.
This patch makes the CSS selectors more specific, to ensure that they only apply to the history buttons.

@yanus thanks for your commitment on making bloom better!


Do not insist on using macOS texinfo

[X] Have you followed the guidelines in our Contributing document?
[X] Have you checked to ensure there aren't other open Pull Requests for the same change?
[X] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.
[ ] Have you successfully run brew style with your changes locally?
[ ] Have you successfully run brew typecheck with your changes locally?
[ ] Have you successfully run brew tests with your changes locally?

macOS texinfo is left at an old version, and is not present on newer version (Ventura and later). We have migrated all of homebrew-core versions to using Homebrew's texinfo when necessary (like in https://github.com/Homebrew/homebrew-core/pull/114068 and friends), but the audit still triggers in some cases: https://github.com/Homebrew/homebrew-core/pull/135322
It's high time we stop insisting on using macOS texinfo. I actually thought I had done that already a couple of months ago :)

Audit does not deal with texinfo being keg-only only on some macOS versions. Either we ignore the audit, or we make texinfo not-keg-only. I'm all for the second (simplify maintenance across macOS versions). Opinions?

Audit does not deal with texinfo being keg-only only on some macOS versions. Either we ignore the audit, or we make texinfo not-keg-only. I'm all for the second (simplify maintenance across macOS versions). Opinions?

Agreed with the second option. Better to improve things moving forward.

Opened companion PR in homebrew-core: https://github.com/Homebrew/homebrew-core/pull/136838

Thanks @fxcoudert!


Flutter on Android should compile with -02

 Issue by Hixie
Monday Jul 20, 2015 at 20:33 GMT
Originally opened as https://github.com/flutter/engine/issues/154

From @abarth on February 25, 2015 17:21
We need to sprinkle this gn into our build system.
if (is_android && !is_debug) {
configs -= [ "//build/config/compiler:optimize" ]
configs += [ "//build/config/compiler:optimize_max" ]
}
Copied from original issue: domokit/mojo#53

I'm not sure if this still applies.  @jason-simmons would know.

We now have a separate --release build for the Engine were this would make sense if it is still an issue.

Closing. Please reopen if still valid.


Making apply sort generic

apply now accepts a shuffle-revealed permutation which can be applied to the inputs. This will help us isolate the validation needed for reveal inside sort.
We will have 2 generate_permutation - one for each type of context. Malicious will do extra work needed for validation


The Cratening

About the PR

Resprites all of the crates.
The form is loosely based off of old crates + some experimentation to make them wider and less obnoxious
The designs are mostly from /vg/ with a few being the same as before.
Media

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

:cl:

tweak: All crates have a brand new look.

here before it becomes https://github.com/tgstation/tgstation/pull/75785

here before it becomes tgstation/tgstation#75785

those original tg crates are still better even than this pr ngl

as a heavy /tg/ player, the cratening was a fucking disaster and i did not enjoy it, neither do i enjoy it now
anyways these new cratesprites(ss14) look much better than the current tg ones

They look very nice but a part of me does miss the vibrancy. The Engineering crates look a little out of place now as yellow and black are not really Engi colour combinations. They were a lot more fitting when they were yellow and red. I also think the Botany crates look so bland now. I think even if they still had the green stripe across the top they would look better. Honestly think more crates should have the stripe across the top but I get that it might be hard to make them look good.


preview-head.html is not rendered again in hot reload

steps
have a preview-head.html file at the root of storybook folder
insert <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> in it for testing
in your stories add a story with close in it, this renders a cross icon, when the fonts are loaded
It works in the main storybook page, and even for that story (&full=1) if you reload, the fonts works
but in development mode (I use "storybook": "start-storybook -p 9001 -c .storybook",) as soon as editing this particular story, it's re-rendered, and you see suddenly close instead of a ❌, I guess preview-head.html is ignored
version
"@storybook/react": "^3.3.14"

for the reproduction, use any storybook setup (having react, babel, .. all set up), add a preview-head.html containing body: {border: '2px red solid'} for example, run npx storybook, edit a story, save and observe the body styling disappears

I couldn't reproduce using examples/official-storybook (and its preview-head.html) I'll search more the issue

thanks! Will take a look if you can provide a reproduction repo 👍 .

Ok, I found the issue
https://github.com/caub/storybook-preview-head
I was using my main webpack config (because I needed special resolves) but that one were also using an html template, which was used after hot reload (hence the missing styling from preview-head.html)
I just need to avoid HtmlWebpackPlugin in storybook
Thanks


your demo login data is wrong on https://www.gitssh2.com/

your demo login data is wrong on https://www.gitssh2.com/
With best regards,
Jan

Anyway, problem solved by using another product, hehe!! :-)

Closed.


Why are flattened empty objects/arrays not representable?

When you call flatten() on an object with an empty array, the flattened value is null instead of []. As a result, when you unflatten() the data back, you do not get the original object. Unfortunately, this makes it difficult to take advantage of flattening to operate on the object tree directly without having to traverse it (e.g., remove all entries where the path contains "x").
The flatten() documentation (https://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab838f000d76662917ffd6ec529569e03.html#ab838f000d76662917ffd6ec529569e03) notes that this will be the case, but it's not clear why the values must be primitives since the flattened object is just a JSON object itself. Is there a reason the values need to be primitives?
For example:
  json a = json::parse("{\"foo\": []}");
  std::cout << "Before: " << a.dump(4) << std::endl;
  json a_flat = a.flatten();
  std::cout << "Flattened: " << a_flat.dump(4) << std::endl;
  a = a_flat.unflatten();
  std::cout << "After: " << a.dump(4) << std::endl;

produces the following:
Before: {
    "foo": []
}
Flattened: {
    "/foo": null
}
After: {
    "foo": null
}

Compiler: GCC 7.4
Library version: 3.7.3 single include

The reason is that JSON pointers only allow for primitive values. Therefore, you describe exactly the edge case that is not properly representable.

Ah, I suppose that makes sense. Thanks so much for the quick response!
It's unfortunate it seems that there a few features missing from JSON pointer/patch that would be so useful. This is certainly one - seems like it would be pretty trivial to allow a pointer to refer to a structured object and have the value for the "flattened" output above be [] in the case of an empty array.
On a possibly related side note, flattening an empty json::object() outputs an object with size 1 ({"": null}), not 0 ({}). Not sure if that's intentional?
A second related feature would be to allow add operations where the pointer ends in /- to create an array if it doesn't exist already. Technically - is a valid key so it's ambiguous if you are referencing an array or object if it doesn't exist, but the JSON patch spec doesn't specify that I can find. This would allow patches to create and extend arrays without requiring someone to define some base structure ahead of time. In my opinion, using - to reference an array in an add operation is probably a lot more likely than an object.
The third missing piece as I see it is to have a merge operation for JSON patch so, for example, you could do:
Base: {
    "foo": [
        {"a": 1}
    ]
}
Patch: [{"op": "merge", "path": "/foo/0", "value": {"b": 2, "c": 3}}]
Result: {
    "foo": [
        {"a": 1, "b": 2, "c": 3}
    ]
}

You could definitely break this patch up into two add operations, one for b and one for c, but that is a lot less sustainable when you want to modify a large number of elements on an existing object. JSON merge can do it, but unfortunately not if you need to reference an array element like the example above.
Obviously these aren't necessarily spec, but I'm curious what you think?

I do not understand your proposal. Could you elaborate?

http://jsonpatch.com states:

Finally, if you need to refer to the end of an array you can use - instead of an index. For example, to refer to the end of the array of biscuits above you would use /biscuits/-. This is useful when you need to insert a value at the end of an array.

But in your example, you start with an empty object {}. As - is also a valid object key, I think the current behavior is less surprising as converting an object to an array and interpreting - as the end of it. Applying the patch to an empty array has the expected behavior:
#include <iostream>
#include "json.hpp"

using json = nlohmann::json;

int main() {
    json ja = json::array();
    json jo = json::object();

    json p = R"([{"op": "add", "path": "/-", "value": 123}])"_json;

    std::cout << ja.patch(p) << std::endl;
    std::cout << jo.patch(p) << std::endl;
}

Output:
[123]
{"-":123}


Center map based on markers?

Hi, I'm using the marker cluster plugin and have got it implemented just fine and it's doing everything that I need.
I would like the map to initiate with a center and zoom level that includes all of the markers, e.g. if one was one side of the world and the other was on the other, it should show the entire map to make sure they're both visible.
How can I achieve this? Will I have to do some custom math with all of the marker's vectors or is there a built-in way to do it?
Thanks

Yes there is a built in way. Check it on https://github.com/johnpryan/flutter_map/blob/ef15ae9b88d9acecaea458d115076ac49ffbd5fc/example/lib/pages/map_controller.dart
with fitBounds method :)

Thanks very much!
Here's how implemented it:
_mapController.onReady.then((value) {       var bounds = LatLngBounds();       data.filteredAssets.where((Asset asset) => asset.coords != null).toList().forEach((Asset asset) {         bounds.extend(asset.coords);       });       _mapController.fitBounds(         bounds,         options: FitBoundsOptions(           padding: EdgeInsets.all(30),         ),       );     });


How to use your plugin with php language server?

Hello. Firstly, thanks for your tremendous work.
Please could you help me. There was a task to get functionality for editing php files on the site. I connected monaco-editor via webpack, but I needed the ability to auto-complete the code. I found such a server (https://hub.docker.com/r/felixfbecker/php-language-server/) and your plugin, but I can’t figure it out for a long time, is there any way to do this without using nodejs?
Thanks for your help.

@ElDarco It should be possible to talk to any language server assuming it follows the protocol. I suggest you check the example and try to change how the server is initialized.
https://github.com/TypeFox/monaco-languageclient/blob/602e7606c046036d3627b59064bbfb4b67e7d2e8/example/src/json-server-launcher.ts#L14-L19

@rcjsuen Fine. Thanks for the answer. But I followed the example in the "examples / browser" folder, but as far as I understand, in order for it to work correctly, do I need to add a socket connection and rewrite the provideCompletionItems method?

@ElDarco No, you shouldn’t have to do any of that from my experience.


slash commands?

DiscordAPIError[10002]: Unknown Application
    at SequentialHandler.runRequest (C:\Users\henkez\Downloads\Discord.js-v14-Command-Handlers-main\node_modules\@discordjs\rest\dist\index.js:708:15)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async SequentialHandler.queueRequest (C:\Users\henkez\Downloads\Discord.js-v14-Command-Handlers-main\node_modules\@discordjs\rest\dist\index.js:511:14)
    at async C:\Users\henkez\Downloads\Discord.js-v14-Command-Handlers-main\handlers\slashCommand.js:46:5 {
  rawError: { message: 'Unknown Application', code: 10002 },
  code: 10002,
  status: 404,
  method: 'put',
  url: 'https://discord.com/api/v9/applications/874532279635030038/guilds/931644627713421312/commands',
  requestBody: {
    files: undefined,
    json: [
      [Object], [Object],
      [Object], [Object],
      [Object], [Object],
      [Object]
    ]
  }
}

downloaded main branch and installed the packages listed in the repository
I guess it's outdated? or lmk if i'm doing something wrong 😐

CLIENT_ID=
lol... did not know it needed the application id? should say that instead of client


[Release] Check list for v0.9.0-alpha0

v0.9.0-alpha0
Overview
The release process mainly follows from this dependency graph.
flowchart LR
    Trustee --> Versions.yaml
    Guest-Components --> Versions.yaml
    Kata --> kustomization.yaml
    Guest-Components .-> Client-tool
    Guest-Components --> enclave-agent
    enclave-cc --> kustomization.yaml
    Guest-Components --> versions.yaml
    Trustee --> versions.yaml
    Kata --> versions.yaml

    subgraph Kata
        Versions.yaml
    end
    subgraph Guest-Components
    end
    subgraph Trustee
        Client-tool
    end
    subgraph enclave-cc
        enclave-agent
    end
    subgraph Operator
        kustomization.yaml
        reqs-deploy
    end
    subgraph cloud-api-adaptor
        versions.yaml
    end

Starting with v0.9.0 the release process no longer involves centralized dependency management.
In other words, when doing a CoCo release, we don't push the most recent versions of the subprojects
into Kata and enclave-cc. Instead, dependencies should be updated during the normal process of development.
Releases of most subprojects are now decoupled from releases of the CoCo project.
The Steps
Determine release builds
Identify/create the bundles that we will release for Kata and enclave-cc.

[x] 1. :eyes: Create enclave-cc release
Enclave-cc does not have regular releases apart from CoCo, so we need to make one.
Make sure that the CI is green and then use the Github release tool to create a tag and release.
This should create a bundle here.

[x] 2. :eyes: Find Kata release version
The release will be based on an existing Kata containers bundle.
You should use a release of Kata containers.
Release bundles can be found here.
There is also a bundle built for each commit.
If you absolutely cannot use a Kata release,
you can consider releasing one of these bundles.

Test Release with Operator

[x] 3. :eyes: Check operator pre-installation
The operator uses a pre-install container to setup the node.
Check that the container matches the dependencies used in Kata
and that the operator pulls the most recent version of the container.

Check that the version of the nydus-snapshotter used by Kata matches the one used by the operator

Compare nydus-snapshotter version in Kata versions.yaml with the Makefile for the operator pre-intall container.

If they do not match, update the operator. This can be part of the PR described in the next step.

Make sure that the operator pulls the most recent version of the pre-install container

Find the last commit in the pre-install directory

Make sure that the commit matches the preInstall / postUninstall image specified for enclave-cc CRD and Kata CRD

If these do not match (for instance if you changed the snapshotter above), update the operator so that they do match. This can be part of the PR described in the next step.

[x] 4. :wrench: Open a PR to the operator to update the release artifacts
Update the operator to use the payloads identified in steps 1 and 2.
There are a number of places where the payloads are referenced. Make sure to update all of the following to the tag matching the latest commit hash from steps 7 and 8:

Enclave CC:

SIM
HW

Kata Containers:

default
s390x
peer-pods
Note that we need the quay.io/confidential-containers/runtime-payload-ci registry and kata-containers-latest tag

Also, update the operator version

Final Touches

[x] 5. :trophy: Cut an operator release using the GitHub release tool

[x] 6. :green_book: Make sure to update the release notes and tag/release the confidential-containers repo using the GitHub release tool.
Release notes: https://github.com/confidential-containers/confidential-containers/pull/209

[ ] 7. :hammer: Poke Wainer Moschetta (@wainersm) to update the release to the OperatorHub. Find the documented flow here.

We are foregoing the operator hub release for v0.9.0-alpha


waypoint-add-borders-around-your-elements

Challenge http://www.freecodecamp.com/challenges/waypoint-add-borders-around-your-elements has an issue.
First 2 requirements for the exercise are conflicting and confusing.

Your img element should have the class smaller-image.
Your img element should have the class thick-green-border.

They're not conflicting, any element can have multiple classes. Add them using class="class1 class2"


District Wise date should also be sorted by Confirmed column

@jeremyphilemon This is fixed and here is the PR:
https://github.com/covid19india/covid19india-react/pull/207
Please review the live deployed link:
https://covid19india-react-66o0srlls.now.sh/


[UBS_Prod. Client. Sign in] Incorrect message is displayed on EN/UA localization when user typed password more than 20 symbols on the pop-up 'Sign in''

Environment: Windows 10, Chrome Version 108.0.5359.99
Reproducible: always
Build found: 06.01.23
Preconditions
Go to the https://www.pick-up.city/
Steps to reproduce

Set UA localization of the main page 'Pick-up'
Click 'Sign in' button
Type a password in the field 'Password', that contains more than 20 symbols (e.g. aaaaaBBBBBccccc!12345)
Pay attention to the message under the field 'Password'
Set EN localization of the main page 'Pick-up'
Click 'Sign in' button
Type a password in the field 'Password', that contains more than 20 symbols (e.g. aaaaaBBBBBccccc!12345)
Pay attention to the message under the field 'Password'

Actual result
An incorrect message is displayed on EN/UA localization when user enters the password more than 20 symbols on the pop-up 'Sign in'':
Ua: "user.auth.sign-in.too-long-password"
En: ''user.auth.sign-in.too-long-password"

Expected result
If a user clicked on password text field, and typed more than 20 symbols, then the error message appears:
En: “Password cannot exceed 20 characters.”
Ua: “Пароль не може містити більше 20 символів”.
User story and test case links
"User story #4100"
Labels to be added
"Bug", Priority ("pri: "), Severity ("severity:"), Type ("UI, "Functional"), "API" (for back-end bugs).

We have no access to the Pick-up.


Updated Dutch tanslations

I saw that some translations were specific to Flemish, I made those more standardized Dutch. I also saw some inconsistencies between formal "uw" and less formal "jouw", I changed that to "jouw", since that sounds more friendly. And some other minor changes to the formality and general consistency.

It's entirely possible that these translations were specific to Flemish ;) I like your contributions, reads much more fluently and feels more professional. Thank you so much.


Do not inhibit bucket replica activation under maintenance mode [run-systemtest]

@geirst @baldersheim please review
To prevent spurious indexing during rolling upgrades, this also adds an internal content node feature support flag which communicates that the content node will not implicitly index a non-ideal replica marked explicitly as active. Activation during maintenance is only performed iff candidate content nodes have this flag set.
This PR does not change the heuristics where the distributor prefers activating the replica with the most documents (vs. the node with the highest ideal state score) if no ready replicas are available. One thing at a time 🐢

We'll hold off merging this until we've observed the effects of #24057 for a bit.

As a side note, if this PR is merged and #24057 is later reverted, this PR must be reverted alongside it as well. Otherwise the content node will be shamelessly lying about its supported feature set.


Failed to install plugin

I keep getting this error whenever I try to install it:
Error invoking remote method 'installPlugin': Error: Yarn error warning package.json: No license field warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files.  To clear this warning, remove package-lock.json. warning No license field warning No license field

Hi, I experienced the same error, but when I reloaded the plugins I was able to install it. It seems to be an Insomnia bug, but if it's not, and it only happens to you with the Tokyo Night theme, please let me know

.

Thank you Arturo, I will try this as well as attempt with other plugins and let you know

No plugins are installing for me, I'm gonna assume that it is Insomnia's fault. Muchas gracias Arturo


Question: Changing Pi to larger capacity RAM model.

I plan to 'upgrade' my Pi from a 4GB to 8GB model.
With regards to running Raspiblitz, is this just a simple case of plugging in the existing SD card/SSD to the new Pi or do I need to go through the setup process again to take into account the increased RAM?

Yes, just move the SD and the SSD, will work fine.

Confirm. No adverse issues from the process apart from IP address change, which was easily addressed at router end.


Typechecking of Promises should be implemented in a different way

Hey!
I found myself stuck having this issue, I highly recommend to change the snippet generated for Promise instance checking with something more "intelligent", maybe just doing a "thenable" check is enough.
What do you think?

yes I totally agree, this was planned but didn't get around to it yet, fancy making a PR? The check should be something like:
input !== null && typeof input === 'object' && typeof input.then === 'function'

I'll love to send a PR, but need to check where should I need to do change.
For now what I did was:
type Thenable = {
  then: Function
};

function () :Thenable {
... do something ...
}

And as you can imagine, Map, Set, WeakMap, and so on, can have similar scenarios. Is there any plan to define the interfaces for these types? This is something I'm little worry in order to be confident to use this project.

I'd like to get to this in v4. The plan is to parse flow's .flowconfig to discover interface definitions in the same way that flow does, but it's a lot of work.

I could also see it being valuable to check for the result value of the Promise, e.g. a Promise<string> could validate that it actually resolves to a string.

This project is now deprecated in favour of https://codemix.github.io/flow-runtime which has much better support for Flow, I opened a corresponding issue here: https://github.com/codemix/flow-runtime/issues/3


Merge release changes back into main

According to the release plan this is moving changelog items over.
Engine version will change later when we turn insiders back on.
From this point on, we're shipping only release.

I can't quite remember the process, but do you want to bump the engine now (1.63-insiders or whatever) so that we don't accidentally release an insiders build that overwrites live stuff when we turn things back on?

I can't quite remember the process, but do you want to bump the engine now (1.63-insiders or whatever) so that we don't accidentally release an insiders build that overwrites live stuff when we turn things back on?

No we instead turn off the insiders version. We don't bump until we ship the release bits so that it can continue to run with the insiders we have on our own boxes.
See the entry in the release plan:
https://github.com/microsoft/vscode-jupyter/issues/7909


kube-up.sh support scaleout

What type of PR is this?

/kind feature

What this PR does / why we need it:
kube-up.sh support scale-out cluster
Verified in branch poc-2022-01-30
kube-up.sh 1TP1RP verified; 2TP2RP verified
Start-kubemark.sh 1TP*1RP verified; 100 hollow-nodes perf tests finished with success
Which issue(s) this PR fixes:

Fixes #1036
Special notes for your reviewer:
Example commands to start Kube-up:
export SCALEOUT_CLUSTER=true NUM_NODES=2 SCALEOUT_TP_COUNT=1 SCALEOUT_RP_COUNT=1 RUN_PREFIX=example-111621-1x1x100
export MASTER_DISK_SIZE=500GB MASTER_ROOT_DISK_SIZE=500GB KUBE_GCE_ZONE=us-west2-b MASTER_SIZE=n1-highmem-32 NODE_SIZE=n1-highmem-16 NODE_DISK_SIZE=500GB GOPATH=$HOME/go KUBE_GCE_ENABLE_IP_ALIASES=true KUBE_GCE_PRIVATE_CLUSTER=true CREATE_CUSTOM_NETWORK=true KUBE_GCE_INSTANCE_PREFIX=${RUN_PREFIX} KUBE_GCE_NETWORK=${RUN_PREFIX} ENABLE_KCM_LEADER_ELECT=false ENABLE_SCHEDULER_LEADER_ELECT=false ETCD_QUOTA_BACKEND_BYTES=8589934592 SHARE_PARTITIONSERVER=false LOGROTATE_FILES_MAX_COUNT=200 LOGROTATE_MAX_SIZE=200M KUBE_ENABLE_APISERVER_INSECURE_PORT=true KUBE_ENABLE_PROMETHEUS_DEBUG=true KUBE_ENABLE_PPROF_DEBUG=true TEST_CLUSTER_LOG_LEVEL=--v=2 HOLLOW_KUBELET_TEST_LOG_LEVEL=--v=2 GCE_REGION=us-west2-b
./cluster/kube-up.sh

Verify scale out cluster:
kubectl --kubeconfig=/home/sonyali/go/src/k8s.io/arktos/cluster/kubeconfig-proxy get nodes
kubectl --kubeconfig=/home/sonyali/go/src/k8s.io/arktos/cluster/kubeconfig.rp-1 get nodes
kubectl --kubeconfig=/home/sonyali/go/src/k8s.io/arktos/cluster/kubeconfig.tp-1 get nodes

Does this PR introduce a user-facing change?:

Did you verify this change with master branch?

Test Scenarios:

Kubeup (scale up) + kubemark ( scale up): successfully
Kubeup (scale up) + kubemark ( scale out 1*1): successfully
Kubeup (scale out 1*1): successfully except known network issue.

/lgtm

add one commit based on review and tested:

scale-up: kube-up start successfully
scale-out (11 and 22): kube-up start successfully except known network issue (metrics-server, cordons... pods failure)

move delete-proxy logic from function Kube-down to Kube-down.sh and also tested:

scale-up: kube-up start successfully, Kube-down delete successfully
scale-out (1by1): kube-up start successfully except known network issue (metrics-server, cordons... pods failure); Kube-down delete successfully

/approve

/lgtm

/approve


ViewStore sometimes replays previous state values to subscribers

Describe the bug
ViewStore publisher appears to sometimes replay its previous state value after publishing the latest, correct value.
To Reproduce
The scenario that produces this behavior is:

Send a ViewStore action which updates "Property A" on state.
Have a subscription on the same view store listening to "Property A". When the subscription receives the updated value from the .send above, synchronously dispatch another action which mutates "Property B".
Have a subscription on the view store listening to "Property B".
I would expect that the "Property B" subscriber receives two values. (1) for the initial value of B, and (2) the new value set in step 2.

Sometimes, the "Property B" subscriber receives a third, final update with the store's initial value for "Property B", after having received the value set in step 2.
The bug only repros ~50% of the time. The following test may need to run a number of times before this repros:
TcaWithTestCase.zip

  var cancellables: Set<AnyCancellable> = []

  func testOldStateReplaysInViewStoreSubscriber() {
    struct State: Equatable {
      var city: String
      var country: String
    }

    enum Action: Equatable {
      case updateCity(String)
      case updateCountry(String)
    }

    let reducer = Reducer<State, Action, Void> { state, action, _ in
      switch action {
      case let .updateCity(city):
        state.city = city
        return .none
      case let .updateCountry(country):
        state.country = country
        return .none
      }
    }

    let store = Store(
      initialState: .init(city: "New York", country: "USA"),
      reducer: reducer,
      environment: ()
    )
    let viewStore = ViewStore(store)

    viewStore.publisher.city
      .sink { city in
        // After we get the first update, let's update the country to "UK"
        if city == "London" {
          viewStore.send(.updateCountry("UK"))
        }
      }
      .store(in: &cancellables)

    var seenCountries = [String]()
    viewStore.publisher.country
      .sink { country in
        seenCountries.append(country)
      }
      .store(in: &cancellables)

    // Send the initial update to make city "London"
    viewStore.send(.updateCity("London"))

    // Test that we only see two updates:
    // 1) "USA"
    // 2) "UK"
    // Sometimes, we get a third update with "USA" again...

    XCTAssertEqual(seenCountries, ["USA", "UK"])
  }

Expected behavior
ViewStore shouldn't replay previous state value
Screenshots
n/a
Environment

swift-composable-architecture version 0.23.0
Xcode 12.5.1
Swift 5.4
OS: MacOS 11.12.3

Thanks for providing a good example. I can confirm the same result on my end and am trying to get a better idea of the issue.
Is there a particular reason you're not putting the update country logic inside the reducer? My guess is that sending .updateCountry via sink is causing a race condition.

@iampatbrown note that if you also subscribe to the viewStore.publisher you'll see it always get 3 state updates and the difference between failed and successful run is the order being inconsistent.
UIKit / AppKit apps tend to use publisher observation a lot and this situations is likely to happen in bigger apps, causes weird to track down bugs.

@kaandedeoglu this is more to do with how combine works though right? You would probably have to send the action using DispatchQueue.main.asyc or use the publisher.receive(on:)
For example the same issue occurs using the below
func testCombine() {
  var cancellables: Set<AnyCancellable> = []

  struct State: Equatable {
    var city: String
    var country: String
  }

  let state = CurrentValueSubject<State, Never>(.init(city: "New York", country: "USA"))

  state.map(\.city)
    .removeDuplicates()
    .filter { $0 == "London" }
    .sink { _ in state.value.country = "UK" }
    .store(in: &cancellables)

  var seenCountries = [String]()
  state.map(\.country)
    .removeDuplicates()
    .sink { seenCountries.append($0) }
    .store(in: &cancellables)

  state.value.city = "London"

  XCTAssertEqual(seenCountries, ["USA", "UK"])
}

when I was debugging TCA internals I didn't really notice anything wrong or inconsistent between failure / success cases on the side of library itself, so definitely feels like combine thing.
If there is no workaround for this kind of scenario probably worth adding a note in doc / sample

There is some non-determinism in Combine that you are seeing here. It seems that the order of subscriptions isn't guaranteed. Running this in a playground you will see that sometimes it crashes and sometimes it doesn't:
var cancellables: Set<AnyCancellable> = []

let subject = CurrentValueSubject<Int, Never>(1)

var value = 0
subject.sink { value = $0 }
  .store(in: &cancellables)

subject.sink { assert($0 == value) }
  .store(in: &cancellables)

subject.send(1)

For this reason you probably should only do truly independent tasks inside .publisher.sink closures. So sending an action in one .sink { } that needs to be properly observed in another .sink { } is probably not going to work out well.


Add function to find number of divisors

Added it as a part of math/divisors.jl

Looks like the HTML page size is capped in Documenter. This PR pushes the docs size above that cap. I tried to increase the cap but it doesn't seem to work? (https://documenter.juliadocs.org/stable/lib/internals/writers/index.html)

Doubled the size threshold for now. (from 200 KiB to 400 KiB)


Not using node resolution in library

https://github.com/JairusSW/as-kati/blob/558296738f2fff45e574f8d10969c165f2b79ffb/assembly/index.ts#L5
Should be
import { StringSink } from 'as-string-sink`

Did this not work?

Hrm.. Let me try. Updating to the latest version...

Oh, great! Looks like it got fixed, @willemneal . Pushing changes...


Chart showing negative Y axis

I am using following array in apex charts values.
But its showing negative Y axis but I don't have any negative values.
   data = [442, 7901, 1152, 3010, 5905, 79881, 4508, 3323];
 Months = ["Apr", "Aug", "Jul", "Jun", "Mar", "May", "Oct", "Sep"];

This issue is not fix. One example:
https://codepen.io/rhera/pen/ZEYWKmv
Version: 3.10.1

Fixed in 3.11.0


Is there any plan to get it working on mobile devices?

Hi, Is there any plan to get it working on mobile devices (android/iOS)?
Is it a difficult task to integrate with this project? https://github.com/iffy/wiish

I plan to support as many platforms as possible, however mobile is not on the roadmap yet.
Currently I'm going to be working on a WebGL backend, which should make creating mobile games possible in at least some way.
I don't think mobile support will be possible until I switch to SDL2 from GLFW, but I don't know if that will ever happen (I'm happy with my current library choice, and SDL2 not very easy to wrap using nimterop).

After thinking through this for a while, I'll say that no. rapid isn't going to support mobile, as my main focus is desktop games.
Nim currently doesn't really have good tooling for exporting to Android and iOS, which makes it way more difficult to make mobile apps---you have to use Java and JNI to bind the code to Android, and that's rather cumbersome. I also don't have a way of testing iOS, since that requires macOS afaik.


Attach the completion first and then start the span

Bug Report

The code in the following line：
https://github.com/lettuce-io/lettuce-core/blob/a39b05b564ade64c27cd3deae3e660a442060b00/src/main/java/io/lettuce/core/protocol/CommandHandler.java#L429
When  the start() method of span is called , and before attaching the callback to the command, the callback function may not be executed due to system load problems.
This means that whether or not the span can be closed is affected by the system load or other factors and timeout setting, which is obviously not appropriate. The span should ensure that it can be closed 100% correctly, as if it were in a "finally" block.
Current Behavior

The span is not always closed because the callback function is not always executed.

Environment

Lettuce version(s): [5.1.x,5.3.x]
Redis version: [4.0.x]

Possible Solution

Add a mechanism to check if a span is closed, such as a delayed queue, or some other way to ensure that the span is closed correctly.
Additional context
see #1652

Thanks for the report. After investigating the linked code vs. the current implementation, I found that we already follow this approach in Lettuce 6:
https://github.com/lettuce-io/lettuce-core/blob/7a8fd312b65e311514522270df816a37a71df447/src/main/java/io/lettuce/core/tracing/BraveTracing.java#L346-L368
The referenced commit a39b05b564ade64c27cd3deae3e660a442060b00 points to an outdated version that isn't maintained anymore. Therefore I would like to close this ticket.

The problem may have nothing to do with the order of "Set Callback" and "Start Span." Although the callback function is set first, there is no guarantee that the callback will be executed if the timeout exceeds after the span has started and before the ChannelHandlerContext executes the write method.

As soon as the callback function is attached to the command, it will be called as part of the command completion/timeout. The command doesn't need to be written to make spans work.


RequirePermission fails for guild owner

We should probably have an explicit check for the guild owner to bypass the entire permissions check, as guild owners have all permissions anyway.

Fixed in https://github.com/RogueException/Discord.Net/commit/dfdafd5ec44d4be64af0c0cebf9191ee88b8fece


charts.itscontained.io is down - or was it permanently removed?

I use charts.itscontained.io to install your helm chart, but today I'm getting an error message telling me
Error: looks like "https://charts.itscontained.io" is not a valid chart repository or cannot be reached: Get https://charts.itscontained.io/index.yaml: dial tcp <IP_ADDRESS>:443: connect: connection timed out

Are you temporarily down or did you permanently take charts.itscontained.io down?

looks like that was my bad! I upgraded the cluster doing the proxying and it didnt pick up the change. It should be working again. Thanks for the heads up!
curl -s https://charts.itscontained.io/index.yaml | head -n 5
apiVersion: v1
entries:
  bitwarden_rs:
  - apiVersion: v2
    appVersion: 1.16.3
    ```

It works, thanks!


CallStackView attempts to move the active frame to the top

This PR fixes #88073
This is an attempt to fix the above issue.
If the element we're selecting is a StackFrame and it's not on the screen, I attempt to put the associated Thread at the very top of the list view. I don't force it as if the element is already on the screen, it'll scroll if up forcefully, which is not a good UX imo.
I'd appreciate any comments, there is a lot going in the code to render a stack trace, this seemed like an easy and non-invasive way to make this a little more intuitive.

Thanks for submiting this PR.
I agree we could improve this behavior and I think your approach makes sense.
However it might be a bit overly complex to me and I think we can simplify this.
How about that in the reveal you just pass 0.5, that should just reveal the active frame in the middle making it easier to see the rest of the frames. Can you try that out and if it looks good update the PR? Thanks!

@isidorn - Did the change you recommended and it's not a bad idea at all. I still only move the element to the middle it is outside of the visible area as otherwise it's be forcefully moved there every time you step over or select a frame, which seems a little intrusive.

ping, just making sure you haven't forgotten about this :)  @isidorn  @egamma

Looks good, thanks for this PR. Merging in ☀


Issue for Python RAWPY package installation on windows

Hello,
I wanted to process Sony ARW raw files using your rawpy package on Windows. However I came out with an installation error reported on Stackoverflow. Do you have any idea on how to solve this issue?
Regards,
Romain

Duplicate of #60.


Content assist not showing up in STS 4

After installing the software from Eclipse marketplace and adding thymeleaf nature to the project, the content assist is still not showing up. Is there something I'm doing wrong?

I see you've also raised this question against the Eclipse plugin (https://github.com/thymeleaf/thymeleaf-extras-eclipse-plugin/issues/92#issuecomment-665109903), and I suspect it's more likely to be an Eclipse plugin thing, so I'm closing this issue in favour of your question over there.


Provider: northwood-labs/corefunc

Provider Repository
northwood-labs/terraform-provider-corefunc

I went to search for it, and there were no results. That's all. My tests appear to be passing, so I think all of the plumbing works.


Install headers to include/${PROJECT_NAME}

Part of ros2/ros2#1150 - this installs resource_retriever's header files to a unique directory in a merged workspace.
I also removed the dependency on ament_cmake_ros since it wasn't being used.

Turns out I don't need to do anything with libcurl_vendor. It's includes are already installed to a unique directory: opt/libcurl_vendor/include

CI (build: --packages-above-and-dependencies resource_retriever test:  --packages-select resource_retriever)

Linux
Linux-aarch64
Windows


Error when using in vue3 project with vue-router

I'm currently trying to use this for a project with vue, more specifically version 3.2.13 and vue-router 4.0.3.
The typewriter-vue version is 0.5.19. The currently latest version from npm. The vue project was setup with the vue cli tool.
I tried using the typewriter component like described in the Install & basic usage section.
After doing that the following error is thrown
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '_c')
    at Proxy.__vue_render__ (typewriter.esm.js?6422:446:1)
    at renderComponentRoot (runtime-core.esm-bundler.js?d2dd:896:1)
    at ReactiveEffect.componentUpdateFn [as fn] (runtime-core.esm-bundler.js?d2dd:5575:1)
    at ReactiveEffect.run (reactivity.esm-bundler.js?89dc:185:1)
    at instance.update (runtime-core.esm-bundler.js?d2dd:5689:1)
    at setupRenderEffect (runtime-core.esm-bundler.js?d2dd:5703:1)
    at mountComponent (runtime-core.esm-bundler.js?d2dd:5485:1)
    at processComponent (runtime-core.esm-bundler.js?d2dd:5443:1)
    at patch (runtime-core.esm-bundler.js?d2dd:5033:1)
    at mountChildren (runtime-core.esm-bundler.js?d2dd:5229:1)

Three different warnings are also printed to the console.
[Vue warn]: Property "$createElement" was accessed during render but is not defined on instance.
  at <Typewriter replace= Array(2) type-interval=100 replace-interval=1000 >
  at <HomeView onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< undefined > >
  at <RouterView>
  at <App>
[Vue warn]: Property "_self" was accessed during render but is not defined on instance.
  at <Typewriter replace= Array(2) type-interval=100 replace-interval=1000 >
  at <HomeView onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< undefined > >
  at <RouterView>
  at <App>
[Vue warn]: Unhandled error during execution of render function
  at <Typewriter replace= Array(2) type-interval=100 replace-interval=1000 >
  at <HomeView onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< undefined > >
  at <RouterView>
  at <App>
Vue warn]: Unhandled error during execution of scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core
  at <Typewriter replace= Array(2)0: {from: 'Vue', to: 'React?'}1: {from: 'Typewriter React?', to: 'Joking, it`s Vue!'}from: "Typewriter React?"to: "Joking, it`s Vue!"[[Prototype]]: Objectlength: 2[[Prototype]]: Array(0)at: ƒ at()concat: ƒ concat()constructor: ƒ Array()copyWithin: ƒ copyWithin()entries: ƒ entries()every: ƒ every()fill: ƒ fill()filter: ƒ filter()find: ƒ find()findIndex: ƒ findIndex()findLast: ƒ findLast()findLastIndex: ƒ findLastIndex()flat: ƒ flat()flatMap: ƒ flatMap()forEach: ƒ forEach()includes: ƒ includes()indexOf: ƒ indexOf()join: ƒ join()keys: ƒ keys()lastIndexOf: ƒ lastIndexOf()length: 0map: ƒ map()pop: ƒ pop()push: ƒ push()reduce: ƒ reduce()reduceRight: ƒ reduceRight()reverse: ƒ reverse()shift: ƒ shift()slice: ƒ slice()some: ƒ some()sort: ƒ sort()splice: ƒ splice()toLocaleString: ƒ toLocaleString()toString: ƒ toString()unshift: ƒ unshift()values: ƒ values()Symbol(Symbol.iterator): ƒ values()Symbol(Symbol.unscopables): {copyWithin: true, entries: true, fill: true, find: true, findIndex: true, …}[[Prototype]]: Object type-interval=100 replace-interval=1000 >
  at <HomeView onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< undefined > >
  at <RouterView>
  at <App>

When switching between routes a different error is thrown
Uncaught (in promise) TypeError: Cannot read properties of null (reading 'parentNode')
    at parentNode (runtime-dom.esm-bundler.js?2725:35:1)
    at ReactiveEffect.componentUpdateFn [as fn] (runtime-core.esm-bundler.js?d2dd:5657:1)
    at ReactiveEffect.run (reactivity.esm-bundler.js?89dc:185:1)
    at instance.update (runtime-core.esm-bundler.js?d2dd:5689:1)
    at callWithErrorHandling (runtime-core.esm-bundler.js?d2dd:155:1)
    at flushJobs (runtime-core.esm-bundler.js?d2dd:396:1)

@TheStachelfisch I am so sorry, but typewriter-vue is not compatible with Vue 3. Adding Vue 3 support is currently not planned.

da

Any updates? Is there any package that supports vue 3?

@dzcpy typewriter-vue does not support Vue 3 (and will not), but you can check https://www.npmjs.com/package/vue-writer.


ConfigManager

Okay, so we had a config manager before, then we dropped it and now we want it back again :)

Check SAGEWORK_CONFIG ENV var

if it says 'parameter_store', then get the config from AWS parameter store

if it points to a local config, then use that

if both of those fail (or the ENV var doesn't even exist) then use 'default config' included in the Sageworks package resourdes.

General code porting:
Any code that uses ENV var or gets 'config' information should be ported over to using the ConfigManager class

Okay, so this is pretty much done. We'll add additional tickets for any follow on items.


Readme stuff and install script

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


types not exported as documentation suggests

this is what's exported, you'll notice statics like AxiosLogger.using are not exported (not really sure why they aren't emitted). also the docs have you package name wrong.
import { AxiosError, AxiosRequestConfig, AxiosResponse } from "axios";
import { LogFn } from "pino";
interface Headers {
    [key: string]: string | object;
}
interface HeaderRecord {
    key: string;
    value: string | object;
}
export declare const indent = "  ";
declare type ErrorSource = 'Request' | 'Response';
export declare class AxiosLogger {
    protected ignoreHeaderKeys: string[];
    protected logInfo: LogFn;
    protected logError: LogFn;
    constructor(infoFn?: LogFn, errorFn?: LogFn);
    logRequest(request: AxiosRequestConfig): void;
    logResponse(resp: AxiosResponse): void;
    logErrorDetails(err: any): void;
    protected parseError(error: AxiosError, errorSource: ErrorSource): string;
    protected parseRequest(request: AxiosRequestConfig): string;
    protected parseResponse(resp: AxiosResponse): string;
    protected startingLine(name: any): string;
    protected endingLine(): string;
    protected title(detailName: string): string;
    protected newLine(): string;
    protected prettyFormatBody(body: string | object): string;
    protected parseHeaders(headers: Headers): string;
    protected transformHeadersToStringArr(headers: Headers): string[];
    protected prettyHeaderEntry(headerEntry: HeaderRecord, isFirstElement: boolean, isLastElement: boolean): string;
}
export {};

Hmmm, interesting. Sorry about that - i'm starting with Typescript recently. Will try to fix that soon.

yeah, I'll be honest, I don't get why these aren't available on the class either, seems like they should be...

I had a problem with publishing new versions of the library to npm from Github. Now it should be fixed in v0.1.3 - can you please give it a try ? @xenoterracide

using is now exported, I notice a lot of the same protected stuff isn't but maybe that's not supposed to be a part of your published api. What was the issue? out of curiousity.

@xenoterracide i have 2fa on this account and i need to setup properly tokens in Github in order to public from CI. Will do that later. For now publishing from my local machine


This plugin seems to need an update that makes it compatible with Yazi 0.4

As in the title.

It does. There is a change in Yazi 0.4 that greatly affects how this plugin works (https://github.com/sxyazi/yazi/pull/1891).
dual-pane.yazi has entry points that are synchronous and others that are asynchronous. After Yazi 0.4, a plugin needs to chose whether to be synchronous or asynchronous. I will need to re-write and re-test a big part of the plugin to make it compatible, so it will take a while.

This is useful plugin, Thanks Man


Database Requirements

Will fix #81
WIP
I am also going to include a few updates to the docs in this PR.

Ok. This should be all wrapped up and ready for review (pending the Travis builds that are in progress at the time of this writing.)
I edited quite a bit of the documentation, so please be sure to give that a look. You can see docs for this branch here: http://django-name.readthedocs.org/en/migrations/. Let me know if any part is confusing or needs more information.
What else did you do, Damon?

Add database migrations both for South and Django 1.7+
Added testing environments for Postgres. (tox, travis)
Reworked some of the requirements files and dev environment for 2.
As I was adding some of the docs, I realized that there was a better way to do the context_processors so I consolidated them into a single function.

ping @vphill @somexpert @ldko
cc: @jason-ellis

BTW.  Some of the requirements have changed.

@ldko, I have added a note about referring to the Django docs, and test against Django master do not run locally by default  (because they could fail).

:+1:


rb-badge z-index fix.

Updated badge to work with https://github.com/rockabox/rbx_style_guide/pull/164
Changed collapsed attribute to be evaluated as a boolean.

looks good to me MoG :green_apple:


Can I use it in Anki?

I have read something in pull requests. I tried to use it in Anki,  but I failed. I don't know why. Could you tell me If your script is working in Anki?

Yes, I'd a similar request #19 to use Dmak within Anki.
What are you trying to do exactly, can you give me more insight ?
I'm not familiar with Anki, but as I said in https://github.com/mbilbille/dmak/pull/19#issuecomment-213720710 if you can run JS scripts within Anki it should work.

I think the problem is with downloading SVG from website, when i use this code:
`
`
Anki probably can't find files.
I could make a new field in Anki DB to be a SVG file, import all SVG Anki files and then try to load it this way.
var kanjiSVG= document.getElementById('kanjiSVG');
And draw this SVG using dmak somehow?
I know my post is chaos but I have zero experience with Javascript and I'm not Anki expert.

I would have recommended to load your SVG in JS via kvg2js but apparently this does not work either...

Close the issue for the month moment. Please reopen it if needed


fix(deps): update terraform terraform-ibm-modules/cbr/ibm to v1.9.2

This PR contains the following updates:

Package
Type
Update
Change

terraform-ibm-modules/cbr/ibm (source)
module
patch
1.9.1 -> 1.9.2

Release Notes

terraform-ibm-modules/terraform-ibm-cbr (terraform-ibm-modules/cbr/ibm)
v1.9.2
Compare Source
Bug Fixes

endpoint set to direct for VPC to COS in the fscloud submodule (#283) (4467165)

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

/run pipeline

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


Pull replication not going back into IDLE state

To reproduce:

Run TodoLite-Android
Do a pull sync
Update a document locally

Actual: spinny will never stop spinning
Expected: it should stop spinning after a short duration
I suspect it may have been caused by https://github.com/couchbase/couchbase-lite-java-core/issues/299

I found the problem:

In order for a continuous puller to go back into the IDLE state, the changeTrackerCaughtUp() method must be called by the ChangeTracker

Due to broken logic regarding the caughtUp state flag, since it is never being reset to false, it only calls changeTrackerCaughtUp() once.

I'm going to just remove the caughtUp flag completely, since it seems to adding no value whatsoever and just causing bugs.  If it needs to be re-added, it should be accompanied with a ChangeTracker unit test to make assertions about the problem its solving.

@hideki please review PR's (the fix is explained in this comment: https://github.com/couchbase/couchbase-lite-java-core/issues/383#issuecomment-69978319)

Re-opening this since testContinuousPullReplicationGoesIdleTwice is failing.

I'm able to reproduce the test failure of testContinuousPullReplicationGoesIdleTwice on my Nexus 5 test device, but not on the genymotion emulator.  Looking into it.

@tleyden This is not 100% reproducible. It could depend on timing or something else.

Yes it is definitely a race condition of some sort.
I found out how to reproduce the issue reliably on Genymotion: set number of processors to 4 (same as Nexus 5)

Added a race condition workaround -  08b46d7 -- see commit comments for details.

Possible workaround: https://gist.github.com/tleyden/4b0f84e3edc41c2d0f78
This would fix the problem, but the problem with this is that since getOrInsertDocNumericID() writes to the db and is now outside of the nested transaction, it could leave the db in an invalid state.  I didn't investigate whether that invalid state would cause any real problems though.

Note to self:

In case /{db}/_change has response with changes

Tasks are created and added in Batcher. start from here
Also ChangeTracker calls changeTrackerCaughtUp() which waits all processes will be done and calls fireTrigger(ReplicationTrigger.WAITING_FOR_CHANGES); at end of method.

changeTrackerCaughtUp() method creates Thread and do its process.

It seems changeTrackerCaughtUp() task finishes before tasks are created in batcher?? <- not make sense

TODO:

When changeTrackerCaughtUp() is called, check number of tasks in batcher and pending features
if tasks are empty, it needs to wait till tasks are created.
if tasks are not empty, needs to figure out why changeTrackerCaughtUp()'s Runnable finished before all tasks are completed.

Additional Info. By fixing this issue, ToDo Lite spinner issue was also addressed as we expected.


travis: use tar.gz as sdist file extension

otherwise uploading the sdist package will fail

Travis build failures are unrelated to this patch. You could try to re-run them manually and see if they pass. Or just go on with the merge. I can’t merge because the status check are required.

Does Travis have an option for you to retry your own builds? Ideally we keep the branch protection but have some way to retry flaky builds. For now - you could always try pushing an empty/noop commit - it will get squashed anyway.


Supported data types for bitwise operators?

The documentation does note that:

In this example, the values on the left and right side of the operands are 32-bit integer values.

... hate to be a pest, but (again), no mention is made as to whether or not 64 bit integers are supported.   This should be mentioned in the docs as someone will eventually try to use bitwise operators on 64 bit values and will end up with a bit (excuse the pun) of a surprise!
See: https://github.com/Azure/azure-cosmos-dotnet-v2/issues/329

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

ID: 1f90db45-a575-f371-2362-57bbbd97de04
Version Independent ID: 83f0947a-f702-f585-ebac-8b02f4e918cb
Content: Bitwise operators in Azure Cosmos DB
Content Source: articles/cosmos-db/sql/sql-query-bitwise-operators.md
Service: cosmos-db
Sub-service: cosmosdb-sql
GitHub Login: @seesharprun
Microsoft Alias: sidandrews

#assign:seesharprun
Thanks @bdcoder2 for your feedback! While we did update the page, we mentioned that we are waiting for confirmation that integers larger than 32-bit unsigned are supported. We can leave this issue open until we get that confirmation.
#label:"doc-enhancement"

@bdcoder2, we have updated the article with an explanation of how the bitwise operators work. That update should be live soon.
The short version: The bitwise operators in Azure Cosmos DB SQL API follow the same behavior as bitwise operators in JavaScript. JavaScript stores numbers as 64 bits floating point numbers, but all bitwise operations are performed on 32 bits binary numbers. Before a bitwise operation is performed, JavaScript converts numbers to 32 bits signed integers. After the bitwise operation is performed, the result is converted back to 64 bits JavaScript numbers.


[charts/occm] Support extraEnv on the cloud-controller-manager helm chart

What this PR does / why we need it:
Add a new configuration option extraEnv in the cloud-controller-manager helm chart, which are passed to the daemonset.
Which issue this PR fixes(if applicable):
This allows setting OS_CCM_REGIONAL, or perhaps other config options as needed.
Special notes for reviewers:

Release note:

Add optional `extraEnv` configuration to the openstack-cloud-controller-manager helm chart

/lgtm

/approve


corrected sample to code have appropriate comments and to create a cl…

The way the client was being instantiated in the sample code in the README.md did not work. Now it does. I also corrected the comments to match what is being done in the sample code.

Always happy to help!


Public Hosted Zone  using troposphere

Can we create a public hosted zone using troposphere..? If so can you please give me a snippet on how to do that where the hosted zone should log on the query calls to the cloudwatch log group. When i am writing the below statement it errs out. Can you please suggest where I am going wrong here.
HostedZones = template.add_resource(HostedZone(HostedZoneConfig={"Comment":"Public DNS Domain"}, Name="aws.kloudlabs.in",QueryLoggingConfig= {'CloudWatchLogsLogGroupArn':'arn:aws:logs:us-east-1:123456789:log-group:np-aws-kloudlabs:*'}))

HostedZones = template.add_resource(HostedZone(HostedZoneConfig={"Comment":"Public DNS Domain"}, Name="aws.kloudlabs.in",QueryLoggingConfig={'CloudWatchLogsLogGroupArn':'arn:aws:logs:us-east-1:1234456789:log-group:np-aws-publicdns:*'}))                                        Traceback (most recent call last):
File "", line 1, in
TypeError: init() takes at least 2 arguments (1 given)

Likely you would want to structure your code like this below (runs via troposphere but untested against AWS). The TypeError you are getting is due to name specifying the title ("zone" in this case) for the HostedZone resource.
from troposphere import Template
from troposphere.route53 import (
    HostedZone, HostedZoneConfiguration, QueryLoggingConfig
)

t = Template()
HostedZones = t.add_resource(HostedZone(
    "zone",
    HostedZoneConfig=HostedZoneConfiguration(Comment="Public DNS Domain"),
    Name="aws.kloudlabs.in",
    QueryLoggingConfig=QueryLoggingConfig(
        CloudWatchLogsLogGroupArn='arn:aws:logs:us-east-1:1234456789:log-group:np-aws-publicdns:*'
    )
))```

Thanks Mark for responding fast. So Creating public DNS thru troposphere is untested ?

No, I'm not saying it is untested through troposphere. I'm sure there are quite a few stacks created using troposphere that are creating public DNS. I meant the above snippet of code was not run through CloudFormation and I was just posting out an example that should work.

HI Mark,
Thanks for your help, Can you please point me to the code snippet which helps to create a Public hostedzone with logging enabled to cloudwatch log group. I am trying to deploy a stack through troposphere and the cloudformation stack is failing with the below error.
Error Message: The resource policy that you're using for Route 53 query logging doesn't grant Route 53 sufficient permission to create a log stream in the specified log group.

This is the code snippet that i have written,
https://pastebin.com/raw/8Sb6iXss

I have managed to resolve it. You need to set resource policy on the cloudwatch loggroup before you can deploy a public hostedzone that logs to the cloudwatch group. So you need to generate two different templtes one for cloudwatch log group and another template for public hosted zone.


Jungle spiders attack without provocation in relaxed mode

BTW Version: CE 2.1.4
Multiplayer (yes/no): no
Issue (be as specific as possible): Jungle spiders attacked me after they found me after spawning in one of the Better Biomes tropical biomes.  Was just gathering materials.  Remade world and made sure was in relaxed mode and was attacked again.
Steps to Reproduce (even if obvious): go to a biome where they spawn and find one in relaxed survival mode
Addons (with versions):  Better Biomes addon v: 3.2.2
Better Terrain Addon v: 3.2.2
Craft Guide v: 3.0.1
Deco Addon v: 4.1.2
DynamicLight Mod v: 1.1.0
Crash Log (if there was a crash): N/A: no crash

My suspicion, along with #466, is that your world is not actually on relaxed difficulty. Better terrain used to have a bug where it did not respect the choice made at world creation, I believed that to be fixed but it is possible it is not.
Can you double check through the options screen with the world open, or by running the /difficulty command without arguments, to verify your current difficulty?

Confirmed that the worlds (plural) were on standard difficulty via the options menu despite making double sure they were on relaxed on creation.  I had double checked before (I thought) by checking if other relaxed features were active, (specifically jump placement of blocks, and mistakenly thought that block breaking wasn't startling animals) and assumed that since some relaxed world features were active that they all should be.
Just did another test and yes:
1-set relaxed on world creation
2-set the other better terrain/biomes settings to what I was using before
3-went back to confirm that it was still on relaxed
4-created the new world
5-immediately checked options and found difficulty on standard in options
6-tested jump placing of blocks (which worked on standard
7-tested animal reaction to placing blocks (panicked on standard, but didn't on relaxed)
Current workaround is sufficient for my needs, but I'm willing to do more testing on my end if it would help.

This was a known bug in BTA 3.2.1, fixed in 3.2.2. Can you test again without any addons installed?
Else this post is better suited for the respective addon's issue page.

Sorry for the delayed response, was busy with some stuff irl.
I did do some more testing and found a jungle biome without any addons.  The difficulty was not switching to hardcore survival and jungle spiders didn't attack.
That does mean that Arminias is correct that it should be in the respective addon's issue page.  IDK if there's a way to move this over there or if I should just create a new issue there.  (new to this stuff)


newIndex is undefined in onEnd handler when an item's position doesn't change

First off, thanks for writing this library! It's been super helpful and works flawlessly most of the time.
JSBin: http://jsbin.com/qibano/edit?html,js,console,output
Steps to reproduce:

Drag and release an item such that the item does not change position (e.g. try dragging the "2" just a little bit to the left, and then dropping it back into place)
Note that console.log(event.newIndex) in the onEnd handler prints undefined. This only happens the first time.

Expected: newIndex is >= 0
Probable cause: this line checks if newIndex is null or -1, but, the very first time onEnd is called, newIndex hasn't been initialized and is still undefined.
GIF, using the above JSBin:

Have you tried dev-branch?

Yes, this issue also occurs in the dev branch.

It is slightly annoying

Also faced with this strange behavior, it's a little bit embarassing

Try dev-bnarch... again ;]


Move non-const iteration from Vector to Vector.write.

This allows owners of non-const Vector to const-iterate it, avoiding an accidental fork, which would be inefficient.
To re-iterate (no pun intended): It was previously impossible to iterate a Vector without risking a copy if you had a non-const reference to it. Take the following example:
// Non-const function
void Something::do_something() {
    for (const A &a : vector) {
         print_line(a);
    }
}

Even though a is declared const, the functions called by the iteration were non-const begin and end, because c++ doesn't have reverse type inference and is forced to call the function that better matches the type of vector, which is non-const Vector<a>.
It is difficult to measure how many unnecessary forks were created during a normal run because of this detail, so I'm not going to do it. But it's likely at least some forks are avoided due to this change.

It is difficult to measure how many unnecessary forks were created during a normal run because of this detail, so I'm not going to do it.

Nevermind, I just thought of a simple to get an upper bound:
	_FORCE_INLINE_ Iterator begin() {
		if (((Vector<T> *)this)->refcount() > 1) {
			std::cout << "Fork " << ((Vector<T> *)this)->size() << " x " << sizeof(T) << std::endl;
		}
		return Iterator(((Vector<T> *)this)->ptrw());
	}
	_FORCE_INLINE_ Iterator end() {
		if (((Vector<T> *)this)->refcount() > 1) {
			std::cout << "Fork " << ((Vector<T> *)this)->size() << " x " << sizeof(T) << std::endl;
		}

		return Iterator(((Vector<T> *)this)->ptrw() + ((Vector<T> *)this)->size());
	}

I get get the following results, when loading into an empty project:
Fork 1 x 72 (24 times)
Fork 2 x 72 (6 times)

So, it seems like this change is definitely not critical to at least the launcher. I'm guessing this is because most in-engine code hands out references rather than CoW copies, so probably the biggest beneficiary, if anything, may be code taking in vectors from GDScript.
Anyway, I still think it's important to merge it, because conceptually it's bad not to be able to iterate a vector you observe without needing a fork. But it's probably not urgent to do so.


Support for Thycotic Secret Server

Hi team, can support for Thycotic Secret Server please be added to SC4S?
Here is the link to the vendor's syslog doc: Secure Syslog/CEF Logging
Looks like for Splunk they don't have a specific TA, they use "syslog" for the sourcetype: link there's this dashboard app though I don't know how helpful/relevant it might be.
Below are some samples with redacted info:
2021-06-18T11:40:21.00-07:00 servername1 CEF:0|Thycotic Software|Secret Server|10.9.000003|10032|SECRET - HEARTBEATSUCCESS|2|msg=[[SecretServer]] Event: [Secret] Action: [Heartbeat Success] By User: ThycoticSystem Item Name: domainName\userName (Item Id: 3444) Container Name: User Admin Accounts (Container Id: 1010)  suid=1 suser=ThycoticSystem cs4=ThycoticSystem cs4Label=suser Display Name rt=Jun 18 2021 11:40:15 fname=domainName\userName fileType=Secret fileId=3444 cs3Label=Folder cs3=User Admin Accounts
2021-06-18T11:40:10.00-07:00 servername1 CEF:0|Thycotic Software|Secret Server|10.9.000003|16|USER - LOGIN|2|msg=[[SecretServer]] Event: [User] Action: [Login] By User: domainName\userName Item Name: domainName\userName (Item Id: 4134)  suid=4134 suser=domainName\userName cs4=domainName\FirstName LastName cs4Label=suser Display Name duser=domainName\userName duid=4134 fname=domainName\userName fileType=User fileId=4134 src=<IP_ADDRESS> rt=Jun 18 2021 11:40:02
Below is additional info regarding event types, I couldn't find the original link but this is an export from the internal wiki page I copied the info to:
thycotic_event_data.pdf
If I can provide additional information, please let me know. Thank you!

in splunk_metadata.csv
Thycotic Software_Secret Server
fortunately this is cef and will work oob

Ah, awesome! So I could do something like:
Thycotic Software_Secret Server,index,netauth
Thycotic Software_Secret Server,sourcetype,thycotic
And that would work? (assuming those are the values we end up going with)

:tada: This issue has been resolved in version 1.82.0-develop.3 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 1.82.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Apply Port Mapping to ConnectionStrings

This was missing from @isen-ng 's PR. I've also removed the explicit mapping in the tests. I think the most common model will be to allow for just the automatic port mapping. We can investigate how to override that (if we even think that is worth having) later.

Coverage decreased (-2.3%) to 82.278% when pulling d43bc865c864b2ef8dd581a55f97c7f5837fb2d7 on swissarmykirpan:get-mapped-port into 8401f4d8cdc1075e73ce1a02ba9f5378a7320c1a on testcontainers:master.

@HofmeisterAn can I get your feedback on this as well please :)


Client error for STOW-RS

I lefted another question for the store_instances() but it's already closed and won't get any further notice to you, so please excuse me to make another new thread.  I'm almost newbie to deal with the dicom standard, but the following example code has an error:
import os
import tempfile
import datetime

import pydicom
from pydicom.dataset import Dataset, FileDataset
from pydicom.sequence import Sequence

# Create some temporary filenames
suffix = '.dcm'
filename_little_endian = tempfile.NamedTemporaryFile(suffix=suffix).name
filename_big_endian = tempfile.NamedTemporaryFile(suffix=suffix).name

print("Setting file meta information...")
# Populate required values for file meta information
file_meta = Dataset()
file_meta.MediaStorageSOPClassUID = '1.2.840.10<IP_ADDRESS>.1.1.2'
file_meta.MediaStorageSOPInstanceUID = "1.2.3"
file_meta.ImplementationClassUID = "<IP_ADDRESS>"

print("Setting dataset values...")
# Create the FileDataset instance (initially no data elements, but file_meta
# supplied)
ds = FileDataset(filename_little_endian, {},
                 file_meta=file_meta, preamble=b"\0" * 128)

# Add the data elements -- not trying to set all required here. Check DICOM
# standard
ds.PatientName = "Test^Firstname"
ds.PatientID = "123456"

# Set the transfer syntax
ds.is_little_endian = True
ds.is_implicit_VR = True

# Set creation date/time
dt = datetime.datetime.now()
ds.ContentDate = dt.strftime('%Y%m%d')
timeStr = dt.strftime('%H%M%S.%f')  # long format with micro seconds
ds.ContentTime = timeStr

print("Writing test file", filename_little_endian)
ds.save_as(filename_little_endian)
print("File saved.")

from dicomweb_client.api import DICOMwebClient

client = DICOMwebClient("http://<IP_ADDRESS>:8042/dicom-web")
STUDY_UID = '2.16.840.1.1144<IP_ADDRESS>489834087.1330071425.0'
client.store_instances(datasets=[ds])

and the error message is:
Setting file meta information...
Setting dataset values...
Writing test file /tmp/tmph64u7s3j.dcm
File saved.
Traceback (most recent call last):
  File "test.py", line 56, in <module>
    client.store_instances(datasets=[ds])
  File "/home/jinserk/.pyenv/versions/3.7.2/lib/python3.7/site-packages/dicomweb_client/api.py", line 1797, in store_instances
    self._http_post_multipart_application_dicom(url, encoded_datasets)
  File "/home/jinserk/.pyenv/versions/3.7.2/lib/python3.7/site-packages/dicomweb_client/api.py", line 1207, in _http_post_multipart_application_dicom
    self._http_post(url, content, headers={'Content-Type': content_type})
  File "/home/jinserk/.pyenv/versions/3.7.2/lib/python3.7/site-packages/dicomweb_client/api.py", line 1186, in _http_post
    response.raise_for_status()
  File "/home/jinserk/.pyenv/versions/3.7.2/lib/python3.7/site-packages/requests/models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http://<IP_ADDRESS>:8042/dicom-web/studies

Here what I wonder that:

why the request added "studies"?
how can I give 'study uid' to store_instances function? do I need to add the info into the dataset?
how to add another series to existing study?

Please refer to DICOM PS3.3 on how to create a DICOM dataset.

why the request added "studies"

Please refer to DICOM PS3.18.

how can I give 'study uid' to store_instances function

Please refer to the API documentation of store_instances(): https://dicomweb-client.readthedocs.io/en/latest/package.html#dicomweb_client.api.DICOMwebClient.store_instances

Thank you so much for the response, @hackermd!
Can I ask you one thing more? If I want to replace an existing instance, is there any way to this using dicomweb-client? I have tried to retrieve an instace and added some private tags to it, then store_instances() is completed quietly, but nothing has changed on the server.

Check the status code of the response message by increasing the logging level.
DICOM instances are immutable, so you can't "replace" an existing instance.


How do I codesign without ldid

ldid is fragmented and broken, and tends to die with useless assertions effectively every time it's used (Please stop using this :(). I'd like a sign a newly compiled binary with codesign/jtool.
When trivially signing with codesign -fs - and these entitlements:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">
	<dict>
		<key>platform-application</key>
		<true/>
		<key>com.apple.private.security.container-required</key>
		<false/>
	</dict>
</plist>

I get:
kernel	AMFI: '/a.out' is adhoc signed.
kernel	AMFI: '/a.out': unsuitable CT policy 0 for this platform/device, rejecting signature.
kernel	AMFI: code signature validation failed.

What's the proper way to sign for this jailbreak?

just do:
ldid -Sents.xml binary

If that causes issues like you said, explain what issues. We don't care whether you sign it successfully with weird tricks or not, we care whether ldid works or not.

Signing with the ldid copy provided with unc0ver dies with ldid.cpp(1749): _assert(): errno=21. Weirdly enough, creating a .deb package to force dpkg to sign it works, so it'd be helpful to know what dpkg uses. In any case, I'd like to know how to sign on binaries with codesign as I prefer to sign my binaries on my Mac and not locally on my iPhone.

Apparently using ents is broken, you'd have to use the original ldid how it's done by dpkg, the one in PATH is just a dummy so "ldid -S" works, at least, supposed to

Pinging @sbingner on this issue since he made the ldid wrapper.

Still relevant. It's still impossible to run executables without going through dpkg.

if you're on substrate:
ldid -K/usr/share/jailbreak/signcert.p12 -Sents /path/to/binary (path can't be /, for some reason that doesn't work, put it in a sub-directory like /usr/bin or something)
On substitute: it'll just work, no need to resign

Thanks, I'll give it a try and let you know if it worked.

Works perfectly, thanks!


React Hook Form validation not working

Hi, I pretty much have followed the guide https://ui.shadcn.com/docs/forms/react-hook-form step by step, but unfortunately, I get no validation error messages. I've checked and the resolver method on the useForm is not getting called.
The code is pretty much 1-1 to the guide but still:
const FormSchema = z.object({
  username: z.string().min(2, {
    message: "Username must be at least 2 characters.",
  }),
})

const SomeComponent = () => {
  const form = useForm<z.infer<typeof FormSchema>>({
    resolver: async (data, context, options) => {
      // THIS IS NOT GETTING CALLED EVER => error is NOT getting populated
      console.log('formData', data)
      console.log('validation result', await zodResolver(FormSchema)(data, context, options))
      return zodResolver(FormSchema)(data, context, options)
    },
    defaultValues: {
      username: "",
    },
  })

  function onSubmit(data: z.infer<typeof FormSchema>) {
    console.log(data)
  }

  return (
    <Form {...form}>
      <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-8">
        <FormField
          control={form.control}
          name="username"
          render={({ field }) => (
            <FormItem>
              <FormLabel>Username</FormLabel>
              <FormControl>
                <Input placeholder="shadcn" {...field} />
              </FormControl>
              <FormDescription>
                This is your public display name.
              </FormDescription>
              <FormMessage />
            </FormItem>
          )} />
        <Button text="Submit" type="submit" />
      </form>
    </Form>
  );
}

All of the Form components + Input are again direct copies from shadcn

I was simply missing: mode: 'onChange' on the form.
In the tutorial, the preview seems to be using mode: 'onTouched' but the code does not reflect that.
Worth updating?

I was simply missing: mode: 'onChange' on the form.
In the tutorial, the preview seems to be using mode: 'onTouched' but the example code does not reflect that.
Worth updating?

Maybe a good idea to explicitly define the mode in the example so it's clear the prop exists

I was simply missing: mode: 'onChange' on the form. In the tutorial, the preview seems to be using mode: 'onTouched' but the example code does not reflect that. Worth updating?

I have the same problem, where in the code did you add the mode?

Add it to the useForm hook.
const form = useForm({
...,
mode: "onChange"
})

To anyone else wondering, none of the solutions above worked for me. The workaround was to remove zod validation.
previous:
  const form = z.object({
    otp: z.string().min(INPUT_NUM, `OTP must be ${INPUT_NUM} characters long`),
  });

  type ClientForm = z.infer<typeof form>;

  const multiForm = useForm<ClientForm>({
    defaultValues: {
      otp: "",
    },
    mode: "onChange",
  });

    const onSubmit = async (data: ClientForm) => {}

after:
  interface FormData {
    otp: string;
  }

  const multiForm = useForm({
    defaultValues: {
      otp: "",
    },
  });

  const onSubmit = async (data: FormData) => {}

Problem for me was that zod would kick in if I submitted once, got an error from the server, then tried to clear the errors and try again. Once I started typing the second time around, my zod error would appear asking for 6 character input. I don't want the error to display though if the user is still typing it in the second time around. The only workaround I could find was to do manual validation, and not use zod. This solution actually works as expected. Very frustrating behavior by this library.
Full final working context:
"use client";

import { Button } from "@/components/ui/button";
import { OtpStyledInput } from "@/components/ui/input-otp";
import { useForm } from "react-hook-form";
import {
  Form,
  FormControl,
  FormField,
  FormItem,
  FormMessage,
} from "@/components/ui/form";
import { useSearchParams } from "next/navigation";
import { verifyOTP } from "@/components/actions";
import { useEffect, useState } from "react";
import { Spinner } from "@/components/ui/spinner";

const INPUT_NUM = 6;

interface FormData {
  otp: string;
}

export default function VerifyOTPPageComponent() {
  const searchParams = useSearchParams();
  const [inputKey, setInputKey] = useState(0);
  const [show, setShow] = useState(false);
  const multiForm = useForm({
    defaultValues: {
      otp: "",
    },
  });

  const otpValue = multiForm.watch("otp");
  useEffect(() => {
    if (otpValue.length === INPUT_NUM) {
      multiForm.handleSubmit(onSubmit)();
    }
  }, [otpValue]);

  const onSubmit = async (data: FormData) => {
    setShow(true);

    if (data.otp.length !== INPUT_NUM) {
      multiForm.setError("otp", {
        message: `OTP must be ${INPUT_NUM} characters long`,
      });
      multiForm.setFocus("otp");
      setInputKey((prevKey) => prevKey + 1);
      setShow(false);
      return;
    }

    try {
      await verifyOTP(
        decodeURIComponent(searchParams.get("phone") || ""),
        data.otp,
      );
      multiForm.reset();
    } catch (error: unknown) {
      console.error("Error during OTP verification:", error);
      multiForm.reset();
      multiForm.clearErrors();
      multiForm.setError("otp", { message: (error as Error).message });
      multiForm.setFocus("otp");
      setInputKey((prevKey) => prevKey + 1);
    }

    setShow(false);
  };

  return (

Verify OTP

          Enter the 6-digit one-time password sent to your phone.

        <Form {...multiForm}>
          <form onSubmit={multiForm.handleSubmit(onSubmit)}>
            <FormField
              control={multiForm.control}
              name="otp"
              render={({ field: { ...newField }, fieldState }) => (
                <FormControl>
                  <>
                    <FormItem>
                      <OtpStyledInput
                        key={inputKey}
                        {...newField}
                        numInputs={INPUT_NUM}
                        shouldAutoFocus={true}
                      />
                    </FormItem>
                    <FormItem>

                        <Button type="submit" className="w-full">
                          {show ? (
                            <Spinner
                              show={show}
                              size="small"
                              className="text-primary-foreground"
                            />
                          ) : (
                            "Verify OTP"
                          )}
                        </Button>

                    </FormItem>
                    <FormMessage>
                      {fieldState.invalid && (

                          {fieldState.invalid}

                      )}
                    </FormMessage>
                  </>
                </FormControl>
              )}
            />
          </form>
        </Form>

  );
}

@ProductOfAmerica removing the zodResolver was very helpful for tracking down a bug, thanks for the tip

This issue has been automatically closed because it received no activity for a while. If you think it was closed by accident, please leave a comment. Thank you.


Bugfix/corrects replication in clusters of different sizes

What changed?
This tests/fixes replication between clusters of different sizes. This is not super well tested, so please treat as an alpha feature.
Intention and where this works
Smaller # of shards -> larger cluster: Should be ok:
This is a bugfix for replication between clusters where the shard numbers aren't the same. The high-level approach is to only partially support this replication with a very simple bugfix for now. This adds the approach of simple shard filtering where requests for shards higher than what are supported are simply dropped.
The intention is to fix this for the use-case where a cluster has a small number of shards and there is an intention to connect it to a larger cluster for expansion. In this use-case the traffic for domains active on the old (smaller) cluster should be able to be replicated to the new (larger) cluster as usual. I've done some preliminary testing to confirm this is the case.
During this replication workflows moving from the smaller cluster to the larger will move history shards in the database as they are replicated. Ie, if a workflow in small-cluster hashed to shard 123, it would hash to some other hash in the new cluster. Though this shouldn't affect anything.
Caveats
Don't use this to replicate from larger clusters to smaller:
However, in the scenario that a domain is active in the new (larger) cluster and it's replicating back to the old cluster workflows will be partially dropped. The drop is partial simply because it's more convenient to drop too large replication requests rather than dropping all since cluster metadata to the receiving cluster isn't available; it's not possible to know what the requesting cluster's shard size is without some more significant API changes.
Why not use some shard translation scheme like /2
When I first was poking around with this problem I was intending to just see if I could connect a cluster power-two size differences and half / double the shards in translation. This isn't possible however, without a stateful intermediary, because of the replication API:  The replication API keepts track of offsets on the producer side, meaning that any reduction of 2 shards into a single one would need to solve the problem of keeping track of both offsets somehow.

Why?

How did you test it?
Tested locally with a multicluster setup

Potential risks
This change could break replication and should be treated with care.

Release notes

Documentation Changes
This change probably requires updating the migration documentation for replication-based migration.

@davidporter-id-au thank you so much for putting this together. I was hoping to get some insight into testing strategy for this. Do you think it is likely that this change will get merged into the next release?
I'm just getting a feel for if we should plan on cherry picking this PR and making an internal build for our uses vs grabbing an upcoming release instead.
I really do appreciate you and the team doing this. Let me know if there's anything I can do to help!

👋 Hi folks. Re: the docs update in https://github.com/uber/Cadence-Docs/pull/181 I was wondering if there is still a plan to merge this PR and support migrating from a smaller -> larger number of shards? Thanks!


feat(api,robot-server): Persist deck configurations across boots

Overview
Closes RSS-396.
Test Plan
This should be tested on an OT-2 and a Flex.

Push this branch to a fresh robot.
GET /deck_configuration and make sure it's the default.
PUT /deck_configuration, with new data, then GET /deck_configuration again and make sure it's changed.
On the robot's filesystem, make sure the file is where we expect it to be. (Should be /data/robot/deck_configuration.json on an OT-2. I'm not sure where these things end up on a Flex.)
Power-cycle the robot.
GET /deck_configuration and make sure it's the last thing that you set.
POST /settings/reset {"deckConfiguration": true}, then GET /deck_configuration and make sure it's back to the default.

Changelog

Persist the deck configuration across reboots, and wire this up to robot-server's PUT /deck_configuration and GET /deck_configuration endpoints.

To store it, we extend opentrons.calibration_storage to support deck configuration. It's saved in a new deck_configuration file, adjacent to the deck calibration. On an OT-2, for example, it will be /data/robot/deck_configuration.json.
This implementation is a change from the original plan, which would have used robot-server's SQL database. We're not doing that here because it turns out opentrons_execute and friends need to be able to access this data, which means it needs to be owned by api and not robot-server.

Add a new "deckCalibration" option to POST /settings/reset.

Review requests

I'm pretty unfamiliar with opentrons.config and opentrons.calibration_storage, so I'd appreciate general feedback in that area.
Do we like the path /data/robot/deck_configuration.json for this new file? It will be hard to change in the future.
Do we want to rename opentrons.calibration_storage to just opentrons.storage now?

Risk assessment
Low. This mostly builds out new code. Changes to existing code are minor.

Went through test plan successfully with expected results on Flex and OT-2.

I think that if we want to tie this in to the simulate and execute cli when run on the robot we would be better off even with

using requests to fetch the deck configuration from the running server

Unfortunately I don't think we have a path to do this now, because we instruct users to systemctl stop opentrons-robot-server before they use opentrons.execute.execute() and friends.

storing it in json in robot_server.deck_configuration.store but in the server's persistence directory and using out-of-band knowledge to load it in a one-off place in the script entrypoints

@sfoster1 and I discussed this in person and agreed to try this. The out-of-band magic file path is a hack, but in The Grand Vision, that hack is architecturally better than the opentrons library having to provide even more of a mutable storage system.
So that's implemented in this PR now. I've tested it on a Flex and confirmed that the storage still works. The wire-up to opentrons.execute can't be tested until after other work (e.g. RSS-400), but it's easy to see how we'd do it.
A known bug in this implementation is that factory-resetting "runs and protocols" will inadvertently also factory-reset the deck configuration. That's because it deletes robot-server's entire persistence directory, which used to just be for runs and protocols. I think that's fixable, it'll just take some annoying renaming and reorganization.


Update configuration-layers.md

Fixing a tiny grammatical error
Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Thanks!


Add blog post on interactive molecular content

Link to suggestion
https://www.valencekjell.com/posts/2022-08-13-interactive/
Targeted section
Blog posts
Describe your suggestion
I made a blog post on using Quarto to include interactive content for molecular visualization. This is related to https://github.com/jmbuhr/quarto-molstar but the examples that I give are more advanced and need to make use of Observable JS.
Checklist

[X] checked if your suggestion is not already listed in Awesome Quarto list.
[X] checked if it can fit in an existed section or open a discussion to suggest any new sections..
[X] checked when it's a repository if it's maintained (archived repository will be rejected).

Thanks!
I would put it more in the "real life examples" as a concrete use of quarto and quarto-molstar, what do you think?
PS: About your blog, you may not know but instead of utterance, there is discuss? The former send the comments to "Issues" while the latter send the comments to "Discussion" 😉

That sounds good to me! Do you mean https://giscus.app by the way? It doesn't seem mature?

Also, I don't user quarto-molstar, only learned about it after I made the post and the author commented on Twitter 😄

Ok, I'll see where I put it when I'll add it for the next release.
Yes I meant giscuss. I don't think it's more likely to break than utterance.
GitHub is also working heavily on "Issues", not only "Discussion".
I switched to giscuss because it does not open issues (it's confusing to have actual issues and discussions issues) in the repository while keeping the discussions in it.
But all this is only my opinion thus likely biased by the way I am using GitHub & Co.

Also, I don't user quarto-molstar, only learned about it after I made the post and the author commented on Twitter 😄

How I see, so maybe more appropriate in blog post section then 🤔

Also, I don't user quarto-molstar, only learned about it after I made the post and the author commented on Twitter 😄

How I see, so maybe more appropriate in blog post section then 🤔

Whatever you think is most appropriate!


fix: replace ampersand char with & entity

Description

When the site name contains an ampersand (&) the xsl parser fails because the xsl becomes invalid.
Linked Issues
fixes #182
Additional context

Thanks!


Checkbox to show only wallets trade list

As per request made added it to the repository :)

added the fix for modals not hiding as they should


Readme typo fix

Quick typo fix in the readme

@rgfindl mind reviewing?

@rgfindl mind reviewing?

@rgfindl mind reviewing?